@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,181 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.convertToAttr = void 0;
4
- /**
5
- * Convert a JavaScript value to its equivalent DynamoDB AttributeValue type
6
- *
7
- * @param {NativeAttributeValue} data - The data to convert to a DynamoDB AttributeValue
8
- * @param {marshallOptions} options - An optional configuration object for `convertToAttr`
9
- */
10
- const convertToAttr = (data, options) => {
11
- var _a, _b, _c, _d, _e, _f;
12
- if (data === undefined) {
13
- throw new Error(`Pass options.removeUndefinedValues=true to remove undefined values from map/array/set.`);
14
- }
15
- else if (data === null && typeof data === "object") {
16
- return convertToNullAttr();
17
- }
18
- else if (Array.isArray(data)) {
19
- return convertToListAttr(data, options);
20
- }
21
- else if (((_a = data === null || data === void 0 ? void 0 : data.constructor) === null || _a === void 0 ? void 0 : _a.name) === "Set") {
22
- return convertToSetAttr(data, options);
23
- }
24
- else if (((_b = data === null || data === void 0 ? void 0 : data.constructor) === null || _b === void 0 ? void 0 : _b.name) === "Map") {
25
- return convertToMapAttrFromIterable(data, options);
26
- }
27
- else if (((_c = data === null || data === void 0 ? void 0 : data.constructor) === null || _c === void 0 ? void 0 : _c.name) === "Object" ||
28
- // for object which is result of Object.create(null), which doesn't have constructor defined
29
- (!data.constructor && typeof data === "object")) {
30
- return convertToMapAttrFromEnumerableProps(data, options);
31
- }
32
- else if (isBinary(data)) {
33
- if (data.length === 0 && (options === null || options === void 0 ? void 0 : options.convertEmptyValues)) {
34
- return convertToNullAttr();
35
- }
36
- // Do not alter binary data passed https://github.com/aws/aws-sdk-js-v3/issues/1530
37
- // @ts-expect-error Type '{ B: NativeAttributeBinary; }' is not assignable to type 'AttributeValue'
38
- return convertToBinaryAttr(data);
39
- }
40
- else if (typeof data === "boolean" || ((_d = data === null || data === void 0 ? void 0 : data.constructor) === null || _d === void 0 ? void 0 : _d.name) === "Boolean") {
41
- return { BOOL: data.valueOf() };
42
- }
43
- else if (typeof data === "number" || ((_e = data === null || data === void 0 ? void 0 : data.constructor) === null || _e === void 0 ? void 0 : _e.name) === "Number") {
44
- return convertToNumberAttr(data);
45
- }
46
- else if (typeof data === "bigint") {
47
- return convertToBigIntAttr(data);
48
- }
49
- else if (typeof data === "string" || ((_f = data === null || data === void 0 ? void 0 : data.constructor) === null || _f === void 0 ? void 0 : _f.name) === "String") {
50
- if (data.length === 0 && (options === null || options === void 0 ? void 0 : options.convertEmptyValues)) {
51
- return convertToNullAttr();
52
- }
53
- return convertToStringAttr(data);
54
- }
55
- else if ((options === null || options === void 0 ? void 0 : options.convertClassInstanceToMap) && typeof data === "object") {
56
- return convertToMapAttrFromEnumerableProps(data, options);
57
- }
58
- throw new Error(`Unsupported type passed: ${data}. Pass options.convertClassInstanceToMap=true to marshall typeof object as map attribute.`);
59
- };
60
- exports.convertToAttr = convertToAttr;
61
- const convertToListAttr = (data, options) => ({
62
- L: data
63
- .filter((item) => !(options === null || options === void 0 ? void 0 : options.removeUndefinedValues) || ((options === null || options === void 0 ? void 0 : options.removeUndefinedValues) && item !== undefined))
64
- .map((item) => exports.convertToAttr(item, options)),
65
- });
66
- const convertToSetAttr = (set, options) => {
67
- const setToOperate = (options === null || options === void 0 ? void 0 : options.removeUndefinedValues) ? new Set([...set].filter((value) => value !== undefined)) : set;
68
- if (!(options === null || options === void 0 ? void 0 : options.removeUndefinedValues) && setToOperate.has(undefined)) {
69
- throw new Error(`Pass options.removeUndefinedValues=true to remove undefined values from map/array/set.`);
70
- }
71
- if (setToOperate.size === 0) {
72
- if (options === null || options === void 0 ? void 0 : options.convertEmptyValues) {
73
- return convertToNullAttr();
74
- }
75
- throw new Error(`Pass a non-empty set, or options.convertEmptyValues=true.`);
76
- }
77
- const item = setToOperate.values().next().value;
78
- if (typeof item === "number") {
79
- return {
80
- NS: Array.from(setToOperate)
81
- .map(convertToNumberAttr)
82
- .map((item) => item.N),
83
- };
84
- }
85
- else if (typeof item === "bigint") {
86
- return {
87
- NS: Array.from(setToOperate)
88
- .map(convertToBigIntAttr)
89
- .map((item) => item.N),
90
- };
91
- }
92
- else if (typeof item === "string") {
93
- return {
94
- SS: Array.from(setToOperate)
95
- .map(convertToStringAttr)
96
- .map((item) => item.S),
97
- };
98
- }
99
- else if (isBinary(item)) {
100
- return {
101
- // Do not alter binary data passed https://github.com/aws/aws-sdk-js-v3/issues/1530
102
- // @ts-expect-error Type 'ArrayBuffer' is not assignable to type 'Uint8Array'
103
- BS: Array.from(setToOperate)
104
- .map(convertToBinaryAttr)
105
- .map((item) => item.B),
106
- };
107
- }
108
- else {
109
- throw new Error(`Only Number Set (NS), Binary Set (BS) or String Set (SS) are allowed.`);
110
- }
111
- };
112
- const convertToMapAttrFromIterable = (data, options) => ({
113
- M: ((data) => {
114
- const map = {};
115
- for (const [key, value] of data) {
116
- if (typeof value !== "function" && (value !== undefined || !(options === null || options === void 0 ? void 0 : options.removeUndefinedValues))) {
117
- map[key] = exports.convertToAttr(value, options);
118
- }
119
- }
120
- return map;
121
- })(data),
122
- });
123
- const convertToMapAttrFromEnumerableProps = (data, options) => ({
124
- M: ((data) => {
125
- const map = {};
126
- for (const key in data) {
127
- const value = data[key];
128
- if (typeof value !== "function" && (value !== undefined || !(options === null || options === void 0 ? void 0 : options.removeUndefinedValues))) {
129
- map[key] = exports.convertToAttr(value, options);
130
- }
131
- }
132
- return map;
133
- })(data),
134
- });
135
- // For future-proofing: this functions are called from multiple places
136
- const convertToNullAttr = () => ({ NULL: true });
137
- const convertToBinaryAttr = (data) => ({ B: data });
138
- const convertToStringAttr = (data) => ({ S: data.toString() });
139
- const convertToBigIntAttr = (data) => ({ N: data.toString() });
140
- const validateBigIntAndThrow = (errorPrefix) => {
141
- throw new Error(`${errorPrefix} ${typeof BigInt === "function" ? "Use BigInt." : "Pass string value instead."} `);
142
- };
143
- const convertToNumberAttr = (num) => {
144
- if ([Number.NaN, Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY]
145
- .map((val) => val.toString())
146
- .includes(num.toString())) {
147
- throw new Error(`Special numeric value ${num.toString()} is not allowed`);
148
- }
149
- else if (num > Number.MAX_SAFE_INTEGER) {
150
- validateBigIntAndThrow(`Number ${num.toString()} is greater than Number.MAX_SAFE_INTEGER.`);
151
- }
152
- else if (num < Number.MIN_SAFE_INTEGER) {
153
- validateBigIntAndThrow(`Number ${num.toString()} is lesser than Number.MIN_SAFE_INTEGER.`);
154
- }
155
- return { N: num.toString() };
156
- };
157
- const isBinary = (data) => {
158
- const binaryTypes = [
159
- "ArrayBuffer",
160
- "Blob",
161
- "Buffer",
162
- "DataView",
163
- "File",
164
- "Int8Array",
165
- "Uint8Array",
166
- "Uint8ClampedArray",
167
- "Int16Array",
168
- "Uint16Array",
169
- "Int32Array",
170
- "Uint32Array",
171
- "Float32Array",
172
- "Float64Array",
173
- "BigInt64Array",
174
- "BigUint64Array",
175
- ];
176
- if (data === null || data === void 0 ? void 0 : data.constructor) {
177
- return binaryTypes.includes(data.constructor.name);
178
- }
179
- return false;
180
- };
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydFRvQXR0ci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb252ZXJ0VG9BdHRyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUtBOzs7OztHQUtHO0FBQ0ksTUFBTSxhQUFhLEdBQUcsQ0FBQyxJQUEwQixFQUFFLE9BQXlCLEVBQWtCLEVBQUU7O0lBQ3JHLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtRQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLHdGQUF3RixDQUFDLENBQUM7S0FDM0c7U0FBTSxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFO1FBQ3BELE9BQU8saUJBQWlCLEVBQUUsQ0FBQztLQUM1QjtTQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUM5QixPQUFPLGlCQUFpQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztLQUN6QztTQUFNLElBQUksQ0FBQSxNQUFBLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxXQUFXLDBDQUFFLElBQUksTUFBSyxLQUFLLEVBQUU7UUFDNUMsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFnQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQ3BEO1NBQU0sSUFBSSxDQUFBLE1BQUEsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLFdBQVcsMENBQUUsSUFBSSxNQUFLLEtBQUssRUFBRTtRQUM1QyxPQUFPLDRCQUE0QixDQUFDLElBQXlDLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDekY7U0FBTSxJQUNMLENBQUEsTUFBQSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsV0FBVywwQ0FBRSxJQUFJLE1BQUssUUFBUTtRQUNwQyw0RkFBNEY7UUFDNUYsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDLEVBQy9DO1FBQ0EsT0FBTyxt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Q2QsZUFBZTtRQUNmLGdCQUFnQjtLQUNqQixDQUFDO0lBRUYsSUFBSSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsV0FBVyxFQUFFO1FBQ3JCLE9BQU8sV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3BEO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdHRyaWJ1dGVWYWx1ZSB9IGZyb20gXCJAYXdzLXNkay9jbGllbnQtZHluYW1vZGJcIjtcblxuaW1wb3J0IHsgbWFyc2hhbGxPcHRpb25zIH0gZnJvbSBcIi4vbWFyc2hhbGxcIjtcbmltcG9ydCB7IE5hdGl2ZUF0dHJpYnV0ZUJpbmFyeSwgTmF0aXZlQXR0cmlidXRlVmFsdWUsIE5hdGl2ZVNjYWxhckF0dHJpYnV0ZVZhbHVlIH0gZnJvbSBcIi4vbW9kZWxzXCI7XG5cbi8qKlxuICogQ29udmVydCBhIEphdmFTY3JpcHQgdmFsdWUgdG8gaXRzIGVxdWl2YWxlbnQgRHluYW1vREIgQXR0cmlidXRlVmFsdWUgdHlwZVxuICpcbiAqIEBwYXJhbSB7TmF0aXZlQXR0cmlidXRlVmFsdWV9IGRhdGEgLSBUaGUgZGF0YSB0byBjb252ZXJ0IHRvIGEgRHluYW1vREIgQXR0cmlidXRlVmFsdWVcbiAqIEBwYXJhbSB7bWFyc2hhbGxPcHRpb25zfSBvcHRpb25zIC0gQW4gb3B0aW9uYWwgY29uZmlndXJhdGlvbiBvYmplY3QgZm9yIGBjb252ZXJ0VG9BdHRyYFxuICovXG5leHBvcnQgY29uc3QgY29udmVydFRvQXR0ciA9IChkYXRhOiBOYXRpdmVBdHRyaWJ1dGVWYWx1ZSwgb3B0aW9ucz86IG1hcnNoYWxsT3B0aW9ucyk6IEF0dHJpYnV0ZVZhbHVlID0+IHtcbiAgaWYgKGRhdGEgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgUGFzcyBvcHRpb25zLnJlbW92ZVVuZGVmaW5lZFZhbHVlcz10cnVlIHRvIHJlbW92ZSB1bmRlZmluZWQgdmFsdWVzIGZyb20gbWFwL2FycmF5L3NldC5gKTtcbiAgfSBlbHNlIGlmIChkYXRhID09PSBudWxsICYmIHR5cGVvZiBkYXRhID09PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIGNvbnZlcnRUb051bGxBdHRyKCk7XG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgIHJldHVybiBjb252ZXJ0VG9MaXN0QXR0cihkYXRhLCBvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChkYXRhPy5jb25zdHJ1Y3Rvcj8ubmFtZSA9PT0gXCJTZXRcIikge1xuICAgIHJldHVybiBjb252ZXJ0VG9TZXRBdHRyKGRhdGEgYXMgU2V0PGFueT4sIG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGRhdGE/LmNvbnN0cnVjdG9yPy5uYW1lID09PSBcIk1hcFwiKSB7XG4gICAgcmV0dXJuIGNvbnZlcnRUb01hcEF0dHJGcm9tSXRlcmFibGUoZGF0YSBhcyBNYXA8c3RyaW5nLCBOYXRpdmVBdHRyaWJ1dGVWYWx1ZT4sIG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKFxuICAgIGRhdGE/LmNvbnN0cnVjdG9yPy5uYW1lID09PSBcIk9iamVjdFwiIHx8XG4gICAgLy8gZm9yIG9iamVjdCB3aGljaCBpcyByZXN1bHQgb2YgT2JqZWN0LmNyZWF0ZShudWxsKSwgd2hpY2ggZG9lc24ndCBoYXZlIGNvbnN0cnVjdG9yIGRlZmluZWRcbiAgICAoIWRhdGEuY29uc3RydWN0b3IgJiYgdHlwZW9mIGRhdGEgPT09IFwib2JqZWN0XCIpXG4gICkge1xuICAgIHJldHVybiBjb252ZXJ0VG9NYXBBdHRyRnJvbUVudW1lcmFibGVQcm9wcyhkYXRhIGFzIHsgW2tleTogc3RyaW5nXTogTmF0aXZlQXR0cmlidXRlVmFsdWUgfSwgb3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNCaW5hcnkoZGF0YSkpIHtcbiAgICBpZiAoZGF0YS5sZW5ndGggPT09IDAgJiYgb3B0aW9ucz8uY29udmVydEVtcHR5VmFsdWVzKSB7XG4gICAgICByZXR1cm4gY29udmVydFRvTnVsbEF0dHIoKTtcbiAgICB9XG4gICAgLy8gRG8gbm90IGFsdGVyIGJpbmFyeSBkYXRhIHBhc3NlZCBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1zZGstanMtdjMvaXNzdWVzLzE1MzBcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFR5cGUgJ3sgQjogTmF0aXZlQXR0cmlidXRlQmluYXJ5OyB9JyBpcyBub3QgYXNzaWduYWJsZSB0byB0eXBlICdBdHRyaWJ1dGVWYWx1ZSdcbiAgICByZXR1cm4gY29udmVydFRvQmluYXJ5QXR0cihkYXRhKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgZGF0YSA9PT0gXCJib29sZWFuXCIgfHwgZGF0YT8uY29uc3RydWN0b3I/Lm5hbWUgPT09IFwiQm9vbGVhblwiKSB7XG4gICAgcmV0dXJuIHsgQk9PTDogZGF0YS52YWx1ZU9mKCkgfTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgZGF0YSA9PT0gXCJudW1iZXJcIiB8fCBkYXRhPy5jb25zdHJ1Y3Rvcj8ubmFtZSA9PT0gXCJOdW1iZXJcIikge1xuICAgIHJldHVybiBjb252ZXJ0VG9OdW1iZXJBdHRyKGRhdGEpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBkYXRhID09PSBcImJpZ2ludFwiKSB7XG4gICAgcmV0dXJuIGNvbnZlcnRUb0JpZ0ludEF0dHIoZGF0YSk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIgfHwgZGF0YT8uY29uc3RydWN0b3I/Lm5hbWUgPT09IFwiU3RyaW5nXCIpIHtcbiAgICBpZiAoZGF0YS5sZW5ndGggPT09IDAgJiYgb3B0aW9ucz8uY29udmVydEVtcHR5VmFsdWVzKSB7XG4gICAgICByZXR1cm4gY29udmVydFRvTnVsbEF0dHIoKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbnZlcnRUb1N0cmluZ0F0dHIoZGF0YSk7XG4gIH0gZWxzZSBpZiAob3B0aW9ucz8uY29udmVydENsYXNzSW5zdGFuY2VUb01hcCAmJiB0eXBlb2YgZGF0YSA9PT0gXCJvYmplY3RcIikge1xuICAgIHJldHVybiBjb252ZXJ0VG9NYXBBdHRyRnJvbUVudW1lcmFibGVQcm9wcyhkYXRhIGFzIHsgW2tleTogc3RyaW5nXTogTmF0aXZlQXR0cmlidXRlVmFsdWUgfSwgb3B0aW9ucyk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgIGBVbnN1cHBvcnRlZCB0eXBlIHBhc3NlZDogJHtkYXRhfS4gUGFzcyBvcHRpb25zLmNvbnZlcnRDbGFzc0luc3RhbmNlVG9NYXA9dHJ1ZSB0byBtYXJzaGFsbCB0eXBlb2Ygb2JqZWN0IGFzIG1hcCBhdHRyaWJ1dGUuYFxuICApO1xufTtcblxuY29uc3QgY29udmVydFRvTGlzdEF0dHIgPSAoZGF0YTogTmF0aXZlQXR0cmlidXRlVmFsdWVbXSwgb3B0aW9ucz86IG1hcnNoYWxsT3B0aW9ucyk6IHsgTDogQXR0cmlidXRlVmFsdWVbXSB9ID0+ICh7XG4gIEw6IGRhdGFcbiAgICAuZmlsdGVyKChpdGVtKSA9PiAhb3B0aW9ucz8ucmVtb3ZlVW5kZWZpbmVkVmFsdWVzIHx8IChvcHRpb25zPy5yZW1vdmVVbmRlZmluZWRWYWx1ZXMgJiYgaXRlbSAhPT0gdW5kZWZpbmVkKSlcbiAgICAubWFwKChpdGVtKSA9PiBjb252ZXJ0VG9BdHRyKGl0ZW0sIG9wdGlvbnMpKSxcbn0pO1xuXG5jb25zdCBjb252ZXJ0VG9TZXRBdHRyID0gKFxuICBzZXQ6IFNldDxhbnk+LFxuICBvcHRpb25zPzogbWFyc2hhbGxPcHRpb25zXG4pOiB7IE5TOiBzdHJpbmdbXSB9IHwgeyBCUzogVWludDhBcnJheVtdIH0gfCB7IFNTOiBzdHJpbmdbXSB9IHwgeyBOVUxMOiB0cnVlIH0gPT4ge1xuICBjb25zdCBzZXRUb09wZXJhdGUgPSBvcHRpb25zPy5yZW1vdmVVbmRlZmluZWRWYWx1ZXMgPyBuZXcgU2V0KFsuLi5zZXRdLmZpbHRlcigodmFsdWUpID0+IHZhbHVlICE9PSB1bmRlZmluZWQpKSA6IHNldDtcblxuICBpZiAoIW9wdGlvbnM/LnJlbW92ZVVuZGVmaW5lZFZhbHVlcyAmJiBzZXRUb09wZXJhdGUuaGFzKHVuZGVmaW5lZCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFBhc3Mgb3B0aW9ucy5yZW1vdmVVbmRlZmluZWRWYWx1ZXM9dHJ1ZSB0byByZW1vdmUgdW5kZWZpbmVkIHZhbHVlcyBmcm9tIG1hcC9hcnJheS9zZXQuYCk7XG4gIH1cblxuICBpZiAoc2V0VG9PcGVyYXRlLnNpemUgPT09IDApIHtcbiAgICBpZiAob3B0aW9ucz8uY29udmVydEVtcHR5VmFsdWVzKSB7XG4gICAgICByZXR1cm4gY29udmVydFRvTnVsbEF0dHIoKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBQYXNzIGEgbm9uLWVtcHR5IHNldCwgb3Igb3B0aW9ucy5jb252ZXJ0RW1wdHlWYWx1ZXM9dHJ1ZS5gKTtcbiAgfVxuXG4gIGNvbnN0IGl0ZW0gPSBzZXRUb09wZXJhdGUudmFsdWVzKCkubmV4dCgpLnZhbHVlO1xuICBpZiAodHlwZW9mIGl0ZW0gPT09IFwibnVtYmVyXCIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgTlM6IEFycmF5LmZyb20oc2V0VG9PcGVyYXRlKVxuICAgICAgICAubWFwKGNvbnZlcnRUb051bWJlckF0dHIpXG4gICAgICAgIC5tYXAoKGl0ZW0pID0+IGl0ZW0uTiksXG4gICAgfTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgaXRlbSA9PT0gXCJiaWdpbnRcIikge1xuICAgIHJldHVybiB7XG4gICAgICBOUzogQXJyYXkuZnJvbShzZXRUb09wZXJhdGUpXG4gICAgICAgIC5tYXAoY29udmVydFRvQmlnSW50QXR0cilcbiAgICAgICAgLm1hcCgoaXRlbSkgPT4gaXRlbS5OKSxcbiAgICB9O1xuICB9IGVsc2UgaWYgKHR5cGVvZiBpdGVtID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFNTOiBBcnJheS5mcm9tKHNldFRvT3BlcmF0ZSlcbiAgICAgICAgLm1hcChjb252ZXJ0VG9TdHJpbmdBdHRyKVxuICAgICAgICAubWFwKChpdGVtKSA9PiBpdGVtLlMpLFxuICAgIH07XG4gIH0gZWxzZSBpZiAoaXNCaW5hcnkoaXRlbSkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLy8gRG8gbm90IGFsdGVyIGJpbmFyeSBkYXRhIHBhc3NlZCBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1zZGstanMtdjMvaXNzdWVzLzE1MzBcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVHlwZSAnQXJyYXlCdWZmZXInIGlzIG5vdCBhc3NpZ25hYmxlIHRvIHR5cGUgJ1VpbnQ4QXJyYXknXG4gICAgICBCUzogQXJyYXkuZnJvbShzZXRUb09wZXJhdGUpXG4gICAgICAgIC5tYXAoY29udmVydFRvQmluYXJ5QXR0cilcbiAgICAgICAgLm1hcCgoaXRlbSkgPT4gaXRlbS5CKSxcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihgT25seSBOdW1iZXIgU2V0IChOUyksIEJpbmFyeSBTZXQgKEJTKSBvciBTdHJpbmcgU2V0IChTUykgYXJlIGFsbG93ZWQuYCk7XG4gIH1cbn07XG5cbmNvbnN0IGNvbnZlcnRUb01hcEF0dHJGcm9tSXRlcmFibGUgPSAoXG4gIGRhdGE6IE1hcDxzdHJpbmcsIE5hdGl2ZUF0dHJpYnV0ZVZhbHVlPixcbiAgb3B0aW9ucz86IG1hcnNoYWxsT3B0aW9uc1xuKTogeyBNOiB7IFtrZXk6IHN0cmluZ106IEF0dHJpYnV0ZVZhbHVlIH0gfSA9PiAoe1xuICBNOiAoKGRhdGEpID0+IHtcbiAgICBjb25zdCBtYXA6IHsgW2tleTogc3RyaW5nXTogQXR0cmlidXRlVmFsdWUgfSA9IHt9O1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIGRhdGEpIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwiZnVuY3Rpb25cIiAmJiAodmFsdWUgIT09IHVuZGVmaW5lZCB8fCAhb3B0aW9ucz8ucmVtb3ZlVW5kZWZpbmVkVmFsdWVzKSkge1xuICAgICAgICBtYXBba2V5XSA9IGNvbnZlcnRUb0F0dHIodmFsdWUsIG9wdGlvbnMpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWFwO1xuICB9KShkYXRhKSxcbn0pO1xuXG5jb25zdCBjb252ZXJ0VG9NYXBBdHRyRnJvbUVudW1lcmFibGVQcm9wcyA9IChcbiAgZGF0YTogeyBba2V5OiBzdHJpbmddOiBOYXRpdmVBdHRyaWJ1dGVWYWx1ZSB9LFxuICBvcHRpb25zPzogbWFyc2hhbGxPcHRpb25zXG4pOiB7IE06IHsgW2tleTogc3RyaW5nXTogQXR0cmlidXRlVmFsdWUgfSB9ID0+ICh7XG4gIE06ICgoZGF0YSkgPT4ge1xuICAgIGNvbnN0IG1hcDogeyBba2V5OiBzdHJpbmddOiBBdHRyaWJ1dGVWYWx1ZSB9ID0ge307XG4gICAgZm9yIChjb25zdCBrZXkgaW4gZGF0YSkge1xuICAgICAgY29uc3QgdmFsdWUgPSBkYXRhW2tleV07XG4gICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIgJiYgKHZhbHVlICE9PSB1bmRlZmluZWQgfHwgIW9wdGlvbnM/LnJlbW92ZVVuZGVmaW5lZFZhbHVlcykpIHtcbiAgICAgICAgbWFwW2tleV0gPSBjb252ZXJ0VG9BdHRyKHZhbHVlLCBvcHRpb25zKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1hcDtcbiAgfSkoZGF0YSksXG59KTtcblxuLy8gRm9yIGZ1dHVyZS1wcm9vZmluZzogdGhpcyBmdW5jdGlvbnMgYXJlIGNhbGxlZCBmcm9tIG11bHRpcGxlIHBsYWNlc1xuY29uc3QgY29udmVydFRvTnVsbEF0dHIgPSAoKTogeyBOVUxMOiB0cnVlIH0gPT4gKHsgTlVMTDogdHJ1ZSB9KTtcbmNvbnN0IGNvbnZlcnRUb0JpbmFyeUF0dHIgPSAoZGF0YTogTmF0aXZlQXR0cmlidXRlQmluYXJ5KTogeyBCOiBOYXRpdmVBdHRyaWJ1dGVCaW5hcnkgfSA9PiAoeyBCOiBkYXRhIH0pO1xuY29uc3QgY29udmVydFRvU3RyaW5nQXR0ciA9IChkYXRhOiBzdHJpbmcgfCBTdHJpbmcpOiB7IFM6IHN0cmluZyB9ID0+ICh7IFM6IGRhdGEudG9TdHJpbmcoKSB9KTtcbmNvbnN0IGNvbnZlcnRUb0JpZ0ludEF0dHIgPSAoZGF0YTogYmlnaW50KTogeyBOOiBzdHJpbmcgfSA9PiAoeyBOOiBkYXRhLnRvU3RyaW5nKCkgfSk7XG5cbmNvbnN0IHZhbGlkYXRlQmlnSW50QW5kVGhyb3cgPSAoZXJyb3JQcmVmaXg6IHN0cmluZykgPT4ge1xuICB0aHJvdyBuZXcgRXJyb3IoYCR7ZXJyb3JQcmVmaXh9ICR7dHlwZW9mIEJpZ0ludCA9PT0gXCJmdW5jdGlvblwiID8gXCJVc2UgQmlnSW50LlwiIDogXCJQYXNzIHN0cmluZyB2YWx1ZSBpbnN0ZWFkLlwifSBgKTtcbn07XG5cbmNvbnN0IGNvbnZlcnRUb051bWJlckF0dHIgPSAobnVtOiBudW1iZXIgfCBOdW1iZXIpOiB7IE46IHN0cmluZyB9ID0+IHtcbiAgaWYgKFxuICAgIFtOdW1iZXIuTmFOLCBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksIE51bWJlci5ORUdBVElWRV9JTkZJTklUWV1cbiAgICAgIC5tYXAoKHZhbCkgPT4gdmFsLnRvU3RyaW5nKCkpXG4gICAgICAuaW5jbHVkZXMobnVtLnRvU3RyaW5nKCkpXG4gICkge1xuICAgIHRocm93IG5ldyBFcnJvcihgU3BlY2lhbCBudW1lcmljIHZhbHVlICR7bnVtLnRvU3RyaW5nKCl9IGlzIG5vdCBhbGxvd2VkYCk7XG4gIH0gZWxzZSBpZiAobnVtID4gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpIHtcbiAgICB2YWxpZGF0ZUJpZ0ludEFuZFRocm93KGBOdW1iZXIgJHtudW0udG9TdHJpbmcoKX0gaXMgZ3JlYXRlciB0aGFuIE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLmApO1xuICB9IGVsc2UgaWYgKG51bSA8IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSKSB7XG4gICAgdmFsaWRhdGVCaWdJbnRBbmRUaHJvdyhgTnVtYmVyICR7bnVtLnRvU3RyaW5nKCl9IGlzIGxlc3NlciB0aGFuIE51bWJlci5NSU5fU0FGRV9JTlRFR0VSLmApO1xuICB9XG4gIHJldHVybiB7IE46IG51bS50b1N0cmluZygpIH07XG59O1xuXG5jb25zdCBpc0JpbmFyeSA9IChkYXRhOiBhbnkpOiBib29sZWFuID0+IHtcbiAgY29uc3QgYmluYXJ5VHlwZXMgPSBbXG4gICAgXCJBcnJheUJ1ZmZlclwiLFxuICAgIFwiQmxvYlwiLFxuICAgIFwiQnVmZmVyXCIsXG4gICAgXCJEYXRhVmlld1wiLFxuICAgIFwiRmlsZVwiLFxuICAgIFwiSW50OEFycmF5XCIsXG4gICAgXCJVaW50OEFycmF5XCIsXG4gICAgXCJVaW50OENsYW1wZWRBcnJheVwiLFxuICAgIFwiSW50MTZBcnJheVwiLFxuICAgIFwiVWludDE2QXJyYXlcIixcbiAgICBcIkludDMyQXJyYXlcIixcbiAgICBcIlVpbnQzMkFycmF5XCIsXG4gICAgXCJGbG9hdDMyQXJyYXlcIixcbiAgICBcIkZsb2F0NjRBcnJheVwiLFxuICAgIFwiQmlnSW50NjRBcnJheVwiLFxuICAgIFwiQmlnVWludDY0QXJyYXlcIixcbiAgXTtcblxuICBpZiAoZGF0YT8uY29uc3RydWN0b3IpIHtcbiAgICByZXR1cm4gYmluYXJ5VHlwZXMuaW5jbHVkZXMoZGF0YS5jb25zdHJ1Y3Rvci5uYW1lKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuIl19
@@ -1,71 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.convertToNative = void 0;
4
- /**
5
- * Convert a DynamoDB AttributeValue object to its equivalent JavaScript type.
6
- *
7
- * @param {AttributeValue} data - The DynamoDB record to convert to JavaScript type.
8
- * @param {unmarshallOptions} options - An optional configuration object for `convertToNative`.
9
- */
10
- const convertToNative = (data, options) => {
11
- for (const [key, value] of Object.entries(data)) {
12
- if (value !== undefined) {
13
- switch (key) {
14
- case "NULL":
15
- return null;
16
- case "BOOL":
17
- return Boolean(value);
18
- case "N":
19
- return convertNumber(value, options);
20
- case "B":
21
- return convertBinary(value);
22
- case "S":
23
- return convertString(value);
24
- case "L":
25
- return convertList(value, options);
26
- case "M":
27
- return convertMap(value, options);
28
- case "NS":
29
- return new Set(value.map((item) => convertNumber(item, options)));
30
- case "BS":
31
- return new Set(value.map(convertBinary));
32
- case "SS":
33
- return new Set(value.map(convertString));
34
- default:
35
- throw new Error(`Unsupported type passed: ${key}`);
36
- }
37
- }
38
- }
39
- throw new Error(`No value defined: ${JSON.stringify(data)}`);
40
- };
41
- exports.convertToNative = convertToNative;
42
- const convertNumber = (numString, options) => {
43
- if (options === null || options === void 0 ? void 0 : options.wrapNumbers) {
44
- return { value: numString };
45
- }
46
- const num = Number(numString);
47
- const infinityValues = [Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY];
48
- if ((num > Number.MAX_SAFE_INTEGER || num < Number.MIN_SAFE_INTEGER) && !infinityValues.includes(num)) {
49
- if (typeof BigInt === "function") {
50
- try {
51
- return BigInt(numString);
52
- }
53
- catch (error) {
54
- throw new Error(`${numString} can't be converted to BigInt. Set options.wrapNumbers to get string value.`);
55
- }
56
- }
57
- else {
58
- throw new Error(`${numString} is outside SAFE_INTEGER bounds. Set options.wrapNumbers to get string value.`);
59
- }
60
- }
61
- return num;
62
- };
63
- // For future-proofing: Functions from scalar value as well as set value
64
- const convertString = (stringValue) => stringValue;
65
- const convertBinary = (binaryValue) => binaryValue;
66
- const convertList = (list, options) => list.map((item) => exports.convertToNative(item, options));
67
- const convertMap = (map, options) => Object.entries(map).reduce((acc, [key, value]) => ({
68
- ...acc,
69
- [key]: exports.convertToNative(value, options),
70
- }), {});
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydFRvTmF0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnZlcnRUb05hdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFLQTs7Ozs7R0FLRztBQUNJLE1BQU0sZUFBZSxHQUFHLENBQUMsSUFBb0IsRUFBRSxPQUEyQixFQUF3QixFQUFFO0lBQ3pHLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQy9DLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtZQUN2QixRQUFRLEdBQUcsRUFBRTtnQkFDWCxLQUFLLE1BQU07b0JBQ1QsT0FBTyxJQUFJLENBQUM7Z0JBQ2QsS0FBSyxNQUFNO29CQUNULE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN4QixLQUFLLEdBQUc7b0JBQ04sT0FBTyxhQUFhLENBQUMsS0FBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUNqRCxLQUFLLEdBQUc7b0JBQ04sT0FBTyxhQUFhLENBQUMsS0FBbUIsQ0FBQyxDQUFDO2dCQUM1QyxLQUFLLEdBQUc7b0JBQ04sT0FBTyxhQUFhLENBQUMsS0FBZSxDQUFDLENBQUM7Z0JBQ3hDLEtBQUssR0FBRztvQkFDTixPQUFPLFdBQVcsQ0FBQyxLQUF5QixFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUN6RCxLQUFLLEdBQUc7b0JBQ04sT0FBTyxVQUFVLENBQUMsS0FBMEMsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDekUsS0FBSyxJQUFJO29CQUNQLE9BQU8sSUFBSSxHQUFHLENBQUUsS0FBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNsRixLQUFLLElBQUk7b0JBQ1AsT0FBTyxJQUFJLEdBQUcsQ0FBRSxLQUFzQixDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO2dCQUM3RCxLQUFLLElBQUk7b0JBQ1AsT0FBTyxJQUFJLEdBQUcsQ0FBRSxLQUFrQixDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO2dCQUN6RDtvQkFDRSxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixHQUFHLEVBQUUsQ0FBQyxDQUFDO2FBQ3REO1NBQ0Y7S0FDRjtJQUNELE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQy9ELENBQUMsQ0FBQztBQTlCVyxRQUFBLGVBQWUsbUJBOEIxQjtBQUVGLE1BQU0sYUFBYSxHQUFHLENBQUMsU0FBaUIsRUFBRSxPQUEyQixFQUFpQyxFQUFFO0lBQ3RHLElBQUksT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFdBQVcsRUFBRTtRQUN4QixPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDO0tBQzdCO0lBRUQsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlCLE1BQU0sY0FBYyxHQUFHLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzVFLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixJQUFJLEdBQUcsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDckcsSUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLEVBQUU7WUFDaEMsSUFBSTtnQkFDRixPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUMxQjtZQUFDLE9BQU8sS0FBSyxFQUFFO2dCQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxTQUFTLDZFQUE2RSxDQUFDLENBQUM7YUFDNUc7U0FDRjthQUFNO1lBQ0wsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLFNBQVMsK0VBQStFLENBQUMsQ0FBQztTQUM5RztLQUNGO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDLENBQUM7QUFFRix3RUFBd0U7QUFDeEUsTUFBTSxhQUFhLEdBQUcsQ0FBQyxXQUFtQixFQUFVLEVBQUUsQ0FBQyxXQUFXLENBQUM7QUFDbkUsTUFBTSxhQUFhLEdBQUcsQ0FBQyxXQUF1QixFQUFjLEVBQUUsQ0FBQyxXQUFXLENBQUM7QUFFM0UsTUFBTSxXQUFXLEdBQUcsQ0FBQyxJQUFzQixFQUFFLE9BQTJCLEVBQTBCLEVBQUUsQ0FDbEcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsdUJBQWUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUVyRCxNQUFNLFVBQVUsR0FBRyxDQUNqQixHQUFzQyxFQUN0QyxPQUEyQixFQUNjLEVBQUUsQ0FDM0MsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQ3hCLENBQUMsR0FBNEMsRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQTJCLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekYsR0FBRyxHQUFHO0lBQ04sQ0FBQyxHQUFHLENBQUMsRUFBRSx1QkFBZSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUM7Q0FDdkMsQ0FBQyxFQUNGLEVBQUUsQ0FDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXR0cmlidXRlVmFsdWUgfSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LWR5bmFtb2RiXCI7XG5cbmltcG9ydCB7IE5hdGl2ZUF0dHJpYnV0ZVZhbHVlLCBOdW1iZXJWYWx1ZSB9IGZyb20gXCIuL21vZGVsc1wiO1xuaW1wb3J0IHsgdW5tYXJzaGFsbE9wdGlvbnMgfSBmcm9tIFwiLi91bm1hcnNoYWxsXCI7XG5cbi8qKlxuICogQ29udmVydCBhIER5bmFtb0RCIEF0dHJpYnV0ZVZhbHVlIG9iamVjdCB0byBpdHMgZXF1aXZhbGVudCBKYXZhU2NyaXB0IHR5cGUuXG4gKlxuICogQHBhcmFtIHtBdHRyaWJ1dGVWYWx1ZX0gZGF0YSAtIFRoZSBEeW5hbW9EQiByZWNvcmQgdG8gY29udmVydCB0byBKYXZhU2NyaXB0IHR5cGUuXG4gKiBAcGFyYW0ge3VubWFyc2hhbGxPcHRpb25zfSBvcHRpb25zIC0gQW4gb3B0aW9uYWwgY29uZmlndXJhdGlvbiBvYmplY3QgZm9yIGBjb252ZXJ0VG9OYXRpdmVgLlxuICovXG5leHBvcnQgY29uc3QgY29udmVydFRvTmF0aXZlID0gKGRhdGE6IEF0dHJpYnV0ZVZhbHVlLCBvcHRpb25zPzogdW5tYXJzaGFsbE9wdGlvbnMpOiBOYXRpdmVBdHRyaWJ1dGVWYWx1ZSA9PiB7XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGRhdGEpKSB7XG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgIGNhc2UgXCJOVUxMXCI6XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIGNhc2UgXCJCT09MXCI6XG4gICAgICAgICAgcmV0dXJuIEJvb2xlYW4odmFsdWUpO1xuICAgICAgICBjYXNlIFwiTlwiOlxuICAgICAgICAgIHJldHVybiBjb252ZXJ0TnVtYmVyKHZhbHVlIGFzIHN0cmluZywgb3B0aW9ucyk7XG4gICAgICAgIGNhc2UgXCJCXCI6XG4gICAgICAgICAgcmV0dXJuIGNvbnZlcnRCaW5hcnkodmFsdWUgYXMgVWludDhBcnJheSk7XG4gICAgICAgIGNhc2UgXCJTXCI6XG4gICAgICAgICAgcmV0dXJuIGNvbnZlcnRTdHJpbmcodmFsdWUgYXMgc3RyaW5nKTtcbiAgICAgICAgY2FzZSBcIkxcIjpcbiAgICAgICAgICByZXR1cm4gY29udmVydExpc3QodmFsdWUgYXMgQXR0cmlidXRlVmFsdWVbXSwgb3B0aW9ucyk7XG4gICAgICAgIGNhc2UgXCJNXCI6XG4gICAgICAgICAgcmV0dXJuIGNvbnZlcnRNYXAodmFsdWUgYXMgeyBba2V5OiBzdHJpbmddOiBBdHRyaWJ1dGVWYWx1ZSB9LCBvcHRpb25zKTtcbiAgICAgICAgY2FzZSBcIk5TXCI6XG4gICAgICAgICAgcmV0dXJuIG5ldyBTZXQoKHZhbHVlIGFzIHN0cmluZ1tdKS5tYXAoKGl0ZW0pID0+IGNvbnZlcnROdW1iZXIoaXRlbSwgb3B0aW9ucykpKTtcbiAgICAgICAgY2FzZSBcIkJTXCI6XG4gICAgICAgICAgcmV0dXJuIG5ldyBTZXQoKHZhbHVlIGFzIFVpbnQ4QXJyYXlbXSkubWFwKGNvbnZlcnRCaW5hcnkpKTtcbiAgICAgICAgY2FzZSBcIlNTXCI6XG4gICAgICAgICAgcmV0dXJuIG5ldyBTZXQoKHZhbHVlIGFzIHN0cmluZ1tdKS5tYXAoY29udmVydFN0cmluZykpO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgdHlwZSBwYXNzZWQ6ICR7a2V5fWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYE5vIHZhbHVlIGRlZmluZWQ6ICR7SlNPTi5zdHJpbmdpZnkoZGF0YSl9YCk7XG59O1xuXG5jb25zdCBjb252ZXJ0TnVtYmVyID0gKG51bVN0cmluZzogc3RyaW5nLCBvcHRpb25zPzogdW5tYXJzaGFsbE9wdGlvbnMpOiBudW1iZXIgfCBiaWdpbnQgfCBOdW1iZXJWYWx1ZSA9PiB7XG4gIGlmIChvcHRpb25zPy53cmFwTnVtYmVycykge1xuICAgIHJldHVybiB7IHZhbHVlOiBudW1TdHJpbmcgfTtcbiAgfVxuXG4gIGNvbnN0IG51bSA9IE51bWJlcihudW1TdHJpbmcpO1xuICBjb25zdCBpbmZpbml0eVZhbHVlcyA9IFtOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksIE51bWJlci5ORUdBVElWRV9JTkZJTklUWV07XG4gIGlmICgobnVtID4gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIgfHwgbnVtIDwgTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIpICYmICFpbmZpbml0eVZhbHVlcy5pbmNsdWRlcyhudW0pKSB7XG4gICAgaWYgKHR5cGVvZiBCaWdJbnQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIEJpZ0ludChudW1TdHJpbmcpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke251bVN0cmluZ30gY2FuJ3QgYmUgY29udmVydGVkIHRvIEJpZ0ludC4gU2V0IG9wdGlvbnMud3JhcE51bWJlcnMgdG8gZ2V0IHN0cmluZyB2YWx1ZS5gKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke251bVN0cmluZ30gaXMgb3V0c2lkZSBTQUZFX0lOVEVHRVIgYm91bmRzLiBTZXQgb3B0aW9ucy53cmFwTnVtYmVycyB0byBnZXQgc3RyaW5nIHZhbHVlLmApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVtO1xufTtcblxuLy8gRm9yIGZ1dHVyZS1wcm9vZmluZzogRnVuY3Rpb25zIGZyb20gc2NhbGFyIHZhbHVlIGFzIHdlbGwgYXMgc2V0IHZhbHVlXG5jb25zdCBjb252ZXJ0U3RyaW5nID0gKHN0cmluZ1ZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgPT4gc3RyaW5nVmFsdWU7XG5jb25zdCBjb252ZXJ0QmluYXJ5ID0gKGJpbmFyeVZhbHVlOiBVaW50OEFycmF5KTogVWludDhBcnJheSA9PiBiaW5hcnlWYWx1ZTtcblxuY29uc3QgY29udmVydExpc3QgPSAobGlzdDogQXR0cmlidXRlVmFsdWVbXSwgb3B0aW9ucz86IHVubWFyc2hhbGxPcHRpb25zKTogTmF0aXZlQXR0cmlidXRlVmFsdWVbXSA9PlxuICBsaXN0Lm1hcCgoaXRlbSkgPT4gY29udmVydFRvTmF0aXZlKGl0ZW0sIG9wdGlvbnMpKTtcblxuY29uc3QgY29udmVydE1hcCA9IChcbiAgbWFwOiB7IFtrZXk6IHN0cmluZ106IEF0dHJpYnV0ZVZhbHVlIH0sXG4gIG9wdGlvbnM/OiB1bm1hcnNoYWxsT3B0aW9uc1xuKTogeyBba2V5OiBzdHJpbmddOiBOYXRpdmVBdHRyaWJ1dGVWYWx1ZSB9ID0+XG4gIE9iamVjdC5lbnRyaWVzKG1hcCkucmVkdWNlKFxuICAgIChhY2M6IHsgW2tleTogc3RyaW5nXTogTmF0aXZlQXR0cmlidXRlVmFsdWUgfSwgW2tleSwgdmFsdWVdOiBbc3RyaW5nLCBBdHRyaWJ1dGVWYWx1ZV0pID0+ICh7XG4gICAgICAuLi5hY2MsXG4gICAgICBba2V5XTogY29udmVydFRvTmF0aXZlKHZhbHVlLCBvcHRpb25zKSxcbiAgICB9KSxcbiAgICB7fVxuICApO1xuIl19
package/dist/cjs/index.js DELETED
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./convertToAttr"), exports);
5
- tslib_1.__exportStar(require("./convertToNative"), exports);
6
- tslib_1.__exportStar(require("./marshall"), exports);
7
- tslib_1.__exportStar(require("./models"), exports);
8
- tslib_1.__exportStar(require("./unmarshall"), exports);
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMERBQWdDO0FBQ2hDLDREQUFrQztBQUNsQyxxREFBMkI7QUFDM0IsbURBQXlCO0FBQ3pCLHVEQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2NvbnZlcnRUb0F0dHJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbnZlcnRUb05hdGl2ZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbWFyc2hhbGxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL21vZGVsc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdW5tYXJzaGFsbFwiO1xuIl19
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.marshall = void 0;
4
- const convertToAttr_1 = require("./convertToAttr");
5
- /**
6
- * Convert a JavaScript object into a DynamoDB record.
7
- *
8
- * @param {any} data - The data to convert to a DynamoDB record
9
- * @param {marshallOptions} options - An optional configuration object for `marshall`
10
- */
11
- const marshall = (data, options) => convertToAttr_1.convertToAttr(data, options).M;
12
- exports.marshall = marshall;
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyc2hhbGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWFyc2hhbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsbURBQWdEO0FBcUJoRDs7Ozs7R0FLRztBQUNJLE1BQU0sUUFBUSxHQUFHLENBQ3RCLElBQU8sRUFDUCxPQUF5QixFQUNVLEVBQUUsQ0FBQyw2QkFBYSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFzQyxDQUFDO0FBSC9GLFFBQUEsUUFBUSxZQUd1RiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF0dHJpYnV0ZVZhbHVlIH0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1keW5hbW9kYlwiO1xuXG5pbXBvcnQgeyBjb252ZXJ0VG9BdHRyIH0gZnJvbSBcIi4vY29udmVydFRvQXR0clwiO1xuaW1wb3J0IHsgTmF0aXZlQXR0cmlidXRlVmFsdWUgfSBmcm9tIFwiLi9tb2RlbHNcIjtcblxuLyoqXG4gKiBBbiBvcHRpb25hbCBjb25maWd1cmF0aW9uIG9iamVjdCBmb3IgYG1hcnNoYWxsYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIG1hcnNoYWxsT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGF1dG9tYXRpY2FsbHkgY29udmVydCBlbXB0eSBzdHJpbmdzLCBibG9icywgYW5kIHNldHMgdG8gYG51bGxgXG4gICAqL1xuICBjb252ZXJ0RW1wdHlWYWx1ZXM/OiBib29sZWFuO1xuICAvKipcbiAgICogV2hldGhlciB0byByZW1vdmUgdW5kZWZpbmVkIHZhbHVlcyB3aGlsZSBtYXJzaGFsbGluZy5cbiAgICovXG4gIHJlbW92ZVVuZGVmaW5lZFZhbHVlcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGNvbnZlcnQgdHlwZW9mIG9iamVjdCB0byBtYXAgYXR0cmlidXRlLlxuICAgKi9cbiAgY29udmVydENsYXNzSW5zdGFuY2VUb01hcD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29udmVydCBhIEphdmFTY3JpcHQgb2JqZWN0IGludG8gYSBEeW5hbW9EQiByZWNvcmQuXG4gKlxuICogQHBhcmFtIHthbnl9IGRhdGEgLSBUaGUgZGF0YSB0byBjb252ZXJ0IHRvIGEgRHluYW1vREIgcmVjb3JkXG4gKiBAcGFyYW0ge21hcnNoYWxsT3B0aW9uc30gb3B0aW9ucyAtIEFuIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGZvciBgbWFyc2hhbGxgXG4gKi9cbmV4cG9ydCBjb25zdCBtYXJzaGFsbCA9IDxUIGV4dGVuZHMgeyBbSyBpbiBrZXlvZiBUXTogTmF0aXZlQXR0cmlidXRlVmFsdWUgfT4oXG4gIGRhdGE6IFQsXG4gIG9wdGlvbnM/OiBtYXJzaGFsbE9wdGlvbnNcbik6IHsgW2tleTogc3RyaW5nXTogQXR0cmlidXRlVmFsdWUgfSA9PiBjb252ZXJ0VG9BdHRyKGRhdGEsIG9wdGlvbnMpLk0gYXMgeyBba2V5OiBzdHJpbmddOiBBdHRyaWJ1dGVWYWx1ZSB9O1xuIl19
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBIGludGVyZmFjZSByZWNvZ25pemFibGUgYXMgYSBudW1lcmljIHZhbHVlIHRoYXQgc3RvcmVzIHRoZSB1bmRlcmx5aW5nIG51bWJlclxuICogYXMgYSBzdHJpbmcuXG4gKlxuICogSW50ZW5kZWQgdG8gYmUgYSBkZXNlcmlhbGl6YXRpb24gdGFyZ2V0IGZvciB0aGUgRHluYW1vREIgRG9jdW1lbnQgQ2xpZW50IHdoZW5cbiAqIHRoZSBgd3JhcE51bWJlcnNgIGZsYWcgaXMgc2V0LiBUaGlzIGFsbG93cyBmb3IgbnVtZXJpYyB2YWx1ZXMgdGhhdCBsb3NlXG4gKiBwcmVjaXNpb24gd2hlbiBjb252ZXJ0ZWQgdG8gSmF2YVNjcmlwdCdzIGBudW1iZXJgIHR5cGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTnVtYmVyVmFsdWUge1xuICByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBOYXRpdmVBdHRyaWJ1dGVWYWx1ZSA9XG4gIHwgTmF0aXZlU2NhbGFyQXR0cmlidXRlVmFsdWVcbiAgfCB7IFtrZXk6IHN0cmluZ106IE5hdGl2ZUF0dHJpYnV0ZVZhbHVlIH1cbiAgfCBOYXRpdmVBdHRyaWJ1dGVWYWx1ZVtdXG4gIHwgU2V0PG51bWJlciB8IGJpZ2ludCB8IE51bWJlclZhbHVlIHwgc3RyaW5nIHwgTmF0aXZlQXR0cmlidXRlQmluYXJ5IHwgdW5kZWZpbmVkPlxuICB8IEluc3RhbmNlVHlwZTx7IG5ldyAoLi4uYXJnczogYW55W10pOiBhbnkgfT47IC8vIGFjY2VwdHMgYW55IGNsYXNzIGluc3RhbmNlIHdpdGggb3B0aW9ucy5jb252ZXJ0Q2xhc3NJbnN0YW5jZVRvTWFwXG5cbmV4cG9ydCB0eXBlIE5hdGl2ZVNjYWxhckF0dHJpYnV0ZVZhbHVlID1cbiAgfCBudWxsXG4gIHwgdW5kZWZpbmVkXG4gIHwgYm9vbGVhblxuICB8IG51bWJlclxuICB8IE51bWJlclZhbHVlXG4gIHwgYmlnaW50XG4gIHwgTmF0aXZlQXR0cmlidXRlQmluYXJ5XG4gIHwgc3RyaW5nO1xuXG5leHBvcnQgdHlwZSBOYXRpdmVBdHRyaWJ1dGVCaW5hcnkgPVxuICB8IEFycmF5QnVmZmVyXG4gIHwgQmxvYlxuICB8IEJ1ZmZlclxuICB8IERhdGFWaWV3XG4gIHwgRmlsZVxuICB8IEludDhBcnJheVxuICB8IFVpbnQ4QXJyYXlcbiAgfCBVaW50OENsYW1wZWRBcnJheVxuICB8IEludDE2QXJyYXlcbiAgfCBVaW50MTZBcnJheVxuICB8IEludDMyQXJyYXlcbiAgfCBVaW50MzJBcnJheVxuICB8IEZsb2F0MzJBcnJheVxuICB8IEZsb2F0NjRBcnJheVxuICB8IEJpZ0ludDY0QXJyYXlcbiAgfCBCaWdVaW50NjRBcnJheTtcbiJdfQ==
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.unmarshall = void 0;
4
- const convertToNative_1 = require("./convertToNative");
5
- /**
6
- * Convert a DynamoDB record into a JavaScript object.
7
- *
8
- * @param {any} data - The DynamoDB record
9
- * @param {unmarshallOptions} options - An optional configuration object for `unmarshall`
10
- */
11
- const unmarshall = (data, options) => convertToNative_1.convertToNative({ M: data }, options);
12
- exports.unmarshall = unmarshall;
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5tYXJzaGFsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91bm1hcnNoYWxsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLHVEQUFvRDtBQWNwRDs7Ozs7R0FLRztBQUNJLE1BQU0sVUFBVSxHQUFHLENBQ3hCLElBQXVDLEVBQ3ZDLE9BQTJCLEVBQ2MsRUFBRSxDQUMzQyxpQ0FBZSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLE9BQU8sQ0FBNEMsQ0FBQztBQUp0RSxRQUFBLFVBQVUsY0FJNEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdHRyaWJ1dGVWYWx1ZSB9IGZyb20gXCJAYXdzLXNkay9jbGllbnQtZHluYW1vZGJcIjtcblxuaW1wb3J0IHsgY29udmVydFRvTmF0aXZlIH0gZnJvbSBcIi4vY29udmVydFRvTmF0aXZlXCI7XG5pbXBvcnQgeyBOYXRpdmVBdHRyaWJ1dGVWYWx1ZSB9IGZyb20gXCIuL21vZGVsc1wiO1xuXG4vKipcbiAqIEFuIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGZvciBgY29udmVydFRvTmF0aXZlYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIHVubWFyc2hhbGxPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmV0dXJuIG51bWJlcnMgYXMgYSBzdHJpbmcgaW5zdGVhZCBvZiBjb252ZXJ0aW5nIHRoZW0gdG8gbmF0aXZlIEphdmFTY3JpcHQgbnVtYmVycy5cbiAgICogVGhpcyBhbGxvd3MgZm9yIHRoZSBzYWZlIHJvdW5kLXRyaXAgdHJhbnNwb3J0IG9mIG51bWJlcnMgb2YgYXJiaXRyYXJ5IHNpemUuXG4gICAqL1xuICB3cmFwTnVtYmVycz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29udmVydCBhIER5bmFtb0RCIHJlY29yZCBpbnRvIGEgSmF2YVNjcmlwdCBvYmplY3QuXG4gKlxuICogQHBhcmFtIHthbnl9IGRhdGEgLSBUaGUgRHluYW1vREIgcmVjb3JkXG4gKiBAcGFyYW0ge3VubWFyc2hhbGxPcHRpb25zfSBvcHRpb25zIC0gQW4gb3B0aW9uYWwgY29uZmlndXJhdGlvbiBvYmplY3QgZm9yIGB1bm1hcnNoYWxsYFxuICovXG5leHBvcnQgY29uc3QgdW5tYXJzaGFsbCA9IChcbiAgZGF0YTogeyBba2V5OiBzdHJpbmddOiBBdHRyaWJ1dGVWYWx1ZSB9LFxuICBvcHRpb25zPzogdW5tYXJzaGFsbE9wdGlvbnNcbik6IHsgW2tleTogc3RyaW5nXTogTmF0aXZlQXR0cmlidXRlVmFsdWUgfSA9PlxuICBjb252ZXJ0VG9OYXRpdmUoeyBNOiBkYXRhIH0sIG9wdGlvbnMpIGFzIHsgW2tleTogc3RyaW5nXTogTmF0aXZlQXR0cmlidXRlVmFsdWUgfTtcbiJdfQ==
@@ -1,189 +0,0 @@
1
- import { __read, __spreadArray, __values } from "tslib";
2
- /**
3
- * Convert a JavaScript value to its equivalent DynamoDB AttributeValue type
4
- *
5
- * @param {NativeAttributeValue} data - The data to convert to a DynamoDB AttributeValue
6
- * @param {marshallOptions} options - An optional configuration object for `convertToAttr`
7
- */
8
- export var convertToAttr = function (data, options) {
9
- var _a, _b, _c, _d, _e, _f;
10
- if (data === undefined) {
11
- throw new Error("Pass options.removeUndefinedValues=true to remove undefined values from map/array/set.");
12
- }
13
- else if (data === null && typeof data === "object") {
14
- return convertToNullAttr();
15
- }
16
- else if (Array.isArray(data)) {
17
- return convertToListAttr(data, options);
18
- }
19
- else if (((_a = data === null || data === void 0 ? void 0 : data.constructor) === null || _a === void 0 ? void 0 : _a.name) === "Set") {
20
- return convertToSetAttr(data, options);
21
- }
22
- else if (((_b = data === null || data === void 0 ? void 0 : data.constructor) === null || _b === void 0 ? void 0 : _b.name) === "Map") {
23
- return convertToMapAttrFromIterable(data, options);
24
- }
25
- else if (((_c = data === null || data === void 0 ? void 0 : data.constructor) === null || _c === void 0 ? void 0 : _c.name) === "Object" ||
26
- // for object which is result of Object.create(null), which doesn't have constructor defined
27
- (!data.constructor && typeof data === "object")) {
28
- return convertToMapAttrFromEnumerableProps(data, options);
29
- }
30
- else if (isBinary(data)) {
31
- if (data.length === 0 && (options === null || options === void 0 ? void 0 : options.convertEmptyValues)) {
32
- return convertToNullAttr();
33
- }
34
- // Do not alter binary data passed https://github.com/aws/aws-sdk-js-v3/issues/1530
35
- // @ts-expect-error Type '{ B: NativeAttributeBinary; }' is not assignable to type 'AttributeValue'
36
- return convertToBinaryAttr(data);
37
- }
38
- else if (typeof data === "boolean" || ((_d = data === null || data === void 0 ? void 0 : data.constructor) === null || _d === void 0 ? void 0 : _d.name) === "Boolean") {
39
- return { BOOL: data.valueOf() };
40
- }
41
- else if (typeof data === "number" || ((_e = data === null || data === void 0 ? void 0 : data.constructor) === null || _e === void 0 ? void 0 : _e.name) === "Number") {
42
- return convertToNumberAttr(data);
43
- }
44
- else if (typeof data === "bigint") {
45
- return convertToBigIntAttr(data);
46
- }
47
- else if (typeof data === "string" || ((_f = data === null || data === void 0 ? void 0 : data.constructor) === null || _f === void 0 ? void 0 : _f.name) === "String") {
48
- if (data.length === 0 && (options === null || options === void 0 ? void 0 : options.convertEmptyValues)) {
49
- return convertToNullAttr();
50
- }
51
- return convertToStringAttr(data);
52
- }
53
- else if ((options === null || options === void 0 ? void 0 : options.convertClassInstanceToMap) && typeof data === "object") {
54
- return convertToMapAttrFromEnumerableProps(data, options);
55
- }
56
- throw new Error("Unsupported type passed: " + data + ". Pass options.convertClassInstanceToMap=true to marshall typeof object as map attribute.");
57
- };
58
- var convertToListAttr = function (data, options) { return ({
59
- L: data
60
- .filter(function (item) { return !(options === null || options === void 0 ? void 0 : options.removeUndefinedValues) || ((options === null || options === void 0 ? void 0 : options.removeUndefinedValues) && item !== undefined); })
61
- .map(function (item) { return convertToAttr(item, options); }),
62
- }); };
63
- var convertToSetAttr = function (set, options) {
64
- var setToOperate = (options === null || options === void 0 ? void 0 : options.removeUndefinedValues) ? new Set(__spreadArray([], __read(set)).filter(function (value) { return value !== undefined; })) : set;
65
- if (!(options === null || options === void 0 ? void 0 : options.removeUndefinedValues) && setToOperate.has(undefined)) {
66
- throw new Error("Pass options.removeUndefinedValues=true to remove undefined values from map/array/set.");
67
- }
68
- if (setToOperate.size === 0) {
69
- if (options === null || options === void 0 ? void 0 : options.convertEmptyValues) {
70
- return convertToNullAttr();
71
- }
72
- throw new Error("Pass a non-empty set, or options.convertEmptyValues=true.");
73
- }
74
- var item = setToOperate.values().next().value;
75
- if (typeof item === "number") {
76
- return {
77
- NS: Array.from(setToOperate)
78
- .map(convertToNumberAttr)
79
- .map(function (item) { return item.N; }),
80
- };
81
- }
82
- else if (typeof item === "bigint") {
83
- return {
84
- NS: Array.from(setToOperate)
85
- .map(convertToBigIntAttr)
86
- .map(function (item) { return item.N; }),
87
- };
88
- }
89
- else if (typeof item === "string") {
90
- return {
91
- SS: Array.from(setToOperate)
92
- .map(convertToStringAttr)
93
- .map(function (item) { return item.S; }),
94
- };
95
- }
96
- else if (isBinary(item)) {
97
- return {
98
- // Do not alter binary data passed https://github.com/aws/aws-sdk-js-v3/issues/1530
99
- // @ts-expect-error Type 'ArrayBuffer' is not assignable to type 'Uint8Array'
100
- BS: Array.from(setToOperate)
101
- .map(convertToBinaryAttr)
102
- .map(function (item) { return item.B; }),
103
- };
104
- }
105
- else {
106
- throw new Error("Only Number Set (NS), Binary Set (BS) or String Set (SS) are allowed.");
107
- }
108
- };
109
- var convertToMapAttrFromIterable = function (data, options) { return ({
110
- M: (function (data) {
111
- var e_1, _a;
112
- var map = {};
113
- try {
114
- for (var data_1 = __values(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) {
115
- var _b = __read(data_1_1.value, 2), key = _b[0], value = _b[1];
116
- if (typeof value !== "function" && (value !== undefined || !(options === null || options === void 0 ? void 0 : options.removeUndefinedValues))) {
117
- map[key] = convertToAttr(value, options);
118
- }
119
- }
120
- }
121
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
122
- finally {
123
- try {
124
- if (data_1_1 && !data_1_1.done && (_a = data_1.return)) _a.call(data_1);
125
- }
126
- finally { if (e_1) throw e_1.error; }
127
- }
128
- return map;
129
- })(data),
130
- }); };
131
- var convertToMapAttrFromEnumerableProps = function (data, options) { return ({
132
- M: (function (data) {
133
- var map = {};
134
- for (var key in data) {
135
- var value = data[key];
136
- if (typeof value !== "function" && (value !== undefined || !(options === null || options === void 0 ? void 0 : options.removeUndefinedValues))) {
137
- map[key] = convertToAttr(value, options);
138
- }
139
- }
140
- return map;
141
- })(data),
142
- }); };
143
- // For future-proofing: this functions are called from multiple places
144
- var convertToNullAttr = function () { return ({ NULL: true }); };
145
- var convertToBinaryAttr = function (data) { return ({ B: data }); };
146
- var convertToStringAttr = function (data) { return ({ S: data.toString() }); };
147
- var convertToBigIntAttr = function (data) { return ({ N: data.toString() }); };
148
- var validateBigIntAndThrow = function (errorPrefix) {
149
- throw new Error(errorPrefix + " " + (typeof BigInt === "function" ? "Use BigInt." : "Pass string value instead.") + " ");
150
- };
151
- var convertToNumberAttr = function (num) {
152
- if ([Number.NaN, Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY]
153
- .map(function (val) { return val.toString(); })
154
- .includes(num.toString())) {
155
- throw new Error("Special numeric value " + num.toString() + " is not allowed");
156
- }
157
- else if (num > Number.MAX_SAFE_INTEGER) {
158
- validateBigIntAndThrow("Number " + num.toString() + " is greater than Number.MAX_SAFE_INTEGER.");
159
- }
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
- var isBinary = function (data) {
166
- var binaryTypes = [
167
- "ArrayBuffer",
168
- "Blob",
169
- "Buffer",
170
- "DataView",
171
- "File",
172
- "Int8Array",
173
- "Uint8Array",
174
- "Uint8ClampedArray",
175
- "Int16Array",
176
- "Uint16Array",
177
- "Int32Array",
178
- "Uint32Array",
179
- "Float32Array",
180
- "Float64Array",
181
- "BigInt64Array",
182
- "BigUint64Array",
183
- ];
184
- if (data === null || data === void 0 ? void 0 : data.constructor) {
185
- return binaryTypes.includes(data.constructor.name);
186
- }
187
- return false;
188
- };
189
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydFRvQXR0ci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb252ZXJ0VG9BdHRyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFLQTs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxJQUFNLGFBQWEsR0FBRyxVQUFDLElBQTBCLEVBQUUsT0FBeUI7O0lBQ2pGLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtRQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLHdGQUF3RixDQUFDLENBQUM7S0FDM0c7U0FBTSxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFO1FBQ3BELE9BQU8saUJBQWlCLEVBQUUsQ0FBQztLQUM1QjtTQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUM5QixPQUFPLGlCQUFpQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztLQUN6QztTQUFNLElBQUksQ0FBQSxNQUFBLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxXQUFXLDBDQUFFLElBQUksTUFBSyxLQUFLLEVBQUU7UUFDNUMsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFnQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQ3BEO1NBQU0sSUFBSSxDQUFBLE1BQUEsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLFdBQVcsMENBQUUsSUFBSSxNQUFLLEtBQUssRUFBRTtRQUM1QyxPQUFPLDRCQUE0QixDQUFDLElBQXlDLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDekY7U0FBTSxJQUNMLENBQUEsTUFBQSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsV0FBVywwQ0FBRSxJQUFJLE1BQUssUUFBUTtRQUNwQyw0RkFBNEY7UUFDNUYsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDLEVBQy9DO1FBQ0EsT0FBTyxtQ0FB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QWE7UUFDYixZQUFZO1FBQ1osYUFBYTtRQUNiLGNBQWM7UUFDZCxjQUFjO1FBQ2QsZUFBZTtRQUNmLGdCQUFnQjtLQUNqQixDQUFDO0lBRUYsSUFBSSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsV0FBVyxFQUFFO1FBQ3JCLE9BQU8sV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3BEO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdHRyaWJ1dGVWYWx1ZSB9IGZyb20gXCJAYXdzLXNkay9jbGllbnQtZHluYW1vZGJcIjtcblxuaW1wb3J0IHsgbWFyc2hhbGxPcHRpb25zIH0gZnJvbSBcIi4vbWFyc2hhbGxcIjtcbmltcG9ydCB7IE5hdGl2ZUF0dHJpYnV0ZUJpbmFyeSwgTmF0aXZlQXR0cmlidXRlVmFsdWUsIE5hdGl2ZVNjYWxhckF0dHJpYnV0ZVZhbHVlIH0gZnJvbSBcIi4vbW9kZWxzXCI7XG5cbi8qKlxuICogQ29udmVydCBhIEphdmFTY3JpcHQgdmFsdWUgdG8gaXRzIGVxdWl2YWxlbnQgRHluYW1vREIgQXR0cmlidXRlVmFsdWUgdHlwZVxuICpcbiAqIEBwYXJhbSB7TmF0aXZlQXR0cmlidXRlVmFsdWV9IGRhdGEgLSBUaGUgZGF0YSB0byBjb252ZXJ0IHRvIGEgRHluYW1vREIgQXR0cmlidXRlVmFsdWVcbiAqIEBwYXJhbSB7bWFyc2hhbGxPcHRpb25zfSBvcHRpb25zIC0gQW4gb3B0aW9uYWwgY29uZmlndXJhdGlvbiBvYmplY3QgZm9yIGBjb252ZXJ0VG9BdHRyYFxuICovXG5leHBvcnQgY29uc3QgY29udmVydFRvQXR0ciA9IChkYXRhOiBOYXRpdmVBdHRyaWJ1dGVWYWx1ZSwgb3B0aW9ucz86IG1hcnNoYWxsT3B0aW9ucyk6IEF0dHJpYnV0ZVZhbHVlID0+IHtcbiAgaWYgKGRhdGEgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgUGFzcyBvcHRpb25zLnJlbW92ZVVuZGVmaW5lZFZhbHVlcz10cnVlIHRvIHJlbW92ZSB1bmRlZmluZWQgdmFsdWVzIGZyb20gbWFwL2FycmF5L3NldC5gKTtcbiAgfSBlbHNlIGlmIChkYXRhID09PSBudWxsICYmIHR5cGVvZiBkYXRhID09PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIGNvbnZlcnRUb051bGxBdHRyKCk7XG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgIHJldHVybiBjb252ZXJ0VG9MaXN0QXR0cihkYXRhLCBvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChkYXRhPy5jb25zdHJ1Y3Rvcj8ubmFtZSA9PT0gXCJTZXRcIikge1xuICAgIHJldHVybiBjb252ZXJ0VG9TZXRBdHRyKGRhdGEgYXMgU2V0PGFueT4sIG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGRhdGE/LmNvbnN0cnVjdG9yPy5uYW1lID09PSBcIk1hcFwiKSB7XG4gICAgcmV0dXJuIGNvbnZlcnRUb01hcEF0dHJGcm9tSXRlcmFibGUoZGF0YSBhcyBNYXA8c3RyaW5nLCBOYXRpdmVBdHRyaWJ1dGVWYWx1ZT4sIG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKFxuICAgIGRhdGE/LmNvbnN0cnVjdG9yPy5uYW1lID09PSBcIk9iamVjdFwiIHx8XG4gICAgLy8gZm9yIG9iamVjdCB3aGljaCBpcyByZXN1bHQgb2YgT2JqZWN0LmNyZWF0ZShudWxsKSwgd2hpY2ggZG9lc24ndCBoYXZlIGNvbnN0cnVjdG9yIGRlZmluZWRcbiAgICAoIWRhdGEuY29uc3RydWN0b3IgJiYgdHlwZW9mIGRhdGEgPT09IFwib2JqZWN0XCIpXG4gICkge1xuICAgIHJldHVybiBjb252ZXJ0VG9NYXBBdHRyRnJvbUVudW1lcmFibGVQcm9wcyhkYXRhIGFzIHsgW2tleTogc3RyaW5nXTogTmF0aXZlQXR0cmlidXRlVmFsdWUgfSwgb3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNCaW5hcnkoZGF0YSkpIHtcbiAgICBpZiAoZGF0YS5sZW5ndGggPT09IDAgJiYgb3B0aW9ucz8uY29udmVydEVtcHR5VmFsdWVzKSB7XG4gICAgICByZXR1cm4gY29udmVydFRvTnVsbEF0dHIoKTtcbiAgICB9XG4gICAgLy8gRG8gbm90IGFsdGVyIGJpbmFyeSBkYXRhIHBhc3NlZCBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1zZGstanMtdjMvaXNzdWVzLzE1MzBcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFR5cGUgJ3sgQjogTmF0aXZlQXR0cmlidXRlQmluYXJ5OyB9JyBpcyBub3QgYXNzaWduYWJsZSB0byB0eXBlICdBdHRyaWJ1dGVWYWx1ZSdcbiAgICByZXR1cm4gY29udmVydFRvQmluYXJ5QXR0cihkYXRhKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgZGF0YSA9PT0gXCJib29sZWFuXCIgfHwgZGF0YT8uY29uc3RydWN0b3I/Lm5hbWUgPT09IFwiQm9vbGVhblwiKSB7XG4gICAgcmV0dXJuIHsgQk9PTDogZGF0YS52YWx1ZU9mKCkgfTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgZGF0YSA9PT0gXCJudW1iZXJcIiB8fCBkYXRhPy5jb25zdHJ1Y3Rvcj8ubmFtZSA9PT0gXCJOdW1iZXJcIikge1xuICAgIHJldHVybiBjb252ZXJ0VG9OdW1iZXJBdHRyKGRhdGEpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBkYXRhID09PSBcImJpZ2ludFwiKSB7XG4gICAgcmV0dXJuIGNvbnZlcnRUb0JpZ0ludEF0dHIoZGF0YSk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIgfHwgZGF0YT8uY29uc3RydWN0b3I/Lm5hbWUgPT09IFwiU3RyaW5nXCIpIHtcbiAgICBpZiAoZGF0YS5sZW5ndGggPT09IDAgJiYgb3B0aW9ucz8uY29udmVydEVtcHR5VmFsdWVzKSB7XG4gICAgICByZXR1cm4gY29udmVydFRvTnVsbEF0dHIoKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbnZlcnRUb1N0cmluZ0F0dHIoZGF0YSk7XG4gIH0gZWxzZSBpZiAob3B0aW9ucz8uY29udmVydENsYXNzSW5zdGFuY2VUb01hcCAmJiB0eXBlb2YgZGF0YSA9PT0gXCJvYmplY3RcIikge1xuICAgIHJldHVybiBjb252ZXJ0VG9NYXBBdHRyRnJvbUVudW1lcmFibGVQcm9wcyhkYXRhIGFzIHsgW2tleTogc3RyaW5nXTogTmF0aXZlQXR0cmlidXRlVmFsdWUgfSwgb3B0aW9ucyk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgIGBVbnN1cHBvcnRlZCB0eXBlIHBhc3NlZDogJHtkYXRhfS4gUGFzcyBvcHRpb25zLmNvbnZlcnRDbGFzc0luc3RhbmNlVG9NYXA9dHJ1ZSB0byBtYXJzaGFsbCB0eXBlb2Ygb2JqZWN0IGFzIG1hcCBhdHRyaWJ1dGUuYFxuICApO1xufTtcblxuY29uc3QgY29udmVydFRvTGlzdEF0dHIgPSAoZGF0YTogTmF0aXZlQXR0cmlidXRlVmFsdWVbXSwgb3B0aW9ucz86IG1hcnNoYWxsT3B0aW9ucyk6IHsgTDogQXR0cmlidXRlVmFsdWVbXSB9ID0+ICh7XG4gIEw6IGRhdGFcbiAgICAuZmlsdGVyKChpdGVtKSA9PiAhb3B0aW9ucz8ucmVtb3ZlVW5kZWZpbmVkVmFsdWVzIHx8IChvcHRpb25zPy5yZW1vdmVVbmRlZmluZWRWYWx1ZXMgJiYgaXRlbSAhPT0gdW5kZWZpbmVkKSlcbiAgICAubWFwKChpdGVtKSA9PiBjb252ZXJ0VG9BdHRyKGl0ZW0sIG9wdGlvbnMpKSxcbn0pO1xuXG5jb25zdCBjb252ZXJ0VG9TZXRBdHRyID0gKFxuICBzZXQ6IFNldDxhbnk+LFxuICBvcHRpb25zPzogbWFyc2hhbGxPcHRpb25zXG4pOiB7IE5TOiBzdHJpbmdbXSB9IHwgeyBCUzogVWludDhBcnJheVtdIH0gfCB7IFNTOiBzdHJpbmdbXSB9IHwgeyBOVUxMOiB0cnVlIH0gPT4ge1xuICBjb25zdCBzZXRUb09wZXJhdGUgPSBvcHRpb25zPy5yZW1vdmVVbmRlZmluZWRWYWx1ZXMgPyBuZXcgU2V0KFsuLi5zZXRdLmZpbHRlcigodmFsdWUpID0+IHZhbHVlICE9PSB1bmRlZmluZWQpKSA6IHNldDtcblxuICBpZiAoIW9wdGlvbnM/LnJlbW92ZVVuZGVmaW5lZFZhbHVlcyAmJiBzZXRUb09wZXJhdGUuaGFzKHVuZGVmaW5lZCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFBhc3Mgb3B0aW9ucy5yZW1vdmVVbmRlZmluZWRWYWx1ZXM9dHJ1ZSB0byByZW1vdmUgdW5kZWZpbmVkIHZhbHVlcyBmcm9tIG1hcC9hcnJheS9zZXQuYCk7XG4gIH1cblxuICBpZiAoc2V0VG9PcGVyYXRlLnNpemUgPT09IDApIHtcbiAgICBpZiAob3B0aW9ucz8uY29udmVydEVtcHR5VmFsdWVzKSB7XG4gICAgICByZXR1cm4gY29udmVydFRvTnVsbEF0dHIoKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBQYXNzIGEgbm9uLWVtcHR5IHNldCwgb3Igb3B0aW9ucy5jb252ZXJ0RW1wdHlWYWx1ZXM9dHJ1ZS5gKTtcbiAgfVxuXG4gIGNvbnN0IGl0ZW0gPSBzZXRUb09wZXJhdGUudmFsdWVzKCkubmV4dCgpLnZhbHVlO1xuICBpZiAodHlwZW9mIGl0ZW0gPT09IFwibnVtYmVyXCIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgTlM6IEFycmF5LmZyb20oc2V0VG9PcGVyYXRlKVxuICAgICAgICAubWFwKGNvbnZlcnRUb051bWJlckF0dHIpXG4gICAgICAgIC5tYXAoKGl0ZW0pID0+IGl0ZW0uTiksXG4gICAgfTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgaXRlbSA9PT0gXCJiaWdpbnRcIikge1xuICAgIHJldHVybiB7XG4gICAgICBOUzogQXJyYXkuZnJvbShzZXRUb09wZXJhdGUpXG4gICAgICAgIC5tYXAoY29udmVydFRvQmlnSW50QXR0cilcbiAgICAgICAgLm1hcCgoaXRlbSkgPT4gaXRlbS5OKSxcbiAgICB9O1xuICB9IGVsc2UgaWYgKHR5cGVvZiBpdGVtID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFNTOiBBcnJheS5mcm9tKHNldFRvT3BlcmF0ZSlcbiAgICAgICAgLm1hcChjb252ZXJ0VG9TdHJpbmdBdHRyKVxuICAgICAgICAubWFwKChpdGVtKSA9PiBpdGVtLlMpLFxuICAgIH07XG4gIH0gZWxzZSBpZiAoaXNCaW5hcnkoaXRlbSkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLy8gRG8gbm90IGFsdGVyIGJpbmFyeSBkYXRhIHBhc3NlZCBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1zZGstanMtdjMvaXNzdWVzLzE1MzBcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVHlwZSAnQXJyYXlCdWZmZXInIGlzIG5vdCBhc3NpZ25hYmxlIHRvIHR5cGUgJ1VpbnQ4QXJyYXknXG4gICAgICBCUzogQXJyYXkuZnJvbShzZXRUb09wZXJhdGUpXG4gICAgICAgIC5tYXAoY29udmVydFRvQmluYXJ5QXR0cilcbiAgICAgICAgLm1hcCgoaXRlbSkgPT4gaXRlbS5CKSxcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihgT25seSBOdW1iZXIgU2V0IChOUyksIEJpbmFyeSBTZXQgKEJTKSBvciBTdHJpbmcgU2V0IChTUykgYXJlIGFsbG93ZWQuYCk7XG4gIH1cbn07XG5cbmNvbnN0IGNvbnZlcnRUb01hcEF0dHJGcm9tSXRlcmFibGUgPSAoXG4gIGRhdGE6IE1hcDxzdHJpbmcsIE5hdGl2ZUF0dHJpYnV0ZVZhbHVlPixcbiAgb3B0aW9ucz86IG1hcnNoYWxsT3B0aW9uc1xuKTogeyBNOiB7IFtrZXk6IHN0cmluZ106IEF0dHJpYnV0ZVZhbHVlIH0gfSA9PiAoe1xuICBNOiAoKGRhdGEpID0+IHtcbiAgICBjb25zdCBtYXA6IHsgW2tleTogc3RyaW5nXTogQXR0cmlidXRlVmFsdWUgfSA9IHt9O1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIGRhdGEpIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwiZnVuY3Rpb25cIiAmJiAodmFsdWUgIT09IHVuZGVmaW5lZCB8fCAhb3B0aW9ucz8ucmVtb3ZlVW5kZWZpbmVkVmFsdWVzKSkge1xuICAgICAgICBtYXBba2V5XSA9IGNvbnZlcnRUb0F0dHIodmFsdWUsIG9wdGlvbnMpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWFwO1xuICB9KShkYXRhKSxcbn0pO1xuXG5jb25zdCBjb252ZXJ0VG9NYXBBdHRyRnJvbUVudW1lcmFibGVQcm9wcyA9IChcbiAgZGF0YTogeyBba2V5OiBzdHJpbmddOiBOYXRpdmVBdHRyaWJ1dGVWYWx1ZSB9LFxuICBvcHRpb25zPzogbWFyc2hhbGxPcHRpb25zXG4pOiB7IE06IHsgW2tleTogc3RyaW5nXTogQXR0cmlidXRlVmFsdWUgfSB9ID0+ICh7XG4gIE06ICgoZGF0YSkgPT4ge1xuICAgIGNvbnN0IG1hcDogeyBba2V5OiBzdHJpbmddOiBBdHRyaWJ1dGVWYWx1ZSB9ID0ge307XG4gICAgZm9yIChjb25zdCBrZXkgaW4gZGF0YSkge1xuICAgICAgY29uc3QgdmFsdWUgPSBkYXRhW2tleV07XG4gICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIgJiYgKHZhbHVlICE9PSB1bmRlZmluZWQgfHwgIW9wdGlvbnM/LnJlbW92ZVVuZGVmaW5lZFZhbHVlcykpIHtcbiAgICAgICAgbWFwW2tleV0gPSBjb252ZXJ0VG9BdHRyKHZhbHVlLCBvcHRpb25zKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1hcDtcbiAgfSkoZGF0YSksXG59KTtcblxuLy8gRm9yIGZ1dHVyZS1wcm9vZmluZzogdGhpcyBmdW5jdGlvbnMgYXJlIGNhbGxlZCBmcm9tIG11bHRpcGxlIHBsYWNlc1xuY29uc3QgY29udmVydFRvTnVsbEF0dHIgPSAoKTogeyBOVUxMOiB0cnVlIH0gPT4gKHsgTlVMTDogdHJ1ZSB9KTtcbmNvbnN0IGNvbnZlcnRUb0JpbmFyeUF0dHIgPSAoZGF0YTogTmF0aXZlQXR0cmlidXRlQmluYXJ5KTogeyBCOiBOYXRpdmVBdHRyaWJ1dGVCaW5hcnkgfSA9PiAoeyBCOiBkYXRhIH0pO1xuY29uc3QgY29udmVydFRvU3RyaW5nQXR0ciA9IChkYXRhOiBzdHJpbmcgfCBTdHJpbmcpOiB7IFM6IHN0cmluZyB9ID0+ICh7IFM6IGRhdGEudG9TdHJpbmcoKSB9KTtcbmNvbnN0IGNvbnZlcnRUb0JpZ0ludEF0dHIgPSAoZGF0YTogYmlnaW50KTogeyBOOiBzdHJpbmcgfSA9PiAoeyBOOiBkYXRhLnRvU3RyaW5nKCkgfSk7XG5cbmNvbnN0IHZhbGlkYXRlQmlnSW50QW5kVGhyb3cgPSAoZXJyb3JQcmVmaXg6IHN0cmluZykgPT4ge1xuICB0aHJvdyBuZXcgRXJyb3IoYCR7ZXJyb3JQcmVmaXh9ICR7dHlwZW9mIEJpZ0ludCA9PT0gXCJmdW5jdGlvblwiID8gXCJVc2UgQmlnSW50LlwiIDogXCJQYXNzIHN0cmluZyB2YWx1ZSBpbnN0ZWFkLlwifSBgKTtcbn07XG5cbmNvbnN0IGNvbnZlcnRUb051bWJlckF0dHIgPSAobnVtOiBudW1iZXIgfCBOdW1iZXIpOiB7IE46IHN0cmluZyB9ID0+IHtcbiAgaWYgKFxuICAgIFtOdW1iZXIuTmFOLCBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksIE51bWJlci5ORUdBVElWRV9JTkZJTklUWV1cbiAgICAgIC5tYXAoKHZhbCkgPT4gdmFsLnRvU3RyaW5nKCkpXG4gICAgICAuaW5jbHVkZXMobnVtLnRvU3RyaW5nKCkpXG4gICkge1xuICAgIHRocm93IG5ldyBFcnJvcihgU3BlY2lhbCBudW1lcmljIHZhbHVlICR7bnVtLnRvU3RyaW5nKCl9IGlzIG5vdCBhbGxvd2VkYCk7XG4gIH0gZWxzZSBpZiAobnVtID4gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpIHtcbiAgICB2YWxpZGF0ZUJpZ0ludEFuZFRocm93KGBOdW1iZXIgJHtudW0udG9TdHJpbmcoKX0gaXMgZ3JlYXRlciB0aGFuIE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLmApO1xuICB9IGVsc2UgaWYgKG51bSA8IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSKSB7XG4gICAgdmFsaWRhdGVCaWdJbnRBbmRUaHJvdyhgTnVtYmVyICR7bnVtLnRvU3RyaW5nKCl9IGlzIGxlc3NlciB0aGFuIE51bWJlci5NSU5fU0FGRV9JTlRFR0VSLmApO1xuICB9XG4gIHJldHVybiB7IE46IG51bS50b1N0cmluZygpIH07XG59O1xuXG5jb25zdCBpc0JpbmFyeSA9IChkYXRhOiBhbnkpOiBib29sZWFuID0+IHtcbiAgY29uc3QgYmluYXJ5VHlwZXMgPSBbXG4gICAgXCJBcnJheUJ1ZmZlclwiLFxuICAgIFwiQmxvYlwiLFxuICAgIFwiQnVmZmVyXCIsXG4gICAgXCJEYXRhVmlld1wiLFxuICAgIFwiRmlsZVwiLFxuICAgIFwiSW50OEFycmF5XCIsXG4gICAgXCJVaW50OEFycmF5XCIsXG4gICAgXCJVaW50OENsYW1wZWRBcnJheVwiLFxuICAgIFwiSW50MTZBcnJheVwiLFxuICAgIFwiVWludDE2QXJyYXlcIixcbiAgICBcIkludDMyQXJyYXlcIixcbiAgICBcIlVpbnQzMkFycmF5XCIsXG4gICAgXCJGbG9hdDMyQXJyYXlcIixcbiAgICBcIkZsb2F0NjRBcnJheVwiLFxuICAgIFwiQmlnSW50NjRBcnJheVwiLFxuICAgIFwiQmlnVWludDY0QXJyYXlcIixcbiAgXTtcblxuICBpZiAoZGF0YT8uY29uc3RydWN0b3IpIHtcbiAgICByZXR1cm4gYmluYXJ5VHlwZXMuaW5jbHVkZXMoZGF0YS5jb25zdHJ1Y3Rvci5uYW1lKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuIl19