@model-ts/dynamodb 3.0.0 → 3.0.2

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 (36) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/cjs/__test__/client-with-cursor-encryption.test.js +696 -21
  3. package/dist/cjs/__test__/client-with-cursor-encryption.test.js.map +1 -1
  4. package/dist/cjs/__test__/client.test.js +775 -95
  5. package/dist/cjs/__test__/client.test.js.map +1 -1
  6. package/dist/cjs/__test__/pagination.test.d.ts +1 -0
  7. package/dist/cjs/__test__/pagination.test.js +241 -0
  8. package/dist/cjs/__test__/pagination.test.js.map +1 -0
  9. package/dist/cjs/client.js +1 -1
  10. package/dist/cjs/client.js.map +1 -1
  11. package/dist/cjs/pagination.d.ts +1 -1
  12. package/dist/cjs/pagination.js +4 -6
  13. package/dist/cjs/pagination.js.map +1 -1
  14. package/dist/cjs/sandbox.js +3 -3
  15. package/dist/cjs/sandbox.js.map +1 -1
  16. package/dist/esm/__test__/client-with-cursor-encryption.test.js +696 -21
  17. package/dist/esm/__test__/client-with-cursor-encryption.test.js.map +1 -1
  18. package/dist/esm/__test__/client.test.js +776 -96
  19. package/dist/esm/__test__/client.test.js.map +1 -1
  20. package/dist/esm/__test__/pagination.test.d.ts +1 -0
  21. package/dist/esm/__test__/pagination.test.js +238 -0
  22. package/dist/esm/__test__/pagination.test.js.map +1 -0
  23. package/dist/esm/client.js +1 -1
  24. package/dist/esm/client.js.map +1 -1
  25. package/dist/esm/pagination.d.ts +1 -1
  26. package/dist/esm/pagination.js +4 -6
  27. package/dist/esm/pagination.js.map +1 -1
  28. package/dist/esm/sandbox.js +3 -3
  29. package/dist/esm/sandbox.js.map +1 -1
  30. package/package.json +1 -1
  31. package/src/__test__/client-with-cursor-encryption.test.ts +696 -21
  32. package/src/__test__/client.test.ts +782 -97
  33. package/src/__test__/pagination.test.ts +300 -0
  34. package/src/client.ts +1 -1
  35. package/src/pagination.ts +5 -9
  36. package/src/sandbox.ts +19 -17
@@ -11,7 +11,7 @@ const client = new client_1.Client({ tableName: "table" });
11
11
  const provider = provider_1.getProvider(client);
12
12
  const SIMPLE_CODEC = t.type({
13
13
  foo: t.string,
14
- bar: t.number,
14
+ bar: t.number
15
15
  });
16
16
  class Simple extends core_1.model("Simple", SIMPLE_CODEC, provider) {
17
17
  get PK() {
@@ -273,7 +273,7 @@ describe("put", () => {
273
273
  test("it overwrites item if `ignoreExistence` is set", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
274
274
  yield MultiGSI.put(new MultiGSI({ foo: "yes", bar: 42 }));
275
275
  yield expect(MultiGSI.put(new MultiGSI({ foo: "yes", bar: 42 }), {
276
- IgnoreExistence: true,
276
+ IgnoreExistence: true
277
277
  })).resolves.toBeInstanceOf(MultiGSI);
278
278
  }));
279
279
  });
