effect-dynamodb 1.6.0 → 1.7.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.
- package/dist/Entity.d.ts.map +1 -1
- package/dist/Entity.js +158 -79
- package/dist/Entity.js.map +1 -1
- package/dist/Errors.d.ts +68 -12
- package/dist/Errors.d.ts.map +1 -1
- package/dist/Errors.js +59 -12
- package/dist/Errors.js.map +1 -1
- package/dist/KeyComposer.d.ts +59 -71
- package/dist/KeyComposer.d.ts.map +1 -1
- package/dist/KeyComposer.js +160 -129
- package/dist/KeyComposer.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/EntitySchemas.d.ts.map +1 -1
- package/dist/internal/EntitySchemas.js +11 -7
- package/dist/internal/EntitySchemas.js.map +1 -1
- package/dist/internal/EntityTypes.d.ts +8 -6
- package/dist/internal/EntityTypes.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/Errors.d.ts
CHANGED
|
@@ -274,19 +274,27 @@ declare const CompositeKeyHoleError_base: new <A extends Record<string, any> = {
|
|
|
274
274
|
readonly _tag: "CompositeKeyHoleError";
|
|
275
275
|
} & Readonly<A>;
|
|
276
276
|
/**
|
|
277
|
-
* EDD-9024 — A GSI composite at
|
|
278
|
-
*
|
|
279
|
-
*
|
|
280
|
-
*
|
|
281
|
-
*
|
|
277
|
+
* EDD-9024 — A GSI composite at half-position `i` was absent while a composite
|
|
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).
|
|
282
287
|
*
|
|
283
288
|
* Raised at write time (Entity.update / time-series .append). The error
|
|
284
|
-
* names the GSI, the
|
|
285
|
-
*
|
|
286
|
-
*
|
|
289
|
+
* names the GSI, the absent composite at position `i`, and the still-present
|
|
290
|
+
* trailing composite at position `j` so callers can locate the offending
|
|
291
|
+
* payload field.
|
|
287
292
|
*
|
|
288
|
-
*
|
|
289
|
-
*
|
|
293
|
+
* Resolutions: supply a value for the absent composite, clear (omit or
|
|
294
|
+
* `Entity.remove(...)`) all trailing composites too, or set
|
|
295
|
+
* `indexPolicy.<key>` to `'sparse'` to opt into truncate-on-hole semantics.
|
|
296
|
+
*
|
|
297
|
+
* See `DESIGN.md §7 Policy-Aware GSI Composition`.
|
|
290
298
|
*/
|
|
291
299
|
export declare class CompositeKeyHoleError extends CompositeKeyHoleError_base<{
|
|
292
300
|
readonly entityType: string;
|
|
@@ -295,7 +303,8 @@ export declare class CompositeKeyHoleError extends CompositeKeyHoleError_base<{
|
|
|
295
303
|
readonly trailingComposite: string;
|
|
296
304
|
readonly clearedPosition: number;
|
|
297
305
|
readonly trailingPosition: number;
|
|
298
|
-
|
|
306
|
+
/** Which GSI key attribute the hole is in — `"pk"` (gsiNpk) or `"sk"` (gsiNsk). */
|
|
307
|
+
readonly key: "pk" | "sk";
|
|
299
308
|
/** Human-readable description, prefixed with `EDD-9024`. */
|
|
300
309
|
readonly message: string;
|
|
301
310
|
}> {
|
|
@@ -311,7 +320,54 @@ export declare const makeCompositeKeyHoleError: (params: {
|
|
|
311
320
|
readonly trailingComposite: string;
|
|
312
321
|
readonly clearedPosition: number;
|
|
313
322
|
readonly trailingPosition: number;
|
|
314
|
-
readonly
|
|
323
|
+
readonly key: "pk" | "sk";
|
|
315
324
|
}) => CompositeKeyHoleError;
|
|
325
|
+
declare const CompositeNullableError_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 & {
|
|
326
|
+
readonly _tag: "CompositeNullableError";
|
|
327
|
+
} & Readonly<A>;
|
|
328
|
+
/**
|
|
329
|
+
* EDD-9025 — A composite attribute on `primaryKey`, `indexes`, or a `unique`
|
|
330
|
+
* constraint has a Schema whose type union includes `null`. Composites
|
|
331
|
+
* participate in string composition (`acc#X#alert#Y`); `null` is not a
|
|
332
|
+
* meaningful slot value — only present-with-value or absent. Allowing
|
|
333
|
+
* `Schema.NullOr` / `Schema.NullishOr` / `Schema.Union([..., Schema.Null])`
|
|
334
|
+
* on a composite would let `set({ composite: null })` typecheck, then either
|
|
335
|
+
* blow up at runtime or silently produce a key with the literal string
|
|
336
|
+
* `"null"` as a slot.
|
|
337
|
+
*
|
|
338
|
+
* Raised at `Entity.make()` time. The error names the entity, the
|
|
339
|
+
* surface where the composite is declared (primary key / a GSI / a unique
|
|
340
|
+
* constraint), the offending composite attribute, and the resolved Schema
|
|
341
|
+
* path that contains `null`.
|
|
342
|
+
*
|
|
343
|
+
* Resolution: declare the attribute as `Schema.optional(...)` (which
|
|
344
|
+
* produces `T | undefined` without `null`). Sparse-pattern usage is fully
|
|
345
|
+
* supported under v3's two-way payload classification — `undefined` is
|
|
346
|
+
* "absent" for GSI composition purposes.
|
|
347
|
+
*
|
|
348
|
+
* See `DESIGN.md §7 Policy-Aware GSI Composition` (EDD-9025 footgun gate).
|
|
349
|
+
*/
|
|
350
|
+
export declare class CompositeNullableError extends CompositeNullableError_base<{
|
|
351
|
+
readonly entityType: string;
|
|
352
|
+
/** "primaryKey" | "index:<name>" | "unique:<name>" */
|
|
353
|
+
readonly surface: string;
|
|
354
|
+
readonly compositeAttribute: string;
|
|
355
|
+
/** Resolved schema path that revealed the `null` branch. */
|
|
356
|
+
readonly schemaPath: string;
|
|
357
|
+
/** Human-readable description, prefixed with `EDD-9025`. */
|
|
358
|
+
readonly message: string;
|
|
359
|
+
}> {
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Build a {@link CompositeNullableError} with a formatted message. Centralises
|
|
363
|
+
* the message format so call sites (Entity.make validation paths) stay
|
|
364
|
+
* consistent.
|
|
365
|
+
*/
|
|
366
|
+
export declare const makeCompositeNullableError: (params: {
|
|
367
|
+
readonly entityType: string;
|
|
368
|
+
readonly surface: string;
|
|
369
|
+
readonly compositeAttribute: string;
|
|
370
|
+
readonly schemaPath: string;
|
|
371
|
+
}) => CompositeNullableError;
|
|
316
372
|
export {};
|
|
317
373
|
//# sourceMappingURL=Errors.d.ts.map
|
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":"AAAA,OAAO,EAAQ,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAA;;;;AAE1C,oDAAoD;AACpD,qBAAa,WAAY,SAAQ,iBAAgC;IAC/D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CACxB,CAAC;CAAG;;;;AAEL,kDAAkD;AAClD,qBAAa,eAAgB,SAAQ,qBAAoC;IACvE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CACxB,CAAC;CAAG;;;;AAEL,oDAAoD;AACpD,qBAAa,qBAAsB,SAAQ,2BAA0C;IACnF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CACxB,CAAC;CAAG;;;;AAEL,yDAAyD;AACzD,qBAAa,mBAAoB,SAAQ,yBAAwC;IAC/E,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CACxB,CAAC;CAAG;;;;AAEL,wDAAwD;AACxD,qBAAa,qBAAsB,SAAQ,2BAA0C;IACnF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CACxB,CAAC;CAAG;;;;AAEL,iDAAiD;AACjD,qBAAa,YAAa,SAAQ,kBAAiC;IACjE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACtC,CAAC;CAAG;;;;AAEL;;;;;;;;;;;;;GAaG;AACH,qBAAa,sBAAuB,SAAQ,4BAA2C;IACrF,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;CAC1C,CAAC;CAAG;;;;AAEL;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,WAAY,SAAQ,iBAAgC;IAC/D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAA;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;CACzC,CAAC;CAAG;;;;AAEL,6CAA6C;AAC7C,qBAAa,eAAgB,SAAQ,qBAAoC;IACvE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CACxB,CAAC;CAAG;;;;AAEL,mEAAmE;AACnE,qBAAa,oBAAqB,SAAQ,0BAAyC;IACjF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;QAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KACtC,CAAC,CAAA;IACF,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CACxB,CAAC;CAAG;;;;AAEL,+DAA+D;AAC/D,qBAAa,yBAA0B,SAAQ,+BAA8C;IAC3F,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACxC,CAAC;CAAG;;;;AAEL,0EAA0E;AAC1E,qBAAa,mBAAoB,SAAQ,yBAAwC;IAC/E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;CAC/B,CAAC;CAAG;AAML,8DAA8D;AAC9D,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,8BAA8B,CAAA;IAC7C,QAAQ,CAAC,mBAAmB,CAAC,EAAE,aAAa,CAAC;QAC3C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;QACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAC1B,CAAC,CAAA;CACH;AAED,iEAAiE;AACjE,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EAAE,iCAAiC,CAAA;CACjD;AAED,gBAAgB;AAChB,eAAO,MAAM,yBAAyB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,uBAIE,CAAA;AAEtE,gBAAgB;AAChB,eAAO,MAAM,2BAA2B,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,yBAIG,CAAA;AAEzE,gBAAgB;AAChB,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,KAAG,OAKiC,CAAA;AAElF,gBAAgB;AAChB,eAAO,MAAM,oBAAoB,GAAI,OAAO,OAAO,KAAG,OAIM,CAAA;AAE5D,gBAAgB;AAChB,eAAO,MAAM,wBAAwB,GAAI,OAAO,OAAO,KAAG,OAIE,CAAA;AAE5D,gBAAgB;AAChB,eAAO,MAAM,qBAAqB,GAAI,OAAO,OAAO,KAAG,OAIW,CAAA;;;;AAElE,6EAA6E;AAC7E,qBAAa,mBAAoB,SAAQ,yBAAwC;IAC/E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB,CAAC;CAAG;;;;AAEL,uDAAuD;AACvD,qBAAa,WAAY,SAAQ,iBAAgC;IAC/D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB,CAAC;CAAG;;;;AAEL,kEAAkE;AAClE,qBAAa,WAAY,SAAQ,iBAAgC;IAC/D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B,CAAC;CAAG;;;;AAEL,iEAAiE;AACjE,qBAAa,cAAe,SAAQ,oBAAmC;IACrE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACtC,CAAC;CAAG;;;;AAEL,yFAAyF;AACzF,qBAAa,sBAAuB,SAAQ,4BAA2C;IACrF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACtC,CAAC;CAAG;;;;AAEL,+FAA+F;AAC/F,qBAAa,2BAA4B,SAAQ,iCAAgD;IAC/F,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB,CAAC;CAAG;;;;AAEL,kEAAkE;AAClE,qBAAa,4BAA6B,SAAQ,kCAAiD;IACjG,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB,CAAC;CAAG;;;;AAEL,sDAAsD;AACtD,qBAAa,qBAAsB,SAAQ,2BAA0C;IACnF,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,CAAA;CACxC,CAAC;CAAG;;;;AAEL,qEAAqE;AACrE,qBAAa,eAAgB,SAAQ,qBAAoC;IACvE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;CACjC,CAAC;CAAG;;;;AAEL;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,qBAAsB,SAAQ,2BAA0C;IACnF,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;IACjC,mFAAmF;IACnF,QAAQ,CAAC,GAAG,EAAE,IAAI,GAAG,IAAI,CAAA;IACzB,4DAA4D;IAC5D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,CAAC;CAAG;AAEL;;;GAGG;AACH,eAAO,MAAM,yBAAyB,GAAI,QAAQ;IAChD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,GAAG,EAAE,IAAI,GAAG,IAAI,CAAA;CAC1B,KAAG,qBAYA,CAAA;;;;AAEJ;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,sBAAuB,SAAQ,4BAA2C;IACrF,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,sDAAsD;IACtD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAA;IACnC,4DAA4D;IAC5D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,4DAA4D;IAC5D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,CAAC;CAAG;AAEL;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,GAAI,QAAQ;IACjD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAA;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC5B,KAAG,sBASA,CAAA"}
|
package/dist/Errors.js
CHANGED
|
@@ -128,19 +128,27 @@ export class CascadePartialFailure extends Data.TaggedError("CascadePartialFailu
|
|
|
128
128
|
export class VersionConflict extends Data.TaggedError("VersionConflict") {
|
|
129
129
|
}
|
|
130
130
|
/**
|
|
131
|
-
* EDD-9024 — A GSI composite at
|
|
132
|
-
*
|
|
133
|
-
*
|
|
134
|
-
*
|
|
135
|
-
*
|
|
131
|
+
* EDD-9024 — A GSI composite at half-position `i` was absent while a composite
|
|
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).
|
|
136
141
|
*
|
|
137
142
|
* Raised at write time (Entity.update / time-series .append). The error
|
|
138
|
-
* names the GSI, the
|
|
139
|
-
*
|
|
140
|
-
*
|
|
143
|
+
* names the GSI, the absent composite at position `i`, and the still-present
|
|
144
|
+
* trailing composite at position `j` so callers can locate the offending
|
|
145
|
+
* payload field.
|
|
141
146
|
*
|
|
142
|
-
*
|
|
143
|
-
*
|
|
147
|
+
* Resolutions: supply a value for the absent composite, clear (omit or
|
|
148
|
+
* `Entity.remove(...)`) all trailing composites too, or set
|
|
149
|
+
* `indexPolicy.<key>` to `'sparse'` to opt into truncate-on-hole semantics.
|
|
150
|
+
*
|
|
151
|
+
* See `DESIGN.md §7 Policy-Aware GSI Composition`.
|
|
144
152
|
*/
|
|
145
153
|
export class CompositeKeyHoleError extends Data.TaggedError("CompositeKeyHoleError") {
|
|
146
154
|
}
|
|
@@ -151,10 +159,49 @@ export class CompositeKeyHoleError extends Data.TaggedError("CompositeKeyHoleErr
|
|
|
151
159
|
export const makeCompositeKeyHoleError = (params) => new CompositeKeyHoleError({
|
|
152
160
|
...params,
|
|
153
161
|
message: `[EDD-9024] Composite key hole on GSI "${params.indexName}" of entity "${params.entityType}": ` +
|
|
154
|
-
`composite "${params.clearedComposite}" at ${params.
|
|
155
|
-
`
|
|
162
|
+
`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
|
+
`and indexPolicy.${params.key} is 'preserve'. ` +
|
|
156
165
|
`Composed keys cannot carry holes — either supply a value for "${params.clearedComposite}", ` +
|
|
157
166
|
`clear all trailing composites (>= position ${params.trailingPosition}) too, ` +
|
|
167
|
+
`set indexPolicy.${params.key} = 'sparse' to opt into truncate-on-hole, ` +
|
|
158
168
|
`or use Entity.remove(["${params.clearedComposite}"]) to drop the whole GSI.`,
|
|
159
169
|
});
|
|
170
|
+
/**
|
|
171
|
+
* EDD-9025 — A composite attribute on `primaryKey`, `indexes`, or a `unique`
|
|
172
|
+
* constraint has a Schema whose type union includes `null`. Composites
|
|
173
|
+
* participate in string composition (`acc#X#alert#Y`); `null` is not a
|
|
174
|
+
* meaningful slot value — only present-with-value or absent. Allowing
|
|
175
|
+
* `Schema.NullOr` / `Schema.NullishOr` / `Schema.Union([..., Schema.Null])`
|
|
176
|
+
* on a composite would let `set({ composite: null })` typecheck, then either
|
|
177
|
+
* blow up at runtime or silently produce a key with the literal string
|
|
178
|
+
* `"null"` as a slot.
|
|
179
|
+
*
|
|
180
|
+
* Raised at `Entity.make()` time. The error names the entity, the
|
|
181
|
+
* surface where the composite is declared (primary key / a GSI / a unique
|
|
182
|
+
* constraint), the offending composite attribute, and the resolved Schema
|
|
183
|
+
* path that contains `null`.
|
|
184
|
+
*
|
|
185
|
+
* Resolution: declare the attribute as `Schema.optional(...)` (which
|
|
186
|
+
* produces `T | undefined` without `null`). Sparse-pattern usage is fully
|
|
187
|
+
* supported under v3's two-way payload classification — `undefined` is
|
|
188
|
+
* "absent" for GSI composition purposes.
|
|
189
|
+
*
|
|
190
|
+
* See `DESIGN.md §7 Policy-Aware GSI Composition` (EDD-9025 footgun gate).
|
|
191
|
+
*/
|
|
192
|
+
export class CompositeNullableError extends Data.TaggedError("CompositeNullableError") {
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Build a {@link CompositeNullableError} with a formatted message. Centralises
|
|
196
|
+
* the message format so call sites (Entity.make validation paths) stay
|
|
197
|
+
* consistent.
|
|
198
|
+
*/
|
|
199
|
+
export const makeCompositeNullableError = (params) => new CompositeNullableError({
|
|
200
|
+
...params,
|
|
201
|
+
message: `[EDD-9025] Entity "${params.entityType}": composite attribute "${params.compositeAttribute}" ` +
|
|
202
|
+
`on ${params.surface} resolves to a Schema that includes \`null\` (${params.schemaPath}). ` +
|
|
203
|
+
`Composites participate in string composition and cannot be null — only present-with-value or absent. ` +
|
|
204
|
+
`Replace the nullable wrapper with \`Schema.optional(...)\` (T | undefined) to express the sparse ` +
|
|
205
|
+
`pattern, or supply a non-nullable schema for "${params.compositeAttribute}".`,
|
|
206
|
+
});
|
|
160
207
|
//# sourceMappingURL=Errors.js.map
|
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
|
@@ -13,24 +13,37 @@ export interface KeyPart {
|
|
|
13
13
|
readonly composite: ReadonlyArray<string>;
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
|
-
* Per-
|
|
17
|
-
* `.append` handle a
|
|
18
|
-
* payload.
|
|
19
|
-
*
|
|
20
|
-
* - `"sparse"` —
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* `
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
16
|
+
* Per-half policy value controlling how `Entity.update` and time-series
|
|
17
|
+
* `.append` handle a GSI half whose composites are absent from the merged
|
|
18
|
+
* update payload.
|
|
19
|
+
*
|
|
20
|
+
* - `"sparse"` — when the half's composites are entirely absent (whole-half
|
|
21
|
+
* empty), REMOVE both `gsiNpk` and `gsiNsk` (item drops out of the GSI).
|
|
22
|
+
* On a hole pattern (`[A, _, C]`), truncate the half to the leading prefix
|
|
23
|
+
* `[A]` and ignore trailing values.
|
|
24
|
+
* - `"preserve"` — whole-half-empty is a no-op; the stored values for that
|
|
25
|
+
* half stay intact. On a hole pattern, throw `CompositeKeyHoleError`
|
|
26
|
+
* (EDD-9024) at write time.
|
|
27
|
+
*
|
|
28
|
+
* Halves not declared in `indexPolicy` default to `"preserve"`. See
|
|
29
|
+
* `DESIGN.md §7 Policy-Aware GSI Composition` for the full decision rules
|
|
30
|
+
* (structural composition, two drop triggers, decision table).
|
|
31
|
+
*/
|
|
32
|
+
export type IndexPolicyKey = "sparse" | "preserve";
|
|
33
|
+
/**
|
|
34
|
+
* Per-half index policy declaration. Both halves default to `"preserve"`
|
|
35
|
+
* when omitted (or when `indexPolicy` is omitted entirely from the GSI
|
|
36
|
+
* config).
|
|
37
|
+
*
|
|
38
|
+
* The standard composition path has only payload-level information (no
|
|
39
|
+
* read-before-write), so per-attribute policy callbacks were removed in
|
|
40
|
+
* v3 — within a single half, per-attribute mixing has no coherent semantic
|
|
41
|
+
* because a half is a single concatenated string.
|
|
42
|
+
*/
|
|
43
|
+
export interface IndexPolicy {
|
|
44
|
+
readonly pk?: IndexPolicyKey | undefined;
|
|
45
|
+
readonly sk?: IndexPolicyKey | undefined;
|
|
46
|
+
}
|
|
34
47
|
/** Index definition for primary or secondary index (internal format) */
|
|
35
48
|
export interface IndexDefinition {
|
|
36
49
|
readonly index?: string | undefined;
|
|
@@ -40,9 +53,9 @@ export interface IndexDefinition {
|
|
|
40
53
|
readonly sk: KeyPart;
|
|
41
54
|
readonly casing?: DynamoSchema.Casing | undefined;
|
|
42
55
|
/**
|
|
43
|
-
* Optional per-
|
|
44
|
-
*
|
|
45
|
-
*
|
|
56
|
+
* Optional per-half policy for `Entity.update` and `.append`. Not consulted
|
|
57
|
+
* on `put()` — put always omits a GSI's keys when any of its composites is
|
|
58
|
+
* missing.
|
|
46
59
|
*/
|
|
47
60
|
readonly indexPolicy?: IndexPolicy | undefined;
|
|
48
61
|
}
|
|
@@ -60,13 +73,9 @@ export interface GsiConfig {
|
|
|
60
73
|
/** Sort key: physical field name + composite attributes. */
|
|
61
74
|
readonly sk: KeyPart;
|
|
62
75
|
/**
|
|
63
|
-
* Per-
|
|
64
|
-
* time-series `.append`. Defaults to `"preserve"`
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
* At append-time, returned keys must be members of the `appendInput`
|
|
68
|
-
* schema (enforced at `Entity.make()`) — composites owned by other writers
|
|
69
|
-
* cannot have policy at append-time, since `.append` cannot touch them.
|
|
76
|
+
* Per-half sparse/preserve policy. Applied by `Entity.update` and
|
|
77
|
+
* time-series `.append`. Defaults to `"preserve"` on each half. Not
|
|
78
|
+
* applied on `put()`. See `DESIGN.md §7 Policy-Aware GSI Composition`.
|
|
70
79
|
*/
|
|
71
80
|
readonly indexPolicy?: IndexPolicy | undefined;
|
|
72
81
|
}
|
|
@@ -143,72 +152,51 @@ export interface GsiUpdateResult {
|
|
|
143
152
|
}
|
|
144
153
|
/**
|
|
145
154
|
* Compose a sort key from the leading prefix `[sk_0, ..., sk_(stopBefore-1)]`
|
|
146
|
-
* of an index's SK composites. Used by
|
|
147
|
-
* trailing SK composite is
|
|
148
|
-
*
|
|
149
|
-
*
|
|
155
|
+
* of an index's SK composites. Used by v3's structural composition rule when a
|
|
156
|
+
* trailing SK composite is absent and the half's `indexPolicy.sk` is
|
|
157
|
+
* `"preserve"` (or absent — defaults to preserve), or when a hole pattern is
|
|
158
|
+
* encountered under `"sparse"`.
|
|
150
159
|
*
|
|
151
160
|
* `stopBefore === 0` produces the bare entity/collection prefix with no
|
|
152
161
|
* composite values (the item still belongs to the GSI but at the broadest
|
|
153
162
|
* scope — `begins_with(sk, "<prefix>")` matches it).
|
|
154
163
|
*
|
|
155
|
-
* See `DESIGN.md §7
|
|
164
|
+
* See `DESIGN.md §7 Policy-Aware GSI Composition`.
|
|
156
165
|
*/
|
|
157
166
|
export declare const composeSkPrefixUpTo: (schema: DynamoSchema.DynamoSchema, entityType: string, entityVersion: number, index: IndexDefinition, record: Record<string, unknown>, stopBefore: number) => string;
|
|
158
167
|
/**
|
|
159
168
|
* Policy-aware GSI key composition for `Entity.update` and time-series
|
|
160
|
-
* `.append
|
|
169
|
+
* `.append` — v3 per-half structural composition.
|
|
161
170
|
*
|
|
162
|
-
* Implements
|
|
171
|
+
* Implements two-way payload classification:
|
|
163
172
|
* - **present** (`attr: <value>` in payload, or inherited from `keyRecord`)
|
|
164
173
|
* — value is used in composition.
|
|
165
|
-
* - **
|
|
166
|
-
*
|
|
167
|
-
* bypassed for explicit clears.
|
|
168
|
-
* - **omitted** (key not in payload at all) — `indexPolicy` is consulted.
|
|
169
|
-
* Default policy is `"preserve"` for any composite not declared.
|
|
170
|
-
*
|
|
171
|
-
* Per-attribute outcomes (per touched GSI):
|
|
174
|
+
* - **absent** (key omitted, or `attr: null`, or `attr: undefined`) — the
|
|
175
|
+
* structural rule treats all three identically.
|
|
172
176
|
*
|
|
173
|
-
*
|
|
174
|
-
*
|
|
175
|
-
*
|
|
176
|
-
*
|
|
177
|
-
*
|
|
178
|
-
* | clear+preserve| Drop the GSI (degrades to sparse on PK — partition migration is almost always wrong) | **Truncate `gsiNsk`** at this composite (hierarchical pruning) |
|
|
177
|
+
* For each touched GSI half (PK and SK independently), walk the composite
|
|
178
|
+
* list left-to-right and build the longest valid leading prefix. Policy is
|
|
179
|
+
* consulted only for the hole pattern (truncate under sparse, throw EDD-9024
|
|
180
|
+
* under preserve) and the whole-half-empty case (drop both keys under
|
|
181
|
+
* sparse, no-op under preserve).
|
|
179
182
|
*
|
|
180
183
|
* Cascade (`Entity.remove([attr])`) overrides everything: any composite in
|
|
181
|
-
* `removedSet` forces a full GSI drop.
|
|
182
|
-
*
|
|
183
|
-
* **Hole detection.** Throws `CompositeKeyHoleError` (EDD-9024) when an SK
|
|
184
|
-
* composite at position `i` is cleared (with preserve) while a composite at
|
|
185
|
-
* position `j > i` is still present in the merged payload — composed keys
|
|
186
|
-
* cannot carry holes.
|
|
184
|
+
* `removedSet` forces a full GSI drop (REMOVE both `gsiNpk` and `gsiNsk`).
|
|
187
185
|
*
|
|
188
186
|
* A GSI is considered "touched" when any of its composites appears in
|
|
189
|
-
* `updatePayload`
|
|
190
|
-
*
|
|
191
|
-
*
|
|
192
|
-
*
|
|
187
|
+
* `updatePayload`, or `removedSet`. GSIs without an `indexPolicy` are skipped
|
|
188
|
+
* when none of their composites are touched. GSIs with a policy are always
|
|
189
|
+
* evaluated — the policy is a declarative statement about the GSI's
|
|
190
|
+
* membership invariant.
|
|
193
191
|
*
|
|
194
192
|
* See `DESIGN.md §7 Policy-Aware GSI Composition` for the full decision
|
|
195
|
-
* algorithm
|
|
196
|
-
* for the trailing-clear truncation contract.
|
|
193
|
+
* algorithm, decision table, and the two-drop-trigger framing.
|
|
197
194
|
*
|
|
198
|
-
* @throws {CompositeKeyHoleError} EDD-9024 on hole-pattern detection
|
|
195
|
+
* @throws {CompositeKeyHoleError} EDD-9024 on hole-pattern detection under
|
|
196
|
+
* `'preserve'` policy.
|
|
199
197
|
*/
|
|
200
198
|
export declare const composeGsiKeysForUpdatePolicyAware: (schema: DynamoSchema.DynamoSchema, entityType: string, entityVersion: number, indexes: Record<string, IndexDefinition>, updatePayload: Record<string, unknown>, keyRecord: Record<string, unknown>, options?: {
|
|
201
199
|
readonly removedSet?: ReadonlySet<string> | undefined;
|
|
202
|
-
/**
|
|
203
|
-
* Attributes that appear in `updatePayload` with value `null` or
|
|
204
|
-
* `undefined` — i.e. the consumer explicitly cleared them. The library
|
|
205
|
-
* distinguishes this from omission to give consumers an unambiguous
|
|
206
|
-
* "drop this composite from the key" instruction; `null` and
|
|
207
|
-
* `undefined` collapse here to eliminate the long-standing footgun of
|
|
208
|
-
* dev confusion between the two in TypeScript with
|
|
209
|
-
* `exactOptionalPropertyTypes`.
|
|
210
|
-
*/
|
|
211
|
-
readonly clearedSet?: ReadonlySet<string> | undefined;
|
|
212
200
|
}) => GsiUpdateResult;
|
|
213
201
|
/** @internal — re-export for documentation cross-reference. */
|
|
214
202
|
export type { CompositeKeyHoleError };
|
|
@@ -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,KAAK,qBAAqB,EAA6B,MAAM,aAAa,CAAA;AAEnF,uDAAuD;AACvD,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CAC1C;AAED
|
|
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,KAAK,qBAAqB,EAA6B,MAAM,aAAa,CAAA;AAEnF,uDAAuD;AACvD,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CAC1C;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,UAAU,CAAA;AAElD;;;;;;;;;GASG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,CAAC,EAAE,cAAc,GAAG,SAAS,CAAA;IACxC,QAAQ,CAAC,EAAE,CAAC,EAAE,cAAc,GAAG,SAAS,CAAA;CACzC;AAED,wEAAwE;AACxE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;IAChE,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,WAAW,GAAG,SAAS,CAAA;IACpD,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,MAAM,GAAG,SAAS,CAAA;IACjD;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;CAC/C;AAED;iFACiF;AACjF,MAAM,WAAW,SAAS;IACxB,0CAA0C;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,8EAA8E;IAC9E,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;IAChE,mKAAmK;IACnK,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,WAAW,GAAG,SAAS,CAAA;IACpD,iEAAiE;IACjE,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAA;IACpB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAA;IACpB;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;CAC/C;AAED,oFAAoF;AACpF,eAAO,MAAM,kBAAkB,GAAI,QAAQ,SAAS,KAAG,eAqBtD,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAC5B,WAAW,aAAa,CAAC,MAAM,CAAC,EAChC,QAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC9B,aAAa,CAAC,MAAM,CAOnB,CAAA;AAEJ;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAC/B,WAAW,aAAa,CAAC,MAAM,CAAC,EAChC,QAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC9B,aAAa,CAAC,MAAM,CAAC,GAAG,SAQ1B,CAAA;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,OAAO,KAAG,MAY/C,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GACpB,QAAQ,YAAY,CAAC,YAAY,EACjC,YAAY,MAAM,EAClB,OAAO,eAAe,EACtB,QAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC9B,MAaF,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,GACpB,QAAQ,YAAY,CAAC,YAAY,EACjC,YAAY,MAAM,EAClB,eAAe,MAAM,EACrB,OAAO,eAAe,EACtB,QAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC9B,MAwBF,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAC3B,QAAQ,YAAY,CAAC,YAAY,EACjC,YAAY,MAAM,EAClB,eAAe,MAAM,EACrB,OAAO,eAAe,EACtB,QAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC9B,MAAM,CAAC,MAAM,EAAE,MAAM,CAGtB,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAC9B,QAAQ,YAAY,CAAC,YAAY,EACjC,YAAY,MAAM,EAClB,eAAe,MAAM,EACrB,OAAO,eAAe,EACtB,QAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC9B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAI3B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,GACzB,QAAQ,YAAY,CAAC,YAAY,EACjC,YAAY,MAAM,EAClB,eAAe,MAAM,EACrB,SAAS,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EACxC,QAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC9B,MAAM,CAAC,MAAM,EAAE,MAAM,CAavB,CAAA;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CACxC;AAoCD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,mBAAmB,GAC9B,QAAQ,YAAY,CAAC,YAAY,EACjC,YAAY,MAAM,EAClB,eAAe,MAAM,EACrB,OAAO,eAAe,EACtB,QAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,YAAY,MAAM,KACjB,MAuBF,CAAA;AAwGD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,kCAAkC,GAC7C,QAAQ,YAAY,CAAC,YAAY,EACjC,YAAY,MAAM,EAClB,eAAe,MAAM,EACrB,SAAS,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EACxC,eAAe,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,UAAU;IACR,QAAQ,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;CACtD,KACA,eA0FF,CAAA;AAED,+DAA+D;AAC/D,YAAY,EAAE,qBAAqB,EAAE,CAAA;AAErC;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,YAAY,CAAC,YAAY,EACjC,YAAY,MAAM,EAClB,eAAe,MAAM,EACrB,OAAO,eAAe,EACtB,QAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC9B,MA8BF,CAAA;AAWD;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GACzB,WAAW,MAAM,EACjB,cAAc,OAAO,EACrB,SAAQ,YAAY,CAAC,MAAoB,KACxC,MACyG,CAAA;AAE5G;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAC/B,WAAW,MAAM,EACjB,SAAQ,YAAY,CAAC,MAAoB,KACxC,MAAgE,CAAA"}
|