effect-dynamodb 1.24.0 → 1.25.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/Aggregate.d.ts +5 -2
- package/dist/Aggregate.d.ts.map +1 -1
- package/dist/Aggregate.js +136 -53
- package/dist/Aggregate.js.map +1 -1
- package/dist/Batch.d.ts +14 -5
- package/dist/Batch.d.ts.map +1 -1
- package/dist/Batch.js +184 -119
- package/dist/Batch.js.map +1 -1
- package/dist/Collection.d.ts.map +1 -1
- package/dist/Collection.js +2 -4
- package/dist/Collection.js.map +1 -1
- package/dist/DynamoClient.d.ts.map +1 -1
- package/dist/DynamoClient.js +42 -14
- package/dist/DynamoClient.js.map +1 -1
- package/dist/Entity.d.ts +19 -13
- package/dist/Entity.d.ts.map +1 -1
- package/dist/Entity.js +287 -226
- package/dist/Entity.js.map +1 -1
- package/dist/EventStore.d.ts +416 -73
- package/dist/EventStore.d.ts.map +1 -1
- package/dist/EventStore.js +525 -181
- package/dist/EventStore.js.map +1 -1
- package/dist/Query.d.ts +47 -14
- package/dist/Query.d.ts.map +1 -1
- package/dist/Query.js +190 -68
- package/dist/Query.js.map +1 -1
- package/dist/Table.d.ts +56 -6
- package/dist/Table.d.ts.map +1 -1
- package/dist/Table.js +134 -54
- package/dist/Table.js.map +1 -1
- package/dist/Transaction.d.ts +8 -0
- package/dist/Transaction.d.ts.map +1 -1
- package/dist/Transaction.js +67 -22
- package/dist/Transaction.js.map +1 -1
- package/dist/VectorSearchEmulation.d.ts +3 -2
- package/dist/VectorSearchEmulation.d.ts.map +1 -1
- package/dist/VectorSearchEmulation.js +14 -2
- package/dist/VectorSearchEmulation.js.map +1 -1
- package/dist/internal/BoundQuery.d.ts +3 -2
- package/dist/internal/BoundQuery.d.ts.map +1 -1
- package/dist/internal/BoundQuery.js.map +1 -1
- package/dist/internal/BoundVectorQuery.d.ts +5 -1
- package/dist/internal/BoundVectorQuery.d.ts.map +1 -1
- package/dist/internal/BoundVectorQuery.js +17 -5
- package/dist/internal/BoundVectorQuery.js.map +1 -1
- package/dist/internal/EntityCombinators.d.ts +8 -5
- package/dist/internal/EntityCombinators.d.ts.map +1 -1
- package/dist/internal/EntityCombinators.js +8 -5
- package/dist/internal/EntityCombinators.js.map +1 -1
- package/dist/internal/EntityOps.d.ts +1 -1
- package/dist/internal/Expr.d.ts +4 -0
- package/dist/internal/Expr.d.ts.map +1 -1
- package/dist/internal/Expr.js +6 -4
- package/dist/internal/Expr.js.map +1 -1
- package/dist/internal/ExpressionLimits.d.ts +45 -0
- package/dist/internal/ExpressionLimits.d.ts.map +1 -0
- package/dist/internal/ExpressionLimits.js +89 -0
- package/dist/internal/ExpressionLimits.js.map +1 -0
- package/dist/internal/Hydrate.d.ts +62 -0
- package/dist/internal/Hydrate.d.ts.map +1 -0
- package/dist/internal/Hydrate.js +191 -0
- package/dist/internal/Hydrate.js.map +1 -0
- package/dist/internal/ItemSize.d.ts +60 -24
- package/dist/internal/ItemSize.d.ts.map +1 -1
- package/dist/internal/ItemSize.js +122 -39
- package/dist/internal/ItemSize.js.map +1 -1
- package/dist/internal/TransactWriteOps.d.ts +22 -46
- package/dist/internal/TransactWriteOps.d.ts.map +1 -1
- package/dist/internal/TransactWriteOps.js +26 -95
- package/dist/internal/TransactWriteOps.js.map +1 -1
- package/dist/internal/WriteDiagnosis.d.ts +353 -0
- package/dist/internal/WriteDiagnosis.d.ts.map +1 -0
- package/dist/internal/WriteDiagnosis.js +1028 -0
- package/dist/internal/WriteDiagnosis.js.map +1 -0
- package/dist/internal/sparse_check.js +43 -79
- package/dist/internal/sparse_check.js.map +1 -1
- package/package.json +2 -2
package/dist/Table.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../src/Table.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAA;AAC1E,OAAO,KAAK,KAAK,YAAY,MAAM,yCAAyC,CAAA;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAA;AAC7E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAA;
|
|
1
|
+
{"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../src/Table.ts"],"names":[],"mappings":"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"}
|
package/dist/Table.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* Use `DynamoClient.make()` to get a typed client with bound entity operations.
|
|
9
9
|
*/
|
|
10
|
-
import {
|
|
10
|
+
import { toWireDistanceFunction } from "@effect-dynamodb/schema/VectorIndex.js";
|
|
11
11
|
import { Context, Effect, Layer } from "effect";
|
|
12
12
|
/** Default attribute name used for DynamoDB TTL when {@link TableConfig.ttlAttributeName} is unset. */
|
|
13
13
|
export const DEFAULT_TTL_ATTRIBUTE_NAME = "_ttl";
|
|
@@ -26,6 +26,12 @@ let tableCounter = 0;
|
|
|
26
26
|
*
|
|
27
27
|
* Entities are automatically configured with the table's schema and tag.
|
|
28
28
|
*
|
|
29
|
+
* Members are checked against each other at definition time: entities sharing a
|
|
30
|
+
* physical vector index must agree on its settings (EDD-9035), every member
|
|
31
|
+
* declaring one physical secondary index must agree on its key attributes and
|
|
32
|
+
* GSI/LSI classification, and every entity must declare the same primary-key
|
|
33
|
+
* fields (EDD-9069).
|
|
34
|
+
*
|
|
29
35
|
* @example
|
|
30
36
|
* ```typescript
|
|
31
37
|
* const MainTable = Table.make({
|
|
@@ -57,6 +63,11 @@ export const make = (config) => {
|
|
|
57
63
|
// index cannot disagree — catch it at definition time rather than on the
|
|
58
64
|
// CreateTable round trip.
|
|
59
65
|
validateSharedVectorIndexes(entities);
|
|
66
|
+
// One physical secondary index has one key schema, and every entity on one
|
|
67
|
+
// table shares its primary key. Refuse members that disagree (EDD-9069) here,
|
|
68
|
+
// so tables deployed with CDK or Terraform — which never call
|
|
69
|
+
// `Table.definition` — fail at definition time too.
|
|
70
|
+
mergeSecondaryIndexes(entities, aggregates, resolvePrimaryKey(entities));
|
|
60
71
|
return {
|
|
61
72
|
_tag: "Table",
|
|
62
73
|
schema: config.schema,
|
|
@@ -84,13 +95,12 @@ export const make = (config) => {
|
|
|
84
95
|
* by physical index name, validating that all sharers agree.
|
|
85
96
|
*
|
|
86
97
|
* Sharing a physical vector index across entities is the norm in single-table
|
|
87
|
-
* designs — the quota is 5 per table — and it is safe precisely because the
|
|
98
|
+
* designs — the default quota is 5 per table — and it is safe precisely because the
|
|
88
99
|
* composed `__edd_vp_<name>__` partition value carries the entity type, so a
|
|
89
100
|
* search never crosses entity boundaries (see `DESIGN.md §14`).
|
|
90
101
|
*
|
|
91
102
|
* @throws when two entities disagree on `dimensions` or `distance` (EDD-9035),
|
|
92
|
-
* or
|
|
93
|
-
* indexes are declared (EDD-9034).
|
|
103
|
+
* or on a shared filter attribute's type (EDD-9040).
|
|
94
104
|
*/
|
|
95
105
|
export const mergeVectorIndexes = (entities) => {
|
|
96
106
|
const merged = new Map();
|
|
@@ -106,6 +116,7 @@ export const mergeVectorIndexes = (entities) => {
|
|
|
106
116
|
merged.set(definition.index, {
|
|
107
117
|
definition,
|
|
108
118
|
owner,
|
|
119
|
+
sharers: [owner],
|
|
109
120
|
filters: [...definition.filters],
|
|
110
121
|
resolveDbName,
|
|
111
122
|
filterStoredTypes: Object.fromEntries(definition.filters.map((f) => [resolveDbName(f), definition.filterTypes[f] ?? "S"])),
|
|
@@ -120,6 +131,8 @@ export const mergeVectorIndexes = (entities) => {
|
|
|
120
131
|
`${definition.dimensions}/${definition.distance}. Dimensions and distance function are ` +
|
|
121
132
|
`immutable on a DynamoDB vector index — every entity sharing one must agree.`);
|
|
122
133
|
}
|
|
134
|
+
if (!existing.sharers.includes(owner))
|
|
135
|
+
existing.sharers.push(owner);
|
|
123
136
|
// Filters, unlike dimensions/distance, are per-entity access patterns
|
|
124
137
|
// rather than a shared physical property — one index can serve several
|
|
125
138
|
// entities filtering on different attributes. Union them; keeping only
|
|
@@ -142,19 +155,10 @@ export const mergeVectorIndexes = (entities) => {
|
|
|
142
155
|
}
|
|
143
156
|
}
|
|
144
157
|
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
`(${[...entry.filters].sort().join(", ")}). DynamoDB allows at most ` +
|
|
150
|
-
`${MAX_INLINE_FILTERS} per vector index.`);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
if (merged.size > MAX_VECTOR_INDEXES_PER_TABLE) {
|
|
154
|
-
throw new Error(`[EDD-9034] Table declares ${merged.size} vector indexes ` +
|
|
155
|
-
`(${[...merged.keys()].sort().join(", ")}). DynamoDB allows at most ` +
|
|
156
|
-
`${MAX_VECTOR_INDEXES_PER_TABLE} per table.`);
|
|
157
|
-
}
|
|
158
|
+
// DynamoDB's own vector-index limits — inline filters per index (after the
|
|
159
|
+
// union above), vector indexes per table (an adjustable quota) — are not
|
|
160
|
+
// pre-checked: `db.tables.*.create()` / `addVectorIndex` diagnose DynamoDB's
|
|
161
|
+
// rejection, naming the index and the entities sharing it (#144).
|
|
158
162
|
return merged;
|
|
159
163
|
};
|
|
160
164
|
/** @internal Run {@link mergeVectorIndexes} purely for its validation effect. */
|
|
@@ -193,22 +197,114 @@ export const toVectorIndexSpec = (definition, options) => {
|
|
|
193
197
|
};
|
|
194
198
|
};
|
|
195
199
|
/**
|
|
196
|
-
* Resolve the table's primary PK/SK field names from the
|
|
197
|
-
*
|
|
198
|
-
*
|
|
200
|
+
* Resolve the table's primary PK/SK field names from the entities' primary
|
|
201
|
+
* indexes. Aggregates are skipped — they borrow the table's primary key rather
|
|
202
|
+
* than declaring one.
|
|
199
203
|
*
|
|
200
204
|
* Returns `undefined` when no entity declares a primary index (a table registering
|
|
201
205
|
* only aggregates). Callers that require the primary key must treat that as an error;
|
|
202
206
|
* callers performing best-effort validation should skip their check instead.
|
|
207
|
+
*
|
|
208
|
+
* @throws when two entities declare different primary-key fields (EDD-9069). A
|
|
209
|
+
* table has one key schema; an entity keyed by other attributes would write
|
|
210
|
+
* items lacking the table's key attributes.
|
|
203
211
|
*/
|
|
204
212
|
export const resolvePrimaryKey = (entities) => {
|
|
205
|
-
|
|
213
|
+
let resolved;
|
|
214
|
+
let owner = "";
|
|
215
|
+
for (const [entityKey, entity] of Object.entries(entities)) {
|
|
206
216
|
const primary = entity.indexes.primary;
|
|
207
|
-
if (primary)
|
|
208
|
-
|
|
217
|
+
if (!primary)
|
|
218
|
+
continue;
|
|
219
|
+
const current = { pk: primary.pk.field, sk: primary.sk.field };
|
|
220
|
+
const name = entity.entityType ?? entityKey;
|
|
221
|
+
if (resolved === undefined) {
|
|
222
|
+
resolved = current;
|
|
223
|
+
owner = name;
|
|
224
|
+
continue;
|
|
225
|
+
}
|
|
226
|
+
if (resolved.pk !== current.pk || resolved.sk !== current.sk) {
|
|
227
|
+
throw new Error(`[EDD-9069] The table's primary key is declared as (${keyList(resolved)}) by entity ` +
|
|
228
|
+
`"${owner}" and as (${keyList(current)}) by entity "${name}". One table has one key ` +
|
|
229
|
+
`schema: every entity registered on it must declare the same primary-key fields.`);
|
|
209
230
|
}
|
|
210
231
|
}
|
|
211
|
-
return
|
|
232
|
+
return resolved;
|
|
233
|
+
};
|
|
234
|
+
const keyList = (keys) => keys.sk === undefined ? keys.pk : `${keys.pk}, ${keys.sk}`;
|
|
235
|
+
const describeIndexKind = (kind) => kind === "gsi" ? "a GSI" : kind === "lsi" ? "an LSI" : "an index";
|
|
236
|
+
/**
|
|
237
|
+
* Merge every member's secondary index declarations into one map keyed by
|
|
238
|
+
* physical index name, refusing members that disagree on its key schema.
|
|
239
|
+
*
|
|
240
|
+
* Declarers:
|
|
241
|
+
* - every non-primary entity index (the auto-generated `_cascade_<field>`
|
|
242
|
+
* indexes included) — always a GSI;
|
|
243
|
+
* - an aggregate's `collection.index` — an LSI when the aggregate's `pkField` is
|
|
244
|
+
* the table's primary partition key, a GSI otherwise (unknown when `primary`
|
|
245
|
+
* is `undefined`);
|
|
246
|
+
* - an aggregate's list index — always a GSI.
|
|
247
|
+
*
|
|
248
|
+
* Several members sharing one physical index is the norm in single-table
|
|
249
|
+
* designs (index overloading). They must agree on its key attributes and its
|
|
250
|
+
* GSI/LSI classification: DynamoDB keys a physical index one way, and a member
|
|
251
|
+
* writing other attributes would never appear in it.
|
|
252
|
+
*
|
|
253
|
+
* @throws on a disagreement (EDD-9069), naming both declarers and both shapes.
|
|
254
|
+
*/
|
|
255
|
+
export const mergeSecondaryIndexes = (entities, aggregates, primary) => {
|
|
256
|
+
const merged = new Map();
|
|
257
|
+
const declare = (indexName, declared) => {
|
|
258
|
+
const existing = merged.get(indexName);
|
|
259
|
+
if (existing === undefined) {
|
|
260
|
+
merged.set(indexName, declared);
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
const kindsDisagree = existing.kind !== undefined && declared.kind !== undefined && existing.kind !== declared.kind;
|
|
264
|
+
if (existing.pk !== declared.pk || existing.sk !== declared.sk || kindsDisagree) {
|
|
265
|
+
throw new Error(`[EDD-9069] Secondary index "${indexName}" is declared as ` +
|
|
266
|
+
`${describeIndexKind(existing.kind)} keyed (${existing.pk}, ${existing.sk}) by ` +
|
|
267
|
+
`${existing.owner} and as ${describeIndexKind(declared.kind)} keyed ` +
|
|
268
|
+
`(${declared.pk}, ${declared.sk}) by ${declared.owner}. One physical index has one ` +
|
|
269
|
+
`key schema: every member declaring it must agree.`);
|
|
270
|
+
}
|
|
271
|
+
// A declarer whose classification was unknown takes the known one.
|
|
272
|
+
if (existing.kind === undefined && declared.kind !== undefined) {
|
|
273
|
+
merged.set(indexName, { ...existing, kind: declared.kind });
|
|
274
|
+
}
|
|
275
|
+
};
|
|
276
|
+
for (const [entityKey, entity] of Object.entries(entities)) {
|
|
277
|
+
const owner = `entity "${entity.entityType ?? entityKey}"`;
|
|
278
|
+
for (const [name, index] of Object.entries(entity.indexes)) {
|
|
279
|
+
if (!index || name === "primary" || !index.index)
|
|
280
|
+
continue;
|
|
281
|
+
// Entity index definitions carry no LSI semantics: always a GSI.
|
|
282
|
+
declare(index.index, { kind: "gsi", pk: index.pk.field, sk: index.sk.field, owner });
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
for (const [aggregateKey, agg] of Object.entries(aggregates)) {
|
|
286
|
+
const collectionIndex = agg.collection.index;
|
|
287
|
+
const collectionSk = agg.collection.sk;
|
|
288
|
+
if (collectionIndex !== undefined && collectionSk !== undefined) {
|
|
289
|
+
declare(collectionIndex, {
|
|
290
|
+
// DynamoDB LSIs share the base table's partition key; any index that
|
|
291
|
+
// does IS an LSI.
|
|
292
|
+
kind: primary === undefined ? undefined : agg.pkField === primary.pk ? "lsi" : "gsi",
|
|
293
|
+
pk: agg.pkField,
|
|
294
|
+
sk: collectionSk.field,
|
|
295
|
+
owner: `aggregate "${aggregateKey}" (collection index)`,
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
if (agg.listIndex) {
|
|
299
|
+
declare(agg.listIndex.index, {
|
|
300
|
+
kind: "gsi",
|
|
301
|
+
pk: agg.listIndex.pk.field,
|
|
302
|
+
sk: agg.listIndex.sk.field,
|
|
303
|
+
owner: `aggregate "${aggregateKey}" (list index)`,
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
return merged;
|
|
212
308
|
};
|
|
213
309
|
/**
|
|
214
310
|
* Derive CreateTable input from a table's registered members.
|
|
@@ -229,6 +325,10 @@ export const resolvePrimaryKey = (entities) => {
|
|
|
229
325
|
* entity's primary index). This matches DynamoDB semantics — any index that shares
|
|
230
326
|
* the base table's partition key IS an LSI — and makes `lsi1`..`lsi5`-style indexes
|
|
231
327
|
* on aggregates work transparently with `db.tables.*.create()`.
|
|
328
|
+
*
|
|
329
|
+
* @throws when members disagree on one physical secondary index's key attributes or
|
|
330
|
+
* GSI/LSI classification, or entities disagree on the primary-key fields (EDD-9069,
|
|
331
|
+
* see {@link mergeSecondaryIndexes}). {@link make} refuses the same tables.
|
|
232
332
|
*/
|
|
233
333
|
export const definition = (table) => {
|
|
234
334
|
const members = [
|
|
@@ -246,10 +346,17 @@ export const definition = (table) => {
|
|
|
246
346
|
}
|
|
247
347
|
const primaryPk = primary.pk;
|
|
248
348
|
const primarySk = primary.sk;
|
|
249
|
-
// Pass 2:
|
|
250
|
-
|
|
349
|
+
// Pass 2: classify secondary indexes (GSI vs LSI), refusing members that
|
|
350
|
+
// disagree on one physical index's key schema (EDD-9069).
|
|
351
|
+
const secondaryIndexes = mergeSecondaryIndexes(table.entities, table.aggregates, primary);
|
|
251
352
|
const gsiMap = new Map();
|
|
252
353
|
const lsiMap = new Map();
|
|
354
|
+
for (const [indexName, index] of secondaryIndexes) {
|
|
355
|
+
const target = index.kind === "lsi" ? lsiMap : gsiMap;
|
|
356
|
+
target.set(indexName, { pk: index.pk, sk: index.sk });
|
|
357
|
+
}
|
|
358
|
+
// Pass 3: collect attribute names.
|
|
359
|
+
const attributeNames = new Set();
|
|
253
360
|
// Always include the primary key fields in attribute definitions.
|
|
254
361
|
attributeNames.add(primaryPk);
|
|
255
362
|
if (primarySk !== undefined && primarySk !== primaryPk) {
|
|
@@ -273,48 +380,21 @@ export const definition = (table) => {
|
|
|
273
380
|
attributeNames.add(agg.pkField);
|
|
274
381
|
if (collectionIndex !== undefined && collectionSk !== undefined) {
|
|
275
382
|
attributeNames.add(collectionSk.field);
|
|
276
|
-
if (agg.pkField === primaryPk) {
|
|
277
|
-
if (!lsiMap.has(collectionIndex) && !gsiMap.has(collectionIndex)) {
|
|
278
|
-
lsiMap.set(collectionIndex, { pk: agg.pkField, sk: collectionSk.field });
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
else {
|
|
282
|
-
if (!gsiMap.has(collectionIndex) && !lsiMap.has(collectionIndex)) {
|
|
283
|
-
gsiMap.set(collectionIndex, { pk: agg.pkField, sk: collectionSk.field });
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
383
|
}
|
|
287
384
|
// List GSI (if configured) — always a GSI; has its own PK attribute.
|
|
288
385
|
if (agg.listIndex) {
|
|
289
386
|
attributeNames.add(agg.listIndex.pk.field);
|
|
290
387
|
attributeNames.add(agg.listIndex.sk.field);
|
|
291
|
-
if (!gsiMap.has(agg.listIndex.index) && !lsiMap.has(agg.listIndex.index)) {
|
|
292
|
-
gsiMap.set(agg.listIndex.index, {
|
|
293
|
-
pk: agg.listIndex.pk.field,
|
|
294
|
-
sk: agg.listIndex.sk.field,
|
|
295
|
-
});
|
|
296
|
-
}
|
|
297
388
|
}
|
|
298
389
|
}
|
|
299
390
|
else {
|
|
300
391
|
// Entity — scan index definitions
|
|
301
392
|
const entity = member;
|
|
302
|
-
for (const
|
|
393
|
+
for (const index of Object.values(entity.indexes)) {
|
|
303
394
|
if (!index)
|
|
304
395
|
continue;
|
|
305
396
|
attributeNames.add(index.pk.field);
|
|
306
397
|
attributeNames.add(index.sk.field);
|
|
307
|
-
if (indexName === "primary") {
|
|
308
|
-
// Primary key already captured in pass 1.
|
|
309
|
-
continue;
|
|
310
|
-
}
|
|
311
|
-
if (index.index) {
|
|
312
|
-
// Entity-declared secondary index — always a GSI. Entity index definitions
|
|
313
|
-
// don't carry LSI semantics; LSIs are only introduced via aggregate collections.
|
|
314
|
-
if (!gsiMap.has(index.index) && !lsiMap.has(index.index)) {
|
|
315
|
-
gsiMap.set(index.index, { pk: index.pk.field, sk: index.sk.field });
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
398
|
}
|
|
319
399
|
}
|
|
320
400
|
}
|
package/dist/Table.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.js","sourceRoot":"","sources":["../src/Table.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Table.js","sourceRoot":"","sources":["../src/Table.ts"],"names":[],"mappings":"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"}
|
package/dist/Transaction.d.ts
CHANGED
|
@@ -73,6 +73,14 @@ export declare const transactGet: <const T extends ReadonlyArray<AnyGet>>(items:
|
|
|
73
73
|
* `ConcurrentModification`. A caller's own condition failing is
|
|
74
74
|
* `TransactionCancelled`; a taken unique value is `UniqueConstraintViolation`.
|
|
75
75
|
*
|
|
76
|
+
* DynamoDB's rules are not pre-checked (#144): a transaction breaking one is
|
|
77
|
+
* sent, rejected whole, and reported naming the culprit — over 100 items
|
|
78
|
+
* (counted after expansion) as `DynamoError`; two ops touching one item, an
|
|
79
|
+
* oversized item, a payload over 4 MB, a sort key over 1024 bytes or a
|
|
80
|
+
* condition over DynamoDB's expression limits as `ValidationError` — with
|
|
81
|
+
* DynamoDB's error as the cause. Nothing is written, and a repeated item is
|
|
82
|
+
* never retried as a lost race.
|
|
83
|
+
*
|
|
76
84
|
* ```typescript
|
|
77
85
|
* yield* Transaction.transactWrite([
|
|
78
86
|
* Users.put({ userId: "u-1", ... }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transaction.d.ts","sourceRoot":"","sources":["../src/Transaction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,KAAK,sBAAsB,EAG3B,KAAK,mBAAmB,
|
|
1
|
+
{"version":3,"file":"Transaction.d.ts","sourceRoot":"","sources":["../src/Transaction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,KAAK,sBAAsB,EAG3B,KAAK,mBAAmB,EACxB,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,eAAe,EAChB,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAkB,MAAM,QAAQ,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAGxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAMjE,OAAO,EAEL,KAAK,gBAAgB,EACrB,oBAAoB,EAGpB,KAAK,eAAe,EACrB,MAAM,gCAAgC,CAAA;AASvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAS7C,OAAO,EAAE,oBAAoB,EAAE,KAAK,gBAAgB,EAAE,KAAK,eAAe,EAAE,CAAA;AAE5E;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,KAAK,EAAE;IAClB,CAAC,SAAS,EAAE,gBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,gBAAgB,CAAA;IACjE,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,GAAG,gBAAgB,CAAA;CAa7D,CAAA;AAMF;;;GAGG;AACH,KAAK,iBAAiB,CAAC,CAAC,SAAS,aAAa,CAAC,MAAM,CAAC,IAAI;IACxD,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS;CACvD,CAAA;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,WAAW,GAAI,KAAK,CAAC,CAAC,SAAS,aAAa,CAAC,MAAM,CAAC,EAC/D,OAAO,CAAC,KACP,MAAM,CAAC,MAAM,CACd,iBAAiB,CAAC,CAAC,CAAC,EACpB,iBAAiB,GAAG,eAAe,GAAG,oBAAoB,EAC1D,YAAY,GAAG,WAAW,CA+GxB,CAAA;AAMJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,aAAa,GACxB,YAAY,aAAa,CAAC,eAAe,CAAC,KACzC,MAAM,CAAC,MAAM,CACd,IAAI,EACF,iBAAiB,GACjB,eAAe,GACf,oBAAoB,GACpB,yBAAyB,GACzB,mBAAmB,GACnB,sBAAsB,EACxB,YAAY,GAAG,WAAW,CAyExB,CAAA"}
|
package/dist/Transaction.js
CHANGED
|
@@ -8,12 +8,13 @@
|
|
|
8
8
|
* EntityDelete) instead of manual { entity, key/item } objects.
|
|
9
9
|
* transactGet returns a typed tuple inferred per-position.
|
|
10
10
|
*/
|
|
11
|
-
import { DynamoError, isAwsTransactionCancelled,
|
|
11
|
+
import { DynamoError, isAwsTransactionCancelled, TransactionCancelled, ValidationError, } from "@effect-dynamodb/schema/Errors.js";
|
|
12
12
|
import { Effect, Function as Fn } from "effect";
|
|
13
13
|
import { DynamoClient } from "./DynamoClient.js";
|
|
14
14
|
import { extractTransactable } from "./Entity.js";
|
|
15
15
|
import { composePrimaryKey, getRejectReason, resolveTableNames, } from "./internal/TransactableOps.js";
|
|
16
|
-
import { buildTransactWriteItems, ConditionCheckTypeId, GUARDED_TRANSACTION_ATTEMPTS, judgeCancellation,
|
|
16
|
+
import { buildTransactWriteItems, ConditionCheckTypeId, GUARDED_TRANSACTION_ATTEMPTS, judgeCancellation, } from "./internal/TransactWriteOps.js";
|
|
17
|
+
import { diagnosedValidationError, diagnoseFailure, transactItemTarget, withCause, } from "./internal/WriteDiagnosis.js";
|
|
17
18
|
import { fromAttributeMap, toAttributeMap } from "./Marshaller.js";
|
|
18
19
|
// ---------------------------------------------------------------------------
|
|
19
20
|
// ConditionCheck — composable from EntityGet + condition expression
|
|
@@ -69,12 +70,6 @@ export const transactGet = (items) => Effect.gen(function* () {
|
|
|
69
70
|
// Cast rationale: same as Batch.get — empty array satisfies any mapped tuple type
|
|
70
71
|
if (items.length === 0)
|
|
71
72
|
return [];
|
|
72
|
-
if (items.length > 100) {
|
|
73
|
-
return yield* Effect.fail(new DynamoError({
|
|
74
|
-
operation: "TransactGetItems",
|
|
75
|
-
cause: new Error("TransactGetItems supports a maximum of 100 items"),
|
|
76
|
-
}));
|
|
77
|
-
}
|
|
78
73
|
const client = yield* DynamoClient;
|
|
79
74
|
// Unwrap each position to its get descriptor. A rejection belongs on the
|
|
80
75
|
// error channel, not as a defect — the caller can neither catch nor
|
|
@@ -110,6 +105,34 @@ export const transactGet = (items) => Effect.gen(function* () {
|
|
|
110
105
|
});
|
|
111
106
|
}
|
|
112
107
|
return error;
|
|
108
|
+
}),
|
|
109
|
+
// Over DynamoDB's 100 items, or one item read twice: rejected by
|
|
110
|
+
// DynamoDB, confirmed against the request (#144).
|
|
111
|
+
diagnoseFailure({
|
|
112
|
+
sent: () => ({
|
|
113
|
+
_tag: "TransactGet",
|
|
114
|
+
count: transactItems.length,
|
|
115
|
+
targets: () => transactItems.map((item, index) => {
|
|
116
|
+
const entity = infos[index].entity;
|
|
117
|
+
const primary = entity.indexes.primary;
|
|
118
|
+
return transactItemTarget(item, item.Get.TableName, [primary.pk.field, primary.sk.field], entity.entityType, `get ${index} (${entity.entityType})`);
|
|
119
|
+
}),
|
|
120
|
+
}),
|
|
121
|
+
rewrite: (diagnosis, original) => diagnosis._tag === "TooManyItems"
|
|
122
|
+
? new DynamoError({
|
|
123
|
+
operation: "TransactGetItems",
|
|
124
|
+
cause: withCause(`TransactGetItems supports a maximum of ${diagnosis.limit} items; ` +
|
|
125
|
+
`the request holds ${diagnosis.count}`, original),
|
|
126
|
+
})
|
|
127
|
+
: diagnosis._tag === "RepeatedItem"
|
|
128
|
+
? new DynamoError({
|
|
129
|
+
operation: "TransactGetItems",
|
|
130
|
+
cause: withCause(`TransactGetItems reads one item more than once — ${diagnosis.first.source} ` +
|
|
131
|
+
`and ${diagnosis.second.source} both read the item at ` +
|
|
132
|
+
`${diagnosis.second.key}. DynamoDB allows one operation per item in a ` +
|
|
133
|
+
"transaction, and rejected it. Read the item once.", original),
|
|
134
|
+
})
|
|
135
|
+
: original,
|
|
113
136
|
}));
|
|
114
137
|
const responses = result.Responses ?? [];
|
|
115
138
|
const decoded = [];
|
|
@@ -147,6 +170,14 @@ export const transactGet = (items) => Effect.gen(function* () {
|
|
|
147
170
|
* `ConcurrentModification`. A caller's own condition failing is
|
|
148
171
|
* `TransactionCancelled`; a taken unique value is `UniqueConstraintViolation`.
|
|
149
172
|
*
|
|
173
|
+
* DynamoDB's rules are not pre-checked (#144): a transaction breaking one is
|
|
174
|
+
* sent, rejected whole, and reported naming the culprit — over 100 items
|
|
175
|
+
* (counted after expansion) as `DynamoError`; two ops touching one item, an
|
|
176
|
+
* oversized item, a payload over 4 MB, a sort key over 1024 bytes or a
|
|
177
|
+
* condition over DynamoDB's expression limits as `ValidationError` — with
|
|
178
|
+
* DynamoDB's error as the cause. Nothing is written, and a repeated item is
|
|
179
|
+
* never retried as a lost race.
|
|
180
|
+
*
|
|
150
181
|
* ```typescript
|
|
151
182
|
* yield* Transaction.transactWrite([
|
|
152
183
|
* Users.put({ userId: "u-1", ... }),
|
|
@@ -163,20 +194,29 @@ export const transactWrite = (operations) => Effect.gen(function* () {
|
|
|
163
194
|
for (let attempt = 0; attempt < GUARDED_TRANSACTION_ATTEMPTS; attempt++) {
|
|
164
195
|
const built = yield* buildTransactWriteItems(operations, "transactWrite");
|
|
165
196
|
const transactItems = built.items;
|
|
166
|
-
//
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
197
|
+
// Named once, for both diagnoses below.
|
|
198
|
+
const sent = () => ({
|
|
199
|
+
_tag: "Transaction",
|
|
200
|
+
items: transactItems,
|
|
201
|
+
targets: built.targets,
|
|
202
|
+
});
|
|
203
|
+
const diagnosed = (diagnosis, original) => diagnosis._tag === "TooManyItems"
|
|
204
|
+
? new DynamoError({
|
|
172
205
|
operation: "TransactWriteItems",
|
|
173
|
-
cause:
|
|
174
|
-
`${operations.length} operation(s) expanded to ${
|
|
175
|
-
"(uniqueness sentinels and version snapshots each occupy one)"),
|
|
176
|
-
})
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
206
|
+
cause: withCause(`TransactWriteItems supports a maximum of ${diagnosis.limit} items; ` +
|
|
207
|
+
`${operations.length} operation(s) expanded to ${diagnosis.count} items ` +
|
|
208
|
+
"(uniqueness sentinels and version snapshots each occupy one)", original),
|
|
209
|
+
})
|
|
210
|
+
: diagnosedValidationError(diagnosis, original, {
|
|
211
|
+
operation: "transactWrite",
|
|
212
|
+
entityType: "unknown",
|
|
213
|
+
});
|
|
214
|
+
const outcome = yield* client.transactWriteItems({ TransactItems: transactItems }).pipe(Effect.as(undefined),
|
|
215
|
+
// One operation per item (#133, #144): a transaction that touches one
|
|
216
|
+
// item twice is DynamoDB's to reject, and is diagnosed BEFORE the
|
|
217
|
+
// conditional mapping — DynamoDB can report a repeat as a conditional
|
|
218
|
+
// failure, which would read as a lost race and be retried.
|
|
219
|
+
diagnoseFailure({ sent, only: ["RepeatedItem"], rewrite: diagnosed }), Effect.catch((error) => {
|
|
180
220
|
if (!isAwsTransactionCancelled(error.cause))
|
|
181
221
|
return Effect.fail(error);
|
|
182
222
|
const rawReasons = error.cause.CancellationReasons ?? [];
|
|
@@ -192,7 +232,12 @@ export const transactWrite = (operations) => Effect.gen(function* () {
|
|
|
192
232
|
reasons: rawReasons.map((r) => ({ code: r?.Code, message: r?.Message })),
|
|
193
233
|
cause: error.cause,
|
|
194
234
|
}));
|
|
195
|
-
})
|
|
235
|
+
}),
|
|
236
|
+
// DynamoDB's limits are not pre-checked: a rejection is diagnosed
|
|
237
|
+
// here, after the conditional mapping, naming the item at fault. The
|
|
238
|
+
// 100-item limit counts the EXPANDED items — one op can emit several
|
|
239
|
+
// (uniqueness sentinels, version snapshots) — and keeps its #113 tag.
|
|
240
|
+
diagnoseFailure({ sent, keys: built.keys, rewrite: diagnosed }));
|
|
196
241
|
if (outcome === undefined)
|
|
197
242
|
return;
|
|
198
243
|
lost = outcome;
|
package/dist/Transaction.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transaction.js","sourceRoot":"","sources":["../src/Transaction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAEL,WAAW,EACX,yBAAyB,EAEzB,
|
|
1
|
+
{"version":3,"file":"Transaction.js","sourceRoot":"","sources":["../src/Transaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,8 +16,9 @@
|
|
|
16
16
|
* Fidelity is deliberate, not approximate: all three distance functions are
|
|
17
17
|
* computed exactly as the developer guide documents them (including the score
|
|
18
18
|
* DIRECTIONS, which differ), the HASH/INLINE_FILTER equality predicates are
|
|
19
|
-
* evaluated, `ProjectionExpression` is honoured,
|
|
20
|
-
* `TopK
|
|
19
|
+
* evaluated, `ProjectionExpression` is honoured, results are truncated to
|
|
20
|
+
* `TopK`, and a `TopK` outside 1..100 is rejected as DynamoDB rejects it. The
|
|
21
|
+
* ranking output is unit-tested against the developer guide's
|
|
21
22
|
* reference table.
|
|
22
23
|
*
|
|
23
24
|
* What it does NOT emulate: approximate (as opposed to exact) nearest-neighbour
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VectorSearchEmulation.d.ts","sourceRoot":"","sources":["../src/VectorSearchEmulation.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"VectorSearchEmulation.d.ts","sourceRoot":"","sources":["../src/VectorSearchEmulation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAWH,OAAO,KAAK,EACV,gBAAgB,EAEjB,MAAM,wCAAwC,CAAA;AAE/C,OAAO,EAAU,KAAK,EAAE,MAAM,QAAQ,CAAA;AACtC,OAAO,EAAE,YAAY,EAA0B,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAOlG,qEAAqE;AACrE,MAAM,WAAW,mBAAmB;IAClC,2DAA2D;IAC3D,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,kDAAkD;IAClD,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAA;IACnC;;;OAGG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChD;;;;;OAKG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;CAC9D;AAED,8EAA8E;AAC9E,UAAU,qBAAqB;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,CAAC,CAAA;CAC/D;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAAG,SAAS,CAAA;IACnE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAAG,SAAS,CAAA;CACnE;AAkCD,sEAAsE;AACtE,eAAO,MAAM,UAAU,GAAI,GAAG,aAAa,CAAC,MAAM,CAAC,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,KAAG,MAI/E,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,GAAG,aAAa,CAAC,MAAM,CAAC,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,KAAG,MAKnF,CAAA;AAED,2EAA2E;AAC3E,eAAO,MAAM,iBAAiB,GAAI,GAAG,aAAa,CAAC,MAAM,CAAC,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,KAAG,MAOtF,CAAA;AAED,uEAAuE;AACvE,eAAO,MAAM,WAAW,GACtB,OAAO,aAAa,CAAC,MAAM,CAAC,EAC5B,WAAW,aAAa,CAAC,MAAM,CAAC,EAChC,UAAU,gBAAgB,KACzB,MASF,CAAA;AA8ED;;;GAGG;AACH,eAAO,MAAM,IAAI,GACf,SAAS,mBAAmB,EAC5B,UAAU,gBAAgB,KACzB,mBAqIF,CAAA;AAeD;;;;;;;;GAQG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,EAAE,CAAC,EACxB,OAAO,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,EACtC,UAAU,gBAAgB,KACzB,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,CAIgC,CAAA"}
|