@sunfall/arc-db 0.1.0-alpha.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 (150) hide show
  1. package/LICENSE +21 -0
  2. package/dist/change-feed-dispatcher.d.ts +21 -0
  3. package/dist/change-feed-dispatcher.d.ts.map +1 -0
  4. package/dist/change-feed-dispatcher.js +53 -0
  5. package/dist/change-feed-dispatcher.js.map +1 -0
  6. package/dist/collection-change-feed-runtime.d.ts +32 -0
  7. package/dist/collection-change-feed-runtime.d.ts.map +1 -0
  8. package/dist/collection-change-feed-runtime.js +50 -0
  9. package/dist/collection-change-feed-runtime.js.map +1 -0
  10. package/dist/collection-contract.d.ts +525 -0
  11. package/dist/collection-contract.d.ts.map +1 -0
  12. package/dist/collection-contract.js +4 -0
  13. package/dist/collection-contract.js.map +1 -0
  14. package/dist/collection-definition-snapshot.d.ts +64 -0
  15. package/dist/collection-definition-snapshot.d.ts.map +1 -0
  16. package/dist/collection-definition-snapshot.js +122 -0
  17. package/dist/collection-definition-snapshot.js.map +1 -0
  18. package/dist/collection-errors.d.ts +38 -0
  19. package/dist/collection-errors.d.ts.map +1 -0
  20. package/dist/collection-errors.js +17 -0
  21. package/dist/collection-errors.js.map +1 -0
  22. package/dist/collection-ids.d.ts +6 -0
  23. package/dist/collection-ids.d.ts.map +1 -0
  24. package/dist/collection-ids.js +6 -0
  25. package/dist/collection-ids.js.map +1 -0
  26. package/dist/collection-index-materialization.d.ts +29 -0
  27. package/dist/collection-index-materialization.d.ts.map +1 -0
  28. package/dist/collection-index-materialization.js +118 -0
  29. package/dist/collection-index-materialization.js.map +1 -0
  30. package/dist/collection-mutation-queue.d.ts +10 -0
  31. package/dist/collection-mutation-queue.d.ts.map +1 -0
  32. package/dist/collection-mutation-queue.js +46 -0
  33. package/dist/collection-mutation-queue.js.map +1 -0
  34. package/dist/collection-mutation-workflow.d.ts +18 -0
  35. package/dist/collection-mutation-workflow.d.ts.map +1 -0
  36. package/dist/collection-mutation-workflow.js +252 -0
  37. package/dist/collection-mutation-workflow.js.map +1 -0
  38. package/dist/collection-persistence.d.ts +48 -0
  39. package/dist/collection-persistence.d.ts.map +1 -0
  40. package/dist/collection-persistence.js +323 -0
  41. package/dist/collection-persistence.js.map +1 -0
  42. package/dist/collection-policy.d.ts +5 -0
  43. package/dist/collection-policy.d.ts.map +1 -0
  44. package/dist/collection-policy.js +7 -0
  45. package/dist/collection-policy.js.map +1 -0
  46. package/dist/collection-preload.d.ts +21 -0
  47. package/dist/collection-preload.d.ts.map +1 -0
  48. package/dist/collection-preload.js +4 -0
  49. package/dist/collection-preload.js.map +1 -0
  50. package/dist/collection-projection-callback-policy.d.ts +14 -0
  51. package/dist/collection-projection-callback-policy.d.ts.map +1 -0
  52. package/dist/collection-projection-callback-policy.js +25 -0
  53. package/dist/collection-projection-callback-policy.js.map +1 -0
  54. package/dist/collection-reactive-binding.d.ts +72 -0
  55. package/dist/collection-reactive-binding.d.ts.map +1 -0
  56. package/dist/collection-reactive-binding.js +95 -0
  57. package/dist/collection-reactive-binding.js.map +1 -0
  58. package/dist/collection-registry.d.ts +56 -0
  59. package/dist/collection-registry.d.ts.map +1 -0
  60. package/dist/collection-registry.js +123 -0
  61. package/dist/collection-registry.js.map +1 -0
  62. package/dist/collection-row-ingress.d.ts +16 -0
  63. package/dist/collection-row-ingress.d.ts.map +1 -0
  64. package/dist/collection-row-ingress.js +110 -0
  65. package/dist/collection-row-ingress.js.map +1 -0
  66. package/dist/collection-runtime.d.ts +20 -0
  67. package/dist/collection-runtime.d.ts.map +1 -0
  68. package/dist/collection-runtime.js +256 -0
  69. package/dist/collection-runtime.js.map +1 -0
  70. package/dist/collection-snapshot-codec.d.ts +62 -0
  71. package/dist/collection-snapshot-codec.d.ts.map +1 -0
  72. package/dist/collection-snapshot-codec.js +563 -0
  73. package/dist/collection-snapshot-codec.js.map +1 -0
  74. package/dist/collection-state.d.ts +72 -0
  75. package/dist/collection-state.d.ts.map +1 -0
  76. package/dist/collection-state.js +276 -0
  77. package/dist/collection-state.js.map +1 -0
  78. package/dist/collection-sync-load-policy.d.ts +17 -0
  79. package/dist/collection-sync-load-policy.d.ts.map +1 -0
  80. package/dist/collection-sync-load-policy.js +245 -0
  81. package/dist/collection-sync-load-policy.js.map +1 -0
  82. package/dist/collection-value-detachment.d.ts +34 -0
  83. package/dist/collection-value-detachment.d.ts.map +1 -0
  84. package/dist/collection-value-detachment.js +248 -0
  85. package/dist/collection-value-detachment.js.map +1 -0
  86. package/dist/collection-write-commit.d.ts +32 -0
  87. package/dist/collection-write-commit.d.ts.map +1 -0
  88. package/dist/collection-write-commit.js +51 -0
  89. package/dist/collection-write-commit.js.map +1 -0
  90. package/dist/flush-policy.d.ts +130 -0
  91. package/dist/flush-policy.d.ts.map +1 -0
  92. package/dist/flush-policy.js +96 -0
  93. package/dist/flush-policy.js.map +1 -0
  94. package/dist/index.d.ts +481 -0
  95. package/dist/index.d.ts.map +1 -0
  96. package/dist/index.js +251 -0
  97. package/dist/index.js.map +1 -0
  98. package/dist/live-query-collection-materialization.d.ts +47 -0
  99. package/dist/live-query-collection-materialization.d.ts.map +1 -0
  100. package/dist/live-query-collection-materialization.js +231 -0
  101. package/dist/live-query-collection-materialization.js.map +1 -0
  102. package/dist/live-query-collection.d.ts +23 -0
  103. package/dist/live-query-collection.d.ts.map +1 -0
  104. package/dist/live-query-collection.js +94 -0
  105. package/dist/live-query-collection.js.map +1 -0
  106. package/dist/live-query-runtime.d.ts +8 -0
  107. package/dist/live-query-runtime.d.ts.map +1 -0
  108. package/dist/live-query-runtime.js +228 -0
  109. package/dist/live-query-runtime.js.map +1 -0
  110. package/dist/live-query-state.d.ts +11 -0
  111. package/dist/live-query-state.d.ts.map +1 -0
  112. package/dist/live-query-state.js +130 -0
  113. package/dist/live-query-state.js.map +1 -0
  114. package/dist/query-builder.d.ts +294 -0
  115. package/dist/query-builder.d.ts.map +1 -0
  116. package/dist/query-builder.js +373 -0
  117. package/dist/query-builder.js.map +1 -0
  118. package/dist/query-context-identity.d.ts +19 -0
  119. package/dist/query-context-identity.d.ts.map +1 -0
  120. package/dist/query-context-identity.js +41 -0
  121. package/dist/query-context-identity.js.map +1 -0
  122. package/dist/query-execution-plan.d.ts +27 -0
  123. package/dist/query-execution-plan.d.ts.map +1 -0
  124. package/dist/query-execution-plan.js +69 -0
  125. package/dist/query-execution-plan.js.map +1 -0
  126. package/dist/query-plan.d.ts +200 -0
  127. package/dist/query-plan.d.ts.map +1 -0
  128. package/dist/query-plan.js +524 -0
  129. package/dist/query-plan.js.map +1 -0
  130. package/dist/query-source-adapter.d.ts +25 -0
  131. package/dist/query-source-adapter.d.ts.map +1 -0
  132. package/dist/query-source-adapter.js +14 -0
  133. package/dist/query-source-adapter.js.map +1 -0
  134. package/dist/runtime-collection-store.d.ts +38 -0
  135. package/dist/runtime-collection-store.d.ts.map +1 -0
  136. package/dist/runtime-collection-store.js +149 -0
  137. package/dist/runtime-collection-store.js.map +1 -0
  138. package/dist/server-collection.d.ts +84 -0
  139. package/dist/server-collection.d.ts.map +1 -0
  140. package/dist/server-collection.js +84 -0
  141. package/dist/server-collection.js.map +1 -0
  142. package/dist/sqlite-persistence.d.ts +239 -0
  143. package/dist/sqlite-persistence.d.ts.map +1 -0
  144. package/dist/sqlite-persistence.js +345 -0
  145. package/dist/sqlite-persistence.js.map +1 -0
  146. package/dist/sync-adapter.d.ts +233 -0
  147. package/dist/sync-adapter.d.ts.map +1 -0
  148. package/dist/sync-adapter.js +226 -0
  149. package/dist/sync-adapter.js.map +1 -0
  150. package/package.json +48 -0
