@weave-kit/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 (59) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +64 -0
  3. package/dist/approvals.d.ts +37 -0
  4. package/dist/approvals.d.ts.map +1 -0
  5. package/dist/approvals.js +36 -0
  6. package/dist/approvals.js.map +1 -0
  7. package/dist/audit.d.ts +15 -0
  8. package/dist/audit.d.ts.map +1 -0
  9. package/dist/audit.js +26 -0
  10. package/dist/audit.js.map +1 -0
  11. package/dist/client.d.ts +88 -0
  12. package/dist/client.d.ts.map +1 -0
  13. package/dist/client.js +57 -0
  14. package/dist/client.js.map +1 -0
  15. package/dist/guardrails.d.ts +56 -0
  16. package/dist/guardrails.d.ts.map +1 -0
  17. package/dist/guardrails.js +28 -0
  18. package/dist/guardrails.js.map +1 -0
  19. package/dist/http.d.ts +23 -0
  20. package/dist/http.d.ts.map +1 -0
  21. package/dist/http.js +71 -0
  22. package/dist/http.js.map +1 -0
  23. package/dist/identities.d.ts +16 -0
  24. package/dist/identities.d.ts.map +1 -0
  25. package/dist/identities.js +9 -0
  26. package/dist/identities.js.map +1 -0
  27. package/dist/index.d.ts +5 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +2 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/layouts.d.ts +107 -0
  32. package/dist/layouts.d.ts.map +1 -0
  33. package/dist/layouts.js +65 -0
  34. package/dist/layouts.js.map +1 -0
  35. package/dist/metadata.d.ts +23 -0
  36. package/dist/metadata.d.ts.map +1 -0
  37. package/dist/metadata.js +15 -0
  38. package/dist/metadata.js.map +1 -0
  39. package/dist/objects.d.ts +21 -0
  40. package/dist/objects.d.ts.map +1 -0
  41. package/dist/objects.js +43 -0
  42. package/dist/objects.js.map +1 -0
  43. package/dist/schema.d.ts +33 -0
  44. package/dist/schema.d.ts.map +1 -0
  45. package/dist/schema.js +24 -0
  46. package/dist/schema.js.map +1 -0
  47. package/dist/scripts.d.ts +44 -0
  48. package/dist/scripts.d.ts.map +1 -0
  49. package/dist/scripts.js +41 -0
  50. package/dist/scripts.js.map +1 -0
  51. package/dist/subscribe.d.ts +32 -0
  52. package/dist/subscribe.d.ts.map +1 -0
  53. package/dist/subscribe.js +128 -0
  54. package/dist/subscribe.js.map +1 -0
  55. package/dist/types.d.ts +23 -0
  56. package/dist/types.d.ts.map +1 -0
  57. package/dist/types.js +16 -0
  58. package/dist/types.js.map +1 -0
  59. package/package.json +57 -0
