@aws-sdk/util-dynamodb 3.32.0 → 3.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/dist-cjs/convertToAttr.js +168 -0
  3. package/dist-cjs/convertToNative.js +63 -0
  4. package/dist-cjs/index.js +8 -0
  5. package/dist-cjs/marshall.js +6 -0
  6. package/dist-cjs/models.js +2 -0
  7. package/dist-cjs/unmarshall.js +6 -0
  8. package/dist-es/convertToAttr.js +176 -0
  9. package/dist-es/convertToNative.js +76 -0
  10. package/{dist/types/index.d.ts → dist-es/index.js} +0 -0
  11. package/dist-es/marshall.js +2 -0
  12. package/dist-es/models.js +1 -0
  13. package/dist-es/unmarshall.js +4 -0
  14. package/{dist/types → dist-types}/convertToAttr.d.ts +0 -0
  15. package/{dist/types → dist-types}/convertToNative.d.ts +0 -0
  16. package/{src/index.ts → dist-types/index.d.ts} +0 -0
  17. package/{dist/types → dist-types}/marshall.d.ts +0 -0
  18. package/{dist/types → dist-types}/models.d.ts +0 -0
  19. package/{dist/types → dist-types}/ts3.4/convertToAttr.d.ts +0 -0
  20. package/{dist/types → dist-types}/ts3.4/convertToNative.d.ts +0 -0
  21. package/{dist/types → dist-types}/ts3.4/index.d.ts +0 -0
  22. package/{dist/types → dist-types}/ts3.4/marshall.d.ts +0 -0
  23. package/{dist/types → dist-types}/ts3.4/models.d.ts +0 -0
  24. package/{dist/types → dist-types}/ts3.4/unmarshall.d.ts +0 -0
  25. package/{dist/types → dist-types}/unmarshall.d.ts +0 -0
  26. package/package.json +13 -9
  27. package/dist/cjs/convertToAttr.js +0 -181
  28. package/dist/cjs/convertToNative.js +0 -71
  29. package/dist/cjs/index.js +0 -9
  30. package/dist/cjs/marshall.js +0 -13
  31. package/dist/cjs/models.js +0 -3
  32. package/dist/cjs/unmarshall.js +0 -13
  33. package/dist/es/convertToAttr.js +0 -189
  34. package/dist/es/convertToNative.js +0 -84
  35. package/dist/es/index.js +0 -6
  36. package/dist/es/marshall.js +0 -9
  37. package/dist/es/models.js +0 -2
  38. package/dist/es/unmarshall.js +0 -11
  39. package/src/convertToAttr.ts +0 -190
  40. package/src/convertToNative.ts +0 -82
  41. package/src/marshall.ts +0 -33
  42. package/src/models.ts +0 -46
  43. package/src/unmarshall.ts +0 -27
  44. package/tsconfig.cjs.json +0 -10
  45. package/tsconfig.es.json +0 -11
