@tanstack/db-sqlite-persistence-core 0.2.21 → 0.4.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 (58) hide show
  1. package/README.md +258 -7
  2. package/dist/cjs/broadcast-coordinator.cjs +1689 -0
  3. package/dist/cjs/broadcast-coordinator.cjs.map +1 -0
  4. package/dist/cjs/broadcast-coordinator.d.cts +116 -0
  5. package/dist/cjs/errors.cjs +73 -0
  6. package/dist/cjs/errors.cjs.map +1 -1
  7. package/dist/cjs/errors.d.cts +44 -0
  8. package/dist/cjs/index.cjs +19 -0
  9. package/dist/cjs/index.cjs.map +1 -1
  10. package/dist/cjs/index.d.cts +2 -0
  11. package/dist/cjs/persisted.cjs +1840 -399
  12. package/dist/cjs/persisted.cjs.map +1 -1
  13. package/dist/cjs/persisted.d.cts +177 -11
  14. package/dist/cjs/remote-subset-owner.cjs +20 -0
  15. package/dist/cjs/remote-subset-owner.cjs.map +1 -0
  16. package/dist/cjs/remote-subset-owner.d.cts +7 -0
  17. package/dist/cjs/remote-subset-wire.cjs +681 -0
  18. package/dist/cjs/remote-subset-wire.cjs.map +1 -0
  19. package/dist/cjs/remote-subset-wire.d.cts +59 -0
  20. package/dist/cjs/sqlite-core-adapter.cjs +969 -364
  21. package/dist/cjs/sqlite-core-adapter.cjs.map +1 -1
  22. package/dist/cjs/sqlite-core-adapter.d.cts +45 -1
  23. package/dist/cjs/sqlite-value.cjs +31 -0
  24. package/dist/cjs/sqlite-value.cjs.map +1 -0
  25. package/dist/cjs/sqlite-value.d.cts +10 -0
  26. package/dist/esm/broadcast-coordinator.d.ts +116 -0
  27. package/dist/esm/broadcast-coordinator.js +1689 -0
  28. package/dist/esm/broadcast-coordinator.js.map +1 -0
  29. package/dist/esm/errors.d.ts +44 -0
  30. package/dist/esm/errors.js +74 -1
  31. package/dist/esm/errors.js.map +1 -1
  32. package/dist/esm/index.d.ts +2 -0
  33. package/dist/esm/index.js +21 -2
  34. package/dist/esm/index.js.map +1 -1
  35. package/dist/esm/persisted.d.ts +177 -11
  36. package/dist/esm/persisted.js +1842 -401
  37. package/dist/esm/persisted.js.map +1 -1
  38. package/dist/esm/remote-subset-owner.d.ts +7 -0
  39. package/dist/esm/remote-subset-owner.js +20 -0
  40. package/dist/esm/remote-subset-owner.js.map +1 -0
  41. package/dist/esm/remote-subset-wire.d.ts +59 -0
  42. package/dist/esm/remote-subset-wire.js +681 -0
  43. package/dist/esm/remote-subset-wire.js.map +1 -0
  44. package/dist/esm/sqlite-core-adapter.d.ts +45 -1
  45. package/dist/esm/sqlite-core-adapter.js +955 -350
  46. package/dist/esm/sqlite-core-adapter.js.map +1 -1
  47. package/dist/esm/sqlite-value.d.ts +10 -0
  48. package/dist/esm/sqlite-value.js +31 -0
  49. package/dist/esm/sqlite-value.js.map +1 -0
  50. package/package.json +12 -2
  51. package/src/broadcast-coordinator.ts +2456 -0
  52. package/src/errors.ts +120 -0
  53. package/src/index.ts +2 -0
  54. package/src/persisted.ts +2690 -444
  55. package/src/remote-subset-owner.ts +36 -0
  56. package/src/remote-subset-wire.ts +946 -0
  57. package/src/sqlite-core-adapter.ts +1297 -410
  58. package/src/sqlite-value.ts +30 -0
