@model-ts/dynamodb 3.1.0 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cjs/__test__/client-with-cursor-encryption.test.js +1241 -1343
  3. package/dist/cjs/__test__/client-with-cursor-encryption.test.js.map +1 -1
  4. package/dist/cjs/__test__/client.test.js +1395 -1497
  5. package/dist/cjs/__test__/client.test.js.map +1 -1
  6. package/dist/cjs/__test__/diff.test.d.ts +1 -0
  7. package/dist/cjs/__test__/diff.test.js +160 -0
  8. package/dist/cjs/__test__/diff.test.js.map +1 -0
  9. package/dist/cjs/__test__/rollback.test.d.ts +1 -0
  10. package/dist/cjs/__test__/rollback.test.js +196 -0
  11. package/dist/cjs/__test__/rollback.test.js.map +1 -0
  12. package/dist/cjs/diff.d.ts +3 -0
  13. package/dist/cjs/diff.js +339 -0
  14. package/dist/cjs/diff.js.map +1 -0
  15. package/dist/cjs/sandbox.d.ts +2 -0
  16. package/dist/cjs/sandbox.js +130 -3
  17. package/dist/cjs/sandbox.js.map +1 -1
  18. package/dist/cjs/test-utils/setup.d.ts +1 -1
  19. package/dist/cjs/test-utils/setup.js +11 -5
  20. package/dist/cjs/test-utils/setup.js.map +1 -1
  21. package/dist/esm/__test__/client-with-cursor-encryption.test.js +1241 -1343
  22. package/dist/esm/__test__/client-with-cursor-encryption.test.js.map +1 -1
  23. package/dist/esm/__test__/client.test.js +1396 -1498
  24. package/dist/esm/__test__/client.test.js.map +1 -1
  25. package/dist/esm/__test__/diff.test.d.ts +1 -0
  26. package/dist/esm/__test__/diff.test.js +158 -0
  27. package/dist/esm/__test__/diff.test.js.map +1 -0
  28. package/dist/esm/__test__/rollback.test.d.ts +1 -0
  29. package/dist/esm/__test__/rollback.test.js +194 -0
  30. package/dist/esm/__test__/rollback.test.js.map +1 -0
  31. package/dist/esm/diff.d.ts +3 -0
  32. package/dist/esm/diff.js +335 -0
  33. package/dist/esm/diff.js.map +1 -0
  34. package/dist/esm/sandbox.d.ts +2 -0
  35. package/dist/esm/sandbox.js +130 -3
  36. package/dist/esm/sandbox.js.map +1 -1
  37. package/dist/esm/test-utils/setup.d.ts +1 -1
  38. package/dist/esm/test-utils/setup.js +11 -5
  39. package/dist/esm/test-utils/setup.js.map +1 -1
  40. package/package.json +1 -1
  41. package/src/__test__/client-with-cursor-encryption.test.ts +1245 -1347
  42. package/src/__test__/client.test.ts +1400 -1502
  43. package/src/__test__/diff.test.ts +165 -0
  44. package/src/__test__/rollback.test.ts +279 -0
  45. package/src/diff.ts +443 -0
  46. package/src/sandbox.ts +173 -3
  47. package/src/test-utils/setup.ts +9 -5
@@ -2,7 +2,7 @@ import { __awaiter } from "tslib";
2
2
  import crypto from "crypto";
3
3
  import { chunksOf } from "fp-ts/lib/Array";
4
4
  import DynamoDB from "aws-sdk/clients/dynamodb";
5
- import diff from "snapshot-diff";
5
+ import { formatSnapshotDiff } from "./diff";
6
6
  import { GSI_NAMES } from "./gsi";
