@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
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export { createClient, ClientError, version, layoutPagePath } from './client.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,107 @@
1
+ import type { LayoutAddress, ObjectLayoutView } from '@weave-kit/engine/layout';
2
+ import type { HttpOptions } from './http.js';
3
+ /**
4
+ * Page layout source accessor (SU-7c). The engine serves the raw layout JSON
5
+ * source and its content version via the path-mirrored API
6
+ * (`/pages/<path>` — e.g. `app.layout` / `<id>.layout` /
7
+ * `<object>/show.layout` / `<object>/list.layout`); interpretation belongs to
8
+ * the frontend (@weave-kit/ui layout engine). GET is Bearer-authenticated;
9
+ * PUT / page lifecycle are admin-gated server-side (403 when the identity's
10
+ * roles miss `rest.adminRoles`). 404 → null; stale `expectVersion` → 409.
11
+ */
12
+ export interface SourceDocument {
13
+ source: string;
14
+ version: string;
15
+ }
16
+ export interface LayoutSourceOptions {
17
+ signal?: AbortSignal;
18
+ }
19
+ export interface LayoutSaveOptions extends LayoutSourceOptions {
20
+ /** optimistic lock — 409 when the current version differs */
21
+ expectVersion?: string;
22
+ /** explicit overwrite: skip the version check */
23
+ force?: boolean;
24
+ }
25
+ export interface LayoutSaveResult {
26
+ ok: true;
27
+ committed: boolean;
28
+ version: string;
29
+ }
30
+ export type PageSummary = {
31
+ kind: 'shell';
32
+ id: 'app';
33
+ path: string;
34
+ } | {
35
+ kind: 'object';
36
+ id: string;
37
+ view: ObjectLayoutView;
38
+ path: string;
39
+ } | {
40
+ kind: 'custom';
41
+ id: string;
42
+ path: string;
43
+ };
44
+ export interface CreatePageOptions {
45
+ /** optional initial layout source (defaults to an empty desktop layout) */
46
+ source?: string;
47
+ signal?: AbortSignal;
48
+ }
49
+ export interface CreatePageResult {
50
+ ok: true;
51
+ id: string;
52
+ path: string;
53
+ }
54
+ export interface RenamePageOptions {
55
+ signal?: AbortSignal;
56
+ }
57
+ export interface RenamePageResult {
58
+ ok: true;
59
+ id: string;
60
+ path: string;
61
+ }
62
+ export interface DeletePageOptions {
63
+ signal?: AbortSignal;
64
+ }
65
+ export interface DeletePageResult {
66
+ ok: true;
67
+ deleted: boolean;
68
+ }
69
+ export interface DesignSavePart {
70
+ source: string;
71
+ expectVersion?: string;
72
+ }
73
+ export interface DesignSaveOptions {
74
+ force?: boolean;
75
+ signal?: AbortSignal;
76
+ }
77
+ export interface DesignSaveResult {
78
+ ok: true;
79
+ committed: boolean;
80
+ }
81
+ /** the `/pages/<path>` segment mirroring the physical file (single source lives in the engine) */
82
+ export declare function layoutPagePath(addr: LayoutAddress): string;
83
+ export interface LayoutsClient {
84
+ /** layout source + content version for a page, or null (404) */
85
+ getSource(addr: LayoutAddress, options?: LayoutSourceOptions): Promise<SourceDocument | null>;
86
+ /** replace a page layout source (admin; strict optimistic lock unless `force`) */
87
+ save(addr: LayoutAddress, source: string, options?: LayoutSaveOptions): Promise<LayoutSaveResult>;
88
+ /** page catalog: shell + object show/list + custom pages */
89
+ list(options?: {
90
+ signal?: AbortSignal;
91
+ }): Promise<PageSummary[]>;
92
+ /** create a custom page (admin) */
93
+ create(id: string, options?: CreatePageOptions): Promise<CreatePageResult>;
94
+ /** rename a custom page (admin; atomically updates shell PageRefs) */
95
+ rename(id: string, newId: string, options?: RenamePageOptions): Promise<RenamePageResult>;
96
+ /** delete a custom page (admin; 409 while referenced from the shell) */
97
+ delete(id: string, options?: DeletePageOptions): Promise<DeletePageResult>;
98
+ /** atomic object design save: show + list + owning schema in one Git commit (admin) */
99
+ saveDesign(options: {
100
+ object: string;
101
+ show?: DesignSavePart;
102
+ list?: DesignSavePart;
103
+ schema?: DesignSavePart;
104
+ } & DesignSaveOptions): Promise<DesignSaveResult>;
105
+ }
106
+ export declare function createLayoutsClient(http: HttpOptions): LayoutsClient;
107
+ //# sourceMappingURL=layouts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layouts.d.ts","sourceRoot":"","sources":["../src/layouts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import { ClientError, request } from './http.js';
2
+ /** the `/pages/<path>` segment mirroring the physical file (single source lives in the engine) */
3
+ export function layoutPagePath(addr) {
4
+ switch (addr.kind) {
5
+ case 'shell':
6
+ return 'app.layout';
7
+ case 'custom':
8
+ return `${addr.id}/layout`;
9
+ case 'object':
10
+ return `${addr.id}/${addr.view}.layout`;
11
+ case 'page-face':
12
+ return `${addr.page}/objects/${addr.object}/${addr.face}.layout`;
13
+ }
14
+ }
15
+ export function createLayoutsClient(http) {
16
+ const pagePath = (addr) => `/pages/${layoutPagePath(addr)}`;
17
+ return {
18
+ async getSource(addr, options = {}) {
19
+ try {
20
+ return await request(http, 'GET', pagePath(addr), { signal: options.signal });
21
+ }
22
+ catch (error) {
23
+ if (error instanceof ClientError && error.status === 404)
24
+ return null;
25
+ throw error;
26
+ }
27
+ },
28
+ save(addr, source, options = {}) {
29
+ const body = { source };
30
+ if (options.expectVersion !== undefined)
31
+ body.expectVersion = options.expectVersion;
32
+ if (options.force !== undefined)
33
+ body.force = options.force;
34
+ return request(http, 'PUT', pagePath(addr), { body, signal: options.signal });
35
+ },
36
+ list(options = {}) {
37
+ return request(http, 'GET', '/pages', { signal: options.signal });
38
+ },
39
+ create(id, options = {}) {
40
+ const body = { id };
41
+ if (options.source !== undefined)
42
+ body.source = options.source;
43
+ return request(http, 'POST', '/pages', { body, signal: options.signal });
44
+ },
45
+ rename(id, newId, options = {}) {
46
+ return request(http, 'PATCH', `/pages/${encodeURIComponent(id)}`, { body: { newId }, signal: options.signal });
47
+ },
48
+ delete(id, options = {}) {
49
+ return request(http, 'DELETE', `/pages/${encodeURIComponent(id)}`, { signal: options.signal });
50
+ },
51
+ saveDesign({ object, show, list, schema, force, signal }) {
52
+ const body = {};
53
+ if (show !== undefined)
54
+ body.show = show;
55
+ if (list !== undefined)
56
+ body.list = list;
57
+ if (schema !== undefined)
58
+ body.schema = schema;
59
+ if (force !== undefined)
60
+ body.force = force;
61
+ return request(http, 'PUT', `/pages/${encodeURIComponent(object)}/design`, { body, signal });
62
+ },
63
+ };
64
+ }
65
+ //# sourceMappingURL=layouts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layouts.js","sourceRoot":"","sources":["../src/layouts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqFjD,kGAAkG;AAClG,MAAM,UAAU,cAAc,CAAC,IAAmB;IAChD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,OAAO;YACV,OAAO,YAAY,CAAC;QACtB,KAAK,QAAQ;YACX,OAAO,GAAG,IAAI,CAAC,EAAE,SAAS,CAAC;QAC7B,KAAK,QAAQ;YACX,OAAO,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,SAAS,CAAC;QAC1C,KAAK,WAAW;YACd,OAAO,GAAG,IAAI,CAAC,IAAI,YAAY,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,SAAS,CAAC;IACrE,CAAC;AACH,CAAC;AAmBD,MAAM,UAAU,mBAAmB,CAAC,IAAiB;IACnD,MAAM,QAAQ,GAAG,CAAC,IAAmB,EAAU,EAAE,CAAC,UAAU,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;IAEnF,OAAO;QACL,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,EAAE;YAChC,IAAI,CAAC;gBACH,OAAO,MAAM,OAAO,CAAiB,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAChG,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,WAAW,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG;oBAAE,OAAO,IAAI,CAAC;gBACtE,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAG,EAAE;YAC7B,MAAM,IAAI,GAA4B,EAAE,MAAM,EAAE,CAAC;YACjD,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS;gBAAE,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;YACpF,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;gBAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YAC5D,OAAO,OAAO,CAAmB,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAClG,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,EAAE;YACf,OAAO,OAAO,CAAgB,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACnF,CAAC;QACD,MAAM,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE;YACrB,MAAM,IAAI,GAA4B,EAAE,EAAE,EAAE,CAAC;YAC7C,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;gBAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAC/D,OAAO,OAAO,CAAmB,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7F,CAAC;QACD,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE;YAC5B,OAAO,OAAO,CAAmB,IAAI,EAAE,OAAO,EAAE,UAAU,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACnI,CAAC;QACD,MAAM,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE;YACrB,OAAO,OAAO,CAAmB,IAAI,EAAE,QAAQ,EAAE,UAAU,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACnH,CAAC;QACD,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;YACtD,MAAM,IAAI,GAA4B,EAAE,CAAC;YACzC,IAAI,IAAI,KAAK,SAAS;gBAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACzC,IAAI,IAAI,KAAK,SAAS;gBAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACzC,IAAI,MAAM,KAAK,SAAS;gBAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YAC/C,IAAI,KAAK,KAAK,SAAS;gBAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YAC5C,OAAO,OAAO,CAAmB,IAAI,EAAE,KAAK,EAAE,UAAU,kBAAkB,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACjH,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { MetadataPermissions, ObjectDescriptor } from '@weave-kit/engine';
2
+ import type { HttpOptions } from './http.js';
3
+ /** `GET /api/permissions` — per-object effective permissions for the identity */
4
+ export interface PermissionsResult {
5
+ objects: Array<{
6
+ name: string;
7
+ label: string;
8
+ permissions: MetadataPermissions;
9
+ }>;
10
+ }
11
+ /** metadata + permissions accessors (M11 frontend contract) */
12
+ export interface MetadataClient {
13
+ /** all objects the identity can read, each with its field schema + permissions */
14
+ list(): Promise<{
15
+ objects: ObjectDescriptor[];
16
+ }>;
17
+ /** one object descriptor (404 unknown / 403 unreadable) */
18
+ get(name: string): Promise<ObjectDescriptor>;
19
+ /** effective permissions per object (Refine accessControl / RA canAccess source) */
20
+ permissions(): Promise<PermissionsResult>;
21
+ }
22
+ export declare function createMetadataClient(http: HttpOptions): MetadataClient;
23
+ //# sourceMappingURL=metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAG7C,iFAAiF;AACjF,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,mBAAmB,CAAA;KAAE,CAAC,CAAC;CACnF;AAED,+DAA+D;AAC/D,MAAM,WAAW,cAAc;IAC7B,kFAAkF;IAClF,IAAI,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,gBAAgB,EAAE,CAAA;KAAE,CAAC,CAAC;IACjD,2DAA2D;IAC3D,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC7C,oFAAoF;IACpF,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC3C;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,GAAG,cAAc,CAYtE"}
@@ -0,0 +1,15 @@
1
+ import { request } from './http.js';
2
+ export function createMetadataClient(http) {
3
+ return {
4
+ list() {
5
+ return request(http, 'GET', '/metadata');
6
+ },
7
+ get(name) {
8
+ return request(http, 'GET', '/metadata', { query: { object: name } });
9
+ },
10
+ permissions() {
11
+ return request(http, 'GET', '/permissions');
12
+ },
13
+ };
14
+ }
15
+ //# sourceMappingURL=metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC,MAAM,UAAU,oBAAoB,CAAC,IAAiB;IACpD,OAAO;QACL,IAAI;YACF,OAAO,OAAO,CAAkC,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;QAC5E,CAAC;QACD,GAAG,CAAC,IAAY;YACd,OAAO,OAAO,CAAmB,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1F,CAAC;QACD,WAAW;YACT,OAAO,OAAO,CAAoB,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;QACjE,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { RestResult } from '@weave-kit/engine';
2
+ import type { HttpOptions } from './http.js';
3
+ import type { FindOneParams, FindParams } from './types.js';
4
+ /** typed CRUD handle for one object collection, parameterized by its generated type */
5
+ export interface ObjectsClient<T = Record<string, unknown>> {
6
+ find(params?: FindParams, signal?: AbortSignal): Promise<RestResult<T>>;
7
+ findOne(id: string, params?: FindOneParams, signal?: AbortSignal): Promise<T | null>;
8
+ create(data: Partial<T>, signal?: AbortSignal): Promise<T>;
9
+ update(id: string, changes: Partial<T>, signal?: AbortSignal): Promise<T>;
10
+ delete(id: string, signal?: AbortSignal): Promise<void>;
11
+ /** atomic batch update (single transaction): every id updated or none */
12
+ updateMany(ids: string[], changes: Partial<T>, signal?: AbortSignal): Promise<{
13
+ updated: string[];
14
+ }>;
15
+ /** atomic batch delete (single transaction): every id deleted or none */
16
+ deleteMany(ids: string[], signal?: AbortSignal): Promise<{
17
+ deleted: string[];
18
+ }>;
19
+ }
20
+ export declare function createObjectsClient<T = Record<string, unknown>>(http: HttpOptions, name: string): ObjectsClient<T>;
21
+ //# sourceMappingURL=objects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"objects.d.ts","sourceRoot":"","sources":["../src/objects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE5D,uFAAuF;AACvF,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACxD,IAAI,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACrF,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3D,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1E,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,yEAAyE;IACzE,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IACrG,yEAAyE;IACzE,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;CACjF;AAED,wBAAgB,mBAAmB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7D,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,MAAM,GACX,aAAa,CAAC,CAAC,CAAC,CA4ClB"}
@@ -0,0 +1,43 @@
1
+ import { ClientError, request } from './http.js';
2
+ import { buildFindQuery } from './types.js';
3
+ export function createObjectsClient(http, name) {
4
+ const path = `/objects/${encodeURIComponent(name)}`;
5
+ return {
6
+ find(params, signal) {
7
+ return request(http, 'GET', path, {
8
+ query: params === undefined ? undefined : buildFindQuery(params),
9
+ signal,
10
+ });
11
+ },
12
+ async findOne(id, params, signal) {
13
+ const query = params?.fields === undefined ? undefined : { fields: params.fields.join(',') };
14
+ try {
15
+ return await request(http, 'GET', `${path}/${encodeURIComponent(id)}`, { query, signal });
16
+ }
17
+ catch (error) {
18
+ if (error instanceof ClientError && error.status === 404)
19
+ return null;
20
+ throw error;
21
+ }
22
+ },
23
+ create(data, signal) {
24
+ return request(http, 'POST', path, { body: data, signal });
25
+ },
26
+ update(id, changes, signal) {
27
+ return request(http, 'PATCH', `${path}/${encodeURIComponent(id)}`, {
28
+ body: changes,
29
+ signal,
30
+ });
31
+ },
32
+ delete(id, signal) {
33
+ return request(http, 'DELETE', `${path}/${encodeURIComponent(id)}`, { signal });
34
+ },
35
+ updateMany(ids, changes, signal) {
36
+ return request(http, 'PATCH', path, { body: { ids, changes }, signal });
37
+ },
38
+ deleteMany(ids, signal) {
39
+ return request(http, 'DELETE', path, { body: { ids }, signal });
40
+ },
41
+ };
42
+ }
43
+ //# sourceMappingURL=objects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"objects.js","sourceRoot":"","sources":["../src/objects.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAgB5C,MAAM,UAAU,mBAAmB,CACjC,IAAiB,EACjB,IAAY;IAEZ,MAAM,IAAI,GAAG,YAAY,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;IAEpD,OAAO;QACL,IAAI,CAAC,MAAmB,EAAE,MAAoB;YAC5C,OAAO,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;gBAChC,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC;gBAChE,MAAM;aACP,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,EAAU,EAAE,MAAsB,EAAE,MAAoB;YACpE,MAAM,KAAK,GAAG,MAAM,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7F,IAAI,CAAC;gBACH,OAAO,MAAM,OAAO,CAAI,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,IAAI,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAC/F,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,WAAW,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG;oBAAE,OAAO,IAAI,CAAC;gBACtE,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAED,MAAM,CAAC,IAAgB,EAAE,MAAoB;YAC3C,OAAO,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAA+B,EAAE,MAAM,EAAE,CAAC,CAAC;QACxF,CAAC;QAED,MAAM,CAAC,EAAU,EAAE,OAAmB,EAAE,MAAoB;YAC1D,OAAO,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,IAAI,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE;gBACjE,IAAI,EAAE,OAAkC;gBACxC,MAAM;aACP,CAAC,CAAC;QACL,CAAC;QAED,MAAM,CAAC,EAAU,EAAE,MAAoB;YACrC,OAAO,OAAO,CAAO,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,IAAI,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QACxF,CAAC;QAED,UAAU,CAAC,GAAa,EAAE,OAAmB,EAAE,MAAoB;YACjE,OAAO,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,UAAU,CAAC,GAAa,EAAE,MAAoB;YAC5C,OAAO,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAClE,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,33 @@
1
+ import type { HttpOptions } from './http.js';
2
+ /**
3
+ * Raw object schema source accessor (SU-7c). The engine serves/accepts
4
+ * `objects/<name>/schema.json` source + content version (admin-gated). PUT runs
5
+ * the loader's validation (parse + full cross-object graph) and never applies
6
+ * DDL — structural changes take effect on the next `weave dev`/`migrate`.
7
+ */
8
+ export interface SchemaSourceDocument {
9
+ source: string;
10
+ version: string;
11
+ }
12
+ export interface SchemaSourceOptions {
13
+ signal?: AbortSignal;
14
+ }
15
+ export interface SchemaSaveOptions extends SchemaSourceOptions {
16
+ /** optimistic lock — 409 when the current version differs */
17
+ expectVersion?: string;
18
+ /** explicit overwrite: skip the version check */
19
+ force?: boolean;
20
+ }
21
+ export interface SchemaSaveResult {
22
+ ok: true;
23
+ committed: boolean;
24
+ version: string;
25
+ }
26
+ export interface SchemaClient {
27
+ /** raw schema source + version for an object, or null (404) */
28
+ getSource(name: string, options?: SchemaSourceOptions): Promise<SchemaSourceDocument | null>;
29
+ /** replace an object's schema source (admin; strict optimistic lock unless `force`) */
30
+ save(name: string, source: string, options?: SchemaSaveOptions): Promise<SchemaSaveResult>;
31
+ }
32
+ export declare function createSchemaClient(http: HttpOptions): SchemaClient;
33
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAG7C;;;;;GAKG;AAEH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,iBAAkB,SAAQ,mBAAmB;IAC5D,6DAA6D;IAC7D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iDAAiD;IACjD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,IAAI,CAAC;IACT,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,+DAA+D;IAC/D,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAC7F,uFAAuF;IACvF,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC5F;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,GAAG,YAAY,CA2BlE"}
package/dist/schema.js ADDED
@@ -0,0 +1,24 @@
1
+ import { ClientError, request } from './http.js';
2
+ export function createSchemaClient(http) {
3
+ return {
4
+ async getSource(name, options = {}) {
5
+ try {
6
+ return await request(http, 'GET', `/objects/${encodeURIComponent(name)}/schema`, { signal: options.signal });
7
+ }
8
+ catch (error) {
9
+ if (error instanceof ClientError && error.status === 404)
10
+ return null;
11
+ throw error;
12
+ }
13
+ },
14
+ save(name, source, options = {}) {
15
+ const body = { source };
16
+ if (options.expectVersion !== undefined)
17
+ body.expectVersion = options.expectVersion;
18
+ if (options.force !== undefined)
19
+ body.force = options.force;
20
+ return request(http, 'PUT', `/objects/${encodeURIComponent(name)}/schema`, { body, signal: options.signal });
21
+ },
22
+ };
23
+ }
24
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsCjD,MAAM,UAAU,kBAAkB,CAAC,IAAiB;IAClD,OAAO;QACL,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,EAAE;YAChC,IAAI,CAAC;gBACH,OAAO,MAAM,OAAO,CAClB,IAAI,EACJ,KAAK,EACL,YAAY,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAC7C,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAC3B,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,WAAW,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG;oBAAE,OAAO,IAAI,CAAC;gBACtE,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAG,EAAE;YAC7B,MAAM,IAAI,GAA4B,EAAE,MAAM,EAAE,CAAC;YACjD,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS;gBAAE,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;YACpF,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;gBAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YAC5D,OAAO,OAAO,CACZ,IAAI,EACJ,KAAK,EACL,YAAY,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAC7C,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CACjC,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,44 @@
1
+ import type { ScriptSourceKind } from "@weave-kit/engine";
2
+ import type { HttpOptions } from "./http.js";
3
+ export interface ScriptSourceDocument {
4
+ source: string;
5
+ version: string;
6
+ }
7
+ export interface ScriptSourceOptions {
8
+ signal?: AbortSignal;
9
+ }
10
+ export interface ScriptSaveOptions extends ScriptSourceOptions {
11
+ /** Reserved for optimistic locking; SU-7b servers accept but do not enforce it. */
12
+ expectVersion?: string;
13
+ }
14
+ export interface ScriptSaveResult {
15
+ ok: true;
16
+ committed: boolean;
17
+ version: string;
18
+ warnings?: string[];
19
+ }
20
+ /** Page-scoped client script accessor (千页千面): `show.client`/`list.client`.
21
+ * Page-level (`/pages/<path>/scripts/<kind>`) overrides the object script for
22
+ * that page; block-level (`/pages/<path>/blocks/<ui_id>/scripts/<kind>`) scopes
23
+ * a script to one `list` block instance. */
24
+ export interface PageScriptsClient {
25
+ /** read a page-level or block-level client script (404 → null) */
26
+ getSource(path: string, kind: string, options?: ScriptSourceOptions): Promise<ScriptSourceDocument | null>;
27
+ /** write/replace a page-scoped client script (admin) */
28
+ save(path: string, kind: string, source: string, options?: ScriptSaveOptions): Promise<ScriptSaveResult>;
29
+ /** delete a page-scoped client script → falls back to the object script (admin) */
30
+ delete(path: string, kind: string, options?: ScriptSourceOptions): Promise<{
31
+ ok: true;
32
+ deleted: boolean;
33
+ }>;
34
+ }
35
+ export interface ScriptsClient {
36
+ /** source for server/show/list scripts, including its content version */
37
+ getSource(name: string, kind: ScriptSourceKind, options?: ScriptSourceOptions): Promise<ScriptSourceDocument | null>;
38
+ /** replace one script source and commit it to the engine project's Git repository */
39
+ save(name: string, kind: ScriptSourceKind, source: string, options?: ScriptSaveOptions): Promise<ScriptSaveResult>;
40
+ /** page-scoped client scripts (`/pages/<path>/...`) */
41
+ page: PageScriptsClient;
42
+ }
43
+ export declare function createScriptsClient(http: HttpOptions): ScriptsClient;
44
+ //# sourceMappingURL=scripts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts.d.ts","sourceRoot":"","sources":["../src/scripts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAG7C,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,iBAAkB,SAAQ,mBAAmB;IAC5D,mFAAmF;IACnF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,IAAI,CAAC;IACT,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;6CAG6C;AAC7C,MAAM,WAAW,iBAAiB;IAChC,kEAAkE;IAClE,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAC3G,wDAAwD;IACxD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACzG,mFAAmF;IACnF,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAC5G;AAED,MAAM,WAAW,aAAa;IAC5B,yEAAyE;IACzE,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IACrH,qFAAqF;IACrF,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACnH,uDAAuD;IACvD,IAAI,EAAE,iBAAiB,CAAC;CACzB;AAOD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,GAAG,aAAa,CA2CpE"}
@@ -0,0 +1,41 @@
1
+ import { ClientError, request } from "./http.js";
2
+ /** build a `/pages/<path>/<scope>/scripts/<kind>` URL fragment for a page-scoped script */
3
+ function pageScriptUrl(path, kind) {
4
+ return `/pages/${path}/scripts/${encodeURIComponent(kind)}`;
5
+ }
6
+ export function createScriptsClient(http) {
7
+ return {
8
+ getSource: async (name, kind, options = {}) => {
9
+ try {
10
+ return await request(http, "GET", `/objects/${encodeURIComponent(name)}/scripts/${encodeURIComponent(kind)}`, { signal: options.signal });
11
+ }
12
+ catch (error) {
13
+ if (error instanceof ClientError && error.status === 404)
14
+ return null;
15
+ throw error;
16
+ }
17
+ },
18
+ save: (name, kind, source, options = {}) => request(http, "PUT", `/objects/${encodeURIComponent(name)}/scripts/${encodeURIComponent(kind)}`, {
19
+ body: options.expectVersion === undefined ? { source } : { source, expectVersion: options.expectVersion },
20
+ signal: options.signal,
21
+ }),
22
+ page: {
23
+ getSource: async (path, kind, options = {}) => {
24
+ try {
25
+ return await request(http, "GET", pageScriptUrl(path, kind), { signal: options.signal });
26
+ }
27
+ catch (error) {
28
+ if (error instanceof ClientError && error.status === 404)
29
+ return null;
30
+ throw error;
31
+ }
32
+ },
33
+ save: (path, kind, source, options = {}) => request(http, "PUT", pageScriptUrl(path, kind), {
34
+ body: options.expectVersion === undefined ? { source } : { source, expectVersion: options.expectVersion },
35
+ signal: options.signal,
36
+ }),
37
+ delete: async (path, kind, options = {}) => request(http, "DELETE", pageScriptUrl(path, kind), { signal: options.signal }),
38
+ },
39
+ };
40
+ }
41
+ //# sourceMappingURL=scripts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts.js","sourceRoot":"","sources":["../src/scripts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6CjD,2FAA2F;AAC3F,SAAS,aAAa,CAAC,IAAY,EAAE,IAAY;IAC/C,OAAO,UAAU,IAAI,YAAY,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAiB;IACnD,OAAO;QACL,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE;YAC5C,IAAI,CAAC;gBACH,OAAO,MAAM,OAAO,CAClB,IAAI,EACJ,KAAK,EACL,YAAY,kBAAkB,CAAC,IAAI,CAAC,YAAY,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAC1E,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAC3B,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,WAAW,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG;oBAAE,OAAO,IAAI,CAAC;gBACtE,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QACD,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE,CACzC,OAAO,CACL,IAAI,EACJ,KAAK,EACL,YAAY,kBAAkB,CAAC,IAAI,CAAC,YAAY,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAC1E;YACE,IAAI,EAAE,OAAO,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE;YACzG,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CACF;QACH,IAAI,EAAE;YACJ,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE;gBAC5C,IAAI,CAAC;oBACH,OAAO,MAAM,OAAO,CAAuB,IAAI,EAAE,KAAK,EAAE,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;gBACjH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,KAAK,YAAY,WAAW,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG;wBAAE,OAAO,IAAI,CAAC;oBACtE,MAAM,KAAK,CAAC;gBACd,CAAC;YACH,CAAC;YACD,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE,CACzC,OAAO,CAAmB,IAAI,EAAE,KAAK,EAAE,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;gBAChE,IAAI,EAAE,OAAO,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE;gBACzG,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB,CAAC;YACJ,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE,CACzC,OAAO,CAAiC,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;SACjH;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,32 @@
1
+ import type { HttpOptions } from './http.js';
2
+ /**
3
+ * Live subscription (M12) — fetch-based SSE client. `fetch` can set the
4
+ * Authorization header (native EventSource cannot), so the API key travels in
5
+ * the Bearer header, never in the query string. Auto-reconnects with backoff
6
+ * and sends `Last-Event-ID` so the engine replays events missed while
7
+ * disconnected. A `schema.changed` event (with `payload.replayGap`) is emitted
8
+ * when the engine can no longer replay (process restart / ring overflow) —
9
+ * refetch metadata/permissions via REST.
10
+ */
11
+ /** one live event (wire shape: `{ seq?, ts?, type, payload }`) */
12
+ export interface LiveEvent {
13
+ seq?: number;
14
+ ts?: string;
15
+ type: string;
16
+ payload: Record<string, unknown>;
17
+ }
18
+ export interface SubscribeOptions {
19
+ onEvent(event: LiveEvent): void;
20
+ onOpen?(): void;
21
+ onError?(error: Error): void;
22
+ /** reconnect backoff base ms; doubles per retry (default 1000) */
23
+ backoffMs?: number;
24
+ /** reconnect backoff cap ms (default 15000) */
25
+ maxBackoffMs?: number;
26
+ }
27
+ export interface Subscription {
28
+ close(): void;
29
+ }
30
+ /** build a `client.subscribe` function bound to one client's transport */
31
+ export declare function createSubscriber(http: HttpOptions): (options: SubscribeOptions) => Subscription;
32
+ //# sourceMappingURL=subscribe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscribe.d.ts","sourceRoot":"","sources":["../src/subscribe.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C;;;;;;;;GAQG;AAEH,kEAAkE;AAClE,MAAM,WAAW,SAAS;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IAChC,MAAM,CAAC,IAAI,IAAI,CAAC;IAChB,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC7B,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+CAA+C;IAC/C,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,IAAI,IAAI,CAAC;CACf;AAkCD,0EAA0E;AAC1E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,IACtB,SAAS,gBAAgB,KAAG,YAAY,CAiFnE"}