@@ -0,0 +1,95 @@
1
+ import { invokeEffectInput, runWithRuntime, } from "@sunfall/arc-core";
2
+ import { Effect, Fiber } from "effect";
3
+ import { Query } from "./query-builder.js";
4
+ /**
5
+ * Subscribes to the collection signals that framework adapters use to refresh
6
+ * collection-backed UI reads.
7
+ */
8
+ export const subscribeCollectionReactiveSource = (runtime, collection, notify) => runWithRuntime(runtime, () => {
9
+ const version = collection.version();
10
+ const state = collection.state();
11
+ const unsubscribeVersion = version.subscribe(notify);
12
+ const unsubscribeState = state.subscribe(notify);
13
+ return () => {
14
+ unsubscribeVersion();
15
+ unsubscribeState();
16
+ };
17
+ });
18
+ /** Provides the runtime and scopes a collection/live-query Effect. */
19
+ export const bindCollectionRuntimeEffect = (runtime, effect) => Effect.scoped(runtime.provide(effect));
20
+ /** Returns true when two collection source lists have the same identity order. */
21
+ export const sameCollectionReactiveSources = (left, right) => left.length === right.length && left.every((source, index) => Object.is(source, right[index]));
22
+ /** Extracts the current failure value from a collection load state. */
23
+ export const collectionStateError = (state) => state._tag === "Failure" ? state.error : undefined;
24
+ /** Extracts the current failure value from a live-query state. */
25
+ export const liveQueryStateError = (state) => state._tag === "Failure" ? state.error : undefined;
26
+ /** Resolves live-query dependency options to the value used for equality. */
27
+ export const collectionReactiveDepsValue = (deps) => typeof deps === "function" ? deps() : deps;
28
+ /** Returns true when two framework live-query dependency values are equal. */
29
+ export const sameCollectionReactiveDeps = (left, right) => {
30
+ if (Array.isArray(left) && Array.isArray(right)) {
31
+ return (left.length === right.length && left.every((value, index) => Object.is(value, right[index])));
32
+ }
33
+ return Object.is(left, right);
34
+ };
35
+ /** Copies array dependency values so later caller mutation cannot change memo identity. */
36
+ export const snapshotCollectionReactiveDeps = (value) => Array.isArray(value) ? [...value] : value;
37
+ /** Selects or recreates a runtime-bound LiveQuery for framework adapters. */
38
+ export const selectCollectionReactiveLiveQuery = (runtime, input, deps, previous) => {
39
+ const stableLiveQueryInput = typeof input === "function" ? undefined : input;
40
+ if (previous !== undefined &&
41
+ previous.runtime === runtime &&
42
+ previous.stableLiveQueryInput === stableLiveQueryInput &&
43
+ sameCollectionReactiveDeps(previous.deps, deps)) {
44
+ return previous;
45
+ }
46
+ return {
47
+ runtime,
48
+ stableLiveQueryInput,
49
+ deps: snapshotCollectionReactiveDeps(deps),
50
+ live: runWithRuntime(runtime, () => typeof input === "function" ? Query.live(input) : input),
51
+ };
52
+ };
53
+ /**
54
+ * Creates the shared mount-time preload lifecycle used by React DB and Solid DB.
55
+ *
56
+ * The controller keeps generation checks in one place so stale preload failures
57
+ * cannot overwrite newer UI state after a source refresh or unmount.
58
+ */
59
+ export const makeCollectionReactivePreloadController = (options) => {
60
+ let preloadFiber;
61
+ let preloadGeneration = 0;
62
+ const retireCurrentPreload = () => {
63
+ preloadGeneration++;
64
+ const fiber = preloadFiber;
65
+ preloadFiber = undefined;
66
+ return fiber;
67
+ };
68
+ const interruptEffect = () => Effect.suspend(() => {
69
+ const fiber = retireCurrentPreload();
70
+ return fiber === undefined
71
+ ? Effect.void
72
+ : Fiber.interrupt(fiber).pipe(Effect.catchCause(() => Effect.void));
73
+ });
74
+ const interrupt = () => {
75
+ const fiber = retireCurrentPreload();
76
+ if (fiber !== undefined) {
77
+ void options.runtime.runFork(Fiber.interrupt(fiber).pipe(Effect.catchCause(() => Effect.void)));
78
+ }
79
+ };
80
+ const start = (preloadEffect, enabled) => {
81
+ interrupt();
82
+ if (!enabled || preloadEffect === undefined) {
83
+ return;
84
+ }
85
+ const generation = ++preloadGeneration;
86
+ const isCurrentGeneration = () => preloadGeneration === generation;
87
+ preloadFiber = options.runtime.runFork(bindCollectionRuntimeEffect(options.runtime, preloadEffect).pipe(Effect.tap(() => isCurrentGeneration()
88
+ ? invokeEffectInput("CollectionReactivePreload.onSuccess", options.onSuccess).pipe(Effect.catchCause(() => Effect.void), Effect.asVoid)
89
+ : Effect.void), Effect.catch((error) => isCurrentGeneration()
90
+ ? invokeEffectInput("CollectionReactivePreload.onFailure", options.onFailure, error).pipe(Effect.catchCause(() => Effect.void), Effect.asVoid)
91
+ : Effect.void), Effect.catchCause(() => Effect.void)));
92
+ };
93
+ return { interruptEffect, interrupt, start };
94
+ };
95
+ //# sourceMappingURL=collection-reactive-binding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-reactive-binding.js","sourceRoot":"","sources":["../src/collection-reactive-binding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import type { AnyCollection, CollectionDefinitionDiagnostics, CollectionDiagnostics } from "./collection-contract.js";
2
+ /**
3
+ * Duplicate-name handling for a Collection registry.
4
+ *
5
+ * `keep-first` retains the original definition; `replace` stores the latest
6
+ * definition. Duplicate attempts are recorded in diagnostics for both policies.
7
+ */
8
+ export type CollectionDefinitionDuplicatePolicy = "keep-first" | "replace";
9
+ /** Options for an isolated Collection Definition Registry Adapter. */
10
+ export interface CollectionDefinitionRegistryOptions {
11
+ /** Duplicate-name handling. Defaults to `keep-first`. */
12
+ readonly duplicates?: CollectionDefinitionDuplicatePolicy;
13
+ }
14
+ /** Result of registering a Collection Definition. */
15
+ export interface CollectionDefinitionRegistration {
16
+ readonly name: string;
17
+ readonly definition: AnyCollection;
18
+ readonly sequence: number;
19
+ readonly duplicate: boolean;
20
+ readonly retained: AnyCollection;
21
+ }
22
+ /** Diagnostic fact describing one duplicate Collection registration attempt. */
23
+ export interface CollectionDefinitionDuplicateDiagnostics {
24
+ readonly name: string;
25
+ readonly policy: CollectionDefinitionDuplicatePolicy;
26
+ readonly retained: number;
27
+ readonly discarded: number;
28
+ }
29
+ /** Collection diagnostics plus duplicate registration facts. */
30
+ export interface CollectionDefinitionRegistryDiagnostics extends CollectionDiagnostics {
31
+ readonly duplicates: readonly CollectionDefinitionDuplicateDiagnostics[];
32
+ }
33
+ /**
34
+ * Registry abstraction used by Collection factories to register named
35
+ * definitions, inspect retained definitions, and report duplicate
36
+ * registrations.
37
+ */
38
+ export interface CollectionDefinitionRegistryAdapter {
39
+ register(name: string, definition: AnyCollection): CollectionDefinitionRegistration;
40
+ definitions(): ReadonlyMap<string, AnyCollection>;
41
+ diagnostics(): CollectionDefinitionRegistryDiagnostics;
42
+ }
43
+ /** Static diagnostics extracted from a Collection Definition. */
44
+ export declare const collectionDefinitionDiagnostics: (definition: AnyCollection) => CollectionDefinitionDiagnostics;
45
+ /** Creates an isolated Collection Definition Registry Adapter. */
46
+ export declare const makeCollectionDefinitionRegistry: (options?: CollectionDefinitionRegistryOptions) => CollectionDefinitionRegistryAdapter;
47
+ /** Process-wide Collection Definition Registry used by default collection factories. */
48
+ export declare const defaultCollectionDefinitionRegistry: CollectionDefinitionRegistryAdapter;
49
+ export declare const registerCollectionDefinition: (name: string, definition: AnyCollection) => void;
50
+ /** Return the process-wide registry of named collection definitions. */
51
+ export declare const collectionDefinitionRegistry: () => ReadonlyMap<string, AnyCollection>;
52
+ /** Describe registered collections, indexes, handlers, sync, and persistence. */
53
+ export declare const collectionDiagnostics: () => CollectionDiagnostics;
54
+ /** Describe the default registry, including duplicate registrations. */
55
+ export declare const collectionRegistryDiagnostics: () => CollectionDefinitionRegistryDiagnostics;
56
+ //# sourceMappingURL=collection-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-registry.d.ts","sourceRoot":"","sources":["../src/collection-registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,+BAA+B,EAC/B,qBAAqB,EACtB,MAAM,0BAA0B,CAAC;AAElC;;;;;GAKG;AACH,MAAM,MAAM,mCAAmC,GAAG,YAAY,GAAG,SAAS,CAAC;AAE3E,sEAAsE;AACtE,MAAM,WAAW,mCAAmC;IAClD,yDAAyD;IACzD,QAAQ,CAAC,UAAU,CAAC,EAAE,mCAAmC,CAAC;CAC3D;AAED,qDAAqD;AACrD,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;CAClC;AAED,gFAAgF;AAChF,MAAM,WAAW,wCAAwC;IACvD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,mCAAmC,CAAC;IACrD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,gEAAgE;AAChE,MAAM,WAAW,uCAAwC,SAAQ,qBAAqB;IACpF,QAAQ,CAAC,UAAU,EAAE,SAAS,wCAAwC,EAAE,CAAC;CAC1E;AAED;;;;GAIG;AACH,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,GAAG,gCAAgC,CAAC;IACpF,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAClD,WAAW,IAAI,uCAAuC,CAAC;CACxD;AAcD,iEAAiE;AACjE,eAAO,MAAM,+BAA+B,eAC9B,aAAa,KACxB,+BAmCF,CAAC;AAEF,kEAAkE;AAClE,eAAO,MAAM,gCAAgC,aAClC,mCAAmC,KAC3C,mCAgFF,CAAC;AAEF,wFAAwF;AACxF,eAAO,MAAM,mCAAmC,qCAAqC,CAAC;AAEtF,eAAO,MAAM,4BAA4B,SAAU,MAAM,cAAc,aAAa,KAAG,IAEtF,CAAC;AAEF,wEAAwE;AACxE,eAAO,MAAM,4BAA4B,QAAO,WAAW,CAAC,MAAM,EAAE,aAAa,CAC9B,CAAC;AAEpD,iFAAiF;AACjF,eAAO,MAAM,qBAAqB,QAAO,qBAEvC,CAAC;AAEH,wEAAwE;AACxE,eAAO,MAAM,6BAA6B,QAAO,uCACE,CAAC"}
@@ -0,0 +1,123 @@
1
+ import { collectionIndexes } from "./collection-index-materialization.js";
2
+ /** Static diagnostics extracted from a Collection Definition. */
3
+ export const collectionDefinitionDiagnostics = (definition) => {
4
+ const options = definition.options;
5
+ const persistence = options.persistence;
6
+ return {
7
+ name: options.name,
8
+ readOnly: definition.readOnly === true,
9
+ inputSchema: options.input !== undefined,
10
+ outputSchema: options.output !== undefined,
11
+ initialData: options.initialData !== undefined,
12
+ indexes: Array.from(collectionIndexes(options), ([name, index]) => ({
13
+ name,
14
+ unique: index.unique === true,
15
+ })).sort((left, right) => left.name.localeCompare(right.name)),
16
+ load: options.load !== undefined,
17
+ handlers: {
18
+ insert: options.onInsert !== undefined,
19
+ update: options.onUpdate !== undefined,
20
+ delete: options.onDelete !== undefined,
21
+ },
22
+ policy: {
23
+ retry: options.policy?.retry !== undefined,
24
+ },
25
+ ...(options.sync === undefined ? {} : { sync: options.sync }),
26
+ persistence: {
27
+ enabled: persistence !== undefined,
28
+ ...(persistence?.key === undefined ? {} : { key: persistence.key }),
29
+ hydrate: persistence !== undefined && persistence.hydrate !== false,
30
+ restoreOnPreload: persistence !== undefined && persistence.restoreOnPreload !== false,
31
+ loadAfterRestore: persistence?.loadAfterRestore === true,
32
+ persistOnLoad: persistence !== undefined && persistence.persistOnLoad !== false,
33
+ persistOnMutation: persistence !== undefined && persistence.persistOnMutation !== false,
34
+ persistOnWrite: persistence !== undefined && persistence.persistOnWrite !== false,
35
+ },
36
+ };
37
+ };
38
+ /** Creates an isolated Collection Definition Registry Adapter. */
39
+ export const makeCollectionDefinitionRegistry = (options = {}) => {
40
+ const duplicatePolicy = options.duplicates ?? "keep-first";
41
+ const definitions = new Map();
42
+ const entries = new Map();
43
+ const duplicates = [];
44
+ let nextSequence = 1;
45
+ return {
46
+ register: (_name, definition) => {
47
+ const name = definition.name;
48
+ const existing = entries.get(name);
49
+ if (existing?.definition === definition) {
50
+ return {
51
+ name,
52
+ definition,
53
+ sequence: existing.sequence,
54
+ duplicate: false,
55
+ retained: definition,
56
+ };
57
+ }
58
+ const sequence = nextSequence++;
59
+ if (existing === undefined) {
60
+ definitions.set(name, definition);
61
+ entries.set(name, { definition, sequence });
62
+ return {
63
+ name,
64
+ definition,
65
+ sequence,
66
+ duplicate: false,
67
+ retained: definition,
68
+ };
69
+ }
70
+ if (duplicatePolicy === "replace") {
71
+ definitions.set(name, definition);
72
+ entries.set(name, { definition, sequence });
73
+ duplicates.push({
74
+ name,
75
+ policy: duplicatePolicy,
76
+ retained: sequence,
77
+ discarded: existing.sequence,
78
+ });
79
+ return {
80
+ name,
81
+ definition,
82
+ sequence,
83
+ duplicate: true,
84
+ retained: definition,
85
+ };
86
+ }
87
+ duplicates.push({
88
+ name,
89
+ policy: duplicatePolicy,
90
+ retained: existing.sequence,
91
+ discarded: sequence,
92
+ });
93
+ return {
94
+ name,
95
+ definition,
96
+ sequence,
97
+ duplicate: true,
98
+ retained: existing.definition,
99
+ };
100
+ },
101
+ definitions: () => new Map(definitions),
102
+ diagnostics: () => ({
103
+ collections: Array.from(definitions.values(), collectionDefinitionDiagnostics).sort((left, right) => left.name.localeCompare(right.name)),
104
+ duplicates: duplicates
105
+ .slice()
106
+ .sort((left, right) => left.name.localeCompare(right.name) || left.discarded - right.discarded),
107
+ }),
108
+ };
109
+ };
110
+ /** Process-wide Collection Definition Registry used by default collection factories. */
111
+ export const defaultCollectionDefinitionRegistry = makeCollectionDefinitionRegistry();
112
+ export const registerCollectionDefinition = (name, definition) => {
113
+ defaultCollectionDefinitionRegistry.register(name, definition);
114
+ };
115
+ /** Return the process-wide registry of named collection definitions. */
116
+ export const collectionDefinitionRegistry = () => defaultCollectionDefinitionRegistry.definitions();
117
+ /** Describe registered collections, indexes, handlers, sync, and persistence. */
118
+ export const collectionDiagnostics = () => ({
119
+ collections: defaultCollectionDefinitionRegistry.diagnostics().collections,
120
+ });
121
+ /** Describe the default registry, including duplicate registrations. */
122
+ export const collectionRegistryDiagnostics = () => defaultCollectionDefinitionRegistry.diagnostics();
123
+ //# sourceMappingURL=collection-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-registry.js","sourceRoot":"","sources":["../src/collection-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { EffectInputCallbackError } from "@sunfall/arc-core";
2
+ import { Effect } from "effect";
3
+ import type { CollectionDefinition, CollectionKey, CollectionOrigin } from "./collection-contract.js";
4
+ import type { StoredRow } from "./collection-state.js";
5
+ import { CollectionSnapshotCodecError, type CollectionSnapshotCodecOperation } from "./collection-snapshot-codec.js";
6
+ interface CollectionRowIngressOptions {
7
+ readonly operation: CollectionSnapshotCodecOperation;
8
+ readonly path: string;
9
+ readonly synced: boolean;
10
+ readonly origin: CollectionOrigin;
11
+ }
12
+ export declare const ingestCollectionOutputRowsEffect: <A extends object, K extends CollectionKey, E, R>(definition: CollectionDefinition<A, K, E, R>, values: ReadonlyArray<A>, options: CollectionRowIngressOptions) => Effect.Effect<ReadonlyArray<StoredRow<A, K>>, CollectionSnapshotCodecError | EffectInputCallbackError>;
13
+ export declare const ingestCollectionMutationRowsEffect: <A extends object, K extends CollectionKey, E, R>(definition: CollectionDefinition<A, K, E, R>, values: ReadonlyArray<A>, options: CollectionRowIngressOptions) => Effect.Effect<ReadonlyArray<StoredRow<A, K>>, CollectionSnapshotCodecError | EffectInputCallbackError>;
14
+ export declare const ingestCollectionOutputRowsSync: <A extends object, K extends CollectionKey, E, R>(definition: CollectionDefinition<A, K, E, R>, values: ReadonlyArray<A>, options: CollectionRowIngressOptions) => ReadonlyArray<StoredRow<A, K>>;
15
+ export {};
16
+ //# sourceMappingURL=collection-row-ingress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-row-ingress.d.ts","sourceRoot":"","sources":["../src/collection-row-ingress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAMvD,OAAO,EACL,4BAA4B,EAI5B,KAAK,gCAAgC,EACtC,MAAM,gCAAgC,CAAC;AAExC,UAAU,2BAA2B;IACnC,QAAQ,CAAC,SAAS,EAAE,gCAAgC,CAAC;IACrD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;CACnC;AAgMD,eAAO,MAAM,gCAAgC,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,aAAa,EAAE,CAAC,EAAE,CAAC,cAClF,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,UACpC,aAAa,CAAC,CAAC,CAAC,WACf,2BAA2B,KACnC,MAAM,CAAC,MAAM,CACd,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAC9B,4BAA4B,GAAG,wBAAwB,CAUtD,CAAC;AAEJ,eAAO,MAAM,kCAAkC,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,aAAa,EAAE,CAAC,EAAE,CAAC,cACpF,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,UACpC,aAAa,CAAC,CAAC,CAAC,WACf,2BAA2B,KACnC,MAAM,CAAC,MAAM,CACd,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAC9B,4BAA4B,GAAG,wBAAwB,CAKtD,CAAC;AAEJ,eAAO,MAAM,8BAA8B,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,aAAa,EAAE,CAAC,EAAE,CAAC,cAChF,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,UACpC,aAAa,CAAC,CAAC,CAAC,WACf,2BAA2B,KACnC,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAU7B,CAAC"}
@@ -0,0 +1,110 @@
1
+ import { EffectInputCallbackError } from "@sunfall/arc-core";
2
+ import { Effect } from "effect";
3
+ import { CollectionValueReadError, cloneCollectionValue, collectionExecutableValuePath, } from "./collection-value-detachment.js";
4
+ import { CollectionSnapshotCodecError, decodeCollectionOutputValuesEffect, decodeCollectionOutputValuesSync, validateCollectionKey, } from "./collection-snapshot-codec.js";
5
+ const collectionIngressCallbackError = (definition, operation, path, cause) => new EffectInputCallbackError({
6
+ operation: `Collection.getKey(${definition.name})`,
7
+ cause,
8
+ guidance: `Collection row ingress getKey callbacks must be synchronous, pure, and total. The failing ${operation} value was at ${path}.`,
9
+ });
10
+ const collectionIngressKey = (definition, value, operation, path) => {
11
+ try {
12
+ return validateCollectionKey(definition.getKey(value), operation, path);
13
+ }
14
+ catch (cause) {
15
+ if (cause instanceof CollectionSnapshotCodecError) {
16
+ throw cause;
17
+ }
18
+ throw collectionIngressCallbackError(definition, operation, path, cause);
19
+ }
20
+ };
21
+ const collectionIngressKeyEffect = (definition, value, operation, path) => Effect.try({
22
+ try: () => collectionIngressKey(definition, value, operation, path),
23
+ catch: (cause) => cause instanceof CollectionSnapshotCodecError || cause instanceof EffectInputCallbackError
24
+ ? cause
25
+ : collectionIngressCallbackError(definition, operation, path, cause),
26
+ });
27
+ const validateCollectionPlainRowValue = (value, operation, path) => {
28
+ try {
29
+ const executable = collectionExecutableValuePath(value, path);
30
+ if (executable !== undefined) {
31
+ throw new CollectionSnapshotCodecError({
32
+ operation,
33
+ path: executable.path,
34
+ reason: executable.reason,
35
+ });
36
+ }
37
+ }
38
+ catch (cause) {
39
+ if (cause instanceof CollectionSnapshotCodecError) {
40
+ throw cause;
41
+ }
42
+ throw collectionRowValueReadError(operation, cause);
43
+ }
44
+ };
45
+ const collectionRowValueReadError = (operation, cause) => {
46
+ const path = cause instanceof CollectionValueReadError ? cause.path : "$";
47
+ return new EffectInputCallbackError({
48
+ operation: `Collection.rowValue.${operation}`,
49
+ cause,
50
+ guidance: `Collection row values must be plain readable data before ${operation}. Reading row data at ${path} failed; move host getters/proxies behind collection load or mutation Effects.`,
51
+ });
52
+ };
53
+ const validateCollectionPlainRowValueEffect = (value, operation, path) => Effect.try({
54
+ try: () => validateCollectionPlainRowValue(value, operation, path),
55
+ catch: (cause) => cause instanceof CollectionSnapshotCodecError || cause instanceof EffectInputCallbackError
56
+ ? cause
57
+ : collectionRowValueReadError(operation, cause),
58
+ });
59
+ const cloneCollectionRowValue = (value, operation, path) => {
60
+ try {
61
+ return cloneCollectionValue(value, undefined, path);
62
+ }
63
+ catch (cause) {
64
+ throw collectionRowValueReadError(operation, cause);
65
+ }
66
+ };
67
+ const cloneCollectionRowValueEffect = (value, operation, path) => Effect.try({
68
+ try: () => cloneCollectionRowValue(value, operation, path),
69
+ catch: (cause) => cause instanceof EffectInputCallbackError
70
+ ? cause
71
+ : collectionRowValueReadError(operation, cause),
72
+ });
73
+ const storedRowsFromDecodedValuesEffect = (definition, values, options) => Effect.gen(function* () {
74
+ const rows = [];
75
+ for (const [index, decoded] of values.entries()) {
76
+ const valuePath = `${options.path}[${index}]`;
77
+ yield* validateCollectionPlainRowValueEffect(decoded, options.operation, valuePath);
78
+ const value = yield* cloneCollectionRowValueEffect(decoded, options.operation, valuePath);
79
+ const key = yield* collectionIngressKeyEffect(definition, value, options.operation, `${options.path}[${index}].key`);
80
+ rows.push({
81
+ key,
82
+ value,
83
+ synced: options.synced,
84
+ origin: options.origin,
85
+ });
86
+ }
87
+ return rows;
88
+ });
89
+ const storedRowsFromDecodedValuesSync = (definition, values, options) => {
90
+ const rows = [];
91
+ for (const [index, decoded] of values.entries()) {
92
+ const valuePath = `${options.path}[${index}]`;
93
+ validateCollectionPlainRowValue(decoded, options.operation, valuePath);
94
+ const value = cloneCollectionRowValue(decoded, options.operation, valuePath);
95
+ const key = collectionIngressKey(definition, value, options.operation, `${options.path}[${index}].key`);
96
+ rows.push({
97
+ key,
98
+ value,
99
+ synced: options.synced,
100
+ origin: options.origin,
101
+ });
102
+ }
103
+ return rows;
104
+ };
105
+ const decodeCollectionInputValuesEffect = (definition, values, operation, path) => decodeCollectionOutputValuesEffect(definition.options.input, values, operation, path);
106
+ const decodeCollectionMutationValuesEffect = (definition, values, operation, path) => Effect.flatMap(decodeCollectionInputValuesEffect(definition, values, operation, `${path}.input`), (decodedInput) => decodeCollectionOutputValuesEffect(definition.options.output, decodedInput, operation, path));
107
+ export const ingestCollectionOutputRowsEffect = (definition, values, options) => Effect.flatMap(decodeCollectionOutputValuesEffect(definition.options.output, values, options.operation, options.path), (decoded) => storedRowsFromDecodedValuesEffect(definition, decoded, options));
108
+ export const ingestCollectionMutationRowsEffect = (definition, values, options) => Effect.flatMap(decodeCollectionMutationValuesEffect(definition, values, options.operation, options.path), (decoded) => storedRowsFromDecodedValuesEffect(definition, decoded, options));
109
+ export const ingestCollectionOutputRowsSync = (definition, values, options) => storedRowsFromDecodedValuesSync(definition, decodeCollectionOutputValuesSync(definition.options.output, values, options.operation, options.path), options);
110
+ //# sourceMappingURL=collection-row-ingress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-row-ingress.js","sourceRoot":"","sources":["../src/collection-row-ingress.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { EffectInputCallbackError, type EffectInput } from "@sunfall/arc-core";
2
+ import { Effect, Scope } from "effect";
3
+ import type { CollectionSnapshotCodecError } from "./collection-snapshot-codec.js";
4
+ import type { CollectionChangeFeedAdapter, CollectionChangeFeedSubscribeOptions } from "./sync-adapter.js";
5
+ import { type RuntimeCollectionStore } from "./runtime-collection-store.js";
6
+ import type { AnyCollection, CollectionChange, CollectionDefinition, CollectionHydrateOptions, CollectionHydrationPayload, CollectionKey, CollectionOptions, CollectionPersistOptions, CollectionRuntimeError, CollectionWriteOptions } from "./collection-contract.js";
7
+ export { collectionStoreEffect, currentCollectionStore, runWithCollectionStore, storeFor, subscribeCollectionEventsEffect, type RuntimeCollectionStore, } from "./runtime-collection-store.js";
8
+ export declare const recordCollectionPreload: (definition: AnyCollection) => Effect.Effect<void>;
9
+ export declare const persistenceKey: <A extends object, K extends CollectionKey, E, R>(definition: CollectionDefinition<A, K, E, R>, options?: CollectionPersistOptions) => string;
10
+ export declare const dehydrateCollections: (collections: Iterable<AnyCollection>, store?: RuntimeCollectionStore) => CollectionHydrationPayload;
11
+ export declare const dehydrateCollectionsEffect: (collections: Iterable<AnyCollection>) => Effect.Effect<CollectionHydrationPayload, CollectionSnapshotCodecError | EffectInputCallbackError>;
12
+ export declare const hydrateCollectionsEffect: (collections: Iterable<AnyCollection>, payload: CollectionHydrationPayload, options?: CollectionHydrateOptions) => Effect.Effect<void, CollectionSnapshotCodecError | EffectInputCallbackError>;
13
+ export declare const validateCollectionsHydrationEffect: (collections: Iterable<AnyCollection>, payload: CollectionHydrationPayload, options?: CollectionHydrateOptions) => Effect.Effect<void, CollectionSnapshotCodecError | EffectInputCallbackError>;
14
+ export declare const subscribeCollectionChangesEffect: <A extends object, K extends CollectionKey, E, R, FeedError = never, FeedRequirements = never>(definition: CollectionDefinition<A, K, E, R>, adapter: CollectionChangeFeedAdapter<A, K, FeedError, FeedRequirements, E, R>, options?: CollectionChangeFeedSubscribeOptions) => Effect.Effect<void, CollectionRuntimeError<E> | FeedError, R | FeedRequirements | Scope.Scope>;
15
+ export declare const applyCollectionChangesEffect: <A extends object, K extends CollectionKey, E, R>(definition: CollectionDefinition<A, K, E, R>, changes: ReadonlyArray<CollectionChange<A, K>>, options?: CollectionWriteOptions) => Effect.Effect<void, CollectionRuntimeError<E>, R>;
16
+ export declare const defineCollection: <A extends object, K extends CollectionKey = string, E = never, R = never>(options: Omit<CollectionOptions<A, K, E, R>, "load" | "refetch"> & {
17
+ readonly load?: () => EffectInput<ReadonlyArray<A>, E, R>;
18
+ readonly refetch?: () => EffectInput<ReadonlyArray<A>, E, R>;
19
+ }, register: (name: string, definition: AnyCollection) => void) => CollectionDefinition<A, K, E, R>;
20
+ //# sourceMappingURL=collection-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-runtime.d.ts","sourceRoot":"","sources":["../src/collection-runtime.ts"],"names":[],"mappings":"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"}