storybook
Version:
Storybook: Develop, document, and test UI components in isolation
1,467 lines (1,457 loc) • 63.9 kB
JavaScript
import {
OpenServiceAsyncSchemaError,
OpenServiceInvalidStaticPathError,
OpenServiceLoadedDrainExceededError,
OpenServiceMissingChannelError,
OpenServiceMissingServiceError,
OpenServiceRemoteCommandDisconnectedError,
OpenServiceRemoteCommandUnhandledError,
OpenServiceUnimplementedOperationError,
OpenServiceValidationError
} from "./chunk-KUHYVZJN.js";
import {
buildQueryState,
toError
} from "./chunk-QC4HFS6K.js";
import {
isEqual
} from "./chunk-Z3B64JMR.js";
import {
getChannel
} from "./chunk-KK3JJ3E4.js";
import {
OpenServiceStaticSnapshotInvalidError,
OpenServiceStaticSnapshotLoadError
} from "./chunk-IUGBVGDA.js";
// ../../node_modules/nanoid/index.browser.js
var nanoid = (size = 21) => crypto.getRandomValues(new Uint8Array(size)).reduce((id, byte) => (byte &= 63, byte < 36 ? id += byte.toString(36) : byte < 62 ? id += (byte - 26).toString(36).toUpperCase() : byte > 62 ? id += "-" : id += "_", id), "");
// ../../node_modules/valibot/dist/index.mjs
var store$4, DEFAULT_CONFIG = {
lang: void 0,
message: void 0,
abortEarly: void 0,
abortPipeEarly: void 0
};
function getGlobalConfig(config$1) {
return !config$1 && !store$4 ? DEFAULT_CONFIG : {
lang: config$1?.lang ?? store$4?.lang,
message: config$1?.message,
abortEarly: config$1?.abortEarly ?? store$4?.abortEarly,
abortPipeEarly: config$1?.abortPipeEarly ?? store$4?.abortPipeEarly
};
}
var store$3;
function getGlobalMessage(lang) {
return store$3?.get(lang);
}
var store$2;
function getSchemaMessage(lang) {
return store$2?.get(lang);
}
var store$1;
function getSpecificMessage(reference, lang) {
return store$1?.get(reference)?.get(lang);
}
function _stringify(input) {
let type = typeof input;
return type === "string" ? `"${input}"` : type === "number" || type === "bigint" || type === "boolean" ? `${input}` : type === "object" || type === "function" ? (input && Object.getPrototypeOf(input)?.constructor?.name) ?? "null" : type;
}
function _addIssue(context, label, dataset, config$1, other) {
let input = other && "input" in other ? other.input : dataset.value, expected = other?.expected ?? context.expects ?? null, received = other?.received ?? _stringify(input), issue = {
kind: context.kind,
type: context.type,
input,
expected,
received,
message: `Invalid ${label}: ${expected ? `Expected ${expected} but r` : "R"}eceived ${received}`,
requirement: context.requirement,
path: other?.path,
issues: other?.issues,
lang: config$1.lang,
abortEarly: config$1.abortEarly,
abortPipeEarly: config$1.abortPipeEarly
}, isSchema = context.kind === "schema", message$1 = other?.message ?? context.message ?? getSpecificMessage(context.reference, issue.lang) ?? (isSchema ? getSchemaMessage(issue.lang) : null) ?? config$1.message ?? getGlobalMessage(issue.lang);
message$1 !== void 0 && (issue.message = typeof message$1 == "function" ? message$1(issue) : message$1), isSchema && (dataset.typed = !1), dataset.issues ? dataset.issues.push(issue) : dataset.issues = [issue];
}
var _standardCache = /* @__PURE__ */ new WeakMap();
function _getStandardProps(context) {
let cached = _standardCache.get(context);
return cached || (cached = {
version: 1,
vendor: "valibot",
validate(value$1) {
return context["~run"]({ value: value$1 }, getGlobalConfig());
}
}, _standardCache.set(context, cached)), cached;
}
function _isValidObjectKey(object$1, key) {
return Object.prototype.hasOwnProperty.call(object$1, key) && key !== "__proto__" && key !== "prototype" && key !== "constructor";
}
var EMOJI_REGEX = new RegExp("^(?:[\\u{1F1E6}-\\u{1F1FF}]{2}|\\u{1F3F4}[\\u{E0061}-\\u{E007A}]{2}[\\u{E0030}-\\u{E0039}\\u{E0061}-\\u{E007A}]{1,3}\\u{E007F}|(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|(?![\\p{Emoji_Modifier_Base}\\u{1F1E6}-\\u{1F1FF}])\\p{Emoji_Presentation})(?:\\u200D(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|(?![\\p{Emoji_Modifier_Base}\\u{1F1E6}-\\u{1F1FF}])\\p{Emoji_Presentation}))*)+$", "u");
function minValue(requirement, message$1) {
return {
kind: "validation",
type: "min_value",
reference: minValue,
async: !1,
expects: `>=${requirement instanceof Date ? requirement.toJSON() : _stringify(requirement)}`,
requirement,
message: message$1,
"~run"(dataset, config$1) {
return dataset.typed && !(dataset.value >= this.requirement) && _addIssue(this, "value", dataset, config$1, { received: dataset.value instanceof Date ? dataset.value.toJSON() : _stringify(dataset.value) }), dataset;
}
};
}
function safeInteger(message$1) {
return {
kind: "validation",
type: "safe_integer",
reference: safeInteger,
async: !1,
expects: null,
requirement: Number.isSafeInteger,
message: message$1,
"~run"(dataset, config$1) {
return dataset.typed && !this.requirement(dataset.value) && _addIssue(this, "safe integer", dataset, config$1), dataset;
}
};
}
function getFallback(schema, dataset, config$1) {
return typeof schema.fallback == "function" ? schema.fallback(dataset, config$1) : schema.fallback;
}
function getDefault(schema, dataset, config$1) {
return typeof schema.default == "function" ? schema.default(dataset, config$1) : schema.default;
}
function array(item, message$1) {
return {
kind: "schema",
type: "array",
reference: array,
expects: "Array",
async: !1,
item,
message: message$1,
get "~standard"() {
return _getStandardProps(this);
},
"~run"(dataset, config$1) {
let input = dataset.value;
if (Array.isArray(input)) {
dataset.typed = !0, dataset.value = [];
for (let key = 0; key < input.length; key++) {
let value$1 = input[key], itemDataset = this.item["~run"]({ value: value$1 }, config$1);
if (itemDataset.issues) {
let pathItem = {
type: "array",
origin: "value",
input,
key,
value: value$1
};
for (let issue of itemDataset.issues)
issue.path ? issue.path.unshift(pathItem) : issue.path = [pathItem], dataset.issues?.push(issue);
if (dataset.issues || (dataset.issues = itemDataset.issues), config$1.abortEarly) {
dataset.typed = !1;
break;
}
}
itemDataset.typed || (dataset.typed = !1), dataset.value.push(itemDataset.value);
}
} else _addIssue(this, "type", dataset, config$1);
return dataset;
}
};
}
function custom(check$1, message$1) {
return {
kind: "schema",
type: "custom",
reference: custom,
expects: "unknown",
async: !1,
check: check$1,
message: message$1,
get "~standard"() {
return _getStandardProps(this);
},
"~run"(dataset, config$1) {
return this.check(dataset.value) ? dataset.typed = !0 : _addIssue(this, "type", dataset, config$1), dataset;
}
};
}
function looseObject(entries$1, message$1) {
return {
kind: "schema",
type: "loose_object",
reference: looseObject,
expects: "Object",
async: !1,
entries: entries$1,
message: message$1,
get "~standard"() {
return _getStandardProps(this);
},
"~run"(dataset, config$1) {
let input = dataset.value;
if (input && typeof input == "object") {
dataset.typed = !0, dataset.value = {};
for (let key in this.entries) {
let valueSchema = this.entries[key];
if (key in input || (valueSchema.type === "exact_optional" || valueSchema.type === "optional" || valueSchema.type === "nullish") && valueSchema.default !== void 0) {
let value$1 = key in input ? input[key] : getDefault(valueSchema), valueDataset = valueSchema["~run"]({ value: value$1 }, config$1);
if (valueDataset.issues) {
let pathItem = {
type: "object",
origin: "value",
input,
key,
value: value$1
};
for (let issue of valueDataset.issues)
issue.path ? issue.path.unshift(pathItem) : issue.path = [pathItem], dataset.issues?.push(issue);
if (dataset.issues || (dataset.issues = valueDataset.issues), config$1.abortEarly) {
dataset.typed = !1;
break;
}
}
valueDataset.typed || (dataset.typed = !1), dataset.value[key] = valueDataset.value;
} else if (valueSchema.fallback !== void 0) dataset.value[key] = getFallback(valueSchema);
else if (valueSchema.type !== "exact_optional" && valueSchema.type !== "optional" && valueSchema.type !== "nullish" && (_addIssue(this, "key", dataset, config$1, {
input: void 0,
expected: `"${key}"`,
path: [{
type: "object",
origin: "key",
input,
key,
value: input[key]
}]
}), config$1.abortEarly))
break;
}
if (!dataset.issues || !config$1.abortEarly)
for (let key in input) _isValidObjectKey(input, key) && !(key in this.entries) && (dataset.value[key] = input[key]);
} else _addIssue(this, "type", dataset, config$1);
return dataset;
}
};
}
function number(message$1) {
return {
kind: "schema",
type: "number",
reference: number,
expects: "number",
async: !1,
message: message$1,
get "~standard"() {
return _getStandardProps(this);
},
"~run"(dataset, config$1) {
return typeof dataset.value == "number" && !isNaN(dataset.value) ? dataset.typed = !0 : _addIssue(this, "type", dataset, config$1), dataset;
}
};
}
function object(entries$1, message$1) {
return {
kind: "schema",
type: "object",
reference: object,
expects: "Object",
async: !1,
entries: entries$1,
message: message$1,
get "~standard"() {
return _getStandardProps(this);
},
"~run"(dataset, config$1) {
let input = dataset.value;
if (input && typeof input == "object") {
dataset.typed = !0, dataset.value = {};
for (let key in this.entries) {
let valueSchema = this.entries[key];
if (key in input || (valueSchema.type === "exact_optional" || valueSchema.type === "optional" || valueSchema.type === "nullish") && valueSchema.default !== void 0) {
let value$1 = key in input ? input[key] : getDefault(valueSchema), valueDataset = valueSchema["~run"]({ value: value$1 }, config$1);
if (valueDataset.issues) {
let pathItem = {
type: "object",
origin: "value",
input,
key,
value: value$1
};
for (let issue of valueDataset.issues)
issue.path ? issue.path.unshift(pathItem) : issue.path = [pathItem], dataset.issues?.push(issue);
if (dataset.issues || (dataset.issues = valueDataset.issues), config$1.abortEarly) {
dataset.typed = !1;
break;
}
}
valueDataset.typed || (dataset.typed = !1), dataset.value[key] = valueDataset.value;
} else if (valueSchema.fallback !== void 0) dataset.value[key] = getFallback(valueSchema);
else if (valueSchema.type !== "exact_optional" && valueSchema.type !== "optional" && valueSchema.type !== "nullish" && (_addIssue(this, "key", dataset, config$1, {
input: void 0,
expected: `"${key}"`,
path: [{
type: "object",
origin: "key",
input,
key,
value: input[key]
}]
}), config$1.abortEarly))
break;
}
} else _addIssue(this, "type", dataset, config$1);
return dataset;
}
};
}
function optional(wrapped, default_) {
return {
kind: "schema",
type: "optional",
reference: optional,
expects: `(${wrapped.expects} | undefined)`,
async: !1,
wrapped,
default: default_,
get "~standard"() {
return _getStandardProps(this);
},
"~run"(dataset, config$1) {
return dataset.value === void 0 && (this.default !== void 0 && (dataset.value = getDefault(this, dataset, config$1)), dataset.value === void 0) ? (dataset.typed = !0, dataset) : this.wrapped["~run"](dataset, config$1);
}
};
}
function record(key, value$1, message$1) {
return {
kind: "schema",
type: "record",
reference: record,
expects: "Object",
async: !1,
key,
value: value$1,
message: message$1,
get "~standard"() {
return _getStandardProps(this);
},
"~run"(dataset, config$1) {
let input = dataset.value;
if (input && typeof input == "object") {
dataset.typed = !0, dataset.value = {};
for (let entryKey in input) if (_isValidObjectKey(input, entryKey)) {
let entryValue = input[entryKey], keyDataset = this.key["~run"]({ value: entryKey }, config$1);
if (keyDataset.issues) {
let pathItem = {
type: "object",
origin: "key",
input,
key: entryKey,
value: entryValue
};
for (let issue of keyDataset.issues)
issue.path = [pathItem], dataset.issues?.push(issue);
if (dataset.issues || (dataset.issues = keyDataset.issues), config$1.abortEarly) {
dataset.typed = !1;
break;
}
}
let valueDataset = this.value["~run"]({ value: entryValue }, config$1);
if (valueDataset.issues) {
let pathItem = {
type: "object",
origin: "value",
input,
key: entryKey,
value: entryValue
};
for (let issue of valueDataset.issues)
issue.path ? issue.path.unshift(pathItem) : issue.path = [pathItem], dataset.issues?.push(issue);
if (dataset.issues || (dataset.issues = valueDataset.issues), config$1.abortEarly) {
dataset.typed = !1;
break;
}
}
(!keyDataset.typed || !valueDataset.typed) && (dataset.typed = !1), keyDataset.typed && (dataset.value[keyDataset.value] = valueDataset.value);
}
} else _addIssue(this, "type", dataset, config$1);
return dataset;
}
};
}
function string(message$1) {
return {
kind: "schema",
type: "string",
reference: string,
expects: "string",
async: !1,
message: message$1,
get "~standard"() {
return _getStandardProps(this);
},
"~run"(dataset, config$1) {
return typeof dataset.value == "string" ? dataset.typed = !0 : _addIssue(this, "type", dataset, config$1), dataset;
}
};
}
function undefined_(message$1) {
return {
kind: "schema",
type: "undefined",
reference: undefined_,
expects: "undefined",
async: !1,
message: message$1,
get "~standard"() {
return _getStandardProps(this);
},
"~run"(dataset, config$1) {
return dataset.value === void 0 ? dataset.typed = !0 : _addIssue(this, "type", dataset, config$1), dataset;
}
};
}
function unknown() {
return {
kind: "schema",
type: "unknown",
reference: unknown,
expects: "unknown",
async: !1,
get "~standard"() {
return _getStandardProps(this);
},
"~run"(dataset) {
return dataset.typed = !0, dataset;
}
};
}
function void_(message$1) {
return {
kind: "schema",
type: "void",
reference: void_,
expects: "void",
async: !1,
message: message$1,
get "~standard"() {
return _getStandardProps(this);
},
"~run"(dataset, config$1) {
return dataset.value === void 0 ? dataset.typed = !0 : _addIssue(this, "type", dataset, config$1), dataset;
}
};
}
function pipe(...pipe$1) {
return {
...pipe$1[0],
pipe: pipe$1,
get "~standard"() {
return _getStandardProps(this);
},
"~run"(dataset, config$1) {
for (let item of pipe$1) if (item.kind !== "metadata") {
if (dataset.issues && (item.kind === "schema" || item.kind === "transformation")) {
dataset.typed = !1;
break;
}
(!dataset.issues || !config$1.abortEarly && !config$1.abortPipeEarly) && (dataset = item["~run"](dataset, config$1));
}
return dataset;
}
};
}
function safeParse(schema, input, config$1) {
let dataset = schema["~run"]({ value: input }, getGlobalConfig(config$1));
return {
typed: dataset.typed,
success: !dataset.issues,
output: dataset.value,
issues: dataset.issues
};
}
// src/shared/open-service/service-channel.ts
var SERVICE_SYNC_START = "services:sync-start", SERVICE_SYNC_START_REPLY = "services:sync-start-reply", SERVICE_PATCHES = "services:patches", SERVICE_COMMAND_INVOKE = "services:command-invoke", SERVICE_COMMAND_ACK = "services:command-ack", SERVICE_COMMAND_RESULT = "services:command-result", SERVICE_COMMAND_ERROR = "services:command-error", stateSnapshotSchema = custom(
(value) => typeof value == "object" && value !== null && !Array.isArray(value)
), syncStartSchema = object({
serviceId: string(),
clientId: string()
}), stampedSnapshotSchema = object({
serviceId: string(),
state: stateSnapshotSchema,
version: pipe(number(), safeInteger(), minValue(0)),
clientId: string()
}), commandInvokeSchema = object({
serviceId: string(),
commandName: string(),
input: optional(unknown()),
callId: string(),
clientId: string()
}), commandAckSchema = object({
serviceId: string(),
callId: string(),
clientId: string()
}), commandResultSchema = object({
serviceId: string(),
callId: string(),
result: optional(unknown()),
clientId: string()
}), commandErrorSchema = object({
serviceId: string(),
callId: string(),
error: custom(
(value) => typeof value == "object" && value !== null && !Array.isArray(value)
),
clientId: string()
});
function generateClientId() {
return nanoid();
}
// ../../node_modules/@preact/signals-core/dist/signals-core.module.js
var i = /* @__PURE__ */ Symbol.for("preact-signals");
function t() {
if (s > 1)
s--;
else {
var i3, t2 = !1;
for ((function() {
var i4 = c;
for (c = void 0; i4 !== void 0; )
i4.S.v === i4.v && (i4.S.i = i4.i), i4 = i4.o;
})(); h !== void 0; ) {
var n3 = h;
for (h = void 0, v++; n3 !== void 0; ) {
var r2 = n3.u;
if (n3.u = void 0, n3.f &= -3, !(8 & n3.f) && w(n3)) try {
n3.c();
} catch (n4) {
t2 || (i3 = n4, t2 = !0);
}
n3 = r2;
}
}
if (v = 0, s--, t2) throw i3;
}
}
function n(i3) {
if (s > 0) return i3();
e = ++u, s++;
try {
return i3();
} finally {
t();
}
}
var r = void 0;
function o(i3) {
var t2 = r;
r = void 0;
try {
return i3();
} finally {
r = t2;
}
}
var f, h = void 0, s = 0, v = 0, u = 0, e = 0, c = void 0, d = 0;
function a(i3) {
if (r !== void 0) {
var t2 = i3.n;
if (t2 === void 0 || t2.t !== r)
return t2 = { i: 0, S: i3, p: r.s, n: void 0, t: r, e: void 0, x: void 0, r: t2 }, r.s !== void 0 && (r.s.n = t2), r.s = t2, i3.n = t2, 32 & r.f && i3.S(t2), t2;
if (t2.i === -1)
return t2.i = 0, t2.n !== void 0 && (t2.n.p = t2.p, t2.p !== void 0 && (t2.p.n = t2.n), t2.p = r.s, t2.n = void 0, r.s.n = t2, r.s = t2), t2;
}
}
function l(i3, t2) {
this.v = i3, this.i = 0, this.n = void 0, this.t = void 0, this.l = 0, this.W = t2?.watched, this.Z = t2?.unwatched, this.name = t2?.name;
}
l.prototype.brand = i;
l.prototype.h = function() {
return !0;
};
l.prototype.S = function(i3) {
var t2 = this, n3 = this.t;
n3 !== i3 && i3.e === void 0 && (i3.x = n3, this.t = i3, n3 !== void 0 ? n3.e = i3 : o(function() {
var i4;
(i4 = t2.W) == null || i4.call(t2);
}));
};
l.prototype.U = function(i3) {
var t2 = this;
if (this.t !== void 0) {
var n3 = i3.e, r2 = i3.x;
n3 !== void 0 && (n3.x = r2, i3.e = void 0), r2 !== void 0 && (r2.e = n3, i3.x = void 0), i3 === this.t && (this.t = r2, r2 === void 0 && o(function() {
var i4;
(i4 = t2.Z) == null || i4.call(t2);
}));
}
};
l.prototype.subscribe = function(i3) {
var t2 = this;
return j(function() {
var n3 = t2.value, o3 = r;
r = void 0;
try {
i3(n3);
} finally {
r = o3;
}
}, { name: "sub" });
};
l.prototype.valueOf = function() {
return this.value;
};
l.prototype.toString = function() {
return this.value + "";
};
l.prototype.toJSON = function() {
return this.value;
};
l.prototype.peek = function() {
var i3 = this;
return o(function() {
return i3.value;
});
};
Object.defineProperty(l.prototype, "value", { get: function() {
var i3 = a(this);
return i3 !== void 0 && (i3.i = this.i), this.v;
}, set: function(i3) {
if (i3 !== this.v) {
if (v > 100) throw new Error("Cycle detected");
(function(i4) {
s !== 0 && v === 0 && i4.l !== e && (i4.l = e, c = { S: i4, v: i4.v, i: i4.i, o: c });
})(this), this.v = i3, this.i++, d++, s++;
try {
for (var n3 = this.t; n3 !== void 0; n3 = n3.x) n3.t.N();
} finally {
t();
}
}
} });
function y(i3, t2) {
return new l(i3, t2);
}
function w(i3) {
for (var t2 = i3.s; t2 !== void 0; t2 = t2.n) if (t2.S.i !== t2.i || !t2.S.h() || t2.S.i !== t2.i) return !0;
return !1;
}
function _(i3) {
for (var t2 = i3.s; t2 !== void 0; t2 = t2.n) {
var n3 = t2.S.n;
if (n3 !== void 0 && (t2.r = n3), t2.S.n = t2, t2.i = -1, t2.n === void 0) {
i3.s = t2;
break;
}
}
}
function b(i3) {
for (var t2 = i3.s, n3 = void 0; t2 !== void 0; ) {
var r2 = t2.p;
t2.i === -1 ? (t2.S.U(t2), r2 !== void 0 && (r2.n = t2.n), t2.n !== void 0 && (t2.n.p = r2)) : n3 = t2, t2.S.n = t2.r, t2.r !== void 0 && (t2.r = void 0), t2 = r2;
}
i3.s = n3;
}
function p(i3, t2) {
l.call(this, void 0), this.x = i3, this.s = void 0, this.g = d - 1, this.f = 4, this.W = t2?.watched, this.Z = t2?.unwatched, this.name = t2?.name;
}
p.prototype = new l();
p.prototype.h = function() {
if (this.f &= -3, 1 & this.f) return !1;
if ((36 & this.f) == 32 || (this.f &= -5, this.g === d)) return !0;
if (this.g = d, this.f |= 1, this.i > 0 && !w(this))
return this.f &= -2, !0;
var i3 = r;
try {
_(this), r = this;
var t2 = this.x();
(16 & this.f || this.v !== t2 || this.i === 0) && (this.v = t2, this.f &= -17, this.i++);
} catch (i4) {
this.v = i4, this.f |= 16, this.i++;
}
return r = i3, b(this), this.f &= -2, !0;
};
p.prototype.S = function(i3) {
if (this.t === void 0) {
this.f |= 36;
for (var t2 = this.s; t2 !== void 0; t2 = t2.n) t2.S.S(t2);
}
l.prototype.S.call(this, i3);
};
p.prototype.U = function(i3) {
if (this.t !== void 0 && (l.prototype.U.call(this, i3), this.t === void 0)) {
this.f &= -33;
for (var t2 = this.s; t2 !== void 0; t2 = t2.n) t2.S.U(t2);
}
};
p.prototype.N = function() {
if (!(2 & this.f)) {
this.f |= 6;
for (var i3 = this.t; i3 !== void 0; i3 = i3.x) i3.t.N();
}
};
Object.defineProperty(p.prototype, "value", { get: function() {
if (1 & this.f) throw new Error("Cycle detected");
var i3 = a(this);
if (this.h(), i3 !== void 0 && (i3.i = this.i), 16 & this.f) throw this.v;
return this.v;
} });
function g(i3, t2) {
return new p(i3, t2);
}
function S(i3) {
var n3 = i3.m;
if (i3.m = void 0, typeof n3 == "function") {
s++;
var o3 = r;
r = void 0;
try {
n3();
} catch (t2) {
throw i3.f &= -2, i3.f |= 8, m(i3), t2;
} finally {
r = o3, t();
}
}
}
function m(i3) {
for (var t2 = i3.s; t2 !== void 0; t2 = t2.n) t2.S.U(t2);
i3.x = void 0, i3.s = void 0, S(i3);
}
function x(i3) {
if (r !== this) throw new Error("Out-of-order effect");
b(this), r = i3, this.f &= -2, 8 & this.f && m(this), t();
}
function E(i3, t2) {
this.x = i3, this.m = void 0, this.s = void 0, this.u = void 0, this.f = 32, this.name = t2?.name, f && f.push(this);
}
E.prototype.c = function() {
var i3 = this.S();
try {
if (8 & this.f || this.x === void 0) return;
var t2 = this.x();
typeof t2 == "function" && (this.m = t2);
} finally {
i3();
}
};
E.prototype.S = function() {
if (1 & this.f) throw new Error("Cycle detected");
this.f |= 1, this.f &= -9, S(this), _(this), s++;
var i3 = r;
return r = this, x.bind(this, i3);
};
E.prototype.N = function() {
2 & this.f || (this.f |= 2, this.u = h, h = this);
};
E.prototype.d = function() {
this.f |= 8, 1 & this.f || m(this);
};
E.prototype.dispose = function() {
this.d();
};
function j(i3, t2) {
var n3 = new E(i3, t2);
try {
n3.c();
} catch (i4) {
throw n3.d(), i4;
}
var r2 = n3.d.bind(n3);
return r2[Symbol.dispose] = r2, r2;
}
// ../../node_modules/deepsignal/core/dist/deepsignal-core.module.js
var n2 = /* @__PURE__ */ new WeakMap(), a2 = /* @__PURE__ */ new WeakMap(), o2 = /* @__PURE__ */ new WeakMap(), s2 = /* @__PURE__ */ new WeakSet(), u2 = /* @__PURE__ */ new WeakMap(), f2 = /^\$/, c2 = Object.getOwnPropertyDescriptor, i2 = !1, l2 = function(e2) {
if (!R(e2)) throw new Error("This object can't be observed.");
return a2.has(e2) || a2.set(e2, p2(e2, w2)), a2.get(e2);
};
var p2 = function(e2, t2) {
var r2 = new Proxy(e2, t2);
return s2.add(r2), r2;
}, v2 = function() {
throw new Error("Don't mutate the signals directly.");
}, y2 = function(e2) {
return function(s3, u3, l3) {
var g2;
if (i2) return Reflect.get(s3, u3, l3);
var h2 = e2 || u3[0] === "$";
if (!e2 && h2 && Array.isArray(s3)) {
if (u3 === "$") return o2.has(s3) || o2.set(s3, p2(s3, d2)), o2.get(s3);
h2 = u3 === "$length";
}
n2.has(l3) || n2.set(l3, /* @__PURE__ */ new Map());
var v3 = n2.get(l3), y3 = h2 ? u3.replace(f2, "") : u3;
if (v3.has(y3) || typeof ((g2 = c2(s3, y3)) == null ? void 0 : g2.get) != "function") {
var m3 = Reflect.get(s3, y3, l3);
if (h2 && typeof m3 == "function") return;
if (typeof y3 == "symbol" && b2.has(y3)) return m3;
v3.has(y3) || (R(m3) && (a2.has(m3) || a2.set(m3, p2(m3, w2)), m3 = a2.get(m3)), v3.set(y3, y(m3)));
} else v3.set(y3, g(function() {
return Reflect.get(s3, y3, l3);
}));
return h2 ? v3.get(y3) : v3.get(y3).value;
};
}, w2 = { get: y2(!1), set: function(r2, o3, s3, i3) {
var l3;
if (typeof ((l3 = c2(r2, o3)) == null ? void 0 : l3.set) == "function") return Reflect.set(r2, o3, s3, i3);
n2.has(i3) || n2.set(i3, /* @__PURE__ */ new Map());
var g2 = n2.get(i3);
if (o3[0] === "$") {
s3 instanceof l || v2();
var h2 = o3.replace(f2, "");
return g2.set(h2, s3), Reflect.set(r2, h2, s3.peek(), i3);
}
var y3 = s3;
R(s3) && (a2.has(s3) || a2.set(s3, p2(s3, w2)), y3 = a2.get(s3));
var d3 = !(o3 in r2), b3 = Reflect.set(r2, o3, s3, i3);
return g2.has(o3) ? g2.get(o3).value = y3 : g2.set(o3, y(y3)), d3 && u2.has(r2) && u2.get(r2).value++, Array.isArray(r2) && g2.has("length") && (g2.get("length").value = r2.length), b3;
}, deleteProperty: function(e2, t2) {
t2[0] === "$" && v2();
var r2 = n2.get(a2.get(e2)), o3 = Reflect.deleteProperty(e2, t2);
return r2 && r2.has(t2) && (r2.get(t2).value = void 0), u2.has(e2) && u2.get(e2).value++, o3;
}, ownKeys: function(e2) {
return u2.has(e2) || u2.set(e2, y(0)), u2._ = u2.get(e2).value, Reflect.ownKeys(e2);
} }, d2 = { get: y2(!0), set: v2, deleteProperty: v2 }, b2 = new Set(Object.getOwnPropertyNames(Symbol).map(function(e2) {
return Symbol[e2];
}).filter(function(e2) {
return typeof e2 == "symbol";
})), m2 = /* @__PURE__ */ new Set([Object, Array]), R = function(e2) {
return typeof e2 == "object" && e2 !== null && m2.has(e2.constructor) && !s2.has(e2);
};
// src/shared/open-service/service-validation.ts
function rethrowAsync(error) {
queueMicrotask(() => {
throw error;
});
}
async function validateSchema(schema, value, meta) {
let validationResult = await schema["~standard"].validate(value);
if (validationResult.issues)
throw new OpenServiceValidationError({ ...meta, issues: validationResult.issues });
return validationResult.value;
}
function validateSchemaSync(schema, value, meta) {
let validationResult = schema["~standard"].validate(value);
if (validationResult instanceof Promise)
throw new OpenServiceAsyncSchemaError({
kind: meta.kind,
serviceId: meta.serviceId,
name: meta.name,
phase: meta.phase
});
if (validationResult.issues)
throw new OpenServiceValidationError({ ...meta, issues: validationResult.issues });
return validationResult.value;
}
// src/shared/open-service/query-runtime.ts
var MAX_DRAIN_ITERATIONS = 32, inFlightLoads = /* @__PURE__ */ new Map(), activeHandlerLoadSession, EMPTY_SET = /* @__PURE__ */ new Set();
function stableHash(value) {
let encode = (raw) => {
if (raw === void 0)
return { __t: "undefined" };
if (raw === null || typeof raw != "object")
return raw;
if (Array.isArray(raw))
return raw.map(encode);
let sorted = {};
for (let k of Object.keys(raw).sort())
sorted[k] = encode(raw[k]);
return { __t: "object", value: sorted };
};
return JSON.stringify(encode(value));
}
function makeLoadKey(serviceId, queryName, validatedInput) {
return `${serviceId}::${queryName}::${stableHash(validatedInput)}`;
}
function surfaceRejections(settlements) {
let rejections = settlements.filter((s3) => s3.status === "rejected");
if (rejections.length === 0)
return;
let [first, ...rest] = rejections.map((r2) => r2.reason);
if (rest.length > 0 && first instanceof Error && Reflect.get(first, "cause") === void 0)
try {
Reflect.set(first, "cause", { aggregated: rest });
} catch {
}
throw first;
}
async function drainCollector(collector, settledKeys, serviceId, queryName) {
let iterations = 0;
for (; collector.size > 0; ) {
if (iterations++ > MAX_DRAIN_ITERATIONS)
throw new OpenServiceLoadedDrainExceededError({
serviceId,
name: queryName,
iterations: MAX_DRAIN_ITERATIONS
});
let pending = [...collector];
collector.clear();
let settlements = await Promise.allSettled(pending.map((entry) => entry.promise));
if (settledKeys)
for (let entry of pending)
settledKeys.add(entry.key);
surfaceRejections(settlements);
}
}
function detachSnapshot(value) {
return value === null || typeof value != "object" ? value : JSON.parse(JSON.stringify(value));
}
function validateQueryInput(refs, queryName, queryDef, input) {
return validateSchemaSync(queryDef.input, input, {
kind: "query",
serviceId: refs.serviceId,
name: queryName,
phase: "input"
});
}
function validateQueryOutput(refs, queryName, queryDef, output) {
return validateSchemaSync(queryDef.output, output, {
kind: "query",
serviceId: refs.serviceId,
name: queryName,
phase: "output"
});
}
function runHandlerSync(refs, queryName, queryDef, validatedInput, selfQueries, getService2) {
if (!queryDef.handler)
throw new OpenServiceUnimplementedOperationError({
kind: "query",
serviceId: refs.serviceId,
name: queryName
});
let handlerCtx = { self: {
get state() {
return refs.state;
},
queries: selfQueries
}, getService: getService2 };
return queryDef.handler(validatedInput, handlerCtx);
}
function createQueryGet(refs, queryName, queryDef, selfQueries, fireLoad) {
return function(input) {
let validatedInput = validateQueryInput(
refs,
queryName,
queryDef,
arguments.length === 0 ? void 0 : input
);
return queryDef.load && fireLoad?.(validatedInput), validateQueryOutput(
refs,
queryName,
queryDef,
runHandlerSync(
refs,
queryName,
queryDef,
validatedInput,
selfQueries,
refs.registryApi.getService
)
);
};
}
function triggerLoad(refs, queryName, queryDef, validatedInput, loadKey, parentAncestorChain) {
let existing = inFlightLoads.get(loadKey);
if (existing)
return existing;
let extendedChain = new Set(parentAncestorChain);
extendedChain.add(loadKey);
let promise = Promise.resolve().then(() => runLoadBody(refs, queryName, queryDef, validatedInput, extendedChain)).finally(() => {
inFlightLoads.get(loadKey) === promise && inFlightLoads.delete(loadKey);
});
return inFlightLoads.set(loadKey, promise), promise;
}
async function runLoadBody(refs, queryName, queryDef, validatedInput, ancestorChain) {
if (!queryDef.load)
return;
let collector = /* @__PURE__ */ new Set(), wrappedQueries = buildLoadWrappedQueries(refs, ancestorChain, collector), loadCtx = { self: {
get state() {
return refs.state;
},
queries: wrappedQueries,
commands: refs.getLoadCommands()
}, getService: refs.registryApi.getService };
await Promise.resolve(queryDef.load(validatedInput, loadCtx)), await drainCollector(collector, void 0, refs.serviceId, queryName);
}
async function runReactiveLoad(refs, queryName, queryDef, validatedInput, isCurrent) {
if (!queryDef.load)
return;
let loadCtx = { self: {
get state() {
return refs.state;
},
// Reactive-load reads must keep dependency loads warm. `.get()` on a default query is a pure
// read and never fires a load, so the body sees fire-and-forget wrappers instead: reading a
// dependency triggers its load (deduped while in flight) without awaiting a drain.
queries: refs.reactiveLoadQueries,
commands: refs.buildGatedCommands(isCurrent)
}, getService: refs.registryApi.getService };
await Promise.resolve(queryDef.load(validatedInput, loadCtx));
}
function buildReactiveLoadQueries(refs) {
let wrappedQueries = {};
for (let [name, queryDef] of refs.queryDefinitions) {
let defaultQuery = refs.defaultQueries[name], get = createQueryGet(refs, name, queryDef, wrappedQueries, (validatedInput) => {
let loadKey = makeLoadKey(refs.serviceId, name, validatedInput);
triggerLoad(refs, name, queryDef, validatedInput, loadKey, EMPTY_SET).catch(rethrowAsync);
});
wrappedQueries[name] = {
get,
loaded: defaultQuery.loaded,
subscribe: defaultQuery.subscribe
};
}
return wrappedQueries;
}
function buildLoadWrappedQueries(refs, ancestorChain, collector) {
let wrappedQueries = {};
for (let [name, queryDef] of refs.queryDefinitions) {
let defaultQuery = refs.defaultQueries[name], wrapped = {
get: createQueryGet(refs, name, queryDef, wrappedQueries, (validatedInput) => {
let loadKey = makeLoadKey(refs.serviceId, name, validatedInput), promise = triggerLoad(refs, name, queryDef, validatedInput, loadKey, ancestorChain);
ancestorChain.has(loadKey) || collector.add({ key: loadKey, promise });
}),
loaded(input) {
return runLoaded(
refs,
name,
queryDef,
arguments.length === 0 ? void 0 : input,
ancestorChain
);
},
subscribe: defaultQuery.subscribe
};
wrappedQueries[name] = wrapped;
}
return wrappedQueries;
}
async function runLoaded(refs, queryName, queryDef, rawInput, parentAncestorChain = EMPTY_SET) {
let validatedInput = validateQueryInput(refs, queryName, queryDef, rawInput), loadKey = makeLoadKey(refs.serviceId, queryName, validatedInput), ancestorChain = new Set(parentAncestorChain);
ancestorChain.add(loadKey);
let session = {
ancestorChain,
collector: /* @__PURE__ */ new Set(),
settledKeys: /* @__PURE__ */ new Set()
};
if (queryDef.load && !parentAncestorChain.has(loadKey)) {
let promise = triggerLoad(
refs,
queryName,
queryDef,
validatedInput,
loadKey,
parentAncestorChain
);
session.collector.add({ key: loadKey, promise });
}
let iterations = 0, hasMoreWork = !0;
for (; hasMoreWork; ) {
if (iterations++ > MAX_DRAIN_ITERATIONS)
throw new OpenServiceLoadedDrainExceededError({
serviceId: refs.serviceId,
name: queryName,
iterations: MAX_DRAIN_ITERATIONS
});
for (; session.collector.size > 0; ) {
let pending = [...session.collector];
session.collector.clear();
let settlements = await Promise.allSettled(pending.map((entry) => entry.promise));
for (let entry of pending)
session.settledKeys.add(entry.key);
surfaceRejections(settlements);
}
let previousSession2 = activeHandlerLoadSession;
activeHandlerLoadSession = session;
try {
runHandlerSync(
refs,
queryName,
queryDef,
validatedInput,
refs.defaultQueries,
refs.registryApi.getService
);
} catch {
} finally {
activeHandlerLoadSession = previousSession2;
}
hasMoreWork = session.collector.size > 0;
}
let previousSession = activeHandlerLoadSession;
activeHandlerLoadSession = session;
try {
return validateQueryOutput(
refs,
queryName,
queryDef,
runHandlerSync(
refs,
queryName,
queryDef,
validatedInput,
refs.defaultQueries,
refs.registryApi.getService
)
);
} finally {
activeHandlerLoadSession = previousSession;
}
}
function createDefaultQuery(refs, queryName, queryDef) {
let resolveInput = (input, argsLength) => argsLength === 0 ? void 0 : input;
return {
get: createQueryGet(refs, queryName, queryDef, refs.defaultQueries, (validatedInput) => {
let session = activeHandlerLoadSession;
if (!session)
return;
let loadKey = makeLoadKey(refs.serviceId, queryName, validatedInput);
if (!session.ancestorChain.has(loadKey) && !session.settledKeys.has(loadKey)) {
let promise = triggerLoad(
refs,
queryName,
queryDef,
validatedInput,
loadKey,
session.ancestorChain
);
session.collector.add({ key: loadKey, promise });
}
}),
loaded(input) {
return runLoaded(refs, queryName, queryDef, resolveInput(input, arguments.length));
},
subscribe: ((...args) => {
if (args.length === 1 && typeof args[0] == "function")
return subscribeToQuery(
refs,
queryName,
queryDef,
void 0,
void 0,
args[0]
);
if (args.length === 2 && typeof args[0] == "function" && typeof args[1] == "function")
return subscribeToQuery(
refs,
queryName,
queryDef,
void 0,
args[0],
args[1]
);
let [input, selectorOrCallback, maybeCallback] = args;
return subscribeToQuery(
refs,
queryName,
queryDef,
input,
maybeCallback ? selectorOrCallback : void 0,
maybeCallback ?? selectorOrCallback
);
})
};
}
function subscribeToQuery(refs, queryName, queryDef, rawInput, selector, callback) {
let active = !0, validatedInput;
try {
validatedInput = validateQueryInput(refs, queryName, queryDef, rawInput);
} catch (error) {
return callback(
buildQueryState(void 0, { status: "error", error: toError(error), loadStatus: "idle" })
), () => {
active = !1;
};
}
let lifecycle = y({
status: queryDef.load ? "pending" : "success",
error: void 0,
loadStatus: "idle"
}), loadTeardown;
if (queryDef.load) {
let epoch = 0;
loadTeardown = j(() => {
let myEpoch = ++epoch, isCurrent = () => myEpoch === epoch, previous = o(() => lifecycle.value);
lifecycle.value = {
status: previous.status,
error: previous.error,
loadStatus: "loading"
}, runReactiveLoad(refs, queryName, queryDef, validatedInput, isCurrent).then(
() => {
isCurrent() && (lifecycle.value = { status: "success", error: void 0, loadStatus: "idle" });
},
(error) => {
isCurrent() && (lifecycle.value = { status: "error", error: toError(error), loadStatus: "idle" });
}
);
});
}
let comp = g(() => {
let output = runHandlerSync(
refs,
queryName,
queryDef,
validatedInput,
refs.defaultQueries,
refs.registryApi.getService
);
if (selector) {
let validated = o(() => validateQueryOutput(refs, queryName, queryDef, output));
return selector(output), detachSnapshot(selector(validated));
}
return detachSnapshot(validateQueryOutput(refs, queryName, queryDef, output));
}), hasEmitted = !1, lastEmitted, lastData, teardown = j(() => {
let life = lifecycle.value, data, status = life.status, error = life.error;
try {
data = comp.value, lastData = data;
} catch (handlerError) {
data = lastData, status = "error", error = toError(handlerError);
}
if (!active)
return;
let state = buildQueryState(data, { status, error, loadStatus: life.loadStatus });
hasEmitted && isEqual(state, lastEmitted) || (hasEmitted = !0, lastEmitted = state, callback(state));
});
return () => {
active = !1, teardown(), loadTeardown?.();
};
}
function buildQueries(refs) {
let result = {};
for (let [name, queryDef] of refs.queryDefinitions)
result[name] = createDefaultQuery(refs, name, queryDef);
return result;
}
// src/shared/open-service/service-sync.ts
function isNewer(incoming, local) {
return incoming.version !== local.version ? incoming.version > local.version : incoming.clientId > local.clientId;
}
var FORBIDDEN_KEYS = /* @__PURE__ */ new Set(["__proto__", "constructor", "prototype"]);
function isPlainObject(value) {
return typeof value == "object" && value !== null && !Array.isArray(value);
}
function applyStatePatch(target, source, options) {
if (!options.preserveMissingKeys)
for (let key of Object.keys(target))
FORBIDDEN_KEYS.has(key) || Object.prototype.hasOwnProperty.call(source, key) || delete target[key];
for (let key of Object.keys(source)) {
if (FORBIDDEN_KEYS.has(key))
continue;
let sourceValue = source[key], tarvalue = target[key];
isPlainObject(sourceValue) && isPlainObject(tarvalue) ? applyStatePatch(tarvalue, sourceValue, options) : tarvalue !== sourceValue && (target[key] = sourceValue);
}
}
function createSnapshotReconciler(options) {
let { setState, initialStamp } = options, localStamp = initialStamp;
return {
get stamp() {
return localStamp;
},
advanceLocal(clientId) {
return localStamp = { version: localStamp.version + 1, clientId }, localStamp;
},
tryAdopt(incoming, state) {
return isNewer(incoming, localStamp) ? (localStamp = { version: incoming.version, clientId: incoming.clientId }, setState((current) => applyStatePatch(current, state, { preserveMissingKeys: !1 })), !0) : !1;
}
};
}
// src/shared/open-service/service-runtime.ts
function normalizeStaticStoragePath(serviceId, name, rawPath) {
let segments = rawPath.replaceAll("\\", "/").split("/").filter((segment) => segment.length > 0 && segment !== ".");
if (segments.length === 0 || segments.some((segment) => segment === ".."))
throw new OpenServiceInvalidStaticPathError({ serviceId, name, path: rawPath });
return segments.join("/");
}
function resolveStaticPath(serviceId, name, queryDef, input) {
let rawPath = queryDef.staticPath(input), relativePath = normalizeStaticStoragePath(serviceId, name, rawPath);
return `${serviceId}/${relativePath}`;
}
function createCommandSelf(state) {
return {
get state() {
return state;
},
setState(mutate) {
n(() => {
mutate(state);
});
},
queries: {},
commands: {}
};
}
function buildCommands(serviceId, commands, createCommandCtx) {
return Object.fromEntries(
Object.entries(commands).map(([name, def]) => [
name,
async (input) => {
if (!def.handler)
throw new OpenServiceUnimplementedOperationError({
kind: "command",
serviceId,
name
});
let validatedInput = await validateSchema(def.input, input, {
kind: "command",
serviceId,
name,
phase: "input"
}), output = await def.handler(validatedInput, createCommandCtx());
return validateSchema(def.output, output, {
kind: "command",
serviceId,
name,
phase: "output"
});
}
])
);
}
function buildQueryDefinitionsWithStaticLoader(serviceId, queries, staticLoader, setState) {
return new Map(
Object.entries(queries).map(([name, queryDef]) => {
if (!queryDef.staticPath)
return [name, queryDef];
let { staticPath } = queryDef;
return [
name,
{
...queryDef,
load: async (input) => {
let logicalPath = resolveStaticPath(serviceId, name, { staticPath }, input), snapshot = await staticLoader(logicalPath, {
serviceId,
queryName: name,
input
});
setState((state) => {
applyStatePatch(state, snapshot, {
preserveMissingKeys: !0
});
});
}
}
];
})
);
}
function createServiceRuntime(def, runtimeOptions, initialState = def.initialState) {
let rawState = initialState, state = l2(rawState), getStateSnapshot = () => structuredClone(rawState), commandSelf = createCommandSelf(state), { registryApi, staticLoader } = runtimeOptions, createCommandCtx = () => ({
self: commandSelf,
getService: registryApi.getService
}), commands = buildCommands(def.id, def.commands, createCommandCtx);
commandSelf.commands = commands;
let loadCommands = commands, remoteCommandNames = /* @__PURE__ */ new Set(), queryDefinitions = staticLoader ? buildQueryDefinitionsWithStaticLoader(
def.id,
def.queries,
staticLoader,
commandSelf.setState
) : new Map(
Object.entries(def.queries)
), defaultQueries = {}, reactiveLoadQueries = {}, buildGatedCommands = (isCurrent) => {
let gatedSelf = {
get state() {
return state;
},
setState(mutate) {
isCurrent() && n(() => {
mutate(state);
});
},
queries: defaultQueries,
commands: {}
}, gated = buildCommands(def.id, def.commands, () => ({
self: gatedSelf,
getService: registryApi.getService
}));
return gatedSelf.commands = gated, remoteCommandNames.size === 0 ? gated : Object.fromEntries(
Object.keys(def.commands).map((name) => [
name,
remoteCommandNames.has(name) ? loadCommands[name] : gated[name]
])
);
}, refs = {
serviceId: def.id,
commandSelf,
state,
registryApi,
queryDefinitions,
defaultQueries,
reactiveLoadQueries,
getLoadCommands: () => loadCommands,
buildGatedCommands
}, builtQueries = buildQueries(refs);
for (let [name, query] of Object.entries(builtQueries))
defaultQueries[name] = query;
for (let [name, query] of Object.entries(buildReactiveLoadQueries(refs)))
reactiveLoadQueries[name] = query;
commandSelf.queries = defaultQueries;
let queries = defaultQueries, queryCtx = { self: {
get state() {
return state;
},
queries: defaultQueries
}, getService: registryApi.getService }, loadCtxForStatic = {
self: {
get state() {
return state;
},
queries: defaultQueries,
commands
},
getService: registryApi.getService
};
return {
getStateSnapshot,
commandSelf,
queryCtx,
loadCtxForStatic,
commands,
queries,
runLoadOnce: async (queryName, validatedInput) => {
let queryDef = queryDefinitions.get(queryName);
if (!queryDef || !queryDef.load)
return;
let loadKey = makeLoadKey(def.id, queryName, validatedInput), ancestorChain = /* @__PURE__ */ new Set([loadKey]), previous = inFlightLoads.get(loadKey), promise = Promise.resolve().then(() => runLoadBody(refs, queryName, queryDef, validatedInput, ancestorChain)).finally(() => {
inFlightLoads.get(loadKey) === promise && (previous ? inFlightLoads.set(loadKey, previous) : inFlightLoads.delete(loadKey));
});
inFlightLoads.set(loadKey, promise), await promise;
},
attachChannelCommands: (channelCommands, implementedCommandNames) => {
loadCommands = channelCommands, remoteCommandNames.clear();
for (let name of Object.keys(def.commands))
implementedCommandNames.has(name) || remoteCommandNames.add(name);
}
};
}
// src/shared/open-service/service-error-serialization.ts
var ERROR_MARKER = "__openServiceError__", RESERVED_KEYS = /* @__PURE__ */ new Set([ERROR_MARKER, "name", "message", "stack", "cause"]);
function isPlainObject2(value) {
return typeof value == "object" && value !== null && !Array.isArray(value);
}
function isSerializedError(value) {
return isPlainObject2(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 (isPlainObject2(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]: