effect-dynamodb 1.8.1 → 1.9.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 (107) hide show
  1. package/dist/Aggregate.d.ts +9 -9
  2. package/dist/Aggregate.d.ts.map +1 -1
  3. package/dist/Aggregate.js +9 -9
  4. package/dist/Aggregate.js.map +1 -1
  5. package/dist/Batch.d.ts +1 -1
  6. package/dist/Batch.d.ts.map +1 -1
  7. package/dist/Batch.js +1 -1
  8. package/dist/Batch.js.map +1 -1
  9. package/dist/Collection.d.ts +3 -3
  10. package/dist/Collection.d.ts.map +1 -1
  11. package/dist/Collection.js +3 -3
  12. package/dist/Collection.js.map +1 -1
  13. package/dist/Collections.d.ts +1 -1
  14. package/dist/Collections.d.ts.map +1 -1
  15. package/dist/Collections.js +1 -1
  16. package/dist/Collections.js.map +1 -1
  17. package/dist/DynamoClient.d.ts +12 -8
  18. package/dist/DynamoClient.d.ts.map +1 -1
  19. package/dist/DynamoClient.js +23 -7
  20. package/dist/DynamoClient.js.map +1 -1
  21. package/dist/Entity.d.ts +41 -19
  22. package/dist/Entity.d.ts.map +1 -1
  23. package/dist/Entity.js +185 -58
  24. package/dist/Entity.js.map +1 -1
  25. package/dist/EventStore.d.ts +1 -1
  26. package/dist/EventStore.d.ts.map +1 -1
  27. package/dist/EventStore.js +6 -5
  28. package/dist/EventStore.js.map +1 -1
  29. package/dist/Marshaller.d.ts +1 -1
  30. package/dist/Marshaller.d.ts.map +1 -1
  31. package/dist/Query.d.ts +1 -1
  32. package/dist/Query.d.ts.map +1 -1
  33. package/dist/Query.js +1 -1
  34. package/dist/Query.js.map +1 -1
  35. package/dist/Table.d.ts +2 -2
  36. package/dist/Table.d.ts.map +1 -1
  37. package/dist/Table.js.map +1 -1
  38. package/dist/Transaction.d.ts +1 -1
  39. package/dist/Transaction.d.ts.map +1 -1
  40. package/dist/Transaction.js +1 -1
  41. package/dist/Transaction.js.map +1 -1
  42. package/dist/index.d.ts +9 -9
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +5 -5
  45. package/dist/index.js.map +1 -1
  46. package/dist/internal/BoundQuery.d.ts +1 -1
  47. package/dist/internal/BoundQuery.d.ts.map +1 -1
  48. package/dist/internal/BoundQuery.js.map +1 -1
  49. package/dist/internal/EntityCombinators.d.ts +1 -1
  50. package/dist/internal/EntityCombinators.d.ts.map +1 -1
  51. package/dist/internal/EntityCombinators.js.map +1 -1
  52. package/dist/internal/EntityOps.d.ts +2 -2
  53. package/dist/internal/EntityOps.d.ts.map +1 -1
  54. package/dist/internal/EntityOps.js.map +1 -1
  55. package/dist/internal/TransactableOps.d.ts +16 -4
  56. package/dist/internal/TransactableOps.d.ts.map +1 -1
  57. package/dist/internal/TransactableOps.js +24 -13
  58. package/dist/internal/TransactableOps.js.map +1 -1
  59. package/package.json +7 -6
  60. package/dist/DynamoModel.d.ts +0 -370
  61. package/dist/DynamoModel.d.ts.map +0 -1
  62. package/dist/DynamoModel.js +0 -562
  63. package/dist/DynamoModel.js.map +0 -1
  64. package/dist/DynamoSchema.d.ts +0 -137
  65. package/dist/DynamoSchema.d.ts.map +0 -1
  66. package/dist/DynamoSchema.js +0 -188
  67. package/dist/DynamoSchema.js.map +0 -1
  68. package/dist/Errors.d.ts +0 -387
  69. package/dist/Errors.d.ts.map +0 -1
  70. package/dist/Errors.js +0 -218
  71. package/dist/Errors.js.map +0 -1
  72. package/dist/KeyComposer.d.ts +0 -264
  73. package/dist/KeyComposer.d.ts.map +0 -1
  74. package/dist/KeyComposer.js +0 -516
  75. package/dist/KeyComposer.js.map +0 -1
  76. package/dist/Projection.d.ts +0 -28
  77. package/dist/Projection.d.ts.map +0 -1
  78. package/dist/Projection.js +0 -39
  79. package/dist/Projection.js.map +0 -1
  80. package/dist/internal/AggregateCursor.d.ts +0 -44
  81. package/dist/internal/AggregateCursor.d.ts.map +0 -1
  82. package/dist/internal/AggregateCursor.js +0 -18
  83. package/dist/internal/AggregateCursor.js.map +0 -1
  84. package/dist/internal/AggregateEdges.d.ts +0 -77
  85. package/dist/internal/AggregateEdges.d.ts.map +0 -1
  86. package/dist/internal/AggregateEdges.js +0 -41
  87. package/dist/internal/AggregateEdges.js.map +0 -1
  88. package/dist/internal/AggregateSchemas.d.ts +0 -60
  89. package/dist/internal/AggregateSchemas.d.ts.map +0 -1
  90. package/dist/internal/AggregateSchemas.js +0 -201
  91. package/dist/internal/AggregateSchemas.js.map +0 -1
  92. package/dist/internal/AggregateTypes.d.ts +0 -94
  93. package/dist/internal/AggregateTypes.d.ts.map +0 -1
  94. package/dist/internal/AggregateTypes.js +0 -7
  95. package/dist/internal/AggregateTypes.js.map +0 -1
  96. package/dist/internal/EntityConfig.d.ts +0 -134
  97. package/dist/internal/EntityConfig.d.ts.map +0 -1
  98. package/dist/internal/EntityConfig.js +0 -7
  99. package/dist/internal/EntityConfig.js.map +0 -1
  100. package/dist/internal/EntitySchemas.d.ts +0 -190
  101. package/dist/internal/EntitySchemas.d.ts.map +0 -1
  102. package/dist/internal/EntitySchemas.js +0 -794
  103. package/dist/internal/EntitySchemas.js.map +0 -1
  104. package/dist/internal/EntityTypes.d.ts +0 -208
  105. package/dist/internal/EntityTypes.d.ts.map +0 -1
  106. package/dist/internal/EntityTypes.js +0 -7
  107. package/dist/internal/EntityTypes.js.map +0 -1
@@ -1,137 +0,0 @@
1
- /**
2
- * DynamoSchema — Application namespace for key prefixing.
3
- *
4
- * Every generated DynamoDB key starts with `$<schema>#v<version>#` followed by
5
- * entity-specific parts. The `$` sentinel identifies ORM-managed keys.
6
- */
7
- export type Casing = "lowercase" | "uppercase" | "preserve";
8
- export interface DynamoSchema {
9
- readonly name: string;
10
- readonly version: number;
11
- readonly casing: Casing;
12
- }
13
- /**
14
- * Create a DynamoSchema instance.
15
- */
16
- export declare const make: (config: {
17
- readonly name: string;
18
- readonly version: number;
19
- readonly casing?: Casing | undefined;
20
- }) => DynamoSchema;
21
- /**
22
- * Apply casing to a key part (structural or composite value).
23
- *
24
- * Matches ElectroDB behavior: casing is applied to the entire composed key,
25
- * including composite attribute values. With the default `"lowercase"` casing,
26
- * `"Male"` becomes `"male"` in the key, ensuring case-insensitive key matching.
27
- */
28
- export declare const applyCasing: (value: string, casing: Casing) => string;
29
- /**
30
- * Build the schema prefix: `$<schema>#v<version>`
31
- * This is prepended to every generated key.
32
- */
33
- export declare const prefix: (schema: DynamoSchema) => string;
34
- /**
35
- * Compose a full key from schema, entity type, and composite attribute values.
36
- *
37
- * Format: `$<schema>#v<version>#<entityType>#<attr1>#<attr2>`
38
- *
39
- * Both the entityType and composite values are cased according to the schema's casing setting.
40
- * This matches ElectroDB behavior where the entire key is uniformly cased.
41
- */
42
- export declare const composeKey: (schema: DynamoSchema, entityType: string, composites: ReadonlyArray<string>, options?: {
43
- readonly casing?: Casing | undefined;
44
- readonly names?: ReadonlyArray<string> | undefined;
45
- } | undefined) => string;
46
- /**
47
- * Compose a collection key prefix (for clustered collections).
48
- *
49
- * Format: `$<schema>#v<version>#<collectionName>#<attr1>#<attr2>`
50
- */
51
- export declare const composeCollectionKey: (schema: DynamoSchema, collectionName: string, composites: ReadonlyArray<string>, options?: {
52
- readonly casing?: Casing | undefined;
53
- readonly names?: ReadonlyArray<string> | undefined;
54
- } | undefined) => string;
55
- /**
56
- * Compose a sort key for clustered collection indexes.
57
- *
58
- * Format (single collection):
59
- * `$<schema>#v<version>#<collectionName>#<entityType>_<entityVersion>#<attr1>#<attr2>`
60
- *
61
- * Format (sub-collection — when `collectionName` is an array):
62
- * `$<schema>#v<version>#<parent>#<child>#<entityType>_<entityVersion>#<attr1>#<attr2>`
63
- *
64
- * The hierarchy elements are joined with `#` so a `begins_with` query at any level
65
- * matches every entity in that subtree.
66
- *
67
- * The entityVersion is the schema version for the entity type within the collection.
68
- * This allows different entity types in a collection to have their own sort key namespace.
69
- */
70
- export declare const composeClusteredSortKey: (schema: DynamoSchema, collectionName: string | ReadonlyArray<string>, entityType: string, entityVersion: number, composites: ReadonlyArray<string>, options?: {
71
- readonly casing?: Casing | undefined;
72
- readonly names?: ReadonlyArray<string> | undefined;
73
- } | undefined) => string;
74
- /**
75
- * Compose a sort key for isolated indexes.
76
- *
77
- * Format: `$<schema>#v<version>#<entityType>_<entityVersion>#<attr1>#<attr2>`
78
- */
79
- export declare const composeIsolatedSortKey: (schema: DynamoSchema, entityType: string, entityVersion: number, composites: ReadonlyArray<string>, options?: {
80
- readonly casing?: Casing | undefined;
81
- readonly names?: ReadonlyArray<string> | undefined;
82
- } | undefined) => string;
83
- /**
84
- * Compose a unique constraint sentinel key.
85
- *
86
- * PK format: `$<schema>#v<version>#<entityType>.<constraintName>#<fieldValues>`
87
- * SK format: `$<schema>#v<version>#<entityType>.<constraintName>`
88
- */
89
- export declare const composeUniqueKey: (schema: DynamoSchema, entityType: string, constraintName: string, fieldValues: ReadonlyArray<string>, options?: {
90
- readonly casing?: Casing | undefined;
91
- } | undefined) => {
92
- readonly pk: string;
93
- readonly sk: string;
94
- };
95
- /**
96
- * Compose a version snapshot sort key.
97
- *
98
- * Format: `$<schema>#v<version>#<entityType>#v#<zeroPaddedVersion>`
99
- */
100
- export declare const composeVersionKey: (schema: DynamoSchema, entityType: string, version: number, options?: {
101
- readonly casing?: Casing | undefined;
102
- } | undefined) => string;
103
- /**
104
- * Compose a soft-deleted item sort key.
105
- *
106
- * Format: `$<schema>#v<version>#<entityType>#deleted#<isoTimestamp>`
107
- */
108
- export declare const composeDeletedKey: (schema: DynamoSchema, entityType: string, timestamp: string, options?: {
109
- readonly casing?: Casing | undefined;
110
- } | undefined) => string;
111
- /**
112
- * Compose the version key prefix for `begins_with` queries.
113
- *
114
- * Format: `$<schema>#v<version>#<entityType>#v#`
115
- */
116
- export declare const composeVersionKeyPrefix: (schema: DynamoSchema, entityType: string, options?: {
117
- readonly casing?: Casing | undefined;
118
- } | undefined) => string;
119
- /**
120
- * Compose the deleted key prefix for `begins_with` queries.
121
- *
122
- * Format: `$<schema>#v<version>#<entityType>#deleted#`
123
- */
124
- export declare const composeDeletedKeyPrefix: (schema: DynamoSchema, entityType: string, options?: {
125
- readonly casing?: Casing | undefined;
126
- } | undefined) => string;
127
- /**
128
- * Compose an event version sort key (10-digit zero-padded).
129
- *
130
- * Format: `$<schema>#v<version>#<entityType>_1#<zeroPaddedVersion>`
131
- *
132
- * Uses isolated sort key format with 10-digit padding (supports ~10B events per stream).
133
- */
134
- export declare const composeEventVersionKey: (schema: DynamoSchema, entityType: string, version: number, options?: {
135
- readonly casing?: Casing | undefined;
136
- } | undefined) => string;
137
- //# sourceMappingURL=DynamoSchema.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DynamoSchema.d.ts","sourceRoot":"","sources":["../src/DynamoSchema.ts"],"names":[],"mappings":"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"}
@@ -1,188 +0,0 @@
1
- /**
2
- * DynamoSchema — Application namespace for key prefixing.
3
- *
4
- * Every generated DynamoDB key starts with `$<schema>#v<version>#` followed by
5
- * entity-specific parts. The `$` sentinel identifies ORM-managed keys.
6
- */
7
- /**
8
- * Create a DynamoSchema instance.
9
- */
10
- export const make = (config) => ({
11
- name: config.name,
12
- version: config.version,
13
- casing: config.casing ?? "lowercase",
14
- });
15
- /**
16
- * Apply casing to a key part (structural or composite value).
17
- *
18
- * Matches ElectroDB behavior: casing is applied to the entire composed key,
19
- * including composite attribute values. With the default `"lowercase"` casing,
20
- * `"Male"` becomes `"male"` in the key, ensuring case-insensitive key matching.
21
- */
22
- export const applyCasing = (value, casing) => {
23
- switch (casing) {
24
- case "lowercase":
25
- return value.toLowerCase();
26
- case "uppercase":
27
- return value.toUpperCase();
28
- case "preserve":
29
- return value;
30
- }
31
- };
32
- /**
33
- * Format composite values with optional field name prefixes.
34
- * With names: `fieldname_value1#fieldname_value2`
35
- * Without names: `value1#value2`
36
- */
37
- const formatComposites = (composites, casing, names) => formatCompositeParts(composites, casing, names).join("#");
38
- /** Format composite values as individual parts (for use in array spreading). */
39
- const formatCompositeParts = (composites, casing, names) => composites.map((v, i) => {
40
- const casedValue = applyCasing(v, casing);
41
- const name = names?.[i];
42
- return name ? `${applyCasing(name, casing)}_${casedValue}` : casedValue;
43
- });
44
- /**
45
- * Build the schema prefix: `$<schema>#v<version>`
46
- * This is prepended to every generated key.
47
- */
48
- export const prefix = (schema) => {
49
- const name = applyCasing(schema.name, schema.casing);
50
- return `$${name}#v${schema.version}`;
51
- };
52
- /**
53
- * @internal Resolve casing and build the common key prefix parts.
54
- */
55
- const resolveKeyPrefix = (schema, label, options) => {
56
- const casing = options?.casing ?? schema.casing;
57
- return { casing, pre: prefix(schema), label: applyCasing(label, casing) };
58
- };
59
- /**
60
- * Compose a full key from schema, entity type, and composite attribute values.
61
- *
62
- * Format: `$<schema>#v<version>#<entityType>#<attr1>#<attr2>`
63
- *
64
- * Both the entityType and composite values are cased according to the schema's casing setting.
65
- * This matches ElectroDB behavior where the entire key is uniformly cased.
66
- */
67
- export const composeKey = (schema, entityType, composites, options) => {
68
- const { casing: effectiveCasing, pre, label: type, } = resolveKeyPrefix(schema, entityType, options);
69
- if (composites.length === 0) {
70
- return `${pre}#${type}`;
71
- }
72
- const formatted = formatComposites(composites, effectiveCasing, options?.names);
73
- return `${pre}#${type}#${formatted}`;
74
- };
75
- /**
76
- * Compose a collection key prefix (for clustered collections).
77
- *
78
- * Format: `$<schema>#v<version>#<collectionName>#<attr1>#<attr2>`
79
- */
80
- export const composeCollectionKey = (schema, collectionName, composites, options) => {
81
- const { casing: effectiveCasing, pre, label: collection, } = resolveKeyPrefix(schema, collectionName, options);
82
- if (composites.length === 0) {
83
- return `${pre}#${collection}`;
84
- }
85
- const formatted = formatComposites(composites, effectiveCasing, options?.names);
86
- return `${pre}#${collection}#${formatted}`;
87
- };
88
- /**
89
- * Compose a sort key for clustered collection indexes.
90
- *
91
- * Format (single collection):
92
- * `$<schema>#v<version>#<collectionName>#<entityType>_<entityVersion>#<attr1>#<attr2>`
93
- *
94
- * Format (sub-collection — when `collectionName` is an array):
95
- * `$<schema>#v<version>#<parent>#<child>#<entityType>_<entityVersion>#<attr1>#<attr2>`
96
- *
97
- * The hierarchy elements are joined with `#` so a `begins_with` query at any level
98
- * matches every entity in that subtree.
99
- *
100
- * The entityVersion is the schema version for the entity type within the collection.
101
- * This allows different entity types in a collection to have their own sort key namespace.
102
- */
103
- export const composeClusteredSortKey = (schema, collectionName, entityType, entityVersion, composites, options) => {
104
- const effectiveCasing = options?.casing ?? schema.casing;
105
- const pre = prefix(schema);
106
- const namesArray = Array.isArray(collectionName) ? collectionName : [collectionName];
107
- const collectionParts = namesArray.map((n) => applyCasing(n, effectiveCasing));
108
- const type = applyCasing(entityType, effectiveCasing);
109
- const entityPrefix = `${type}_${entityVersion}`;
110
- const formattedComposites = formatCompositeParts(composites, effectiveCasing, options?.names);
111
- const parts = [pre, ...collectionParts, entityPrefix, ...formattedComposites].filter((p) => p.length > 0);
112
- return parts.join("#");
113
- };
114
- /**
115
- * Compose a sort key for isolated indexes.
116
- *
117
- * Format: `$<schema>#v<version>#<entityType>_<entityVersion>#<attr1>#<attr2>`
118
- */
119
- export const composeIsolatedSortKey = (schema, entityType, entityVersion, composites, options) => {
120
- const { casing: effectiveCasing, pre, label: type, } = resolveKeyPrefix(schema, entityType, options);
121
- const entityPrefix = `${type}_${entityVersion}`;
122
- const formattedComposites = formatCompositeParts(composites, effectiveCasing, options?.names);
123
- const parts = [pre, entityPrefix, ...formattedComposites].filter((p) => p.length > 0);
124
- return parts.join("#");
125
- };
126
- /**
127
- * Compose a unique constraint sentinel key.
128
- *
129
- * PK format: `$<schema>#v<version>#<entityType>.<constraintName>#<fieldValues>`
130
- * SK format: `$<schema>#v<version>#<entityType>.<constraintName>`
131
- */
132
- export const composeUniqueKey = (schema, entityType, constraintName, fieldValues, options) => {
133
- const { casing: effectiveCasing, pre, label: type, } = resolveKeyPrefix(schema, entityType, options);
134
- const casedConstraintName = applyCasing(constraintName, effectiveCasing);
135
- const constraint = `${type}.${casedConstraintName}`;
136
- return {
137
- pk: `${pre}#${constraint}#${fieldValues.map((v) => applyCasing(v, effectiveCasing)).join("#")}`,
138
- sk: `${pre}#${constraint}`,
139
- };
140
- };
141
- /**
142
- * Compose a version snapshot sort key.
143
- *
144
- * Format: `$<schema>#v<version>#<entityType>#v#<zeroPaddedVersion>`
145
- */
146
- export const composeVersionKey = (schema, entityType, version, options) => {
147
- const { pre, label: type } = resolveKeyPrefix(schema, entityType, options);
148
- return `${pre}#${type}#v#${String(version).padStart(7, "0")}`;
149
- };
150
- /**
151
- * Compose a soft-deleted item sort key.
152
- *
153
- * Format: `$<schema>#v<version>#<entityType>#deleted#<isoTimestamp>`
154
- */
155
- export const composeDeletedKey = (schema, entityType, timestamp, options) => {
156
- const { pre, label: type } = resolveKeyPrefix(schema, entityType, options);
157
- return `${pre}#${type}#deleted#${timestamp}`;
158
- };
159
- /**
160
- * Compose the version key prefix for `begins_with` queries.
161
- *
162
- * Format: `$<schema>#v<version>#<entityType>#v#`
163
- */
164
- export const composeVersionKeyPrefix = (schema, entityType, options) => {
165
- const { pre, label: type } = resolveKeyPrefix(schema, entityType, options);
166
- return `${pre}#${type}#v#`;
167
- };
168
- /**
169
- * Compose the deleted key prefix for `begins_with` queries.
170
- *
171
- * Format: `$<schema>#v<version>#<entityType>#deleted#`
172
- */
173
- export const composeDeletedKeyPrefix = (schema, entityType, options) => {
174
- const { pre, label: type } = resolveKeyPrefix(schema, entityType, options);
175
- return `${pre}#${type}#deleted#`;
176
- };
177
- /**
178
- * Compose an event version sort key (10-digit zero-padded).
179
- *
180
- * Format: `$<schema>#v<version>#<entityType>_1#<zeroPaddedVersion>`
181
- *
182
- * Uses isolated sort key format with 10-digit padding (supports ~10B events per stream).
183
- */
184
- export const composeEventVersionKey = (schema, entityType, version, options) => {
185
- const { pre, label: type } = resolveKeyPrefix(schema, entityType, options);
186
- return `${pre}#${type}_1#${String(version).padStart(10, "0")}`;
187
- };
188
- //# sourceMappingURL=DynamoSchema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DynamoSchema.js","sourceRoot":"","sources":["../src/DynamoSchema.ts"],"names":[],"mappings":"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"}