@semiont/api-client 0.1.0-build.6
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/README.md +85 -0
- package/dist/__tests__/client.test.d.ts +28 -0
- package/dist/__tests__/client.test.d.ts.map +1 -0
- package/dist/__tests__/client.test.js +567 -0
- package/dist/__tests__/client.test.js.map +1 -0
- package/dist/__tests__/sse-client.test.d.ts +7 -0
- package/dist/__tests__/sse-client.test.d.ts.map +1 -0
- package/dist/__tests__/sse-client.test.js +421 -0
- package/dist/__tests__/sse-client.test.js.map +1 -0
- package/dist/__tests__/sse-stream.test.d.ts +7 -0
- package/dist/__tests__/sse-stream.test.d.ts.map +1 -0
- package/dist/__tests__/sse-stream.test.js +394 -0
- package/dist/__tests__/sse-stream.test.js.map +1 -0
- package/dist/__tests__/svg-selectors.test.d.ts +5 -0
- package/dist/__tests__/svg-selectors.test.d.ts.map +1 -0
- package/dist/__tests__/svg-selectors.test.js +124 -0
- package/dist/__tests__/svg-selectors.test.js.map +1 -0
- package/dist/branded-types.d.ts +70 -0
- package/dist/branded-types.d.ts.map +1 -0
- package/dist/branded-types.js +62 -0
- package/dist/branded-types.js.map +1 -0
- package/dist/client.d.ts +243 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +460 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +43 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +62 -0
- package/dist/index.js.map +1 -0
- package/dist/mime-utils.d.ts +27 -0
- package/dist/mime-utils.d.ts.map +1 -0
- package/dist/mime-utils.js +49 -0
- package/dist/mime-utils.js.map +1 -0
- package/dist/sse/index.d.ts +343 -0
- package/dist/sse/index.d.ts.map +1 -0
- package/dist/sse/index.js +404 -0
- package/dist/sse/index.js.map +1 -0
- package/dist/sse/stream.d.ts +58 -0
- package/dist/sse/stream.d.ts.map +1 -0
- package/dist/sse/stream.js +187 -0
- package/dist/sse/stream.js.map +1 -0
- package/dist/sse/types.d.ts +295 -0
- package/dist/sse/types.d.ts.map +1 -0
- package/dist/sse/types.js +10 -0
- package/dist/sse/types.js.map +1 -0
- package/dist/types.d.ts +3177 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/annotations.d.ts +191 -0
- package/dist/utils/annotations.d.ts.map +1 -0
- package/dist/utils/annotations.js +404 -0
- package/dist/utils/annotations.js.map +1 -0
- package/dist/utils/events.d.ts +74 -0
- package/dist/utils/events.d.ts.map +1 -0
- package/dist/utils/events.js +329 -0
- package/dist/utils/events.js.map +1 -0
- package/dist/utils/index.d.ts +12 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +28 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/locales.d.ts +31 -0
- package/dist/utils/locales.d.ts.map +1 -0
- package/dist/utils/locales.js +83 -0
- package/dist/utils/locales.js.map +1 -0
- package/dist/utils/resources.d.ts +34 -0
- package/dist/utils/resources.d.ts.map +1 -0
- package/dist/utils/resources.js +63 -0
- package/dist/utils/resources.js.map +1 -0
- package/dist/utils/validation.d.ts +57 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +89 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +65 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic validation utilities for @semiont/api-client
|
|
3
|
+
*
|
|
4
|
+
* Pure TypeScript validation with no external dependencies.
|
|
5
|
+
* Safe to use in any JavaScript environment (Node.js, browser, Deno, etc.)
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Validation result types
|
|
9
|
+
*/
|
|
10
|
+
export type ValidationSuccess<T> = {
|
|
11
|
+
success: true;
|
|
12
|
+
data: T;
|
|
13
|
+
};
|
|
14
|
+
export type ValidationFailure = {
|
|
15
|
+
success: false;
|
|
16
|
+
error: string;
|
|
17
|
+
details?: string[];
|
|
18
|
+
};
|
|
19
|
+
export type ValidationResult<T> = ValidationSuccess<T> | ValidationFailure;
|
|
20
|
+
/**
|
|
21
|
+
* JWT Token validation
|
|
22
|
+
*
|
|
23
|
+
* Validates JWT token format (header.payload.signature).
|
|
24
|
+
* Does not verify signature - use for format validation only.
|
|
25
|
+
*/
|
|
26
|
+
export declare const JWTTokenSchema: {
|
|
27
|
+
parse(token: unknown): string;
|
|
28
|
+
safeParse(token: unknown): ValidationResult<string>;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Generic validation helper with error formatting
|
|
32
|
+
*
|
|
33
|
+
* Wraps any schema's parse method with try/catch and returns ValidationResult.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```typescript
|
|
37
|
+
* const result = validateData(JWTTokenSchema, 'eyJ...');
|
|
38
|
+
* if (result.success) {
|
|
39
|
+
* console.log('Valid token:', result.data);
|
|
40
|
+
* } else {
|
|
41
|
+
* console.error('Invalid:', result.error);
|
|
42
|
+
* }
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export declare function validateData<T>(schema: {
|
|
46
|
+
parse(data: unknown): T;
|
|
47
|
+
}, data: unknown): ValidationResult<T>;
|
|
48
|
+
/**
|
|
49
|
+
* Email validation helper
|
|
50
|
+
*
|
|
51
|
+
* Validates email format using RFC 5322 simplified regex.
|
|
52
|
+
*
|
|
53
|
+
* @param email - Email address to validate
|
|
54
|
+
* @returns true if valid email format
|
|
55
|
+
*/
|
|
56
|
+
export declare function isValidEmail(email: string): boolean;
|
|
57
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC;AAC9D,MAAM,MAAM,iBAAiB,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AACtF,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC;AAE3E;;;;;GAKG;AACH,eAAO,MAAM,cAAc;iBACZ,OAAO,GAAG,MAAM;qBAeZ,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC;CAWpD,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,MAAM,EAAE;IAAE,KAAK,CAAC,IAAI,EAAE,OAAO,GAAG,CAAC,CAAA;CAAE,EACnC,IAAI,EAAE,OAAO,GACZ,gBAAgB,CAAC,CAAC,CAAC,CAUrB;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAOnD"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Generic validation utilities for @semiont/api-client
|
|
4
|
+
*
|
|
5
|
+
* Pure TypeScript validation with no external dependencies.
|
|
6
|
+
* Safe to use in any JavaScript environment (Node.js, browser, Deno, etc.)
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.JWTTokenSchema = void 0;
|
|
10
|
+
exports.validateData = validateData;
|
|
11
|
+
exports.isValidEmail = isValidEmail;
|
|
12
|
+
/**
|
|
13
|
+
* JWT Token validation
|
|
14
|
+
*
|
|
15
|
+
* Validates JWT token format (header.payload.signature).
|
|
16
|
+
* Does not verify signature - use for format validation only.
|
|
17
|
+
*/
|
|
18
|
+
exports.JWTTokenSchema = {
|
|
19
|
+
parse(token) {
|
|
20
|
+
if (typeof token !== 'string') {
|
|
21
|
+
throw new Error('Token must be a string');
|
|
22
|
+
}
|
|
23
|
+
if (!token || token.length === 0) {
|
|
24
|
+
throw new Error('Token is required');
|
|
25
|
+
}
|
|
26
|
+
// JWT format: header.payload.signature
|
|
27
|
+
const jwtRegex = /^[A-Za-z0-9\-_]+\.[A-Za-z0-9\-_]+\.[A-Za-z0-9\-_]*$/;
|
|
28
|
+
if (!jwtRegex.test(token)) {
|
|
29
|
+
throw new Error('Invalid JWT token format');
|
|
30
|
+
}
|
|
31
|
+
return token;
|
|
32
|
+
},
|
|
33
|
+
safeParse(token) {
|
|
34
|
+
try {
|
|
35
|
+
const validated = this.parse(token);
|
|
36
|
+
return { success: true, data: validated };
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
return {
|
|
40
|
+
success: false,
|
|
41
|
+
error: error instanceof Error ? error.message : 'Invalid JWT token',
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Generic validation helper with error formatting
|
|
48
|
+
*
|
|
49
|
+
* Wraps any schema's parse method with try/catch and returns ValidationResult.
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```typescript
|
|
53
|
+
* const result = validateData(JWTTokenSchema, 'eyJ...');
|
|
54
|
+
* if (result.success) {
|
|
55
|
+
* console.log('Valid token:', result.data);
|
|
56
|
+
* } else {
|
|
57
|
+
* console.error('Invalid:', result.error);
|
|
58
|
+
* }
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
function validateData(schema, data) {
|
|
62
|
+
try {
|
|
63
|
+
const validated = schema.parse(data);
|
|
64
|
+
return { success: true, data: validated };
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
return {
|
|
68
|
+
success: false,
|
|
69
|
+
error: error instanceof Error ? error.message : 'Validation failed',
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Email validation helper
|
|
75
|
+
*
|
|
76
|
+
* Validates email format using RFC 5322 simplified regex.
|
|
77
|
+
*
|
|
78
|
+
* @param email - Email address to validate
|
|
79
|
+
* @returns true if valid email format
|
|
80
|
+
*/
|
|
81
|
+
function isValidEmail(email) {
|
|
82
|
+
if (email.length < 1 || email.length > 255) {
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
// RFC 5322 simplified email regex
|
|
86
|
+
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
87
|
+
return emailRegex.test(email);
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AA2DH,oCAaC;AAUD,oCAOC;AAhFD;;;;;GAKG;AACU,QAAA,cAAc,GAAG;IAC5B,KAAK,CAAC,KAAc;QAClB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QACD,uCAAuC;QACvC,MAAM,QAAQ,GAAG,qDAAqD,CAAC;QACvE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,SAAS,CAAC,KAAc;QACtB,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB;aACpE,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,SAAgB,YAAY,CAC1B,MAAmC,EACnC,IAAa;IAEb,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB;SACpE,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,YAAY,CAAC,KAAa;IACxC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAC;IACf,CAAC;IACD,kCAAkC;IAClC,MAAM,UAAU,GAAG,4BAA4B,CAAC;IAChD,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@semiont/api-client",
|
|
3
|
+
"version": "0.1.0-build.6",
|
|
4
|
+
"description": "Semiont API SDK - types, client, and utilities",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"require": "./dist/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./utils": {
|
|
14
|
+
"types": "./dist/utils/index.d.ts",
|
|
15
|
+
"import": "./dist/utils/index.js",
|
|
16
|
+
"require": "./dist/utils/index.js"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"files": [
|
|
20
|
+
"dist",
|
|
21
|
+
"README.md",
|
|
22
|
+
"LICENSE"
|
|
23
|
+
],
|
|
24
|
+
"publishConfig": {
|
|
25
|
+
"access": "public"
|
|
26
|
+
},
|
|
27
|
+
"repository": {
|
|
28
|
+
"type": "git",
|
|
29
|
+
"url": "git+https://github.com/The-AI-Alliance/semiont.git",
|
|
30
|
+
"directory": "packages/api-client"
|
|
31
|
+
},
|
|
32
|
+
"scripts": {
|
|
33
|
+
"bundle-spec": "cd ../.. && npm run openapi:bundle",
|
|
34
|
+
"copy-spec": "cp ../../specs/openapi.json openapi.json",
|
|
35
|
+
"generate": "npm run bundle-spec && npm run copy-spec && openapi-typescript openapi.json -o src/types.ts",
|
|
36
|
+
"build": "tsc && npm run copy-types",
|
|
37
|
+
"copy-types": "cp src/types.ts dist/types.d.ts",
|
|
38
|
+
"prebuild": "npm run generate",
|
|
39
|
+
"watch": "tsc --watch",
|
|
40
|
+
"clean": "rm -rf dist src/types.ts openapi.json",
|
|
41
|
+
"test": "vitest run",
|
|
42
|
+
"test:watch": "vitest"
|
|
43
|
+
},
|
|
44
|
+
"dependencies": {
|
|
45
|
+
"ky": "^1.2.0"
|
|
46
|
+
},
|
|
47
|
+
"devDependencies": {
|
|
48
|
+
"openapi-typescript": "^7.10.1",
|
|
49
|
+
"orval": "^6.31.0",
|
|
50
|
+
"typescript": "^5.6.3",
|
|
51
|
+
"vitest": "^3.2.4"
|
|
52
|
+
},
|
|
53
|
+
"keywords": [
|
|
54
|
+
"semiont",
|
|
55
|
+
"api",
|
|
56
|
+
"client",
|
|
57
|
+
"sdk",
|
|
58
|
+
"openapi",
|
|
59
|
+
"annotations",
|
|
60
|
+
"utilities",
|
|
61
|
+
"w3c"
|
|
62
|
+
],
|
|
63
|
+
"author": "Semiont Team",
|
|
64
|
+
"license": "Apache-2.0"
|
|
65
|
+
}
|