birrstack-core 0.0.0-stage → 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 (110) hide show
  1. package/README.md +7 -2
  2. package/dist/async/index.d.ts +16 -0
  3. package/dist/async/index.d.ts.map +1 -0
  4. package/dist/async/index.js +82 -0
  5. package/dist/async/index.js.map +1 -0
  6. package/dist/component/index.d.ts +33 -0
  7. package/dist/component/index.d.ts.map +1 -0
  8. package/dist/component/index.js +135 -0
  9. package/dist/component/index.js.map +1 -0
  10. package/dist/data/index.d.ts +142 -0
  11. package/dist/data/index.d.ts.map +1 -0
  12. package/dist/data/index.js +768 -0
  13. package/dist/data/index.js.map +1 -0
  14. package/dist/debug/index.d.ts +14 -0
  15. package/dist/debug/index.d.ts.map +1 -0
  16. package/dist/debug/index.js +39 -0
  17. package/dist/debug/index.js.map +1 -0
  18. package/dist/dom/index.d.ts +15 -0
  19. package/dist/dom/index.d.ts.map +1 -0
  20. package/dist/dom/index.js +404 -0
  21. package/dist/dom/index.js.map +1 -0
  22. package/dist/error/index.d.ts +32 -0
  23. package/dist/error/index.d.ts.map +1 -0
  24. package/dist/error/index.js +228 -0
  25. package/dist/error/index.js.map +1 -0
  26. package/dist/fetch/index.d.ts +19 -0
  27. package/dist/fetch/index.d.ts.map +1 -0
  28. package/dist/fetch/index.js +90 -0
  29. package/dist/fetch/index.js.map +1 -0
  30. package/dist/forms/index.d.ts +24 -0
  31. package/dist/forms/index.d.ts.map +1 -0
  32. package/dist/forms/index.js +95 -0
  33. package/dist/forms/index.js.map +1 -0
  34. package/dist/forms/validators.d.ts +13 -0
  35. package/dist/forms/validators.d.ts.map +1 -0
  36. package/dist/forms/validators.js +99 -0
  37. package/dist/forms/validators.js.map +1 -0
  38. package/dist/hooks/index.d.ts +33 -0
  39. package/dist/hooks/index.d.ts.map +1 -0
  40. package/dist/hooks/index.js +125 -0
  41. package/dist/hooks/index.js.map +1 -0
  42. package/dist/i18n/index.d.ts +22 -0
  43. package/dist/i18n/index.d.ts.map +1 -0
  44. package/dist/i18n/index.js +98 -0
  45. package/dist/i18n/index.js.map +1 -0
  46. package/dist/icons/index.d.ts +10 -0
  47. package/dist/icons/index.d.ts.map +1 -0
  48. package/dist/icons/index.js +97 -0
  49. package/dist/icons/index.js.map +1 -0
  50. package/dist/index.d.ts +24 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +24 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/lazy/index.d.ts +16 -0
  55. package/dist/lazy/index.d.ts.map +1 -0
  56. package/dist/lazy/index.js +79 -0
  57. package/dist/lazy/index.js.map +1 -0
  58. package/dist/loader/index.d.ts +13 -0
  59. package/dist/loader/index.d.ts.map +1 -0
  60. package/dist/loader/index.js +101 -0
  61. package/dist/loader/index.js.map +1 -0
  62. package/dist/motion/index.d.ts +17 -0
  63. package/dist/motion/index.d.ts.map +1 -0
  64. package/dist/motion/index.js +91 -0
  65. package/dist/motion/index.js.map +1 -0
  66. package/dist/persist/encrypted.d.ts +35 -0
  67. package/dist/persist/encrypted.d.ts.map +1 -0
  68. package/dist/persist/encrypted.js +99 -0
  69. package/dist/persist/encrypted.js.map +1 -0
  70. package/dist/persist/index.d.ts +21 -0
  71. package/dist/persist/index.d.ts.map +1 -0
  72. package/dist/persist/index.js +76 -0
  73. package/dist/persist/index.js.map +1 -0
  74. package/dist/router/index.d.ts +61 -0
  75. package/dist/router/index.d.ts.map +1 -0
  76. package/dist/router/index.js +377 -0
  77. package/dist/router/index.js.map +1 -0
  78. package/dist/security/crypto.d.ts +11 -0
  79. package/dist/security/crypto.d.ts.map +1 -0
  80. package/dist/security/crypto.js +85 -0
  81. package/dist/security/crypto.js.map +1 -0
  82. package/dist/security/index.d.ts +66 -0
  83. package/dist/security/index.d.ts.map +1 -0
  84. package/dist/security/index.js +312 -0
  85. package/dist/security/index.js.map +1 -0
  86. package/dist/signals/index.d.ts +65 -0
  87. package/dist/signals/index.d.ts.map +1 -0
  88. package/dist/signals/index.js +403 -0
  89. package/dist/signals/index.js.map +1 -0
  90. package/dist/ssr/head.d.ts +24 -0
  91. package/dist/ssr/head.d.ts.map +1 -0
  92. package/dist/ssr/head.js +105 -0
  93. package/dist/ssr/head.js.map +1 -0
  94. package/dist/ssr/index.d.ts +34 -0
  95. package/dist/ssr/index.d.ts.map +1 -0
  96. package/dist/ssr/index.js +227 -0
  97. package/dist/ssr/index.js.map +1 -0
  98. package/dist/ssr/server-dom.d.ts +125 -0
  99. package/dist/ssr/server-dom.d.ts.map +1 -0
  100. package/dist/ssr/server-dom.js +365 -0
  101. package/dist/ssr/server-dom.js.map +1 -0
  102. package/dist/store/index.d.ts +19 -0
  103. package/dist/store/index.d.ts.map +1 -0
  104. package/dist/store/index.js +62 -0
  105. package/dist/store/index.js.map +1 -0
  106. package/dist/utils/index.d.ts +11 -0
  107. package/dist/utils/index.d.ts.map +1 -0
  108. package/dist/utils/index.js +65 -0
  109. package/dist/utils/index.js.map +1 -0
  110. package/package.json +51 -3
