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