effect-dynamodb 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 (171) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +69 -0
  3. package/dist/Aggregate.d.ts +210 -0
  4. package/dist/Aggregate.d.ts.map +1 -0
  5. package/dist/Aggregate.js +1169 -0
  6. package/dist/Aggregate.js.map +1 -0
  7. package/dist/Batch.d.ts +62 -0
  8. package/dist/Batch.d.ts.map +1 -0
  9. package/dist/Batch.js +218 -0
  10. package/dist/Batch.js.map +1 -0
  11. package/dist/Collection.d.ts +58 -0
  12. package/dist/Collection.d.ts.map +1 -0
  13. package/dist/Collection.js +195 -0
  14. package/dist/Collection.js.map +1 -0
  15. package/dist/Collections.d.ts +121 -0
  16. package/dist/Collections.d.ts.map +1 -0
  17. package/dist/Collections.js +121 -0
  18. package/dist/Collections.js.map +1 -0
  19. package/dist/DynamoClient.d.ts +317 -0
  20. package/dist/DynamoClient.d.ts.map +1 -0
  21. package/dist/DynamoClient.js +653 -0
  22. package/dist/DynamoClient.js.map +1 -0
  23. package/dist/DynamoModel.d.ts +278 -0
  24. package/dist/DynamoModel.d.ts.map +1 -0
  25. package/dist/DynamoModel.js +453 -0
  26. package/dist/DynamoModel.js.map +1 -0
  27. package/dist/DynamoSchema.d.ts +137 -0
  28. package/dist/DynamoSchema.d.ts.map +1 -0
  29. package/dist/DynamoSchema.js +188 -0
  30. package/dist/DynamoSchema.js.map +1 -0
  31. package/dist/Entity.d.ts +628 -0
  32. package/dist/Entity.d.ts.map +1 -0
  33. package/dist/Entity.js +2371 -0
  34. package/dist/Entity.js.map +1 -0
  35. package/dist/Errors.d.ts +227 -0
  36. package/dist/Errors.d.ts.map +1 -0
  37. package/dist/Errors.js +93 -0
  38. package/dist/Errors.js.map +1 -0
  39. package/dist/EventStore.d.ts +208 -0
  40. package/dist/EventStore.d.ts.map +1 -0
  41. package/dist/EventStore.js +333 -0
  42. package/dist/EventStore.js.map +1 -0
  43. package/dist/Expression.d.ts +50 -0
  44. package/dist/Expression.d.ts.map +1 -0
  45. package/dist/Expression.js +170 -0
  46. package/dist/Expression.js.map +1 -0
  47. package/dist/KeyComposer.d.ts +125 -0
  48. package/dist/KeyComposer.d.ts.map +1 -0
  49. package/dist/KeyComposer.js +257 -0
  50. package/dist/KeyComposer.js.map +1 -0
  51. package/dist/Marshaller.d.ts +30 -0
  52. package/dist/Marshaller.d.ts.map +1 -0
  53. package/dist/Marshaller.js +115 -0
  54. package/dist/Marshaller.js.map +1 -0
  55. package/dist/Projection.d.ts +28 -0
  56. package/dist/Projection.d.ts.map +1 -0
  57. package/dist/Projection.js +39 -0
  58. package/dist/Projection.js.map +1 -0
  59. package/dist/Query.d.ts +214 -0
  60. package/dist/Query.d.ts.map +1 -0
  61. package/dist/Query.js +397 -0
  62. package/dist/Query.js.map +1 -0
  63. package/dist/Table.d.ts +178 -0
  64. package/dist/Table.d.ts.map +1 -0
  65. package/dist/Table.js +211 -0
  66. package/dist/Table.js.map +1 -0
  67. package/dist/Transaction.d.ts +79 -0
  68. package/dist/Transaction.d.ts.map +1 -0
  69. package/dist/Transaction.js +215 -0
  70. package/dist/Transaction.js.map +1 -0
  71. package/dist/_AggregateCursor.d.ts +44 -0
  72. package/dist/_AggregateCursor.d.ts.map +1 -0
  73. package/dist/_AggregateCursor.js +18 -0
  74. package/dist/_AggregateCursor.js.map +1 -0
  75. package/dist/_AggregateEdges.d.ts +77 -0
  76. package/dist/_AggregateEdges.d.ts.map +1 -0
  77. package/dist/_AggregateEdges.js +41 -0
  78. package/dist/_AggregateEdges.js.map +1 -0
  79. package/dist/_AggregateSchemas.d.ts +69 -0
  80. package/dist/_AggregateSchemas.d.ts.map +1 -0
  81. package/dist/_AggregateSchemas.js +194 -0
  82. package/dist/_AggregateSchemas.js.map +1 -0
  83. package/dist/_AggregateTypes.d.ts +94 -0
  84. package/dist/_AggregateTypes.d.ts.map +1 -0
  85. package/dist/_AggregateTypes.js +7 -0
  86. package/dist/_AggregateTypes.js.map +1 -0
  87. package/dist/_EntityCombinators.d.ts +155 -0
  88. package/dist/_EntityCombinators.d.ts.map +1 -0
  89. package/dist/_EntityCombinators.js +158 -0
  90. package/dist/_EntityCombinators.js.map +1 -0
  91. package/dist/_EntityConfig.d.ts +100 -0
  92. package/dist/_EntityConfig.d.ts.map +1 -0
  93. package/dist/_EntityConfig.js +7 -0
  94. package/dist/_EntityConfig.js.map +1 -0
  95. package/dist/_EntityOps.d.ts +205 -0
  96. package/dist/_EntityOps.d.ts.map +1 -0
  97. package/dist/_EntityOps.js +137 -0
  98. package/dist/_EntityOps.js.map +1 -0
  99. package/dist/_EntitySchemas.d.ts +57 -0
  100. package/dist/_EntitySchemas.d.ts.map +1 -0
  101. package/dist/_EntitySchemas.js +298 -0
  102. package/dist/_EntitySchemas.js.map +1 -0
  103. package/dist/_EntityTypes.d.ts +81 -0
  104. package/dist/_EntityTypes.d.ts.map +1 -0
  105. package/dist/_EntityTypes.js +7 -0
  106. package/dist/_EntityTypes.js.map +1 -0
  107. package/dist/_sparse_check.d.ts +2 -0
  108. package/dist/_sparse_check.d.ts.map +1 -0
  109. package/dist/_sparse_check.js +193 -0
  110. package/dist/_sparse_check.js.map +1 -0
  111. package/dist/index.d.ts +35 -0
  112. package/dist/index.d.ts.map +1 -0
  113. package/dist/index.js +20 -0
  114. package/dist/index.js.map +1 -0
  115. package/dist/internal/AggregateCursor.d.ts +44 -0
  116. package/dist/internal/AggregateCursor.d.ts.map +1 -0
  117. package/dist/internal/AggregateCursor.js +18 -0
  118. package/dist/internal/AggregateCursor.js.map +1 -0
  119. package/dist/internal/AggregateEdges.d.ts +77 -0
  120. package/dist/internal/AggregateEdges.d.ts.map +1 -0
  121. package/dist/internal/AggregateEdges.js +41 -0
  122. package/dist/internal/AggregateEdges.js.map +1 -0
  123. package/dist/internal/AggregateSchemas.d.ts +69 -0
  124. package/dist/internal/AggregateSchemas.d.ts.map +1 -0
  125. package/dist/internal/AggregateSchemas.js +193 -0
  126. package/dist/internal/AggregateSchemas.js.map +1 -0
  127. package/dist/internal/AggregateTypes.d.ts +94 -0
  128. package/dist/internal/AggregateTypes.d.ts.map +1 -0
  129. package/dist/internal/AggregateTypes.js +7 -0
  130. package/dist/internal/AggregateTypes.js.map +1 -0
  131. package/dist/internal/BoundQuery.d.ts +107 -0
  132. package/dist/internal/BoundQuery.d.ts.map +1 -0
  133. package/dist/internal/BoundQuery.js +111 -0
  134. package/dist/internal/BoundQuery.js.map +1 -0
  135. package/dist/internal/EntityCombinators.d.ts +173 -0
  136. package/dist/internal/EntityCombinators.d.ts.map +1 -0
  137. package/dist/internal/EntityCombinators.js +183 -0
  138. package/dist/internal/EntityCombinators.js.map +1 -0
  139. package/dist/internal/EntityConfig.d.ts +100 -0
  140. package/dist/internal/EntityConfig.d.ts.map +1 -0
  141. package/dist/internal/EntityConfig.js +7 -0
  142. package/dist/internal/EntityConfig.js.map +1 -0
  143. package/dist/internal/EntityOps.d.ts +268 -0
  144. package/dist/internal/EntityOps.d.ts.map +1 -0
  145. package/dist/internal/EntityOps.js +153 -0
  146. package/dist/internal/EntityOps.js.map +1 -0
  147. package/dist/internal/EntitySchemas.d.ts +57 -0
  148. package/dist/internal/EntitySchemas.d.ts.map +1 -0
  149. package/dist/internal/EntitySchemas.js +299 -0
  150. package/dist/internal/EntitySchemas.js.map +1 -0
  151. package/dist/internal/EntityTypes.d.ts +128 -0
  152. package/dist/internal/EntityTypes.d.ts.map +1 -0
  153. package/dist/internal/EntityTypes.js +7 -0
  154. package/dist/internal/EntityTypes.js.map +1 -0
  155. package/dist/internal/Expr.d.ts +141 -0
  156. package/dist/internal/Expr.d.ts.map +1 -0
  157. package/dist/internal/Expr.js +332 -0
  158. package/dist/internal/Expr.js.map +1 -0
  159. package/dist/internal/PathBuilder.d.ts +88 -0
  160. package/dist/internal/PathBuilder.d.ts.map +1 -0
  161. package/dist/internal/PathBuilder.js +100 -0
  162. package/dist/internal/PathBuilder.js.map +1 -0
  163. package/dist/internal/TransactableOps.d.ts +25 -0
  164. package/dist/internal/TransactableOps.d.ts.map +1 -0
  165. package/dist/internal/TransactableOps.js +58 -0
  166. package/dist/internal/TransactableOps.js.map +1 -0
  167. package/dist/internal/sparse_check.d.ts +2 -0
  168. package/dist/internal/sparse_check.d.ts.map +1 -0
  169. package/dist/internal/sparse_check.js +196 -0
  170. package/dist/internal/sparse_check.js.map +1 -0
  171. package/package.json +71 -0