@@ -0,0 +1,7 @@
1
+ import { TransportedLoadSubsetOptions } from './remote-subset-wire.js';
2
+ export type RemoteSubsetOwner = ((options: TransportedLoadSubsetOptions) => Promise<void> | void) & {
3
+ unloadSubset: (options: TransportedLoadSubsetOptions) => void;
4
+ onError: (error: unknown) => void;
5
+ };
6
+ export declare function reportRemoteSubsetOwnerError(owner: RemoteSubsetOwner, error: unknown): void;
7
+ export declare function unloadRemoteSubsetOwner(owner: RemoteSubsetOwner, options: TransportedLoadSubsetOptions): Promise<void>;
@@ -0,0 +1,20 @@
1
+ function reportRemoteSubsetOwnerError(owner, error) {
2
+ try {
3
+ owner.onError(error);
4
+ } catch {
5
+ }
6
+ }
7
+ async function unloadRemoteSubsetOwner(owner, options) {
8
+ try {
9
+ const result = owner.unloadSubset(options);
10
+ await Promise.resolve(result);
11
+ } catch (error) {
12
+ reportRemoteSubsetOwnerError(owner, error);
13
+ throw error;
14
+ }
15
+ }
16
+ export {
17
+ reportRemoteSubsetOwnerError,
18
+ unloadRemoteSubsetOwner
19
+ };
20
+ //# sourceMappingURL=remote-subset-owner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-subset-owner.js","sources":["../../src/remote-subset-owner.ts"],"sourcesContent":["import type { TransportedLoadSubsetOptions } from './remote-subset-wire'\n\nexport type RemoteSubsetOwner = ((\n options: TransportedLoadSubsetOptions,\n) => Promise<void> | void) & {\n unloadSubset: (options: TransportedLoadSubsetOptions) => void\n onError: (error: unknown) => void\n}\n\nexport function reportRemoteSubsetOwnerError(\n owner: RemoteSubsetOwner,\n error: unknown,\n): void {\n try {\n owner.onError(error)\n } catch {\n // Reporting must not replace the original owner failure.\n }\n}\n\nexport async function unloadRemoteSubsetOwner(\n owner: RemoteSubsetOwner,\n options: TransportedLoadSubsetOptions,\n): Promise<void> {\n try {\n const result = (\n owner.unloadSubset as unknown as (\n options: TransportedLoadSubsetOptions,\n ) => unknown\n )(options)\n await Promise.resolve(result)\n } catch (error) {\n reportRemoteSubsetOwnerError(owner, error)\n throw error\n }\n}\n"],"names":[],"mappings":"AASO,SAAS,6BACd,OACA,OACM;AACN,MAAI;AACF,UAAM,QAAQ,KAAK;AAAA,EACrB,QAAQ;AAAA,EAER;AACF;AAEA,eAAsB,wBACpB,OACA,SACe;AACf,MAAI;AACF,UAAM,SACJ,MAAM,aAGN,OAAO;AACT,UAAM,QAAQ,QAAQ,MAAM;AAAA,EAC9B,SAAS,OAAO;AACd,iCAA6B,OAAO,KAAK;AACzC,UAAM;AAAA,EACR;AACF;"}
@@ -0,0 +1,59 @@
1
+ import { LoadSubsetOptions } from '@tanstack/db';
2
+ export type RemoteSubsetWirePrimitive = undefined | null | boolean | string | number | bigint;
3
+ export type RemoteSubsetWireTypedArray = Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array;
4
+ export type RemoteSubsetWireRecord = {
5
+ [key: string]: RemoteSubsetWireValue;
6
+ };
7
+ /** Values whose complete semantics survive a coordinator transport boundary. */
8
+ export type RemoteSubsetWireValue = RemoteSubsetWirePrimitive | Date | RegExp | ArrayBuffer | DataView | RemoteSubsetWireTypedArray | Array<RemoteSubsetWireValue> | Map<RemoteSubsetWireValue, RemoteSubsetWireValue> | Set<RemoteSubsetWireValue> | RemoteSubsetWireRecord;
9
+ export type RemoteSubsetWireExpression = {
10
+ type: `ref`;
11
+ path: Array<string>;
12
+ sourceAlias?: string;
13
+ } | {
14
+ type: `val`;
15
+ value: RemoteSubsetWireValue;
16
+ } | {
17
+ type: `func`;
18
+ name: string;
19
+ args: Array<RemoteSubsetWireExpression>;
20
+ };
21
+ export type RemoteSubsetWireCompareOptions = {
22
+ direction: `asc` | `desc`;
23
+ nulls: `first` | `last`;
24
+ } & ({
25
+ stringSort?: `lexical`;
26
+ } | {
27
+ stringSort?: `locale`;
28
+ locale?: string;
29
+ localeOptions?: RemoteSubsetWireRecord;
30
+ });
31
+ export type RemoteSubsetWireOrderByClause = {
32
+ expression: RemoteSubsetWireExpression;
33
+ compareOptions: RemoteSubsetWireCompareOptions;
34
+ };
35
+ export type RemoteSubsetWireCursor = {
36
+ whereFrom: RemoteSubsetWireExpression;
37
+ whereCurrent: RemoteSubsetWireExpression;
38
+ lastKey?: string | number;
39
+ };
40
+ /** The complete data portion transported by a remote-subset request. */
41
+ export type TransportedLoadSubsetOptions = {
42
+ where?: RemoteSubsetWireExpression;
43
+ orderBy?: Array<RemoteSubsetWireOrderByClause>;
44
+ limit?: number;
45
+ cursor?: RemoteSubsetWireCursor;
46
+ offset?: number;
47
+ };
48
+ export declare class RemoteSubsetWireValueError extends TypeError {
49
+ readonly path: string;
50
+ readonly name = "RemoteSubsetWireValueError";
51
+ constructor(path: string, reason: string);
52
+ }
53
+ /**
54
+ * Projects one live subset request into the exact coordinator wire domain.
55
+ * Validation happens before callers choose a local-leader or transported path.
56
+ */
57
+ export declare function toTransportedLoadSubsetOptions(options: LoadSubsetOptions): TransportedLoadSubsetOptions;
58
+ /** Adds live lifecycle references only to an already validated local request. */
59
+ export declare function toProcessLocalLoadSubsetOptions(options: LoadSubsetOptions, transported?: TransportedLoadSubsetOptions): TransportedLoadSubsetOptions & Pick<LoadSubsetOptions, `signal` | `subscription`>;