UNPKG

magicbell

Version:
65 lines 2.61 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isOptionsHash = isOptionsHash; exports.assertHasValidOptions = assertHasValidOptions; exports.assertHasRequiredOptions = assertHasRequiredOptions; exports.assertHasSomeOptions = assertHasSomeOptions; exports.mergeHooks = mergeHooks; const utils_js_1 = require("../lib/utils.js"); const optionValidators = { host: utils_js_1.isString, maxRetryDelay: utils_js_1.isNumber, timeout: utils_js_1.isNumber, token: utils_js_1.isString, apiKey: utils_js_1.isString, maxRetries: utils_js_1.isNumber, userEmail: utils_js_1.isString, userExternalId: utils_js_1.isString, userHmac: utils_js_1.isString, idempotencyKey: utils_js_1.isString, telemetry: utils_js_1.isBoolean, apiSecret: utils_js_1.isString, appInfo: utils_js_1.isObject, features: utils_js_1.isObject, headers: utils_js_1.isObject, hooks: utils_js_1.isObject, cacheTTL: utils_js_1.isNumber, }; function isOptionsHash(object) { if (!(0, utils_js_1.isObject)(object)) return false; for (const key of Object.keys(object)) { if (!optionValidators[key]?.(object[key])) return false; } return true; } function assertHasValidOptions(options) { const invalidOptions = Object.keys(options).filter((x) => options[x] != null && !optionValidators[x]?.(options[x])); if (invalidOptions.length) { throw new Error(`You have provided invalid client options. Please check the options ${(0, utils_js_1.joinAnd)(...invalidOptions)}.`); } } function assertHasRequiredOptions(options, required) { const missingOptions = required.filter((x) => !(0, utils_js_1.hasOwn)(options, x) || options[x] == null || options[x] === ''); if (missingOptions.length) { throw new Error(`You have not provided all required client options. Please provide ${(0, utils_js_1.joinAnd)(...missingOptions)}.`); } } function assertHasSomeOptions(options, keys) { const missingOptions = keys.filter((x) => !(0, utils_js_1.hasOwn)(options, x) || options[x] == null || options[x] === ''); if (missingOptions.length === keys.length) { throw new Error(`You have not provided any of the required client options. Please provide ${(0, utils_js_1.joinOr)(...keys)}.`); } } function mergeHooks(...hooks) { const result = {}; for (const hook of hooks) { for (const key of Object.keys(hook || {})) { result[key] ??= []; result[key].push(...hook[key]); } } return result; } //# sourceMappingURL=options.js.map