storybook
Version:
Storybook: Develop, document, and test UI components in isolation
87 lines (81 loc) • 3.31 kB
JavaScript
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
};