| 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
 
 
  |