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
|
@@ -1,62 +1,145 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @internal
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* @internal Exact sizes by DynamoDB's own accounting (#144), the one measure
|
|
3
|
+
* the library uses: `Batch.write` chunks its versioned-put transactions by
|
|
4
|
+
* it, and the failure-time diagnosis of DynamoDB's write limits
|
|
5
|
+
* (`internal/WriteDiagnosis.ts`) names the item at fault by it. Nothing here
|
|
6
|
+
* refuses a write: DynamoDB's own limits are never pre-checked.
|
|
7
|
+
*
|
|
8
|
+
* The rules were measured on DynamoDB Local from the `Payload Size` its 4 MB
|
|
9
|
+
* rejection reports, and confirmed at the exact boundaries: an item of
|
|
10
|
+
* 409,600 bytes is accepted and 409,601 rejected; a transaction of 4,194,304
|
|
11
|
+
* bytes is accepted and 4,194,305 rejected.
|
|
12
|
+
*
|
|
13
|
+
* - An item is the sum over its attributes of `utf8(name) + size(value)`, with
|
|
14
|
+
* no per-item or per-attribute overhead.
|
|
15
|
+
* - `S`: UTF-8 bytes. `B`: byte length. `BOOL`, `NULL`: 1.
|
|
16
|
+
* - `N`: see {@link numberBytes} (at most 21 bytes, a negative one included).
|
|
17
|
+
* - `SS` / `NS` / `BS`: the sum of the elements' sizes, no overhead.
|
|
18
|
+
* - `L`: `3 + Σ (size(element) + 1)`. `M`: `3 + Σ (utf8(name) + size(value) + 1)`.
|
|
19
|
+
* - A transaction action: its item (a Put) or its key (any other action), plus
|
|
20
|
+
* each of its expressions — see {@link transactItemBytes}.
|
|
5
21
|
*/
|
|
6
22
|
/**
|
|
7
|
-
* DynamoDB's limit on the
|
|
8
|
-
*
|
|
9
|
-
*
|
|
23
|
+
* DynamoDB's limit on the size of one `TransactWriteItems` request: 4 MB, in
|
|
24
|
+
* the binary megabytes DynamoDB uses for every size limit — 4,194,304 bytes,
|
|
25
|
+
* measured by {@link transactItemBytes}.
|
|
10
26
|
*/
|
|
11
27
|
export const TRANSACT_WRITE_MAX_BYTES = 4 * 1024 * 1024;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
28
|
+
/** DynamoDB's limit on the size of one item: 400 KB, which is 409,600 bytes. */
|
|
29
|
+
export const ITEM_MAX_BYTES = 400 * 1024;
|
|
30
|
+
const encoder = new TextEncoder();
|
|
31
|
+
export const utf8Bytes = (text) => encoder.encode(text).length;
|
|
32
|
+
/**
|
|
33
|
+
* A number's size as DynamoDB stores it. Zero is 1 byte. Otherwise: 1, plus
|
|
34
|
+
* one byte per base-100 digit pair of the magnitude — pairs aligned to the
|
|
35
|
+
* decimal point, all-zero pairs trimmed at both ends — plus 1 if negative,
|
|
36
|
+
* except when the magnitude takes the maximum 20 pairs: a number is never
|
|
37
|
+
* more than 21 bytes.
|
|
38
|
+
*
|
|
39
|
+
* Measured: `1`, `10`, `99`, `100`, `1200`, `1e10`, `0.5`, `0.05`, `0.0012`,
|
|
40
|
+
* `9.9E+125` → 2; `101`, `120`, `1234`, `1.5`, `12.34`, `10.01` → 3;
|
|
41
|
+
* `12345`, `1.234`, `-123` → 4; `-1` → 3; a 38-digit integer → 20;
|
|
42
|
+
* `-123456789012345678901234567890123456.78` (19 pairs) → 21;
|
|
43
|
+
* `-9.9999999999999999999999999999999999999` and
|
|
44
|
+
* `-1.2345678901234567890123456789012345678` (20 pairs) → 21.
|
|
45
|
+
*/
|
|
46
|
+
export const numberBytes = (n) => {
|
|
47
|
+
let text = n.trim();
|
|
48
|
+
const negative = text.startsWith("-");
|
|
49
|
+
if (negative || text.startsWith("+"))
|
|
50
|
+
text = text.slice(1);
|
|
51
|
+
const [mantissa = "", exponent] = text.split(/[eE]/);
|
|
52
|
+
const [whole = "", fraction = ""] = mantissa.split(".");
|
|
53
|
+
const all = whole + fraction;
|
|
54
|
+
const leading = /^0*/.exec(all)[0].length;
|
|
55
|
+
const digits = all.slice(leading).replace(/0+$/, "");
|
|
56
|
+
if (digits.length === 0)
|
|
57
|
+
return 1;
|
|
58
|
+
// How many significant digits sit before the decimal point (negative: the
|
|
59
|
+
// first one sits that many places after it). Pairs are aligned to the point,
|
|
60
|
+
// so an odd count leaves the first digit alone in its pair.
|
|
61
|
+
const beforePoint = whole.length + Number(exponent ?? 0) - leading;
|
|
62
|
+
const aligned = (Math.abs(beforePoint) % 2 === 1 ? 1 : 0) + digits.length;
|
|
63
|
+
const pairs = Math.ceil(aligned / 2);
|
|
64
|
+
// The sign byte is left off at the maximum 20 pairs (measured).
|
|
65
|
+
return 1 + pairs + (negative && pairs < 20 ? 1 : 0);
|
|
25
66
|
};
|
|
26
|
-
/** An attribute value's size
|
|
27
|
-
export const attributeBytes = (value
|
|
67
|
+
/** An attribute value's size, by the rules in this module's header. */
|
|
68
|
+
export const attributeBytes = (value) => {
|
|
28
69
|
if (value.S !== undefined)
|
|
29
70
|
return utf8Bytes(value.S);
|
|
30
71
|
if (value.N !== undefined)
|
|
31
|
-
return numberBytes(value.N
|
|
72
|
+
return numberBytes(value.N);
|
|
32
73
|
if (value.B !== undefined)
|
|
33
74
|
return value.B.byteLength;
|
|
75
|
+
if (value.BOOL !== undefined || value.NULL !== undefined)
|
|
76
|
+
return 1;
|
|
34
77
|
if (value.SS !== undefined)
|
|
35
78
|
return value.SS.reduce((sum, v) => sum + utf8Bytes(v), 0);
|
|
36
79
|
if (value.NS !== undefined)
|
|
37
|
-
return value.NS.reduce((sum, v) => sum + numberBytes(v
|
|
80
|
+
return value.NS.reduce((sum, v) => sum + numberBytes(v), 0);
|
|
38
81
|
if (value.BS !== undefined)
|
|
39
82
|
return value.BS.reduce((sum, v) => sum + v.byteLength, 0);
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
83
|
+
if (value.L !== undefined)
|
|
84
|
+
return value.L.reduce((sum, v) => sum + attributeBytes(v) + 1, 3);
|
|
85
|
+
if (value.M !== undefined) {
|
|
86
|
+
return Object.entries(value.M).reduce((sum, [name, v]) => sum + utf8Bytes(name) + attributeBytes(v) + 1, 3);
|
|
87
|
+
}
|
|
88
|
+
return 0;
|
|
89
|
+
};
|
|
90
|
+
/** An item's size: its attribute names plus their values. What the 400 KB limit measures. */
|
|
91
|
+
export const itemBytes = (item) => Object.entries(item).reduce((sum, [name, value]) => sum + utf8Bytes(name) + attributeBytes(value), 0);
|
|
92
|
+
const PLACEHOLDER = /[#:][A-Za-z0-9_]+/g;
|
|
93
|
+
/**
|
|
94
|
+
* An expression's contribution to a transaction's size: its UTF-8 length as
|
|
95
|
+
* written, plus, for every placeholder **occurrence**, the substituted name's
|
|
96
|
+
* UTF-8 bytes (`#name`) or value's size (`:value`). A placeholder the maps do
|
|
97
|
+
* not define adds nothing (DynamoDB rejects such a request anyway).
|
|
98
|
+
*
|
|
99
|
+
* Expressions count toward the 4 MB transaction limit, never toward an item's
|
|
100
|
+
* 400 KB.
|
|
101
|
+
*/
|
|
102
|
+
export const expressionBytes = (expression, names, values) => {
|
|
103
|
+
if (expression === undefined)
|
|
104
|
+
return 0;
|
|
105
|
+
let bytes = utf8Bytes(expression);
|
|
106
|
+
for (const [placeholder] of expression.matchAll(PLACEHOLDER)) {
|
|
107
|
+
if (placeholder.startsWith("#")) {
|
|
108
|
+
const name = names?.[placeholder];
|
|
109
|
+
if (name !== undefined)
|
|
110
|
+
bytes += utf8Bytes(name);
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
const value = values?.[placeholder];
|
|
114
|
+
if (value !== undefined)
|
|
115
|
+
bytes += attributeBytes(value);
|
|
116
|
+
}
|
|
43
117
|
}
|
|
44
|
-
|
|
45
|
-
return itemBytes(value.M, bound) + (overhead ? 3 : 0);
|
|
46
|
-
return 1;
|
|
118
|
+
return bytes;
|
|
47
119
|
};
|
|
48
|
-
/** An item's size: its attribute names plus their values. */
|
|
49
|
-
export const itemBytes = (item, bound = "lower") => Object.entries(item).reduce((sum, [name, value]) => sum + utf8Bytes(name) + attributeBytes(value, bound), 0);
|
|
50
120
|
/**
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
121
|
+
* One action's contribution to its `TransactWriteItems` request's size:
|
|
122
|
+
*
|
|
123
|
+
* - a Put's item, or an Update's, Delete's or ConditionCheck's key — never the
|
|
124
|
+
* stored item, nor the item an Update produces;
|
|
125
|
+
* - plus each of its expressions (`ConditionExpression`, an Update's
|
|
126
|
+
* `UpdateExpression`) by {@link expressionBytes}.
|
|
127
|
+
*
|
|
128
|
+
* `TableName` and `ReturnValuesOnConditionCheckFailure` add nothing.
|
|
56
129
|
*/
|
|
57
130
|
export const transactItemBytes = (item) => {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
131
|
+
const action = item.Put ?? item.Update ?? item.Delete ?? item.ConditionCheck;
|
|
132
|
+
if (action === undefined)
|
|
133
|
+
return 0;
|
|
134
|
+
const names = action.ExpressionAttributeNames;
|
|
135
|
+
const values = action.ExpressionAttributeValues;
|
|
136
|
+
const base = item.Put !== undefined
|
|
137
|
+
? itemBytes(item.Put.Item ?? {})
|
|
138
|
+
: itemBytes((item.Update ?? item.Delete ?? item.ConditionCheck)?.Key ?? {});
|
|
139
|
+
return (base +
|
|
140
|
+
expressionBytes(action.ConditionExpression, names, values) +
|
|
141
|
+
expressionBytes(item.Update?.UpdateExpression, names, values));
|
|
61
142
|
};
|
|
143
|
+
/** A `TransactWriteItems` request's size: the sum of its actions' contributions. */
|
|
144
|
+
export const transactionBytes = (items) => items.reduce((sum, item) => sum + transactItemBytes(item), 0);
|
|
62
145
|
//# sourceMappingURL=ItemSize.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ItemSize.js","sourceRoot":"","sources":["../../src/internal/ItemSize.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ItemSize.js","sourceRoot":"","sources":["../../src/internal/ItemSize.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,7 @@ import type { Entity, EntityDelete, EntityPut, PutPlan, PutVerdict, WriteCancell
|
|
|
20
20
|
import type { ExpressionResult } from "../Expression.js";
|
|
21
21
|
import { type TableConfig } from "../Table.js";
|
|
22
22
|
import type { BoundWriteOp } from "./BoundCrud.js";
|
|
23
|
+
import { type KeyAttributes, type TransactItemTarget, transactItemTarget } from "./WriteDiagnosis.js";
|
|
23
24
|
/** @internal */
|
|
24
25
|
export declare const ConditionCheckTypeId: unique symbol;
|
|
25
26
|
export type ConditionCheckTypeId = typeof ConditionCheckTypeId;
|
|
@@ -36,6 +37,7 @@ export interface ConditionCheckOp {
|
|
|
36
37
|
}
|
|
37
38
|
/** A single marshalled entry of a `TransactWriteItems` call. */
|
|
38
39
|
export type { TransactWriteItem };
|
|
40
|
+
export { type TransactItemTarget, transactItemTarget };
|
|
39
41
|
/**
|
|
40
42
|
* Union of operations accepted by `transactWrite` and by `append`'s
|
|
41
43
|
* `additionalItems`. The `any` positions are deliberate: op intermediates are
|
|
@@ -47,15 +49,6 @@ export type { TransactWriteItem };
|
|
|
47
49
|
* AWS-free `@effect-dynamodb/schema` `Entity.make` (#100).
|
|
48
50
|
*/
|
|
49
51
|
export type TransactWriteOp = EntityPut<any, any, any, any> | EntityDelete<any, any> | BoundWriteOp | ConditionCheckOp;
|
|
50
|
-
/**
|
|
51
|
-
* Refuse a transaction whose items exceed DynamoDB's 4 MB aggregate limit —
|
|
52
|
-
* BEFORE it is sent, with the entity that contributes most named, rather
|
|
53
|
-
* than DynamoDB's bare `ValidationException`. Sizes are a LOWER bound by
|
|
54
|
-
* DynamoDB's item-size rules ({@link transactItemBytes}), so a transaction
|
|
55
|
-
* DynamoDB would accept is never refused; a retain put counts twice — its
|
|
56
|
-
* item and its snapshot carry the same attributes.
|
|
57
|
-
*/
|
|
58
|
-
export declare const refuseOversizedTransaction: (items: ReadonlyArray<TransactWriteItem>, targets: ReadonlyArray<TransactItemTarget>, operation: string) => Effect.Effect<void, ValidationError>;
|
|
59
52
|
/**
|
|
60
53
|
* What an emitted transact item was produced by, so a positional cancellation
|
|
61
54
|
* reason can be attributed back to the caller op that caused it.
|
|
@@ -94,39 +87,20 @@ export interface BuiltTransactWriteItems {
|
|
|
94
87
|
readonly items: Array<TransactWriteItem>;
|
|
95
88
|
/** Parallel to `items`: `provenance[i]` describes `items[i]`. */
|
|
96
89
|
readonly provenance: Array<ItemProvenance>;
|
|
97
|
-
/**
|
|
98
|
-
|
|
90
|
+
/**
|
|
91
|
+
* Parallel to `items`: the item each one writes, to name it in a diagnosed
|
|
92
|
+
* rejection (`internal/WriteDiagnosis.ts`) — two entries naming one item, an
|
|
93
|
+
* oversized item, an over-long sort key. A thunk: needed only on failure.
|
|
94
|
+
*/
|
|
95
|
+
readonly targets: () => ReadonlyArray<TransactItemTarget>;
|
|
99
96
|
readonly guarded: ReadonlyArray<GuardedPut>;
|
|
97
|
+
/**
|
|
98
|
+
* The key attributes the ops' entities write (primary and index, partition
|
|
99
|
+
* and sort), for diagnosing a rejected key size. A thunk: needed only on
|
|
100
|
+
* failure.
|
|
101
|
+
*/
|
|
102
|
+
readonly keys: () => KeyAttributes;
|
|
100
103
|
}
|
|
101
|
-
/** The item a transact entry writes or checks, and how to name it in an error. */
|
|
102
|
-
export interface TransactItemTarget {
|
|
103
|
-
/** Its table and primary key, as one comparable string. */
|
|
104
|
-
readonly identity: string;
|
|
105
|
-
/** The entity (or stream) it belongs to. */
|
|
106
|
-
readonly entityType: string;
|
|
107
|
-
/** What put it in the transaction: `operation 2 (User)`, `the event at version 4`. */
|
|
108
|
-
readonly source: string;
|
|
109
|
-
/** The key, readable: `pk=…, sk=…`. */
|
|
110
|
-
readonly key: string;
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* The target of a transact entry in `tableName`, keyed by `keyFields` (the
|
|
114
|
-
* table's primary key attributes): read from a Put's item, or any other
|
|
115
|
-
* entry's `Key`.
|
|
116
|
-
*/
|
|
117
|
-
export declare const transactItemTarget: (item: TransactWriteItem, tableName: string, keyFields: ReadonlyArray<string>, entityType: string, source: string) => TransactItemTarget;
|
|
118
|
-
/**
|
|
119
|
-
* Refuse a transaction that writes (or checks) one item more than once —
|
|
120
|
-
* BEFORE it is sent. DynamoDB allows one operation per item in a transaction
|
|
121
|
-
* and rejects the whole request otherwise; worse, the reasons it reports for
|
|
122
|
-
* a guarded put can read as a lost race (`[None, ConditionalCheckFailed]`), so
|
|
123
|
-
* the put would be retried and finally misreported as `OptimisticLockError`
|
|
124
|
-
* on one backend, and as a raw validation error on another. The targets
|
|
125
|
-
* include the items an op derives — uniqueness sentinels (reserved or
|
|
126
|
-
* released) and version snapshots — so two items swapping unique values, which
|
|
127
|
-
* release and claim the same sentinels, are refused too.
|
|
128
|
-
*/
|
|
129
|
-
export declare const refuseRepeatedItems: (targets: ReadonlyArray<TransactItemTarget>, operation: string) => Effect.Effect<void, ValidationError>;
|
|
130
104
|
/**
|
|
131
105
|
* Compile a list of Entity write ops into marshalled `TransactWriteItems` entries,
|
|
132
106
|
* preserving caller order.
|
|
@@ -139,12 +113,14 @@ export declare const refuseRepeatedItems: (targets: ReadonlyArray<TransactItemTa
|
|
|
139
113
|
* cancellation reasons positionally MUST use it instead of assuming 1:1, and
|
|
140
114
|
* read a guarded put's reasons through {@link judgeCancellation}.
|
|
141
115
|
*
|
|
142
|
-
*
|
|
143
|
-
*
|
|
144
|
-
*
|
|
145
|
-
*
|
|
146
|
-
*
|
|
147
|
-
*
|
|
116
|
+
* DynamoDB's rules (one operation per item, 100 items, 4 MB, 400 KB per
|
|
117
|
+
* item, 2048-byte partition and 1024-byte sort keys, the limits on one expression) are not
|
|
118
|
+
* pre-checked: the caller sends the transaction and diagnoses DynamoDB's
|
|
119
|
+
* rejection through `internal/WriteDiagnosis.ts`, which counts the EXPANDED
|
|
120
|
+
* items and names the culprit through `targets` (and `keys`) — two ops
|
|
121
|
+
* touching one item included, among them two puts that swap unique values
|
|
122
|
+
* and so release and claim the same sentinels. A caller adding items of its
|
|
123
|
+
* own appends their targets to these.
|
|
148
124
|
*/
|
|
149
125
|
export declare const buildTransactWriteItems: (operations: ReadonlyArray<TransactWriteOp>, operation: string) => Effect.Effect<BuiltTransactWriteItems, ValidationError | DynamoClientError, TableConfig | DynamoClient>;
|
|
150
126
|
/** Attempts a transaction with guarded puts makes before it reports a lost race. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransactWriteOps.d.ts","sourceRoot":"","sources":["../../src/internal/TransactWriteOps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"TransactWriteOps.d.ts","sourceRoot":"","sources":["../../src/internal/TransactWriteOps.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,13 +17,14 @@ import { extractTransactable } from "../Entity.js";
|
|
|
17
17
|
import { toAttributeMap } from "../Marshaller.js";
|
|
18
18
|
import { resolveTtlAttributeName } from "../Table.js";
|
|
19
19
|
import { compileExpr, emptyPartProblem, isExpr, parseShorthand } from "./Expr.js";
|
|
20
|
-
import { TRANSACT_WRITE_MAX_BYTES, transactItemBytes } from "./ItemSize.js";
|
|
21
20
|
import { composePrimaryKey, rejectUnsupportedOp, resolveTableNames, validateAndBuildPutItem, } from "./TransactableOps.js";
|
|
21
|
+
import { keyAttributesOf, mergeKeyAttributes, transactItemTarget, } from "./WriteDiagnosis.js";
|
|
22
22
|
// ---------------------------------------------------------------------------
|
|
23
23
|
// ConditionCheck — composable from EntityGet + condition expression
|
|
24
24
|
// ---------------------------------------------------------------------------
|
|
25
25
|
/** @internal */
|
|
26
26
|
export const ConditionCheckTypeId = Symbol.for("effect-dynamodb/ConditionCheck");
|
|
27
|
+
export { transactItemTarget };
|
|
27
28
|
/**
|
|
28
29
|
* Compile an op-attached condition (`Entity.create()`'s `attribute_not_exists`,
|
|
29
30
|
* `.condition(...)`, `Entity.condition(...)`) into a DynamoDB expression.
|
|
@@ -66,88 +67,6 @@ const conditionFields = (condition) => condition === undefined
|
|
|
66
67
|
? { ExpressionAttributeValues: condition.values }
|
|
67
68
|
: {}),
|
|
68
69
|
};
|
|
69
|
-
/**
|
|
70
|
-
* Refuse a transaction whose items exceed DynamoDB's 4 MB aggregate limit —
|
|
71
|
-
* BEFORE it is sent, with the entity that contributes most named, rather
|
|
72
|
-
* than DynamoDB's bare `ValidationException`. Sizes are a LOWER bound by
|
|
73
|
-
* DynamoDB's item-size rules ({@link transactItemBytes}), so a transaction
|
|
74
|
-
* DynamoDB would accept is never refused; a retain put counts twice — its
|
|
75
|
-
* item and its snapshot carry the same attributes.
|
|
76
|
-
*/
|
|
77
|
-
export const refuseOversizedTransaction = (items, targets, operation) => {
|
|
78
|
-
let total = 0;
|
|
79
|
-
let largest = { index: 0, bytes: -1 };
|
|
80
|
-
for (const [index, item] of items.entries()) {
|
|
81
|
-
const bytes = transactItemBytes(item);
|
|
82
|
-
total += bytes;
|
|
83
|
-
if (bytes > largest.bytes)
|
|
84
|
-
largest = { index, bytes };
|
|
85
|
-
}
|
|
86
|
-
if (total <= TRANSACT_WRITE_MAX_BYTES)
|
|
87
|
-
return Effect.void;
|
|
88
|
-
const target = targets[largest.index];
|
|
89
|
-
return Effect.fail(new ValidationError({
|
|
90
|
-
entityType: target?.entityType ?? "unknown",
|
|
91
|
-
operation,
|
|
92
|
-
cause: `${operation}: the transaction's ${items.length} items total at least ${total} bytes ` +
|
|
93
|
-
`by DynamoDB's item-size rules, over its limit of ${TRANSACT_WRITE_MAX_BYTES} bytes (4 MB) for one ` +
|
|
94
|
-
"transaction. The largest is " +
|
|
95
|
-
(target === undefined ? "" : `${target.source}'s, at ${target.key}, `) +
|
|
96
|
-
`${largest.bytes} bytes. A put of a retain entity counts twice: its item and its ` +
|
|
97
|
-
"version snapshot. Split the operations into smaller transactions. Nothing was written.",
|
|
98
|
-
}));
|
|
99
|
-
};
|
|
100
|
-
/**
|
|
101
|
-
* The target of a transact entry in `tableName`, keyed by `keyFields` (the
|
|
102
|
-
* table's primary key attributes): read from a Put's item, or any other
|
|
103
|
-
* entry's `Key`.
|
|
104
|
-
*/
|
|
105
|
-
export const transactItemTarget = (item, tableName, keyFields, entityType, source) => {
|
|
106
|
-
const attributes = item.Put?.Item ?? item.Delete?.Key ?? item.Update?.Key ?? item.ConditionCheck?.Key;
|
|
107
|
-
const parts = keyFields.map((field) => {
|
|
108
|
-
const value = attributes?.[field];
|
|
109
|
-
return { field, value, text: value?.S ?? value?.N ?? JSON.stringify(value ?? null) };
|
|
110
|
-
});
|
|
111
|
-
return {
|
|
112
|
-
identity: [
|
|
113
|
-
tableName,
|
|
114
|
-
...parts.map((p) => `${p.field}=${JSON.stringify(p.value ?? null)}`),
|
|
115
|
-
].join("\u0000"),
|
|
116
|
-
entityType,
|
|
117
|
-
source,
|
|
118
|
-
key: parts.map((p) => `${p.field}=${p.text}`).join(", "),
|
|
119
|
-
};
|
|
120
|
-
};
|
|
121
|
-
/**
|
|
122
|
-
* Refuse a transaction that writes (or checks) one item more than once —
|
|
123
|
-
* BEFORE it is sent. DynamoDB allows one operation per item in a transaction
|
|
124
|
-
* and rejects the whole request otherwise; worse, the reasons it reports for
|
|
125
|
-
* a guarded put can read as a lost race (`[None, ConditionalCheckFailed]`), so
|
|
126
|
-
* the put would be retried and finally misreported as `OptimisticLockError`
|
|
127
|
-
* on one backend, and as a raw validation error on another. The targets
|
|
128
|
-
* include the items an op derives — uniqueness sentinels (reserved or
|
|
129
|
-
* released) and version snapshots — so two items swapping unique values, which
|
|
130
|
-
* release and claim the same sentinels, are refused too.
|
|
131
|
-
*/
|
|
132
|
-
export const refuseRepeatedItems = (targets, operation) => {
|
|
133
|
-
const seen = new Map();
|
|
134
|
-
for (const target of targets) {
|
|
135
|
-
const first = seen.get(target.identity);
|
|
136
|
-
if (first === undefined) {
|
|
137
|
-
seen.set(target.identity, target);
|
|
138
|
-
continue;
|
|
139
|
-
}
|
|
140
|
-
return Effect.fail(new ValidationError({
|
|
141
|
-
entityType: first.entityType,
|
|
142
|
-
operation,
|
|
143
|
-
cause: `${operation}: the transaction touches one item more than once — ${first.source} and ` +
|
|
144
|
-
`${target.source} both target the item at ${target.key}. DynamoDB allows one ` +
|
|
145
|
-
"operation per item in a transaction, counting the uniqueness sentinels and version " +
|
|
146
|
-
"snapshots a put writes. Split the operations into separate writes. Nothing was written.",
|
|
147
|
-
}));
|
|
148
|
-
}
|
|
149
|
-
return Effect.void;
|
|
150
|
-
};
|
|
151
70
|
/**
|
|
152
71
|
* Compile a list of Entity write ops into marshalled `TransactWriteItems` entries,
|
|
153
72
|
* preserving caller order.
|
|
@@ -160,16 +79,25 @@ export const refuseRepeatedItems = (targets, operation) => {
|
|
|
160
79
|
* cancellation reasons positionally MUST use it instead of assuming 1:1, and
|
|
161
80
|
* read a guarded put's reasons through {@link judgeCancellation}.
|
|
162
81
|
*
|
|
163
|
-
*
|
|
164
|
-
*
|
|
165
|
-
*
|
|
166
|
-
*
|
|
167
|
-
*
|
|
168
|
-
*
|
|
82
|
+
* DynamoDB's rules (one operation per item, 100 items, 4 MB, 400 KB per
|
|
83
|
+
* item, 2048-byte partition and 1024-byte sort keys, the limits on one expression) are not
|
|
84
|
+
* pre-checked: the caller sends the transaction and diagnoses DynamoDB's
|
|
85
|
+
* rejection through `internal/WriteDiagnosis.ts`, which counts the EXPANDED
|
|
86
|
+
* items and names the culprit through `targets` (and `keys`) — two ops
|
|
87
|
+
* touching one item included, among them two puts that swap unique values
|
|
88
|
+
* and so release and claim the same sentinels. A caller adding items of its
|
|
89
|
+
* own appends their targets to these.
|
|
169
90
|
*/
|
|
170
91
|
export const buildTransactWriteItems = (operations, operation) => Effect.gen(function* () {
|
|
171
|
-
if (operations.length === 0)
|
|
172
|
-
return {
|
|
92
|
+
if (operations.length === 0) {
|
|
93
|
+
return {
|
|
94
|
+
items: [],
|
|
95
|
+
provenance: [],
|
|
96
|
+
targets: () => [],
|
|
97
|
+
guarded: [],
|
|
98
|
+
keys: () => mergeKeyAttributes(),
|
|
99
|
+
};
|
|
100
|
+
}
|
|
173
101
|
const opInfos = [];
|
|
174
102
|
for (let opIndex = 0; opIndex < operations.length; opIndex++) {
|
|
175
103
|
const op = operations[opIndex];
|
|
@@ -236,14 +164,16 @@ export const buildTransactWriteItems = (operations, operation) => Effect.gen(fun
|
|
|
236
164
|
const tableNames = yield* resolveTableNames(opInfos);
|
|
237
165
|
const items = [];
|
|
238
166
|
const provenance = [];
|
|
239
|
-
|
|
167
|
+
// What names each item, kept so its target is built only on failure.
|
|
168
|
+
const naming = [];
|
|
240
169
|
const guarded = [];
|
|
241
170
|
let tableName = "";
|
|
242
171
|
let keyFields = [];
|
|
243
172
|
const push = (item, from, derived = false) => {
|
|
244
173
|
items.push(item);
|
|
245
174
|
provenance.push(from);
|
|
246
|
-
|
|
175
|
+
const [table, fields] = [tableName, keyFields];
|
|
176
|
+
naming.push(() => transactItemTarget(item, table, fields, from.entityType, `operation ${from.opIndex} (${from.entityType}${derived ? ", through a uniqueness sentinel or version snapshot it writes" : ""})`));
|
|
247
177
|
};
|
|
248
178
|
for (const op of opInfos) {
|
|
249
179
|
tableName = tableNames.get(op.entity);
|
|
@@ -297,8 +227,9 @@ export const buildTransactWriteItems = (operations, operation) => Effect.gen(fun
|
|
|
297
227
|
}, { opIndex: op.opIndex, kind: "main", entityType: op.entity.entityType });
|
|
298
228
|
}
|
|
299
229
|
}
|
|
300
|
-
|
|
301
|
-
|
|
230
|
+
const keys = () => mergeKeyAttributes(...opInfos.map((op) => keyAttributesOf(op.entity.indexes)));
|
|
231
|
+
const targets = () => naming.map((name) => name());
|
|
232
|
+
return { items, provenance, targets, guarded, keys };
|
|
302
233
|
});
|
|
303
234
|
// ---------------------------------------------------------------------------
|
|
304
235
|
// judgeCancellation
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransactWriteOps.js","sourceRoot":"","sources":["../../src/internal/TransactWriteOps.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TransactWriteOps.js","sourceRoot":"","sources":["../../src/internal/TransactWriteOps.ts"],"names":[],"mappings":"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"}
|