@model-ts/dynamodb 3.0.4 → 4.0.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/CHANGELOG.md +12 -0
- package/dist/cjs/__test__/client-with-cursor-encryption.test.js +1241 -1343
- package/dist/cjs/__test__/client-with-cursor-encryption.test.js.map +1 -1
- package/dist/cjs/__test__/client.test.js +1488 -1458
- package/dist/cjs/__test__/client.test.js.map +1 -1
- package/dist/cjs/__test__/diff.test.d.ts +1 -0
- package/dist/cjs/__test__/diff.test.js +160 -0
- package/dist/cjs/__test__/diff.test.js.map +1 -0
- package/dist/cjs/diff.d.ts +3 -0
- package/dist/cjs/diff.js +339 -0
- package/dist/cjs/diff.js.map +1 -0
- package/dist/cjs/provider.d.ts +149 -19
- package/dist/cjs/provider.js +131 -1
- package/dist/cjs/provider.js.map +1 -1
- package/dist/cjs/sandbox.js +2 -2
- package/dist/cjs/sandbox.js.map +1 -1
- package/dist/cjs/test-utils/setup.d.ts +1 -1
- package/dist/cjs/test-utils/setup.js +11 -5
- package/dist/cjs/test-utils/setup.js.map +1 -1
- package/dist/esm/__test__/client-with-cursor-encryption.test.js +1241 -1343
- package/dist/esm/__test__/client-with-cursor-encryption.test.js.map +1 -1
- package/dist/esm/__test__/client.test.js +1488 -1458
- package/dist/esm/__test__/client.test.js.map +1 -1
- package/dist/esm/__test__/diff.test.d.ts +1 -0
- package/dist/esm/__test__/diff.test.js +158 -0
- package/dist/esm/__test__/diff.test.js.map +1 -0
- package/dist/esm/diff.d.ts +3 -0
- package/dist/esm/diff.js +335 -0
- package/dist/esm/diff.js.map +1 -0
- package/dist/esm/provider.d.ts +149 -19
- package/dist/esm/provider.js +131 -1
- package/dist/esm/provider.js.map +1 -1
- package/dist/esm/sandbox.js +2 -2
- package/dist/esm/sandbox.js.map +1 -1
- package/dist/esm/test-utils/setup.d.ts +1 -1
- package/dist/esm/test-utils/setup.js +11 -5
- package/dist/esm/test-utils/setup.js.map +1 -1
- package/package.json +1 -1
- package/src/__test__/client-with-cursor-encryption.test.ts +1245 -1347
- package/src/__test__/client.test.ts +1584 -1482
- package/src/__test__/diff.test.ts +165 -0
- package/src/diff.ts +443 -0
- package/src/provider.ts +147 -3
- package/src/sandbox.ts +2 -2
- package/src/test-utils/setup.ts +9 -5
package/dist/cjs/diff.js
ADDED
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.formatSnapshotDiff = void 0;
|
|
4
|
+
const INDENT_SIZE = 2;
|
|
5
|
+
const ITEM_FIELD_INDENT = 4;
|
|
6
|
+
const PRIORITY_FIELDS = ["PK", "SK"];
|
|
7
|
+
const PRIORITY_FIELD_SET = new Set(PRIORITY_FIELDS);
|
|
8
|
+
const ARRAY_ITEM_KEY = "[]";
|
|
9
|
+
const indent = (level) => " ".repeat(level);
|
|
10
|
+
const isPlainObject = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
|
|
11
|
+
const orderKeys = (keys) => {
|
|
12
|
+
const uniqueKeys = Array.from(new Set(keys));
|
|
13
|
+
const prioritized = PRIORITY_FIELDS.filter((key) => uniqueKeys.includes(key));
|
|
14
|
+
const rest = uniqueKeys
|
|
15
|
+
.filter((key) => !PRIORITY_FIELD_SET.has(key))
|
|
16
|
+
.sort();
|
|
17
|
+
return [...prioritized, ...rest];
|
|
18
|
+
};
|
|
19
|
+
const isEqual = (left, right) => {
|
|
20
|
+
if (left === right)
|
|
21
|
+
return true;
|
|
22
|
+
if (left === null || right === null)
|
|
23
|
+
return left === right;
|
|
24
|
+
if (left === undefined || right === undefined)
|
|
25
|
+
return left === right;
|
|
26
|
+
if (Array.isArray(left) && Array.isArray(right)) {
|
|
27
|
+
if (left.length !== right.length)
|
|
28
|
+
return false;
|
|
29
|
+
for (let i = 0; i < left.length; i += 1) {
|
|
30
|
+
if (!isEqual(left[i], right[i]))
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
if (isPlainObject(left) && isPlainObject(right)) {
|
|
36
|
+
const leftKeys = Object.keys(left).sort();
|
|
37
|
+
const rightKeys = Object.keys(right).sort();
|
|
38
|
+
if (leftKeys.length !== rightKeys.length)
|
|
39
|
+
return false;
|
|
40
|
+
for (let i = 0; i < leftKeys.length; i += 1) {
|
|
41
|
+
const key = leftKeys[i];
|
|
42
|
+
if (key !== rightKeys[i])
|
|
43
|
+
return false;
|
|
44
|
+
if (!isEqual(left[key], right[key]))
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
if (left instanceof Date && right instanceof Date) {
|
|
50
|
+
return left.toISOString() === right.toISOString();
|
|
51
|
+
}
|
|
52
|
+
return false;
|
|
53
|
+
};
|
|
54
|
+
const formatScalar = (value) => {
|
|
55
|
+
if (value === null)
|
|
56
|
+
return "null";
|
|
57
|
+
if (value === undefined)
|
|
58
|
+
return "undefined";
|
|
59
|
+
if (typeof value === "string")
|
|
60
|
+
return JSON.stringify(value);
|
|
61
|
+
if (typeof value === "number" || typeof value === "boolean")
|
|
62
|
+
return String(value);
|
|
63
|
+
if (typeof value === "bigint")
|
|
64
|
+
return `${value}n`;
|
|
65
|
+
if (value instanceof Date)
|
|
66
|
+
return JSON.stringify(value.toISOString());
|
|
67
|
+
return JSON.stringify(value);
|
|
68
|
+
};
|
|
69
|
+
const parseItemKey = (key, item) => {
|
|
70
|
+
var _a, _b;
|
|
71
|
+
const pk = typeof (item === null || item === void 0 ? void 0 : item.PK) === "string" ? item.PK : undefined;
|
|
72
|
+
const sk = typeof (item === null || item === void 0 ? void 0 : item.SK) === "string" ? item.SK : undefined;
|
|
73
|
+
if (pk && sk)
|
|
74
|
+
return { pk, sk };
|
|
75
|
+
const [rawPk, rawSk] = key.split("__");
|
|
76
|
+
return {
|
|
77
|
+
pk: (_a = pk !== null && pk !== void 0 ? pk : rawPk) !== null && _a !== void 0 ? _a : "?",
|
|
78
|
+
sk: (_b = sk !== null && sk !== void 0 ? sk : rawSk) !== null && _b !== void 0 ? _b : "?",
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
const formatItemHeader = (key, item) => {
|
|
82
|
+
const { pk, sk } = parseItemKey(key, item);
|
|
83
|
+
return `[${pk} / ${sk}]`;
|
|
84
|
+
};
|
|
85
|
+
const renderValueLines = (key, value, indentLevel) => {
|
|
86
|
+
const prefix = indent(indentLevel);
|
|
87
|
+
if (key === ARRAY_ITEM_KEY) {
|
|
88
|
+
return renderArrayItemLines(value, indentLevel);
|
|
89
|
+
}
|
|
90
|
+
if (isPlainObject(value)) {
|
|
91
|
+
const keys = orderKeys(Object.keys(value));
|
|
92
|
+
if (keys.length === 0) {
|
|
93
|
+
const label = key ? `${key}: {}` : "{}";
|
|
94
|
+
return [`${prefix}${label}`];
|
|
95
|
+
}
|
|
96
|
+
const lines = [];
|
|
97
|
+
if (key)
|
|
98
|
+
lines.push(`${prefix}${key}:`);
|
|
99
|
+
keys.forEach((childKey) => {
|
|
100
|
+
lines.push(...renderValueLines(childKey, value[childKey], indentLevel + INDENT_SIZE));
|
|
101
|
+
});
|
|
102
|
+
return lines;
|
|
103
|
+
}
|
|
104
|
+
if (Array.isArray(value)) {
|
|
105
|
+
if (value.length === 0) {
|
|
106
|
+
const label = key ? `${key}: []` : "[]";
|
|
107
|
+
return [`${prefix}${label}`];
|
|
108
|
+
}
|
|
109
|
+
const lines = [];
|
|
110
|
+
if (key)
|
|
111
|
+
lines.push(`${prefix}${key}:`);
|
|
112
|
+
value.forEach((item) => {
|
|
113
|
+
lines.push(...renderValueLines(ARRAY_ITEM_KEY, item, indentLevel + INDENT_SIZE));
|
|
114
|
+
});
|
|
115
|
+
return lines;
|
|
116
|
+
}
|
|
117
|
+
const label = key ? `${key}: ${formatScalar(value)}` : formatScalar(value);
|
|
118
|
+
return [`${prefix}${label}`];
|
|
119
|
+
};
|
|
120
|
+
const applyPrefix = (line, prefix) => {
|
|
121
|
+
if (line.startsWith(" "))
|
|
122
|
+
return `${prefix}${line.slice(1)}`;
|
|
123
|
+
return `${prefix} ${line}`;
|
|
124
|
+
};
|
|
125
|
+
const renderValueLinesWithPrefix = (key, value, indentLevel, prefix) => renderValueLines(key, value, indentLevel).map((line) => applyPrefix(line, prefix));
|
|
126
|
+
const renderArrayItemLines = (value, indentLevel) => {
|
|
127
|
+
const prefix = indent(indentLevel);
|
|
128
|
+
if (isPlainObject(value)) {
|
|
129
|
+
const keys = orderKeys(Object.keys(value));
|
|
130
|
+
if (keys.length === 0)
|
|
131
|
+
return [`${prefix}- {}`];
|
|
132
|
+
const lines = [];
|
|
133
|
+
const [firstKey, ...restKeys] = keys;
|
|
134
|
+
const firstLines = renderValueLines(firstKey, value[firstKey], indentLevel + INDENT_SIZE);
|
|
135
|
+
const trimmedFirstLine = firstLines[0].slice(indentLevel + INDENT_SIZE);
|
|
136
|
+
lines.push(`${prefix}- ${trimmedFirstLine}`);
|
|
137
|
+
lines.push(...firstLines.slice(1));
|
|
138
|
+
restKeys.forEach((key) => {
|
|
139
|
+
lines.push(...renderValueLines(key, value[key], indentLevel + INDENT_SIZE));
|
|
140
|
+
});
|
|
141
|
+
return lines;
|
|
142
|
+
}
|
|
143
|
+
if (Array.isArray(value)) {
|
|
144
|
+
if (value.length === 0)
|
|
145
|
+
return [`${prefix}- []`];
|
|
146
|
+
const lines = [`${prefix}-`];
|
|
147
|
+
value.forEach((item) => {
|
|
148
|
+
lines.push(...renderValueLines(ARRAY_ITEM_KEY, item, indentLevel + INDENT_SIZE));
|
|
149
|
+
});
|
|
150
|
+
return lines;
|
|
151
|
+
}
|
|
152
|
+
return [`${prefix}- ${formatScalar(value)}`];
|
|
153
|
+
};
|
|
154
|
+
const findArrayMatches = (before, after) => {
|
|
155
|
+
const rows = before.length + 1;
|
|
156
|
+
const cols = after.length + 1;
|
|
157
|
+
const dp = Array.from({ length: rows }, () => Array(cols).fill(0));
|
|
158
|
+
for (let i = before.length - 1; i >= 0; i -= 1) {
|
|
159
|
+
for (let j = after.length - 1; j >= 0; j -= 1) {
|
|
160
|
+
if (isEqual(before[i], after[j])) {
|
|
161
|
+
dp[i][j] = dp[i + 1][j + 1] + 1;
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
dp[i][j] = Math.max(dp[i + 1][j], dp[i][j + 1]);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
const matches = [];
|
|
169
|
+
let i = 0;
|
|
170
|
+
let j = 0;
|
|
171
|
+
while (i < before.length && j < after.length) {
|
|
172
|
+
if (isEqual(before[i], after[j])) {
|
|
173
|
+
matches.push({ beforeMatch: i, afterMatch: j });
|
|
174
|
+
i += 1;
|
|
175
|
+
j += 1;
|
|
176
|
+
}
|
|
177
|
+
else if (dp[i + 1][j] >= dp[i][j + 1]) {
|
|
178
|
+
i += 1;
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
j += 1;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
return matches;
|
|
185
|
+
};
|
|
186
|
+
const renderArraySegment = (beforeSegment, afterSegment, indentLevel) => {
|
|
187
|
+
const lines = [];
|
|
188
|
+
let changed = false;
|
|
189
|
+
if (beforeSegment.length === 0 && afterSegment.length === 0) {
|
|
190
|
+
return { lines, changed: false };
|
|
191
|
+
}
|
|
192
|
+
if (beforeSegment.length === afterSegment.length) {
|
|
193
|
+
for (let i = 0; i < beforeSegment.length; i += 1) {
|
|
194
|
+
const result = renderFieldDiff(ARRAY_ITEM_KEY, beforeSegment[i], afterSegment[i], indentLevel);
|
|
195
|
+
if (result.lines.length > 0)
|
|
196
|
+
lines.push(...result.lines);
|
|
197
|
+
if (result.changed)
|
|
198
|
+
changed = true;
|
|
199
|
+
}
|
|
200
|
+
return { lines, changed };
|
|
201
|
+
}
|
|
202
|
+
beforeSegment.forEach((value) => {
|
|
203
|
+
lines.push(...renderValueLinesWithPrefix(ARRAY_ITEM_KEY, value, indentLevel, "-"));
|
|
204
|
+
changed = true;
|
|
205
|
+
});
|
|
206
|
+
afterSegment.forEach((value) => {
|
|
207
|
+
lines.push(...renderValueLinesWithPrefix(ARRAY_ITEM_KEY, value, indentLevel, "+"));
|
|
208
|
+
changed = true;
|
|
209
|
+
});
|
|
210
|
+
return { lines, changed };
|
|
211
|
+
};
|
|
212
|
+
const renderArrayDiff = (key, before, after, indentLevel) => {
|
|
213
|
+
const lines = [`${indent(indentLevel)}${key}:`];
|
|
214
|
+
let changed = false;
|
|
215
|
+
const matches = findArrayMatches(before, after);
|
|
216
|
+
let beforeIndex = 0;
|
|
217
|
+
let afterIndex = 0;
|
|
218
|
+
matches.forEach(({ beforeMatch, afterMatch }) => {
|
|
219
|
+
const segment = renderArraySegment(before.slice(beforeIndex, beforeMatch), after.slice(afterIndex, afterMatch), indentLevel + INDENT_SIZE);
|
|
220
|
+
if (segment.lines.length > 0)
|
|
221
|
+
lines.push(...segment.lines);
|
|
222
|
+
if (segment.changed)
|
|
223
|
+
changed = true;
|
|
224
|
+
lines.push(...renderValueLines(ARRAY_ITEM_KEY, before[beforeMatch], indentLevel + INDENT_SIZE));
|
|
225
|
+
beforeIndex = beforeMatch + 1;
|
|
226
|
+
afterIndex = afterMatch + 1;
|
|
227
|
+
});
|
|
228
|
+
const tailSegment = renderArraySegment(before.slice(beforeIndex), after.slice(afterIndex), indentLevel + INDENT_SIZE);
|
|
229
|
+
if (tailSegment.lines.length > 0)
|
|
230
|
+
lines.push(...tailSegment.lines);
|
|
231
|
+
if (tailSegment.changed)
|
|
232
|
+
changed = true;
|
|
233
|
+
return { lines, changed };
|
|
234
|
+
};
|
|
235
|
+
const renderObjectDiff = (key, before, after, indentLevel) => {
|
|
236
|
+
const lines = [`${indent(indentLevel)}${key}:`];
|
|
237
|
+
let changed = false;
|
|
238
|
+
const keys = orderKeys([...Object.keys(before), ...Object.keys(after)]);
|
|
239
|
+
keys.forEach((childKey) => {
|
|
240
|
+
const result = renderFieldDiff(childKey, before[childKey], after[childKey], indentLevel + INDENT_SIZE);
|
|
241
|
+
if (result.lines.length > 0)
|
|
242
|
+
lines.push(...result.lines);
|
|
243
|
+
if (result.changed)
|
|
244
|
+
changed = true;
|
|
245
|
+
});
|
|
246
|
+
return { lines, changed };
|
|
247
|
+
};
|
|
248
|
+
const renderFieldDiff = (key, beforeValue, afterValue, indentLevel) => {
|
|
249
|
+
if (beforeValue === undefined && afterValue === undefined) {
|
|
250
|
+
return { lines: [], changed: false };
|
|
251
|
+
}
|
|
252
|
+
if (isEqual(beforeValue, afterValue)) {
|
|
253
|
+
return {
|
|
254
|
+
lines: renderValueLines(key, beforeValue, indentLevel),
|
|
255
|
+
changed: false,
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
if (beforeValue === undefined) {
|
|
259
|
+
return {
|
|
260
|
+
lines: renderValueLinesWithPrefix(key, afterValue, indentLevel, "+"),
|
|
261
|
+
changed: true,
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
if (afterValue === undefined) {
|
|
265
|
+
return {
|
|
266
|
+
lines: renderValueLinesWithPrefix(key, beforeValue, indentLevel, "-"),
|
|
267
|
+
changed: true,
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
if (Array.isArray(beforeValue) && Array.isArray(afterValue)) {
|
|
271
|
+
return renderArrayDiff(key, beforeValue, afterValue, indentLevel);
|
|
272
|
+
}
|
|
273
|
+
if (isPlainObject(beforeValue) && isPlainObject(afterValue)) {
|
|
274
|
+
return renderObjectDiff(key, beforeValue, afterValue, indentLevel);
|
|
275
|
+
}
|
|
276
|
+
return {
|
|
277
|
+
lines: [
|
|
278
|
+
...renderValueLinesWithPrefix(key, beforeValue, indentLevel, "-"),
|
|
279
|
+
...renderValueLinesWithPrefix(key, afterValue, indentLevel, "+"),
|
|
280
|
+
],
|
|
281
|
+
changed: true,
|
|
282
|
+
};
|
|
283
|
+
};
|
|
284
|
+
const renderItemFields = (item, prefix) => {
|
|
285
|
+
const keys = orderKeys(Object.keys(item));
|
|
286
|
+
const lines = [];
|
|
287
|
+
keys.forEach((key) => {
|
|
288
|
+
lines.push(...renderValueLinesWithPrefix(key, item[key], ITEM_FIELD_INDENT, prefix));
|
|
289
|
+
});
|
|
290
|
+
return lines;
|
|
291
|
+
};
|
|
292
|
+
const renderItemFieldsDiff = (before, after) => {
|
|
293
|
+
const keys = orderKeys([...Object.keys(before), ...Object.keys(after)]);
|
|
294
|
+
const lines = [];
|
|
295
|
+
let changed = false;
|
|
296
|
+
keys.forEach((key) => {
|
|
297
|
+
const result = renderFieldDiff(key, before[key], after[key], ITEM_FIELD_INDENT);
|
|
298
|
+
if (result.lines.length > 0)
|
|
299
|
+
lines.push(...result.lines);
|
|
300
|
+
if (result.changed)
|
|
301
|
+
changed = true;
|
|
302
|
+
});
|
|
303
|
+
return { lines, changed };
|
|
304
|
+
};
|
|
305
|
+
const formatSnapshotDiff = (before, after) => {
|
|
306
|
+
const keys = new Set([...Object.keys(before), ...Object.keys(after)]);
|
|
307
|
+
const sortedKeys = Array.from(keys).sort((a, b) => {
|
|
308
|
+
var _a, _b;
|
|
309
|
+
const itemA = (_a = after[a]) !== null && _a !== void 0 ? _a : before[a];
|
|
310
|
+
const itemB = (_b = after[b]) !== null && _b !== void 0 ? _b : before[b];
|
|
311
|
+
return formatItemHeader(a, itemA).localeCompare(formatItemHeader(b, itemB));
|
|
312
|
+
});
|
|
313
|
+
const lines = [];
|
|
314
|
+
sortedKeys.forEach((key) => {
|
|
315
|
+
const beforeItem = before[key];
|
|
316
|
+
const afterItem = after[key];
|
|
317
|
+
const header = formatItemHeader(key, afterItem !== null && afterItem !== void 0 ? afterItem : beforeItem);
|
|
318
|
+
let itemLines = [];
|
|
319
|
+
if (!beforeItem && afterItem) {
|
|
320
|
+
itemLines = [`+ ${header}`, ...renderItemFields(afterItem, "+")];
|
|
321
|
+
}
|
|
322
|
+
else if (beforeItem && !afterItem) {
|
|
323
|
+
itemLines = [`- ${header}`, ...renderItemFields(beforeItem, "-")];
|
|
324
|
+
}
|
|
325
|
+
else if (beforeItem && afterItem) {
|
|
326
|
+
const diffResult = renderItemFieldsDiff(beforeItem, afterItem);
|
|
327
|
+
if (diffResult.changed)
|
|
328
|
+
itemLines = [header, ...diffResult.lines];
|
|
329
|
+
}
|
|
330
|
+
if (itemLines.length > 0) {
|
|
331
|
+
if (lines.length > 0)
|
|
332
|
+
lines.push("");
|
|
333
|
+
lines.push(...itemLines);
|
|
334
|
+
}
|
|
335
|
+
});
|
|
336
|
+
return lines.join("\n");
|
|
337
|
+
};
|
|
338
|
+
exports.formatSnapshotDiff = formatSnapshotDiff;
|
|
339
|
+
//# sourceMappingURL=diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/diff.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/provider.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Client, Key, PaginationParams } from "./client";
|
|
1
|
+
import { Client, Key, PaginationParams, QueryParams } from "./client";
|
|
2
2
|
import { DynamoDBModelInstance, DynamoDBModelConstructor, DynamoDBUnion, Decodable } from "./dynamodb-model";
|
|
3
3
|
import { UpdateRawOperation, GetOperation, PutOperation, DeleteOperation, ConditionCheckOperation, BulkOperation } from "./operations";
|
|
4
4
|
import { OutputOf, TypeOf, ModelOf } from "@model-ts/core";
|
|
@@ -10,7 +10,14 @@ export interface DynamoDBInternals<M extends Decodable> {
|
|
|
10
10
|
}
|
|
11
11
|
export declare const getProvider: (client: Client) => {
|
|
12
12
|
classProps: {
|
|
13
|
+
/**
|
|
14
|
+
* The DynamoDB document client.
|
|
15
|
+
*/
|
|
13
16
|
dynamodb: Client;
|
|
17
|
+
/**
|
|
18
|
+
* Creates operation objects for batch processing and transactions.
|
|
19
|
+
* Supports get, put, update, updateRaw, delete, softDelete, and condition operations.
|
|
20
|
+
*/
|
|
14
21
|
operation: {
|
|
15
22
|
<M extends DynamoDBModelConstructor<any>>(this: M, operation: "get", key: Key, params?: Omit<GetOperation<M>, "_model" | "_operation" | "key"> | undefined): GetOperation<M>;
|
|
16
23
|
<M_1 extends DynamoDBModelConstructor<any>>(this: M_1, operation: "put", item: InstanceType<M_1>, params?: Omit<PutOperation<InstanceType<M_1>, M_1>, "_model" | "_operation" | "item"> | undefined): {
|
|
@@ -73,9 +80,27 @@ export declare const getProvider: (client: Client) => {
|
|
|
73
80
|
}];
|
|
74
81
|
(operation: "condition", key: Key, params: Omit<ConditionCheckOperation, "_operation" | "key">): ConditionCheckOperation;
|
|
75
82
|
};
|
|
83
|
+
/**
|
|
84
|
+
* @internal
|
|
85
|
+
*/
|
|
76
86
|
__dynamoDBDecode<M_5 extends DynamoDBModelConstructor<any>>(this: M_5, value: unknown): InstanceType<M_5>;
|
|
87
|
+
/**
|
|
88
|
+
* @internal
|
|
89
|
+
*/
|
|
77
90
|
__dynamoDBEncode<T_1 extends DynamoDBModelInstance, M_6 extends DynamoDBModelConstructor<T_1>>(this: M_6, item: T_1): any;
|
|
91
|
+
/**
|
|
92
|
+
* Retrieves a single item from DynamoDB by its primary key.
|
|
93
|
+
* Prefer `load()` for built-in batching.
|
|
94
|
+
*
|
|
95
|
+
* @throws ItemNotFoundError if the item doesn't exist.
|
|
96
|
+
*/
|
|
78
97
|
get<M_7 extends DynamoDBModelConstructor<any>>(this: M_7, key: Key, params?: Omit<GetOperation<M_7>, "_model" | "_operation" | "key"> | undefined): Promise<import("./dynamodb-model").DecodableInstance<M_7>>;
|
|
98
|
+
/**
|
|
99
|
+
* Retrieves a single item from DynamoDB by its primary key.
|
|
100
|
+
* Uses built-in batching for usage in e.g. `Promise.all()`.
|
|
101
|
+
*
|
|
102
|
+
* @throws ItemNotFoundError if the item doesn't exist and `null` is not true.
|
|
103
|
+
*/
|
|
79
104
|
load<M_8 extends DynamoDBModelConstructor<any>, Null extends boolean = false, Recover extends boolean = false>(this: M_8, key: Key, params?: (Omit<GetOperation<M_8>, "_model" | "_operation" | "key"> & {
|
|
80
105
|
null?: Null | undefined;
|
|
81
106
|
recover?: Recover | undefined;
|
|
@@ -84,10 +109,35 @@ export declare const getProvider: (client: Client) => {
|
|
|
84
109
|
}) | null : import("./dynamodb-model").DecodableInstance<M_8> & {
|
|
85
110
|
isDeleted?: true | undefined;
|
|
86
111
|
} : Null extends true ? import("./dynamodb-model").DecodableInstance<M_8> | null : import("./dynamodb-model").DecodableInstance<M_8>>;
|
|
112
|
+
/**
|
|
113
|
+
* Loads multiple items from DynamoDB by their primary keys.
|
|
114
|
+
* Returns an array of items or errors.
|
|
115
|
+
*/
|
|
87
116
|
loadMany<M_9 extends DynamoDBModelConstructor<any>>(this: M_9, keys: Key[], params?: Omit<GetOperation<M_9>, "_model" | "_operation" | "key"> | undefined): Promise<(Error | import("./dynamodb-model").DecodableInstance<M_9>)[]>;
|
|
117
|
+
/**
|
|
118
|
+
* Returns a page of query results using cursor-based pagination.
|
|
119
|
+
*/
|
|
88
120
|
paginate<M_10 extends DynamoDBModelConstructor<any>>(this: M_10, args: PaginationInput, params: PaginationParams): Promise<import("./pagination").PaginationResult<import("./dynamodb-model").DecodableInstance<M_10>>>;
|
|
89
|
-
|
|
90
|
-
|
|
121
|
+
/**
|
|
122
|
+
* Performs a DynamoDB query operation and returns matching items.
|
|
123
|
+
* Use `FetchAllPages: true` to automatically fetch all pages of results.
|
|
124
|
+
*/
|
|
125
|
+
query<M_11 extends DynamoDBModelConstructor<any>>(this: M_11, params: QueryParams): Promise<import("./dynamodb-model").DecodableInstance<M_11>[] & {
|
|
126
|
+
meta: {
|
|
127
|
+
lastEvaluatedKey?: import("aws-sdk/clients/dynamodb").DocumentClient.Key | undefined;
|
|
128
|
+
};
|
|
129
|
+
}>;
|
|
130
|
+
/**
|
|
131
|
+
* Stores an item in DynamoDB.
|
|
132
|
+
*
|
|
133
|
+
* @throws KeyExistsError if the item already exists and `IgnoreExistence` is not true.
|
|
134
|
+
*/
|
|
135
|
+
put<M_12 extends DynamoDBModelConstructor<any>>(this: M_12, item: InstanceType<M_12>, params?: Omit<PutOperation<InstanceType<M_12>, M_12>, "_model" | "_operation" | "item"> | undefined): Promise<InstanceType<M_12>>;
|
|
136
|
+
/**
|
|
137
|
+
* Performs a raw DynamoDB update operation using update expressions.
|
|
138
|
+
* Provides low-level access to DynamoDB's native update functionality.
|
|
139
|
+
*/
|
|
140
|
+
updateRaw<M_13 extends DynamoDBModelConstructor<any>>(this: M_13, key: Key, attributes: Partial<InstanceType<M_13>> & {
|
|
91
141
|
GSI2PK?: string | null | undefined;
|
|
92
142
|
GSI3PK?: string | null | undefined;
|
|
93
143
|
GSI4PK?: string | null | undefined;
|
|
@@ -125,12 +175,27 @@ export declare const getProvider: (client: Client) => {
|
|
|
125
175
|
GSI17SK?: string | null | undefined;
|
|
126
176
|
GSI18SK?: string | null | undefined;
|
|
127
177
|
GSI19SK?: string | null | undefined;
|
|
128
|
-
}, params?: Omit<UpdateRawOperation<
|
|
129
|
-
|
|
130
|
-
|
|
178
|
+
}, params?: Omit<UpdateRawOperation<M_13>, "_model" | "_operation" | "key" | "attributes"> | undefined): Promise<InstanceType<M_13>>;
|
|
179
|
+
/**
|
|
180
|
+
* Deletes an item from DynamoDB by its primary key.
|
|
181
|
+
* The item will be permanently removed from the table.
|
|
182
|
+
*/
|
|
183
|
+
delete<M_14 extends DynamoDBModelConstructor<any>>(this: M_14, key: Key): Promise<null>;
|
|
184
|
+
/**
|
|
185
|
+
* Performs a soft delete by moving the item to a deleted state.
|
|
186
|
+
* The original item is deleted and a new item with a $$DELETED$$ prefix is created.
|
|
187
|
+
*/
|
|
188
|
+
softDelete<M_15 extends DynamoDBModelConstructor<any>>(this: M_15, item: InstanceType<M_15>): Promise<InstanceType<M_15>>;
|
|
131
189
|
};
|
|
132
190
|
instanceProps: {
|
|
191
|
+
/**
|
|
192
|
+
* The DynamoDB document client instance.
|
|
193
|
+
*/
|
|
133
194
|
dynamodb: Client;
|
|
195
|
+
/**
|
|
196
|
+
* Returns all key attributes for this instance, including primary keys and GSI keys.
|
|
197
|
+
* Used for cursor generation and key-based operations.
|
|
198
|
+
*/
|
|
134
199
|
keys<T_2 extends DynamoDBModelInstance>(this: T_2): {
|
|
135
200
|
PK: string;
|
|
136
201
|
SK: string;
|
|
@@ -173,12 +238,41 @@ export declare const getProvider: (client: Client) => {
|
|
|
173
238
|
GSI18SK?: string | undefined;
|
|
174
239
|
GSI19SK?: string | undefined;
|
|
175
240
|
};
|
|
241
|
+
/**
|
|
242
|
+
* Generates an (optionally encrypted) cursor for this instance.
|
|
243
|
+
* Cursors are used for pagination and must be treated as opaque tokens.
|
|
244
|
+
*/
|
|
176
245
|
cursor<T_3 extends DynamoDBModelInstance>(this: T_3): string;
|
|
246
|
+
/**
|
|
247
|
+
* Stores this instance in DynamoDB.
|
|
248
|
+
* @throws KeyExistsError if the item already exists and `IgnoreExistence` is not true.
|
|
249
|
+
*/
|
|
177
250
|
put<T_4 extends DynamoDBModelInstance>(this: T_4, params?: Omit<PutOperation<T_4, ModelOf<T_4>>, "_model" | "_operation" | "item"> | undefined): Promise<T_4>;
|
|
251
|
+
/**
|
|
252
|
+
* Updates this instance with new attribute values and persists the changes to DynamoDB.
|
|
253
|
+
* Handles version conflicts and automatically manages key changes if primary keys are updated.
|
|
254
|
+
* @throws RaceConditionError if the instance is out of sync with the stored value.
|
|
255
|
+
*/
|
|
178
256
|
update<T_5 extends DynamoDBModelInstance>(this: T_5, attributes: Partial<ModelOf<T_5>["_codec"]["_A"]>): Promise<T_5>;
|
|
257
|
+
/**
|
|
258
|
+
* Applies updates to this instance and returns the updated instance along with the operations to persist.
|
|
259
|
+
* Does not automatically persist the changes - use the returned operations with bulk() or individual operations.
|
|
260
|
+
*/
|
|
179
261
|
applyUpdate<T_6 extends DynamoDBModelInstance>(this: T_6, attributes: Partial<ModelOf<T_6>["_codec"]["_A"]>): [T_6, BulkOperation<T_6, ModelOf<T_6>> | BulkOperation<T_6, ModelOf<T_6>>[]];
|
|
262
|
+
/**
|
|
263
|
+
* Deletes this instance from DynamoDB.
|
|
264
|
+
* The item will be permanently removed from the table.
|
|
265
|
+
*/
|
|
180
266
|
delete<T_7 extends DynamoDBModelInstance>(this: T_7): Promise<null>;
|
|
267
|
+
/**
|
|
268
|
+
* Performs a soft delete on this instance.
|
|
269
|
+
* The original item is deleted and a new item with a $$DELETED$$ prefix is created.
|
|
270
|
+
*/
|
|
181
271
|
softDelete<T_8 extends DynamoDBModelInstance>(this: T_8): Promise<T_8>;
|
|
272
|
+
/**
|
|
273
|
+
* Creates operation objects for this instance for batch processing and transactions.
|
|
274
|
+
* Supports put, update, updateRaw, delete, softDelete, and condition operations.
|
|
275
|
+
*/
|
|
182
276
|
operation: {
|
|
183
277
|
<T_9 extends DynamoDBModelInstance>(this: T_9, operation: "put", params?: Omit<PutOperation<T_9, ModelOf<T_9>>, "_model" | "_operation" | "item"> | undefined): {
|
|
184
278
|
action: PutOperation<T_9, ModelOf<T_9>>;
|
|
@@ -242,29 +336,65 @@ export declare const getProvider: (client: Client) => {
|
|
|
242
336
|
};
|
|
243
337
|
};
|
|
244
338
|
unionProps: {
|
|
339
|
+
/**
|
|
340
|
+
* The DynamoDB document client instance.
|
|
341
|
+
*/
|
|
245
342
|
dynamodb: Client;
|
|
246
|
-
|
|
343
|
+
/**
|
|
344
|
+
* @internal
|
|
345
|
+
*/
|
|
346
|
+
__dynamoDBDecode<M_16 extends import("@model-ts/core").BaseUnion<[DynamoDBModelConstructor<any>, DynamoDBModelConstructor<any>, ...DynamoDBModelConstructor<any>[]]> & {
|
|
247
347
|
[key: string]: any;
|
|
248
|
-
}>(this:
|
|
249
|
-
|
|
348
|
+
}>(this: M_16, value: unknown): any;
|
|
349
|
+
/**
|
|
350
|
+
* Retrieves a single item from DynamoDB by its primary key.
|
|
351
|
+
* Prefer `load()` for built-in batching.
|
|
352
|
+
*
|
|
353
|
+
* @throws ItemNotFoundError if the item doesn't exist.
|
|
354
|
+
*/
|
|
355
|
+
get<M_17 extends import("@model-ts/core").BaseUnion<[DynamoDBModelConstructor<any>, DynamoDBModelConstructor<any>, ...DynamoDBModelConstructor<any>[]]> & {
|
|
250
356
|
[key: string]: any;
|
|
251
|
-
}>(this:
|
|
252
|
-
|
|
357
|
+
}>(this: M_17, key: Key, params?: Omit<GetOperation<M_17>, "_model" | "_operation" | "key"> | undefined): Promise<import("./dynamodb-model").DecodableInstance<M_17>>;
|
|
358
|
+
/**
|
|
359
|
+
* Retrieves a single item from DynamoDB by its primary key.
|
|
360
|
+
* Uses built-in batching for usage in e.g. `Promise.all()`.
|
|
361
|
+
*
|
|
362
|
+
* @throws ItemNotFoundError if the item doesn't exist and `null` is not true.
|
|
363
|
+
*/
|
|
364
|
+
load<M_18 extends import("@model-ts/core").BaseUnion<[DynamoDBModelConstructor<any>, DynamoDBModelConstructor<any>, ...DynamoDBModelConstructor<any>[]]> & {
|
|
253
365
|
[key: string]: any;
|
|
254
|
-
}, Null_1 extends boolean = false, Recover_1 extends boolean = false>(this:
|
|
366
|
+
}, Null_1 extends boolean = false, Recover_1 extends boolean = false>(this: M_18, key: Key, params?: (Omit<GetOperation<M_18>, "_model" | "_operation" | "key"> & {
|
|
255
367
|
null?: Null_1 | undefined;
|
|
256
368
|
recover?: Recover_1 | undefined;
|
|
257
|
-
}) | undefined): Promise<Recover_1 extends true ? Null_1 extends true ? (import("./dynamodb-model").DecodableInstance<
|
|
369
|
+
}) | undefined): Promise<Recover_1 extends true ? Null_1 extends true ? (import("./dynamodb-model").DecodableInstance<M_18> & {
|
|
258
370
|
isDeleted?: true | undefined;
|
|
259
|
-
}) | null : import("./dynamodb-model").DecodableInstance<
|
|
371
|
+
}) | null : import("./dynamodb-model").DecodableInstance<M_18> & {
|
|
260
372
|
isDeleted?: true | undefined;
|
|
261
|
-
} : Null_1 extends true ? import("./dynamodb-model").DecodableInstance<
|
|
262
|
-
|
|
373
|
+
} : Null_1 extends true ? import("./dynamodb-model").DecodableInstance<M_18> | null : import("./dynamodb-model").DecodableInstance<M_18>>;
|
|
374
|
+
/**
|
|
375
|
+
* Loads multiple items from DynamoDB by their primary keys.
|
|
376
|
+
* Returns an array of items or errors.
|
|
377
|
+
*/
|
|
378
|
+
loadMany<M_19 extends import("@model-ts/core").BaseUnion<[DynamoDBModelConstructor<any>, DynamoDBModelConstructor<any>, ...DynamoDBModelConstructor<any>[]]> & {
|
|
379
|
+
[key: string]: any;
|
|
380
|
+
}>(this: M_19, keys: Key[], params?: Omit<GetOperation<M_19>, "_model" | "_operation" | "key"> | undefined): Promise<(Error | import("./dynamodb-model").DecodableInstance<M_19>)[]>;
|
|
381
|
+
/**
|
|
382
|
+
* Returns a page of query results using cursor-based pagination.
|
|
383
|
+
*/
|
|
384
|
+
paginate<M_20 extends import("@model-ts/core").BaseUnion<[DynamoDBModelConstructor<any>, DynamoDBModelConstructor<any>, ...DynamoDBModelConstructor<any>[]]> & {
|
|
263
385
|
[key: string]: any;
|
|
264
|
-
}>(this:
|
|
265
|
-
|
|
386
|
+
}>(this: M_20, args: PaginationInput, params: PaginationParams): Promise<import("./pagination").PaginationResult<import("./dynamodb-model").DecodableInstance<M_20>>>;
|
|
387
|
+
/**
|
|
388
|
+
* Performs a DynamoDB query operation and returns matching items.
|
|
389
|
+
* Use `FetchAllPages: true` to automatically fetch all pages of results.
|
|
390
|
+
*/
|
|
391
|
+
query<M_21 extends import("@model-ts/core").BaseUnion<[DynamoDBModelConstructor<any>, DynamoDBModelConstructor<any>, ...DynamoDBModelConstructor<any>[]]> & {
|
|
266
392
|
[key: string]: any;
|
|
267
|
-
}>(this:
|
|
393
|
+
}>(this: M_21, params: QueryParams): Promise<import("./dynamodb-model").DecodableInstance<M_21>[] & {
|
|
394
|
+
meta: {
|
|
395
|
+
lastEvaluatedKey?: import("aws-sdk/clients/dynamodb").DocumentClient.Key | undefined;
|
|
396
|
+
};
|
|
397
|
+
}>;
|
|
268
398
|
};
|
|
269
399
|
};
|
|
270
400
|
export declare type DynamoDBProvider = ReturnType<typeof getProvider>;
|