7
7
  const ddb = new DynamoDB({
8
8
  accessKeyId: "xxx",
@@ -91,9 +91,134 @@ export const getTableContents = (tableName) => __awaiter(void 0, void 0, void 0,
91
91
  items.forEach((item) => (acc[`${item.PK}__${item.SK}`] = item));
92
92
  return acc;
93
93
  });
94
+ const WRITE_METHODS = new Set([
95
+ "put",
96
+ "update",
97
+ "delete",
98
+ "batchWrite",
99
+ "transactWrite",
100
+ ]);
101
+ function createTrackedDocClient(original, tableName) {
102
+ let isTracking = false;
103
+ const trackedKeys = new Map();
104
+ const captureKey = (pk, sk) => __awaiter(this, void 0, void 0, function* () {
105
+ const compositeKey = `${pk}__${sk}`;
106
+ if (trackedKeys.has(compositeKey))
107
+ return;
108
+ const { Item } = yield original
109
+ .get({ TableName: tableName, Key: { PK: pk, SK: sk } })
110
+ .promise();
111
+ trackedKeys.set(compositeKey, { pk, sk, original: Item !== null && Item !== void 0 ? Item : null });
112
+ });
113
+ const captureKeysForOperation = (method, params) => __awaiter(this, void 0, void 0, function* () {
114
+ var _a;
115
+ switch (method) {
116
+ case "put":
117
+ if (params.TableName === tableName && params.Item) {
118
+ yield captureKey(params.Item.PK, params.Item.SK);
119
+ }
120
+ break;
121
+ case "update":
122
+ case "delete":
123
+ if (params.TableName === tableName && params.Key) {
124
+ yield captureKey(params.Key.PK, params.Key.SK);
125
+ }
126
+ break;
127
+ case "batchWrite": {
128
+ const tableItems = ((_a = params.RequestItems) === null || _a === void 0 ? void 0 : _a[tableName]) || [];
129
+ yield Promise.all(tableItems.map((item) => {
130
+ if (item.PutRequest) {
131
+ return captureKey(item.PutRequest.Item.PK, item.PutRequest.Item.SK);
132
+ }
133
+ if (item.DeleteRequest) {
134
+ return captureKey(item.DeleteRequest.Key.PK, item.DeleteRequest.Key.SK);
135
+ }
136
+ }));
137
+ break;
138
+ }
139
+ case "transactWrite": {
140
+ const transactItems = params.TransactItems || [];
141
+ yield Promise.all(transactItems
142
+ .map((item) => {
143
+ var _a, _b, _c;
144
+ if (((_a = item.Put) === null || _a === void 0 ? void 0 : _a.TableName) === tableName) {
145
+ return captureKey(item.Put.Item.PK, item.Put.Item.SK);
146
+ }
147
+ if (((_b = item.Update) === null || _b === void 0 ? void 0 : _b.TableName) === tableName) {
148
+ return captureKey(item.Update.Key.PK, item.Update.Key.SK);
149
+ }
150
+ if (((_c = item.Delete) === null || _c === void 0 ? void 0 : _c.TableName) === tableName) {
151
+ return captureKey(item.Delete.Key.PK, item.Delete.Key.SK);
152
+ }
153
+ })
154
+ .filter(Boolean));
155
+ break;
156
+ }
157
+ }
158
+ });
159
+ const proxy = new Proxy(original, {
160
+ get(target, prop) {
161
+ const value = target[prop];
162
+ if (value === undefined)
163
+ return undefined;
164
+ if (typeof value === "function") {
165
+ if (isTracking && WRITE_METHODS.has(prop)) {
166
+ return (params) => {
167
+ const request = value.call(target, params);
168
+ const origPromise = request.promise.bind(request);
169
+ request.promise = () => __awaiter(this, void 0, void 0, function* () {
170
+ yield captureKeysForOperation(prop, params);
171
+ return origPromise();
172
+ });
173
+ return request;
174
+ };
175
+ }
176
+ return value.bind(target);
177
+ }
178
+ return value;
179
+ },
180
+ });
181
+ return {
182
+ proxy: proxy,
183
+ startTracking: () => {
184
+ isTracking = true;
185
+ trackedKeys.clear();
186
+ },
187
+ rollback: () => __awaiter(this, void 0, void 0, function* () {
188
+ isTracking = false;
189
+ const entries = Array.from(trackedKeys.values());
190
+ const toDelete = entries.filter((e) => e.original === null);
191
+ const toRestore = entries.filter((e) => e.original !== null);
192
+ const deleteChunks = chunksOf(25)(toDelete);
193
+ const restoreChunks = chunksOf(25)(toRestore);
194
+ yield Promise.all([
195
+ ...deleteChunks.map((chunk) => original
196
+ .batchWrite({
197
+ RequestItems: {
198
+ [tableName]: chunk.map(({ pk, sk }) => ({
199
+ DeleteRequest: { Key: { PK: pk, SK: sk } },
200
+ })),
201
+ },
202
+ })
203
+ .promise()),
204
+ ...restoreChunks.map((chunk) => original
205
+ .batchWrite({
206
+ RequestItems: {
207
+ [tableName]: chunk.map(({ original: item }) => ({
208
+ PutRequest: { Item: item },
209
+ })),
210
+ },
211
+ })
212
+ .promise()),
213
+ ]);
214
+ trackedKeys.clear();
215
+ }),
216
+ };
217
+ }
94
218
  export const createSandbox = (client) => __awaiter(void 0, void 0, void 0, function* () {
95
219
  const tableName = yield createTable();
96
- client.setDocumentClient(docClient);
220
+ const tracked = createTrackedDocClient(docClient, tableName);
221
+ client.setDocumentClient(tracked.proxy);
97
222
  client.setTableName(tableName);
98
223
  return {
99
224
  destroy: () => destroyTable(tableName),
@@ -124,8 +249,10 @@ export const createSandbox = (client) => __awaiter(void 0, void 0, void 0, funct
124
249
  .then(({ Item }) => Item !== null && Item !== void 0 ? Item : null),
125
250
  diff: (before) => __awaiter(void 0, void 0, void 0, function* () {
126
251
  const snapshot = yield getTableContents(tableName);
127
- return diff(before, snapshot);
252
+ return formatSnapshotDiff(before, snapshot);
128
253
  }),
254
+ startTracking: tracked.startTracking,
255
+ rollback: tracked.rollback,
129
256
  };
130
257
  });
131
258
  //# sourceMappingURL=sandbox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/sandbox.ts"],"names":[],"mappings":";AAAA,OAAO,MAAM,MAAM,QAAQ,CAAA;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1C,OAAO,QAAQ,MAAM,0BAA0B,CAAA;AAC/C,OAAO,IAAI,MAAM,eAAe,CAAA;AAEhC,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC;IACvB,WAAW,EAAE,KAAK;IAClB,eAAe,EAAE,KAAK;IACtB,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;IACpC,MAAM,EAAE,OAAO;CAChB,CAAC,CAAA;AAEF,MAAM,SAAS,GAAG,IAAI,QAAQ,CAAC,cAAc,CAAC;IAC5C,WAAW,EAAE,KAAK;IAClB,eAAe,EAAE,KAAK;IACtB,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;IACpC,MAAM,EAAE,OAAO;CAChB,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,GAAS,EAAE;IACpC,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAExD,MAAM,GAAG;SACN,WAAW,CAAC;QACX,SAAS,EAAE,SAAS;QACpB,oBAAoB,EAAE;YACpB,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE;YAC3C,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE;YAC3C,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;gBAC5B,EAAE,aAAa,EAAE,GAAG,GAAG,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE;gBACjD,EAAE,aAAa,EAAE,GAAG,GAAG,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE;aAClD,CAAC;SACH;QACD,SAAS,EAAE;YACT,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE;YACxC,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE;SAC1C;QACD,sBAAsB,EAAE;YACtB;gBACE,SAAS,EAAE,MAAM;gBACjB,SAAS,EAAE;oBACT,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE;oBACxC,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE;iBAC1C;gBACD,UAAU,EAAE;oBACV,cAAc,EAAE,KAAK;iBACtB;aACF;YACD,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACzB,SAAS,EAAE,GAAG;gBACd,SAAS,EAAE;oBACT,EAAE,aAAa,EAAE,GAAG,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE;oBAC9C,EAAE,aAAa,EAAE,GAAG,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE;iBAChD;gBACD,UAAU,EAAE;oBACV,cAAc,EAAE,KAAK;iBACtB;aACF,CAAC,CAAC;SACJ;QACD,WAAW,EAAE,iBAAiB;KAC/B,CAAC;SACD,OAAO,EAAE;SACT,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE;QAChB,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE,CAAC,CAAC,CAAA;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;IAEJ,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAAO,SAAiB,EAAE,EAAE;IACtD,OAAO,GAAG;SACP,WAAW,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;SACrC,OAAO,EAAE;SACT,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;SACd,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QACX,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAAE,CAAC,CAAC,CAAA;QACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;AACN,CAAC,CAAA,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,SAAiB,EACgB,EAAE;IACnC,MAAM,IAAI,GAAG,CAAO,iBAAuB,EAAkB,EAAE;QAC7D,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,gBAAgB,EAAE,GAAG,MAAM,SAAS;aACrD,IAAI,CAAC;YACJ,SAAS,EAAE,SAAS;YACpB,iBAAiB;SAClB,CAAC;aACD,OAAO,EAAE,CAAA;QAEZ,IAAI,gBAAgB;YAAE,OAAO,CAAC,GAAG,KAAK,EAAE,GAAG,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;QAC1E,OAAO,KAAK,CAAA;IACd,CAAC,CAAA,CAAA;IAED,MAAM,KAAK,GAAG,MAAM,IAAI,EAAE,CAAA;IAE1B,MAAM,GAAG,GAA2B,EAAE,CAAA;IAEtC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;IAE/D,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA,CAAA;AAUD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAO,MAAc,EAAoB,EAAE;IACtE,MAAM,SAAS,GAAG,MAAM,WAAW,EAAE,CAAA;IAErC,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAA;IACnC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;IAE9B,OAAO;QACL,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC;QACtC,QAAQ,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC;QAC3C,IAAI,EAAE,CAAO,GAAG,IAAmC,EAAE,EAAE;YACrD,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;YAEjC,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,GAAG,CAAC,CAAO,KAAK,EAAE,EAAE;gBACzB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;;oBAC5B,OAAA,OAAO,CAAA,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,MAAM,0CAAE,gBAAgB,CAAA,KAAK,UAAU;wBAC/C,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;wBAC9B,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,UAAU;4BAChC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;4BACZ,CAAC,CAAC,CAAC,CAAA;iBAAA,CACN,CAAA;gBAED,OAAO,MAAM,CAAC,cAAc;qBACzB,UAAU,CAAC;oBACV,YAAY,EAAE;wBACZ,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;qBAC7D;iBACF,CAAC;qBACD,OAAO,EAAE,CAAA;YACd,CAAC,CAAA,CAAC,CACH,CAAA;QACH,CAAC,CAAA;QACD,GAAG,EAAE,CAAC,EAAU,EAAE,EAAU,EAAE,EAAE,CAC9B,MAAM,CAAC,cAAc;aAClB,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;aACtD,OAAO,EAAE;aACT,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,IAAI,CAAC;QACrC,IAAI,EAAE,CAAO,MAAM,EAAE,EAAE;YACrB,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,SAAS,CAAC,CAAA;YAElD,OAAO,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAC/B,CAAC,CAAA;KACF,CAAA;AACH,CAAC,CAAA,CAAA"}
1
+ {"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/sandbox.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- import "snapshot-diff";
1
+ export {};
@@ -1,8 +1,14 @@
1
- import "snapshot-diff";
2
- import { getSnapshotDiffSerializer } from "snapshot-diff";
3
1
  import mockdate from "mockdate";
4
- // Register `toMatchDiffSnapshot`
5
- require("snapshot-diff/extend-expect");
6
- expect.addSnapshotSerializer(getSnapshotDiffSerializer());
2
+ const isSnapshotDiff = (value) => {
3
+ if (typeof value !== "string")
4
+ return false;
5
+ if (!value.includes(" / ") || !value.includes("["))
6
+ return false;
7
+ return /^(?:\+ |- |\[)/m.test(value);
8
+ };
9
+ expect.addSnapshotSerializer({
10
+ test: isSnapshotDiff,
11
+ print: (value) => String(value),
12
+ });
7
13
  mockdate.set(new Date("2021-05-01T08:00:00.000Z"));
8
14
  //# sourceMappingURL=setup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/test-utils/setup.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAA;AACtB,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAA;AACzD,OAAO,QAAQ,MAAM,UAAU,CAAA;AAE/B,iCAAiC;AACjC,OAAO,CAAC,6BAA6B,CAAC,CAAA;AAEtC,MAAM,CAAC,qBAAqB,CAAC,yBAAyB,EAAE,CAAC,CAAA;AAEzD,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/test-utils/setup.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAE/B,MAAM,cAAc,GAAG,CAAC,KAAc,EAAmB,EAAE;IACzD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC3C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAA;IAChE,OAAO,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACtC,CAAC,CAAA;AAED,MAAM,CAAC,qBAAqB,CAAC;IAC3B,IAAI,EAAE,cAAc;IACpB,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;CAChC,CAAC,CAAA;AAEF,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@model-ts/dynamodb",
3
- "version": "3.1.0",
3
+ "version": "4.1.0",
4
4
  "main": "dist/cjs/index.js",
5
5
  "module": "dist/esm/index.js",
6
6
  "author": "Fabian Finke <finkef@icloud.com>",