@@ -0,0 +1,128 @@
1
+ import { ClientError } from './http.js';
2
+ /** parse one SSE block; null for comment/ping-only blocks */
3
+ function parseBlock(block) {
4
+ let id;
5
+ let type;
6
+ const dataParts = [];
7
+ for (const line of block.split('\n')) {
8
+ if (line.startsWith(':') || line === '')
9
+ continue;
10
+ const idx = line.indexOf(':');
11
+ if (idx === -1)
12
+ continue;
13
+ const field = line.slice(0, idx).trim();
14
+ const value = line.slice(idx + 1).replace(/^ /, '');
15
+ if (field === 'id')
16
+ id = Number.parseInt(value, 10);
17
+ else if (field === 'event')
18
+ type = value;
19
+ else if (field === 'data')
20
+ dataParts.push(value);
21
+ }
22
+ if (dataParts.length === 0)
23
+ return null; // heartbeat / comment only
24
+ let event;
25
+ try {
26
+ const parsed = JSON.parse(dataParts.join('\n'));
27
+ if (typeof parsed.type !== 'string')
28
+ throw new Error('no type');
29
+ event = parsed;
30
+ }
31
+ catch {
32
+ event = { type: type ?? 'message', payload: { data: dataParts.join('\n') } };
33
+ }
34
+ return { event, id };
35
+ }
36
+ /** build a `client.subscribe` function bound to one client's transport */
37
+ export function createSubscriber(http) {
38
+ return function subscribe(options) {
39
+ let closed = false;
40
+ let retries = 0;
41
+ let lastSeq;
42
+ let controller;
43
+ let timer;
44
+ const close = () => {
45
+ closed = true;
46
+ controller?.abort();
47
+ if (timer !== undefined)
48
+ clearTimeout(timer);
49
+ };
50
+ const scheduleReconnect = () => {
51
+ if (closed)
52
+ return;
53
+ const base = options.backoffMs ?? 1000;
54
+ const max = options.maxBackoffMs ?? 15000;
55
+ const delay = Math.min(base * 2 ** retries, max);
56
+ retries += 1;
57
+ timer = setTimeout(() => {
58
+ timer = undefined;
59
+ void connect();
60
+ }, delay);
61
+ // a reconnect timer must never keep the process alive (subscription may be abandoned)
62
+ timer.unref?.();
63
+ };
64
+ const connect = async () => {
65
+ if (closed)
66
+ return;
67
+ controller = new AbortController();
68
+ const url = new URL(`${http.baseUrl}${http.prefix}/events`);
69
+ const headers = { accept: 'text/event-stream' };
70
+ if (http.apiKey !== undefined)
71
+ headers.authorization = `Bearer ${http.apiKey}`;
72
+ if (lastSeq !== undefined)
73
+ headers['last-event-id'] = String(lastSeq);
74
+ let reader;
75
+ let buffer = '';
76
+ const decoder = new TextDecoder();
77
+ try {
78
+ // bare call — `http.fetchImpl(...)` sets `this` to the http object and
79
+ // native `window.fetch` throws "Illegal invocation"
80
+ const fetchImpl = http.fetchImpl;
81
+ const res = await fetchImpl(url.toString(), { method: 'GET', headers, signal: controller.signal });
82
+ if (!res.ok)
83
+ throw new ClientError(res.status, '', res.statusText);
84
+ if (res.body === null)
85
+ throw new Error('empty response body');
86
+ options.onOpen?.();
87
+ retries = 0;
88
+ reader = res.body.getReader();
89
+ for (;;) {
90
+ if (closed)
91
+ return;
92
+ const { done, value } = await reader.read();
93
+ if (done)
94
+ break;
95
+ buffer += decoder.decode(value, { stream: true });
96
+ let idx;
97
+ while ((idx = buffer.indexOf('\n\n')) !== -1) {
98
+ const block = buffer.slice(0, idx);
99
+ buffer = buffer.slice(idx + 2);
100
+ const parsed = parseBlock(block);
101
+ if (parsed === null)
102
+ continue;
103
+ if (parsed.id !== undefined)
104
+ lastSeq = parsed.id;
105
+ else if (parsed.event.seq !== undefined)
106
+ lastSeq = parsed.event.seq;
107
+ options.onEvent(parsed.event);
108
+ }
109
+ }
110
+ // stream ended cleanly (server closed) → reconnect
111
+ scheduleReconnect();
112
+ }
113
+ catch (error) {
114
+ if (closed)
115
+ return;
116
+ if (error instanceof ClientError && (error.status === 401 || error.status === 403)) {
117
+ options.onError?.(error);
118
+ return; // auth failures never auto-retry
119
+ }
120
+ options.onError?.(error instanceof Error ? error : new Error(String(error)));
121
+ scheduleReconnect();
122
+ }
123
+ };
124
+ void connect();
125
+ return { close };
126
+ };
127
+ }
128
+ //# sourceMappingURL=subscribe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscribe.js","sourceRoot":"","sources":["../src/subscribe.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { Filter, SortDir } from '@weave-kit/engine';
2
+ /** one sort clause; serialized as `field:direction` on the wire */
3
+ export interface FindSort {
4
+ field: string;
5
+ direction: SortDir;
6
+ }
7
+ /** list query params — serialized to the M5 REST contract (filter/sort/fields/limit/offset) */
8
+ export interface FindParams {
9
+ /** equality/operator filter object (JSON-encoded on the wire) */
10
+ filter?: Filter;
11
+ sort?: FindSort[];
12
+ limit?: number;
13
+ offset?: number;
14
+ /** column projection whitelist */
15
+ fields?: string[];
16
+ }
17
+ /** single-record read params */
18
+ export interface FindOneParams {
19
+ fields?: string[];
20
+ }
21
+ /** serialize FindParams to REST query string entries */
22
+ export declare function buildFindQuery(params: FindParams): Record<string, string> | undefined;
23
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEzD,mEAAmE;AACnE,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,+FAA+F;AAC/F,MAAM,WAAW,UAAU;IACzB,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,gCAAgC;AAChC,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wDAAwD;AACxD,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAQrF"}
package/dist/types.js ADDED
@@ -0,0 +1,16 @@
1
+ /** serialize FindParams to REST query string entries */
2
+ export function buildFindQuery(params) {
3
+ const query = {};
4
+ if (params.filter !== undefined)
5
+ query.filter = JSON.stringify(params.filter);
6
+ if (params.sort !== undefined)
7
+ query.sort = params.sort.map((s) => `${s.field}:${s.direction}`).join(',');
8
+ if (params.fields !== undefined)
9
+ query.fields = params.fields.join(',');
10
+ if (params.limit !== undefined)
11
+ query.limit = String(params.limit);
12
+ if (params.offset !== undefined)
13
+ query.offset = String(params.offset);
14
+ return Object.keys(query).length === 0 ? undefined : query;
15
+ }
16
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAwBA,wDAAwD;AACxD,MAAM,UAAU,cAAc,CAAC,MAAkB;IAC/C,MAAM,KAAK,GAA2B,EAAE,CAAC;IACzC,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;QAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9E,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1G,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;QAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxE,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;QAAE,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACnE,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;QAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7D,CAAC"}
package/package.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "@weave-kit/client",
3
+ "version": "0.1.0",
4
+ "description": "WeaveKit client — framework-agnostic TypeScript SDK",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "default": "./dist/index.js"
12
+ }
13
+ },
14
+ "license": "MIT",
15
+ "engines": {
16
+ "node": ">=24"
17
+ },
18
+ "files": [
19
+ "dist",
20
+ "README.md",
21
+ "LICENSE"
22
+ ],
23
+ "sideEffects": false,
24
+ "publishConfig": {
25
+ "access": "public"
26
+ },
27
+ "keywords": [
28
+ "weavekit",
29
+ "client",
30
+ "sdk",
31
+ "rest",
32
+ "typescript"
33
+ ],
34
+ "repository": {
35
+ "type": "git",
36
+ "url": "https://github.com/weavekit/client.git"
37
+ },
38
+ "scripts": {
39
+ "dev": "node --watch --import tsx src/client.ts",
40
+ "build": "tsc -p tsconfig.build.json",
41
+ "prepublishOnly": "npm run build",
42
+ "typecheck": "tsc --noEmit",
43
+ "prelint": "node scripts/check-memory-sizes.mjs",
44
+ "lint": "eslint .",
45
+ "test": "node --import tsx --test \"tests/**/*.test.ts\""
46
+ },
47
+ "devDependencies": {
48
+ "@types/node": "^22.0.0",
49
+ "eslint": "^9.0.0",
50
+ "tsx": "^4.20.0",
51
+ "typescript": "~5.9.0",
52
+ "typescript-eslint": "^8.0.0"
53
+ },
54
+ "dependencies": {
55
+ "@weave-kit/engine": "^0.1.0"
56
+ }
57
+ }