@neurana/sdk 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +370 -0
- package/lib/client.d.ts +20 -0
- package/lib/client.d.ts.map +1 -0
- package/lib/client.js +69 -0
- package/lib/client.js.map +1 -0
- package/lib/constants/api.d.ts +50 -0
- package/lib/constants/api.d.ts.map +1 -0
- package/lib/constants/api.js +50 -0
- package/lib/constants/api.js.map +1 -0
- package/lib/constants/errors.d.ts +18 -0
- package/lib/constants/errors.d.ts.map +1 -0
- package/lib/constants/errors.js +33 -0
- package/lib/constants/errors.js.map +1 -0
- package/lib/constants/http.d.ts +47 -0
- package/lib/constants/http.d.ts.map +1 -0
- package/lib/constants/http.js +47 -0
- package/lib/constants/http.js.map +1 -0
- package/lib/constants/index.d.ts +5 -0
- package/lib/constants/index.d.ts.map +1 -0
- package/lib/constants/index.js +5 -0
- package/lib/constants/index.js.map +1 -0
- package/lib/constants/limits.d.ts +28 -0
- package/lib/constants/limits.d.ts.map +1 -0
- package/lib/constants/limits.js +28 -0
- package/lib/constants/limits.js.map +1 -0
- package/lib/errors.d.ts +40 -0
- package/lib/errors.d.ts.map +1 -0
- package/lib/errors.js +100 -0
- package/lib/errors.js.map +1 -0
- package/lib/http.d.ts +27 -0
- package/lib/http.d.ts.map +1 -0
- package/lib/http.js +177 -0
- package/lib/http.js.map +1 -0
- package/lib/index.d.ts +9 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +7 -0
- package/lib/index.js.map +1 -0
- package/lib/logger.d.ts +29 -0
- package/lib/logger.d.ts.map +1 -0
- package/lib/logger.js +109 -0
- package/lib/logger.js.map +1 -0
- package/lib/resources/api-keys.d.ts +16 -0
- package/lib/resources/api-keys.d.ts.map +1 -0
- package/lib/resources/api-keys.js +73 -0
- package/lib/resources/api-keys.js.map +1 -0
- package/lib/resources/code.d.ts +13 -0
- package/lib/resources/code.d.ts.map +1 -0
- package/lib/resources/code.js +56 -0
- package/lib/resources/code.js.map +1 -0
- package/lib/resources/execution.d.ts +12 -0
- package/lib/resources/execution.d.ts.map +1 -0
- package/lib/resources/execution.js +63 -0
- package/lib/resources/execution.js.map +1 -0
- package/lib/resources/index.d.ts +6 -0
- package/lib/resources/index.d.ts.map +1 -0
- package/lib/resources/index.js +6 -0
- package/lib/resources/index.js.map +1 -0
- package/lib/resources/secrets.d.ts +12 -0
- package/lib/resources/secrets.d.ts.map +1 -0
- package/lib/resources/secrets.js +63 -0
- package/lib/resources/secrets.js.map +1 -0
- package/lib/resources/workflows.d.ts +19 -0
- package/lib/resources/workflows.d.ts.map +1 -0
- package/lib/resources/workflows.js +145 -0
- package/lib/resources/workflows.js.map +1 -0
- package/lib/types/api-keys.d.ts +81 -0
- package/lib/types/api-keys.d.ts.map +1 -0
- package/lib/types/api-keys.js +2 -0
- package/lib/types/api-keys.js.map +1 -0
- package/lib/types/code.d.ts +41 -0
- package/lib/types/code.d.ts.map +1 -0
- package/lib/types/code.js +2 -0
- package/lib/types/code.js.map +1 -0
- package/lib/types/common.d.ts +31 -0
- package/lib/types/common.d.ts.map +1 -0
- package/lib/types/common.js +2 -0
- package/lib/types/common.js.map +1 -0
- package/lib/types/execution.d.ts +35 -0
- package/lib/types/execution.d.ts.map +1 -0
- package/lib/types/execution.js +2 -0
- package/lib/types/execution.js.map +1 -0
- package/lib/types/index.d.ts +7 -0
- package/lib/types/index.d.ts.map +1 -0
- package/lib/types/index.js +2 -0
- package/lib/types/index.js.map +1 -0
- package/lib/types/secrets.d.ts +21 -0
- package/lib/types/secrets.d.ts.map +1 -0
- package/lib/types/secrets.js +2 -0
- package/lib/types/secrets.js.map +1 -0
- package/lib/types/workflows.d.ts +120 -0
- package/lib/types/workflows.d.ts.map +1 -0
- package/lib/types/workflows.js +2 -0
- package/lib/types/workflows.js.map +1 -0
- package/lib/utils/file-utils.d.ts +12 -0
- package/lib/utils/file-utils.d.ts.map +1 -0
- package/lib/utils/file-utils.js +138 -0
- package/lib/utils/file-utils.js.map +1 -0
- package/lib/utils/index.d.ts +2 -0
- package/lib/utils/index.d.ts.map +1 -0
- package/lib/utils/index.js +2 -0
- package/lib/utils/index.js.map +1 -0
- package/package.json +87 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export declare const HTTP_METHODS: {
|
|
2
|
+
readonly GET: "GET";
|
|
3
|
+
readonly POST: "POST";
|
|
4
|
+
readonly PUT: "PUT";
|
|
5
|
+
readonly PATCH: "PATCH";
|
|
6
|
+
readonly DELETE: "DELETE";
|
|
7
|
+
};
|
|
8
|
+
export declare const HTTP_HEADERS: {
|
|
9
|
+
readonly AUTHORIZATION: "Authorization";
|
|
10
|
+
readonly CONTENT_TYPE: "Content-Type";
|
|
11
|
+
readonly ACCEPT: "Accept";
|
|
12
|
+
readonly USER_AGENT: "User-Agent";
|
|
13
|
+
};
|
|
14
|
+
export declare const CONTENT_TYPES: {
|
|
15
|
+
readonly JSON: "application/json";
|
|
16
|
+
readonly FORM_DATA: "multipart/form-data";
|
|
17
|
+
readonly TEXT: "text/plain";
|
|
18
|
+
};
|
|
19
|
+
export declare const HTTP_STATUS: {
|
|
20
|
+
readonly OK: 200;
|
|
21
|
+
readonly CREATED: 201;
|
|
22
|
+
readonly NO_CONTENT: 204;
|
|
23
|
+
readonly BAD_REQUEST: 400;
|
|
24
|
+
readonly UNAUTHORIZED: 401;
|
|
25
|
+
readonly FORBIDDEN: 403;
|
|
26
|
+
readonly NOT_FOUND: 404;
|
|
27
|
+
readonly CONFLICT: 409;
|
|
28
|
+
readonly UNPROCESSABLE: 422;
|
|
29
|
+
readonly RATE_LIMITED: 429;
|
|
30
|
+
readonly SERVER_ERROR: 500;
|
|
31
|
+
readonly SERVICE_UNAVAILABLE: 503;
|
|
32
|
+
};
|
|
33
|
+
export declare const TIMEOUTS: {
|
|
34
|
+
readonly DEFAULT: 30000;
|
|
35
|
+
readonly UPLOAD: 120000;
|
|
36
|
+
readonly AI_GENERATE: 60000;
|
|
37
|
+
readonly WEBSOCKET_PING: 30000;
|
|
38
|
+
readonly WEBSOCKET_RECONNECT: 5000;
|
|
39
|
+
};
|
|
40
|
+
export declare const RETRY: {
|
|
41
|
+
readonly MAX_ATTEMPTS: 3;
|
|
42
|
+
readonly INITIAL_DELAY: 1000;
|
|
43
|
+
readonly MAX_DELAY: 30000;
|
|
44
|
+
readonly BACKOFF_FACTOR: 2;
|
|
45
|
+
readonly RETRYABLE_STATUS: readonly [408, 429, 500, 502, 503, 504];
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/constants/http.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;;;;;;CAMf,CAAC;AAEX,eAAO,MAAM,YAAY;;;;;CAKf,CAAC;AAEX,eAAO,MAAM,aAAa;;;;CAIhB,CAAC;AAEX,eAAO,MAAM,WAAW;;;;;;;;;;;;;CAad,CAAC;AAEX,eAAO,MAAM,QAAQ;;;;;;CAMX,CAAC;AAEX,eAAO,MAAM,KAAK;;;;;;CAMR,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export const HTTP_METHODS = {
|
|
2
|
+
GET: 'GET',
|
|
3
|
+
POST: 'POST',
|
|
4
|
+
PUT: 'PUT',
|
|
5
|
+
PATCH: 'PATCH',
|
|
6
|
+
DELETE: 'DELETE',
|
|
7
|
+
};
|
|
8
|
+
export const HTTP_HEADERS = {
|
|
9
|
+
AUTHORIZATION: 'Authorization',
|
|
10
|
+
CONTENT_TYPE: 'Content-Type',
|
|
11
|
+
ACCEPT: 'Accept',
|
|
12
|
+
USER_AGENT: 'User-Agent',
|
|
13
|
+
};
|
|
14
|
+
export const CONTENT_TYPES = {
|
|
15
|
+
JSON: 'application/json',
|
|
16
|
+
FORM_DATA: 'multipart/form-data',
|
|
17
|
+
TEXT: 'text/plain',
|
|
18
|
+
};
|
|
19
|
+
export const HTTP_STATUS = {
|
|
20
|
+
OK: 200,
|
|
21
|
+
CREATED: 201,
|
|
22
|
+
NO_CONTENT: 204,
|
|
23
|
+
BAD_REQUEST: 400,
|
|
24
|
+
UNAUTHORIZED: 401,
|
|
25
|
+
FORBIDDEN: 403,
|
|
26
|
+
NOT_FOUND: 404,
|
|
27
|
+
CONFLICT: 409,
|
|
28
|
+
UNPROCESSABLE: 422,
|
|
29
|
+
RATE_LIMITED: 429,
|
|
30
|
+
SERVER_ERROR: 500,
|
|
31
|
+
SERVICE_UNAVAILABLE: 503,
|
|
32
|
+
};
|
|
33
|
+
export const TIMEOUTS = {
|
|
34
|
+
DEFAULT: 30_000,
|
|
35
|
+
UPLOAD: 120_000,
|
|
36
|
+
AI_GENERATE: 60_000,
|
|
37
|
+
WEBSOCKET_PING: 30_000,
|
|
38
|
+
WEBSOCKET_RECONNECT: 5_000,
|
|
39
|
+
};
|
|
40
|
+
export const RETRY = {
|
|
41
|
+
MAX_ATTEMPTS: 3,
|
|
42
|
+
INITIAL_DELAY: 1_000,
|
|
43
|
+
MAX_DELAY: 30_000,
|
|
44
|
+
BACKOFF_FACTOR: 2,
|
|
45
|
+
RETRYABLE_STATUS: [408, 429, 500, 502, 503, 504],
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=http.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/constants/http.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,KAAK;IACV,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;CACR,CAAC;AAEX,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,aAAa,EAAE,eAAe;IAC9B,YAAY,EAAE,cAAc;IAC5B,MAAM,EAAE,QAAQ;IAChB,UAAU,EAAE,YAAY;CAChB,CAAC;AAEX,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,kBAAkB;IACxB,SAAS,EAAE,qBAAqB;IAChC,IAAI,EAAE,YAAY;CACV,CAAC;AAEX,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,EAAE,EAAE,GAAG;IACP,OAAO,EAAE,GAAG;IACZ,UAAU,EAAE,GAAG;IACf,WAAW,EAAE,GAAG;IAChB,YAAY,EAAE,GAAG;IACjB,SAAS,EAAE,GAAG;IACd,SAAS,EAAE,GAAG;IACd,QAAQ,EAAE,GAAG;IACb,aAAa,EAAE,GAAG;IAClB,YAAY,EAAE,GAAG;IACjB,YAAY,EAAE,GAAG;IACjB,mBAAmB,EAAE,GAAG;CAChB,CAAC;AAEX,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,OAAO;IACf,WAAW,EAAE,MAAM;IACnB,cAAc,EAAE,MAAM;IACtB,mBAAmB,EAAE,KAAK;CAClB,CAAC;AAEX,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,YAAY,EAAE,CAAC;IACf,aAAa,EAAE,KAAK;IACpB,SAAS,EAAE,MAAM;IACjB,cAAc,EAAE,CAAC;IACjB,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU;CACjD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export declare const SIZE_LIMITS: {
|
|
2
|
+
readonly MAX_FILE_SIZE: number;
|
|
3
|
+
readonly MAX_CODE_SIZE: number;
|
|
4
|
+
readonly MAX_WORKFLOW_STEPS: 100;
|
|
5
|
+
readonly MAX_MEMORY_CONTENT: 50000;
|
|
6
|
+
readonly MAX_SECRET_VALUE: 10000;
|
|
7
|
+
readonly MAX_QUERY_LENGTH: 5000;
|
|
8
|
+
};
|
|
9
|
+
export declare const PAGINATION: {
|
|
10
|
+
readonly DEFAULT_LIMIT: 20;
|
|
11
|
+
readonly MAX_LIMIT: 100;
|
|
12
|
+
readonly DEFAULT_OFFSET: 0;
|
|
13
|
+
};
|
|
14
|
+
export declare const RATE_LIMITS: {
|
|
15
|
+
readonly REQUESTS_PER_MINUTE: 60;
|
|
16
|
+
readonly AI_GENERATIONS_PER_HOUR: 20;
|
|
17
|
+
readonly FILE_UPLOADS_PER_HOUR: 100;
|
|
18
|
+
};
|
|
19
|
+
export declare const VALIDATION: {
|
|
20
|
+
readonly MIN_API_KEY_LENGTH: 10;
|
|
21
|
+
readonly MAX_API_KEY_LENGTH: 256;
|
|
22
|
+
readonly API_KEY_PATTERN: RegExp;
|
|
23
|
+
readonly MAX_NAME_LENGTH: 100;
|
|
24
|
+
readonly MAX_DESCRIPTION_LENGTH: 1000;
|
|
25
|
+
readonly MAX_METADATA_SIZE: 4096;
|
|
26
|
+
readonly ALLOWED_FILE_EXTENSIONS: readonly [".ts", ".js", ".json", ".yaml", ".yml", ".py", ".md"];
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=limits.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../../src/constants/limits.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW;;;;;;;CAOd,CAAC;AAEX,eAAO,MAAM,UAAU;;;;CAIb,CAAC;AAEX,eAAO,MAAM,WAAW;;;;CAId,CAAC;AAEX,eAAO,MAAM,UAAU;;;;;;;;CAQb,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export const SIZE_LIMITS = {
|
|
2
|
+
MAX_FILE_SIZE: 10 * 1024 * 1024,
|
|
3
|
+
MAX_CODE_SIZE: 5 * 1024 * 1024,
|
|
4
|
+
MAX_WORKFLOW_STEPS: 100,
|
|
5
|
+
MAX_MEMORY_CONTENT: 50_000,
|
|
6
|
+
MAX_SECRET_VALUE: 10_000,
|
|
7
|
+
MAX_QUERY_LENGTH: 5_000,
|
|
8
|
+
};
|
|
9
|
+
export const PAGINATION = {
|
|
10
|
+
DEFAULT_LIMIT: 20,
|
|
11
|
+
MAX_LIMIT: 100,
|
|
12
|
+
DEFAULT_OFFSET: 0,
|
|
13
|
+
};
|
|
14
|
+
export const RATE_LIMITS = {
|
|
15
|
+
REQUESTS_PER_MINUTE: 60,
|
|
16
|
+
AI_GENERATIONS_PER_HOUR: 20,
|
|
17
|
+
FILE_UPLOADS_PER_HOUR: 100,
|
|
18
|
+
};
|
|
19
|
+
export const VALIDATION = {
|
|
20
|
+
MIN_API_KEY_LENGTH: 10,
|
|
21
|
+
MAX_API_KEY_LENGTH: 256,
|
|
22
|
+
API_KEY_PATTERN: /^nrn_[A-Za-z0-9_-]+$/,
|
|
23
|
+
MAX_NAME_LENGTH: 100,
|
|
24
|
+
MAX_DESCRIPTION_LENGTH: 1000,
|
|
25
|
+
MAX_METADATA_SIZE: 4096,
|
|
26
|
+
ALLOWED_FILE_EXTENSIONS: ['.ts', '.js', '.json', '.yaml', '.yml', '.py', '.md'],
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=limits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"limits.js","sourceRoot":"","sources":["../../src/constants/limits.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,aAAa,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;IAC/B,aAAa,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;IAC9B,kBAAkB,EAAE,GAAG;IACvB,kBAAkB,EAAE,MAAM;IAC1B,gBAAgB,EAAE,MAAM;IACxB,gBAAgB,EAAE,KAAK;CACf,CAAC;AAEX,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,aAAa,EAAE,EAAE;IACjB,SAAS,EAAE,GAAG;IACd,cAAc,EAAE,CAAC;CACT,CAAC;AAEX,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,mBAAmB,EAAE,EAAE;IACvB,uBAAuB,EAAE,EAAE;IAC3B,qBAAqB,EAAE,GAAG;CAClB,CAAC;AAEX,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,kBAAkB,EAAE,EAAE;IACtB,kBAAkB,EAAE,GAAG;IACvB,eAAe,EAAE,sBAAsB;IACvC,eAAe,EAAE,GAAG;IACpB,sBAAsB,EAAE,IAAI;IAC5B,iBAAiB,EAAE,IAAI;IACvB,uBAAuB,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAU;CAChF,CAAC"}
|
package/lib/errors.d.ts
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export declare class NeuranaError extends Error {
|
|
2
|
+
readonly code: string;
|
|
3
|
+
readonly statusCode?: number | undefined;
|
|
4
|
+
readonly details?: unknown | undefined;
|
|
5
|
+
constructor(message: string, code: string, statusCode?: number | undefined, details?: unknown | undefined);
|
|
6
|
+
static fromCode(code: string, statusCode?: number, details?: unknown): NeuranaError;
|
|
7
|
+
toJSON(): Record<string, unknown>;
|
|
8
|
+
}
|
|
9
|
+
export declare class AuthenticationError extends NeuranaError {
|
|
10
|
+
constructor(message?: string);
|
|
11
|
+
}
|
|
12
|
+
export declare class AuthorizationError extends NeuranaError {
|
|
13
|
+
constructor(message?: string);
|
|
14
|
+
}
|
|
15
|
+
export declare class NotFoundError extends NeuranaError {
|
|
16
|
+
constructor(message?: string);
|
|
17
|
+
}
|
|
18
|
+
export declare class ValidationError extends NeuranaError {
|
|
19
|
+
constructor(message?: string, details?: unknown);
|
|
20
|
+
}
|
|
21
|
+
export declare class RateLimitError extends NeuranaError {
|
|
22
|
+
readonly retryAfter: number;
|
|
23
|
+
constructor(retryAfter: number, message?: string);
|
|
24
|
+
}
|
|
25
|
+
export declare class NetworkError extends NeuranaError {
|
|
26
|
+
constructor(message?: string);
|
|
27
|
+
}
|
|
28
|
+
export declare class TimeoutError extends NeuranaError {
|
|
29
|
+
constructor(message?: string);
|
|
30
|
+
}
|
|
31
|
+
export declare class ConfigurationError extends NeuranaError {
|
|
32
|
+
constructor(message?: string);
|
|
33
|
+
}
|
|
34
|
+
export declare class AnalyzerError extends NeuranaError {
|
|
35
|
+
constructor(message?: string, details?: unknown);
|
|
36
|
+
}
|
|
37
|
+
export declare class AiGenerationError extends NeuranaError {
|
|
38
|
+
constructor(message?: string, details?: unknown);
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAEA,qBAAa,YAAa,SAAQ,KAAK;aAGnB,IAAI,EAAE,MAAM;aACZ,UAAU,CAAC,EAAE,MAAM;aACnB,OAAO,CAAC,EAAE,OAAO;gBAHjC,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,YAAA,EACnB,OAAO,CAAC,EAAE,OAAO,YAAA;IAOnC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,YAAY;IAKnF,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CASlC;AAED,qBAAa,mBAAoB,SAAQ,YAAY;gBACvC,OAAO,SAAoD;CAKxE;AAED,qBAAa,kBAAmB,SAAQ,YAAY;gBACtC,OAAO,SAAmD;CAKvE;AAED,qBAAa,aAAc,SAAQ,YAAY;gBACjC,OAAO,SAAwC;CAK5D;AAED,qBAAa,eAAgB,SAAQ,YAAY;gBACnC,OAAO,SAA+C,EAAE,OAAO,CAAC,EAAE,OAAO;CAKtF;AAED,qBAAa,cAAe,SAAQ,YAAY;aAE5B,UAAU,EAAE,MAAM;gBAAlB,UAAU,EAAE,MAAM,EAClC,OAAO,SAAkD;CAM5D;AAED,qBAAa,YAAa,SAAQ,YAAY;gBAChC,OAAO,SAA4C;CAKhE;AAED,qBAAa,YAAa,SAAQ,YAAY;gBAChC,OAAO,SAAsC;CAK1D;AAED,qBAAa,kBAAmB,SAAQ,YAAY;gBACtC,OAAO,SAA6C;CAKjE;AAED,qBAAa,aAAc,SAAQ,YAAY;gBACjC,OAAO,SAA6C,EAAE,OAAO,CAAC,EAAE,OAAO;CAKpF;AAED,qBAAa,iBAAkB,SAAQ,YAAY;gBACrC,OAAO,SAAkD,EAAE,OAAO,CAAC,EAAE,OAAO;CAKzF"}
|
package/lib/errors.js
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { ERROR_CODES, ERROR_MESSAGES } from './constants/index.js';
|
|
2
|
+
export class NeuranaError extends Error {
|
|
3
|
+
code;
|
|
4
|
+
statusCode;
|
|
5
|
+
details;
|
|
6
|
+
constructor(message, code, statusCode, details) {
|
|
7
|
+
super(message);
|
|
8
|
+
this.code = code;
|
|
9
|
+
this.statusCode = statusCode;
|
|
10
|
+
this.details = details;
|
|
11
|
+
this.name = 'NeuranaError';
|
|
12
|
+
Object.setPrototypeOf(this, NeuranaError.prototype);
|
|
13
|
+
}
|
|
14
|
+
static fromCode(code, statusCode, details) {
|
|
15
|
+
const message = ERROR_MESSAGES[code] ?? 'An unknown error occurred';
|
|
16
|
+
return new NeuranaError(message, code, statusCode, details);
|
|
17
|
+
}
|
|
18
|
+
toJSON() {
|
|
19
|
+
return {
|
|
20
|
+
name: this.name,
|
|
21
|
+
message: this.message,
|
|
22
|
+
code: this.code,
|
|
23
|
+
statusCode: this.statusCode,
|
|
24
|
+
details: this.details,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export class AuthenticationError extends NeuranaError {
|
|
29
|
+
constructor(message = ERROR_MESSAGES[ERROR_CODES.AUTHENTICATION_FAILED]) {
|
|
30
|
+
super(message, ERROR_CODES.AUTHENTICATION_FAILED, 401);
|
|
31
|
+
this.name = 'AuthenticationError';
|
|
32
|
+
Object.setPrototypeOf(this, AuthenticationError.prototype);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export class AuthorizationError extends NeuranaError {
|
|
36
|
+
constructor(message = ERROR_MESSAGES[ERROR_CODES.AUTHORIZATION_FAILED]) {
|
|
37
|
+
super(message, ERROR_CODES.AUTHORIZATION_FAILED, 403);
|
|
38
|
+
this.name = 'AuthorizationError';
|
|
39
|
+
Object.setPrototypeOf(this, AuthorizationError.prototype);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export class NotFoundError extends NeuranaError {
|
|
43
|
+
constructor(message = ERROR_MESSAGES[ERROR_CODES.NOT_FOUND]) {
|
|
44
|
+
super(message, ERROR_CODES.NOT_FOUND, 404);
|
|
45
|
+
this.name = 'NotFoundError';
|
|
46
|
+
Object.setPrototypeOf(this, NotFoundError.prototype);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
export class ValidationError extends NeuranaError {
|
|
50
|
+
constructor(message = ERROR_MESSAGES[ERROR_CODES.VALIDATION_ERROR], details) {
|
|
51
|
+
super(message, ERROR_CODES.VALIDATION_ERROR, 422, details);
|
|
52
|
+
this.name = 'ValidationError';
|
|
53
|
+
Object.setPrototypeOf(this, ValidationError.prototype);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export class RateLimitError extends NeuranaError {
|
|
57
|
+
retryAfter;
|
|
58
|
+
constructor(retryAfter, message = ERROR_MESSAGES[ERROR_CODES.RATE_LIMIT_EXCEEDED]) {
|
|
59
|
+
super(message, ERROR_CODES.RATE_LIMIT_EXCEEDED, 429, { retryAfter });
|
|
60
|
+
this.retryAfter = retryAfter;
|
|
61
|
+
this.name = 'RateLimitError';
|
|
62
|
+
Object.setPrototypeOf(this, RateLimitError.prototype);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
export class NetworkError extends NeuranaError {
|
|
66
|
+
constructor(message = ERROR_MESSAGES[ERROR_CODES.NETWORK_ERROR]) {
|
|
67
|
+
super(message, ERROR_CODES.NETWORK_ERROR);
|
|
68
|
+
this.name = 'NetworkError';
|
|
69
|
+
Object.setPrototypeOf(this, NetworkError.prototype);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
export class TimeoutError extends NeuranaError {
|
|
73
|
+
constructor(message = ERROR_MESSAGES[ERROR_CODES.TIMEOUT]) {
|
|
74
|
+
super(message, ERROR_CODES.TIMEOUT, 408);
|
|
75
|
+
this.name = 'TimeoutError';
|
|
76
|
+
Object.setPrototypeOf(this, TimeoutError.prototype);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
export class ConfigurationError extends NeuranaError {
|
|
80
|
+
constructor(message = ERROR_MESSAGES[ERROR_CODES.INVALID_CONFIG]) {
|
|
81
|
+
super(message, ERROR_CODES.INVALID_CONFIG);
|
|
82
|
+
this.name = 'ConfigurationError';
|
|
83
|
+
Object.setPrototypeOf(this, ConfigurationError.prototype);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
export class AnalyzerError extends NeuranaError {
|
|
87
|
+
constructor(message = ERROR_MESSAGES[ERROR_CODES.ANALYZER_ERROR], details) {
|
|
88
|
+
super(message, ERROR_CODES.ANALYZER_ERROR, undefined, details);
|
|
89
|
+
this.name = 'AnalyzerError';
|
|
90
|
+
Object.setPrototypeOf(this, AnalyzerError.prototype);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
export class AiGenerationError extends NeuranaError {
|
|
94
|
+
constructor(message = ERROR_MESSAGES[ERROR_CODES.AI_GENERATION_ERROR], details) {
|
|
95
|
+
super(message, ERROR_CODES.AI_GENERATION_ERROR, undefined, details);
|
|
96
|
+
this.name = 'AiGenerationError';
|
|
97
|
+
Object.setPrototypeOf(this, AiGenerationError.prototype);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/lib/http.d.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export interface HttpClientConfig {
|
|
2
|
+
baseUrl: string;
|
|
3
|
+
apiKey: string;
|
|
4
|
+
timeout?: number;
|
|
5
|
+
userAgent?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare class HttpClient {
|
|
8
|
+
#private;
|
|
9
|
+
constructor(config: HttpClientConfig);
|
|
10
|
+
get<T>(path: string, params?: Record<string, string | number | boolean | undefined>): Promise<T>;
|
|
11
|
+
post<T>(path: string, data?: unknown): Promise<T>;
|
|
12
|
+
patch<T>(path: string, data?: unknown): Promise<T>;
|
|
13
|
+
put<T>(path: string, data?: unknown): Promise<T>;
|
|
14
|
+
delete<T>(path: string): Promise<T>;
|
|
15
|
+
private request;
|
|
16
|
+
private executeWithRetry;
|
|
17
|
+
private buildUrl;
|
|
18
|
+
private buildHeaders;
|
|
19
|
+
private handleResponse;
|
|
20
|
+
private createHttpError;
|
|
21
|
+
private handleError;
|
|
22
|
+
private shouldRetry;
|
|
23
|
+
private isRetryableError;
|
|
24
|
+
private calculateDelay;
|
|
25
|
+
private sleep;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAWD,qBAAa,UAAU;;gBAMT,MAAM,EAAE,gBAAgB;IAO9B,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIhG,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAIjD,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAIlD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAIhD,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;YAI3B,OAAO;YAuBP,gBAAgB;IAqB9B,OAAO,CAAC,QAAQ;IAchB,OAAO,CAAC,YAAY;YAYN,cAAc;IA+B5B,OAAO,CAAC,eAAe;IA0BvB,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,KAAK;CAGd"}
|
package/lib/http.js
ADDED
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { HTTP_HEADERS, CONTENT_TYPES, HTTP_STATUS, TIMEOUTS, RETRY, } from './constants/index.js';
|
|
3
|
+
import { NeuranaError, AuthenticationError, AuthorizationError, NotFoundError, ValidationError, RateLimitError, NetworkError, TimeoutError, } from './errors.js';
|
|
4
|
+
import { logger } from './logger.js';
|
|
5
|
+
export class HttpClient {
|
|
6
|
+
#apiKey;
|
|
7
|
+
#baseUrl;
|
|
8
|
+
#timeout;
|
|
9
|
+
#userAgent;
|
|
10
|
+
constructor(config) {
|
|
11
|
+
this.#apiKey = config.apiKey;
|
|
12
|
+
this.#baseUrl = config.baseUrl.replace(/\/$/, '');
|
|
13
|
+
this.#timeout = config.timeout ?? TIMEOUTS.DEFAULT;
|
|
14
|
+
this.#userAgent = config.userAgent ?? 'neurana-sdk/1.0.0';
|
|
15
|
+
}
|
|
16
|
+
async get(path, params) {
|
|
17
|
+
return this.request({ method: 'GET', path, params });
|
|
18
|
+
}
|
|
19
|
+
async post(path, data) {
|
|
20
|
+
return this.request({ method: 'POST', path, data });
|
|
21
|
+
}
|
|
22
|
+
async patch(path, data) {
|
|
23
|
+
return this.request({ method: 'PATCH', path, data });
|
|
24
|
+
}
|
|
25
|
+
async put(path, data) {
|
|
26
|
+
return this.request({ method: 'PUT', path, data });
|
|
27
|
+
}
|
|
28
|
+
async delete(path) {
|
|
29
|
+
return this.request({ method: 'DELETE', path });
|
|
30
|
+
}
|
|
31
|
+
async request(config) {
|
|
32
|
+
const url = this.buildUrl(config.path, config.params);
|
|
33
|
+
const controller = new AbortController();
|
|
34
|
+
const timeout = config.timeout ?? this.#timeout;
|
|
35
|
+
const timeoutId = setTimeout(() => controller.abort(), timeout);
|
|
36
|
+
try {
|
|
37
|
+
const response = await this.executeWithRetry(url, {
|
|
38
|
+
method: config.method,
|
|
39
|
+
headers: this.buildHeaders(),
|
|
40
|
+
body: config.data ? JSON.stringify(config.data) : undefined,
|
|
41
|
+
signal: config.signal ?? controller.signal,
|
|
42
|
+
});
|
|
43
|
+
return this.handleResponse(response);
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
throw this.handleError(error);
|
|
47
|
+
}
|
|
48
|
+
finally {
|
|
49
|
+
clearTimeout(timeoutId);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
async executeWithRetry(url, init, attempt = 1) {
|
|
53
|
+
try {
|
|
54
|
+
const response = await fetch(url, init);
|
|
55
|
+
if (this.shouldRetry(response.status, attempt)) {
|
|
56
|
+
const delay = this.calculateDelay(attempt);
|
|
57
|
+
await this.sleep(delay);
|
|
58
|
+
return this.executeWithRetry(url, init, attempt + 1);
|
|
59
|
+
}
|
|
60
|
+
return response;
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
if (this.isRetryableError(error) && attempt < RETRY.MAX_ATTEMPTS) {
|
|
64
|
+
const delay = this.calculateDelay(attempt);
|
|
65
|
+
await this.sleep(delay);
|
|
66
|
+
return this.executeWithRetry(url, init, attempt + 1);
|
|
67
|
+
}
|
|
68
|
+
throw error;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
buildUrl(path, params) {
|
|
72
|
+
const url = new URL(path, this.#baseUrl);
|
|
73
|
+
if (params) {
|
|
74
|
+
Object.entries(params).forEach(([key, value]) => {
|
|
75
|
+
if (value !== undefined) {
|
|
76
|
+
url.searchParams.set(key, String(value));
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
return url.toString();
|
|
81
|
+
}
|
|
82
|
+
buildHeaders() {
|
|
83
|
+
return {
|
|
84
|
+
[HTTP_HEADERS.AUTHORIZATION]: `Bearer ${this.#apiKey}`,
|
|
85
|
+
[HTTP_HEADERS.CONTENT_TYPE]: CONTENT_TYPES.JSON,
|
|
86
|
+
[HTTP_HEADERS.ACCEPT]: CONTENT_TYPES.JSON,
|
|
87
|
+
[HTTP_HEADERS.USER_AGENT]: this.#userAgent,
|
|
88
|
+
'Cache-Control': 'no-store, no-cache, must-revalidate',
|
|
89
|
+
'X-Content-Type-Options': 'nosniff',
|
|
90
|
+
'X-Request-ID': randomUUID(),
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
async handleResponse(response) {
|
|
94
|
+
if (response.status === HTTP_STATUS.NO_CONTENT) {
|
|
95
|
+
return undefined;
|
|
96
|
+
}
|
|
97
|
+
const contentType = response.headers.get('content-type');
|
|
98
|
+
const isJson = contentType?.includes('application/json');
|
|
99
|
+
if (!response.ok) {
|
|
100
|
+
let errorData = null;
|
|
101
|
+
if (isJson) {
|
|
102
|
+
try {
|
|
103
|
+
errorData = await response.json();
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
logger.debug('Failed to parse error response JSON', undefined, 'http');
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
throw this.createHttpError(response, errorData);
|
|
110
|
+
}
|
|
111
|
+
if (!isJson) {
|
|
112
|
+
return await response.text();
|
|
113
|
+
}
|
|
114
|
+
try {
|
|
115
|
+
return await response.json();
|
|
116
|
+
}
|
|
117
|
+
catch {
|
|
118
|
+
throw new NeuranaError('Failed to parse response', 'PARSE_ERROR', response.status);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
createHttpError(response, errorData) {
|
|
122
|
+
const status = response.status;
|
|
123
|
+
const code = errorData?.error?.code ?? 'UNKNOWN_ERROR';
|
|
124
|
+
const message = errorData?.error?.message ?? 'An unexpected error occurred';
|
|
125
|
+
const details = errorData?.error?.details;
|
|
126
|
+
switch (status) {
|
|
127
|
+
case HTTP_STATUS.UNAUTHORIZED:
|
|
128
|
+
return new AuthenticationError(message);
|
|
129
|
+
case HTTP_STATUS.FORBIDDEN:
|
|
130
|
+
return new AuthorizationError(message);
|
|
131
|
+
case HTTP_STATUS.NOT_FOUND:
|
|
132
|
+
return new NotFoundError(message);
|
|
133
|
+
case HTTP_STATUS.UNPROCESSABLE:
|
|
134
|
+
case HTTP_STATUS.BAD_REQUEST:
|
|
135
|
+
return new ValidationError(message, details);
|
|
136
|
+
case HTTP_STATUS.RATE_LIMITED: {
|
|
137
|
+
const retryAfterHeader = response.headers.get('Retry-After');
|
|
138
|
+
const retryAfter = retryAfterHeader ? parseInt(retryAfterHeader, 10) : 60;
|
|
139
|
+
return new RateLimitError(isNaN(retryAfter) ? 60 : retryAfter, message);
|
|
140
|
+
}
|
|
141
|
+
default:
|
|
142
|
+
return new NeuranaError(message, code, status, details);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
handleError(error) {
|
|
146
|
+
if (error instanceof NeuranaError) {
|
|
147
|
+
return error;
|
|
148
|
+
}
|
|
149
|
+
if (error instanceof Error) {
|
|
150
|
+
if (error.name === 'AbortError') {
|
|
151
|
+
return new TimeoutError();
|
|
152
|
+
}
|
|
153
|
+
if (error.message.includes('fetch') || error.message.includes('network')) {
|
|
154
|
+
logger.debug('Network error occurred', error, 'http');
|
|
155
|
+
return new NetworkError('Failed to connect to server');
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return new NeuranaError('An unexpected error occurred', 'UNKNOWN_ERROR');
|
|
159
|
+
}
|
|
160
|
+
shouldRetry(status, attempt) {
|
|
161
|
+
return attempt < RETRY.MAX_ATTEMPTS && RETRY.RETRYABLE_STATUS.includes(status);
|
|
162
|
+
}
|
|
163
|
+
isRetryableError(error) {
|
|
164
|
+
if (error instanceof Error) {
|
|
165
|
+
return error.name === 'TypeError' || error.message.includes('network');
|
|
166
|
+
}
|
|
167
|
+
return false;
|
|
168
|
+
}
|
|
169
|
+
calculateDelay(attempt) {
|
|
170
|
+
const delay = RETRY.INITIAL_DELAY * Math.pow(RETRY.BACKOFF_FACTOR, attempt - 1);
|
|
171
|
+
return Math.min(delay, RETRY.MAX_DELAY);
|
|
172
|
+
}
|
|
173
|
+
sleep(ms) {
|
|
174
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=http.js.map
|
package/lib/http.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { NeuranaClient } from './client.js';
|
|
2
|
+
export type { NeuranaConfig } from './client.js';
|
|
3
|
+
export * from './errors.js';
|
|
4
|
+
export * from './types/index.js';
|
|
5
|
+
export { logger } from './logger.js';
|
|
6
|
+
export type { LogLevel, LogEntry, LoggerConfig } from './logger.js';
|
|
7
|
+
export { getMimeType, getLanguage, getFileExtension, formatFileSize, isAllowedExtension, } from './utils/index.js';
|
|
8
|
+
export { WorkflowsResource, CodeResource, SecretsResource, ApiKeysResource, ExecutionResource, } from './resources/index.js';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AAEjC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEpE,OAAO,EACL,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,eAAe,EACf,iBAAiB,GAClB,MAAM,sBAAsB,CAAC"}
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { NeuranaClient } from './client.js';
|
|
2
|
+
export * from './errors.js';
|
|
3
|
+
export * from './types/index.js';
|
|
4
|
+
export { logger } from './logger.js';
|
|
5
|
+
export { getMimeType, getLanguage, getFileExtension, formatFileSize, isAllowedExtension, } from './utils/index.js';
|
|
6
|
+
export { WorkflowsResource, CodeResource, SecretsResource, ApiKeysResource, ExecutionResource, } from './resources/index.js';
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AAEjC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,OAAO,EACL,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,eAAe,EACf,iBAAiB,GAClB,MAAM,sBAAsB,CAAC"}
|
package/lib/logger.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export type LogLevel = "debug" | "info" | "warn" | "error" | "silent";
|
|
2
|
+
export interface LogEntry {
|
|
3
|
+
level: LogLevel;
|
|
4
|
+
message: string;
|
|
5
|
+
timestamp: string;
|
|
6
|
+
context?: string;
|
|
7
|
+
data?: unknown;
|
|
8
|
+
}
|
|
9
|
+
export interface LoggerConfig {
|
|
10
|
+
level?: LogLevel;
|
|
11
|
+
prefix?: string;
|
|
12
|
+
handler?: (entry: LogEntry) => void;
|
|
13
|
+
}
|
|
14
|
+
declare class Logger {
|
|
15
|
+
#private;
|
|
16
|
+
configure(config: LoggerConfig): void;
|
|
17
|
+
debug(message: string, data?: unknown, context?: string): void;
|
|
18
|
+
info(message: string, data?: unknown, context?: string): void;
|
|
19
|
+
warn(message: string, data?: unknown, context?: string): void;
|
|
20
|
+
error(message: string, data?: unknown, context?: string): void;
|
|
21
|
+
private log;
|
|
22
|
+
private shouldLog;
|
|
23
|
+
private sanitizeData;
|
|
24
|
+
private redactSensitive;
|
|
25
|
+
private output;
|
|
26
|
+
}
|
|
27
|
+
export declare const logger: Logger;
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEtE,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;CACrC;AAUD,cAAM,MAAM;;IAKV,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAMrC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAI9D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAI7D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAI7D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAI9D,OAAO,CAAC,GAAG;IAwBX,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,YAAY;IAkBpB,OAAO,CAAC,eAAe;IA0BvB,OAAO,CAAC,MAAM;CAqBf;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"}
|