@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.
- package/CHANGELOG.md +38 -0
- package/dist-cjs/convertToAttr.js +168 -0
- package/dist-cjs/convertToNative.js +63 -0
- package/dist-cjs/index.js +8 -0
- package/dist-cjs/marshall.js +6 -0
- package/dist-cjs/models.js +2 -0
- package/dist-cjs/unmarshall.js +6 -0
- package/dist-es/convertToAttr.js +176 -0
- package/dist-es/convertToNative.js +76 -0
- package/{dist/types/index.d.ts → dist-es/index.js} +0 -0
- package/dist-es/marshall.js +2 -0
- package/dist-es/models.js +1 -0
- package/dist-es/unmarshall.js +4 -0
- package/{dist/types → dist-types}/convertToAttr.d.ts +0 -0
- package/{dist/types → dist-types}/convertToNative.d.ts +0 -0
- package/{src/index.ts → dist-types/index.d.ts} +0 -0
- package/{dist/types → dist-types}/marshall.d.ts +0 -0
- package/{dist/types → dist-types}/models.d.ts +0 -0
- package/{dist/types → dist-types}/ts3.4/convertToAttr.d.ts +0 -0
- package/{dist/types → dist-types}/ts3.4/convertToNative.d.ts +0 -0
- package/{dist/types → dist-types}/ts3.4/index.d.ts +0 -0
- package/{dist/types → dist-types}/ts3.4/marshall.d.ts +0 -0
- package/{dist/types → dist-types}/ts3.4/models.d.ts +0 -0
- package/{dist/types → dist-types}/ts3.4/unmarshall.d.ts +0 -0
- package/{dist/types → dist-types}/unmarshall.d.ts +0 -0
- package/package.json +13 -9
- package/dist/cjs/convertToAttr.js +0 -181
- package/dist/cjs/convertToNative.js +0 -71
- package/dist/cjs/index.js +0 -9
- package/dist/cjs/marshall.js +0 -13
- package/dist/cjs/models.js +0 -3
- package/dist/cjs/unmarshall.js +0 -13
- package/dist/es/convertToAttr.js +0 -189
- package/dist/es/convertToNative.js +0 -84
- package/dist/es/index.js +0 -6
- package/dist/es/marshall.js +0 -9
- package/dist/es/models.js +0 -2
- package/dist/es/unmarshall.js +0 -11
- package/src/convertToAttr.ts +0 -190
- package/src/convertToNative.ts +0 -82
- package/src/marshall.ts +0 -33
- package/src/models.ts +0 -46
- package/src/unmarshall.ts +0 -27
- package/tsconfig.cjs.json +0 -10
- 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
|
package/dist/cjs/marshall.js
DELETED
|
@@ -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
|
package/dist/cjs/models.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBIGludGVyZmFjZSByZWNvZ25pemFibGUgYXMgYSBudW1lcmljIHZhbHVlIHRoYXQgc3RvcmVzIHRoZSB1bmRlcmx5aW5nIG51bWJlclxuICogYXMgYSBzdHJpbmcuXG4gKlxuICogSW50ZW5kZWQgdG8gYmUgYSBkZXNlcmlhbGl6YXRpb24gdGFyZ2V0IGZvciB0aGUgRHluYW1vREIgRG9jdW1lbnQgQ2xpZW50IHdoZW5cbiAqIHRoZSBgd3JhcE51bWJlcnNgIGZsYWcgaXMgc2V0LiBUaGlzIGFsbG93cyBmb3IgbnVtZXJpYyB2YWx1ZXMgdGhhdCBsb3NlXG4gKiBwcmVjaXNpb24gd2hlbiBjb252ZXJ0ZWQgdG8gSmF2YVNjcmlwdCdzIGBudW1iZXJgIHR5cGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTnVtYmVyVmFsdWUge1xuICByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBOYXRpdmVBdHRyaWJ1dGVWYWx1ZSA9XG4gIHwgTmF0aXZlU2NhbGFyQXR0cmlidXRlVmFsdWVcbiAgfCB7IFtrZXk6IHN0cmluZ106IE5hdGl2ZUF0dHJpYnV0ZVZhbHVlIH1cbiAgfCBOYXRpdmVBdHRyaWJ1dGVWYWx1ZVtdXG4gIHwgU2V0PG51bWJlciB8IGJpZ2ludCB8IE51bWJlclZhbHVlIHwgc3RyaW5nIHwgTmF0aXZlQXR0cmlidXRlQmluYXJ5IHwgdW5kZWZpbmVkPlxuICB8IEluc3RhbmNlVHlwZTx7IG5ldyAoLi4uYXJnczogYW55W10pOiBhbnkgfT47IC8vIGFjY2VwdHMgYW55IGNsYXNzIGluc3RhbmNlIHdpdGggb3B0aW9ucy5jb252ZXJ0Q2xhc3NJbnN0YW5jZVRvTWFwXG5cbmV4cG9ydCB0eXBlIE5hdGl2ZVNjYWxhckF0dHJpYnV0ZVZhbHVlID1cbiAgfCBudWxsXG4gIHwgdW5kZWZpbmVkXG4gIHwgYm9vbGVhblxuICB8IG51bWJlclxuICB8IE51bWJlclZhbHVlXG4gIHwgYmlnaW50XG4gIHwgTmF0aXZlQXR0cmlidXRlQmluYXJ5XG4gIHwgc3RyaW5nO1xuXG5leHBvcnQgdHlwZSBOYXRpdmVBdHRyaWJ1dGVCaW5hcnkgPVxuICB8IEFycmF5QnVmZmVyXG4gIHwgQmxvYlxuICB8IEJ1ZmZlclxuICB8IERhdGFWaWV3XG4gIHwgRmlsZVxuICB8IEludDhBcnJheVxuICB8IFVpbnQ4QXJyYXlcbiAgfCBVaW50OENsYW1wZWRBcnJheVxuICB8IEludDE2QXJyYXlcbiAgfCBVaW50MTZBcnJheVxuICB8IEludDMyQXJyYXlcbiAgfCBVaW50MzJBcnJheVxuICB8IEZsb2F0MzJBcnJheVxuICB8IEZsb2F0NjRBcnJheVxuICB8IEJpZ0ludDY0QXJyYXlcbiAgfCBCaWdVaW50NjRBcnJheTtcbiJdfQ==
|
package/dist/cjs/unmarshall.js
DELETED
|
@@ -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==
|
package/dist/es/convertToAttr.js
DELETED
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydFRvQXR0ci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb252ZXJ0VG9BdHRyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFLQTs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxJQUFNLGFBQWEsR0FBRyxVQUFDLElBQTBCLEVBQUUsT0FBeUI7O0lBQ2pGLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtRQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLHdGQUF3RixDQUFDLENBQUM7S0FDM0c7U0FBTSxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFO1FBQ3BELE9BQU8saUJBQWlCLEVBQUUsQ0FBQztLQUM1QjtTQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUM5QixPQUFPLGlCQUFpQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztLQUN6QztTQUFNLElBQUksQ0FBQSxNQUFBLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxXQUFXLDBDQUFFLElBQUksTUFBSyxLQUFLLEVBQUU7UUFDNUMsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFnQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQ3BEO1NBQU0sSUFBSSxDQUFBLE1BQUEsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLFdBQVcsMENBQUUsSUFBSSxNQUFLLEtBQUssRUFBRTtRQUM1QyxPQUFPLDRCQUE0QixDQUFDLElBQXlDLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDekY7U0FBTSxJQUNMLENBQUEsTUFBQSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsV0FBVywwQ0FBRSxJQUFJLE1BQUssUUFBUTtRQUNwQyw0RkFBNEY7UUFDNUYsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDLEVBQy9DO1FBQ0EsT0FBTyxtQ0FBbUMsQ0FBQyxJQUErQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQ3RHO1NBQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDekIsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsS0FBSSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsa0JBQWtCLENBQUEsRUFBRTtZQUNwRCxPQUFPLGlCQUFpQixFQUFFLENBQUM7U0FDNUI7UUFDRCxtRkFBbUY7UUFDbkYsbUdBQW1HO1FBQ25HLE9BQU8sbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDbEM7U0FBTSxJQUFJLE9BQU8sSUFBSSxLQUFLLFNBQVMsSUFBSSxDQUFBLE1BQUEsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLFdBQVcsMENBQUUsSUFBSSxNQUFLLFNBQVMsRUFBRTtRQUM3RSxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO0tBQ2pDO1NBQU0sSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksQ0FBQSxNQUFBLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxXQUFXLDBDQUFFLElBQUksTUFBSyxRQUFRLEVBQUU7UUFDM0UsT0FBTyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNsQztTQUFNLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFO1FBQ25DLE9BQU8sbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDbEM7U0FBTSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxDQUFBLE1BQUEsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLFdBQVcsMENBQUUsSUFBSSxNQUFLLFFBQVEsRUFBRTtRQUMzRSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxLQUFJLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxrQkFBa0IsQ0FBQSxFQUFFO1lBQ3BELE9BQU8saUJBQWlCLEVBQUUsQ0FBQztTQUM1QjtRQUNELE9BQU8sbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDbEM7U0FBTSxJQUFJLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLHlCQUF5QixLQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtRQUN6RSxPQUFPLG1DQUFtQyxDQUFDLElBQStDLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDdEc7SUFDRCxNQUFNLElBQUksS0FBSyxDQUNiLDhCQUE0QixJQUFJLDhGQUEyRixDQUM1SCxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsSUFBTSxpQkFBaUIsR0FBRyxVQUFDLElBQTRCLEVBQUUsT0FBeUIsSUFBOEIsT0FBQSxDQUFDO0lBQy9HLENBQUMsRUFBRSxJQUFJO1NBQ0osTUFBTSxDQUFDLFVBQUMsSUFBSSxJQUFLLE9BQUEsQ0FBQyxDQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxxQkFBcUIsQ0FBQSxJQUFJLENBQUMsQ0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUscUJBQXFCLEtBQUksSUFBSSxLQUFLLFNBQVMsQ0FBQyxFQUF6RixDQUF5RixDQUFDO1NBQzNHLEdBQUcsQ0FBQyxVQUFDLElBQUksSUFBSyxPQUFBLGFBQWEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEVBQTVCLENBQTRCLENBQUM7Q0FDL0MsQ0FBQyxFQUo4RyxDQUk5RyxDQUFDO0FBRUgsSUFBTSxnQkFBZ0IsR0FBRyxVQUN2QixHQUFhLEVBQ2IsT0FBeUI7SUFFekIsSUFBTSxZQUFZLEdBQUcsQ0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUscUJBQXFCLEVBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLHlCQUFJLEdBQUcsR0FBRSxNQUFNLENBQUMsVUFBQyxLQUFLLElBQUssT0FBQSxLQUFLLEtBQUssU0FBUyxFQUFuQixDQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBRXJILElBQUksQ0FBQyxDQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxxQkFBcUIsQ0FBQSxJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUU7UUFDbEUsTUFBTSxJQUFJLEtBQUssQ0FBQyx3RkFBd0YsQ0FBQyxDQUFDO0tBQzNHO0lBRUQsSUFBSSxZQUFZLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRTtRQUMzQixJQUFJLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxrQkFBa0IsRUFBRTtZQUMvQixPQUFPLGlCQUFpQixFQUFFLENBQUM7U0FDNUI7UUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUM7S0FDOUU7SUFFRCxJQUFNLElBQUksR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ2hELElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFO1FBQzVCLE9BQU87WUFDTCxFQUFFLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7aUJBQ3pCLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQztpQkFDeEIsR0FBRyxDQUFDLFVBQUMsSUFBSSxJQUFLLE9BQUEsSUFBSSxDQUFDLENBQUMsRUFBTixDQUFNLENBQUM7U0FDekIsQ0FBQztLQUNIO1NBQU0sSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUU7UUFDbkMsT0FBTztZQUNMLEVBQUUsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztpQkFDekIsR0FBRyxDQUFDLG1CQUFtQixDQUFDO2lCQUN4QixHQUFHLENBQUMsVUFBQyxJQUFJLElBQUssT0FBQSxJQUFJLENBQUMsQ0FBQyxFQUFOLENBQU0sQ0FBQztTQUN6QixDQUFDO0tBQ0g7U0FBTSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtRQUNuQyxPQUFPO1lBQ0wsRUFBRSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO2lCQUN6QixHQUFHLENBQUMsbUJBQW1CLENBQUM7aUJBQ3hCLEdBQUcsQ0FBQyxVQUFDLElBQUksSUFBSyxPQUFBLElBQUksQ0FBQyxDQUFDLEVBQU4sQ0FBTSxDQUFDO1NBQ3pCLENBQUM7S0FDSDtTQUFNLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ3pCLE9BQU87WUFDTCxtRkFBbUY7WUFDbkYsNkVBQTZFO1lBQzdFLEVBQUUsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztpQkFDekIsR0FBRyxDQUFDLG1CQUFtQixDQUFDO2lCQUN4QixHQUFHLENBQUMsVUFBQyxJQUFJLElBQUssT0FBQSxJQUFJLENBQUMsQ0FBQyxFQUFOLENBQU0sQ0FBQztTQUN6QixDQUFDO0tBQ0g7U0FBTTtRQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsdUVBQXVFLENBQUMsQ0FBQztLQUMxRjtBQUNILENBQUMsQ0FBQztBQUVGLElBQU0sNEJBQTRCLEdBQUcsVUFDbkMsSUFBdUMsRUFDdkMsT0FBeUIsSUFDb0IsT0FBQSxDQUFDO0lBQzlDLENBQUMsRUFBRSxDQUFDLFVBQUMsSUFBSTs7UUFDUCxJQUFNLEdBQUcsR0FBc0MsRUFBRSxDQUFDOztZQUNsRCxLQUEyQixJQUFBLFNBQUEsU0FBQSxJQUFJLENBQUEsMEJBQUEsNENBQUU7Z0JBQXRCLElBQUEsS0FBQSx5QkFBWSxFQUFYLEdBQUcsUUFBQSxFQUFFLEtBQUssUUFBQTtnQkFDcEIsSUFBSSxPQUFPLEtBQUssS0FBSyxVQUFVLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxJQUFJLENBQUMsQ0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUscUJBQXFCLENBQUEsQ0FBQyxFQUFFO29CQUMzRixHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsYUFBYSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztpQkFDMUM7YUFDRjs7Ozs7Ozs7O1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7Q0FDVCxDQUFDLEVBVjZDLENBVTdDLENBQUM7QUFFSCxJQUFNLG1DQUFtQyxHQUFHLFVBQzFDLElBQTZDLEVBQzdDLE9BQXlCLElBQ29CLE9BQUEsQ0FBQztJQUM5QyxDQUFDLEVBQUUsQ0FBQyxVQUFDLElBQUk7UUFDUCxJQUFNLEdBQUcsR0FBc0MsRUFBRSxDQUFDO1FBQ2xELEtBQUssSUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3RCLElBQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QixJQUFJLE9BQU8sS0FBSyxLQUFLLFVBQVUsSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksQ0FBQyxDQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxxQkFBcUIsQ0FBQSxDQUFDLEVBQUU7Z0JBQzNGLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxhQUFhLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2FBQzFDO1NBQ0Y7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztDQUNULENBQUMsRUFYNkMsQ0FXN0MsQ0FBQztBQUVILHNFQUFzRTtBQUN0RSxJQUFNLGlCQUFpQixHQUFHLGNBQXNCLE9BQUEsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFoQixDQUFnQixDQUFDO0FBQ2pFLElBQU0sbUJBQW1CLEdBQUcsVUFBQyxJQUEyQixJQUFtQyxPQUFBLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBYixDQUFhLENBQUM7QUFDekcsSUFBTSxtQkFBbUIsR0FBRyxVQUFDLElBQXFCLElBQW9CLE9BQUEsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxFQUF4QixDQUF3QixDQUFDO0FBQy9GLElBQU0sbUJBQW1CLEdBQUcsVUFBQyxJQUFZLElBQW9CLE9BQUEsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxFQUF4QixDQUF3QixDQUFDO0FBRXRGLElBQU0sc0JBQXNCLEdBQUcsVUFBQyxXQUFtQjtJQUNqRCxNQUFNLElBQUksS0FBSyxDQUFJLFdBQVcsVUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsNEJBQTRCLE9BQUcsQ0FBQyxDQUFDO0FBQ3BILENBQUMsQ0FBQztBQUVGLElBQU0sbUJBQW1CLEdBQUcsVUFBQyxHQUFvQjtJQUMvQyxJQUNFLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLGlCQUFpQixDQUFDO1NBQzdELEdBQUcsQ0FBQyxVQUFDLEdBQUcsSUFBSyxPQUFBLEdBQUcsQ0FBQyxRQUFRLEVBQUUsRUFBZCxDQUFjLENBQUM7U0FDNUIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUMzQjtRQUNBLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQXlCLEdBQUcsQ0FBQyxRQUFRLEVBQUUsb0JBQWlCLENBQUMsQ0FBQztLQUMzRTtTQUFNLElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRTtRQUN4QyxzQkFBc0IsQ0FBQyxZQUFVLEdBQUcsQ0FBQyxRQUFRLEVBQUUsOENBQTJDLENBQUMsQ0FBQztLQUM3RjtTQUFNLElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRTtRQUN4QyxzQkFBc0IsQ0FBQyxZQUFVLEdBQUcsQ0FBQyxRQUFRLEVBQUUsNkNBQTBDLENBQUMsQ0FBQztLQUM1RjtJQUNELE9BQU8sRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7QUFDL0IsQ0FBQyxDQUFDO0FBRUYsSUFBTSxRQUFRLEdBQUcsVUFBQyxJQUFTO0lBQ3pCLElBQU0sV0FBVyxHQUFHO1FBQ2xCLGFBQWE7UUFDYixNQUFNO1FBQ04sUUFBUTtRQUNSLFVBQVU7UUFDVixNQUFNO1FBQ04sV0FBVztRQUNYLFlBQVk7UUFDWixtQkFBbUI7UUFDbkIsWUFBWTtRQUNaLGFBQWE7UUFDYixZQUFZO1FBQ1osYUFBYTtRQUNiLGNBQWM7UUFDZCxjQUFjO1FBQ2QsZUFBZTtRQUNmLGdCQUFnQjtLQUNqQixDQUFDO0lBRUYsSUFBSSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsV0FBVyxFQUFFO1FBQ3JCLE9BQU8sV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3BEO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdHRyaWJ1dGVWYWx1ZSB9IGZyb20gXCJAYXdzLXNkay9jbGllbnQtZHluYW1vZGJcIjtcblxuaW1wb3J0IHsgbWFyc2hhbGxPcHRpb25zIH0gZnJvbSBcIi4vbWFyc2hhbGxcIjtcbmltcG9ydCB7IE5hdGl2ZUF0dHJpYnV0ZUJpbmFyeSwgTmF0aXZlQXR0cmlidXRlVmFsdWUsIE5hdGl2ZVNjYWxhckF0dHJpYnV0ZVZhbHVlIH0gZnJvbSBcIi4vbW9kZWxzXCI7XG5cbi8qKlxuICogQ29udmVydCBhIEphdmFTY3JpcHQgdmFsdWUgdG8gaXRzIGVxdWl2YWxlbnQgRHluYW1vREIgQXR0cmlidXRlVmFsdWUgdHlwZVxuICpcbiAqIEBwYXJhbSB7TmF0aXZlQXR0cmlidXRlVmFsdWV9IGRhdGEgLSBUaGUgZGF0YSB0byBjb252ZXJ0IHRvIGEgRHluYW1vREIgQXR0cmlidXRlVmFsdWVcbiAqIEBwYXJhbSB7bWFyc2hhbGxPcHRpb25zfSBvcHRpb25zIC0gQW4gb3B0aW9uYWwgY29uZmlndXJhdGlvbiBvYmplY3QgZm9yIGBjb252ZXJ0VG9BdHRyYFxuICovXG5leHBvcnQgY29uc3QgY29udmVydFRvQXR0ciA9IChkYXRhOiBOYXRpdmVBdHRyaWJ1dGVWYWx1ZSwgb3B0aW9ucz86IG1hcnNoYWxsT3B0aW9ucyk6IEF0dHJpYnV0ZVZhbHVlID0+IHtcbiAgaWYgKGRhdGEgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgUGFzcyBvcHRpb25zLnJlbW92ZVVuZGVmaW5lZFZhbHVlcz10cnVlIHRvIHJlbW92ZSB1bmRlZmluZWQgdmFsdWVzIGZyb20gbWFwL2FycmF5L3NldC5gKTtcbiAgfSBlbHNlIGlmIChkYXRhID09PSBudWxsICYmIHR5cGVvZiBkYXRhID09PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIGNvbnZlcnRUb051bGxBdHRyKCk7XG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgIHJldHVybiBjb252ZXJ0VG9MaXN0QXR0cihkYXRhLCBvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChkYXRhPy5jb25zdHJ1Y3Rvcj8ubmFtZSA9PT0gXCJTZXRcIikge1xuICAgIHJldHVybiBjb252ZXJ0VG9TZXRBdHRyKGRhdGEgYXMgU2V0PGFueT4sIG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGRhdGE/LmNvbnN0cnVjdG9yPy5uYW1lID09PSBcIk1hcFwiKSB7XG4gICAgcmV0dXJuIGNvbnZlcnRUb01hcEF0dHJGcm9tSXRlcmFibGUoZGF0YSBhcyBNYXA8c3RyaW5nLCBOYXRpdmVBdHRyaWJ1dGVWYWx1ZT4sIG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKFxuICAgIGRhdGE/LmNvbnN0cnVjdG9yPy5uYW1lID09PSBcIk9iamVjdFwiIHx8XG4gICAgLy8gZm9yIG9iamVjdCB3aGljaCBpcyByZXN1bHQgb2YgT2JqZWN0LmNyZWF0ZShudWxsKSwgd2hpY2ggZG9lc24ndCBoYXZlIGNvbnN0cnVjdG9yIGRlZmluZWRcbiAgICAoIWRhdGEuY29uc3RydWN0b3IgJiYgdHlwZW9mIGRhdGEgPT09IFwib2JqZWN0XCIpXG4gICkge1xuICAgIHJldHVybiBjb252ZXJ0VG9NYXBBdHRyRnJvbUVudW1lcmFibGVQcm9wcyhkYXRhIGFzIHsgW2tleTogc3RyaW5nXTogTmF0aXZlQXR0cmlidXRlVmFsdWUgfSwgb3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNCaW5hcnkoZGF0YSkpIHtcbiAgICBpZiAoZGF0YS5sZW5ndGggPT09IDAgJiYgb3B0aW9ucz8uY29udmVydEVtcHR5VmFsdWVzKSB7XG4gICAgICByZXR1cm4gY29udmVydFRvTnVsbEF0dHIoKTtcbiAgICB9XG4gICAgLy8gRG8gbm90IGFsdGVyIGJpbmFyeSBkYXRhIHBhc3NlZCBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1zZGstanMtdjMvaXNzdWVzLzE1MzBcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFR5cGUgJ3sgQjogTmF0aXZlQXR0cmlidXRlQmluYXJ5OyB9JyBpcyBub3QgYXNzaWduYWJsZSB0byB0eXBlICdBdHRyaWJ1dGVWYWx1ZSdcbiAgICByZXR1cm4gY29udmVydFRvQmluYXJ5QXR0cihkYXRhKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgZGF0YSA9PT0gXCJib29sZWFuXCIgfHwgZGF0YT8uY29uc3RydWN0b3I/Lm5hbWUgPT09IFwiQm9vbGVhblwiKSB7XG4gICAgcmV0dXJuIHsgQk9PTDogZGF0YS52YWx1ZU9mKCkgfTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgZGF0YSA9PT0gXCJudW1iZXJcIiB8fCBkYXRhPy5jb25zdHJ1Y3Rvcj8ubmFtZSA9PT0gXCJOdW1iZXJcIikge1xuICAgIHJldHVybiBjb252ZXJ0VG9OdW1iZXJBdHRyKGRhdGEpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBkYXRhID09PSBcImJpZ2ludFwiKSB7XG4gICAgcmV0dXJuIGNvbnZlcnRUb0JpZ0ludEF0dHIoZGF0YSk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIgfHwgZGF0YT8uY29uc3RydWN0b3I/Lm5hbWUgPT09IFwiU3RyaW5nXCIpIHtcbiAgICBpZiAoZGF0YS5sZW5ndGggPT09IDAgJiYgb3B0aW9ucz8uY29udmVydEVtcHR5VmFsdWVzKSB7XG4gICAgICByZXR1cm4gY29udmVydFRvTnVsbEF0dHIoKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbnZlcnRUb1N0cmluZ0F0dHIoZGF0YSk7XG4gIH0gZWxzZSBpZiAob3B0aW9ucz8uY29udmVydENsYXNzSW5zdGFuY2VUb01hcCAmJiB0eXBlb2YgZGF0YSA9PT0gXCJvYmplY3RcIikge1xuICAgIHJldHVybiBjb252ZXJ0VG9NYXBBdHRyRnJvbUVudW1lcmFibGVQcm9wcyhkYXRhIGFzIHsgW2tleTogc3RyaW5nXTogTmF0aXZlQXR0cmlidXRlVmFsdWUgfSwgb3B0aW9ucyk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgIGBVbnN1cHBvcnRlZCB0eXBlIHBhc3NlZDogJHtkYXRhfS4gUGFzcyBvcHRpb25zLmNvbnZlcnRDbGFzc0luc3RhbmNlVG9NYXA9dHJ1ZSB0byBtYXJzaGFsbCB0eXBlb2Ygb2JqZWN0IGFzIG1hcCBhdHRyaWJ1dGUuYFxuICApO1xufTtcblxuY29uc3QgY29udmVydFRvTGlzdEF0dHIgPSAoZGF0YTogTmF0aXZlQXR0cmlidXRlVmFsdWVbXSwgb3B0aW9ucz86IG1hcnNoYWxsT3B0aW9ucyk6IHsgTDogQXR0cmlidXRlVmFsdWVbXSB9ID0+ICh7XG4gIEw6IGRhdGFcbiAgICAuZmlsdGVyKChpdGVtKSA9PiAhb3B0aW9ucz8ucmVtb3ZlVW5kZWZpbmVkVmFsdWVzIHx8IChvcHRpb25zPy5yZW1vdmVVbmRlZmluZWRWYWx1ZXMgJiYgaXRlbSAhPT0gdW5kZWZpbmVkKSlcbiAgICAubWFwKChpdGVtKSA9PiBjb252ZXJ0VG9BdHRyKGl0ZW0sIG9wdGlvbnMpKSxcbn0pO1xuXG5jb25zdCBjb252ZXJ0VG9TZXRBdHRyID0gKFxuICBzZXQ6IFNldDxhbnk+LFxuICBvcHRpb25zPzogbWFyc2hhbGxPcHRpb25zXG4pOiB7IE5TOiBzdHJpbmdbXSB9IHwgeyBCUzogVWludDhBcnJheVtdIH0gfCB7IFNTOiBzdHJpbmdbXSB9IHwgeyBOVUxMOiB0cnVlIH0gPT4ge1xuICBjb25zdCBzZXRUb09wZXJhdGUgPSBvcHRpb25zPy5yZW1vdmVVbmRlZmluZWRWYWx1ZXMgPyBuZXcgU2V0KFsuLi5zZXRdLmZpbHRlcigodmFsdWUpID0+IHZhbHVlICE9PSB1bmRlZmluZWQpKSA6IHNldDtcblxuICBpZiAoIW9wdGlvbnM/LnJlbW92ZVVuZGVmaW5lZFZhbHVlcyAmJiBzZXRUb09wZXJhdGUuaGFzKHVuZGVmaW5lZCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFBhc3Mgb3B0aW9ucy5yZW1vdmVVbmRlZmluZWRWYWx1ZXM9dHJ1ZSB0byByZW1vdmUgdW5kZWZpbmVkIHZhbHVlcyBmcm9tIG1hcC9hcnJheS9zZXQuYCk7XG4gIH1cblxuICBpZiAoc2V0VG9PcGVyYXRlLnNpemUgPT09IDApIHtcbiAgICBpZiAob3B0aW9ucz8uY29udmVydEVtcHR5VmFsdWVzKSB7XG4gICAgICByZXR1cm4gY29udmVydFRvTnVsbEF0dHIoKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBQYXNzIGEgbm9uLWVtcHR5IHNldCwgb3Igb3B0aW9ucy5jb252ZXJ0RW1wdHlWYWx1ZXM9dHJ1ZS5gKTtcbiAgfVxuXG4gIGNvbnN0IGl0ZW0gPSBzZXRUb09wZXJhdGUudmFsdWVzKCkubmV4dCgpLnZhbHVlO1xuICBpZiAodHlwZW9mIGl0ZW0gPT09IFwibnVtYmVyXCIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgTlM6IEFycmF5LmZyb20oc2V0VG9PcGVyYXRlKVxuICAgICAgICAubWFwKGNvbnZlcnRUb051bWJlckF0dHIpXG4gICAgICAgIC5tYXAoKGl0ZW0pID0+IGl0ZW0uTiksXG4gICAgfTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgaXRlbSA9PT0gXCJiaWdpbnRcIikge1xuICAgIHJldHVybiB7XG4gICAgICBOUzogQXJyYXkuZnJvbShzZXRUb09wZXJhdGUpXG4gICAgICAgIC5tYXAoY29udmVydFRvQmlnSW50QXR0cilcbiAgICAgICAgLm1hcCgoaXRlbSkgPT4gaXRlbS5OKSxcbiAgICB9O1xuICB9IGVsc2UgaWYgKHR5cGVvZiBpdGVtID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFNTOiBBcnJheS5mcm9tKHNldFRvT3BlcmF0ZSlcbiAgICAgICAgLm1hcChjb252ZXJ0VG9TdHJpbmdBdHRyKVxuICAgICAgICAubWFwKChpdGVtKSA9PiBpdGVtLlMpLFxuICAgIH07XG4gIH0gZWxzZSBpZiAoaXNCaW5hcnkoaXRlbSkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLy8gRG8gbm90IGFsdGVyIGJpbmFyeSBkYXRhIHBhc3NlZCBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1zZGstanMtdjMvaXNzdWVzLzE1MzBcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVHlwZSAnQXJyYXlCdWZmZXInIGlzIG5vdCBhc3NpZ25hYmxlIHRvIHR5cGUgJ1VpbnQ4QXJyYXknXG4gICAgICBCUzogQXJyYXkuZnJvbShzZXRUb09wZXJhdGUpXG4gICAgICAgIC5tYXAoY29udmVydFRvQmluYXJ5QXR0cilcbiAgICAgICAgLm1hcCgoaXRlbSkgPT4gaXRlbS5CKSxcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihgT25seSBOdW1iZXIgU2V0IChOUyksIEJpbmFyeSBTZXQgKEJTKSBvciBTdHJpbmcgU2V0IChTUykgYXJlIGFsbG93ZWQuYCk7XG4gIH1cbn07XG5cbmNvbnN0IGNvbnZlcnRUb01hcEF0dHJGcm9tSXRlcmFibGUgPSAoXG4gIGRhdGE6IE1hcDxzdHJpbmcsIE5hdGl2ZUF0dHJpYnV0ZVZhbHVlPixcbiAgb3B0aW9ucz86IG1hcnNoYWxsT3B0aW9uc1xuKTogeyBNOiB7IFtrZXk6IHN0cmluZ106IEF0dHJpYnV0ZVZhbHVlIH0gfSA9PiAoe1xuICBNOiAoKGRhdGEpID0+IHtcbiAgICBjb25zdCBtYXA6IHsgW2tleTogc3RyaW5nXTogQXR0cmlidXRlVmFsdWUgfSA9IHt9O1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIGRhdGEpIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwiZnVuY3Rpb25cIiAmJiAodmFsdWUgIT09IHVuZGVmaW5lZCB8fCAhb3B0aW9ucz8ucmVtb3ZlVW5kZWZpbmVkVmFsdWVzKSkge1xuICAgICAgICBtYXBba2V5XSA9IGNvbnZlcnRUb0F0dHIodmFsdWUsIG9wdGlvbnMpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWFwO1xuICB9KShkYXRhKSxcbn0pO1xuXG5jb25zdCBjb252ZXJ0VG9NYXBBdHRyRnJvbUVudW1lcmFibGVQcm9wcyA9IChcbiAgZGF0YTogeyBba2V5OiBzdHJpbmddOiBOYXRpdmVBdHRyaWJ1dGVWYWx1ZSB9LFxuICBvcHRpb25zPzogbWFyc2hhbGxPcHRpb25zXG4pOiB7IE06IHsgW2tleTogc3RyaW5nXTogQXR0cmlidXRlVmFsdWUgfSB9ID0+ICh7XG4gIE06ICgoZGF0YSkgPT4ge1xuICAgIGNvbnN0IG1hcDogeyBba2V5OiBzdHJpbmddOiBBdHRyaWJ1dGVWYWx1ZSB9ID0ge307XG4gICAgZm9yIChjb25zdCBrZXkgaW4gZGF0YSkge1xuICAgICAgY29uc3QgdmFsdWUgPSBkYXRhW2tleV07XG4gICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIgJiYgKHZhbHVlICE9PSB1bmRlZmluZWQgfHwgIW9wdGlvbnM/LnJlbW92ZVVuZGVmaW5lZFZhbHVlcykpIHtcbiAgICAgICAgbWFwW2tleV0gPSBjb252ZXJ0VG9BdHRyKHZhbHVlLCBvcHRpb25zKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1hcDtcbiAgfSkoZGF0YSksXG59KTtcblxuLy8gRm9yIGZ1dHVyZS1wcm9vZmluZzogdGhpcyBmdW5jdGlvbnMgYXJlIGNhbGxlZCBmcm9tIG11bHRpcGxlIHBsYWNlc1xuY29uc3QgY29udmVydFRvTnVsbEF0dHIgPSAoKTogeyBOVUxMOiB0cnVlIH0gPT4gKHsgTlVMTDogdHJ1ZSB9KTtcbmNvbnN0IGNvbnZlcnRUb0JpbmFyeUF0dHIgPSAoZGF0YTogTmF0aXZlQXR0cmlidXRlQmluYXJ5KTogeyBCOiBOYXRpdmVBdHRyaWJ1dGVCaW5hcnkgfSA9PiAoeyBCOiBkYXRhIH0pO1xuY29uc3QgY29udmVydFRvU3RyaW5nQXR0ciA9IChkYXRhOiBzdHJpbmcgfCBTdHJpbmcpOiB7IFM6IHN0cmluZyB9ID0+ICh7IFM6IGRhdGEudG9TdHJpbmcoKSB9KTtcbmNvbnN0IGNvbnZlcnRUb0JpZ0ludEF0dHIgPSAoZGF0YTogYmlnaW50KTogeyBOOiBzdHJpbmcgfSA9PiAoeyBOOiBkYXRhLnRvU3RyaW5nKCkgfSk7XG5cbmNvbnN0IHZhbGlkYXRlQmlnSW50QW5kVGhyb3cgPSAoZXJyb3JQcmVmaXg6IHN0cmluZykgPT4ge1xuICB0aHJvdyBuZXcgRXJyb3IoYCR7ZXJyb3JQcmVmaXh9ICR7dHlwZW9mIEJpZ0ludCA9PT0gXCJmdW5jdGlvblwiID8gXCJVc2UgQmlnSW50LlwiIDogXCJQYXNzIHN0cmluZyB2YWx1ZSBpbnN0ZWFkLlwifSBgKTtcbn07XG5cbmNvbnN0IGNvbnZlcnRUb051bWJlckF0dHIgPSAobnVtOiBudW1iZXIgfCBOdW1iZXIpOiB7IE46IHN0cmluZyB9ID0+IHtcbiAgaWYgKFxuICAgIFtOdW1iZXIuTmFOLCBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksIE51bWJlci5ORUdBVElWRV9JTkZJTklUWV1cbiAgICAgIC5tYXAoKHZhbCkgPT4gdmFsLnRvU3RyaW5nKCkpXG4gICAgICAuaW5jbHVkZXMobnVtLnRvU3RyaW5nKCkpXG4gICkge1xuICAgIHRocm93IG5ldyBFcnJvcihgU3BlY2lhbCBudW1lcmljIHZhbHVlICR7bnVtLnRvU3RyaW5nKCl9IGlzIG5vdCBhbGxvd2VkYCk7XG4gIH0gZWxzZSBpZiAobnVtID4gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpIHtcbiAgICB2YWxpZGF0ZUJpZ0ludEFuZFRocm93KGBOdW1iZXIgJHtudW0udG9TdHJpbmcoKX0gaXMgZ3JlYXRlciB0aGFuIE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLmApO1xuICB9IGVsc2UgaWYgKG51bSA8IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSKSB7XG4gICAgdmFsaWRhdGVCaWdJbnRBbmRUaHJvdyhgTnVtYmVyICR7bnVtLnRvU3RyaW5nKCl9IGlzIGxlc3NlciB0aGFuIE51bWJlci5NSU5fU0FGRV9JTlRFR0VSLmApO1xuICB9XG4gIHJldHVybiB7IE46IG51bS50b1N0cmluZygpIH07XG59O1xuXG5jb25zdCBpc0JpbmFyeSA9IChkYXRhOiBhbnkpOiBib29sZWFuID0+IHtcbiAgY29uc3QgYmluYXJ5VHlwZXMgPSBbXG4gICAgXCJBcnJheUJ1ZmZlclwiLFxuICAgIFwiQmxvYlwiLFxuICAgIFwiQnVmZmVyXCIsXG4gICAgXCJEYXRhVmlld1wiLFxuICAgIFwiRmlsZVwiLFxuICAgIFwiSW50OEFycmF5XCIsXG4gICAgXCJVaW50OEFycmF5XCIsXG4gICAgXCJVaW50OENsYW1wZWRBcnJheVwiLFxuICAgIFwiSW50MTZBcnJheVwiLFxuICAgIFwiVWludDE2QXJyYXlcIixcbiAgICBcIkludDMyQXJyYXlcIixcbiAgICBcIlVpbnQzMkFycmF5XCIsXG4gICAgXCJGbG9hdDMyQXJyYXlcIixcbiAgICBcIkZsb2F0NjRBcnJheVwiLFxuICAgIFwiQmlnSW50NjRBcnJheVwiLFxuICAgIFwiQmlnVWludDY0QXJyYXlcIixcbiAgXTtcblxuICBpZiAoZGF0YT8uY29uc3RydWN0b3IpIHtcbiAgICByZXR1cm4gYmluYXJ5VHlwZXMuaW5jbHVkZXMoZGF0YS5jb25zdHJ1Y3Rvci5uYW1lKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuIl19
|