UNPKG

@softchef/cdk-iot-device-management

Version:

IoT device management is composed of things, thing types, thing groups, jobs, files API services. The constructs can be used independently, that are based on full-managed service to create an API Gateway & Lambda function.

177 lines (176 loc) 7.95 kB
import { __read, __spreadArray, __values } from "tslib"; export var convertToAttr = function (data, options) { var _a, _b, _c, _d, _e, _f; if (data === undefined) { throw new Error("Pass options.removeUndefinedValues=true to remove undefined values from map/array/set."); } else if (data === null && typeof data === "object") { return convertToNullAttr(); } else if (Array.isArray(data)) { return convertToListAttr(data, options); } else if (((_a = data === null || data === void 0 ? void 0 : data.constructor) === null || _a === void 0 ? void 0 : _a.name) === "Set") { return convertToSetAttr(data, options); } else if (((_b = data === null || data === void 0 ? void 0 : data.constructor) === null || _b === void 0 ? void 0 : _b.name) === "Map") { return convertToMapAttrFromIterable(data, options); } else if (((_c = data === null || data === void 0 ? void 0 : data.constructor) === null || _c === void 0 ? void 0 : _c.name) === "Object" || (!data.constructor && typeof data === "object")) { return convertToMapAttrFromEnumerableProps(data, options); } else if (isBinary(data)) { if (data.length === 0 && (options === null || options === void 0 ? void 0 : options.convertEmptyValues)) { return convertToNullAttr(); } return convertToBinaryAttr(data); } else if (typeof data === "boolean" || ((_d = data === null || data === void 0 ? void 0 : data.constructor) === null || _d === void 0 ? void 0 : _d.name) === "Boolean") { return { BOOL: data.valueOf() }; } else if (typeof data === "number" || ((_e = data === null || data === void 0 ? void 0 : data.constructor) === null || _e === void 0 ? void 0 : _e.name) === "Number") { return convertToNumberAttr(data); } else if (typeof data === "bigint") { return convertToBigIntAttr(data); } else if (typeof data === "string" || ((_f = data === null || data === void 0 ? void 0 : data.constructor) === null || _f === void 0 ? void 0 : _f.name) === "String") { if (data.length === 0 && (options === null || options === void 0 ? void 0 : options.convertEmptyValues)) { return convertToNullAttr(); } return convertToStringAttr(data); } else if ((options === null || options === void 0 ? void 0 : options.convertClassInstanceToMap) && typeof data === "object") { return convertToMapAttrFromEnumerableProps(data, options); } throw new Error("Unsupported type passed: " + data + ". Pass options.convertClassInstanceToMap=true to marshall typeof object as map attribute."); }; var convertToListAttr = function (data, options) { return ({ L: data .filter(function (item) { return !(options === null || options === void 0 ? void 0 : options.removeUndefinedValues) || ((options === null || options === void 0 ? void 0 : options.removeUndefinedValues) && item !== undefined); }) .map(function (item) { return convertToAttr(item, options); }), }); }; var convertToSetAttr = function (set, options) { var setToOperate = (options === null || options === void 0 ? void 0 : options.removeUndefinedValues) ? new Set(__spreadArray([], __read(set)).filter(function (value) { return value !== undefined; })) : set; if (!(options === null || options === void 0 ? void 0 : options.removeUndefinedValues) && setToOperate.has(undefined)) { throw new Error("Pass options.removeUndefinedValues=true to remove undefined values from map/array/set."); } if (setToOperate.size === 0) { if (options === null || options === void 0 ? void 0 : options.convertEmptyValues) { return convertToNullAttr(); } throw new Error("Pass a non-empty set, or options.convertEmptyValues=true."); } var item = setToOperate.values().next().value; if (typeof item === "number") { return { NS: Array.from(setToOperate) .map(convertToNumberAttr) .map(function (item) { return item.N; }), }; } else if (typeof item === "bigint") { return { NS: Array.from(setToOperate) .map(convertToBigIntAttr) .map(function (item) { return item.N; }), }; } else if (typeof item === "string") { return { SS: Array.from(setToOperate) .map(convertToStringAttr) .map(function (item) { return item.S; }), }; } else if (isBinary(item)) { return { BS: Array.from(setToOperate) .map(convertToBinaryAttr) .map(function (item) { return item.B; }), }; } else { throw new Error("Only Number Set (NS), Binary Set (BS) or String Set (SS) are allowed."); } }; var convertToMapAttrFromIterable = function (data, options) { return ({ M: (function (data) { var e_1, _a; var map = {}; try { for (var data_1 = __values(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) { var _b = __read(data_1_1.value, 2), key = _b[0], value = _b[1]; if (typeof value !== "function" && (value !== undefined || !(options === null || options === void 0 ? void 0 : options.removeUndefinedValues))) { map[key] = convertToAttr(value, options); } } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (data_1_1 && !data_1_1.done && (_a = data_1.return)) _a.call(data_1); } finally { if (e_1) throw e_1.error; } } return map; })(data), }); }; var convertToMapAttrFromEnumerableProps = function (data, options) { return ({ M: (function (data) { var map = {}; for (var key in data) { var value = data[key]; if (typeof value !== "function" && (value !== undefined || !(options === null || options === void 0 ? void 0 : options.removeUndefinedValues))) { map[key] = convertToAttr(value, options); } } return map; })(data), }); }; var convertToNullAttr = function () { return ({ NULL: true }); }; var convertToBinaryAttr = function (data) { return ({ B: data }); }; var convertToStringAttr = function (data) { return ({ S: data.toString() }); }; var convertToBigIntAttr = function (data) { return ({ N: data.toString() }); }; var validateBigIntAndThrow = function (errorPrefix) { throw new Error(errorPrefix + " " + (typeof BigInt === "function" ? "Use BigInt." : "Pass string value instead.") + " "); }; var convertToNumberAttr = function (num) { if ([Number.NaN, Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY] .map(function (val) { return val.toString(); }) .includes(num.toString())) { throw new Error("Special numeric value " + num.toString() + " is not allowed"); } else if (num > Number.MAX_SAFE_INTEGER) { validateBigIntAndThrow("Number " + num.toString() + " is greater than Number.MAX_SAFE_INTEGER."); } else if (num < Number.MIN_SAFE_INTEGER) { validateBigIntAndThrow("Number " + num.toString() + " is lesser than Number.MIN_SAFE_INTEGER."); } return { N: num.toString() }; }; var isBinary = function (data) { var binaryTypes = [ "ArrayBuffer", "Blob", "Buffer", "DataView", "File", "Int8Array", "Uint8Array", "Uint8ClampedArray", "Int16Array", "Uint16Array", "Int32Array", "Uint32Array", "Float32Array", "Float64Array", "BigInt64Array", "BigUint64Array", ]; if (data === null || data === void 0 ? void 0 : data.constructor) { return binaryTypes.includes(data.constructor.name); } return false; };