@@ -287,7 +287,7 @@ describe("get", () => {
287
287
  const item = yield new Simple({ foo: "hi", bar: 432 }).put();
288
288
  const result = yield Simple.get({
289
289
  PK: item.keys().PK,
290
- SK: item.keys().SK,
290
+ SK: item.keys().SK
291
291
  });
292
292
  expect(result.values()).toMatchInlineSnapshot(`
293
293
  Object {
@@ -334,8 +334,8 @@ describe("delete", () => {
334
334
  _model: Simple,
335
335
  key: {
336
336
  PK: item.keys().PK,
337
- SK: item.keys().SK,
338
- },
337
+ SK: item.keys().SK
338
+ }
339
339
  });
340
340
  expect(result).toBeNull();
341
341
  expect(yield sandbox.diff(before)).toMatchInlineSnapshot(`
@@ -363,7 +363,7 @@ describe("delete", () => {
363
363
  const before = yield sandbox.snapshot();
364
364
  const result = yield Simple.delete({
365
365
  PK: item.keys().PK,
366
- SK: item.keys().SK,
366
+ SK: item.keys().SK
367
367
  });
368
368
  expect(result).toBeNull();
369
369
  expect(yield sandbox.diff(before)).toMatchInlineSnapshot(`
@@ -675,7 +675,7 @@ describe("query", () => {
675
675
  test("it returns empty results", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
676
676
  expect(yield client.query({
677
677
  KeyConditionExpression: `PK = :pk and begins_with(SK, :sk)`,
678
- ExpressionAttributeValues: { ":pk": "abc", ":sk": "SORT" },
678
+ ExpressionAttributeValues: { ":pk": "abc", ":sk": "SORT" }
679
679
  }, { a: A, b: B, union: Union })).toMatchInlineSnapshot(`
680
680
  Object {
681
681
  "_unknown": Array [],
@@ -692,7 +692,7 @@ describe("query", () => {
692
692
  yield sandbox.seed({ PK: "abc", SK: "SORT#1", doesnt: "match" });
693
693
  expect(yield client.query({
694
694
  KeyConditionExpression: `PK = :pk and begins_with(SK, :sk)`,
695
- ExpressionAttributeValues: { ":pk": "abc", ":sk": "SORT#" },
695
+ ExpressionAttributeValues: { ":pk": "abc", ":sk": "SORT#" }
696
696
  }, { a: A, b: B, union: Union })).toMatchInlineSnapshot(`
697
697
  Object {
698
698
  "_unknown": Array [
@@ -715,14 +715,14 @@ describe("query", () => {
715
715
  yield sandbox.seed(new A({ pk: "abc", sk: "SORT#1", a: 1 }), new A({ pk: "abc", sk: "SORT#2", a: 2 }), new B({ pk: "abc", sk: "SORT#3", b: "hi" }), { PK: "abc", SK: "SORT#4", probably: "unknown" }, new C({ pk: "abc", sk: "SORT#5", c: "hi" }), new D({ pk: "abc", sk: "SORT#6", d: "hi" }));
716
716
  const { a, b, union, _unknown, meta } = yield client.query({
717
717
  KeyConditionExpression: `PK = :pk and begins_with(SK, :sk)`,
718
- ExpressionAttributeValues: { ":pk": "abc", ":sk": "SORT#" },
718
+ ExpressionAttributeValues: { ":pk": "abc", ":sk": "SORT#" }
719
719
  }, { a: A, b: B, union: Union });
720
720
  expect({
721
721
  meta: meta,
722
722
  _unknown: _unknown,
723
- a: a.map((item) => item.values()),
724
- b: b.map((item) => item.values()),
725
- union: union.map((item) => item.values()),
723
+ a: a.map(item => item.values()),
724
+ b: b.map(item => item.values()),
725
+ union: union.map(item => item.values())
726
726
  }).toMatchInlineSnapshot(`
727
727
  Object {
728
728
  "_unknown": Array [
@@ -774,7 +774,7 @@ describe("query", () => {
774
774
  const firstPage = yield client.query({
775
775
  KeyConditionExpression: `PK = :pk and begins_with(SK, :sk)`,
776
776
  ExpressionAttributeValues: { ":pk": "abc", ":sk": "SORT#" },
777
- Limit: 30,
777
+ Limit: 30
778
778
  }, { a: A, b: B });
779
779
  expect(firstPage.a.length).toBe(20);
780
780
  expect(firstPage.b.length).toBe(10);
@@ -784,7 +784,7 @@ describe("query", () => {
784
784
  KeyConditionExpression: `PK = :pk and begins_with(SK, :sk)`,
785
785
  ExpressionAttributeValues: { ":pk": "abc", ":sk": "SORT#" },
786
786
  Limit: 30,
787
- ExclusiveStartKey: firstPage.meta.lastEvaluatedKey,
787
+ ExclusiveStartKey: firstPage.meta.lastEvaluatedKey
788
788
  }, { a: A, b: B });
789
789
  expect(secondPage.a.length).toBe(0);
790
790
  expect(secondPage.b.length).toBe(10);
@@ -798,7 +798,7 @@ describe("query", () => {
798
798
  ExpressionAttributeValues: { ":pk": "abc", ":sk": "SORT#" },
799
799
  FetchAllPages: true,
800
800
  // You wouldn't set a limit in a real-world use case here to optimize fetching all items.
801
- Limit: 10,
801
+ Limit: 10
802
802
  }, { a: A, b: B });
803
803
  expect(a.length).toBe(20);
804
804
  expect(b.length).toBe(20);
@@ -807,7 +807,7 @@ describe("query", () => {
807
807
  }));
808
808
  });
809
809
  describe("bulk", () => {
810
- describe("< 25 elements (true transaction)", () => {
810
+ describe("< 100 elements (true transaction)", () => {
811
811
  test("it succeeds", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
812
812
  const softDeleteTarget = new B({ pk: "PK#3", sk: "SK#3", b: "bar" });
813
813
  yield sandbox.seed(new A({ pk: "PK#1", sk: "SK#1", a: 1 }), new A({ pk: "PK#2", sk: "SK#2", a: 2 }), softDeleteTarget, new B({ pk: "PK#UPDATE", sk: "SK#UPDATE", b: "bar" }), new B({ pk: "PK#COND", sk: "SK#COND", b: "cond" }));
@@ -822,16 +822,16 @@ describe("bulk", () => {
822
822
  new B({
823
823
  pk: "PK#UPDATE",
824
824
  sk: "SK#UPDATE",
825
- b: "bar",
825
+ b: "bar"
826
826
  }).operation("update", { b: "baz" }),
827
827
  new B({
828
828
  pk: "PK#COND",
829
829
  sk: "SK#COND",
830
- b: "cond",
830
+ b: "cond"
831
831
  }).operation("condition", {
832
832
  ConditionExpression: "b = :cond",
833
- ExpressionAttributeValues: { ":cond": "cond" },
834
- }),
833
+ ExpressionAttributeValues: { ":cond": "cond" }
834
+ })
835
835
  ]);
836
836
  expect(yield sandbox.diff(before)).toMatchInlineSnapshot(`
837
837
  Snapshot Diff:
@@ -935,12 +935,12 @@ describe("bulk", () => {
935
935
  A.operation("put", new A({ pk: "PK5", sk: "PK5", a: 5 })),
936
936
  new B({ pk: "PK#6", sk: "SK#6", b: "baz" }).operation("put"),
937
937
  // Fails
938
- A.operation("updateRaw", { PK: "PK#nicetry", SK: "SK#nope" }, { a: 234 }),
938
+ A.operation("updateRaw", { PK: "PK#nicetry", SK: "SK#nope" }, { a: 234 })
939
939
  ])).rejects.toBeInstanceOf(errors_1.BulkWriteTransactionError);
940
940
  expect(yield sandbox.snapshot()).toEqual(before);
941
941
  }));
942
942
  });
943
- describe("> 25 items (pseudo transaction)", () => {
943
+ describe("> 100 items (pseudo transaction)", () => {
944
944
  test("it succeeds", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
945
945
  yield sandbox.seed(new A({ pk: "PK#1", sk: "SK#1", a: 1 }), new A({ pk: "PK#2", sk: "SK#2", a: 2 }), new B({ pk: "PK#3", sk: "SK#3", b: "bar" }));
946
946
  const before = yield sandbox.snapshot();
@@ -954,9 +954,9 @@ describe("bulk", () => {
954
954
  new B({
955
955
  pk: "PK#UPDATE",
956
956
  sk: "SK#UPDATE",
957
- b: "bar",
957
+ b: "bar"
958
958
  }).operation("update", { b: "baz" }),
959
- ...Array.from({ length: 25 }).map((_, i) => new A({ pk: `PK#A${i}`, sk: `SK#A${i}`, a: i }).operation("put")),
959
+ ...Array.from({ length: 100 }).map((_, i) => new A({ pk: `PK#A${i}`, sk: `SK#A${i}`, a: i }).operation("put"))
960
960
  ]);
961
961
  //#region snapshot
962
962
  expect(yield sandbox.diff(before)).toMatchInlineSnapshot(`
@@ -964,7 +964,7 @@ describe("bulk", () => {
964
964
  - First value
965
965
  + Second value
966
966
 
967
- @@ -2,28 +2,271 @@
967
+ @@ -2,28 +2,946 @@
968
968
  "PK#1__SK#1": Object {
969
969
  "PK": "PK#1",
970
970
  "SK": "SK#1",
@@ -1019,7 +1019,10 @@ describe("bulk", () => {
1019
1019
  + "a": 13,
1020
1020
  + "pk": "PK#A13",
1021
1021
  + "sk": "SK#A13",
1022
- + },
1022
+ },
1023
+ - "PK#2__SK#2": Object {
1024
+ - "PK": "PK#2",
1025
+ - "SK": "SK#2",
1023
1026
  + "PK#A14__SK#A14": Object {
1024
1027
  + "PK": "PK#A14",
1025
1028
  + "SK": "SK#A14",
@@ -1028,10 +1031,7 @@ describe("bulk", () => {
1028
1031
  + "a": 14,
1029
1032
  + "pk": "PK#A14",
1030
1033
  + "sk": "SK#A14",
1031
- },
1032
- - "PK#2__SK#2": Object {
1033
- - "PK": "PK#2",
1034
- - "SK": "SK#2",
1034
+ + },
1035
1035
  + "PK#A15__SK#A15": Object {
1036
1036
  + "PK": "PK#A15",
1037
1037
  + "SK": "SK#A15",
@@ -1131,6 +1131,51 @@ describe("bulk", () => {
1131
1131
  + "pk": "PK#A24",
1132
1132
  + "sk": "SK#A24",
1133
1133
  + },
1134
+ + "PK#A25__SK#A25": Object {
1135
+ + "PK": "PK#A25",
1136
+ + "SK": "SK#A25",
1137
+ + "_docVersion": 0,
1138
+ + "_tag": "A",
1139
+ + "a": 25,
1140
+ + "pk": "PK#A25",
1141
+ + "sk": "SK#A25",
1142
+ + },
1143
+ + "PK#A26__SK#A26": Object {
1144
+ + "PK": "PK#A26",
1145
+ + "SK": "SK#A26",
1146
+ + "_docVersion": 0,
1147
+ + "_tag": "A",
1148
+ + "a": 26,
1149
+ + "pk": "PK#A26",
1150
+ + "sk": "SK#A26",
1151
+ + },
1152
+ + "PK#A27__SK#A27": Object {
1153
+ + "PK": "PK#A27",
1154
+ + "SK": "SK#A27",
1155
+ + "_docVersion": 0,
1156
+ + "_tag": "A",
1157
+ + "a": 27,
1158
+ + "pk": "PK#A27",
1159
+ + "sk": "SK#A27",
1160
+ + },
1161
+ + "PK#A28__SK#A28": Object {
1162
+ + "PK": "PK#A28",
1163
+ + "SK": "SK#A28",
1164
+ + "_docVersion": 0,
1165
+ + "_tag": "A",
1166
+ + "a": 28,
1167
+ + "pk": "PK#A28",
1168
+ + "sk": "SK#A28",
1169
+ + },
1170
+ + "PK#A29__SK#A29": Object {
1171
+ + "PK": "PK#A29",
1172
+ + "SK": "SK#A29",
1173
+ + "_docVersion": 0,
1174
+ + "_tag": "A",
1175
+ + "a": 29,
1176
+ + "pk": "PK#A29",
1177
+ + "sk": "SK#A29",
1178
+ + },
1134
1179
  + "PK#A2__SK#A2": Object {
1135
1180
  + "PK": "PK#A2",
1136
1181
  + "SK": "SK#A2",
@@ -1142,6 +1187,96 @@ describe("bulk", () => {
1142
1187
  + "pk": "PK#A2",
1143
1188
  + "sk": "SK#A2",
1144
1189
  + },
1190
+ + "PK#A30__SK#A30": Object {
1191
+ + "PK": "PK#A30",
1192
+ + "SK": "SK#A30",
1193
+ + "_docVersion": 0,
1194
+ + "_tag": "A",
1195
+ + "a": 30,
1196
+ + "pk": "PK#A30",
1197
+ + "sk": "SK#A30",
1198
+ + },
1199
+ + "PK#A31__SK#A31": Object {
1200
+ + "PK": "PK#A31",
1201
+ + "SK": "SK#A31",
1202
+ + "_docVersion": 0,
1203
+ + "_tag": "A",
1204
+ + "a": 31,
1205
+ + "pk": "PK#A31",
1206
+ + "sk": "SK#A31",
1207
+ + },
1208
+ + "PK#A32__SK#A32": Object {
1209
+ + "PK": "PK#A32",
1210
+ + "SK": "SK#A32",
1211
+ + "_docVersion": 0,
1212
+ + "_tag": "A",
1213
+ + "a": 32,
1214
+ + "pk": "PK#A32",
1215
+ + "sk": "SK#A32",
1216
+ + },
1217
+ + "PK#A33__SK#A33": Object {
1218
+ + "PK": "PK#A33",
1219
+ + "SK": "SK#A33",
1220
+ + "_docVersion": 0,
1221
+ + "_tag": "A",
1222
+ + "a": 33,
1223
+ + "pk": "PK#A33",
1224
+ + "sk": "SK#A33",
1225
+ + },
1226
+ + "PK#A34__SK#A34": Object {
1227
+ + "PK": "PK#A34",
1228
+ + "SK": "SK#A34",
1229
+ + "_docVersion": 0,
1230
+ + "_tag": "A",
1231
+ + "a": 34,
1232
+ + "pk": "PK#A34",
1233
+ + "sk": "SK#A34",
1234
+ + },
1235
+ + "PK#A35__SK#A35": Object {
1236
+ + "PK": "PK#A35",
1237
+ + "SK": "SK#A35",
1238
+ + "_docVersion": 0,
1239
+ + "_tag": "A",
1240
+ + "a": 35,
1241
+ + "pk": "PK#A35",
1242
+ + "sk": "SK#A35",
1243
+ + },
1244
+ + "PK#A36__SK#A36": Object {
1245
+ + "PK": "PK#A36",
1246
+ + "SK": "SK#A36",
1247
+ + "_docVersion": 0,
1248
+ + "_tag": "A",
1249
+ + "a": 36,
1250
+ + "pk": "PK#A36",
1251
+ + "sk": "SK#A36",
1252
+ + },
1253
+ + "PK#A37__SK#A37": Object {
1254
+ + "PK": "PK#A37",
1255
+ + "SK": "SK#A37",
1256
+ + "_docVersion": 0,
1257
+ + "_tag": "A",
1258
+ + "a": 37,
1259
+ + "pk": "PK#A37",
1260
+ + "sk": "SK#A37",
1261
+ + },
1262
+ + "PK#A38__SK#A38": Object {
1263
+ + "PK": "PK#A38",
1264
+ + "SK": "SK#A38",
1265
+ + "_docVersion": 0,
1266
+ + "_tag": "A",
1267
+ + "a": 38,
1268
+ + "pk": "PK#A38",
1269
+ + "sk": "SK#A38",
1270
+ + },
1271
+ + "PK#A39__SK#A39": Object {
1272
+ + "PK": "PK#A39",
1273
+ + "SK": "SK#A39",
1274
+ + "_docVersion": 0,
1275
+ + "_tag": "A",
1276
+ + "a": 39,
1277
+ + "pk": "PK#A39",
1278
+ + "sk": "SK#A39",
1279
+ + },
1145
1280
  + "PK#A3__SK#A3": Object {
1146
1281
  + "PK": "PK#A3",
1147
1282
  + "SK": "SK#A3",
@@ -1151,6 +1286,96 @@ describe("bulk", () => {
1151
1286
  + "pk": "PK#A3",
1152
1287
  + "sk": "SK#A3",
1153
1288
  + },
1289
+ + "PK#A40__SK#A40": Object {
1290
+ + "PK": "PK#A40",
1291
+ + "SK": "SK#A40",
1292
+ + "_docVersion": 0,
1293
+ + "_tag": "A",
1294
+ + "a": 40,
1295
+ + "pk": "PK#A40",
1296
+ + "sk": "SK#A40",
1297
+ + },
1298
+ + "PK#A41__SK#A41": Object {
1299
+ + "PK": "PK#A41",
1300
+ + "SK": "SK#A41",
1301
+ + "_docVersion": 0,
1302
+ + "_tag": "A",
1303
+ + "a": 41,
1304
+ + "pk": "PK#A41",
1305
+ + "sk": "SK#A41",
1306
+ + },
1307
+ + "PK#A42__SK#A42": Object {
1308
+ + "PK": "PK#A42",
1309
+ + "SK": "SK#A42",
1310
+ + "_docVersion": 0,
1311
+ + "_tag": "A",
1312
+ + "a": 42,
1313
+ + "pk": "PK#A42",
1314
+ + "sk": "SK#A42",
1315
+ + },
1316
+ + "PK#A43__SK#A43": Object {
1317
+ + "PK": "PK#A43",
1318
+ + "SK": "SK#A43",
1319
+ + "_docVersion": 0,
1320
+ + "_tag": "A",
1321
+ + "a": 43,
1322
+ + "pk": "PK#A43",
1323
+ + "sk": "SK#A43",
1324
+ + },
1325
+ + "PK#A44__SK#A44": Object {
1326
+ + "PK": "PK#A44",
1327
+ + "SK": "SK#A44",
1328
+ + "_docVersion": 0,
1329
+ + "_tag": "A",
1330
+ + "a": 44,
1331
+ + "pk": "PK#A44",
1332
+ + "sk": "SK#A44",
1333
+ + },
1334
+ + "PK#A45__SK#A45": Object {
1335
+ + "PK": "PK#A45",
1336
+ + "SK": "SK#A45",
1337
+ + "_docVersion": 0,
1338
+ + "_tag": "A",
1339
+ + "a": 45,
1340
+ + "pk": "PK#A45",
1341
+ + "sk": "SK#A45",
1342
+ + },
1343
+ + "PK#A46__SK#A46": Object {
1344
+ + "PK": "PK#A46",
1345
+ + "SK": "SK#A46",
1346
+ + "_docVersion": 0,
1347
+ + "_tag": "A",
1348
+ + "a": 46,
1349
+ + "pk": "PK#A46",
1350
+ + "sk": "SK#A46",
1351
+ + },
1352
+ + "PK#A47__SK#A47": Object {
1353
+ + "PK": "PK#A47",
1354
+ + "SK": "SK#A47",
1355
+ + "_docVersion": 0,
1356
+ + "_tag": "A",
1357
+ + "a": 47,
1358
+ + "pk": "PK#A47",
1359
+ + "sk": "SK#A47",
1360
+ + },
1361
+ + "PK#A48__SK#A48": Object {
1362
+ + "PK": "PK#A48",
1363
+ + "SK": "SK#A48",
1364
+ + "_docVersion": 0,
1365
+ + "_tag": "A",
1366
+ + "a": 48,
1367
+ + "pk": "PK#A48",
1368
+ + "sk": "SK#A48",
1369
+ + },
1370
+ + "PK#A49__SK#A49": Object {
1371
+ + "PK": "PK#A49",
1372
+ + "SK": "SK#A49",
1373
+ + "_docVersion": 0,
1374
+ + "_tag": "A",
1375
+ + "a": 49,
1376
+ + "pk": "PK#A49",
1377
+ + "sk": "SK#A49",
1378
+ + },
1154
1379
  + "PK#A4__SK#A4": Object {
1155
1380
  + "PK": "PK#A4",
1156
1381
  + "SK": "SK#A4",
@@ -1160,6 +1385,99 @@ describe("bulk", () => {
1160
1385
  + "pk": "PK#A4",
1161
1386
  + "sk": "SK#A4",
1162
1387
  + },
1388
+ + "PK#A50__SK#A50": Object {
1389
+ + "PK": "PK#A50",
1390
+ + "SK": "SK#A50",
1391
+ + "_docVersion": 0,
1392
+ + "_tag": "A",
1393
+ + "a": 50,
1394
+ + "pk": "PK#A50",
1395
+ + "sk": "SK#A50",
1396
+ + },
1397
+ + "PK#A51__SK#A51": Object {
1398
+ + "PK": "PK#A51",
1399
+ + "SK": "SK#A51",
1400
+ + "_docVersion": 0,
1401
+ + "_tag": "A",
1402
+ + "a": 51,
1403
+ + "pk": "PK#A51",
1404
+ + "sk": "SK#A51",
1405
+ + },
1406
+ + "PK#A52__SK#A52": Object {
1407
+ + "PK": "PK#A52",
1408
+ + "SK": "SK#A52",
1409
+ + "_docVersion": 0,
1410
+ + "_tag": "A",
1411
+ + "a": 52,
1412
+ + "pk": "PK#A52",
1413
+ + "sk": "SK#A52",
1414
+ },
1415
+ - "PK#3__SK#3": Object {
1416
+ - "PK": "PK#3",
1417
+ - "SK": "SK#3",
1418
+ + "PK#A53__SK#A53": Object {
1419
+ + "PK": "PK#A53",
1420
+ + "SK": "SK#A53",
1421
+ + "_docVersion": 0,
1422
+ + "_tag": "A",
1423
+ + "a": 53,
1424
+ + "pk": "PK#A53",
1425
+ + "sk": "SK#A53",
1426
+ + },
1427
+ + "PK#A54__SK#A54": Object {
1428
+ + "PK": "PK#A54",
1429
+ + "SK": "SK#A54",
1430
+ + "_docVersion": 0,
1431
+ + "_tag": "A",
1432
+ + "a": 54,
1433
+ + "pk": "PK#A54",
1434
+ + "sk": "SK#A54",
1435
+ + },
1436
+ + "PK#A55__SK#A55": Object {
1437
+ + "PK": "PK#A55",
1438
+ + "SK": "SK#A55",
1439
+ + "_docVersion": 0,
1440
+ + "_tag": "A",
1441
+ + "a": 55,
1442
+ + "pk": "PK#A55",
1443
+ + "sk": "SK#A55",
1444
+ + },
1445
+ + "PK#A56__SK#A56": Object {
1446
+ + "PK": "PK#A56",
1447
+ + "SK": "SK#A56",
1448
+ + "_docVersion": 0,
1449
+ + "_tag": "A",
1450
+ + "a": 56,
1451
+ + "pk": "PK#A56",
1452
+ + "sk": "SK#A56",
1453
+ + },
1454
+ + "PK#A57__SK#A57": Object {
1455
+ + "PK": "PK#A57",
1456
+ + "SK": "SK#A57",
1457
+ + "_docVersion": 0,
1458
+ + "_tag": "A",
1459
+ + "a": 57,
1460
+ + "pk": "PK#A57",
1461
+ + "sk": "SK#A57",
1462
+ + },
1463
+ + "PK#A58__SK#A58": Object {
1464
+ + "PK": "PK#A58",
1465
+ + "SK": "SK#A58",
1466
+ + "_docVersion": 0,
1467
+ + "_tag": "A",
1468
+ + "a": 58,
1469
+ + "pk": "PK#A58",
1470
+ + "sk": "SK#A58",
1471
+ + },
1472
+ + "PK#A59__SK#A59": Object {
1473
+ + "PK": "PK#A59",
1474
+ + "SK": "SK#A59",
1475
+ + "_docVersion": 0,
1476
+ + "_tag": "A",
1477
+ + "a": 59,
1478
+ + "pk": "PK#A59",
1479
+ + "sk": "SK#A59",
1480
+ + },
1163
1481
  + "PK#A5__SK#A5": Object {
1164
1482
  + "PK": "PK#A5",
1165
1483
  + "SK": "SK#A5",
@@ -1169,6 +1487,96 @@ describe("bulk", () => {
1169
1487
  + "pk": "PK#A5",
1170
1488
  + "sk": "SK#A5",
1171
1489
  + },
1490
+ + "PK#A60__SK#A60": Object {
1491
+ + "PK": "PK#A60",
1492
+ + "SK": "SK#A60",
1493
+ + "_docVersion": 0,
1494
+ + "_tag": "A",
1495
+ + "a": 60,
1496
+ + "pk": "PK#A60",
1497
+ + "sk": "SK#A60",
1498
+ + },
1499
+ + "PK#A61__SK#A61": Object {
1500
+ + "PK": "PK#A61",
1501
+ + "SK": "SK#A61",
1502
+ + "_docVersion": 0,
1503
+ + "_tag": "A",
1504
+ + "a": 61,
1505
+ + "pk": "PK#A61",
1506
+ + "sk": "SK#A61",
1507
+ + },
1508
+ + "PK#A62__SK#A62": Object {
1509
+ + "PK": "PK#A62",
1510
+ + "SK": "SK#A62",
1511
+ + "_docVersion": 0,
1512
+ + "_tag": "A",
1513
+ + "a": 62,
1514
+ + "pk": "PK#A62",
1515
+ + "sk": "SK#A62",
1516
+ + },
1517
+ + "PK#A63__SK#A63": Object {
1518
+ + "PK": "PK#A63",
1519
+ + "SK": "SK#A63",
1520
+ + "_docVersion": 0,
1521
+ + "_tag": "A",
1522
+ + "a": 63,
1523
+ + "pk": "PK#A63",
1524
+ + "sk": "SK#A63",
1525
+ + },
1526
+ + "PK#A64__SK#A64": Object {
1527
+ + "PK": "PK#A64",
1528
+ + "SK": "SK#A64",
1529
+ + "_docVersion": 0,
1530
+ + "_tag": "A",
1531
+ + "a": 64,
1532
+ + "pk": "PK#A64",
1533
+ + "sk": "SK#A64",
1534
+ + },
1535
+ + "PK#A65__SK#A65": Object {
1536
+ + "PK": "PK#A65",
1537
+ + "SK": "SK#A65",
1538
+ + "_docVersion": 0,
1539
+ + "_tag": "A",
1540
+ + "a": 65,
1541
+ + "pk": "PK#A65",
1542
+ + "sk": "SK#A65",
1543
+ + },
1544
+ + "PK#A66__SK#A66": Object {
1545
+ + "PK": "PK#A66",
1546
+ + "SK": "SK#A66",
1547
+ + "_docVersion": 0,
1548
+ + "_tag": "A",
1549
+ + "a": 66,
1550
+ + "pk": "PK#A66",
1551
+ + "sk": "SK#A66",
1552
+ + },
1553
+ + "PK#A67__SK#A67": Object {
1554
+ + "PK": "PK#A67",
1555
+ + "SK": "SK#A67",
1556
+ + "_docVersion": 0,
1557
+ + "_tag": "A",
1558
+ + "a": 67,
1559
+ + "pk": "PK#A67",
1560
+ + "sk": "SK#A67",
1561
+ + },
1562
+ + "PK#A68__SK#A68": Object {
1563
+ + "PK": "PK#A68",
1564
+ + "SK": "SK#A68",
1565
+ + "_docVersion": 0,
1566
+ + "_tag": "A",
1567
+ + "a": 68,
1568
+ + "pk": "PK#A68",
1569
+ + "sk": "SK#A68",
1570
+ + },
1571
+ + "PK#A69__SK#A69": Object {
1572
+ + "PK": "PK#A69",
1573
+ + "SK": "SK#A69",
1574
+ + "_docVersion": 0,
1575
+ + "_tag": "A",
1576
+ + "a": 69,
1577
+ + "pk": "PK#A69",
1578
+ + "sk": "SK#A69",
1579
+ + },
1172
1580
  + "PK#A6__SK#A6": Object {
1173
1581
  + "PK": "PK#A6",
1174
1582
  + "SK": "SK#A6",
@@ -1178,6 +1586,96 @@ describe("bulk", () => {
1178
1586
  + "pk": "PK#A6",
1179
1587
  + "sk": "SK#A6",
1180
1588
  + },
1589
+ + "PK#A70__SK#A70": Object {
1590
+ + "PK": "PK#A70",
1591
+ + "SK": "SK#A70",
1592
+ + "_docVersion": 0,
1593
+ + "_tag": "A",
1594
+ + "a": 70,
1595
+ + "pk": "PK#A70",
1596
+ + "sk": "SK#A70",
1597
+ + },
1598
+ + "PK#A71__SK#A71": Object {
1599
+ + "PK": "PK#A71",
1600
+ + "SK": "SK#A71",
1601
+ + "_docVersion": 0,
1602
+ + "_tag": "A",
1603
+ + "a": 71,
1604
+ + "pk": "PK#A71",
1605
+ + "sk": "SK#A71",
1606
+ + },
1607
+ + "PK#A72__SK#A72": Object {
1608
+ + "PK": "PK#A72",
1609
+ + "SK": "SK#A72",
1610
+ + "_docVersion": 0,
1611
+ + "_tag": "A",
1612
+ + "a": 72,
1613
+ + "pk": "PK#A72",
1614
+ + "sk": "SK#A72",
1615
+ + },
1616
+ + "PK#A73__SK#A73": Object {
1617
+ + "PK": "PK#A73",
1618
+ + "SK": "SK#A73",
1619
+ + "_docVersion": 0,
1620
+ + "_tag": "A",
1621
+ + "a": 73,
1622
+ + "pk": "PK#A73",
1623
+ + "sk": "SK#A73",
1624
+ + },
1625
+ + "PK#A74__SK#A74": Object {
1626
+ + "PK": "PK#A74",
1627
+ + "SK": "SK#A74",
1628
+ + "_docVersion": 0,
1629
+ + "_tag": "A",
1630
+ + "a": 74,
1631
+ + "pk": "PK#A74",
1632
+ + "sk": "SK#A74",
1633
+ + },
1634
+ + "PK#A75__SK#A75": Object {
1635
+ + "PK": "PK#A75",
1636
+ + "SK": "SK#A75",
1637
+ + "_docVersion": 0,
1638
+ + "_tag": "A",
1639
+ + "a": 75,
1640
+ + "pk": "PK#A75",
1641
+ + "sk": "SK#A75",
1642
+ + },
1643
+ + "PK#A76__SK#A76": Object {
1644
+ + "PK": "PK#A76",
1645
+ + "SK": "SK#A76",
1646
+ + "_docVersion": 0,
1647
+ + "_tag": "A",
1648
+ + "a": 76,
1649
+ + "pk": "PK#A76",
1650
+ + "sk": "SK#A76",
1651
+ + },
1652
+ + "PK#A77__SK#A77": Object {
1653
+ + "PK": "PK#A77",
1654
+ + "SK": "SK#A77",
1655
+ + "_docVersion": 0,
1656
+ + "_tag": "A",
1657
+ + "a": 77,
1658
+ + "pk": "PK#A77",
1659
+ + "sk": "SK#A77",
1660
+ + },
1661
+ + "PK#A78__SK#A78": Object {
1662
+ + "PK": "PK#A78",
1663
+ + "SK": "SK#A78",
1664
+ + "_docVersion": 0,
1665
+ + "_tag": "A",
1666
+ + "a": 78,
1667
+ + "pk": "PK#A78",
1668
+ + "sk": "SK#A78",
1669
+ + },
1670
+ + "PK#A79__SK#A79": Object {
1671
+ + "PK": "PK#A79",
1672
+ + "SK": "SK#A79",
1673
+ + "_docVersion": 0,
1674
+ + "_tag": "A",
1675
+ + "a": 79,
1676
+ + "pk": "PK#A79",
1677
+ + "sk": "SK#A79",
1678
+ + },
1181
1679
  + "PK#A7__SK#A7": Object {
1182
1680
  + "PK": "PK#A7",
1183
1681
  + "SK": "SK#A7",
@@ -1187,6 +1685,96 @@ describe("bulk", () => {
1187
1685
  + "pk": "PK#A7",
1188
1686
  + "sk": "SK#A7",
1189
1687
  + },
1688
+ + "PK#A80__SK#A80": Object {
1689
+ + "PK": "PK#A80",
1690
+ + "SK": "SK#A80",
1691
+ + "_docVersion": 0,
1692
+ + "_tag": "A",
1693
+ + "a": 80,
1694
+ + "pk": "PK#A80",
1695
+ + "sk": "SK#A80",
1696
+ + },
1697
+ + "PK#A81__SK#A81": Object {
1698
+ + "PK": "PK#A81",
1699
+ + "SK": "SK#A81",
1700
+ + "_docVersion": 0,
1701
+ + "_tag": "A",
1702
+ + "a": 81,
1703
+ + "pk": "PK#A81",
1704
+ + "sk": "SK#A81",
1705
+ + },
1706
+ + "PK#A82__SK#A82": Object {
1707
+ + "PK": "PK#A82",
1708
+ + "SK": "SK#A82",
1709
+ + "_docVersion": 0,
1710
+ + "_tag": "A",
1711
+ + "a": 82,
1712
+ + "pk": "PK#A82",
1713
+ + "sk": "SK#A82",
1714
+ + },
1715
+ + "PK#A83__SK#A83": Object {
1716
+ + "PK": "PK#A83",
1717
+ + "SK": "SK#A83",
1718
+ + "_docVersion": 0,
1719
+ + "_tag": "A",
1720
+ + "a": 83,
1721
+ + "pk": "PK#A83",
1722
+ + "sk": "SK#A83",
1723
+ + },
1724
+ + "PK#A84__SK#A84": Object {
1725
+ + "PK": "PK#A84",
1726
+ + "SK": "SK#A84",
1727
+ + "_docVersion": 0,
1728
+ + "_tag": "A",
1729
+ + "a": 84,
1730
+ + "pk": "PK#A84",
1731
+ + "sk": "SK#A84",
1732
+ + },
1733
+ + "PK#A85__SK#A85": Object {
1734
+ + "PK": "PK#A85",
1735
+ + "SK": "SK#A85",
1736
+ + "_docVersion": 0,
1737
+ + "_tag": "A",
1738
+ + "a": 85,
1739
+ + "pk": "PK#A85",
1740
+ + "sk": "SK#A85",
1741
+ + },
1742
+ + "PK#A86__SK#A86": Object {
1743
+ + "PK": "PK#A86",
1744
+ + "SK": "SK#A86",
1745
+ + "_docVersion": 0,
1746
+ + "_tag": "A",
1747
+ + "a": 86,
1748
+ + "pk": "PK#A86",
1749
+ + "sk": "SK#A86",
1750
+ + },
1751
+ + "PK#A87__SK#A87": Object {
1752
+ + "PK": "PK#A87",
1753
+ + "SK": "SK#A87",
1754
+ + "_docVersion": 0,
1755
+ + "_tag": "A",
1756
+ + "a": 87,
1757
+ + "pk": "PK#A87",
1758
+ + "sk": "SK#A87",
1759
+ + },
1760
+ + "PK#A88__SK#A88": Object {
1761
+ + "PK": "PK#A88",
1762
+ + "SK": "SK#A88",
1763
+ + "_docVersion": 0,
1764
+ + "_tag": "A",
1765
+ + "a": 88,
1766
+ + "pk": "PK#A88",
1767
+ + "sk": "SK#A88",
1768
+ + },
1769
+ + "PK#A89__SK#A89": Object {
1770
+ + "PK": "PK#A89",
1771
+ + "SK": "SK#A89",
1772
+ + "_docVersion": 0,
1773
+ + "_tag": "A",
1774
+ + "a": 89,
1775
+ + "pk": "PK#A89",
1776
+ + "sk": "SK#A89",
1777
+ + },
1190
1778
  + "PK#A8__SK#A8": Object {
1191
1779
  + "PK": "PK#A8",
1192
1780
  + "SK": "SK#A8",
@@ -1196,23 +1784,113 @@ describe("bulk", () => {
1196
1784
  + "pk": "PK#A8",
1197
1785
  + "sk": "SK#A8",
1198
1786
  + },
1787
+ + "PK#A90__SK#A90": Object {
1788
+ + "PK": "PK#A90",
1789
+ + "SK": "SK#A90",
1790
+ + "_docVersion": 0,
1791
+ + "_tag": "A",
1792
+ + "a": 90,
1793
+ + "pk": "PK#A90",
1794
+ + "sk": "SK#A90",
1795
+ + },
1796
+ + "PK#A91__SK#A91": Object {
1797
+ + "PK": "PK#A91",
1798
+ + "SK": "SK#A91",
1799
+ + "_docVersion": 0,
1800
+ + "_tag": "A",
1801
+ + "a": 91,
1802
+ + "pk": "PK#A91",
1803
+ + "sk": "SK#A91",
1804
+ + },
1805
+ + "PK#A92__SK#A92": Object {
1806
+ + "PK": "PK#A92",
1807
+ + "SK": "SK#A92",
1808
+ + "_docVersion": 0,
1809
+ + "_tag": "A",
1810
+ + "a": 92,
1811
+ + "pk": "PK#A92",
1812
+ + "sk": "SK#A92",
1813
+ + },
1814
+ + "PK#A93__SK#A93": Object {
1815
+ + "PK": "PK#A93",
1816
+ + "SK": "SK#A93",
1817
+ + "_docVersion": 0,
1818
+ + "_tag": "A",
1819
+ + "a": 93,
1820
+ + "pk": "PK#A93",
1821
+ + "sk": "SK#A93",
1822
+ + },
1823
+ + "PK#A94__SK#A94": Object {
1824
+ + "PK": "PK#A94",
1825
+ + "SK": "SK#A94",
1826
+ + "_docVersion": 0,
1827
+ + "_tag": "A",
1828
+ + "a": 94,
1829
+ + "pk": "PK#A94",
1830
+ + "sk": "SK#A94",
1831
+ + },
1832
+ + "PK#A95__SK#A95": Object {
1833
+ + "PK": "PK#A95",
1834
+ + "SK": "SK#A95",
1835
+ + "_docVersion": 0,
1836
+ + "_tag": "A",
1837
+ + "a": 95,
1838
+ + "pk": "PK#A95",
1839
+ + "sk": "SK#A95",
1840
+ + },
1841
+ + "PK#A96__SK#A96": Object {
1842
+ + "PK": "PK#A96",
1843
+ + "SK": "SK#A96",
1844
+ + "_docVersion": 0,
1845
+ + "_tag": "A",
1846
+ + "a": 96,
1847
+ + "pk": "PK#A96",
1848
+ + "sk": "SK#A96",
1849
+ + },
1850
+ + "PK#A97__SK#A97": Object {
1851
+ + "PK": "PK#A97",
1852
+ + "SK": "SK#A97",
1853
+ + "_docVersion": 0,
1854
+ + "_tag": "A",
1855
+ + "a": 97,
1856
+ + "pk": "PK#A97",
1857
+ + "sk": "SK#A97",
1858
+ + },
1859
+ + "PK#A98__SK#A98": Object {
1860
+ + "PK": "PK#A98",
1861
+ + "SK": "SK#A98",
1862
+ + "_docVersion": 0,
1863
+ + "_tag": "A",
1864
+ + "a": 98,
1865
+ + "pk": "PK#A98",
1866
+ + "sk": "SK#A98",
1867
+ + },
1868
+ + "PK#A99__SK#A99": Object {
1869
+ + "PK": "PK#A99",
1870
+ + "SK": "SK#A99",
1871
+ + "_docVersion": 0,
1872
+ + "_tag": "A",
1873
+ + "a": 99,
1874
+ + "pk": "PK#A99",
1875
+ + "sk": "SK#A99",
1876
+ + },
1199
1877
  + "PK#A9__SK#A9": Object {
1200
1878
  + "PK": "PK#A9",
1201
1879
  + "SK": "SK#A9",
1202
- + "_docVersion": 0,
1880
+ "_docVersion": 0,
1203
1881
  + "_tag": "A",
1204
1882
  + "a": 9,
1205
1883
  + "pk": "PK#A9",
1206
1884
  + "sk": "SK#A9",
1207
- },
1208
- - "PK#3__SK#3": Object {
1209
- - "PK": "PK#3",
1210
- - "SK": "SK#3",
1885
+ + },
1211
1886
  + "PK#UPDATE__SK#UPDATE": Object {
1212
1887
  + "PK": "PK#UPDATE",
1213
1888
  + "SK": "SK#UPDATE",
1214
1889
  + "_docVersion": 1,
1215
- + "_tag": "B",
1890
+ "_tag": "B",
1891
+ - "b": "bar",
1892
+ - "pk": "PK#3",
1893
+ - "sk": "SK#3",
1216
1894
  + "b": "baz",
1217
1895
  + "pk": "PK#UPDATE",
1218
1896
  + "sk": "SK#UPDATE",
@@ -1229,7 +1907,7 @@ describe("bulk", () => {
1229
1907
  + "PK5__PK5": Object {
1230
1908
  + "PK": "PK5",
1231
1909
  + "SK": "PK5",
1232
- "_docVersion": 0,
1910
+ + "_docVersion": 0,
1233
1911
  + "_tag": "A",
1234
1912
  + "a": 5,
1235
1913
  + "pk": "PK5",
@@ -1239,10 +1917,7 @@ describe("bulk", () => {
1239
1917
  + "PK": "PK6",
1240
1918
  + "SK": "SK6",
1241
1919
  + "_docVersion": 0,
1242
- "_tag": "B",
1243
- - "b": "bar",
1244
- - "pk": "PK#3",
1245
- - "sk": "SK#3",
1920
+ + "_tag": "B",
1246
1921
  + "b": "baz",
1247
1922
  + "pk": "PK6",
1248
1923
  + "sk": "SK6",
@@ -1255,9 +1930,9 @@ describe("bulk", () => {
1255
1930
  const before = yield sandbox.snapshot();
1256
1931
  yield expect(client.bulk([
1257
1932
  // Succeeds
1258
- ...Array.from({ length: 40 }).map((_, i) => new A({ pk: `PK#${i}`, sk: `SK#${i}`, a: i }).operation("put")),
1933
+ ...Array.from({ length: 110 }).map((_, i) => new A({ pk: `PK#${i}`, sk: `SK#${i}`, a: i }).operation("put")),
1259
1934
  // Fails
1260
- A.operation("condition", { PK: "nicetry", SK: "nope" }, { ConditionExpression: "attribute_exists(PK)" }),
1935
+ A.operation("condition", { PK: "nicetry", SK: "nope" }, { ConditionExpression: "attribute_exists(PK)" })
1261
1936
  ])).rejects.toBeInstanceOf(errors_1.BulkWriteTransactionError);
1262
1937
  expect(yield sandbox.snapshot()).toEqual(before);
1263
1938
  }));
@@ -1281,7 +1956,7 @@ describe("batchGet", () => {
1281
1956
  two: A.operation("get", { PK: "PK#2", SK: "SK#2" }),
1282
1957
  three: A.operation("get", { PK: "PK#3", SK: "SK#3" }),
1283
1958
  four: A.operation("get", { PK: "PK#4", SK: "SK#4" }),
1284
- duplicate: A.operation("get", { PK: "PK#1", SK: "SK#1" }),
1959
+ duplicate: A.operation("get", { PK: "PK#1", SK: "SK#1" })
1285
1960
  })).rejects.toBeInstanceOf(errors_1.ItemNotFoundError);
1286
1961
  }));
1287
1962
  test("it returns individual errors", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
@@ -1291,7 +1966,7 @@ describe("batchGet", () => {
1291
1966
  two: A.operation("get", { PK: "PK#2", SK: "SK#2" }),
1292
1967
  duplicate: A.operation("get", { PK: "PK#1", SK: "SK#1" }),
1293
1968
  error: A.operation("get", { PK: "PK#error", SK: "SK#error" }),
1294
- error2: A.operation("get", { PK: "PK#error2", SK: "SK#error2" }),
1969
+ error2: A.operation("get", { PK: "PK#error2", SK: "SK#error2" })
1295
1970
  }, { individualErrors: true });
1296
1971
  expect(result.one).toBeInstanceOf(A);
1297
1972
  expect(result.two).toBeInstanceOf(A);
@@ -1305,7 +1980,7 @@ describe("batchGet", () => {
1305
1980
  two: A.operation("get", { PK: "PK#2", SK: "SK#2" }),
1306
1981
  three: A.operation("get", { PK: "PK#3", SK: "SK#3" }),
1307
1982
  four: A.operation("get", { PK: "PK#4", SK: "SK#4" }),
1308
- duplicate: A.operation("get", { PK: "PK#1", SK: "SK#1" }),
1983
+ duplicate: A.operation("get", { PK: "PK#1", SK: "SK#1" })
1309
1984
  });
1310
1985
  expect(Object.fromEntries(Object.entries(results).map(([key, val]) => [key, val.values()]))).toMatchInlineSnapshot(`
1311
1986
  Object {
@@ -1351,20 +2026,20 @@ describe("load", () => {
1351
2026
  yield sandbox.seed(item);
1352
2027
  yield item.softDelete();
1353
2028
  const recovered = yield client.load(A.operation("get", { PK: "PK#1", SK: "SK#1" }), {
1354
- recover: true,
2029
+ recover: true
1355
2030
  });
1356
2031
  expect(recovered).toBeInstanceOf(A);
1357
2032
  expect(recovered.isDeleted).toBe(true);
1358
2033
  }));
1359
2034
  test("it throws if no item or soft deleted item exists", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
1360
2035
  yield expect(client.load(A.operation("get", { PK: "PK", SK: "SK" }), {
1361
- recover: true,
2036
+ recover: true
1362
2037
  })).rejects.toBeInstanceOf(errors_1.ItemNotFoundError);
1363
2038
  }));
1364
2039
  test("it returns null instead of throwing if no item or soft deleted item exists", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
1365
2040
  yield expect(client.load(A.operation("get", { PK: "PK", SK: "SK" }), {
1366
2041
  recover: true,
1367
- null: true,
2042
+ null: true
1368
2043
  })).resolves.toBeNull();
1369
2044
  }));
1370
2045
  test("it fetches >100 items", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
@@ -1415,8 +2090,8 @@ describe("load", () => {
1415
2090
  yield sandbox.seed(...items);
1416
2091
  const results = yield Promise.all(items.map(({ PK, SK }, i) => Union.load({ PK, SK })));
1417
2092
  expect(results.length).toBe(234);
1418
- expect(results.filter((item) => item instanceof C).length).toBe(123);
1419
- expect(results.filter((item) => item instanceof D).length).toBe(111);
2093
+ expect(results.filter(item => item instanceof C).length).toBe(123);
2094
+ expect(results.filter(item => item instanceof D).length).toBe(111);
1420
2095
  expect(spy).toHaveBeenCalledTimes(3);
1421
2096
  spy.mockReset();
1422
2097
  spy.mockRestore();
@@ -1461,8 +2136,8 @@ describe("loadMany", () => {
1461
2136
  yield sandbox.seed(...items);
1462
2137
  const results = yield Union.loadMany(items.map(({ PK, SK }) => ({ PK, SK })));
1463
2138
  expect(results.length).toBe(234);
1464
- expect(results.filter((item) => item instanceof C).length).toBe(123);
1465
- expect(results.filter((item) => item instanceof D).length).toBe(111);
2139
+ expect(results.filter(item => item instanceof C).length).toBe(123);
2140
+ expect(results.filter(item => item instanceof D).length).toBe(111);
1466
2141
  expect(spy).toHaveBeenCalledTimes(3);
1467
2142
  spy.mockReset();
1468
2143
  spy.mockRestore();
@@ -1477,7 +2152,7 @@ describe("paginate", () => {
1477
2152
  // Forwards
1478
2153
  const page1 = yield client.paginate(C, {}, {
1479
2154
  KeyConditionExpression: "PK = :pk",
1480
- ExpressionAttributeValues: { ":pk": "PK" },
2155
+ ExpressionAttributeValues: { ":pk": "PK" }
1481
2156
  });
1482
2157
  expect(page1.pageInfo).toMatchInlineSnapshot(`
1483
2158
  Object {
@@ -1492,7 +2167,7 @@ describe("paginate", () => {
1492
2167
  expect(page1.edges[19].node.c).toBe("19");
1493
2168
  const page2 = yield client.paginate(C, { after: page1.pageInfo.endCursor }, {
1494
2169
  KeyConditionExpression: "PK = :pk",
1495
- ExpressionAttributeValues: { ":pk": "PK" },
2170
+ ExpressionAttributeValues: { ":pk": "PK" }
1496
2171
  });
1497
2172
  expect(page2.pageInfo).toMatchInlineSnapshot(`
1498
2173
  Object {
@@ -1507,7 +2182,7 @@ describe("paginate", () => {
1507
2182
  expect(page2.edges[19].node.c).toBe("39");
1508
2183
  const page3 = yield client.paginate(C, { after: page2.pageInfo.endCursor }, {
1509
2184
  KeyConditionExpression: "PK = :pk",
1510
- ExpressionAttributeValues: { ":pk": "PK" },
2185
+ ExpressionAttributeValues: { ":pk": "PK" }
1511
2186
  });
1512
2187
  expect(page3.pageInfo).toMatchInlineSnapshot(`
1513
2188
  Object {
@@ -1523,7 +2198,7 @@ describe("paginate", () => {
1523
2198
  // Backwards
1524
2199
  const backwardsPage2 = yield client.paginate(C, { before: page3.pageInfo.startCursor }, {
1525
2200
  KeyConditionExpression: "PK = :pk",
1526
- ExpressionAttributeValues: { ":pk": "PK" },
2201
+ ExpressionAttributeValues: { ":pk": "PK" }
1527
2202
  });
1528
2203
  expect(backwardsPage2.pageInfo).toMatchInlineSnapshot(`
1529
2204
  Object {
@@ -1538,7 +2213,7 @@ describe("paginate", () => {
1538
2213
  expect(backwardsPage2.edges[19].node.c).toBe("39");
1539
2214
  const backwardsPage1 = yield client.paginate(C, { before: backwardsPage2.pageInfo.startCursor }, {
1540
2215
  KeyConditionExpression: "PK = :pk",
1541
- ExpressionAttributeValues: { ":pk": "PK" },
2216
+ ExpressionAttributeValues: { ":pk": "PK" }
1542
2217
  });
1543
2218
  expect(backwardsPage1.pageInfo).toMatchInlineSnapshot(`
1544
2219
  Object {
@@ -1560,7 +2235,7 @@ describe("paginate", () => {
1560
2235
  // Forwards
1561
2236
  const page1 = yield client.paginate(Union, {}, {
1562
2237
  KeyConditionExpression: "PK = :pk",
1563
- ExpressionAttributeValues: { ":pk": "PK" },
2238
+ ExpressionAttributeValues: { ":pk": "PK" }
1564
2239
  });
1565
2240
  expect(page1.pageInfo).toMatchInlineSnapshot(`
1566
2241
  Object {
@@ -1575,7 +2250,7 @@ describe("paginate", () => {
1575
2250
  expect(page1.edges[19].node.SK).toBe("019");
1576
2251
  const page2 = yield client.paginate(Union, { after: page1.pageInfo.endCursor }, {
1577
2252
  KeyConditionExpression: "PK = :pk",
1578
- ExpressionAttributeValues: { ":pk": "PK" },
2253
+ ExpressionAttributeValues: { ":pk": "PK" }
1579
2254
  });
1580
2255
  expect(page2.pageInfo).toMatchInlineSnapshot(`
1581
2256
  Object {
@@ -1590,7 +2265,7 @@ describe("paginate", () => {
1590
2265
  expect(page2.edges[19].node.SK).toBe("039");
1591
2266
  const page3 = yield client.paginate(Union, { after: page2.pageInfo.endCursor }, {
1592
2267
  KeyConditionExpression: "PK = :pk",
1593
- ExpressionAttributeValues: { ":pk": "PK" },
2268
+ ExpressionAttributeValues: { ":pk": "PK" }
1594
2269
  });
1595
2270
  expect(page3.pageInfo).toMatchInlineSnapshot(`
1596
2271
  Object {
@@ -1606,7 +2281,7 @@ describe("paginate", () => {
1606
2281
  // Backwards
1607
2282
  const backwardsPage2 = yield client.paginate(Union, { before: page3.pageInfo.startCursor }, {
1608
2283
  KeyConditionExpression: "PK = :pk",
1609
- ExpressionAttributeValues: { ":pk": "PK" },
2284
+ ExpressionAttributeValues: { ":pk": "PK" }
1610
2285
  });
1611
2286
  expect(backwardsPage2.pageInfo).toMatchInlineSnapshot(`
1612
2287
  Object {
@@ -1621,7 +2296,7 @@ describe("paginate", () => {
1621
2296
  expect(backwardsPage2.edges[19].node.SK).toBe("039");
1622
2297
  const backwardsPage1 = yield client.paginate(Union, { before: backwardsPage2.pageInfo.startCursor }, {
1623
2298
  KeyConditionExpression: "PK = :pk",
1624
- ExpressionAttributeValues: { ":pk": "PK" },
2299
+ ExpressionAttributeValues: { ":pk": "PK" }
1625
2300
  });
1626
2301
  expect(backwardsPage1.pageInfo).toMatchInlineSnapshot(`
1627
2302
  Object {
@@ -1641,7 +2316,7 @@ describe("paginate", () => {
1641
2316
  // Forwards
1642
2317
  const page = yield client.paginate(C, { first: 10 }, {
1643
2318
  KeyConditionExpression: "PK = :pk",
1644
- ExpressionAttributeValues: { ":pk": "PK" },
2319
+ ExpressionAttributeValues: { ":pk": "PK" }
1645
2320
  });
1646
2321
  expect(page.pageInfo).toMatchInlineSnapshot(`
1647
2322
  Object {
@@ -1661,7 +2336,7 @@ describe("paginate", () => {
1661
2336
  // Forwards
1662
2337
  const page1 = yield client.paginate(C, { first: 60 }, {
1663
2338
  KeyConditionExpression: "PK = :pk",
1664
- ExpressionAttributeValues: { ":pk": "PK" },
2339
+ ExpressionAttributeValues: { ":pk": "PK" }
1665
2340
  });
1666
2341
  expect(page1.pageInfo).toMatchInlineSnapshot(`
1667
2342
  Object {
@@ -1677,26 +2352,26 @@ describe("paginate", () => {
1677
2352
  }));
1678
2353
  test("it respects custom pagination default", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
1679
2354
  client.paginationOptions = {
1680
- default: 40,
2355
+ default: 40
1681
2356
  };
1682
2357
  const items = Array.from({ length: 50 }).map((_, i) => new C({ pk: "PK", sk: String(i).padStart(3, "0"), c: String(i) }));
1683
2358
  yield sandbox.seed(...items);
1684
2359
  const page = yield client.paginate(C, {}, {
1685
2360
  KeyConditionExpression: "PK = :pk",
1686
- ExpressionAttributeValues: { ":pk": "PK" },
2361
+ ExpressionAttributeValues: { ":pk": "PK" }
1687
2362
  });
1688
2363
  expect(page.edges.length).toBe(40);
1689
2364
  delete client.paginationOptions;
1690
2365
  }));
1691
2366
  test("it respects custom pagination limit", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
1692
2367
  client.paginationOptions = {
1693
- limit: 100,
2368
+ limit: 100
1694
2369
  };
1695
2370
  const items = Array.from({ length: 120 }).map((_, i) => new C({ pk: "PK", sk: String(i).padStart(3, "0"), c: String(i) }));
1696
2371
  yield sandbox.seed(...items);
1697
2372
  const page = yield client.paginate(C, { first: 110 }, {
1698
2373
  KeyConditionExpression: "PK = :pk",
1699
- ExpressionAttributeValues: { ":pk": "PK" },
2374
+ ExpressionAttributeValues: { ":pk": "PK" }
1700
2375
  });
1701
2376
  expect(page.edges.length).toBe(100);
1702
2377
  delete client.paginationOptions;
@@ -1709,7 +2384,7 @@ describe("paginate", () => {
1709
2384
  // Forwards
1710
2385
  const page1 = yield C.paginate({}, {
1711
2386
  KeyConditionExpression: "PK = :pk",
1712
- ExpressionAttributeValues: { ":pk": "PK" },
2387
+ ExpressionAttributeValues: { ":pk": "PK" }
1713
2388
  });
1714
2389
  expect(page1.pageInfo).toMatchInlineSnapshot(`
1715
2390
  Object {
@@ -1724,7 +2399,7 @@ describe("paginate", () => {
1724
2399
  expect(page1.edges[19].node.c).toBe("19");
1725
2400
  const page2 = yield C.paginate({ after: page1.pageInfo.endCursor }, {
1726
2401
  KeyConditionExpression: "PK = :pk",
1727
- ExpressionAttributeValues: { ":pk": "PK" },
2402
+ ExpressionAttributeValues: { ":pk": "PK" }
1728
2403
  });
1729
2404
  expect(page2.pageInfo).toMatchInlineSnapshot(`
1730
2405
  Object {
@@ -1739,7 +2414,7 @@ describe("paginate", () => {
1739
2414
  expect(page2.edges[19].node.c).toBe("39");
1740
2415
  const page3 = yield C.paginate({ after: page2.pageInfo.endCursor }, {
1741
2416
  KeyConditionExpression: "PK = :pk",
1742
- ExpressionAttributeValues: { ":pk": "PK" },
2417
+ ExpressionAttributeValues: { ":pk": "PK" }
1743
2418
  });
1744
2419
  expect(page3.pageInfo).toMatchInlineSnapshot(`
1745
2420
  Object {
@@ -1755,7 +2430,7 @@ describe("paginate", () => {
1755
2430
  // Backwards
1756
2431
  const backwardsPage2 = yield C.paginate({ before: page3.pageInfo.startCursor }, {
1757
2432
  KeyConditionExpression: "PK = :pk",
1758
- ExpressionAttributeValues: { ":pk": "PK" },
2433
+ ExpressionAttributeValues: { ":pk": "PK" }
1759
2434
  });
1760
2435
  expect(backwardsPage2.pageInfo).toMatchInlineSnapshot(`
1761
2436
  Object {
@@ -1770,7 +2445,7 @@ describe("paginate", () => {
1770
2445
  expect(backwardsPage2.edges[19].node.c).toBe("39");
1771
2446
  const backwardsPage1 = yield C.paginate({ before: backwardsPage2.pageInfo.startCursor }, {
1772
2447
  KeyConditionExpression: "PK = :pk",
1773
- ExpressionAttributeValues: { ":pk": "PK" },
2448
+ ExpressionAttributeValues: { ":pk": "PK" }
1774
2449
  });
1775
2450
  expect(backwardsPage1.pageInfo).toMatchInlineSnapshot(`
1776
2451
  Object {
@@ -1790,7 +2465,7 @@ describe("paginate", () => {
1790
2465
  // Forwards
1791
2466
  const page = yield C.paginate({ first: 10 }, {
1792
2467
  KeyConditionExpression: "PK = :pk",
1793
- ExpressionAttributeValues: { ":pk": "PK" },
2468
+ ExpressionAttributeValues: { ":pk": "PK" }
1794
2469
  });
1795
2470
  expect(page.pageInfo).toMatchInlineSnapshot(`
1796
2471
  Object {
@@ -1810,7 +2485,7 @@ describe("paginate", () => {
1810
2485
  // Forwards
1811
2486
  const page1 = yield C.paginate({ first: 60 }, {
1812
2487
  KeyConditionExpression: "PK = :pk",
1813
- ExpressionAttributeValues: { ":pk": "PK" },
2488
+ ExpressionAttributeValues: { ":pk": "PK" }
1814
2489
  });
1815
2490
  expect(page1.pageInfo).toMatchInlineSnapshot(`
1816
2491
  Object {
@@ -1826,26 +2501,26 @@ describe("paginate", () => {
1826
2501
  }));
1827
2502
  test("it respects custom pagination default", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
1828
2503
  client.paginationOptions = {
1829
- default: 40,
2504
+ default: 40
1830
2505
  };
1831
2506
  const items = Array.from({ length: 50 }).map((_, i) => new C({ pk: "PK", sk: String(i).padStart(3, "0"), c: String(i) }));
1832
2507
  yield sandbox.seed(...items);
1833
2508
  const page = yield C.paginate({}, {
1834
2509
  KeyConditionExpression: "PK = :pk",
1835
- ExpressionAttributeValues: { ":pk": "PK" },
2510
+ ExpressionAttributeValues: { ":pk": "PK" }
1836
2511
  });
1837
2512
  expect(page.edges.length).toBe(40);
1838
2513
  delete client.paginationOptions;
1839
2514
  }));
1840
2515
  test("it respects custom pagination limit", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
1841
2516
  client.paginationOptions = {
1842
- limit: 100,
2517
+ limit: 100
1843
2518
  };
1844
2519
  const items = Array.from({ length: 120 }).map((_, i) => new C({ pk: "PK", sk: String(i).padStart(3, "0"), c: String(i) }));
1845
2520
  yield sandbox.seed(...items);
1846
2521
  const page = yield C.paginate({ first: 110 }, {
1847
2522
  KeyConditionExpression: "PK = :pk",
1848
- ExpressionAttributeValues: { ":pk": "PK" },
2523
+ ExpressionAttributeValues: { ":pk": "PK" }
1849
2524
  });
1850
2525
  expect(page.edges.length).toBe(100);
1851
2526
  delete client.paginationOptions;
@@ -1860,7 +2535,7 @@ describe("paginate", () => {
1860
2535
  // Forwards
1861
2536
  const page1 = yield Union.paginate({}, {
1862
2537
  KeyConditionExpression: "PK = :pk",
1863
- ExpressionAttributeValues: { ":pk": "PK" },
2538
+ ExpressionAttributeValues: { ":pk": "PK" }
1864
2539
  });
1865
2540
  expect(page1.pageInfo).toMatchInlineSnapshot(`
1866
2541
  Object {
@@ -1875,7 +2550,7 @@ describe("paginate", () => {
1875
2550
  expect(page1.edges[19].node.SK).toBe("019");
1876
2551
  const page2 = yield Union.paginate({ after: page1.pageInfo.endCursor }, {
1877
2552
  KeyConditionExpression: "PK = :pk",
1878
- ExpressionAttributeValues: { ":pk": "PK" },
2553
+ ExpressionAttributeValues: { ":pk": "PK" }
1879
2554
  });
1880
2555
  expect(page2.pageInfo).toMatchInlineSnapshot(`
1881
2556
  Object {
@@ -1890,7 +2565,7 @@ describe("paginate", () => {
1890
2565
  expect(page2.edges[19].node.SK).toBe("039");
1891
2566
  const page3 = yield Union.paginate({ after: page2.pageInfo.endCursor }, {
1892
2567
  KeyConditionExpression: "PK = :pk",
1893
- ExpressionAttributeValues: { ":pk": "PK" },
2568
+ ExpressionAttributeValues: { ":pk": "PK" }
1894
2569
  });
1895
2570
  expect(page3.pageInfo).toMatchInlineSnapshot(`
1896
2571
  Object {
@@ -1906,7 +2581,7 @@ describe("paginate", () => {
1906
2581
  // Backwards
1907
2582
  const backwardsPage2 = yield Union.paginate({ before: page3.pageInfo.startCursor }, {
1908
2583
  KeyConditionExpression: "PK = :pk",
1909
- ExpressionAttributeValues: { ":pk": "PK" },
2584
+ ExpressionAttributeValues: { ":pk": "PK" }
1910
2585
  });
1911
2586
  expect(backwardsPage2.pageInfo).toMatchInlineSnapshot(`
1912
2587
  Object {
@@ -1921,7 +2596,7 @@ describe("paginate", () => {
1921
2596
  expect(backwardsPage2.edges[19].node.SK).toBe("039");
1922
2597
  const backwardsPage1 = yield Union.paginate({ before: backwardsPage2.pageInfo.startCursor }, {
1923
2598
  KeyConditionExpression: "PK = :pk",
1924
- ExpressionAttributeValues: { ":pk": "PK" },
2599
+ ExpressionAttributeValues: { ":pk": "PK" }
1925
2600
  });
1926
2601
  expect(backwardsPage1.pageInfo).toMatchInlineSnapshot(`
1927
2602
  Object {
@@ -1943,7 +2618,7 @@ describe("paginate", () => {
1943
2618
  // Forwards
1944
2619
  const page = yield Union.paginate({ first: 10 }, {
1945
2620
  KeyConditionExpression: "PK = :pk",
1946
- ExpressionAttributeValues: { ":pk": "PK" },
2621
+ ExpressionAttributeValues: { ":pk": "PK" }
1947
2622
  });
1948
2623
  expect(page.pageInfo).toMatchInlineSnapshot(`
1949
2624
  Object {
@@ -1965,7 +2640,7 @@ describe("paginate", () => {
1965
2640
  // Forwards
1966
2641
  const page1 = yield Union.paginate({ first: 60 }, {
1967
2642
  KeyConditionExpression: "PK = :pk",
1968
- ExpressionAttributeValues: { ":pk": "PK" },
2643
+ ExpressionAttributeValues: { ":pk": "PK" }
1969
2644
  });
1970
2645
  expect(page1.pageInfo).toMatchInlineSnapshot(`
1971
2646
  Object {
@@ -1981,50 +2656,55 @@ describe("paginate", () => {
1981
2656
  }));
1982
2657
  test("it respects custom pagination default", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
1983
2658
  client.paginationOptions = {
1984
- default: 40,
2659
+ default: 40
1985
2660
  };
1986
2661
  const items = Array.from({ length: 50 }).map((_, i) => i > 30
1987
2662
  ? new C({
1988
2663
  pk: "PK",
1989
2664
  sk: String(i).padStart(3, "0"),
1990
- c: String(i),
2665
+ c: String(i)
1991
2666
  })
1992
2667
  : new D({
1993
2668
  pk: "PK",
1994
2669
  sk: String(i).padStart(3, "0"),
1995
- d: String(i),
2670
+ d: String(i)
1996
2671
  }));
1997
2672
  yield sandbox.seed(...items);
1998
2673
  const page = yield Union.paginate({}, {
1999
2674
  KeyConditionExpression: "PK = :pk",
2000
- ExpressionAttributeValues: { ":pk": "PK" },
2675
+ ExpressionAttributeValues: { ":pk": "PK" }
2001
2676
  });
2002
2677
  expect(page.edges.length).toBe(40);
2003
2678
  delete client.paginationOptions;
2004
2679
  }));
2005
2680
  test("it respects custom pagination limit", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
2006
2681
  client.paginationOptions = {
2007
- limit: 100,
2682
+ limit: 100
2008
2683
  };
2009
2684
  const items = Array.from({ length: 110 }).map((_, i) => i > 30
2010
2685
  ? new C({
2011
2686
  pk: "PK",
2012
2687
  sk: String(i).padStart(3, "0"),
2013
- c: String(i),
2688
+ c: String(i)
2014
2689
  })
2015
2690
  : new D({
2016
2691
  pk: "PK",
2017
2692
  sk: String(i).padStart(3, "0"),
2018
- d: String(i),
2693
+ d: String(i)
2019
2694
  }));
2020
2695
  yield sandbox.seed(...items);
2021
2696
  const page = yield Union.paginate({ first: 110 }, {
2022
2697
  KeyConditionExpression: "PK = :pk",
2023
- ExpressionAttributeValues: { ":pk": "PK" },
2698
+ ExpressionAttributeValues: { ":pk": "PK" }
2024
2699
  });
2025
2700
  expect(page.edges.length).toBe(100);
2026
2701
  delete client.paginationOptions;
2027
2702
  }));
2028
2703
  });
2029
2704
  });
2705
+ describe("sandbox", () => {
2706
+ test("it seeds a lot of items", () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
2707
+ yield sandbox.seed(...Array.from({ length: 3000 }).map((_, i) => new A({ pk: "PK", sk: String(i).padStart(3, "0"), a: i })));
2708
+ }));
2709
+ });
2030
2710
  //# sourceMappingURL=client.test.js.map