effect-dynamodb 1.7.0 → 1.7.2
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.
- package/dist/Entity.d.ts.map +1 -1
- package/dist/Entity.js +68 -88
- package/dist/Entity.js.map +1 -1
- package/dist/Errors.d.ts +34 -20
- package/dist/Errors.d.ts.map +1 -1
- package/dist/Errors.js +38 -27
- package/dist/Errors.js.map +1 -1
- package/dist/KeyComposer.d.ts +60 -29
- package/dist/KeyComposer.d.ts.map +1 -1
- package/dist/KeyComposer.js +143 -105
- package/dist/KeyComposer.js.map +1 -1
- package/package.json +1 -1
package/dist/Errors.d.ts
CHANGED
|
@@ -274,27 +274,38 @@ declare const CompositeKeyHoleError_base: new <A extends Record<string, any> = {
|
|
|
274
274
|
readonly _tag: "CompositeKeyHoleError";
|
|
275
275
|
} & Readonly<A>;
|
|
276
276
|
/**
|
|
277
|
-
* EDD-9024 —
|
|
278
|
-
* at position `j > i` was still present, AND the half's `indexPolicy` is
|
|
279
|
-
* `'preserve'`. Composed keys can't carry holes meaningfully — `acc#A#child#Y`
|
|
280
|
-
* with `parent` cleared composes to a syntactically invalid prefix that no
|
|
281
|
-
* `begins_with` query would match. Under `'preserve'`, the library refuses to
|
|
282
|
-
* silently drop the trailing composite and raises this error instead. Under
|
|
283
|
-
* `'sparse'`, the trailing composite is silently truncated to the leading
|
|
284
|
-
* prefix and no error is raised (and when the leading prefix is empty,
|
|
285
|
-
* the half collapses to whole-half-empty which sparse drops together with
|
|
286
|
-
* the other half).
|
|
277
|
+
* EDD-9024 — DEPRECATED in v1.7.1.
|
|
287
278
|
*
|
|
288
|
-
*
|
|
289
|
-
*
|
|
290
|
-
*
|
|
291
|
-
*
|
|
279
|
+
* @deprecated Since v1.7.1, this error is no longer thrown at runtime. It is
|
|
280
|
+
* kept as an exported class for back-compat with consumers who type-imported
|
|
281
|
+
* it (e.g. inside `Effect.catchTag("CompositeKeyHoleError", ...)` blocks).
|
|
282
|
+
* No code path constructs or throws this error anymore.
|
|
292
283
|
*
|
|
293
|
-
*
|
|
294
|
-
*
|
|
295
|
-
*
|
|
284
|
+
* **Why deprecated.** v1.7.0's "throw under preserve on hole pattern" was a
|
|
285
|
+
* defensive runtime safety net for a case the type system already catches:
|
|
286
|
+
* required composites can't be omitted under `exactOptionalPropertyTypes`
|
|
287
|
+
* since v1.7.0 reverted the v1.6 NullishOr widening. The only remaining
|
|
288
|
+
* runtime "hole" shape is "optional leading composite absent + present
|
|
289
|
+
* trailing composite," which is a normal write the consumer expressly chose.
|
|
296
290
|
*
|
|
297
|
-
*
|
|
291
|
+
* **What replaces it.** Hole patterns now collapse into the unified per-half
|
|
292
|
+
* can't-compose rule:
|
|
293
|
+
* - `'sparse'` half → REMOVE that half's key (drops the half).
|
|
294
|
+
* - `'preserve'` half + composite of the half is in `Entity.remove([...])`
|
|
295
|
+
* → REMOVE that half's key (cascade override fires).
|
|
296
|
+
* - `'preserve'` half + no composite in `Entity.remove([...])` → noop (the
|
|
297
|
+
* stored key is left untouched; may be stale until the next write that
|
|
298
|
+
* touches the half supplies enough composites to recompose, or an
|
|
299
|
+
* `Entity.remove` cascade fires).
|
|
300
|
+
*
|
|
301
|
+
* See `DESIGN.md §7 Policy-Aware GSI Composition` (v1.7.1 unified rule).
|
|
302
|
+
*
|
|
303
|
+
* **Migration.** Remove any `Effect.catchTag("CompositeKeyHoleError", ...)`
|
|
304
|
+
* handlers — the throw site is gone and the catch is dead code. If you were
|
|
305
|
+
* relying on the throw to detect bad payloads, switch to declaring the
|
|
306
|
+
* relevant GSI half as `'sparse'` (the consumer-side semantic that always
|
|
307
|
+
* matches the throw's intent — drop the index entry on can't-compose) or
|
|
308
|
+
* supply the surviving composites via `set` in the same update.
|
|
298
309
|
*/
|
|
299
310
|
export declare class CompositeKeyHoleError extends CompositeKeyHoleError_base<{
|
|
300
311
|
readonly entityType: string;
|
|
@@ -310,8 +321,11 @@ export declare class CompositeKeyHoleError extends CompositeKeyHoleError_base<{
|
|
|
310
321
|
}> {
|
|
311
322
|
}
|
|
312
323
|
/**
|
|
313
|
-
* Build a {@link CompositeKeyHoleError} with a formatted message.
|
|
314
|
-
*
|
|
324
|
+
* Build a {@link CompositeKeyHoleError} with a formatted message.
|
|
325
|
+
*
|
|
326
|
+
* @deprecated Since v1.7.1 this builder is unused — no code path raises EDD-9024
|
|
327
|
+
* at runtime. Kept exported only for back-compat with consumers who imported
|
|
328
|
+
* the helper. See {@link CompositeKeyHoleError} for the migration path.
|
|
315
329
|
*/
|
|
316
330
|
export declare const makeCompositeKeyHoleError: (params: {
|
|
317
331
|
readonly entityType: string;
|
package/dist/Errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Errors.d.ts","sourceRoot":"","sources":["../src/Errors.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Errors.d.ts","sourceRoot":"","sources":["../src/Errors.ts"],"names":[],"mappings":"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"}
|
package/dist/Errors.js
CHANGED
|
@@ -128,44 +128,55 @@ export class CascadePartialFailure extends Data.TaggedError("CascadePartialFailu
|
|
|
128
128
|
export class VersionConflict extends Data.TaggedError("VersionConflict") {
|
|
129
129
|
}
|
|
130
130
|
/**
|
|
131
|
-
* EDD-9024 —
|
|
132
|
-
* at position `j > i` was still present, AND the half's `indexPolicy` is
|
|
133
|
-
* `'preserve'`. Composed keys can't carry holes meaningfully — `acc#A#child#Y`
|
|
134
|
-
* with `parent` cleared composes to a syntactically invalid prefix that no
|
|
135
|
-
* `begins_with` query would match. Under `'preserve'`, the library refuses to
|
|
136
|
-
* silently drop the trailing composite and raises this error instead. Under
|
|
137
|
-
* `'sparse'`, the trailing composite is silently truncated to the leading
|
|
138
|
-
* prefix and no error is raised (and when the leading prefix is empty,
|
|
139
|
-
* the half collapses to whole-half-empty which sparse drops together with
|
|
140
|
-
* the other half).
|
|
131
|
+
* EDD-9024 — DEPRECATED in v1.7.1.
|
|
141
132
|
*
|
|
142
|
-
*
|
|
143
|
-
*
|
|
144
|
-
*
|
|
145
|
-
*
|
|
133
|
+
* @deprecated Since v1.7.1, this error is no longer thrown at runtime. It is
|
|
134
|
+
* kept as an exported class for back-compat with consumers who type-imported
|
|
135
|
+
* it (e.g. inside `Effect.catchTag("CompositeKeyHoleError", ...)` blocks).
|
|
136
|
+
* No code path constructs or throws this error anymore.
|
|
146
137
|
*
|
|
147
|
-
*
|
|
148
|
-
*
|
|
149
|
-
*
|
|
138
|
+
* **Why deprecated.** v1.7.0's "throw under preserve on hole pattern" was a
|
|
139
|
+
* defensive runtime safety net for a case the type system already catches:
|
|
140
|
+
* required composites can't be omitted under `exactOptionalPropertyTypes`
|
|
141
|
+
* since v1.7.0 reverted the v1.6 NullishOr widening. The only remaining
|
|
142
|
+
* runtime "hole" shape is "optional leading composite absent + present
|
|
143
|
+
* trailing composite," which is a normal write the consumer expressly chose.
|
|
150
144
|
*
|
|
151
|
-
*
|
|
145
|
+
* **What replaces it.** Hole patterns now collapse into the unified per-half
|
|
146
|
+
* can't-compose rule:
|
|
147
|
+
* - `'sparse'` half → REMOVE that half's key (drops the half).
|
|
148
|
+
* - `'preserve'` half + composite of the half is in `Entity.remove([...])`
|
|
149
|
+
* → REMOVE that half's key (cascade override fires).
|
|
150
|
+
* - `'preserve'` half + no composite in `Entity.remove([...])` → noop (the
|
|
151
|
+
* stored key is left untouched; may be stale until the next write that
|
|
152
|
+
* touches the half supplies enough composites to recompose, or an
|
|
153
|
+
* `Entity.remove` cascade fires).
|
|
154
|
+
*
|
|
155
|
+
* See `DESIGN.md §7 Policy-Aware GSI Composition` (v1.7.1 unified rule).
|
|
156
|
+
*
|
|
157
|
+
* **Migration.** Remove any `Effect.catchTag("CompositeKeyHoleError", ...)`
|
|
158
|
+
* handlers — the throw site is gone and the catch is dead code. If you were
|
|
159
|
+
* relying on the throw to detect bad payloads, switch to declaring the
|
|
160
|
+
* relevant GSI half as `'sparse'` (the consumer-side semantic that always
|
|
161
|
+
* matches the throw's intent — drop the index entry on can't-compose) or
|
|
162
|
+
* supply the surviving composites via `set` in the same update.
|
|
152
163
|
*/
|
|
153
164
|
export class CompositeKeyHoleError extends Data.TaggedError("CompositeKeyHoleError") {
|
|
154
165
|
}
|
|
155
166
|
/**
|
|
156
|
-
* Build a {@link CompositeKeyHoleError} with a formatted message.
|
|
157
|
-
*
|
|
167
|
+
* Build a {@link CompositeKeyHoleError} with a formatted message.
|
|
168
|
+
*
|
|
169
|
+
* @deprecated Since v1.7.1 this builder is unused — no code path raises EDD-9024
|
|
170
|
+
* at runtime. Kept exported only for back-compat with consumers who imported
|
|
171
|
+
* the helper. See {@link CompositeKeyHoleError} for the migration path.
|
|
158
172
|
*/
|
|
159
173
|
export const makeCompositeKeyHoleError = (params) => new CompositeKeyHoleError({
|
|
160
174
|
...params,
|
|
161
|
-
message: `[EDD-9024] Composite key hole on GSI "${params.indexName}" of entity "${params.entityType}": ` +
|
|
175
|
+
message: `[EDD-9024 — DEPRECATED] Composite key hole on GSI "${params.indexName}" of entity "${params.entityType}": ` +
|
|
162
176
|
`composite "${params.clearedComposite}" at ${params.key} position ${params.clearedPosition} is absent, ` +
|
|
163
|
-
`but composite "${params.trailingComposite}" at ${params.key} position ${params.trailingPosition} is still present
|
|
164
|
-
`
|
|
165
|
-
`
|
|
166
|
-
`clear all trailing composites (>= position ${params.trailingPosition}) too, ` +
|
|
167
|
-
`set indexPolicy.${params.key} = 'sparse' to opt into truncate-on-hole, ` +
|
|
168
|
-
`or use Entity.remove(["${params.clearedComposite}"]) to drop the whole GSI.`,
|
|
177
|
+
`but composite "${params.trailingComposite}" at ${params.key} position ${params.trailingPosition} is still present. ` +
|
|
178
|
+
`Since v1.7.1 this error is no longer thrown — hole patterns collapse into the unified per-half can't-compose rule ` +
|
|
179
|
+
`(REMOVE the half under 'sparse' or removedSet cascade; noop under 'preserve' without removedSet).`,
|
|
169
180
|
});
|
|
170
181
|
/**
|
|
171
182
|
* EDD-9025 — A composite attribute on `primaryKey`, `indexes`, or a `unique`
|
package/dist/Errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Errors.js","sourceRoot":"","sources":["../src/Errors.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Errors.js","sourceRoot":"","sources":["../src/Errors.ts"],"names":[],"mappings":"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"}
|
package/dist/KeyComposer.d.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* the key format; KeyComposer extracts attribute values and delegates.
|
|
7
7
|
*/
|
|
8
8
|
import type * as DynamoSchema from "./DynamoSchema.js";
|
|
9
|
-
import {
|
|
9
|
+
import type { CompositeKeyHoleError } from "./Errors.js";
|
|
10
10
|
/** Index key part definition (pk or sk of an index) */
|
|
11
11
|
export interface KeyPart {
|
|
12
12
|
readonly field: string;
|
|
@@ -14,20 +14,30 @@ export interface KeyPart {
|
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
16
|
* Per-half policy value controlling how `Entity.update` and time-series
|
|
17
|
-
* `.append` handle a GSI half
|
|
18
|
-
* update payload.
|
|
17
|
+
* `.append` handle a GSI half the writer touches but can't compose.
|
|
19
18
|
*
|
|
20
|
-
* -
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
19
|
+
* Per-half evaluation gate (v1.7.1): a half is *touched* iff at least one of
|
|
20
|
+
* its composite names appears in the update payload (regardless of value,
|
|
21
|
+
* including `undefined`) OR appears in `Entity.remove([...])`. Untouched
|
|
22
|
+
* halves are skipped entirely — no SET, no REMOVE, no policy fires.
|
|
23
|
+
*
|
|
24
|
+
* For *touched* halves the policy decides the outcome when the structural
|
|
25
|
+
* rule can't compose (empty leading prefix OR hole pattern):
|
|
26
|
+
* - `"sparse"` — REMOVE this half's key attribute (the half drops out of the
|
|
27
|
+
* GSI). The other half follows its own per-half outcome independently —
|
|
28
|
+
* there is no GSI-wide cascade. The DDB projection rule means an item with
|
|
29
|
+
* only one key attribute is invisible in the GSI; the surviving half's
|
|
30
|
+
* value is preserved for rejoin without other writers re-firing.
|
|
31
|
+
* - `"preserve"` — noop (leave the stored key for this half untouched). The
|
|
32
|
+
* stored value may go stale until either (a) the next write that touches
|
|
33
|
+
* this half supplies enough composites to recompose, or (b) a composite of
|
|
34
|
+
* this half is named in `Entity.remove([...])` — the cascade override
|
|
35
|
+
* then REMOVEs this half's key.
|
|
27
36
|
*
|
|
28
37
|
* Halves not declared in `indexPolicy` default to `"preserve"`. See
|
|
29
38
|
* `DESIGN.md §7 Policy-Aware GSI Composition` for the full decision rules
|
|
30
|
-
* (
|
|
39
|
+
* (per-half evaluation gate, per-half outcome, cascade override, decision
|
|
40
|
+
* table).
|
|
31
41
|
*/
|
|
32
42
|
export type IndexPolicyKey = "sparse" | "preserve";
|
|
33
43
|
/**
|
|
@@ -166,34 +176,55 @@ export interface GsiUpdateResult {
|
|
|
166
176
|
export declare const composeSkPrefixUpTo: (schema: DynamoSchema.DynamoSchema, entityType: string, entityVersion: number, index: IndexDefinition, record: Record<string, unknown>, stopBefore: number) => string;
|
|
167
177
|
/**
|
|
168
178
|
* Policy-aware GSI key composition for `Entity.update` and time-series
|
|
169
|
-
* `.append` —
|
|
179
|
+
* `.append` — v1.7.1 per-half structural composition with per-half evaluation
|
|
180
|
+
* gate and per-half cascade.
|
|
181
|
+
*
|
|
182
|
+
* **Per-half evaluation gate (v1.7.1; broadened in v1.7.2).** Each half (PK
|
|
183
|
+
* and SK) is independently checked for whether the writer touched it. A half
|
|
184
|
+
* is "touched" iff at least one of its composite names appears in
|
|
185
|
+
* `updatePayload` (regardless of value, including `undefined`) OR appears in
|
|
186
|
+
* `keyRecord` (the entity primary-key attributes carried into the composer
|
|
187
|
+
* alongside the payload) OR appears in `removedSet`. **Untouched halves are
|
|
188
|
+
* skipped entirely — no SET, no REMOVE, no policy fires.** This closes the
|
|
189
|
+
* v1.7.0 multi-writer leak where a "stamp" writer that doesn't touch a GSI's
|
|
190
|
+
* composites would still trigger the policy and blow away another writer's
|
|
191
|
+
* key, AND the v1.7.1 PK-composites-only regression (#43) where GSI halves
|
|
192
|
+
* whose composites are entity-PK composites were silently skipped because
|
|
193
|
+
* those composites arrive via `keyRecord`, not `updatePayload`.
|
|
170
194
|
*
|
|
171
|
-
*
|
|
195
|
+
* **Two-way payload classification.**
|
|
172
196
|
* - **present** (`attr: <value>` in payload, or inherited from `keyRecord`)
|
|
173
197
|
* — value is used in composition.
|
|
174
198
|
* - **absent** (key omitted, or `attr: null`, or `attr: undefined`) — the
|
|
175
199
|
* structural rule treats all three identically.
|
|
176
200
|
*
|
|
177
|
-
*
|
|
178
|
-
*
|
|
179
|
-
*
|
|
180
|
-
*
|
|
181
|
-
*
|
|
201
|
+
* **Per-half outcome (v1.7.1 unified rule).** For each touched half:
|
|
202
|
+
* 1. Run the structural rule (longest leading prefix of present values in
|
|
203
|
+
* the merged record).
|
|
204
|
+
* 2. If the prefix is non-empty AND there's no hole → SET (full or truncated).
|
|
205
|
+
* 3. Otherwise (empty leading prefix OR hole pattern):
|
|
206
|
+
* - `'sparse'` → REMOVE this half's key.
|
|
207
|
+
* - `'preserve'` AND any composite of this half is in `removedSet` →
|
|
208
|
+
* REMOVE (cascade override under preserve).
|
|
209
|
+
* - `'preserve'` AND no composite in `removedSet` → noop (stored key
|
|
210
|
+
* retained, may be stale until next write touches the half).
|
|
182
211
|
*
|
|
183
|
-
*
|
|
184
|
-
*
|
|
212
|
+
* **Per-half roll-up (v1.7.1).** Each half's outcome applies to its own key
|
|
213
|
+
* attribute only. PK dropping doesn't drop SK; SK dropping doesn't drop PK.
|
|
214
|
+
* The item may be invisible in the GSI during a single-half-dropped period
|
|
215
|
+
* (DDB projection rule needs both keys for query visibility), but the
|
|
216
|
+
* surviving half's value persists for rejoin without other writers re-firing.
|
|
217
|
+
* The v1.7.0 GSI-wide cascade is gone.
|
|
185
218
|
*
|
|
186
|
-
*
|
|
187
|
-
* `
|
|
188
|
-
*
|
|
189
|
-
*
|
|
190
|
-
*
|
|
219
|
+
* **`Entity.remove([attr])` cascade (v1.7.1: per-half).** Composites in
|
|
220
|
+
* `removedSet` contribute to the merged record as "absent" (same as
|
|
221
|
+
* undefined-in-payload) AND make their containing half "touched" for the
|
|
222
|
+
* evaluation gate AND trigger the cascade override under preserve. The
|
|
223
|
+
* cascade no longer drops both halves of every GSI containing the cleared
|
|
224
|
+
* attribute — only the half(s) whose composite list contains it.
|
|
191
225
|
*
|
|
192
226
|
* See `DESIGN.md §7 Policy-Aware GSI Composition` for the full decision
|
|
193
|
-
*
|
|
194
|
-
*
|
|
195
|
-
* @throws {CompositeKeyHoleError} EDD-9024 on hole-pattern detection under
|
|
196
|
-
* `'preserve'` policy.
|
|
227
|
+
* table and worked multi-writer examples.
|
|
197
228
|
*/
|
|
198
229
|
export declare const composeGsiKeysForUpdatePolicyAware: (schema: DynamoSchema.DynamoSchema, entityType: string, entityVersion: number, indexes: Record<string, IndexDefinition>, updatePayload: Record<string, unknown>, keyRecord: Record<string, unknown>, options?: {
|
|
199
230
|
readonly removedSet?: ReadonlySet<string> | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KeyComposer.d.ts","sourceRoot":"","sources":["../src/KeyComposer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAQtD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"KeyComposer.d.ts","sourceRoot":"","sources":["../src/KeyComposer.ts"],"names":[],"mappings":"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"}
|