@@ -0,0 +1,183 @@
1
+ /**
2
+ * @internal Entity operation combinators — terminal functions and update combinators.
3
+ *
4
+ * Extracted from Entity.ts for decomposition. Not part of the public API.
5
+ */
6
+ import { Function as Fn } from "effect";
7
+ import { EntityDeleteImpl, EntityDeleteTypeId, EntityGetImpl, EntityOpTypeId, EntityPutImpl, EntityUpdateImpl, EntityUpdateTypeId, } from "./EntityOps.js";
8
+ /** Decode through model schema (default for yield*). Returns clean model class instance. */
9
+ export const asModel = (self) => self._run("model");
10
+ /** Decode through record schema (model + system fields). */
11
+ export const asRecord = (self) => self._run("record");
12
+ /** Decode through item schema (model + system + keys + `__edd_e__`). Returns `Record<string, unknown>`. */
13
+ export const asItem = (self) => self._run("item");
14
+ /** Return raw marshalled DynamoDB format (`Record<string, AttributeValue>`). No decode. */
15
+ export const asNative = (self) => self._run("native");
16
+ // ---------------------------------------------------------------------------
17
+ // Update combinators — dual functions for pipe composition
18
+ //
19
+ // Cast rationale: Each combinator creates a new EntityUpdateImpl with updated
20
+ // state while preserving the phantom type parameters (A, Rec, U, E, R).
21
+ // The `_builder as any` is needed because the builder function's generic
22
+ // signature doesn't survive reconstruction — the runtime behavior is identical.
23
+ // The `as any` on the return bridges from the impl class to the interface type.
24
+ // ---------------------------------------------------------------------------
25
+ /**
26
+ * Set the fields to update.
27
+ *
28
+ * When updating GSI composite fields, the consumer is responsible for providing ALL
29
+ * composites for that GSI (fetch-merge pattern). If only some composites are provided,
30
+ * `extractComposites` in KeyComposer will throw during GSI key recomposition.
31
+ *
32
+ * When using `Entity.remove()` on a GSI composite attribute, the corresponding GSI
33
+ * key fields (pk/sk) are automatically removed so the item drops out of the sparse index.
34
+ */
35
+ export const set = Fn.dual(2, (self, updates) => {
36
+ return new EntityUpdateImpl(self._builder, { ...self._updateState, updates }, self._entity, self._key);
37
+ });
38
+ /** Set the expected version for optimistic locking. */
39
+ export const expectedVersion = Fn.dual(2, (self, version) => {
40
+ return new EntityUpdateImpl(self._builder, { ...self._updateState, expectedVersion: version }, self._entity, self._key);
41
+ });
42
+ /**
43
+ * Enable consistent reads on an EntityGet operation.
44
+ * Call with no arguments to enable (defaults to true).
45
+ */
46
+ export const consistentRead = Fn.dual((args) => args.length >= 1 &&
47
+ typeof args[0] === "object" &&
48
+ args[0] !== null &&
49
+ EntityOpTypeId in args[0], (self) => {
50
+ const impl = self;
51
+ return new EntityGetImpl(impl._builder, impl._entity, impl._key, true);
52
+ });
53
+ /**
54
+ * Select specific attributes to return (ProjectionExpression) on an EntityGet.
55
+ * When projection is active, the result is a raw `Record<string, unknown>`
56
+ * instead of a decoded schema instance, since projected items may be partial.
57
+ */
58
+ export const project = Fn.dual(2, (self, attributes) => {
59
+ const impl = self;
60
+ return new EntityGetImpl(impl._builder, impl._entity, impl._key, impl._consistentRead, attributes);
61
+ });
62
+ /**
63
+ * Add a condition expression to a put, update, or delete operation.
64
+ * The condition is evaluated server-side by DynamoDB. If it fails,
65
+ * the operation returns a `ConditionalCheckFailed` error.
66
+ *
67
+ * Accepts either a `ConditionInput` shorthand or a compiled `Expr` node.
68
+ * For updates, the user condition is ANDed with any optimistic lock condition.
69
+ */
70
+ export const condition = Fn.dual(2, (self, cond) => {
71
+ if (EntityDeleteTypeId in self) {
72
+ // EntityDelete
73
+ const impl = self;
74
+ return new EntityDeleteImpl(impl._builder, impl._entity, impl._key, cond, impl._returnValues);
75
+ }
76
+ if (EntityUpdateTypeId in self) {
77
+ // EntityUpdate
78
+ const impl = self;
79
+ return new EntityUpdateImpl(impl._builder, { ...impl._updateState, condition: cond }, impl._entity, impl._key);
80
+ }
81
+ // EntityPut
82
+ const impl = self;
83
+ return new EntityPutImpl(impl._builder, impl._entity, impl._input, cond);
84
+ });
85
+ /**
86
+ * Set the DynamoDB `ReturnValues` mode on an update or delete operation.
87
+ *
88
+ * Modes:
89
+ * - `"none"` — return nothing (default for delete)
90
+ * - `"allOld"` — return the item as it was before the operation
91
+ * - `"allNew"` — return the item as it is after the operation (default for update)
92
+ * - `"updatedOld"` — return only the updated attributes, with old values
93
+ * - `"updatedNew"` — return only the updated attributes, with new values
94
+ *
95
+ * For deletes, only `"none"` and `"allOld"` are valid DynamoDB modes.
96
+ */
97
+ export const returnValues = Fn.dual(2, (self, mode) => {
98
+ if (EntityDeleteTypeId in self) {
99
+ const impl = self;
100
+ return new EntityDeleteImpl(impl._builder, impl._entity, impl._key, impl._condition, mode);
101
+ }
102
+ // EntityUpdate
103
+ const impl = self;
104
+ return new EntityUpdateImpl(impl._builder, { ...impl._updateState, returnValues: mode }, impl._entity, impl._key);
105
+ });
106
+ /**
107
+ * Remove one or more attributes from the item.
108
+ * Produces a DynamoDB `REMOVE` clause.
109
+ */
110
+ export const remove = Fn.dual(2, (self, fields) => {
111
+ const existing = self._updateState.remove ?? [];
112
+ return new EntityUpdateImpl(self._builder, { ...self._updateState, remove: [...existing, ...fields] }, self._entity, self._key);
113
+ });
114
+ /**
115
+ * Atomically add numeric values to attributes.
116
+ * Produces a DynamoDB `ADD` clause. If the attribute doesn't exist,
117
+ * it is initialized to the provided value.
118
+ */
119
+ export const add = Fn.dual(2, (self, values) => {
120
+ const existing = self._updateState.add ?? {};
121
+ return new EntityUpdateImpl(self._builder, { ...self._updateState, add: { ...existing, ...values } }, self._entity, self._key);
122
+ });
123
+ /**
124
+ * Subtract numeric values from attributes.
125
+ * Synthesizes `SET #field = #field - :val` (DynamoDB has no native SUBTRACT).
126
+ */
127
+ export const subtract = Fn.dual(2, (self, values) => {
128
+ const existing = self._updateState.subtract ?? {};
129
+ return new EntityUpdateImpl(self._builder, { ...self._updateState, subtract: { ...existing, ...values } }, self._entity, self._key);
130
+ });
131
+ /**
132
+ * Append elements to list attributes.
133
+ * Synthesizes `SET #field = list_append(#field, :val)`.
134
+ */
135
+ export const append = Fn.dual(2, (self, values) => {
136
+ const existing = self._updateState.append ?? {};
137
+ return new EntityUpdateImpl(self._builder, { ...self._updateState, append: { ...existing, ...values } }, self._entity, self._key);
138
+ });
139
+ /**
140
+ * Delete elements from a set attribute.
141
+ * Produces a DynamoDB `DELETE` clause.
142
+ * The value should be a set (e.g., `{ tags: new Set(["old"]) }`).
143
+ */
144
+ export const deleteFromSet = Fn.dual(2, (self, values) => {
145
+ const existing = self._updateState.deleteFromSet ?? {};
146
+ return new EntityUpdateImpl(self._builder, { ...self._updateState, deleteFromSet: { ...existing, ...values } }, self._entity, self._key);
147
+ });
148
+ /**
149
+ * Configure cascade updates to propagate source entity changes to target entities
150
+ * that embed it via `DynamoModel.ref`. After the source update completes, all matching
151
+ * target items are queried via their cascade GSI and updated with the new domain data.
152
+ *
153
+ * Default mode is "eventual" (batch updates, no item limit).
154
+ * Use `mode: "transactional"` for atomic cascade (max 100 items).
155
+ */
156
+ export const cascade = Fn.dual(2, (self, config) => {
157
+ return new EntityUpdateImpl(self._builder, { ...self._updateState, cascade: config }, self._entity, self._key);
158
+ });
159
+ // ---------------------------------------------------------------------------
160
+ // Path-based update combinators (internal — used by entity-level typed combinators)
161
+ // ---------------------------------------------------------------------------
162
+ /** @internal Append an operation to a path-based update state array field. */
163
+ const addPathOp = (self, key, op) => {
164
+ const existing = self._updateState[key] ?? [];
165
+ return new EntityUpdateImpl(self._builder, { ...self._updateState, [key]: [...existing, op] }, self._entity, self._key);
166
+ };
167
+ /** @internal Add a path-based SET operation to the update state */
168
+ export const pathSet = (self, op) => addPathOp(self, "pathSets", op);
169
+ /** @internal Add a path-based REMOVE operation to the update state */
170
+ export const pathRemove = (self, segments) => addPathOp(self, "pathRemoves", segments);
171
+ /** @internal Add a path-based ADD operation to the update state */
172
+ export const pathAdd = (self, op) => addPathOp(self, "pathAdds", op);
173
+ /** @internal Add a path-based SUBTRACT operation to the update state */
174
+ export const pathSubtract = (self, op) => addPathOp(self, "pathSubtracts", op);
175
+ /** @internal Add a path-based APPEND operation to the update state */
176
+ export const pathAppend = (self, op) => addPathOp(self, "pathAppends", op);
177
+ /** @internal Add a path-based PREPEND operation to the update state */
178
+ export const pathPrepend = (self, op) => addPathOp(self, "pathPrepends", op);
179
+ /** @internal Add a path-based if_not_exists operation to the update state */
180
+ export const pathIfNotExists = (self, op) => addPathOp(self, "pathIfNotExists", op);
181
+ /** @internal Add a path-based DELETE (set removal) operation to the update state */
182
+ export const pathDelete = (self, op) => addPathOp(self, "pathDeletes", op);
183
+ //# sourceMappingURL=EntityCombinators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityCombinators.js","sourceRoot":"","sources":["../../src/internal/EntityCombinators.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * @internal Entity configuration types — system field and constraint config.
3
+ *
4
+ * Extracted from Entity.ts for decomposition. Not part of the public API.
5
+ */
6
+ import type { Duration, Schema } from "effect";
7
+ /**
8
+ * Per-timestamp field configuration.
9
+ *
10
+ * - `string` — override field name only (default DateString schema)
11
+ * - `Schema.Top` — override schema only (default field name)
12
+ * - `{ field?, schema? }` — override both field name and schema
13
+ */
14
+ export type TimestampFieldConfig = string | Schema.Top | {
15
+ readonly field?: string | undefined;
16
+ readonly schema?: Schema.Top | undefined;
17
+ };
18
+ /**
19
+ * Timestamp configuration for automatic `createdAt` / `updatedAt` fields.
20
+ *
21
+ * - `true` — add `createdAt` and `updatedAt` with default names and ISO string storage
22
+ * - `{ created?, updated? }` — per-field configuration (string, schema, or object)
23
+ * - `false` / `undefined` — no timestamps
24
+ */
25
+ export type TimestampsConfig = boolean | {
26
+ readonly created?: TimestampFieldConfig | undefined;
27
+ readonly updated?: TimestampFieldConfig | undefined;
28
+ };
29
+ /**
30
+ * Optimistic locking configuration via an auto-incrementing version field.
31
+ *
32
+ * - `true` — add a `version` field with default name
33
+ * - `{ field?, retain?, ttl? }` — override field name and retention behavior
34
+ * - `false` / `undefined` — no versioning
35
+ */
36
+ export type VersionedConfig = boolean | {
37
+ readonly field?: string | undefined;
38
+ readonly retain?: boolean | undefined;
39
+ readonly ttl?: Duration.Duration | undefined;
40
+ };
41
+ /**
42
+ * Soft-delete configuration. When enabled, deletes mark items rather than removing them.
43
+ *
44
+ * - `true` — enable soft delete with defaults
45
+ * - `{ ttl?, preserveUnique? }` — configure TTL cleanup and unique constraint behavior
46
+ * - `false` / `undefined` — hard deletes
47
+ */
48
+ export type SoftDeleteConfig = boolean | {
49
+ readonly ttl?: Duration.Duration | undefined;
50
+ readonly preserveUnique?: boolean | undefined;
51
+ };
52
+ /** An array of model field names that together form a unique constraint. */
53
+ export type UniqueFieldsDef = ReadonlyArray<string>;
54
+ /**
55
+ * A unique constraint definition — either a simple field list or an object
56
+ * with additional options like TTL for sentinel items.
57
+ */
58
+ export type UniqueConstraintDef = UniqueFieldsDef | {
59
+ readonly fields: UniqueFieldsDef;
60
+ readonly ttl?: Duration.Duration | undefined;
61
+ };
62
+ /**
63
+ * Map of named unique constraints. Each key is the constraint name,
64
+ * each value defines which fields must be globally unique together.
65
+ *
66
+ * Enforced via DynamoDB transaction sentinel items.
67
+ */
68
+ export type UniqueConfig = globalThis.Record<string, UniqueConstraintDef>;
69
+ /**
70
+ * Per-ref cascade index configuration. Tells Entity.make() which physical GSI
71
+ * to use for auto-generated cascade indexes.
72
+ *
73
+ * The library fills in the PK/SK composites automatically from the resolved ref
74
+ * and primary key — the consumer only specifies physical GSI details.
75
+ */
76
+ export interface CascadeIndexConfig {
77
+ /** Physical GSI name (e.g., "gsi3") */
78
+ readonly index: string;
79
+ /** PK field descriptor */
80
+ readonly pk: {
81
+ readonly field: string;
82
+ };
83
+ /** SK field descriptor */
84
+ readonly sk: {
85
+ readonly field: string;
86
+ };
87
+ }
88
+ /**
89
+ * A ref value in the `refs` config — an object with the entity and optional cascade index config.
90
+ *
91
+ * Simple: `refs: { player: { entity: Players } }`
92
+ * Cascade: `refs: { player: { entity: Players, cascade: { index: "gsi3", pk: { field: "gsi3pk" }, sk: { field: "gsi3sk" } } } }`
93
+ */
94
+ export interface RefValue {
95
+ readonly entity: {
96
+ readonly _tag: "Entity";
97
+ };
98
+ readonly cascade?: CascadeIndexConfig;
99
+ }
100
+ //# sourceMappingURL=EntityConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityConfig.d.ts","sourceRoot":"","sources":["../../src/internal/EntityConfig.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAM9C;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,GAC5B,MAAM,GACN,MAAM,CAAC,GAAG,GACV;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,GAAG,SAAS,CAAA;CAAE,CAAA;AAErF;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GACxB,OAAO,GACP;IACE,QAAQ,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,SAAS,CAAA;IACnD,QAAQ,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,SAAS,CAAA;CACpD,CAAA;AAEL;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GACvB,OAAO,GACP;IACE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACrC,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAA;CAC7C,CAAA;AAEL;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GACxB,OAAO,GACP;IACE,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAA;IAC5C,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAC9C,CAAA;AAEL,4EAA4E;AAC5E,MAAM,MAAM,eAAe,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;AAEnD;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAC3B,eAAe,GACf;IAAE,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAA;CAAE,CAAA;AAEtF;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;AAEzE;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,uCAAuC;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IACvC,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;CACxC;AAED;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,CAAA;IAC5C,QAAQ,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAA;CACtC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @internal Entity configuration types — system field and constraint config.
3
+ *
4
+ * Extracted from Entity.ts for decomposition. Not part of the public API.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=EntityConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityConfig.js","sourceRoot":"","sources":["../../src/internal/EntityConfig.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,268 @@
1
+ /**
2
+ * @internal Entity operation intermediates — lazy, pipeable, effectable.
3
+ *
4
+ * Extracted from Entity.ts for decomposition. Not part of the public API.
5
+ */
6
+ import type { ReturnValue } from "@aws-sdk/client-dynamodb";
7
+ import type { Effect } from "effect";
8
+ import { Pipeable } from "effect";
9
+ import type * as DynamoSchema from "../DynamoSchema.js";
10
+ import type { ConditionInput } from "../Expression.js";
11
+ import type { Expr } from "../internal/Expr.js";
12
+ import type { IndexDefinition } from "../KeyComposer.js";
13
+ import type { TableConfig } from "../Table.js";
14
+ /** @internal */
15
+ export declare const EntityOpTypeId: unique symbol;
16
+ export type EntityOpTypeId = typeof EntityOpTypeId;
17
+ /** @internal */
18
+ export declare const EntityUpdateTypeId: unique symbol;
19
+ export type EntityUpdateTypeId = typeof EntityUpdateTypeId;
20
+ /** @internal */
21
+ export declare const EntityDeleteTypeId: unique symbol;
22
+ export type EntityDeleteTypeId = typeof EntityDeleteTypeId;
23
+ export type DecodeMode = "model" | "record" | "item" | "native" | "raw";
24
+ /** DynamoDB ReturnValues modes */
25
+ export type ReturnValuesMode = "none" | "allOld" | "allNew" | "updatedOld" | "updatedNew";
26
+ /** @internal Map from our mode names to DynamoDB ReturnValues strings */
27
+ export declare const returnValuesMap: globalThis.Record<ReturnValuesMode, ReturnValue>;
28
+ /** @internal Minimal shape needed from cascade target entities */
29
+ export interface CascadeTarget {
30
+ readonly entityType: string;
31
+ readonly indexes: globalThis.Record<string, IndexDefinition>;
32
+ readonly _schema: DynamoSchema.DynamoSchema;
33
+ readonly _tableTag: import("effect").Context.Service<TableConfig, TableConfig>;
34
+ readonly _resolvedRefs: ReadonlyArray<{
35
+ readonly fieldName: string;
36
+ readonly idFieldName: string;
37
+ readonly identifierField: string;
38
+ readonly refEntityType: string;
39
+ }>;
40
+ }
41
+ /** @internal */
42
+ export interface CascadeConfig {
43
+ readonly targets: ReadonlyArray<CascadeTarget>;
44
+ readonly filter?: globalThis.Record<string, unknown> | undefined;
45
+ readonly mode?: "eventual" | "transactional" | undefined;
46
+ }
47
+ /** @internal */
48
+ export interface UpdateState {
49
+ readonly updates: unknown;
50
+ readonly expectedVersion: number | undefined;
51
+ readonly condition: Expr | ConditionInput | undefined;
52
+ readonly remove: ReadonlyArray<string> | undefined;
53
+ readonly add: globalThis.Record<string, number> | undefined;
54
+ readonly subtract: globalThis.Record<string, number> | undefined;
55
+ readonly append: globalThis.Record<string, ReadonlyArray<unknown>> | undefined;
56
+ readonly deleteFromSet: globalThis.Record<string, unknown> | undefined;
57
+ readonly returnValues: ReturnValuesMode | undefined;
58
+ readonly cascade: CascadeConfig | undefined;
59
+ readonly pathSets: ReadonlyArray<PathSetOp> | undefined;
60
+ readonly pathRemoves: ReadonlyArray<ReadonlyArray<string | number>> | undefined;
61
+ readonly pathAdds: ReadonlyArray<PathAddOp> | undefined;
62
+ readonly pathSubtracts: ReadonlyArray<PathSubtractOp> | undefined;
63
+ readonly pathAppends: ReadonlyArray<PathAppendOp> | undefined;
64
+ readonly pathPrepends: ReadonlyArray<PathPrependOp> | undefined;
65
+ readonly pathIfNotExists: ReadonlyArray<PathIfNotExistsOp> | undefined;
66
+ readonly pathDeletes: ReadonlyArray<PathDeleteOp> | undefined;
67
+ }
68
+ /** @internal Path-based SET operation */
69
+ export interface PathSetOp {
70
+ readonly segments: ReadonlyArray<string | number>;
71
+ readonly value: unknown;
72
+ readonly isPath: boolean;
73
+ readonly valueSegments?: ReadonlyArray<string | number>;
74
+ }
75
+ /** @internal Path-based ADD operation */
76
+ export interface PathAddOp {
77
+ readonly segments: ReadonlyArray<string | number>;
78
+ readonly value: unknown;
79
+ }
80
+ /** @internal Path-based SUBTRACT operation */
81
+ export interface PathSubtractOp {
82
+ readonly segments: ReadonlyArray<string | number>;
83
+ readonly value: unknown;
84
+ readonly isPath: boolean;
85
+ readonly valueSegments?: ReadonlyArray<string | number>;
86
+ }
87
+ /** @internal Path-based APPEND operation */
88
+ export interface PathAppendOp {
89
+ readonly segments: ReadonlyArray<string | number>;
90
+ readonly value: unknown;
91
+ }
92
+ /** @internal Path-based PREPEND operation */
93
+ export interface PathPrependOp {
94
+ readonly segments: ReadonlyArray<string | number>;
95
+ readonly value: unknown;
96
+ }
97
+ /** @internal Path-based if_not_exists operation */
98
+ export interface PathIfNotExistsOp {
99
+ readonly segments: ReadonlyArray<string | number>;
100
+ readonly value: unknown;
101
+ }
102
+ /** @internal Path-based DELETE (set removal) operation */
103
+ export interface PathDeleteOp {
104
+ readonly segments: ReadonlyArray<string | number>;
105
+ readonly value: unknown;
106
+ }
107
+ export declare const emptyUpdateState: UpdateState;
108
+ /**
109
+ * Base interface for lazy Entity operation descriptors.
110
+ * Pipeable (for combinators like `asRecord`, `condition`, etc.) and Yieldable
111
+ * (can be used with `yield*` in `Effect.gen`).
112
+ *
113
+ * @typeParam A - Decoded model type (e.g., `User`)
114
+ * @typeParam Rec - Record type — model fields plus system fields (timestamps, version)
115
+ * @typeParam E - Error channel
116
+ * @typeParam R - Required services
117
+ */
118
+ export interface EntityOp<A, Rec, E, R> extends Pipeable.Pipeable {
119
+ readonly [EntityOpTypeId]: EntityOpTypeId;
120
+ /** @internal */
121
+ readonly _run: (mode: DecodeMode) => Effect.Effect<any, E, R>;
122
+ /** Convert this descriptor to an executable Effect. */
123
+ readonly asEffect: () => Effect.Effect<A, E, R>;
124
+ /** Yield support for `Effect.gen`. */
125
+ readonly [Symbol.iterator]: () => Iterator<Effect.Effect<A, E, R>, A>;
126
+ /** @internal */ readonly _Rec: (_: never) => Rec;
127
+ }
128
+ /**
129
+ * Lazy intermediate returned by `Entity.get()`.
130
+ * `yield*` returns the model type. Pipe to {@link asRecord}, {@link asItem}, or {@link asNative} for alternate decode modes.
131
+ *
132
+ * @typeParam A - Decoded model type
133
+ * @typeParam Rec - Record type (model + system fields)
134
+ * @typeParam E - Error channel
135
+ * @typeParam R - Required services
136
+ */
137
+ export interface EntityGet<A, Rec, E, R> extends EntityOp<A, Rec, E, R> {
138
+ }
139
+ /**
140
+ * Lazy intermediate returned by `Entity.put()`.
141
+ * `yield*` returns the model type. Pipe to {@link asRecord}, {@link asItem}, or {@link asNative} for alternate decode modes.
142
+ *
143
+ * @typeParam A - Decoded model type
144
+ * @typeParam Rec - Record type (model + system fields)
145
+ * @typeParam E - Error channel
146
+ * @typeParam R - Required services
147
+ */
148
+ export interface EntityPut<A, Rec, E, R> extends EntityOp<A, Rec, E, R> {
149
+ }
150
+ /**
151
+ * Lazy intermediate returned by `Entity.update()`.
152
+ * `yield*` returns the model type. Pipe to {@link asRecord}, {@link asItem}, or {@link asNative} for alternate decode modes.
153
+ * Supports {@link set} and {@link expectedVersion} combinators via pipe.
154
+ *
155
+ * @typeParam A - Decoded model type
156
+ * @typeParam Rec - Record type (model + system fields)
157
+ * @typeParam U - Update payload type (partial model minus keys, with GSI all-or-none constraints)
158
+ * @typeParam E - Error channel
159
+ * @typeParam R - Required services
160
+ */
161
+ export interface EntityUpdate<A, Rec, U, E, R> extends EntityOp<A, Rec, E, R> {
162
+ readonly [EntityUpdateTypeId]: EntityUpdateTypeId;
163
+ /** @internal phantom */ readonly _U: (_: never) => U;
164
+ /** @internal */
165
+ readonly _updateState: UpdateState;
166
+ /** @internal */
167
+ readonly _builder: (mode: DecodeMode, state: UpdateState) => Effect.Effect<any, E, R>;
168
+ /** @internal */
169
+ readonly _entity: EntityBase;
170
+ /** @internal */
171
+ readonly _key: globalThis.Record<string, unknown>;
172
+ }
173
+ /**
174
+ * Lazy descriptor returned by Entity.delete().
175
+ * Carries entity + key for Transaction/Batch extraction.
176
+ * Does NOT extend EntityOp (no decode mode — delete returns void).
177
+ * Yieldable in `Effect.gen`.
178
+ */
179
+ export interface EntityDelete<E, R> extends Pipeable.Pipeable {
180
+ readonly [EntityDeleteTypeId]: EntityDeleteTypeId;
181
+ /** Convert this descriptor to an executable Effect. */
182
+ readonly asEffect: () => Effect.Effect<void, E, R>;
183
+ /** Yield support for `Effect.gen`. */
184
+ readonly [Symbol.iterator]: () => Iterator<Effect.Effect<void, E, R>, void>;
185
+ /** @internal */ readonly _opType: "delete";
186
+ /** @internal */ readonly _entity: EntityBase;
187
+ /** @internal */ readonly _key: globalThis.Record<string, unknown>;
188
+ }
189
+ /**
190
+ * @internal Minimal entity shape used by operation intermediates.
191
+ * Avoids circular dependency with the full Entity interface.
192
+ */
193
+ export interface EntityBase {
194
+ readonly _tag: "Entity";
195
+ }
196
+ export interface EntityGetOpts {
197
+ readonly consistentRead: boolean;
198
+ readonly projection: ReadonlyArray<string> | undefined;
199
+ }
200
+ export declare class EntityGetImpl<A, Rec, E, R> implements Pipeable.Pipeable {
201
+ readonly _builder: (mode: DecodeMode, opts: EntityGetOpts) => Effect.Effect<any, E, R>;
202
+ readonly [EntityOpTypeId]: EntityOpTypeId;
203
+ readonly _opType: "get";
204
+ readonly _Rec: (_: never) => Rec;
205
+ readonly _entity: EntityBase;
206
+ readonly _key: globalThis.Record<string, unknown>;
207
+ readonly _consistentRead: boolean;
208
+ readonly _projection: ReadonlyArray<string> | undefined;
209
+ constructor(_builder: (mode: DecodeMode, opts: EntityGetOpts) => Effect.Effect<any, E, R>, entity: EntityBase, key: globalThis.Record<string, unknown>, consistentRead?: boolean, projection?: ReadonlyArray<string>);
210
+ get _run(): (mode: DecodeMode) => Effect.Effect<any, E, R>;
211
+ asEffect(): Effect.Effect<A, E, R>;
212
+ [Symbol.iterator](): any;
213
+ pipe(): unknown;
214
+ }
215
+ export declare class EntityPutImpl<A, Rec, E, R> implements Pipeable.Pipeable {
216
+ readonly _builder: (mode: DecodeMode, opts: {
217
+ readonly condition: Expr | ConditionInput | undefined;
218
+ }) => Effect.Effect<any, E, R>;
219
+ readonly [EntityOpTypeId]: EntityOpTypeId;
220
+ readonly _opType: "put";
221
+ readonly _Rec: (_: never) => Rec;
222
+ readonly _entity: EntityBase;
223
+ readonly _input: globalThis.Record<string, unknown>;
224
+ readonly _condition: Expr | ConditionInput | undefined;
225
+ constructor(_builder: (mode: DecodeMode, opts: {
226
+ readonly condition: Expr | ConditionInput | undefined;
227
+ }) => Effect.Effect<any, E, R>, entity: EntityBase, input: globalThis.Record<string, unknown>, condition?: Expr | ConditionInput | undefined);
228
+ get _run(): (mode: DecodeMode) => Effect.Effect<any, E, R>;
229
+ asEffect(): Effect.Effect<A, E, R>;
230
+ [Symbol.iterator](): any;
231
+ pipe(): unknown;
232
+ }
233
+ export declare class EntityUpdateImpl<A, Rec, U, E, R> implements Pipeable.Pipeable {
234
+ readonly _builder: (mode: DecodeMode, state: UpdateState) => Effect.Effect<any, E, R>;
235
+ readonly _updateState: UpdateState;
236
+ readonly [EntityOpTypeId]: EntityOpTypeId;
237
+ readonly [EntityUpdateTypeId]: EntityUpdateTypeId;
238
+ readonly _opType: "update";
239
+ readonly _Rec: (_: never) => Rec;
240
+ readonly _U: (_: never) => U;
241
+ readonly _entity: EntityBase;
242
+ readonly _key: globalThis.Record<string, unknown>;
243
+ constructor(_builder: (mode: DecodeMode, state: UpdateState) => Effect.Effect<any, E, R>, _updateState: UpdateState, entity: EntityBase, key: globalThis.Record<string, unknown>);
244
+ get _run(): (mode: DecodeMode) => Effect.Effect<any, E, R>;
245
+ asEffect(): Effect.Effect<A, E, R>;
246
+ [Symbol.iterator](): any;
247
+ pipe(): unknown;
248
+ }
249
+ export declare class EntityDeleteImpl<E, R> implements Pipeable.Pipeable {
250
+ readonly _builder: (opts: {
251
+ readonly condition: Expr | ConditionInput | undefined;
252
+ readonly returnValues: ReturnValuesMode | undefined;
253
+ }) => Effect.Effect<void, E, R>;
254
+ readonly [EntityDeleteTypeId]: EntityDeleteTypeId;
255
+ readonly _opType: "delete";
256
+ readonly _entity: EntityBase;
257
+ readonly _key: globalThis.Record<string, unknown>;
258
+ readonly _condition: Expr | ConditionInput | undefined;
259
+ readonly _returnValues: ReturnValuesMode | undefined;
260
+ constructor(_builder: (opts: {
261
+ readonly condition: Expr | ConditionInput | undefined;
262
+ readonly returnValues: ReturnValuesMode | undefined;
263
+ }) => Effect.Effect<void, E, R>, entity: EntityBase, key: globalThis.Record<string, unknown>, condition?: Expr | ConditionInput | undefined, returnValues?: ReturnValuesMode | undefined);
264
+ asEffect(): Effect.Effect<void, E, R>;
265
+ [Symbol.iterator](): any;
266
+ pipe(): unknown;
267
+ }
268
+ //# sourceMappingURL=EntityOps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityOps.d.ts","sourceRoot":"","sources":["../../src/internal/EntityOps.ts"],"names":[],"mappings":"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"}