package/README.md CHANGED
@@ -1,3 +1,8 @@
1
- # Temporary Holding Version
1
+ # birrstack-core
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ > BismiLLAH Ar-Rahman Ar-Raheem. Ash-hadu an laa ilaaha illa-Llah wahdaHu laa sharikalah, wa ash-hadu anna Muhammadan 'Abduhu wa Rasooluh. Laa hawla wa laa quwwata illaa biLLAH.
4
+
5
+ Part of **BirrStack** — the zero-compute fullstack framework: enterprise platforms on Cloudflare Pages with zero CF Workers, zero external compute (ADR-002, protocol §5.5C), all app logic on the client device, all authority in the BaaS data plane.
6
+
7
+ - Docs: https://github.com/ridwanullahh/BirrStack#readme
8
+ - License: MIT
@@ -0,0 +1,16 @@
1
+ import { type Signal } from '../signals/index.js';
2
+ export interface QueryOptions {
3
+ ttl?: number;
4
+ immediate?: boolean;
5
+ retries?: number;
6
+ }
7
+ export interface Query<T> {
8
+ readonly data: Signal<T | undefined>;
9
+ readonly loading: Signal<boolean>;
10
+ readonly error: Signal<Error | undefined>;
11
+ refetch(force?: boolean): Promise<void>;
12
+ mutate(next: T): () => void;
13
+ invalidate(): void;
14
+ }
15
+ export declare function query<T>(fetcher: () => Promise<T>, options?: QueryOptions): Query<T>;
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/async/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAAU,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,WAAW,YAAY;IAE3B,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,KAAK,CAAC,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;IAE1C,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM,IAAI,CAAC;IAE5B,UAAU,IAAI,IAAI,CAAC;CACpB;AAMD,wBAAgB,KAAK,CAAC,CAAC,EACrB,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,OAAO,GAAE,YAAiB,GACzB,KAAK,CAAC,CAAC,CAAC,CA8EV"}
@@ -0,0 +1,82 @@
1
+ import { signal } from '../signals/index.js';
2
+ export function query(fetcher, options = {}) {
3
+ const ttl = options.ttl ?? 30_000;
4
+ const immediate = options.immediate ?? true;
5
+ const retries = options.retries ?? 0;
6
+ const data = signal(undefined);
7
+ const loading = signal(false);
8
+ const error = signal(undefined);
9
+ let lastFetchedAt = 0;
10
+ let inflight = null;
11
+ let runCount = 0;
12
+ async function run() {
13
+ if (inflight)
14
+ return inflight.promise;
15
+ const currentRun = ++runCount;
16
+ loading.value = true;
17
+ error.value = undefined;
18
+ const execute = async () => {
19
+ let attempt = 0;
20
+ for (;;) {
21
+ try {
22
+ const result = await fetcher();
23
+ if (currentRun !== runCount)
24
+ return;
25
+ data.value = result;
26
+ lastFetchedAt = Date.now();
27
+ error.value = undefined;
28
+ return;
29
+ }
30
+ catch (err) {
31
+ if (attempt < retries) {
32
+ attempt++;
33
+ continue;
34
+ }
35
+ if (currentRun !== runCount)
36
+ return;
37
+ error.value = err instanceof Error ? err : new Error(String(err));
38
+ return;
39
+ }
40
+ finally {
41
+ if (currentRun === runCount)
42
+ loading.value = false;
43
+ }
44
+ }
45
+ };
46
+ const promise = execute();
47
+ inflight = { promise };
48
+ try {
49
+ await promise;
50
+ }
51
+ finally {
52
+ if (inflight?.promise === promise)
53
+ inflight = null;
54
+ }
55
+ }
56
+ if (immediate) {
57
+ void run();
58
+ }
59
+ return {
60
+ data,
61
+ loading,
62
+ error,
63
+ async refetch(force = false) {
64
+ if (!force && Date.now() - lastFetchedAt < ttl && lastFetchedAt > 0) {
65
+ return;
66
+ }
67
+ return run();
68
+ },
69
+ mutate(next) {
70
+ const previous = data.value;
71
+ data.value = next;
72
+ lastFetchedAt = Date.now();
73
+ return () => {
74
+ data.value = previous;
75
+ };
76
+ },
77
+ invalidate() {
78
+ lastFetchedAt = 0;
79
+ },
80
+ };
81
+ }
82
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/async/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ export type BirrProps = Record<string, unknown>;
2
+ export type Slot = (parent: Node) => void;
3
+ export interface ComponentContext {
4
+ host: HTMLElement;
5
+ props: BirrProps;
6
+ slots: Record<string, Slot>;
7
+ onUnmount(fn: () => void): void;
8
+ emit(event: string, ...args: unknown[]): void;
9
+ }
10
+ export interface ComponentDefinition {
11
+ name?: string;
12
+ props?: Record<string, {
13
+ type?: unknown;
14
+ default?: unknown;
15
+ required?: boolean;
16
+ }>;
17
+ setup(ctx: ComponentContext): Record<string, unknown>;
18
+ render(state: Record<string, unknown>, ctx: ComponentContext): Node;
19
+ }
20
+ export interface ComponentInstance {
21
+ root: Node;
22
+ unmount(): void;
23
+ }
24
+ export interface MountOptions {
25
+ hydrate?: boolean;
26
+ }
27
+ export declare function mount(definition: ComponentDefinition, host: HTMLElement, props?: BirrProps, slots?: Record<string, Slot>, options?: MountOptions): ComponentInstance;
28
+ export declare function defineComponent(def: ComponentDefinition): ComponentDefinition;
29
+ export declare function mountChild(host: HTMLElement, definition: ComponentDefinition, props?: BirrProps): ComponentInstance;
30
+ export declare function watch<T>(source: () => T, callback: (value: T, oldValue: T | undefined) => void): () => void;
31
+ export declare function onMount(ctx: ComponentContext, fn: () => void | (() => void)): void;
32
+ export declare function onUnmount(ctx: ComponentContext, fn: () => void): void;
33
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/component/index.ts"],"names":[],"mappings":"AAcA,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAGhD,MAAM,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,KAAK,IAAI,CAAC;AAG1C,MAAM,WAAW,gBAAgB;IAE/B,IAAI,EAAE,WAAW,CAAC;IAElB,KAAK,EAAE,SAAS,CAAC;IAEjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE5B,SAAS,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAEhC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CAC/C;AAGD,MAAM,WAAW,mBAAmB;IAElC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAKlF,KAAK,CAAC,GAAG,EAAE,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAKtD,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACrE;AAGD,MAAM,WAAW,iBAAiB;IAEhC,IAAI,EAAE,IAAI,CAAC;IAEX,OAAO,IAAI,IAAI,CAAC;CACjB;AAGD,MAAM,WAAW,YAAY;IAO3B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAWD,wBAAgB,KAAK,CACnB,UAAU,EAAE,mBAAmB,EAC/B,IAAI,EAAE,WAAW,EACjB,KAAK,GAAE,SAAc,EACrB,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAM,EAChC,OAAO,GAAE,YAAiB,GACzB,iBAAiB,CAiFnB;AAOD,wBAAgB,eAAe,CAAC,GAAG,EAAE,mBAAmB,GAAG,mBAAmB,CAE7E;AAYD,wBAAgB,UAAU,CACxB,IAAI,EAAE,WAAW,EACjB,UAAU,EAAE,mBAAmB,EAC/B,KAAK,GAAE,SAAc,GACpB,iBAAiB,CAEnB;AAQD,wBAAgB,KAAK,CAAC,CAAC,EACrB,MAAM,EAAE,MAAM,CAAC,EACf,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,SAAS,KAAK,IAAI,GACpD,MAAM,IAAI,CAUZ;AAkBD,wBAAgB,OAAO,CAAC,GAAG,EAAE,gBAAgB,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAgDlF;AAOD,wBAAgB,SAAS,CAAC,GAAG,EAAE,gBAAgB,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAErE"}
@@ -0,0 +1,135 @@
1
+ import { effect, effectScope } from '../signals/index.js';
2
+ import { disposeNode } from '../dom/index.js';
3
+ export function mount(definition, host, props = {}, slots = {}, options = {}) {
4
+ const unmountCallbacks = [];
5
+ let unmounted = false;
6
+ const scope = effectScope();
7
+ const ctx = {
8
+ host,
9
+ props,
10
+ slots,
11
+ onUnmount(fn) {
12
+ unmountCallbacks.push(fn);
13
+ },
14
+ emit(event, ...args) {
15
+ const handler = props[`on${event.charAt(0).toUpperCase()}${event.slice(1)}`];
16
+ if (typeof handler === 'function') {
17
+ handler(...args);
18
+ }
19
+ },
20
+ };
21
+ if (definition.props) {
22
+ for (const [key, spec] of Object.entries(definition.props)) {
23
+ if (!(key in props)) {
24
+ if (spec.required) {
25
+ throw new Error(`BirrStack: missing required prop "${key}" on component "${definition.name ?? '<anonymous>'}"`);
26
+ }
27
+ if (spec.default !== undefined) {
28
+ props[key] = typeof spec.default === 'function' ? spec.default() : spec.default;
29
+ }
30
+ }
31
+ }
32
+ }
33
+ let state;
34
+ let root;
35
+ try {
36
+ scope.run(() => {
37
+ state = definition.setup(ctx);
38
+ root = definition.render(state, ctx);
39
+ });
40
+ }
41
+ catch (err) {
42
+ scope.dispose();
43
+ throw err;
44
+ }
45
+ if (options.hydrate && host.childNodes.length > 0) {
46
+ while (host.firstChild)
47
+ host.removeChild(host.firstChild);
48
+ }
49
+ host.appendChild(root);
50
+ return {
51
+ root,
52
+ unmount() {
53
+ if (unmounted)
54
+ return;
55
+ unmounted = true;
56
+ for (const cb of unmountCallbacks) {
57
+ try {
58
+ cb();
59
+ }
60
+ catch (err) {
61
+ console.error('BirrStack: error during unmount callback', err);
62
+ }
63
+ }
64
+ scope.dispose();
65
+ disposeNode(root);
66
+ if (root.parentNode === host) {
67
+ host.removeChild(root);
68
+ }
69
+ },
70
+ };
71
+ }
72
+ export function defineComponent(def) {
73
+ return def;
74
+ }
75
+ export function mountChild(host, definition, props = {}) {
76
+ return mount(definition, host, props, {}, {});
77
+ }
78
+ export function watch(source, callback) {
79
+ let oldValue = undefined;
80
+ const dispose = effect(() => {
81
+ const value = source();
82
+ if (!Object.is(value, oldValue)) {
83
+ callback(value, oldValue);
84
+ oldValue = value;
85
+ }
86
+ });
87
+ return dispose;
88
+ }
89
+ export function onMount(ctx, fn) {
90
+ let fired = false;
91
+ let cancelled = false;
92
+ let observer = null;
93
+ const detach = () => {
94
+ if (observer !== null) {
95
+ observer.disconnect();
96
+ observer = null;
97
+ }
98
+ };
99
+ const invoke = () => {
100
+ if (fired || cancelled)
101
+ return;
102
+ fired = true;
103
+ detach();
104
+ const cleanup = fn();
105
+ if (typeof cleanup === 'function') {
106
+ ctx.onUnmount(cleanup);
107
+ }
108
+ };
109
+ ctx.onUnmount(() => {
110
+ cancelled = true;
111
+ detach();
112
+ });
113
+ queueMicrotask(() => {
114
+ if (fired || cancelled)
115
+ return;
116
+ if (ctx.host.isConnected) {
117
+ invoke();
118
+ return;
119
+ }
120
+ const doc = ctx.host.ownerDocument ??
121
+ globalThis.document ??
122
+ null;
123
+ if (doc !== null && typeof MutationObserver === 'function') {
124
+ observer = new MutationObserver(() => {
125
+ if (ctx.host.isConnected)
126
+ invoke();
127
+ });
128
+ observer.observe(doc.documentElement ?? doc, { childList: true, subtree: true });
129
+ }
130
+ });
131
+ }
132
+ export function onUnmount(ctx, fn) {
133
+ ctx.onUnmount(fn);
134
+ }
135
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/component/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAoB,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAoE9C,MAAM,UAAU,KAAK,CACnB,UAA+B,EAC/B,IAAiB,EACjB,QAAmB,EAAE,EACrB,QAA8B,EAAE,EAChC,UAAwB,EAAE;IAE1B,MAAM,gBAAgB,GAAmB,EAAE,CAAC;IAC5C,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,MAAM,KAAK,GAAgB,WAAW,EAAE,CAAC;IAEzC,MAAM,GAAG,GAAqB;QAC5B,IAAI;QACJ,KAAK;QACL,KAAK;QACL,SAAS,CAAC,EAAc;YACtB,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,KAAa,EAAE,GAAG,IAAe;YACpC,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC7E,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;gBACjC,OAAqC,CAAC,GAAG,IAAI,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;KACF,CAAC;IAGF,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3D,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC;gBACpB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,MAAM,IAAI,KAAK,CAAC,qCAAqC,GAAG,mBAAmB,UAAU,CAAC,IAAI,IAAI,aAAa,GAAG,CAAC,CAAC;gBAClH,CAAC;gBACD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;oBAC/B,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;gBAClF,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAID,IAAI,KAA+B,CAAC;IACpC,IAAI,IAAW,CAAC;IAChB,IAAI,CAAC;QACH,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YACb,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,MAAM,GAAG,CAAC;IACZ,CAAC;IAMD,IAAI,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,OAAO,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5D,CAAC;IAGD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAEvB,OAAO;QACL,IAAI;QACJ,OAAO;YACL,IAAI,SAAS;gBAAE,OAAO;YACtB,SAAS,GAAG,IAAI,CAAC;YACjB,KAAK,MAAM,EAAE,IAAI,gBAAgB,EAAE,CAAC;gBAClC,IAAI,CAAC;oBACH,EAAE,EAAE,CAAC;gBACP,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,GAAG,CAAC,CAAC;gBACjE,CAAC;YACH,CAAC;YAGD,KAAK,CAAC,OAAO,EAAE,CAAC;YAChB,WAAW,CAAC,IAAI,CAAC,CAAC;YAClB,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;gBAC7B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAOD,MAAM,UAAU,eAAe,CAAC,GAAwB;IACtD,OAAO,GAAG,CAAC;AACb,CAAC;AAYD,MAAM,UAAU,UAAU,CACxB,IAAiB,EACjB,UAA+B,EAC/B,QAAmB,EAAE;IAErB,OAAO,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAChD,CAAC;AAQD,MAAM,UAAU,KAAK,CACnB,MAAe,EACf,QAAqD;IAErD,IAAI,QAAQ,GAAkB,SAAS,CAAC;IACxC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,EAAE;QAC1B,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC;YAChC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC1B,QAAQ,GAAG,KAAK,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC;AAkBD,MAAM,UAAU,OAAO,CAAC,GAAqB,EAAE,EAA6B;IAC1E,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,QAAQ,GAA4B,IAAI,CAAC;IAE7C,MAAM,MAAM,GAAG,GAAS,EAAE;QACxB,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,QAAQ,CAAC,UAAU,EAAE,CAAC;YACtB,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,GAAS,EAAE;QACxB,IAAI,KAAK,IAAI,SAAS;YAAE,OAAO;QAC/B,KAAK,GAAG,IAAI,CAAC;QACb,MAAM,EAAE,CAAC;QACT,MAAM,OAAO,GAAG,EAAE,EAAE,CAAC;QACrB,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;YAClC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;IACH,CAAC,CAAC;IAGF,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,SAAS,GAAG,IAAI,CAAC;QACjB,MAAM,EAAE,CAAC;IACX,CAAC,CAAC,CAAC;IAGH,cAAc,CAAC,GAAG,EAAE;QAClB,IAAI,KAAK,IAAI,SAAS;YAAE,OAAO;QAC/B,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACzB,MAAM,EAAE,CAAC;YACT,OAAO;QACT,CAAC;QAGD,MAAM,GAAG,GACP,GAAG,CAAC,IAAI,CAAC,aAAa;YACrB,UAAsC,CAAC,QAAQ;YAChD,IAAI,CAAC;QACP,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,gBAAgB,KAAK,UAAU,EAAE,CAAC;YAC3D,QAAQ,GAAG,IAAI,gBAAgB,CAAC,GAAG,EAAE;gBACnC,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW;oBAAE,MAAM,EAAE,CAAC;YACrC,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACnF,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAOD,MAAM,UAAU,SAAS,CAAC,GAAqB,EAAE,EAAc;IAC7D,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AACpB,CAAC"}
@@ -0,0 +1,142 @@
1
+ export declare const DataErrorCode: Readonly<{
2
+ readonly timeout: "timeout";
3
+ readonly protocol: "protocol";
4
+ readonly not_found: "not_found";
5
+ readonly validation: "validation";
6
+ readonly forbidden: "forbidden";
7
+ readonly unauthorized: "unauthorized";
8
+ readonly server: "server";
9
+ readonly network: "network";
10
+ }>;
11
+ export type DataErrorCodeValue = (typeof DataErrorCode)[keyof typeof DataErrorCode];
12
+ export interface DataErrorInit {
13
+ domain?: string;
14
+ status?: number;
15
+ correlationId?: string;
16
+ }
17
+ export declare class DataError extends Error {
18
+ readonly code: string;
19
+ readonly domain: string;
20
+ readonly status: number;
21
+ readonly correlationId: string;
22
+ constructor(message: string, code: string, init?: DataErrorInit);
23
+ }
24
+ export declare class DataTimeoutError extends DataError {
25
+ constructor(timeoutMs: number);
26
+ }
27
+ export declare class DataProtocolError extends DataError {
28
+ constructor(message: string, status?: number);
29
+ }
30
+ export interface DataConfig {
31
+ baseUrl: string;
32
+ projectId: string;
33
+ publicKey: string;
34
+ namespace?: string;
35
+ timeoutMs?: number;
36
+ retries?: number;
37
+ backoffBaseMs?: number;
38
+ fetchFn?: typeof fetch;
39
+ }
40
+ export type FilterOp = 'eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte' | 'like' | 'ilike' | 'in' | 'nin' | 'startsWith' | 'endsWith' | 'contains';
41
+ export interface Filter {
42
+ column: string;
43
+ op: FilterOp;
44
+ value: string | string[];
45
+ }
46
+ export interface ListOrder {
47
+ column: string;
48
+ dir: 'asc' | 'desc';
49
+ }
50
+ export interface ListOpts {
51
+ select?: string[];
52
+ limit?: number;
53
+ offset?: number;
54
+ order?: ListOrder;
55
+ filters?: Filter[];
56
+ after?: string;
57
+ }
58
+ export interface DataClient {
59
+ list<T>(collection: string, opts?: ListOpts): Promise<T[]>;
60
+ get<T>(collection: string, id: string): Promise<T | null>;
61
+ count(collection: string, filters?: Filter[]): Promise<number>;
62
+ withSession(jwt: string): SessionClient;
63
+ }
64
+ export interface UpdateOptions {
65
+ expectedRevision?: number;
66
+ }
67
+ export interface SessionClient extends DataClient {
68
+ insert<T>(collection: string, row: Record<string, unknown>): Promise<T>;
69
+ insertMany<T>(collection: string, rows: Record<string, unknown>[]): Promise<T[]>;
70
+ update<T>(collection: string, id: string, patch: Record<string, unknown>, opts?: UpdateOptions): Promise<T>;
71
+ remove(collection: string, id: string): Promise<void>;
72
+ }
73
+ export interface AdminCollectionField {
74
+ name: string;
75
+ type: string;
76
+ required?: boolean;
77
+ unique?: boolean;
78
+ indexed?: boolean;
79
+ minimum?: number;
80
+ maximum?: number;
81
+ default?: unknown;
82
+ }
83
+ export interface AdminCollectionIndex {
84
+ name: string;
85
+ fields: string[];
86
+ unique?: boolean;
87
+ }
88
+ export interface AdminCollectionDef {
89
+ name: string;
90
+ fields?: AdminCollectionField[];
91
+ indexes?: AdminCollectionIndex[];
92
+ }
93
+ export interface AdminCollectionInfo {
94
+ name: string;
95
+ count: number;
96
+ bytes: number;
97
+ lastModified: string;
98
+ }
99
+ export interface BulkOps {
100
+ inserts?: {
101
+ collection: string;
102
+ document: Record<string, unknown>;
103
+ }[];
104
+ updates?: {
105
+ collection: string;
106
+ id: string;
107
+ patch: Record<string, unknown>;
108
+ }[];
109
+ deletes?: {
110
+ collection: string;
111
+ id: string;
112
+ }[];
113
+ }
114
+ export interface BulkResult {
115
+ inserted: number;
116
+ updated: number;
117
+ deleted: number;
118
+ errors: unknown[];
119
+ }
120
+ export type TokenScope = 'read' | 'write' | 'admin';
121
+ export interface ExchangeTokenOptions {
122
+ ttlSeconds?: number;
123
+ scopes?: TokenScope[];
124
+ }
125
+ export interface TokenExchange {
126
+ accessToken: string;
127
+ tokenType: string;
128
+ expiresIn: number;
129
+ projectId: string;
130
+ }
131
+ export interface AdminClient {
132
+ createCollection(def: AdminCollectionDef): Promise<Record<string, unknown>>;
133
+ listCollections(): Promise<AdminCollectionInfo[]>;
134
+ bulk(ops: BulkOps): Promise<BulkResult>;
135
+ exchangeToken(opts?: ExchangeTokenOptions): Promise<TokenExchange>;
136
+ }
137
+ export declare function validateBaseUrl(url: string): string;
138
+ export declare function validateCollectionName(name: string): string;
139
+ export declare function resolveCollection(cfg: DataConfig, collection: string): string;
140
+ export declare function createDataClient(cfg: DataConfig): DataClient;
141
+ export declare function createAdminClient(cfg: DataConfig): AdminClient;
142
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"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"}