@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,122 @@
1
+ import { Effect } from "effect";
2
+ import { CollectionDefinitionSnapshotTypeId } from "./collection-ids.js";
3
+ import { CollectionSnapshotCodecError } from "./collection-snapshot-codec.js";
4
+ import { withCollectionDurableCommitPermit } from "./collection-write-commit.js";
5
+ /** Marks a Collection Definition as requiring store-explicit snapshot dispatch. */
6
+ export function markStoreExplicitCollectionSnapshotDefinition(definition) {
7
+ Object.defineProperty(definition, CollectionDefinitionSnapshotTypeId, {
8
+ value: CollectionDefinitionSnapshotTypeId,
9
+ enumerable: false,
10
+ });
11
+ }
12
+ /** Checks only for the marker; callers should still validate implementation fields. */
13
+ export const hasStoreExplicitCollectionSnapshotMarker = (definition) => definition[CollectionDefinitionSnapshotTypeId] === CollectionDefinitionSnapshotTypeId;
14
+ /** Checks that a marked Collection Definition has the full store-explicit Interface. */
15
+ export const isStoreExplicitCollectionSnapshotDefinition = (definition) => hasStoreExplicitCollectionSnapshotMarker(definition) &&
16
+ typeof definition
17
+ .snapshotWithStore === "function" &&
18
+ typeof definition
19
+ .snapshotWithStoreEffect === "function" &&
20
+ typeof definition
21
+ .hydratePreflightEffect === "function" &&
22
+ typeof definition
23
+ .hydrateWithStoreEffect === "function";
24
+ const missingStoreExplicitSnapshotMethods = (definition) => {
25
+ const candidate = definition;
26
+ return [
27
+ ...(typeof candidate.snapshotWithStore === "function" ? [] : ["snapshotWithStore"]),
28
+ ...(typeof candidate.snapshotWithStoreEffect === "function" ? [] : ["snapshotWithStoreEffect"]),
29
+ ...(typeof candidate.hydratePreflightEffect === "function" ? [] : ["hydratePreflightEffect"]),
30
+ ...(typeof candidate.hydrateWithStoreEffect === "function" ? [] : ["hydrateWithStoreEffect"]),
31
+ ];
32
+ };
33
+ const incompleteStoreExplicitSnapshotError = (definition, operation) => new CollectionSnapshotCodecError({
34
+ operation,
35
+ path: "$",
36
+ reason: `Collection "${definition.name}" is marked as owning store-explicit snapshots but is missing ${missingStoreExplicitSnapshotMethods(definition).join(", ")}.`,
37
+ });
38
+ const requireStoreExplicitCollectionSnapshotDefinition = (definition, operation) => {
39
+ if (isStoreExplicitCollectionSnapshotDefinition(definition)) {
40
+ return definition;
41
+ }
42
+ throw incompleteStoreExplicitSnapshotError(definition, operation);
43
+ };
44
+ const requireStoreExplicitCollectionSnapshotDefinitionEffect = (definition, operation) => isStoreExplicitCollectionSnapshotDefinition(definition)
45
+ ? Effect.succeed(definition)
46
+ : Effect.fail(incompleteStoreExplicitSnapshotError(definition, operation));
47
+ /** Runs the synchronous store-explicit snapshot implementation. */
48
+ export const snapshotStoreExplicitCollection = (definition, store, updatedAt) => requireStoreExplicitCollectionSnapshotDefinition(definition, "snapshot").snapshotWithStore(store, updatedAt);
49
+ /** Runs the Effect-backed store-explicit snapshot implementation. */
50
+ export const snapshotStoreExplicitCollectionEffect = (definition, store, updatedAt) => Effect.gen(function* () {
51
+ const snapshotDefinition = yield* requireStoreExplicitCollectionSnapshotDefinitionEffect(definition, "snapshot");
52
+ return yield* snapshotDefinition.snapshotWithStoreEffect(store, updatedAt);
53
+ });
54
+ /** Runs hydrate preflight for a store-explicit snapshot definition. */
55
+ export const hydrateStoreExplicitCollectionSnapshotPreflightEffect = (definition, snapshot, options) => Effect.gen(function* () {
56
+ const snapshotDefinition = yield* requireStoreExplicitCollectionSnapshotDefinitionEffect(definition, "hydrate");
57
+ yield* snapshotDefinition.hydratePreflightEffect(snapshot, options);
58
+ });
59
+ /** Runs hydrate application for a store-explicit snapshot definition. */
60
+ export const hydrateStoreExplicitCollectionSnapshotEffect = (definition, store, snapshot, options) => Effect.gen(function* () {
61
+ const snapshotDefinition = yield* requireStoreExplicitCollectionSnapshotDefinitionEffect(definition, "hydrate");
62
+ yield* snapshotDefinition.hydratePreflightEffect(snapshot, options);
63
+ yield* snapshotDefinition.hydrateWithStoreEffect(store, snapshot, options);
64
+ });
65
+ export const collectionDurableSnapshotSources = (definition) => {
66
+ const visited = new Set();
67
+ const sources = [];
68
+ const visit = (current) => {
69
+ if (visited.has(current)) {
70
+ return;
71
+ }
72
+ visited.add(current);
73
+ const explicit = current;
74
+ if (hasStoreExplicitCollectionSnapshotMarker(current) &&
75
+ typeof explicit.durableSnapshotSources === "function") {
76
+ for (const source of explicit.durableSnapshotSources()) {
77
+ visit(source);
78
+ }
79
+ return;
80
+ }
81
+ sources.push(current);
82
+ };
83
+ visit(definition);
84
+ return sources;
85
+ };
86
+ const durableSnapshotSourceOrder = new WeakMap();
87
+ let nextDurableSnapshotSourceOrder = 0;
88
+ const durableSnapshotSourceOrderOf = (definition) => {
89
+ const existing = durableSnapshotSourceOrder.get(definition);
90
+ if (existing !== undefined) {
91
+ return existing;
92
+ }
93
+ const order = nextDurableSnapshotSourceOrder++;
94
+ durableSnapshotSourceOrder.set(definition, order);
95
+ return order;
96
+ };
97
+ /**
98
+ * Plans the concrete writable sources whose durable commit permits protect a
99
+ * snapshot payload.
100
+ *
101
+ * Store-explicit definitions such as live-query collections can expand to
102
+ * transitive source collections. The returned sources are deduped by
103
+ * definition identity and sorted deterministically so unrelated callers cannot
104
+ * acquire the same permits in opposite order.
105
+ */
106
+ export const collectionDurableSnapshotPermitSources = (definitions) => {
107
+ const sources = new Set();
108
+ for (const definition of definitions) {
109
+ for (const source of collectionDurableSnapshotSources(definition)) {
110
+ sources.add(source);
111
+ }
112
+ }
113
+ return Array.from(sources).sort((left, right) => {
114
+ const byName = left.name.localeCompare(right.name);
115
+ return byName === 0
116
+ ? durableSnapshotSourceOrderOf(left) - durableSnapshotSourceOrderOf(right)
117
+ : byName;
118
+ });
119
+ };
120
+ /** Acquires all durable snapshot permits for a payload using the shared plan. */
121
+ export const withCollectionDurableSnapshotPermits = (store, definitions, effect) => collectionDurableSnapshotPermitSources(definitions).reduceRight((current, source) => withCollectionDurableCommitPermit(store.state(source), current), effect);
122
+ //# sourceMappingURL=collection-definition-snapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-definition-snapshot.js","sourceRoot":"","sources":["../src/collection-definition-snapshot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { CollectionKey } from "./collection-contract.js";
2
+ declare const CollectionRowNotFound_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
3
+ readonly _tag: "CollectionRowNotFound";
4
+ } & Readonly<A>;
5
+ /**
6
+ * Error raised when an update/delete targets a missing row.
7
+ */
8
+ export declare class CollectionRowNotFound extends CollectionRowNotFound_base<{
9
+ readonly collection: string;
10
+ readonly key: CollectionKey;
11
+ }> {
12
+ }
13
+ declare const CollectionRowKeyChanged_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
14
+ readonly _tag: "CollectionRowKeyChanged";
15
+ } & Readonly<A>;
16
+ /**
17
+ * Error raised when an update would move a row to a different collection key.
18
+ */
19
+ export declare class CollectionRowKeyChanged extends CollectionRowKeyChanged_base<{
20
+ readonly collection: string;
21
+ readonly key: CollectionKey;
22
+ readonly nextKey: CollectionKey;
23
+ readonly guidance: string;
24
+ }> {
25
+ }
26
+ declare const ReadonlyCollectionMutation_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
27
+ readonly _tag: "ReadonlyCollectionMutation";
28
+ } & Readonly<A>;
29
+ /**
30
+ * Error raised when a mutation is attempted on a read-only live-query collection.
31
+ */
32
+ export declare class ReadonlyCollectionMutation extends ReadonlyCollectionMutation_base<{
33
+ readonly collection: string;
34
+ readonly operation: string;
35
+ }> {
36
+ }
37
+ export {};
38
+ //# sourceMappingURL=collection-errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-errors.d.ts","sourceRoot":"","sources":["../src/collection-errors.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;;;;AAE9D;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,2BAA0C;IACnF,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC;CAC7B,CAAC;CAAG;;;;AAEL;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,6BAA4C;IACvF,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,CAAC;CAAG;;;;AAEL;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,gCAA+C;IAC7F,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,CAAC;CAAG"}
@@ -0,0 +1,17 @@
1
+ import { Data } from "effect";
2
+ /**
3
+ * Error raised when an update/delete targets a missing row.
4
+ */
5
+ export class CollectionRowNotFound extends Data.TaggedError("CollectionRowNotFound") {
6
+ }
7
+ /**
8
+ * Error raised when an update would move a row to a different collection key.
9
+ */
10
+ export class CollectionRowKeyChanged extends Data.TaggedError("CollectionRowKeyChanged") {
11
+ }
12
+ /**
13
+ * Error raised when a mutation is attempted on a read-only live-query collection.
14
+ */
15
+ export class ReadonlyCollectionMutation extends Data.TaggedError("ReadonlyCollectionMutation") {
16
+ }
17
+ //# sourceMappingURL=collection-errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-errors.js","sourceRoot":"","sources":["../src/collection-errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAG9B;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAGjF;CAAG;AAEL;;GAEG;AACH,MAAM,OAAO,uBAAwB,SAAQ,IAAI,CAAC,WAAW,CAAC,yBAAyB,CAKrF;CAAG;AAEL;;GAEG;AACH,MAAM,OAAO,0BAA2B,SAAQ,IAAI,CAAC,WAAW,CAAC,4BAA4B,CAG3F;CAAG"}
@@ -0,0 +1,6 @@
1
+ /** Runtime marker for Collection Definitions. */
2
+ export declare const CollectionTypeId: unique symbol;
3
+ /** Runtime marker for Collection Store instances. */
4
+ export declare const CollectionStoreTypeId: unique symbol;
5
+ export declare const CollectionDefinitionSnapshotTypeId: unique symbol;
6
+ //# sourceMappingURL=collection-ids.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-ids.d.ts","sourceRoot":"","sources":["../src/collection-ids.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,eAAO,MAAM,gBAAgB,EAAE,OAAO,MAEV,CAAC;AAE7B,qDAAqD;AACrD,eAAO,MAAM,qBAAqB,EAAE,OAAO,MAEV,CAAC;AAElC,eAAO,MAAM,kCAAkC,EAAE,OAAO,MAEV,CAAC"}
@@ -0,0 +1,6 @@
1
+ /** Runtime marker for Collection Definitions. */
2
+ export const CollectionTypeId = Symbol.for("@sunfall/arc-db/Collection");
3
+ /** Runtime marker for Collection Store instances. */
4
+ export const CollectionStoreTypeId = Symbol.for("@sunfall/arc-db/CollectionStore");
5
+ export const CollectionDefinitionSnapshotTypeId = Symbol.for("@sunfall/arc-db/CollectionDefinitionSnapshot");
6
+ //# sourceMappingURL=collection-ids.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-ids.js","sourceRoot":"","sources":["../src/collection-ids.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,MAAM,CAAC,MAAM,gBAAgB,GAAkB,MAAM,CAAC,GAAG,CACvD,4BAA4B,CACF,CAAC;AAE7B,qDAAqD;AACrD,MAAM,CAAC,MAAM,qBAAqB,GAAkB,MAAM,CAAC,GAAG,CAC5D,iCAAiC,CACF,CAAC;AAElC,MAAM,CAAC,MAAM,kCAAkC,GAAkB,MAAM,CAAC,GAAG,CACzE,8CAA8C,CACF,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { AnyCollection, CollectionDefinition, CollectionIndexDefinition, CollectionIndexRecord, CollectionIndexValue, CollectionKey, CollectionRow } from "./collection-contract.js";
2
+ import { type CollectionState, type StoredRow } from "./collection-state.js";
3
+ declare const UnknownCollectionIndex_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
4
+ readonly _tag: "UnknownCollectionIndex";
5
+ } & Readonly<A>;
6
+ /**
7
+ * Error raised when reading an index that was not declared on the collection.
8
+ */
9
+ export declare class UnknownCollectionIndex extends UnknownCollectionIndex_base<{
10
+ readonly collection: string;
11
+ readonly index: string;
12
+ }> {
13
+ }
14
+ export interface CollectionIndexCacheEntry<A extends object, K extends CollectionKey> {
15
+ readonly version: number;
16
+ readonly buckets: ReadonlyMap<string, ReadonlyArray<StoredRow<A, K>>>;
17
+ }
18
+ export declare const collectionIndexKey: (value: CollectionIndexValue) => string;
19
+ export declare const collectionIndexes: <A extends object>(options: {
20
+ readonly indexes?: CollectionIndexRecord<A>;
21
+ }) => ReadonlyMap<string, CollectionIndexDefinition<A>>;
22
+ export declare const collectionIndex: <A extends object>(definition: AnyCollection, name: string) => CollectionIndexDefinition<A>;
23
+ export declare const collectionIndexValues: <A extends object>(index: CollectionIndexDefinition<A>, value: A) => ReadonlyArray<CollectionIndexValue>;
24
+ export declare const uniqueCollectionIndexValues: <A extends object>(index: CollectionIndexDefinition<A>, value: A) => ReadonlyArray<CollectionIndexValue>;
25
+ export declare const rowsMatchingCollectionIndex: <A extends object, K extends CollectionKey>(definition: CollectionDefinition<A, K, any, any>, rows: ReadonlyArray<CollectionRow<A, K>>, index: string, value: CollectionIndexValue) => ReadonlyArray<CollectionRow<A, K>>;
26
+ export declare const rowsByCollectionIndex: <A extends object, K extends CollectionKey, E, R>(definition: CollectionDefinition<A, K, E, R>, state: CollectionState<A, K, E>, index: string, value: CollectionIndexValue) => ReadonlyArray<CollectionRow<A, K>>;
27
+ export declare const collectionIndexJoinKeys: <A extends object>(definition: AnyCollection, index: string, row: CollectionRow<A, any>) => ReadonlyArray<CollectionIndexValue>;
28
+ export {};
29
+ //# sourceMappingURL=collection-index-materialization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-index-materialization.d.ts","sourceRoot":"","sources":["../src/collection-index-materialization.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EACpB,yBAAyB,EAEzB,qBAAqB,EAErB,oBAAoB,EACpB,aAAa,EACb,aAAa,EACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAwB,KAAK,eAAe,EAAE,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;;;;AAMnG;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,4BAA2C;IACrF,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,CAAC;CAAG;AAEL,MAAM,WAAW,yBAAyB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,aAAa;IAClF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;CACvE;AAiDD,eAAO,MAAM,kBAAkB,UAAW,oBAAoB,KAAG,MAKhE,CAAC;AAUF,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,MAAM,WAAW;IAC3D,QAAQ,CAAC,OAAO,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;CAC7C,KAAG,WAAW,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC,CAAC,CAMjD,CAAC;AAEJ,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,MAAM,cAClC,aAAa,QACnB,MAAM,KACX,yBAAyB,CAAC,CAAC,CAQ7B,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,CAAC,SAAS,MAAM,SAC7C,yBAAyB,CAAC,CAAC,CAAC,SAC5B,CAAC,KACP,aAAa,CAAC,oBAAoB,CAapC,CAAC;AAEF,eAAO,MAAM,2BAA2B,GAAI,CAAC,SAAS,MAAM,SACnD,yBAAyB,CAAC,CAAC,CAAC,SAC5B,CAAC,KACP,aAAa,CAAC,oBAAoB,CAWpC,CAAC;AAEF,eAAO,MAAM,2BAA2B,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,aAAa,cACvE,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,QAC1C,aAAa,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SACjC,MAAM,SACN,oBAAoB,KAC1B,aAAa,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAQnC,CAAC;AA0BF,eAAO,MAAM,qBAAqB,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,aAAa,EAAE,CAAC,EAAE,CAAC,cACvE,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,SACrC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,SACxB,MAAM,SACN,oBAAoB,KAC1B,aAAa,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAYnC,CAAC;AAaF,eAAO,MAAM,uBAAuB,GAAI,CAAC,SAAS,MAAM,cAC1C,aAAa,SAClB,MAAM,OACR,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,KACzB,aAAa,CAAC,oBAAoB,CAC0D,CAAC"}
@@ -0,0 +1,118 @@
1
+ import { EffectInputCallbackError, stableStringify } from "@sunfall/arc-core";
2
+ import { Data } from "effect";
3
+ import { augmentCollectionRow } from "./collection-state.js";
4
+ import { cloneCollectionValue, collectionExecutableValuePath, } from "./collection-value-detachment.js";
5
+ /**
6
+ * Error raised when reading an index that was not declared on the collection.
7
+ */
8
+ export class UnknownCollectionIndex extends Data.TaggedError("UnknownCollectionIndex") {
9
+ }
10
+ const collectionIndexGuidance = "Collection secondary index selectors must return scalar plain values: string, number, boolean, valid Date, null, undefined, or arrays of those values.";
11
+ const collectionIndexError = (operation, cause) => new EffectInputCallbackError({
12
+ operation,
13
+ cause,
14
+ guidance: collectionIndexGuidance,
15
+ });
16
+ const isCollectionIndexValue = (value) => value === null ||
17
+ value === undefined ||
18
+ typeof value === "string" ||
19
+ typeof value === "number" ||
20
+ typeof value === "boolean" ||
21
+ value instanceof Date;
22
+ const normalizeCollectionIndexValue = (value, operation, path) => {
23
+ const executable = collectionExecutableValuePath(value, path);
24
+ if (executable !== undefined) {
25
+ throw collectionIndexError(operation, new TypeError(`Collection secondary index value contains ${executable.reason} at ${executable.path}.`));
26
+ }
27
+ if (!isCollectionIndexValue(value)) {
28
+ throw collectionIndexError(operation, new TypeError(`Collection secondary index value at ${path} must be a scalar index value.`));
29
+ }
30
+ if (value instanceof Date && !Number.isFinite(value.getTime())) {
31
+ throw collectionIndexError(operation, new TypeError(`Collection secondary index Date value at ${path} must be valid.`));
32
+ }
33
+ return value;
34
+ };
35
+ export const collectionIndexKey = (value) => {
36
+ const normalized = normalizeCollectionIndexValue(value, "Collection.index.value", "$.indexValue");
37
+ return normalized instanceof Date
38
+ ? `Date:${normalized.toISOString()}`
39
+ : stableStringify(normalized);
40
+ };
41
+ const normalizeCollectionIndex = (index) => (typeof index === "function" ? { key: index } : index);
42
+ const isCollectionIndexValueArray = (value) => Array.isArray(value);
43
+ export const collectionIndexes = (options) => new Map(Object.entries(options.indexes ?? {}).map(([name, index]) => [
44
+ name,
45
+ normalizeCollectionIndex(index),
46
+ ]));
47
+ export const collectionIndex = (definition, name) => {
48
+ const index = collectionIndexes(definition.options).get(name);
49
+ if (!index) {
50
+ throw new UnknownCollectionIndex({ collection: definition.name, index: name });
51
+ }
52
+ return index;
53
+ };
54
+ export const collectionIndexValues = (index, value) => {
55
+ try {
56
+ const result = index.key(value);
57
+ const candidates = isCollectionIndexValueArray(result) ? result : [result];
58
+ return candidates.map((candidate, index) => normalizeCollectionIndexValue(candidate, "Collection.index.selector", `$.index[${index}]`));
59
+ }
60
+ catch (cause) {
61
+ if (cause instanceof EffectInputCallbackError) {
62
+ throw cause;
63
+ }
64
+ throw collectionIndexError("Collection.index.selector", cause);
65
+ }
66
+ };
67
+ export const uniqueCollectionIndexValues = (index, value) => {
68
+ const values = [];
69
+ const seen = new Set();
70
+ for (const candidate of collectionIndexValues(index, value)) {
71
+ const key = collectionIndexKey(candidate);
72
+ if (!seen.has(key)) {
73
+ seen.add(key);
74
+ values.push(candidate);
75
+ }
76
+ }
77
+ return values;
78
+ };
79
+ export const rowsMatchingCollectionIndex = (definition, rows, index, value) => {
80
+ const definitionIndex = collectionIndex(definition, index);
81
+ const key = collectionIndexKey(value);
82
+ return rows.filter((row) => collectionIndexValues(definitionIndex, row).some((candidate) => collectionIndexKey(candidate) === key));
83
+ };
84
+ const buildCollectionIndexCache = (state, version, index) => {
85
+ const buckets = new Map();
86
+ for (const row of state.rows.values()) {
87
+ for (const value of uniqueCollectionIndexValues(index, row.value)) {
88
+ const key = collectionIndexKey(value);
89
+ const bucket = buckets.get(key);
90
+ if (bucket) {
91
+ bucket.push(row);
92
+ }
93
+ else {
94
+ buckets.set(key, [row]);
95
+ }
96
+ }
97
+ }
98
+ return {
99
+ version,
100
+ buckets,
101
+ };
102
+ };
103
+ export const rowsByCollectionIndex = (definition, state, index, value) => {
104
+ const definitionIndex = collectionIndex(definition, index);
105
+ const version = state.version.get();
106
+ let cache = state.indexCache.get(index);
107
+ if (!cache || cache.version !== version) {
108
+ cache = buildCollectionIndexCache(state, version, definitionIndex);
109
+ state.indexCache.set(index, cache);
110
+ }
111
+ return (cache.buckets.get(collectionIndexKey(value)) ?? []).map((row) => augmentCollectionRow(definition, row));
112
+ };
113
+ const collectionIndexRowValue = (row) => {
114
+ const { $key: _key, $collection: _collection, $synced: _synced, $origin: _origin, ...value } = row;
115
+ return cloneCollectionValue(value);
116
+ };
117
+ export const collectionIndexJoinKeys = (definition, index, row) => uniqueCollectionIndexValues(collectionIndex(definition, index), collectionIndexRowValue(row));
118
+ //# sourceMappingURL=collection-index-materialization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-index-materialization.js","sourceRoot":"","sources":["../src/collection-index-materialization.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { CollectionKey, CollectionMutation, CollectionTransaction } from "./collection-contract.js";
2
+ import { pendingEntryFromSnapshot, pendingMutationSnapshot, pendingMutationSnapshots } from "./collection-snapshot-codec.js";
3
+ import { type CollectionState, type PendingMutationEntry, type StoredRow } from "./collection-state.js";
4
+ export declare const createCollectionTransaction: <A extends object, K extends CollectionKey>(state: CollectionState<A, K, any>, collection: string, mutations: ReadonlyArray<CollectionMutation<A, K>>) => CollectionTransaction<A, K>;
5
+ export declare const advanceCollectionTransactionIdentity: (state: CollectionState<any, any, any>, id: string) => void;
6
+ export { pendingEntryFromSnapshot, pendingMutationSnapshot, pendingMutationSnapshots };
7
+ export declare const enqueuePendingMutation: <A extends object, K extends CollectionKey>(state: CollectionState<A, K, any>, mutation: CollectionTransaction<A, K>, rollbackRows: ReadonlyMap<K, StoredRow<A, K> | undefined>, createdAt: number) => PendingMutationEntry<A, K>;
8
+ export declare const dequeuePendingMutation: <A extends object, K extends CollectionKey>(state: CollectionState<A, K, any>, id: string) => void;
9
+ export declare const recordPendingMutationAttempt: <A extends object, K extends CollectionKey>(entry: PendingMutationEntry<A, K>) => CollectionTransaction<A, K>;
10
+ //# sourceMappingURL=collection-mutation-queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-mutation-queue.d.ts","sourceRoot":"","sources":["../src/collection-mutation-queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,SAAS,EACf,MAAM,uBAAuB,CAAC;AAK/B,eAAO,MAAM,2BAA2B,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,aAAa,SAC5E,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,cACrB,MAAM,aACP,aAAa,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KACjD,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAKzB,CAAC;AAEL,eAAO,MAAM,oCAAoC,UACxC,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,MACjC,MAAM,KACT,IAUF,CAAC;AAEF,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,CAAC;AAEvF,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,aAAa,SACvE,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,YACvB,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,gBACvB,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,aAC9C,MAAM,KAChB,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAgB3B,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,aAAa,SACvE,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAC7B,MAAM,KACT,IAIF,CAAC;AAEF,eAAO,MAAM,4BAA4B,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,aAAa,SAC7E,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,KAChC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAG5B,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { pendingEntryFromSnapshot, pendingMutationSnapshot, pendingMutationSnapshots, } from "./collection-snapshot-codec.js";
2
+ import { bumpCollectionState, } from "./collection-state.js";
3
+ import { cloneFrozenCollectionTransaction } from "./collection-value-detachment.js";
4
+ const transactionIdPattern = /^ctx_(\d+)$/;
5
+ export const createCollectionTransaction = (state, collection, mutations) => cloneFrozenCollectionTransaction({
6
+ id: `ctx_${++state.nextTransactionId}`,
7
+ collection,
8
+ mutations,
9
+ });
10
+ export const advanceCollectionTransactionIdentity = (state, id) => {
11
+ const matched = transactionIdPattern.exec(id);
12
+ if (!matched) {
13
+ return;
14
+ }
15
+ const value = Number.parseInt(matched[1] ?? "0", 10);
16
+ if (Number.isSafeInteger(value) && value > state.nextTransactionId) {
17
+ state.nextTransactionId = value;
18
+ }
19
+ };
20
+ export { pendingEntryFromSnapshot, pendingMutationSnapshot, pendingMutationSnapshots };
21
+ export const enqueuePendingMutation = (state, mutation, rollbackRows, createdAt) => {
22
+ const existing = state.pendingMutations.get(mutation.id);
23
+ if (existing) {
24
+ return existing;
25
+ }
26
+ const entry = {
27
+ transaction: cloneFrozenCollectionTransaction(mutation),
28
+ rollbackRows: new Map(rollbackRows),
29
+ createdAt,
30
+ attempts: 0,
31
+ activeAttempt: undefined,
32
+ };
33
+ state.pendingMutations.set(mutation.id, entry);
34
+ bumpCollectionState(state);
35
+ return entry;
36
+ };
37
+ export const dequeuePendingMutation = (state, id) => {
38
+ if (state.pendingMutations.delete(id)) {
39
+ bumpCollectionState(state);
40
+ }
41
+ };
42
+ export const recordPendingMutationAttempt = (entry) => {
43
+ entry.attempts += 1;
44
+ return entry.transaction;
45
+ };
46
+ //# sourceMappingURL=collection-mutation-queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-mutation-queue.js","sourceRoot":"","sources":["../src/collection-mutation-queue.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,mBAAmB,GAIpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,gCAAgC,EAAE,MAAM,kCAAkC,CAAC;AAEpF,MAAM,oBAAoB,GAAG,aAAa,CAAC;AAE3C,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,KAAiC,EACjC,UAAkB,EAClB,SAAkD,EACrB,EAAE,CAC/B,gCAAgC,CAAC;IAC/B,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,iBAAiB,EAAE;IACtC,UAAU;IACV,SAAS;CACV,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,oCAAoC,GAAG,CAClD,KAAqC,EACrC,EAAU,EACJ,EAAE;IACR,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;IACrD,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,KAAK,CAAC,iBAAiB,EAAE,CAAC;QACnE,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC;IAClC,CAAC;AACH,CAAC,CAAC;AAEF,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,CAAC;AAEvF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,KAAiC,EACjC,QAAqC,EACrC,YAAyD,EACzD,SAAiB,EACW,EAAE;IAC9B,MAAM,QAAQ,GAAG,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACzD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,GAA+B;QACxC,WAAW,EAAE,gCAAgC,CAAC,QAAQ,CAAC;QACvD,YAAY,EAAE,IAAI,GAAG,CAAC,YAAY,CAAC;QACnC,SAAS;QACT,QAAQ,EAAE,CAAC;QACX,aAAa,EAAE,SAAS;KACzB,CAAC;IACF,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAC/C,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC3B,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,KAAiC,EACjC,EAAU,EACJ,EAAE;IACR,IAAI,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;QACtC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,KAAiC,EACJ,EAAE;IAC/B,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;IACpB,OAAO,KAAK,CAAC,WAAW,CAAC;AAC3B,CAAC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { Effect } from "effect";
2
+ import { CollectionRowKeyChanged, CollectionRowNotFound } from "./collection-errors.js";
3
+ import type { CollectionDefinition, CollectionKey, CollectionRuntimeError, CollectionTransaction, CollectionUpdate } from "./collection-contract.js";
4
+ /**
5
+ * Flush restored or otherwise queued optimistic collection mutations.
6
+ *
7
+ * The workflow owns restored-pending replay, active attempt joiners, mutation
8
+ * retry policy, optimistic commit/rollback, lifecycle events, and mutation
9
+ * persistence so `Collection.define` can stay a small public facade.
10
+ */
11
+ export declare const flushCollectionPendingMutationsEffect: <A extends object, K extends CollectionKey, E, R>(definition: CollectionDefinition<A, K, E, R>) => Effect.Effect<ReadonlyArray<CollectionTransaction<A, K>>, CollectionRuntimeError<E>, R>;
12
+ /** Optimistically insert rows and run the insert mutation workflow. */
13
+ export declare const insertCollectionMutationEffect: <A extends object, K extends CollectionKey, E, R>(definition: CollectionDefinition<A, K, E, R>, input: A | ReadonlyArray<A>) => Effect.Effect<CollectionTransaction<A, K>, CollectionRuntimeError<E>, R>;
14
+ /** Optimistically update one row and run the update mutation workflow. */
15
+ export declare const updateCollectionMutationEffect: <A extends object, K extends CollectionKey, E, R>(definition: CollectionDefinition<A, K, E, R>, key: K, update: CollectionUpdate<A>) => Effect.Effect<CollectionTransaction<A, K>, CollectionRuntimeError<E> | CollectionRowNotFound | CollectionRowKeyChanged, R>;
16
+ /** Optimistically delete one row and run the delete mutation workflow. */
17
+ export declare const deleteCollectionMutationEffect: <A extends object, K extends CollectionKey, E, R>(definition: CollectionDefinition<A, K, E, R>, key: K) => Effect.Effect<CollectionTransaction<A, K>, CollectionRuntimeError<E> | CollectionRowNotFound, R>;
18
+ //# sourceMappingURL=collection-mutation-workflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-mutation-workflow.d.ts","sourceRoot":"","sources":["../src/collection-mutation-workflow.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,MAAM,EAAQ,MAAM,QAAQ,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAwCxF,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,EAGb,sBAAsB,EAEtB,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAwQlC;;;;;;GAMG;AACH,eAAO,MAAM,qCAAqC,GAChD,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,aAAa,EACvB,CAAC,EACD,CAAC,cAEW,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC3C,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC,CAwBrF,CAAC;AAEL,uEAAuE;AACvE,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,SACrC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,KAC1B,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC,CAmCtE,CAAC;AAEL,0EAA0E;AAC1E,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,OACvC,CAAC,UACE,gBAAgB,CAAC,CAAC,CAAC,KAC1B,MAAM,CAAC,MAAM,CACd,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,EAC3B,sBAAsB,CAAC,CAAC,CAAC,GAAG,qBAAqB,GAAG,uBAAuB,EAC3E,CAAC,CAuCC,CAAC;AAEL,0EAA0E;AAC1E,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,OACvC,CAAC,KACL,MAAM,CAAC,MAAM,CACd,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,EAC3B,sBAAsB,CAAC,CAAC,CAAC,GAAG,qBAAqB,EACjD,CAAC,CA0BC,CAAC"}