1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- "use strict";
- /**
- * Property helper functions.
- *
- * @_subsection api/utils:Properties [about-properties]
- */
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.defineProperties = exports.resolveProperties = void 0;
- function checkType(value, type, name) {
- const types = type.split("|").map(t => t.trim());
- for (let i = 0; i < types.length; i++) {
- switch (type) {
- case "any":
- return;
- case "bigint":
- case "boolean":
- case "number":
- case "string":
- if (typeof (value) === type) {
- return;
- }
- }
- }
- const error = new Error(`invalid value for type ${type}`);
- error.code = "INVALID_ARGUMENT";
- error.argument = `value.${name}`;
- error.value = value;
- throw error;
- }
- /**
- * Resolves to a new object that is a copy of %%value%%, but with all
- * values resolved.
- */
- async function resolveProperties(value) {
- const keys = Object.keys(value);
- const results = await Promise.all(keys.map((k) => Promise.resolve(value[k])));
- return results.reduce((accum, v, index) => {
- accum[keys[index]] = v;
- return accum;
- }, {});
- }
- exports.resolveProperties = resolveProperties;
- /**
- * Assigns the %%values%% to %%target%% as read-only values.
- *
- * It %%types%% is specified, the values are checked.
- */
- function defineProperties(target, values, types) {
- for (let key in values) {
- let value = values[key];
- const type = (types ? types[key] : null);
- if (type) {
- checkType(value, type, key);
- }
- Object.defineProperty(target, key, { enumerable: true, value, writable: false });
- }
- }
- exports.defineProperties = defineProperties;
- //# sourceMappingURL=properties.js.map
|