UNPKG

storybook

Version:

Storybook: Develop, document, and test UI components in isolation

87 lines (81 loc) 3.31 kB
import CJS_COMPAT_NODE_URL_qjinduibsyq from 'node:url'; import CJS_COMPAT_NODE_PATH_qjinduibsyq from 'node:path'; import CJS_COMPAT_NODE_MODULE_qjinduibsyq from "node:module"; var __filename = CJS_COMPAT_NODE_URL_qjinduibsyq.fileURLToPath(import.meta.url); var __dirname = CJS_COMPAT_NODE_PATH_qjinduibsyq.dirname(__filename); var require = CJS_COMPAT_NODE_MODULE_qjinduibsyq.createRequire(import.meta.url); // ------------------------------------------------------------ // end of CJS compatibility banner, injected by Storybook's esbuild configuration // ------------------------------------------------------------ // src/shared/open-service/service-error-serialization.ts var ERROR_MARKER = "__openServiceError__", RESERVED_KEYS = /* @__PURE__ */ new Set([ERROR_MARKER, "name", "message", "stack", "cause"]); function isPlainObject(value) { return typeof value == "object" && value !== null && !Array.isArray(value); } function isSerializedError(value) { return isPlainObject(value) && value[ERROR_MARKER] === !0; } function toTransportSafe(value) { if (value instanceof Error) return serializeError(value); if (Array.isArray(value)) return value.map((entry) => toTransportSafe(entry)); if (isPlainObject(value)) { let result = {}; for (let [key, entry] of Object.entries(value)) result[key] = toTransportSafe(entry); return result; } if (value === null) return null; let kind = typeof value; if (kind === "string" || kind === "number" || kind === "boolean") return value; if (kind === "bigint") return value.toString(); } function serializeError(value) { if (!(value instanceof Error)) return { [ERROR_MARKER]: !0, name: "Error", message: String(value) }; let properties = {}; for (let key of Object.keys(value)) RESERVED_KEYS.has(key) || (properties[key] = toTransportSafe(value[key])); return { [ERROR_MARKER]: !0, name: value.name, message: value.message, ...value.stack !== void 0 ? { stack: value.stack } : {}, ...value.cause !== void 0 ? { cause: toTransportSafe(value.cause) } : {}, ...Object.keys(properties).length > 0 ? { properties } : {} }; } function fromTransportSafe(value) { if (isSerializedError(value)) return deserializeError(value); if (Array.isArray(value)) return value.map((entry) => fromTransportSafe(entry)); if (isPlainObject(value)) { let result = {}; for (let [key, entry] of Object.entries(value)) result[key] = fromTransportSafe(entry); return result; } return value; } function deserializeError(serialized) { let error = new Error(serialized.message); if (error.name = serialized.name, serialized.stack !== void 0 && (error.stack = serialized.stack), "cause" in serialized && (error.cause = fromTransportSafe(serialized.cause)), serialized.properties) for (let [key, value] of Object.entries(serialized.properties)) error[key] = fromTransportSafe(value); return error; } // ../../node_modules/es-toolkit/dist/string/words.mjs var CASE_SPLIT_PATTERN = new RegExp("\\p{Lu}?\\p{Ll}+|[0-9]+|\\p{Lu}+(?!\\p{Ll})|\\p{Emoji_Presentation}|\\p{Extended_Pictographic}|\\p{L}+", "gu"); function words(str) { return Array.from(str.match(CASE_SPLIT_PATTERN) ?? []); } export { words, serializeError, deserializeError };