UNPKG

@clerk/shared

Version:

Internal package utils used by the Clerk SDKs

123 lines (117 loc) 3.52 kB
const require_runtimeEnvironment = require('./runtimeEnvironment-DVXDje4R.js'); //#region src/utils/allSettled.ts /** * A ES6 compatible utility that implements `Promise.allSettled` * * @internal */ function allSettled(iterable) { const promises = Array.from(iterable).map((p) => p.then((value) => ({ status: "fulfilled", value }), (reason) => ({ status: "rejected", reason }))); return Promise.all(promises); } //#endregion //#region src/utils/logErrorInDevMode.ts const logErrorInDevMode = (message) => { if (require_runtimeEnvironment.isDevelopmentEnvironment()) console.error(`Clerk: ${message}`); }; //#endregion //#region src/utils/runIfFunctionOrReturn.ts /** * */ function runIfFunctionOrReturn(o) { if (typeof o === "function") return o(); return o; } //#endregion //#region src/utils/fastDeepMerge.ts const DANGEROUS_KEYS = new Set([ "__proto__", "constructor", "prototype" ]); /** * Merges 2 objects without creating new object references * The merged props will appear on the `target` object * If `target` already has a value for a given key it will not be overwritten */ const fastDeepMergeAndReplace = (source, target) => { if (!source || !target) return; for (const key in source) { if (DANGEROUS_KEYS.has(key)) continue; if (Object.prototype.hasOwnProperty.call(source, key) && source[key] !== null && typeof source[key] === `object`) { if (target[key] === void 0) target[key] = new (Object.getPrototypeOf(source[key])).constructor(); fastDeepMergeAndReplace(source[key], target[key]); } else if (Object.prototype.hasOwnProperty.call(source, key) && source[key] !== void 0) target[key] = source[key]; } }; const fastDeepMergeAndKeep = (source, target) => { if (!source || !target) return; for (const key in source) { if (DANGEROUS_KEYS.has(key)) continue; if (Object.prototype.hasOwnProperty.call(source, key) && source[key] !== null && typeof source[key] === `object`) { if (target[key] === void 0) target[key] = new (Object.getPrototypeOf(source[key])).constructor(); fastDeepMergeAndKeep(source[key], target[key]); } else if (Object.prototype.hasOwnProperty.call(source, key) && target[key] === void 0) target[key] = source[key]; } }; //#endregion //#region src/utils/timeLimit.ts function timeLimit(value, ms, abortController) { let timeoutId; const timeoutPromise = new Promise((_, reject) => { timeoutId = setTimeout(() => { const error = /* @__PURE__ */ new Error(`Timed out after ${ms}ms`); abortController?.abort(); reject(error); }, ms); timeoutId.unref?.(); }); return Promise.race([Promise.resolve(value), timeoutPromise]).finally(() => { clearTimeout(timeoutId); }); } //#endregion Object.defineProperty(exports, 'allSettled', { enumerable: true, get: function () { return allSettled; } }); Object.defineProperty(exports, 'fastDeepMergeAndKeep', { enumerable: true, get: function () { return fastDeepMergeAndKeep; } }); Object.defineProperty(exports, 'fastDeepMergeAndReplace', { enumerable: true, get: function () { return fastDeepMergeAndReplace; } }); Object.defineProperty(exports, 'logErrorInDevMode', { enumerable: true, get: function () { return logErrorInDevMode; } }); Object.defineProperty(exports, 'runIfFunctionOrReturn', { enumerable: true, get: function () { return runIfFunctionOrReturn; } }); Object.defineProperty(exports, 'timeLimit', { enumerable: true, get: function () { return timeLimit; } }); //# sourceMappingURL=utils-B43KYtlc.js.map