@semiont/api-client 0.1.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.
Files changed (78) hide show
  1. package/README.md +85 -0
  2. package/dist/__tests__/client.test.d.ts +28 -0
  3. package/dist/__tests__/client.test.d.ts.map +1 -0
  4. package/dist/__tests__/client.test.js +567 -0
  5. package/dist/__tests__/client.test.js.map +1 -0
  6. package/dist/__tests__/sse-client.test.d.ts +7 -0
  7. package/dist/__tests__/sse-client.test.d.ts.map +1 -0
  8. package/dist/__tests__/sse-client.test.js +421 -0
  9. package/dist/__tests__/sse-client.test.js.map +1 -0
  10. package/dist/__tests__/sse-stream.test.d.ts +7 -0
  11. package/dist/__tests__/sse-stream.test.d.ts.map +1 -0
  12. package/dist/__tests__/sse-stream.test.js +394 -0
  13. package/dist/__tests__/sse-stream.test.js.map +1 -0
  14. package/dist/__tests__/svg-selectors.test.d.ts +5 -0
  15. package/dist/__tests__/svg-selectors.test.d.ts.map +1 -0
  16. package/dist/__tests__/svg-selectors.test.js +124 -0
  17. package/dist/__tests__/svg-selectors.test.js.map +1 -0
  18. package/dist/branded-types.d.ts +70 -0
  19. package/dist/branded-types.d.ts.map +1 -0
  20. package/dist/branded-types.js +62 -0
  21. package/dist/branded-types.js.map +1 -0
  22. package/dist/client.d.ts +243 -0
  23. package/dist/client.d.ts.map +1 -0
  24. package/dist/client.js +460 -0
  25. package/dist/client.js.map +1 -0
  26. package/dist/index.d.ts +43 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +62 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/mime-utils.d.ts +27 -0
  31. package/dist/mime-utils.d.ts.map +1 -0
  32. package/dist/mime-utils.js +49 -0
  33. package/dist/mime-utils.js.map +1 -0
  34. package/dist/sse/index.d.ts +343 -0
  35. package/dist/sse/index.d.ts.map +1 -0
  36. package/dist/sse/index.js +404 -0
  37. package/dist/sse/index.js.map +1 -0
  38. package/dist/sse/stream.d.ts +58 -0
  39. package/dist/sse/stream.d.ts.map +1 -0
  40. package/dist/sse/stream.js +187 -0
  41. package/dist/sse/stream.js.map +1 -0
  42. package/dist/sse/types.d.ts +295 -0
  43. package/dist/sse/types.d.ts.map +1 -0
  44. package/dist/sse/types.js +10 -0
  45. package/dist/sse/types.js.map +1 -0
  46. package/dist/types.d.ts +3177 -0
  47. package/dist/types.d.ts.map +1 -0
  48. package/dist/types.js +7 -0
  49. package/dist/types.js.map +1 -0
  50. package/dist/uri-types.d.ts +19 -0
  51. package/dist/uri-types.d.ts.map +1 -0
  52. package/dist/uri-types.js +35 -0
  53. package/dist/uri-types.js.map +1 -0
  54. package/dist/utils/annotations.d.ts +191 -0
  55. package/dist/utils/annotations.d.ts.map +1 -0
  56. package/dist/utils/annotations.js +404 -0
  57. package/dist/utils/annotations.js.map +1 -0
  58. package/dist/utils/events.d.ts +74 -0
  59. package/dist/utils/events.d.ts.map +1 -0
  60. package/dist/utils/events.js +329 -0
  61. package/dist/utils/events.js.map +1 -0
  62. package/dist/utils/index.d.ts +12 -0
  63. package/dist/utils/index.d.ts.map +1 -0
  64. package/dist/utils/index.js +28 -0
  65. package/dist/utils/index.js.map +1 -0
  66. package/dist/utils/locales.d.ts +31 -0
  67. package/dist/utils/locales.d.ts.map +1 -0
  68. package/dist/utils/locales.js +83 -0
  69. package/dist/utils/locales.js.map +1 -0
  70. package/dist/utils/resources.d.ts +34 -0
  71. package/dist/utils/resources.d.ts.map +1 -0
  72. package/dist/utils/resources.js +63 -0
  73. package/dist/utils/resources.js.map +1 -0
  74. package/dist/utils/validation.d.ts +57 -0
  75. package/dist/utils/validation.d.ts.map +1 -0
  76. package/dist/utils/validation.js +89 -0
  77. package/dist/utils/validation.js.map +1 -0
  78. 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",
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
+ }