@@ -1,84 +0,0 @@
1
- import { __assign, __read, __values } from "tslib";
2
- /**
3
- * Convert a DynamoDB AttributeValue object to its equivalent JavaScript type.
4
- *
5
- * @param {AttributeValue} data - The DynamoDB record to convert to JavaScript type.
6
- * @param {unmarshallOptions} options - An optional configuration object for `convertToNative`.
7
- */
8
- export var convertToNative = function (data, options) {
9
- var e_1, _a;
10
- try {
11
- for (var _b = __values(Object.entries(data)), _c = _b.next(); !_c.done; _c = _b.next()) {
12
- var _d = __read(_c.value, 2), key = _d[0], value = _d[1];
13
- if (value !== undefined) {
14
- switch (key) {
15
- case "NULL":
16
- return null;
17
- case "BOOL":
18
- return Boolean(value);
19
- case "N":
20
- return convertNumber(value, options);
21
- case "B":
22
- return convertBinary(value);
23
- case "S":
24
- return convertString(value);
25
- case "L":
26
- return convertList(value, options);
27
- case "M":
28
- return convertMap(value, options);
29
- case "NS":
30
- return new Set(value.map(function (item) { return convertNumber(item, options); }));
31
- case "BS":
32
- return new Set(value.map(convertBinary));
33
- case "SS":
34
- return new Set(value.map(convertString));
35
- default:
36
- throw new Error("Unsupported type passed: " + key);
37
- }
38
- }
39
- }
40
- }
41
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
42
- finally {
43
- try {
44
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
45
- }
46
- finally { if (e_1) throw e_1.error; }
47
- }
48
- throw new Error("No value defined: " + JSON.stringify(data));
49
- };
50
- var convertNumber = function (numString, options) {
51
- if (options === null || options === void 0 ? void 0 : options.wrapNumbers) {
52
- return { value: numString };
53
- }
54
- var num = Number(numString);
55
- var infinityValues = [Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY];
56
- if ((num > Number.MAX_SAFE_INTEGER || num < Number.MIN_SAFE_INTEGER) && !infinityValues.includes(num)) {
57
- if (typeof BigInt === "function") {
58
- try {
59
- return BigInt(numString);
60
- }
61
- catch (error) {
62
- throw new Error(numString + " can't be converted to BigInt. Set options.wrapNumbers to get string value.");
63
- }
64
- }
65
- else {
66
- throw new Error(numString + " is outside SAFE_INTEGER bounds. Set options.wrapNumbers to get string value.");
67
- }
68
- }
69
- return num;
70
- };
71
- // For future-proofing: Functions from scalar value as well as set value
72
- var convertString = function (stringValue) { return stringValue; };
73
- var convertBinary = function (binaryValue) { return binaryValue; };
74
- var convertList = function (list, options) {
75
- return list.map(function (item) { return convertToNative(item, options); });
76
- };
77
- var convertMap = function (map, options) {
78
- return Object.entries(map).reduce(function (acc, _a) {
79
- var _b;
80
- var _c = __read(_a, 2), key = _c[0], value = _c[1];
81
- return (__assign(__assign({}, acc), (_b = {}, _b[key] = convertToNative(value, options), _b)));
82
- }, {});
83
- };
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydFRvTmF0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnZlcnRUb05hdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBS0E7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsSUFBTSxlQUFlLEdBQUcsVUFBQyxJQUFvQixFQUFFLE9BQTJCOzs7UUFDL0UsS0FBMkIsSUFBQSxLQUFBLFNBQUEsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQSxnQkFBQSw0QkFBRTtZQUF0QyxJQUFBLEtBQUEsbUJBQVksRUFBWCxHQUFHLFFBQUEsRUFBRSxLQUFLLFFBQUE7WUFDcEIsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO2dCQUN2QixRQUFRLEdBQUcsRUFBRTtvQkFDWCxLQUFLLE1BQU07d0JBQ1QsT0FBTyxJQUFJLENBQUM7b0JBQ2QsS0FBSyxNQUFNO3dCQUNULE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUN4QixLQUFLLEdBQUc7d0JBQ04sT0FBTyxhQUFhLENBQUMsS0FBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDO29CQUNqRCxLQUFLLEdBQUc7d0JBQ04sT0FBTyxhQUFhLENBQUMsS0FBbUIsQ0FBQyxDQUFDO29CQUM1QyxLQUFLLEdBQUc7d0JBQ04sT0FBTyxhQUFhLENBQUMsS0FBZSxDQUFDLENBQUM7b0JBQ3hDLEtBQUssR0FBRzt3QkFDTixPQUFPLFdBQVcsQ0FBQyxLQUF5QixFQUFFLE9BQU8sQ0FBQyxDQUFDO29CQUN6RCxLQUFLLEdBQUc7d0JBQ04sT0FBTyxVQUFVLENBQUMsS0FBMEMsRUFBRSxPQUFPLENBQUMsQ0FBQztvQkFDekUsS0FBSyxJQUFJO3dCQUNQLE9BQU8sSUFBSSxHQUFHLENBQUUsS0FBa0IsQ0FBQyxHQUFHLENBQUMsVUFBQyxJQUFJLElBQUssT0FBQSxhQUFhLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxFQUE1QixDQUE0QixDQUFDLENBQUMsQ0FBQztvQkFDbEYsS0FBSyxJQUFJO3dCQUNQLE9BQU8sSUFBSSxHQUFHLENBQUUsS0FBc0IsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztvQkFDN0QsS0FBSyxJQUFJO3dCQUNQLE9BQU8sSUFBSSxHQUFHLENBQUUsS0FBa0IsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztvQkFDekQ7d0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBNEIsR0FBSyxDQUFDLENBQUM7aUJBQ3REO2FBQ0Y7U0FDRjs7Ozs7Ozs7O0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBcUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUcsQ0FBQyxDQUFDO0FBQy9ELENBQUMsQ0FBQztBQUVGLElBQU0sYUFBYSxHQUFHLFVBQUMsU0FBaUIsRUFBRSxPQUEyQjtJQUNuRSxJQUFJLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxXQUFXLEVBQUU7UUFDeEIsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQztLQUM3QjtJQUVELElBQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5QixJQUFNLGNBQWMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUM1RSxJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsSUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3JHLElBQUksT0FBTyxNQUFNLEtBQUssVUFBVSxFQUFFO1lBQ2hDLElBQUk7Z0JBQ0YsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDMUI7WUFBQyxPQUFPLEtBQUssRUFBRTtnQkFDZCxNQUFNLElBQUksS0FBSyxDQUFJLFNBQVMsZ0ZBQTZFLENBQUMsQ0FBQzthQUM1RztTQUNGO2FBQU07WUFDTCxNQUFNLElBQUksS0FBSyxDQUFJLFNBQVMsa0ZBQStFLENBQUMsQ0FBQztTQUM5RztLQUNGO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDLENBQUM7QUFFRix3RUFBd0U7QUFDeEUsSUFBTSxhQUFhLEdBQUcsVUFBQyxXQUFtQixJQUFhLE9BQUEsV0FBVyxFQUFYLENBQVcsQ0FBQztBQUNuRSxJQUFNLGFBQWEsR0FBRyxVQUFDLFdBQXVCLElBQWlCLE9BQUEsV0FBVyxFQUFYLENBQVcsQ0FBQztBQUUzRSxJQUFNLFdBQVcsR0FBRyxVQUFDLElBQXNCLEVBQUUsT0FBMkI7SUFDdEUsT0FBQSxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQUMsSUFBSSxJQUFLLE9BQUEsZUFBZSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsRUFBOUIsQ0FBOEIsQ0FBQztBQUFsRCxDQUFrRCxDQUFDO0FBRXJELElBQU0sVUFBVSxHQUFHLFVBQ2pCLEdBQXNDLEVBQ3RDLE9BQTJCO0lBRTNCLE9BQUEsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQ3hCLFVBQUMsR0FBNEMsRUFBRSxFQUFzQzs7WUFBdEMsS0FBQSxhQUFzQyxFQUFyQyxHQUFHLFFBQUEsRUFBRSxLQUFLLFFBQUE7UUFBZ0MsT0FBQSx1QkFDckYsR0FBRyxnQkFDTCxHQUFHLElBQUcsZUFBZSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsT0FDdEM7SUFId0YsQ0FHeEYsRUFDRixFQUFFLENBQ0g7QUFORCxDQU1DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdHRyaWJ1dGVWYWx1ZSB9IGZyb20gXCJAYXdzLXNkay9jbGllbnQtZHluYW1vZGJcIjtcblxuaW1wb3J0IHsgTmF0aXZlQXR0cmlidXRlVmFsdWUsIE51bWJlclZhbHVlIH0gZnJvbSBcIi4vbW9kZWxzXCI7XG5pbXBvcnQgeyB1bm1hcnNoYWxsT3B0aW9ucyB9IGZyb20gXCIuL3VubWFyc2hhbGxcIjtcblxuLyoqXG4gKiBDb252ZXJ0IGEgRHluYW1vREIgQXR0cmlidXRlVmFsdWUgb2JqZWN0IHRvIGl0cyBlcXVpdmFsZW50IEphdmFTY3JpcHQgdHlwZS5cbiAqXG4gKiBAcGFyYW0ge0F0dHJpYnV0ZVZhbHVlfSBkYXRhIC0gVGhlIER5bmFtb0RCIHJlY29yZCB0byBjb252ZXJ0IHRvIEphdmFTY3JpcHQgdHlwZS5cbiAqIEBwYXJhbSB7dW5tYXJzaGFsbE9wdGlvbnN9IG9wdGlvbnMgLSBBbiBvcHRpb25hbCBjb25maWd1cmF0aW9uIG9iamVjdCBmb3IgYGNvbnZlcnRUb05hdGl2ZWAuXG4gKi9cbmV4cG9ydCBjb25zdCBjb252ZXJ0VG9OYXRpdmUgPSAoZGF0YTogQXR0cmlidXRlVmFsdWUsIG9wdGlvbnM/OiB1bm1hcnNoYWxsT3B0aW9ucyk6IE5hdGl2ZUF0dHJpYnV0ZVZhbHVlID0+IHtcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZGF0YSkpIHtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgY2FzZSBcIk5VTExcIjpcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgY2FzZSBcIkJPT0xcIjpcbiAgICAgICAgICByZXR1cm4gQm9vbGVhbih2YWx1ZSk7XG4gICAgICAgIGNhc2UgXCJOXCI6XG4gICAgICAgICAgcmV0dXJuIGNvbnZlcnROdW1iZXIodmFsdWUgYXMgc3RyaW5nLCBvcHRpb25zKTtcbiAgICAgICAgY2FzZSBcIkJcIjpcbiAgICAgICAgICByZXR1cm4gY29udmVydEJpbmFyeSh2YWx1ZSBhcyBVaW50OEFycmF5KTtcbiAgICAgICAgY2FzZSBcIlNcIjpcbiAgICAgICAgICByZXR1cm4gY29udmVydFN0cmluZyh2YWx1ZSBhcyBzdHJpbmcpO1xuICAgICAgICBjYXNlIFwiTFwiOlxuICAgICAgICAgIHJldHVybiBjb252ZXJ0TGlzdCh2YWx1ZSBhcyBBdHRyaWJ1dGVWYWx1ZVtdLCBvcHRpb25zKTtcbiAgICAgICAgY2FzZSBcIk1cIjpcbiAgICAgICAgICByZXR1cm4gY29udmVydE1hcCh2YWx1ZSBhcyB7IFtrZXk6IHN0cmluZ106IEF0dHJpYnV0ZVZhbHVlIH0sIG9wdGlvbnMpO1xuICAgICAgICBjYXNlIFwiTlNcIjpcbiAgICAgICAgICByZXR1cm4gbmV3IFNldCgodmFsdWUgYXMgc3RyaW5nW10pLm1hcCgoaXRlbSkgPT4gY29udmVydE51bWJlcihpdGVtLCBvcHRpb25zKSkpO1xuICAgICAgICBjYXNlIFwiQlNcIjpcbiAgICAgICAgICByZXR1cm4gbmV3IFNldCgodmFsdWUgYXMgVWludDhBcnJheVtdKS5tYXAoY29udmVydEJpbmFyeSkpO1xuICAgICAgICBjYXNlIFwiU1NcIjpcbiAgICAgICAgICByZXR1cm4gbmV3IFNldCgodmFsdWUgYXMgc3RyaW5nW10pLm1hcChjb252ZXJ0U3RyaW5nKSk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCB0eXBlIHBhc3NlZDogJHtrZXl9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHRocm93IG5ldyBFcnJvcihgTm8gdmFsdWUgZGVmaW5lZDogJHtKU09OLnN0cmluZ2lmeShkYXRhKX1gKTtcbn07XG5cbmNvbnN0IGNvbnZlcnROdW1iZXIgPSAobnVtU3RyaW5nOiBzdHJpbmcsIG9wdGlvbnM/OiB1bm1hcnNoYWxsT3B0aW9ucyk6IG51bWJlciB8IGJpZ2ludCB8IE51bWJlclZhbHVlID0+IHtcbiAgaWYgKG9wdGlvbnM/LndyYXBOdW1iZXJzKSB7XG4gICAgcmV0dXJuIHsgdmFsdWU6IG51bVN0cmluZyB9O1xuICB9XG5cbiAgY29uc3QgbnVtID0gTnVtYmVyKG51bVN0cmluZyk7XG4gIGNvbnN0IGluZmluaXR5VmFsdWVzID0gW051bWJlci5QT1NJVElWRV9JTkZJTklUWSwgTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZXTtcbiAgaWYgKChudW0gPiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiB8fCBudW0gPCBOdW1iZXIuTUlOX1NBRkVfSU5URUdFUikgJiYgIWluZmluaXR5VmFsdWVzLmluY2x1ZGVzKG51bSkpIHtcbiAgICBpZiAodHlwZW9mIEJpZ0ludCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gQmlnSW50KG51bVN0cmluZyk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7bnVtU3RyaW5nfSBjYW4ndCBiZSBjb252ZXJ0ZWQgdG8gQmlnSW50LiBTZXQgb3B0aW9ucy53cmFwTnVtYmVycyB0byBnZXQgc3RyaW5nIHZhbHVlLmApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7bnVtU3RyaW5nfSBpcyBvdXRzaWRlIFNBRkVfSU5URUdFUiBib3VuZHMuIFNldCBvcHRpb25zLndyYXBOdW1iZXJzIHRvIGdldCBzdHJpbmcgdmFsdWUuYCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBudW07XG59O1xuXG4vLyBGb3IgZnV0dXJlLXByb29maW5nOiBGdW5jdGlvbnMgZnJvbSBzY2FsYXIgdmFsdWUgYXMgd2VsbCBhcyBzZXQgdmFsdWVcbmNvbnN0IGNvbnZlcnRTdHJpbmcgPSAoc3RyaW5nVmFsdWU6IHN0cmluZyk6IHN0cmluZyA9PiBzdHJpbmdWYWx1ZTtcbmNvbnN0IGNvbnZlcnRCaW5hcnkgPSAoYmluYXJ5VmFsdWU6IFVpbnQ4QXJyYXkpOiBVaW50OEFycmF5ID0+IGJpbmFyeVZhbHVlO1xuXG5jb25zdCBjb252ZXJ0TGlzdCA9IChsaXN0OiBBdHRyaWJ1dGVWYWx1ZVtdLCBvcHRpb25zPzogdW5tYXJzaGFsbE9wdGlvbnMpOiBOYXRpdmVBdHRyaWJ1dGVWYWx1ZVtdID0+XG4gIGxpc3QubWFwKChpdGVtKSA9PiBjb252ZXJ0VG9OYXRpdmUoaXRlbSwgb3B0aW9ucykpO1xuXG5jb25zdCBjb252ZXJ0TWFwID0gKFxuICBtYXA6IHsgW2tleTogc3RyaW5nXTogQXR0cmlidXRlVmFsdWUgfSxcbiAgb3B0aW9ucz86IHVubWFyc2hhbGxPcHRpb25zXG4pOiB7IFtrZXk6IHN0cmluZ106IE5hdGl2ZUF0dHJpYnV0ZVZhbHVlIH0gPT5cbiAgT2JqZWN0LmVudHJpZXMobWFwKS5yZWR1Y2UoXG4gICAgKGFjYzogeyBba2V5OiBzdHJpbmddOiBOYXRpdmVBdHRyaWJ1dGVWYWx1ZSB9LCBba2V5LCB2YWx1ZV06IFtzdHJpbmcsIEF0dHJpYnV0ZVZhbHVlXSkgPT4gKHtcbiAgICAgIC4uLmFjYyxcbiAgICAgIFtrZXldOiBjb252ZXJ0VG9OYXRpdmUodmFsdWUsIG9wdGlvbnMpLFxuICAgIH0pLFxuICAgIHt9XG4gICk7XG4iXX0=
package/dist/es/index.js DELETED
@@ -1,6 +0,0 @@
1
- export * from "./convertToAttr";
2
- export * from "./convertToNative";
3
- export * from "./marshall";
4
- export * from "./models";
5
- export * from "./unmarshall";
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vY29udmVydFRvQXR0clwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29udmVydFRvTmF0aXZlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9tYXJzaGFsbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbW9kZWxzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91bm1hcnNoYWxsXCI7XG4iXX0=
@@ -1,9 +0,0 @@
1
- import { convertToAttr } from "./convertToAttr";
2
- /**
3
- * Convert a JavaScript object into a DynamoDB record.
4
- *
5
- * @param {any} data - The data to convert to a DynamoDB record
6
- * @param {marshallOptions} options - An optional configuration object for `marshall`
7
- */
8
- export var marshall = function (data, options) { return convertToAttr(data, options).M; };
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyc2hhbGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWFyc2hhbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBcUJoRDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxJQUFNLFFBQVEsR0FBRyxVQUN0QixJQUFPLEVBQ1AsT0FBeUIsSUFDYSxPQUFBLGFBQWEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBc0MsRUFBbkUsQ0FBbUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF0dHJpYnV0ZVZhbHVlIH0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1keW5hbW9kYlwiO1xuXG5pbXBvcnQgeyBjb252ZXJ0VG9BdHRyIH0gZnJvbSBcIi4vY29udmVydFRvQXR0clwiO1xuaW1wb3J0IHsgTmF0aXZlQXR0cmlidXRlVmFsdWUgfSBmcm9tIFwiLi9tb2RlbHNcIjtcblxuLyoqXG4gKiBBbiBvcHRpb25hbCBjb25maWd1cmF0aW9uIG9iamVjdCBmb3IgYG1hcnNoYWxsYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIG1hcnNoYWxsT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGF1dG9tYXRpY2FsbHkgY29udmVydCBlbXB0eSBzdHJpbmdzLCBibG9icywgYW5kIHNldHMgdG8gYG51bGxgXG4gICAqL1xuICBjb252ZXJ0RW1wdHlWYWx1ZXM/OiBib29sZWFuO1xuICAvKipcbiAgICogV2hldGhlciB0byByZW1vdmUgdW5kZWZpbmVkIHZhbHVlcyB3aGlsZSBtYXJzaGFsbGluZy5cbiAgICovXG4gIHJlbW92ZVVuZGVmaW5lZFZhbHVlcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGNvbnZlcnQgdHlwZW9mIG9iamVjdCB0byBtYXAgYXR0cmlidXRlLlxuICAgKi9cbiAgY29udmVydENsYXNzSW5zdGFuY2VUb01hcD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29udmVydCBhIEphdmFTY3JpcHQgb2JqZWN0IGludG8gYSBEeW5hbW9EQiByZWNvcmQuXG4gKlxuICogQHBhcmFtIHthbnl9IGRhdGEgLSBUaGUgZGF0YSB0byBjb252ZXJ0IHRvIGEgRHluYW1vREIgcmVjb3JkXG4gKiBAcGFyYW0ge21hcnNoYWxsT3B0aW9uc30gb3B0aW9ucyAtIEFuIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGZvciBgbWFyc2hhbGxgXG4gKi9cbmV4cG9ydCBjb25zdCBtYXJzaGFsbCA9IDxUIGV4dGVuZHMgeyBbSyBpbiBrZXlvZiBUXTogTmF0aXZlQXR0cmlidXRlVmFsdWUgfT4oXG4gIGRhdGE6IFQsXG4gIG9wdGlvbnM/OiBtYXJzaGFsbE9wdGlvbnNcbik6IHsgW2tleTogc3RyaW5nXTogQXR0cmlidXRlVmFsdWUgfSA9PiBjb252ZXJ0VG9BdHRyKGRhdGEsIG9wdGlvbnMpLk0gYXMgeyBba2V5OiBzdHJpbmddOiBBdHRyaWJ1dGVWYWx1ZSB9O1xuIl19
package/dist/es/models.js DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBIGludGVyZmFjZSByZWNvZ25pemFibGUgYXMgYSBudW1lcmljIHZhbHVlIHRoYXQgc3RvcmVzIHRoZSB1bmRlcmx5aW5nIG51bWJlclxuICogYXMgYSBzdHJpbmcuXG4gKlxuICogSW50ZW5kZWQgdG8gYmUgYSBkZXNlcmlhbGl6YXRpb24gdGFyZ2V0IGZvciB0aGUgRHluYW1vREIgRG9jdW1lbnQgQ2xpZW50IHdoZW5cbiAqIHRoZSBgd3JhcE51bWJlcnNgIGZsYWcgaXMgc2V0LiBUaGlzIGFsbG93cyBmb3IgbnVtZXJpYyB2YWx1ZXMgdGhhdCBsb3NlXG4gKiBwcmVjaXNpb24gd2hlbiBjb252ZXJ0ZWQgdG8gSmF2YVNjcmlwdCdzIGBudW1iZXJgIHR5cGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTnVtYmVyVmFsdWUge1xuICByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBOYXRpdmVBdHRyaWJ1dGVWYWx1ZSA9XG4gIHwgTmF0aXZlU2NhbGFyQXR0cmlidXRlVmFsdWVcbiAgfCB7IFtrZXk6IHN0cmluZ106IE5hdGl2ZUF0dHJpYnV0ZVZhbHVlIH1cbiAgfCBOYXRpdmVBdHRyaWJ1dGVWYWx1ZVtdXG4gIHwgU2V0PG51bWJlciB8IGJpZ2ludCB8IE51bWJlclZhbHVlIHwgc3RyaW5nIHwgTmF0aXZlQXR0cmlidXRlQmluYXJ5IHwgdW5kZWZpbmVkPlxuICB8IEluc3RhbmNlVHlwZTx7IG5ldyAoLi4uYXJnczogYW55W10pOiBhbnkgfT47IC8vIGFjY2VwdHMgYW55IGNsYXNzIGluc3RhbmNlIHdpdGggb3B0aW9ucy5jb252ZXJ0Q2xhc3NJbnN0YW5jZVRvTWFwXG5cbmV4cG9ydCB0eXBlIE5hdGl2ZVNjYWxhckF0dHJpYnV0ZVZhbHVlID1cbiAgfCBudWxsXG4gIHwgdW5kZWZpbmVkXG4gIHwgYm9vbGVhblxuICB8IG51bWJlclxuICB8IE51bWJlclZhbHVlXG4gIHwgYmlnaW50XG4gIHwgTmF0aXZlQXR0cmlidXRlQmluYXJ5XG4gIHwgc3RyaW5nO1xuXG5leHBvcnQgdHlwZSBOYXRpdmVBdHRyaWJ1dGVCaW5hcnkgPVxuICB8IEFycmF5QnVmZmVyXG4gIHwgQmxvYlxuICB8IEJ1ZmZlclxuICB8IERhdGFWaWV3XG4gIHwgRmlsZVxuICB8IEludDhBcnJheVxuICB8IFVpbnQ4QXJyYXlcbiAgfCBVaW50OENsYW1wZWRBcnJheVxuICB8IEludDE2QXJyYXlcbiAgfCBVaW50MTZBcnJheVxuICB8IEludDMyQXJyYXlcbiAgfCBVaW50MzJBcnJheVxuICB8IEZsb2F0MzJBcnJheVxuICB8IEZsb2F0NjRBcnJheVxuICB8IEJpZ0ludDY0QXJyYXlcbiAgfCBCaWdVaW50NjRBcnJheTtcbiJdfQ==
@@ -1,11 +0,0 @@
1
- import { convertToNative } from "./convertToNative";
2
- /**
3
- * Convert a DynamoDB record into a JavaScript object.
4
- *
5
- * @param {any} data - The DynamoDB record
6
- * @param {unmarshallOptions} options - An optional configuration object for `unmarshall`
7
- */
8
- export var unmarshall = function (data, options) {
9
- return convertToNative({ M: data }, options);
10
- };
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5tYXJzaGFsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91bm1hcnNoYWxsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQWNwRDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxJQUFNLFVBQVUsR0FBRyxVQUN4QixJQUF1QyxFQUN2QyxPQUEyQjtJQUUzQixPQUFBLGVBQWUsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxPQUFPLENBQTRDO0FBQWhGLENBQWdGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdHRyaWJ1dGVWYWx1ZSB9IGZyb20gXCJAYXdzLXNkay9jbGllbnQtZHluYW1vZGJcIjtcblxuaW1wb3J0IHsgY29udmVydFRvTmF0aXZlIH0gZnJvbSBcIi4vY29udmVydFRvTmF0aXZlXCI7XG5pbXBvcnQgeyBOYXRpdmVBdHRyaWJ1dGVWYWx1ZSB9IGZyb20gXCIuL21vZGVsc1wiO1xuXG4vKipcbiAqIEFuIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGZvciBgY29udmVydFRvTmF0aXZlYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIHVubWFyc2hhbGxPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmV0dXJuIG51bWJlcnMgYXMgYSBzdHJpbmcgaW5zdGVhZCBvZiBjb252ZXJ0aW5nIHRoZW0gdG8gbmF0aXZlIEphdmFTY3JpcHQgbnVtYmVycy5cbiAgICogVGhpcyBhbGxvd3MgZm9yIHRoZSBzYWZlIHJvdW5kLXRyaXAgdHJhbnNwb3J0IG9mIG51bWJlcnMgb2YgYXJiaXRyYXJ5IHNpemUuXG4gICAqL1xuICB3cmFwTnVtYmVycz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29udmVydCBhIER5bmFtb0RCIHJlY29yZCBpbnRvIGEgSmF2YVNjcmlwdCBvYmplY3QuXG4gKlxuICogQHBhcmFtIHthbnl9IGRhdGEgLSBUaGUgRHluYW1vREIgcmVjb3JkXG4gKiBAcGFyYW0ge3VubWFyc2hhbGxPcHRpb25zfSBvcHRpb25zIC0gQW4gb3B0aW9uYWwgY29uZmlndXJhdGlvbiBvYmplY3QgZm9yIGB1bm1hcnNoYWxsYFxuICovXG5leHBvcnQgY29uc3QgdW5tYXJzaGFsbCA9IChcbiAgZGF0YTogeyBba2V5OiBzdHJpbmddOiBBdHRyaWJ1dGVWYWx1ZSB9LFxuICBvcHRpb25zPzogdW5tYXJzaGFsbE9wdGlvbnNcbik6IHsgW2tleTogc3RyaW5nXTogTmF0aXZlQXR0cmlidXRlVmFsdWUgfSA9PlxuICBjb252ZXJ0VG9OYXRpdmUoeyBNOiBkYXRhIH0sIG9wdGlvbnMpIGFzIHsgW2tleTogc3RyaW5nXTogTmF0aXZlQXR0cmlidXRlVmFsdWUgfTtcbiJdfQ==
@@ -1,190 +0,0 @@
1
- import { AttributeValue } from "@aws-sdk/client-dynamodb";
2
-
3
- import { marshallOptions } from "./marshall";
4
- import { NativeAttributeBinary, NativeAttributeValue, NativeScalarAttributeValue } from "./models";
5
-
6
- /**
7
- * Convert a JavaScript value to its equivalent DynamoDB AttributeValue type
8
- *
9
- * @param {NativeAttributeValue} data - The data to convert to a DynamoDB AttributeValue
10
- * @param {marshallOptions} options - An optional configuration object for `convertToAttr`
11
- */
12
- export const convertToAttr = (data: NativeAttributeValue, options?: marshallOptions): AttributeValue => {
13
- if (data === undefined) {
14
- throw new Error(`Pass options.removeUndefinedValues=true to remove undefined values from map/array/set.`);
15
- } else if (data === null && typeof data === "object") {
16
- return convertToNullAttr();
17
- } else if (Array.isArray(data)) {
18
- return convertToListAttr(data, options);
19
- } else if (data?.constructor?.name === "Set") {
20
- return convertToSetAttr(data as Set<any>, options);
21
- } else if (data?.constructor?.name === "Map") {
22
- return convertToMapAttrFromIterable(data as Map<string, NativeAttributeValue>, options);
23
- } else if (
24
- data?.constructor?.name === "Object" ||
25
- // for object which is result of Object.create(null), which doesn't have constructor defined
26
- (!data.constructor && typeof data === "object")
27
- ) {
28
- return convertToMapAttrFromEnumerableProps(data as { [key: string]: NativeAttributeValue }, options);
29
- } else if (isBinary(data)) {
30
- if (data.length === 0 && options?.convertEmptyValues) {
31
- return convertToNullAttr();
32
- }
33
- // Do not alter binary data passed https://github.com/aws/aws-sdk-js-v3/issues/1530
34
- // @ts-expect-error Type '{ B: NativeAttributeBinary; }' is not assignable to type 'AttributeValue'
35
- return convertToBinaryAttr(data);
36
- } else if (typeof data === "boolean" || data?.constructor?.name === "Boolean") {
37
- return { BOOL: data.valueOf() };
38
- } else if (typeof data === "number" || data?.constructor?.name === "Number") {
39
- return convertToNumberAttr(data);
40
- } else if (typeof data === "bigint") {
41
- return convertToBigIntAttr(data);
42
- } else if (typeof data === "string" || data?.constructor?.name === "String") {
43
- if (data.length === 0 && options?.convertEmptyValues) {
44
- return convertToNullAttr();
45
- }
46
- return convertToStringAttr(data);
47
- } else if (options?.convertClassInstanceToMap && typeof data === "object") {
48
- return convertToMapAttrFromEnumerableProps(data as { [key: string]: NativeAttributeValue }, options);
49
- }
50
- throw new Error(
51
- `Unsupported type passed: ${data}. Pass options.convertClassInstanceToMap=true to marshall typeof object as map attribute.`
52
- );
53
- };
54
-
55
- const convertToListAttr = (data: NativeAttributeValue[], options?: marshallOptions): { L: AttributeValue[] } => ({
56
- L: data
57
- .filter((item) => !options?.removeUndefinedValues || (options?.removeUndefinedValues && item !== undefined))
58
- .map((item) => convertToAttr(item, options)),
59
- });
60
-
61
- const convertToSetAttr = (
62
- set: Set<any>,
63
- options?: marshallOptions
64
- ): { NS: string[] } | { BS: Uint8Array[] } | { SS: string[] } | { NULL: true } => {
65
- const setToOperate = options?.removeUndefinedValues ? new Set([...set].filter((value) => value !== undefined)) : set;
66
-
67
- if (!options?.removeUndefinedValues && setToOperate.has(undefined)) {
68
- throw new Error(`Pass options.removeUndefinedValues=true to remove undefined values from map/array/set.`);
69
- }
70
-
71
- if (setToOperate.size === 0) {
72
- if (options?.convertEmptyValues) {
73
- return convertToNullAttr();
74
- }
75
- throw new Error(`Pass a non-empty set, or options.convertEmptyValues=true.`);
76
- }
77
-
78
- const item = setToOperate.values().next().value;
79
- if (typeof item === "number") {
80
- return {
81
- NS: Array.from(setToOperate)
82
- .map(convertToNumberAttr)
83
- .map((item) => item.N),
84
- };
85
- } else if (typeof item === "bigint") {
86
- return {
87
- NS: Array.from(setToOperate)
88
- .map(convertToBigIntAttr)
89
- .map((item) => item.N),
90
- };
91
- } else if (typeof item === "string") {
92
- return {
93
- SS: Array.from(setToOperate)
94
- .map(convertToStringAttr)
95
- .map((item) => item.S),
96
- };
97
- } else if (isBinary(item)) {
98
- return {
99
- // Do not alter binary data passed https://github.com/aws/aws-sdk-js-v3/issues/1530
100
- // @ts-expect-error Type 'ArrayBuffer' is not assignable to type 'Uint8Array'
101
- BS: Array.from(setToOperate)
102
- .map(convertToBinaryAttr)
103
- .map((item) => item.B),
104
- };
105
- } else {
106
- throw new Error(`Only Number Set (NS), Binary Set (BS) or String Set (SS) are allowed.`);
107
- }
108
- };
109
-
110
- const convertToMapAttrFromIterable = (
111
- data: Map<string, NativeAttributeValue>,
112
- options?: marshallOptions
113
- ): { M: { [key: string]: AttributeValue } } => ({
114
- M: ((data) => {
115
- const map: { [key: string]: AttributeValue } = {};
116
- for (const [key, value] of data) {
117
- if (typeof value !== "function" && (value !== undefined || !options?.removeUndefinedValues)) {
118
- map[key] = convertToAttr(value, options);
119
- }
120
- }
121
- return map;
122
- })(data),
123
- });
124
-
125
- const convertToMapAttrFromEnumerableProps = (
126
- data: { [key: string]: NativeAttributeValue },
127
- options?: marshallOptions
128
- ): { M: { [key: string]: AttributeValue } } => ({
129
- M: ((data) => {
130
- const map: { [key: string]: AttributeValue } = {};
131
- for (const key in data) {
132
- const value = data[key];
133
- if (typeof value !== "function" && (value !== undefined || !options?.removeUndefinedValues)) {
134
- map[key] = convertToAttr(value, options);
135
- }
136
- }
137
- return map;
138
- })(data),
139
- });
140
-
141
- // For future-proofing: this functions are called from multiple places
142
- const convertToNullAttr = (): { NULL: true } => ({ NULL: true });
143
- const convertToBinaryAttr = (data: NativeAttributeBinary): { B: NativeAttributeBinary } => ({ B: data });
144
- const convertToStringAttr = (data: string | String): { S: string } => ({ S: data.toString() });
145
- const convertToBigIntAttr = (data: bigint): { N: string } => ({ N: data.toString() });
146
-
147
- const validateBigIntAndThrow = (errorPrefix: string) => {
148
- throw new Error(`${errorPrefix} ${typeof BigInt === "function" ? "Use BigInt." : "Pass string value instead."} `);
149
- };
150
-
151
- const convertToNumberAttr = (num: number | Number): { N: string } => {
152
- if (
153
- [Number.NaN, Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY]
154
- .map((val) => val.toString())
155
- .includes(num.toString())
156
- ) {
157
- throw new Error(`Special numeric value ${num.toString()} is not allowed`);
158
- } else if (num > Number.MAX_SAFE_INTEGER) {
159
- validateBigIntAndThrow(`Number ${num.toString()} is greater than Number.MAX_SAFE_INTEGER.`);
160
- } else if (num < Number.MIN_SAFE_INTEGER) {
161
- validateBigIntAndThrow(`Number ${num.toString()} is lesser than Number.MIN_SAFE_INTEGER.`);
162
- }
163
- return { N: num.toString() };
164
- };
165
-
166
- const isBinary = (data: any): boolean => {
167
- const binaryTypes = [
168
- "ArrayBuffer",
169
- "Blob",
170
- "Buffer",
171
- "DataView",
172
- "File",
173
- "Int8Array",
174
- "Uint8Array",
175
- "Uint8ClampedArray",
176
- "Int16Array",
177
- "Uint16Array",
178
- "Int32Array",
179
- "Uint32Array",
180
- "Float32Array",
181
- "Float64Array",
182
- "BigInt64Array",
183
- "BigUint64Array",
184
- ];
185
-
186
- if (data?.constructor) {
187
- return binaryTypes.includes(data.constructor.name);
188
- }
189
- return false;
190
- };
@@ -1,82 +0,0 @@
1
- import { AttributeValue } from "@aws-sdk/client-dynamodb";
2
-
3
- import { NativeAttributeValue, NumberValue } from "./models";
4
- import { unmarshallOptions } from "./unmarshall";
5
-
6
- /**
7
- * Convert a DynamoDB AttributeValue object to its equivalent JavaScript type.
8
- *
9
- * @param {AttributeValue} data - The DynamoDB record to convert to JavaScript type.
10
- * @param {unmarshallOptions} options - An optional configuration object for `convertToNative`.
11
- */
12
- export const convertToNative = (data: AttributeValue, options?: unmarshallOptions): NativeAttributeValue => {
13
- for (const [key, value] of Object.entries(data)) {
14
- if (value !== undefined) {
15
- switch (key) {
16
- case "NULL":
17
- return null;
18
- case "BOOL":
19
- return Boolean(value);
20
- case "N":
21
- return convertNumber(value as string, options);
22
- case "B":
23
- return convertBinary(value as Uint8Array);
24
- case "S":
25
- return convertString(value as string);
26
- case "L":
27
- return convertList(value as AttributeValue[], options);
28
- case "M":
29
- return convertMap(value as { [key: string]: AttributeValue }, options);
30
- case "NS":
31
- return new Set((value as string[]).map((item) => convertNumber(item, options)));
32
- case "BS":
33
- return new Set((value as Uint8Array[]).map(convertBinary));
34
- case "SS":
35
- return new Set((value as string[]).map(convertString));
36
- default:
37
- throw new Error(`Unsupported type passed: ${key}`);
38
- }
39
- }
40
- }
41
- throw new Error(`No value defined: ${JSON.stringify(data)}`);
42
- };
43
-
44
- const convertNumber = (numString: string, options?: unmarshallOptions): number | bigint | NumberValue => {
45
- if (options?.wrapNumbers) {
46
- return { value: numString };
47
- }
48
-
49
- const num = Number(numString);
50
- const infinityValues = [Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY];
51
- if ((num > Number.MAX_SAFE_INTEGER || num < Number.MIN_SAFE_INTEGER) && !infinityValues.includes(num)) {
52
- if (typeof BigInt === "function") {
53
- try {
54
- return BigInt(numString);
55
- } catch (error) {
56
- throw new Error(`${numString} can't be converted to BigInt. Set options.wrapNumbers to get string value.`);
57
- }
58
- } else {
59
- throw new Error(`${numString} is outside SAFE_INTEGER bounds. Set options.wrapNumbers to get string value.`);
60
- }
61
- }
62
- return num;
63
- };
64
-
65
- // For future-proofing: Functions from scalar value as well as set value
66
- const convertString = (stringValue: string): string => stringValue;
67
- const convertBinary = (binaryValue: Uint8Array): Uint8Array => binaryValue;
68
-
69
- const convertList = (list: AttributeValue[], options?: unmarshallOptions): NativeAttributeValue[] =>
70
- list.map((item) => convertToNative(item, options));
71
-
72
- const convertMap = (
73
- map: { [key: string]: AttributeValue },
74
- options?: unmarshallOptions
75
- ): { [key: string]: NativeAttributeValue } =>
76
- Object.entries(map).reduce(
77
- (acc: { [key: string]: NativeAttributeValue }, [key, value]: [string, AttributeValue]) => ({
78
- ...acc,
79
- [key]: convertToNative(value, options),
80
- }),
81
- {}
82
- );
package/src/marshall.ts DELETED
@@ -1,33 +0,0 @@
1
- import { AttributeValue } from "@aws-sdk/client-dynamodb";
2
-
3
- import { convertToAttr } from "./convertToAttr";
4
- import { NativeAttributeValue } from "./models";
5
-
6
- /**
7
- * An optional configuration object for `marshall`
8
- */
9
- export interface marshallOptions {
10
- /**
11
- * Whether to automatically convert empty strings, blobs, and sets to `null`
12
- */
13
- convertEmptyValues?: boolean;
14
- /**
15
- * Whether to remove undefined values while marshalling.
16
- */
17
- removeUndefinedValues?: boolean;
18
- /**
19
- * Whether to convert typeof object to map attribute.
20
- */
21
- convertClassInstanceToMap?: boolean;
22
- }
23
-
24
- /**
25
- * Convert a JavaScript object into a DynamoDB record.
26
- *
27
- * @param {any} data - The data to convert to a DynamoDB record
28
- * @param {marshallOptions} options - An optional configuration object for `marshall`
29
- */
30
- export const marshall = <T extends { [K in keyof T]: NativeAttributeValue }>(
31
- data: T,
32
- options?: marshallOptions
33
- ): { [key: string]: AttributeValue } => convertToAttr(data, options).M as { [key: string]: AttributeValue };
package/src/models.ts DELETED
@@ -1,46 +0,0 @@
1
- /**
2
- * A interface recognizable as a numeric value that stores the underlying number
3
- * as a string.
4
- *
5
- * Intended to be a deserialization target for the DynamoDB Document Client when
6
- * the `wrapNumbers` flag is set. This allows for numeric values that lose
7
- * precision when converted to JavaScript's `number` type.
8
- */
9
- export interface NumberValue {
10
- readonly value: string;
11
- }
12
-
13
- export type NativeAttributeValue =
14
- | NativeScalarAttributeValue
15
- | { [key: string]: NativeAttributeValue }
16
- | NativeAttributeValue[]
17
- | Set<number | bigint | NumberValue | string | NativeAttributeBinary | undefined>
18
- | InstanceType<{ new (...args: any[]): any }>; // accepts any class instance with options.convertClassInstanceToMap
19
-
20
- export type NativeScalarAttributeValue =
21
- | null
22
- | undefined
23
- | boolean
24
- | number
25
- | NumberValue
26
- | bigint
27
- | NativeAttributeBinary
28
- | string;
29
-
30
- export type NativeAttributeBinary =
31
- | ArrayBuffer
32
- | Blob
33
- | Buffer
34
- | DataView
35
- | File
36
- | Int8Array
37
- | Uint8Array
38
- | Uint8ClampedArray
39
- | Int16Array
40
- | Uint16Array
41
- | Int32Array
42
- | Uint32Array
43
- | Float32Array
44
- | Float64Array
45
- | BigInt64Array
46
- | BigUint64Array;
package/src/unmarshall.ts DELETED
@@ -1,27 +0,0 @@
1
- import { AttributeValue } from "@aws-sdk/client-dynamodb";
2
-
3
- import { convertToNative } from "./convertToNative";
4
- import { NativeAttributeValue } from "./models";
5
-
6
- /**
7
- * An optional configuration object for `convertToNative`
8
- */
9
- export interface unmarshallOptions {
10
- /**
11
- * Whether to return numbers as a string instead of converting them to native JavaScript numbers.
12
- * This allows for the safe round-trip transport of numbers of arbitrary size.
13
- */
14
- wrapNumbers?: boolean;
15
- }
16
-
17
- /**
18
- * Convert a DynamoDB record into a JavaScript object.
19
- *
20
- * @param {any} data - The DynamoDB record
21
- * @param {unmarshallOptions} options - An optional configuration object for `unmarshall`
22
- */
23
- export const unmarshall = (
24
- data: { [key: string]: AttributeValue },
25
- options?: unmarshallOptions
26
- ): { [key: string]: NativeAttributeValue } =>
27
- convertToNative({ M: data }, options) as { [key: string]: NativeAttributeValue };
package/tsconfig.cjs.json DELETED
@@ -1,10 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "declarationDir": "./dist/types",
4
- "rootDir": "./src",
5
- "outDir": "./dist/cjs",
6
- "baseUrl": "."
7
- },
8
- "extends": "../../tsconfig.cjs.json",
9
- "include": ["src/"]
10
- }
package/tsconfig.es.json DELETED
@@ -1,11 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "lib": ["dom", "es5", "es2015.promise", "es2015.collection", "es2015.iterable", "es2015.symbol.wellknown"],
4
- "declarationDir": "./dist/types",
5
- "rootDir": "./src",
6
- "outDir": "./dist/es",
7
- "baseUrl": "."
8
- },
9
- "extends": "../../tsconfig.es.json",
10
- "include": ["src/"]
11
- }