@effect-dynamodb/schema 1.25.0 → 1.27.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/Compression.d.ts +82 -0
- package/dist/Compression.d.ts.map +1 -0
- package/dist/Compression.js +80 -0
- package/dist/Compression.js.map +1 -0
- package/dist/DynamoModel.d.ts +107 -3
- package/dist/DynamoModel.d.ts.map +1 -1
- package/dist/DynamoModel.js +118 -0
- package/dist/DynamoModel.js.map +1 -1
- package/dist/Entity.d.ts +19 -3
- package/dist/Entity.d.ts.map +1 -1
- package/dist/Entity.js +28 -1
- package/dist/Entity.js.map +1 -1
- package/dist/Errors.d.ts +41 -0
- package/dist/Errors.d.ts.map +1 -1
- package/dist/Errors.js +32 -0
- package/dist/Errors.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/EntityPacked.d.ts +64 -0
- package/dist/internal/EntityPacked.d.ts.map +1 -0
- package/dist/internal/EntityPacked.js +105 -0
- package/dist/internal/EntityPacked.js.map +1 -0
- package/dist/internal/PackedCodec.d.ts +186 -0
- package/dist/internal/PackedCodec.d.ts.map +1 -0
- package/dist/internal/PackedCodec.js +454 -0
- package/dist/internal/PackedCodec.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compression — pluggable compressors for packed storage
|
|
3
|
+
* (`DynamoModel.Packed({ format: "json", compression: { codec } })`).
|
|
4
|
+
*
|
|
5
|
+
* This module is runtime-neutral: it declares the synchronous
|
|
6
|
+
* {@link Compressor} interface, a registry keyed by codec, and the
|
|
7
|
+
* {@link Compression} service through which a registry reaches the read and
|
|
8
|
+
* write paths. It never imports a compression library. `node:zlib`-backed implementations
|
|
9
|
+
* (gzip, brotli, zstd) ship from `effect-dynamodb/compression/zlib`;
|
|
10
|
+
* any other runtime can supply its own.
|
|
11
|
+
*
|
|
12
|
+
* Every pack/unpack site reads the service with `Effect.serviceOption`, so no
|
|
13
|
+
* operation gains a requirement. An absent service behaves as an empty
|
|
14
|
+
* registry: uncompressed packed values (`S`) read and write everywhere, and
|
|
15
|
+
* only a value that needs a codec fails — with the operation's existing
|
|
16
|
+
* `ValidationError`, whose `cause` is the tagged `CompressorNotRegistered`.
|
|
17
|
+
*
|
|
18
|
+
* See `DESIGN.md §7 "Packed Storage"`.
|
|
19
|
+
*/
|
|
20
|
+
import { Context, Layer } from "effect";
|
|
21
|
+
import { type CompressionCodec } from "./DynamoModel.js";
|
|
22
|
+
export type { CompressionCodec } from "./DynamoModel.js";
|
|
23
|
+
/**
|
|
24
|
+
* A synchronous compression codec implementation.
|
|
25
|
+
*
|
|
26
|
+
* `compress` and `decompress` may throw (a corrupt payload, an output-size
|
|
27
|
+
* limit); the library turns a throw into a `ValidationError` naming the
|
|
28
|
+
* attribute. Tuning (level, quality, output limits) belongs to the
|
|
29
|
+
* implementation, not to the stored data: readers only need the codec, which
|
|
30
|
+
* the stored header carries.
|
|
31
|
+
*/
|
|
32
|
+
export interface Compressor {
|
|
33
|
+
readonly codec: CompressionCodec;
|
|
34
|
+
readonly compress: (input: Uint8Array) => Uint8Array;
|
|
35
|
+
readonly decompress: (input: Uint8Array) => Uint8Array;
|
|
36
|
+
}
|
|
37
|
+
/** Registered compressors, keyed by codec. */
|
|
38
|
+
export interface CompressionRegistry {
|
|
39
|
+
readonly get: (codec: CompressionCodec) => Compressor | undefined;
|
|
40
|
+
/** The registered codecs, in registration order. */
|
|
41
|
+
readonly codecs: ReadonlyArray<CompressionCodec>;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Build a registry from compressors.
|
|
45
|
+
*
|
|
46
|
+
* @throws `[EDD-9078]` when two compressors share a codec, or a compressor's
|
|
47
|
+
* `codec` is not `"gzip"`, `"brotli"` or `"zstd"`.
|
|
48
|
+
*/
|
|
49
|
+
export declare const make: (compressors: ReadonlyArray<Compressor>) => CompressionRegistry;
|
|
50
|
+
/** The registry with no compressors — what an absent `Compression` service means. */
|
|
51
|
+
export declare const empty: CompressionRegistry;
|
|
52
|
+
declare const Compression_base: Context.ServiceClass<Compression, "@effect-dynamodb/Compression", CompressionRegistry>;
|
|
53
|
+
/**
|
|
54
|
+
* Effect `Context.Service` carrying the {@link CompressionRegistry} packed
|
|
55
|
+
* storage reads and writes with.
|
|
56
|
+
*
|
|
57
|
+
* Provide it with {@link Compression.layer} merged into the application layer
|
|
58
|
+
* beside the client (recommended: it reaches every layer and program however
|
|
59
|
+
* the client layer is composed), pass `compressors` to `DynamoClient.make`
|
|
60
|
+
* (bundled into every bound operation), or use `DynamoClient.layer({
|
|
61
|
+
* compressors })` — whose `Compression` output does not survive a wrapper
|
|
62
|
+
* layer that consumes it through `Layer.provide`.
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```typescript
|
|
66
|
+
* import * as ZlibCompression from "effect-dynamodb/compression/zlib"
|
|
67
|
+
*
|
|
68
|
+
* const AppLayer = Layer.mergeAll(
|
|
69
|
+
* DynamoClient.layer({ region: "us-east-1" }),
|
|
70
|
+
* Compression.layer([ZlibCompression.zstd(), ZlibCompression.gzip()]),
|
|
71
|
+
* )
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
export declare class Compression extends Compression_base {
|
|
75
|
+
/** A layer providing a registry built from `compressors` (see {@link make}). */
|
|
76
|
+
static readonly layer: (compressors: ReadonlyArray<Compressor>) => Layer.Layer<Compression>;
|
|
77
|
+
/** Build a registry from compressors (see {@link make}). */
|
|
78
|
+
static readonly make: (compressors: ReadonlyArray<Compressor>) => CompressionRegistry;
|
|
79
|
+
/** The registry with no compressors. */
|
|
80
|
+
static readonly empty: CompressionRegistry;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=Compression.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Compression.d.ts","sourceRoot":"","sources":["../src/Compression.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AACvC,OAAO,EAAE,KAAK,gBAAgB,EAAqB,MAAM,kBAAkB,CAAA;AAE3E,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAExD;;;;;;;;GAQG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAA;IAChC,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,UAAU,CAAA;IACpD,QAAQ,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,UAAU,CAAA;CACvD;AAED,8CAA8C;AAC9C,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,UAAU,GAAG,SAAS,CAAA;IACjE,oDAAoD;IACpD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAA;CACjD;AAED;;;;;GAKG;AACH,eAAO,MAAM,IAAI,GAAI,aAAa,aAAa,CAAC,UAAU,CAAC,KAAG,mBA0B7D,CAAA;AAED,qFAAqF;AACrF,eAAO,MAAM,KAAK,EAAE,mBAA8B,CAAA;;AAElD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,WAAY,SAAQ,gBAEhC;IACC,gFAAgF;IAChF,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAI,aAAa,aAAa,CAAC,UAAU,CAAC,KAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAC3C;IAE/C,4DAA4D;IAC5D,MAAM,CAAC,QAAQ,CAAC,IAAI,gBA5DY,aAAa,CAAC,UAAU,CAAC,KAAG,mBAAmB,CA4DpD;IAE3B,wCAAwC;IACxC,MAAM,CAAC,QAAQ,CAAC,KAAK,sBAAQ;CAC9B"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compression — pluggable compressors for packed storage
|
|
3
|
+
* (`DynamoModel.Packed({ format: "json", compression: { codec } })`).
|
|
4
|
+
*
|
|
5
|
+
* This module is runtime-neutral: it declares the synchronous
|
|
6
|
+
* {@link Compressor} interface, a registry keyed by codec, and the
|
|
7
|
+
* {@link Compression} service through which a registry reaches the read and
|
|
8
|
+
* write paths. It never imports a compression library. `node:zlib`-backed implementations
|
|
9
|
+
* (gzip, brotli, zstd) ship from `effect-dynamodb/compression/zlib`;
|
|
10
|
+
* any other runtime can supply its own.
|
|
11
|
+
*
|
|
12
|
+
* Every pack/unpack site reads the service with `Effect.serviceOption`, so no
|
|
13
|
+
* operation gains a requirement. An absent service behaves as an empty
|
|
14
|
+
* registry: uncompressed packed values (`S`) read and write everywhere, and
|
|
15
|
+
* only a value that needs a codec fails — with the operation's existing
|
|
16
|
+
* `ValidationError`, whose `cause` is the tagged `CompressorNotRegistered`.
|
|
17
|
+
*
|
|
18
|
+
* See `DESIGN.md §7 "Packed Storage"`.
|
|
19
|
+
*/
|
|
20
|
+
import { Context, Layer } from "effect";
|
|
21
|
+
import { compressionCodecs } from "./DynamoModel.js";
|
|
22
|
+
/**
|
|
23
|
+
* Build a registry from compressors.
|
|
24
|
+
*
|
|
25
|
+
* @throws `[EDD-9078]` when two compressors share a codec, or a compressor's
|
|
26
|
+
* `codec` is not `"gzip"`, `"brotli"` or `"zstd"`.
|
|
27
|
+
*/
|
|
28
|
+
export const make = (compressors) => {
|
|
29
|
+
const byCodec = new Map();
|
|
30
|
+
for (const compressor of compressors) {
|
|
31
|
+
const codec = compressor?.codec;
|
|
32
|
+
if (!compressionCodecs.includes(codec)) {
|
|
33
|
+
throw new Error(`[EDD-9078] Compression: a compressor has codec ${JSON.stringify(codec)} — expected ` +
|
|
34
|
+
`one of ${compressionCodecs.map((c) => `"${c}"`).join(", ")}`);
|
|
35
|
+
}
|
|
36
|
+
if (typeof compressor.compress !== "function" || typeof compressor.decompress !== "function") {
|
|
37
|
+
throw new Error(`[EDD-9078] Compression: the "${codec}" compressor must provide ` +
|
|
38
|
+
`compress and decompress functions`);
|
|
39
|
+
}
|
|
40
|
+
if (byCodec.has(codec)) {
|
|
41
|
+
throw new Error(`[EDD-9078] Compression: two compressors are registered for codec "${codec}" — ` +
|
|
42
|
+
`register exactly one per codec`);
|
|
43
|
+
}
|
|
44
|
+
byCodec.set(codec, compressor);
|
|
45
|
+
}
|
|
46
|
+
const codecs = Object.freeze([...byCodec.keys()]);
|
|
47
|
+
return Object.freeze({ get: (codec) => byCodec.get(codec), codecs });
|
|
48
|
+
};
|
|
49
|
+
/** The registry with no compressors — what an absent `Compression` service means. */
|
|
50
|
+
export const empty = make([]);
|
|
51
|
+
/**
|
|
52
|
+
* Effect `Context.Service` carrying the {@link CompressionRegistry} packed
|
|
53
|
+
* storage reads and writes with.
|
|
54
|
+
*
|
|
55
|
+
* Provide it with {@link Compression.layer} merged into the application layer
|
|
56
|
+
* beside the client (recommended: it reaches every layer and program however
|
|
57
|
+
* the client layer is composed), pass `compressors` to `DynamoClient.make`
|
|
58
|
+
* (bundled into every bound operation), or use `DynamoClient.layer({
|
|
59
|
+
* compressors })` — whose `Compression` output does not survive a wrapper
|
|
60
|
+
* layer that consumes it through `Layer.provide`.
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* ```typescript
|
|
64
|
+
* import * as ZlibCompression from "effect-dynamodb/compression/zlib"
|
|
65
|
+
*
|
|
66
|
+
* const AppLayer = Layer.mergeAll(
|
|
67
|
+
* DynamoClient.layer({ region: "us-east-1" }),
|
|
68
|
+
* Compression.layer([ZlibCompression.zstd(), ZlibCompression.gzip()]),
|
|
69
|
+
* )
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
export class Compression extends Context.Service()("@effect-dynamodb/Compression") {
|
|
73
|
+
/** A layer providing a registry built from `compressors` (see {@link make}). */
|
|
74
|
+
static layer = (compressors) => Layer.succeed(Compression, make(compressors));
|
|
75
|
+
/** Build a registry from compressors (see {@link make}). */
|
|
76
|
+
static make = make;
|
|
77
|
+
/** The registry with no compressors. */
|
|
78
|
+
static empty = empty;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=Compression.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Compression.js","sourceRoot":"","sources":["../src/Compression.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AACvC,OAAO,EAAyB,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AA0B3E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,WAAsC,EAAuB,EAAE;IAClF,MAAM,OAAO,GAAG,IAAI,GAAG,EAAgC,CAAA;IACvD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,KAAK,GAAI,UAA8D,EAAE,KAAK,CAAA;QACpF,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAyB,CAAC,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CACb,kDAAkD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,cAAc;gBACnF,UAAU,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAChE,CAAA;QACH,CAAC;QACD,IAAI,OAAO,UAAU,CAAC,QAAQ,KAAK,UAAU,IAAI,OAAO,UAAU,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;YAC7F,MAAM,IAAI,KAAK,CACb,gCAAgC,KAAe,4BAA4B;gBACzE,mCAAmC,CACtC,CAAA;QACH,CAAC;QACD,IAAI,OAAO,CAAC,GAAG,CAAC,KAAyB,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CACb,qEAAqE,KAAe,MAAM;gBACxF,gCAAgC,CACnC,CAAA;QACH,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,KAAyB,EAAE,UAAU,CAAC,CAAA;IACpD,CAAC;IACD,MAAM,MAAM,GAAoC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IAClF,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,KAAuB,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;AACxF,CAAC,CAAA;AAED,qFAAqF;AACrF,MAAM,CAAC,MAAM,KAAK,GAAwB,IAAI,CAAC,EAAE,CAAC,CAAA;AAElD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,WAAY,SAAQ,OAAO,CAAC,OAAO,EAAoC,CAClF,8BAA8B,CAC/B;IACC,gFAAgF;IAChF,MAAM,CAAU,KAAK,GAAG,CAAC,WAAsC,EAA4B,EAAE,CAC3F,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAA;IAE/C,4DAA4D;IAC5D,MAAM,CAAU,IAAI,GAAG,IAAI,CAAA;IAE3B,wCAAwC;IACxC,MAAM,CAAU,KAAK,GAAG,KAAK,CAAA"}
|
package/dist/DynamoModel.d.ts
CHANGED
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
* - `storedAs` modifier — overrides DynamoDB storage format via annotation
|
|
10
10
|
* - `SparseMap()` — opt a `Schema.Record` field into flattened storage (one
|
|
11
11
|
* top-level attribute per entry)
|
|
12
|
+
* - `Packed()` — store an object/array-shaped field (or EventStore data/state)
|
|
13
|
+
* as one JSON string, optionally compressed over a threshold
|
|
12
14
|
*
|
|
13
15
|
* See docs/design-dynamo-model.md for the three-layer model (wire → domain → storage).
|
|
14
16
|
*/
|
|
@@ -240,6 +242,95 @@ export declare const SparseMap: (options?: {
|
|
|
240
242
|
}) => SparseMapConfig;
|
|
241
243
|
/** Type guard — returns true iff `value` is a {@link SparseMapConfig}. */
|
|
242
244
|
export declare const isSparseMapConfig: (value: unknown) => value is SparseMapConfig;
|
|
245
|
+
/**
|
|
246
|
+
* The serialisation of a packed value. Only `"json"` is accepted; `"binary"`
|
|
247
|
+
* (a future SchemaBinary encoding) is reserved in the stored header and refused
|
|
248
|
+
* here until it is implemented.
|
|
249
|
+
*/
|
|
250
|
+
export type PackedFormat = "json";
|
|
251
|
+
/** A compression codec a packed value may be stored with. */
|
|
252
|
+
export type CompressionCodec = "gzip" | "brotli" | "zstd";
|
|
253
|
+
/** Every {@link CompressionCodec}, in header-code order. */
|
|
254
|
+
export declare const compressionCodecs: ReadonlyArray<CompressionCodec>;
|
|
255
|
+
/**
|
|
256
|
+
* Default `compression.threshold`: 1,024 bytes of UTF-8 JSON. DynamoDB rounds
|
|
257
|
+
* write capacity per item at 1 KB, so compressing a smaller value saves no WCU
|
|
258
|
+
* and costs a decompression on every read.
|
|
259
|
+
*/
|
|
260
|
+
export declare const DEFAULT_COMPRESSION_THRESHOLD = 1024;
|
|
261
|
+
/** Options accepted by {@link Packed}. */
|
|
262
|
+
export interface PackedOptions {
|
|
263
|
+
readonly format: PackedFormat;
|
|
264
|
+
readonly compression?: {
|
|
265
|
+
readonly codec: CompressionCodec;
|
|
266
|
+
/**
|
|
267
|
+
* UTF-8 byte length of the JSON at or above which compression is tried.
|
|
268
|
+
* A non-negative safe integer; `0` always tries. Default 1024.
|
|
269
|
+
*/
|
|
270
|
+
readonly threshold?: number | undefined;
|
|
271
|
+
} | undefined;
|
|
272
|
+
}
|
|
273
|
+
/** Brand symbol identifying a {@link PackedConfig} produced by {@link Packed}. */
|
|
274
|
+
declare const PackedTag: unique symbol;
|
|
275
|
+
/**
|
|
276
|
+
* The validated, frozen storage config returned by {@link Packed} — the value
|
|
277
|
+
* of an entity field's `storedAs`, an EventStore stream's `storedAs.data`, or a
|
|
278
|
+
* snapshot's `storedAs`.
|
|
279
|
+
*/
|
|
280
|
+
export interface PackedConfig {
|
|
281
|
+
readonly [PackedTag]: true;
|
|
282
|
+
readonly format: PackedFormat;
|
|
283
|
+
readonly compression: {
|
|
284
|
+
readonly codec: CompressionCodec;
|
|
285
|
+
readonly threshold: number;
|
|
286
|
+
} | undefined;
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Store a value packed into one attribute: its wire form as a JSON string
|
|
290
|
+
* (`S`), or — when `compression` is set, the JSON is at least `threshold`
|
|
291
|
+
* UTF-8 bytes long, and the compressed bytes plus a one-byte header are
|
|
292
|
+
* smaller — as compressed binary (`B`).
|
|
293
|
+
*
|
|
294
|
+
* The stored form is self-describing: readers dispatch on what is stored (a
|
|
295
|
+
* native map, `S`, or `B` with its header), never on the current config, so
|
|
296
|
+
* switching a field or stream between native, packed and compressed storage
|
|
297
|
+
* needs no rewrite.
|
|
298
|
+
*
|
|
299
|
+
* Compression codecs are pluggable: register implementations through the
|
|
300
|
+
* `Compression` service (`node:zlib`-backed ones ship from `effect-dynamodb/compression/zlib`).
|
|
301
|
+
*
|
|
302
|
+
* @example
|
|
303
|
+
* ```ts
|
|
304
|
+
* DynamoModel.configure(Order, {
|
|
305
|
+
* lines: { storedAs: DynamoModel.Packed({ format: "json" }) },
|
|
306
|
+
* details: {
|
|
307
|
+
* storedAs: DynamoModel.Packed({ format: "json", compression: { codec: "zstd" } }),
|
|
308
|
+
* },
|
|
309
|
+
* })
|
|
310
|
+
* ```
|
|
311
|
+
*
|
|
312
|
+
* @throws `[EDD-9071]` on invalid options: a `format` other than `"json"`, an
|
|
313
|
+
* unknown `compression.codec`, a `threshold` that is not a non-negative safe
|
|
314
|
+
* integer, or an unknown option key.
|
|
315
|
+
*/
|
|
316
|
+
export declare const Packed: (options: PackedOptions) => PackedConfig;
|
|
317
|
+
/** Type guard — returns true iff `value` is a {@link PackedConfig}. */
|
|
318
|
+
export declare const isPackedConfig: (value: unknown) => value is PackedConfig;
|
|
319
|
+
/**
|
|
320
|
+
* Resolve the packed storage config for every field on a model configured
|
|
321
|
+
* `storedAs: DynamoModel.Packed(...)` via {@link configure}.
|
|
322
|
+
*
|
|
323
|
+
* Returns `Record<domainFieldName, PackedConfig>` — empty when the model is not
|
|
324
|
+
* a `ConfiguredModel` or configures no packed field. Like sparse maps, packing
|
|
325
|
+
* is a storage concern: it is read from `ConfiguredModel.attributes` only.
|
|
326
|
+
*/
|
|
327
|
+
export declare const getPackedFields: (model: Schema.Top | ConfiguredModel<any, any>) => globalThis.Record<string, PackedConfig>;
|
|
328
|
+
/** The domain field names a `ConfiguredModel` stores packed (`never` when none). */
|
|
329
|
+
export type ExtractPackedFields<Model> = Model extends ConfiguredModel<any, infer A> ? {
|
|
330
|
+
[K in keyof A & string]: A[K] extends {
|
|
331
|
+
readonly storedAs: PackedConfig;
|
|
332
|
+
} ? K : never;
|
|
333
|
+
}[keyof A & string] : never;
|
|
243
334
|
/**
|
|
244
335
|
* A model wrapped with DynamoDB-specific attribute overrides.
|
|
245
336
|
*
|
|
@@ -248,7 +339,9 @@ export declare const isSparseMapConfig: (value: unknown) => value is SparseMapCo
|
|
|
248
339
|
* - `storedAs` — override DynamoDB storage encoding (resolved to DynamoEncoding)
|
|
249
340
|
* OR a {@link SparseMapConfig} (via {@link SparseMap}) to
|
|
250
341
|
* flatten a `Schema.Record` field into per-entry top-level
|
|
251
|
-
* attributes (see {@link SparseConfig})
|
|
342
|
+
* attributes (see {@link SparseConfig})
|
|
343
|
+
* OR a {@link PackedConfig} (via {@link Packed}) to store the
|
|
344
|
+
* field as one JSON string / compressed binary value.
|
|
252
345
|
* - `immutable` — mark field as read-only after creation (excluded from Entity.Update)
|
|
253
346
|
* - `identifier` — mark field as the identity field for ref resolution
|
|
254
347
|
* - `ref` — mark field as a denormalized reference to another entity
|
|
@@ -264,6 +357,7 @@ export interface ConfiguredModel<M extends Schema.Top, A extends ConfigureAttrib
|
|
|
264
357
|
readonly identifier?: boolean;
|
|
265
358
|
readonly ref?: boolean;
|
|
266
359
|
readonly sparse?: SparseConfig;
|
|
360
|
+
readonly packed?: PackedConfig;
|
|
267
361
|
}>;
|
|
268
362
|
}
|
|
269
363
|
/** Extract the identifier field name from a ConfiguredModel's attributes type. */
|
|
@@ -286,7 +380,7 @@ export declare const isConfiguredModel: (value: unknown) => value is ConfiguredM
|
|
|
286
380
|
* Walks `ConfiguredModel.attributes` only — schema-level annotations are not
|
|
287
381
|
* supported for sparse (it's a deployment concern, not a domain one).
|
|
288
382
|
*/
|
|
289
|
-
export declare const getSparseFields: (model: Schema.Top) => globalThis.Record<string, SparseConfig>;
|
|
383
|
+
export declare const getSparseFields: (model: Schema.Top | ConfiguredModel<any, any>) => globalThis.Record<string, SparseConfig>;
|
|
290
384
|
/**
|
|
291
385
|
* Inspect a Schema field to determine whether it is shaped like a `Schema.Record`.
|
|
292
386
|
*
|
|
@@ -315,6 +409,9 @@ export declare const isRecordAst: (valueAst: unknown) => boolean;
|
|
|
315
409
|
* - `identifier` — Mark as the identity field for ref resolution.
|
|
316
410
|
* - `ref` — Mark as a denormalized reference field.
|
|
317
411
|
*
|
|
412
|
+
* Or {@link Packed}(...) to store an object/array-shaped field as one JSON
|
|
413
|
+
* string or compressed binary value.
|
|
414
|
+
*
|
|
318
415
|
* Note: the `prefix` option moved into the {@link SparseMap} config in 1.6 —
|
|
319
416
|
* pass `storedAs: DynamoModel.SparseMap({ prefix })` instead of declaring
|
|
320
417
|
* `prefix` as a sibling here. The sibling form had no meaning for non-sparse
|
|
@@ -322,11 +419,18 @@ export declare const isRecordAst: (valueAst: unknown) => boolean;
|
|
|
322
419
|
*/
|
|
323
420
|
type AttributeConfig<A> = {
|
|
324
421
|
readonly field?: string;
|
|
325
|
-
readonly storedAs?: Schema.Schema<A> | SparseMapConfig
|
|
422
|
+
readonly storedAs?: Schema.Schema<A> | SparseMapConfig | PackableStorage<A>;
|
|
326
423
|
readonly immutable?: boolean;
|
|
327
424
|
readonly identifier?: boolean;
|
|
328
425
|
readonly ref?: boolean;
|
|
329
426
|
};
|
|
427
|
+
/**
|
|
428
|
+
* `PackedConfig` is admitted only on fields whose domain type is object- or
|
|
429
|
+
* array-shaped (or `unknown`); a scalar field is a compile error. The runtime
|
|
430
|
+
* shape rule at `Entity.make()` (EDD-9073), which inspects the encoded side,
|
|
431
|
+
* stays authoritative.
|
|
432
|
+
*/
|
|
433
|
+
type PackableStorage<A> = unknown extends A ? PackedConfig : [NonNullable<A>] extends [object] ? PackedConfig : never;
|
|
330
434
|
/**
|
|
331
435
|
* Type-safe attribute overrides map: keys constrained to model fields,
|
|
332
436
|
* `storedAs` constrained to matching domain type.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DynamoModel.d.ts","sourceRoot":"","sources":["../src/DynamoModel.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"DynamoModel.d.ts","sourceRoot":"","sources":["../src/DynamoModel.ts"],"names":[],"mappings":"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"}
|
package/dist/DynamoModel.js
CHANGED
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
* - `storedAs` modifier — overrides DynamoDB storage format via annotation
|
|
10
10
|
* - `SparseMap()` — opt a `Schema.Record` field into flattened storage (one
|
|
11
11
|
* top-level attribute per entry)
|
|
12
|
+
* - `Packed()` — store an object/array-shaped field (or EventStore data/state)
|
|
13
|
+
* as one JSON string, optionally compressed over a threshold
|
|
12
14
|
*
|
|
13
15
|
* See docs/design-dynamo-model.md for the three-layer model (wire → domain → storage).
|
|
14
16
|
*/
|
|
@@ -402,6 +404,115 @@ export const SparseMap = (options) => {
|
|
|
402
404
|
export const isSparseMapConfig = (value) => typeof value === "object" &&
|
|
403
405
|
value !== null &&
|
|
404
406
|
value[SparseMapTag] === true;
|
|
407
|
+
/** Every {@link CompressionCodec}, in header-code order. */
|
|
408
|
+
export const compressionCodecs = ["gzip", "brotli", "zstd"];
|
|
409
|
+
/**
|
|
410
|
+
* Default `compression.threshold`: 1,024 bytes of UTF-8 JSON. DynamoDB rounds
|
|
411
|
+
* write capacity per item at 1 KB, so compressing a smaller value saves no WCU
|
|
412
|
+
* and costs a decompression on every read.
|
|
413
|
+
*/
|
|
414
|
+
export const DEFAULT_COMPRESSION_THRESHOLD = 1024;
|
|
415
|
+
/** Brand symbol identifying a {@link PackedConfig} produced by {@link Packed}. */
|
|
416
|
+
const PackedTag = Symbol.for("effect-dynamodb/Packed");
|
|
417
|
+
const packedError = (message) => new Error(`[EDD-9071] DynamoModel.Packed: ${message}`);
|
|
418
|
+
/**
|
|
419
|
+
* Store a value packed into one attribute: its wire form as a JSON string
|
|
420
|
+
* (`S`), or — when `compression` is set, the JSON is at least `threshold`
|
|
421
|
+
* UTF-8 bytes long, and the compressed bytes plus a one-byte header are
|
|
422
|
+
* smaller — as compressed binary (`B`).
|
|
423
|
+
*
|
|
424
|
+
* The stored form is self-describing: readers dispatch on what is stored (a
|
|
425
|
+
* native map, `S`, or `B` with its header), never on the current config, so
|
|
426
|
+
* switching a field or stream between native, packed and compressed storage
|
|
427
|
+
* needs no rewrite.
|
|
428
|
+
*
|
|
429
|
+
* Compression codecs are pluggable: register implementations through the
|
|
430
|
+
* `Compression` service (`node:zlib`-backed ones ship from `effect-dynamodb/compression/zlib`).
|
|
431
|
+
*
|
|
432
|
+
* @example
|
|
433
|
+
* ```ts
|
|
434
|
+
* DynamoModel.configure(Order, {
|
|
435
|
+
* lines: { storedAs: DynamoModel.Packed({ format: "json" }) },
|
|
436
|
+
* details: {
|
|
437
|
+
* storedAs: DynamoModel.Packed({ format: "json", compression: { codec: "zstd" } }),
|
|
438
|
+
* },
|
|
439
|
+
* })
|
|
440
|
+
* ```
|
|
441
|
+
*
|
|
442
|
+
* @throws `[EDD-9071]` on invalid options: a `format` other than `"json"`, an
|
|
443
|
+
* unknown `compression.codec`, a `threshold` that is not a non-negative safe
|
|
444
|
+
* integer, or an unknown option key.
|
|
445
|
+
*/
|
|
446
|
+
export const Packed = (options) => {
|
|
447
|
+
if (typeof options !== "object" || options === null) {
|
|
448
|
+
throw packedError('options must be an object, e.g. { format: "json" }');
|
|
449
|
+
}
|
|
450
|
+
for (const key of Object.keys(options)) {
|
|
451
|
+
if (key !== "format" && key !== "compression") {
|
|
452
|
+
throw packedError(`unknown option "${key}" (expected "format" and optional "compression")`);
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
const format = options.format;
|
|
456
|
+
if (format === "binary") {
|
|
457
|
+
throw packedError(`format "binary" is reserved for a future SchemaBinary encoding and is not supported ` +
|
|
458
|
+
`by this version — use format: "json"`);
|
|
459
|
+
}
|
|
460
|
+
if (format !== "json") {
|
|
461
|
+
throw packedError(`unknown format ${JSON.stringify(format)} — the supported format is "json"`);
|
|
462
|
+
}
|
|
463
|
+
const compression = options.compression;
|
|
464
|
+
if (compression === undefined) {
|
|
465
|
+
return Object.freeze({ [PackedTag]: true, format, compression: undefined });
|
|
466
|
+
}
|
|
467
|
+
if (typeof compression !== "object" || compression === null) {
|
|
468
|
+
throw packedError('compression must be an object, e.g. { codec: "zstd" }');
|
|
469
|
+
}
|
|
470
|
+
for (const key of Object.keys(compression)) {
|
|
471
|
+
if (key !== "codec" && key !== "threshold") {
|
|
472
|
+
throw packedError(`unknown compression option "${key}" (expected "codec" and optional "threshold")`);
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
const { codec, threshold } = compression;
|
|
476
|
+
if (!compressionCodecs.includes(codec)) {
|
|
477
|
+
throw packedError(`unknown compression codec ${JSON.stringify(codec)} — expected one of ` +
|
|
478
|
+
compressionCodecs.map((c) => `"${c}"`).join(", "));
|
|
479
|
+
}
|
|
480
|
+
if (threshold !== undefined &&
|
|
481
|
+
(typeof threshold !== "number" || !Number.isSafeInteger(threshold) || threshold < 0)) {
|
|
482
|
+
throw packedError(`compression.threshold must be a non-negative safe integer (bytes of UTF-8 JSON), ` +
|
|
483
|
+
`got ${String(threshold)}`);
|
|
484
|
+
}
|
|
485
|
+
return Object.freeze({
|
|
486
|
+
[PackedTag]: true,
|
|
487
|
+
format,
|
|
488
|
+
compression: Object.freeze({
|
|
489
|
+
codec: codec,
|
|
490
|
+
threshold: threshold ?? DEFAULT_COMPRESSION_THRESHOLD,
|
|
491
|
+
}),
|
|
492
|
+
});
|
|
493
|
+
};
|
|
494
|
+
/** Type guard — returns true iff `value` is a {@link PackedConfig}. */
|
|
495
|
+
export const isPackedConfig = (value) => typeof value === "object" &&
|
|
496
|
+
value !== null &&
|
|
497
|
+
value[PackedTag] === true;
|
|
498
|
+
/**
|
|
499
|
+
* Resolve the packed storage config for every field on a model configured
|
|
500
|
+
* `storedAs: DynamoModel.Packed(...)` via {@link configure}.
|
|
501
|
+
*
|
|
502
|
+
* Returns `Record<domainFieldName, PackedConfig>` — empty when the model is not
|
|
503
|
+
* a `ConfiguredModel` or configures no packed field. Like sparse maps, packing
|
|
504
|
+
* is a storage concern: it is read from `ConfiguredModel.attributes` only.
|
|
505
|
+
*/
|
|
506
|
+
export const getPackedFields = (model) => {
|
|
507
|
+
if (!isConfiguredModel(model))
|
|
508
|
+
return {};
|
|
509
|
+
const out = {};
|
|
510
|
+
for (const [name, attr] of Object.entries(model.attributes)) {
|
|
511
|
+
if (attr.packed)
|
|
512
|
+
out[name] = attr.packed;
|
|
513
|
+
}
|
|
514
|
+
return out;
|
|
515
|
+
};
|
|
405
516
|
/**
|
|
406
517
|
* Check if a value is a ConfiguredModel.
|
|
407
518
|
*/
|
|
@@ -494,6 +605,13 @@ export const configure = (model, attributes) => {
|
|
|
494
605
|
}
|
|
495
606
|
entry.sparse = { prefix };
|
|
496
607
|
}
|
|
608
|
+
else if (isPackedConfig(config.storedAs)) {
|
|
609
|
+
// Packed storage: the field is stored as one JSON string (S) or
|
|
610
|
+
// compressed binary (B). Shape, key, unique and ref guards run at
|
|
611
|
+
// Entity.make() time (EDD-9072–9075), where the model and its indexes
|
|
612
|
+
// are known.
|
|
613
|
+
entry.packed = config.storedAs;
|
|
614
|
+
}
|
|
497
615
|
else if (config.storedAs !== undefined) {
|
|
498
616
|
const encoding = getEncoding(config.storedAs);
|
|
499
617
|
if (!encoding) {
|
package/dist/DynamoModel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DynamoModel.js","sourceRoot":"","sources":["../src/DynamoModel.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DynamoModel.js","sourceRoot":"","sources":["../src/DynamoModel.ts"],"names":[],"mappings":"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"}
|
package/dist/Entity.d.ts
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* dependency graph or type surface.
|
|
17
17
|
*/
|
|
18
18
|
import { Duration, type Schema } from "effect";
|
|
19
|
-
import { type ConfiguredModel, type DynamoEncoding, type ExtractIdentifier, type SparseConfig } from "./DynamoModel.js";
|
|
19
|
+
import { type ConfiguredModel, type DynamoEncoding, type ExtractIdentifier, type ExtractPackedFields, type PackedConfig, type SparseConfig } from "./DynamoModel.js";
|
|
20
20
|
import type * as DynamoSchema from "./DynamoSchema.js";
|
|
21
21
|
import type { RefEntity } from "./internal/AggregateEdges.js";
|
|
22
22
|
import type { CascadeIndexConfig, GeneratedIdConfig, SoftDeleteConfig, TimeSeriesConfig, TimestampsConfig, UniqueConfig, UniqueConstraintDef, VersionedConfig } from "./internal/EntityConfig.js";
|
|
@@ -122,6 +122,16 @@ export interface EntityDefinitionData {
|
|
|
122
122
|
readonly entityVersion: number;
|
|
123
123
|
readonly sparseFields: globalThis.Record<string, SparseConfig>;
|
|
124
124
|
readonly hasSparseFields: boolean;
|
|
125
|
+
/** Domain field name → packed storage config (`storedAs: DynamoModel.Packed`). */
|
|
126
|
+
readonly packedFields: Readonly<globalThis.Record<string, PackedConfig>>;
|
|
127
|
+
/** Stored attribute name (after `field` renames) → packed storage config. */
|
|
128
|
+
readonly packedAttributes: Readonly<globalThis.Record<string, PackedConfig>>;
|
|
129
|
+
/**
|
|
130
|
+
* Stored attribute names read by their stored form (packed ones plus every
|
|
131
|
+
* object/array-shaped field — see `internal/EntityPacked.ts`).
|
|
132
|
+
*/
|
|
133
|
+
readonly dispatchAttributes: ReadonlyArray<string>;
|
|
134
|
+
readonly hasPackedFields: boolean;
|
|
125
135
|
readonly fieldRenames: globalThis.Record<string, string>;
|
|
126
136
|
readonly hasRenames: boolean;
|
|
127
137
|
readonly renameToDynamo: (item: globalThis.Record<string, unknown>) => void;
|
|
@@ -162,7 +172,7 @@ export interface EntityDefinitionConfig {
|
|
|
162
172
|
* NOT carry AWS-coupled CRUD/query operations — those live on the runtime
|
|
163
173
|
* `effect-dynamodb` `Entity` type, which extends this.
|
|
164
174
|
*/
|
|
165
|
-
export interface EntityDefinition<TModel extends Schema.Top = Schema.Top, TEntityType extends string = string, TIndexes extends globalThis.Record<string, IndexDefinition> = globalThis.Record<string, IndexDefinition>, TTimestamps extends TimestampsConfig | undefined = TimestampsConfig | undefined, TVersioned extends VersionedConfig | undefined = VersionedConfig | undefined, TSoftDelete extends SoftDeleteConfig | undefined = SoftDeleteConfig | undefined, TUnique extends UniqueConfig | undefined = UniqueConfig | undefined, TRefs extends globalThis.Record<string, AnyRefValue> | undefined = undefined, TIdentifier extends string | undefined = undefined, TTimeSeries extends TimeSeriesConfig<any> | undefined = undefined, TGeneratedId extends GeneratedIdConfig | undefined = undefined, TVectorIndexes extends globalThis.Record<string, VectorIndexConfig> | undefined = undefined> {
|
|
175
|
+
export interface EntityDefinition<TModel extends Schema.Top = Schema.Top, TEntityType extends string = string, TIndexes extends globalThis.Record<string, IndexDefinition> = globalThis.Record<string, IndexDefinition>, TTimestamps extends TimestampsConfig | undefined = TimestampsConfig | undefined, TVersioned extends VersionedConfig | undefined = VersionedConfig | undefined, TSoftDelete extends SoftDeleteConfig | undefined = SoftDeleteConfig | undefined, TUnique extends UniqueConfig | undefined = UniqueConfig | undefined, TRefs extends globalThis.Record<string, AnyRefValue> | undefined = undefined, TIdentifier extends string | undefined = undefined, TTimeSeries extends TimeSeriesConfig<any> | undefined = undefined, TGeneratedId extends GeneratedIdConfig | undefined = undefined, TVectorIndexes extends globalThis.Record<string, VectorIndexConfig> | undefined = undefined, TPackedFields extends string = never> {
|
|
166
176
|
readonly _tag: "Entity";
|
|
167
177
|
readonly model: TModel;
|
|
168
178
|
readonly entityType: TEntityType;
|
|
@@ -182,6 +192,12 @@ export interface EntityDefinition<TModel extends Schema.Top = Schema.Top, TEntit
|
|
|
182
192
|
* partition attributes on writes, and build search accessors.
|
|
183
193
|
*/
|
|
184
194
|
readonly _vectorIndexes: globalThis.Record<string, VectorIndexDefinition>;
|
|
195
|
+
/**
|
|
196
|
+
* The domain fields stored packed (`storedAs: DynamoModel.Packed(...)`).
|
|
197
|
+
* Carries the `TPackedFields` type, which narrows expression path builders:
|
|
198
|
+
* a packed field can be tested only with `exists` / `notExists` as a whole.
|
|
199
|
+
*/
|
|
200
|
+
readonly _packedFields: ReadonlyArray<TPackedFields>;
|
|
185
201
|
/** @internal Resolved ref metadata — used by cascade to inspect target entities */
|
|
186
202
|
readonly _resolvedRefs: ReadonlyArray<{
|
|
187
203
|
readonly fieldName: string;
|
|
@@ -294,5 +310,5 @@ export declare const make: <TModel extends Schema.Top, const TEntityType extends
|
|
|
294
310
|
readonly timeSeries?: TTimeSeries;
|
|
295
311
|
readonly generatedId?: TGeneratedId;
|
|
296
312
|
readonly vectorIndexes?: TVectorIndexes;
|
|
297
|
-
}) => EntityDefinition<TModel, TEntityType, NormalizedIndexes<TPrimaryKey, TGsiIndexes>, TTimestamps, TVersioned, TSoftDelete, TUnique, TRefs, ExtractIdentifier<ConfiguredModel<TModel, TAttrs>>, TTimeSeries, TGeneratedId, TVectorIndexes
|
|
313
|
+
}) => EntityDefinition<TModel, TEntityType, NormalizedIndexes<TPrimaryKey, TGsiIndexes>, TTimestamps, TVersioned, TSoftDelete, TUnique, TRefs, ExtractIdentifier<ConfiguredModel<TModel, TAttrs>>, TTimeSeries, TGeneratedId, TVectorIndexes, ExtractPackedFields<ConfiguredModel<TModel, TAttrs>>>;
|
|
298
314
|
//# sourceMappingURL=Entity.d.ts.map
|