@vobs/runtime 1.7.8 → 1.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/async-boundary.cjs +14 -4
- package/dist/async-boundary.cjs.map +1 -1
- package/dist/async-boundary.js +17 -7
- package/dist/async-boundary.js.map +1 -1
- package/dist/bind.cjs +43 -3
- package/dist/bind.cjs.map +1 -1
- package/dist/bind.js +48 -8
- package/dist/bind.js.map +1 -1
- package/dist/boundary.cjs +159 -84
- package/dist/boundary.cjs.map +1 -1
- package/dist/boundary.js +162 -87
- package/dist/boundary.js.map +1 -1
- package/dist/client-only.cjs +323 -0
- package/dist/client-only.cjs.map +1 -0
- package/dist/client-only.d.cts +42 -0
- package/dist/client-only.d.ts +42 -0
- package/dist/client-only.js +299 -0
- package/dist/client-only.js.map +1 -0
- package/dist/debug.cjs.map +1 -1
- package/dist/debug.d.cts +12 -2
- package/dist/debug.d.ts +12 -2
- package/dist/debug.js.map +1 -1
- package/dist/dom-events.cjs +46 -0
- package/dist/dom-events.cjs.map +1 -0
- package/dist/dom-events.d.cts +23 -0
- package/dist/dom-events.d.ts +23 -0
- package/dist/dom-events.js +21 -0
- package/dist/dom-events.js.map +1 -0
- package/dist/dom-props.cjs +154 -0
- package/dist/dom-props.cjs.map +1 -0
- package/dist/dom-props.d.cts +21 -0
- package/dist/dom-props.d.ts +21 -0
- package/dist/dom-props.js +128 -0
- package/dist/dom-props.js.map +1 -0
- package/dist/dynamic.cjs +68 -14
- package/dist/dynamic.cjs.map +1 -1
- package/dist/dynamic.js +73 -19
- package/dist/dynamic.js.map +1 -1
- package/dist/error-boundary.cjs +159 -84
- package/dist/error-boundary.cjs.map +1 -1
- package/dist/error-boundary.js +162 -87
- package/dist/error-boundary.js.map +1 -1
- package/dist/error.cjs +52 -20
- package/dist/error.cjs.map +1 -1
- package/dist/error.d.cts +8 -0
- package/dist/error.d.ts +8 -0
- package/dist/error.js +52 -20
- package/dist/error.js.map +1 -1
- package/dist/fragment.cjs.map +1 -1
- package/dist/fragment.js +1 -1
- package/dist/fragment.js.map +1 -1
- package/dist/hmr.cjs +137 -1
- package/dist/hmr.cjs.map +1 -1
- package/dist/hmr.js +135 -1
- package/dist/hmr.js.map +1 -1
- package/dist/index.cjs +713 -236
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -2
- package/dist/index.d.ts +5 -2
- package/dist/index.js +715 -245
- package/dist/index.js.map +1 -1
- package/dist/ops.cjs +561 -107
- package/dist/ops.cjs.map +1 -1
- package/dist/ops.d.cts +49 -4
- package/dist/ops.d.ts +49 -4
- package/dist/ops.js +557 -108
- package/dist/ops.js.map +1 -1
- package/dist/profiler.cjs +14 -4
- package/dist/profiler.cjs.map +1 -1
- package/dist/profiler.js +17 -7
- package/dist/profiler.js.map +1 -1
- package/dist/ref.cjs +160 -5
- package/dist/ref.cjs.map +1 -1
- package/dist/ref.js +160 -5
- package/dist/ref.js.map +1 -1
- package/dist/renderer.cjs.map +1 -1
- package/dist/renderer.d.cts +2 -0
- package/dist/renderer.d.ts +2 -0
- package/dist/show.cjs +196 -0
- package/dist/show.cjs.map +1 -0
- package/dist/show.d.cts +54 -0
- package/dist/show.d.ts +54 -0
- package/dist/show.js +171 -0
- package/dist/show.js.map +1 -0
- package/dist/svg.cjs +102 -0
- package/dist/svg.cjs.map +1 -0
- package/dist/svg.d.cts +21 -0
- package/dist/svg.d.ts +21 -0
- package/dist/svg.js +76 -0
- package/dist/svg.js.map +1 -0
- package/package.json +20 -2
- package/src/bind.ts +30 -2
- package/src/boundaries.test.ts +54 -1
- package/src/boundary.ts +24 -8
- package/src/clear-remove.test.ts +85 -0
- package/src/client-only.test.ts +140 -0
- package/src/client-only.ts +65 -0
- package/src/component-empty-return.test.ts +123 -0
- package/src/debug.ts +12 -1
- package/src/dom-events.ts +32 -0
- package/src/dom-props-consistency.test.ts +149 -0
- package/src/dom-props.test.ts +70 -0
- package/src/dom-props.ts +107 -0
- package/src/dynamic.ts +91 -14
- package/src/error.test.ts +76 -1
- package/src/error.ts +87 -22
- package/src/event-cleanup-growth.test.ts +128 -0
- package/src/events.test.ts +16 -3
- package/src/hmr.ts +8 -2
- package/src/index.ts +13 -1
- package/src/invariants.test.ts +252 -0
- package/src/list-fast-path.test.ts +83 -0
- package/src/list-reactive-item.test.ts +77 -0
- package/src/ops.ts +419 -60
- package/src/props.test.ts +61 -1
- package/src/ref-cleanup.test.ts +144 -0
- package/src/ref.ts +57 -8
- package/src/remove-listener-identity.test.ts +97 -0
- package/src/renderer.ts +3 -1
- package/src/select-hidden-subscription.test.ts +104 -0
- package/src/show-classlist.test.ts +205 -0
- package/src/show.ts +107 -0
- package/src/spread-stable-shape.test.ts +109 -0
- package/src/spread.test.ts +86 -0
- package/src/svg.test.ts +28 -1
- package/src/svg.ts +34 -0
package/dist/boundary.js
CHANGED
|
@@ -38,10 +38,10 @@ function describeDebugNode(node) {
|
|
|
38
38
|
__name(describeDebugNode, "describeDebugNode");
|
|
39
39
|
|
|
40
40
|
// packages/runtime/src/dynamic.ts
|
|
41
|
-
import { createOwner as createOwner2, effect, state } from "@vobs/reactivity";
|
|
41
|
+
import { createOwner as createOwner2, effect as effect2, state } from "@vobs/reactivity";
|
|
42
42
|
|
|
43
43
|
// packages/runtime/src/ops.ts
|
|
44
|
-
import { createOwner, getCurrentOwner as getCurrentOwner3, setOwnerDebugName, untrack } from "@vobs/reactivity";
|
|
44
|
+
import { createOwner, effect, getCurrentOwner as getCurrentOwner3, setOwnerDebugName, untrack } from "@vobs/reactivity";
|
|
45
45
|
|
|
46
46
|
// packages/runtime/src/fragment.ts
|
|
47
47
|
import { getCurrentOwner } from "@vobs/reactivity";
|
|
@@ -50,6 +50,139 @@ function isVobsFragment(value) {
|
|
|
50
50
|
}
|
|
51
51
|
__name(isVobsFragment, "isVobsFragment");
|
|
52
52
|
|
|
53
|
+
// packages/runtime/src/error.ts
|
|
54
|
+
var _VobsError = class _VobsError extends Error {
|
|
55
|
+
constructor(options) {
|
|
56
|
+
super(options.message);
|
|
57
|
+
this.name = "VobsError";
|
|
58
|
+
this.code = options.code;
|
|
59
|
+
this.severity = options.severity ?? "error";
|
|
60
|
+
this.layer = options.layer ?? "runtime";
|
|
61
|
+
this.cause = options.cause;
|
|
62
|
+
this.fix = options.fix;
|
|
63
|
+
this.location = options.location;
|
|
64
|
+
this.trace = options.trace;
|
|
65
|
+
this.example = options.example;
|
|
66
|
+
this.docs = options.docs;
|
|
67
|
+
this.codeFrame = options.codeFrame;
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
__name(_VobsError, "VobsError");
|
|
71
|
+
var VobsError = _VobsError;
|
|
72
|
+
function isVobsError(value) {
|
|
73
|
+
return value instanceof VobsError || Boolean(value && typeof value === "object" && typeof value.code === "string" && typeof value.message === "string");
|
|
74
|
+
}
|
|
75
|
+
__name(isVobsError, "isVobsError");
|
|
76
|
+
function isForeignVobsError(value) {
|
|
77
|
+
return value instanceof Error && value.name === "VobsError" && typeof value.code === "string";
|
|
78
|
+
}
|
|
79
|
+
__name(isForeignVobsError, "isForeignVobsError");
|
|
80
|
+
function describeUnknown(value) {
|
|
81
|
+
if (value === null || value === void 0) return String(value);
|
|
82
|
+
if (typeof value === "string") return value;
|
|
83
|
+
if (typeof value === "object") {
|
|
84
|
+
const message = value.message;
|
|
85
|
+
if (typeof message === "string" && message !== "") return message;
|
|
86
|
+
try {
|
|
87
|
+
return JSON.stringify(value) ?? String(value);
|
|
88
|
+
} catch {
|
|
89
|
+
return String(value);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return String(value);
|
|
93
|
+
}
|
|
94
|
+
__name(describeUnknown, "describeUnknown");
|
|
95
|
+
function adoptVobsError(value, defaults) {
|
|
96
|
+
return new VobsError({
|
|
97
|
+
code: value.code,
|
|
98
|
+
message: value.message,
|
|
99
|
+
severity: value.severity ?? defaults.severity,
|
|
100
|
+
layer: value.layer ?? defaults.layer,
|
|
101
|
+
cause: value.cause ?? (value instanceof Error ? value : void 0),
|
|
102
|
+
fix: value.fix ?? defaults.fix,
|
|
103
|
+
location: value.location,
|
|
104
|
+
trace: value.trace,
|
|
105
|
+
example: value.example,
|
|
106
|
+
docs: value.docs,
|
|
107
|
+
codeFrame: value.codeFrame
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
__name(adoptVobsError, "adoptVobsError");
|
|
111
|
+
function normalizeVobsError(value, defaults = {}) {
|
|
112
|
+
if (value instanceof VobsError) return value;
|
|
113
|
+
if (isForeignVobsError(value)) return adoptVobsError(value, defaults);
|
|
114
|
+
if (value instanceof Error) {
|
|
115
|
+
const metadata = value;
|
|
116
|
+
const code = defaults.code ?? (typeof metadata.vobsCode === "string" ? metadata.vobsCode : void 0);
|
|
117
|
+
if (code) {
|
|
118
|
+
defineErrorMetadata(value, "code", code);
|
|
119
|
+
if (value.code !== code) {
|
|
120
|
+
return new VobsError({
|
|
121
|
+
code,
|
|
122
|
+
message: value.message,
|
|
123
|
+
severity: defaults.severity ?? "error",
|
|
124
|
+
layer: defaults.layer ?? "runtime",
|
|
125
|
+
cause: value,
|
|
126
|
+
fix: defaults.fix ?? (typeof metadata.vobsHint === "string" ? metadata.vobsHint : void 0)
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
defineErrorMetadata(value, "severity", defaults.severity ?? "error");
|
|
131
|
+
defineErrorMetadata(value, "layer", defaults.layer ?? "runtime");
|
|
132
|
+
const fix = defaults.fix ?? (typeof metadata.vobsHint === "string" ? metadata.vobsHint : void 0);
|
|
133
|
+
if (fix) defineErrorMetadata(value, "fix", fix);
|
|
134
|
+
const source = metadata.vobsSource;
|
|
135
|
+
if (source && typeof source === "object" && typeof source.file === "string" && typeof source.line === "number" && typeof source.column === "number") {
|
|
136
|
+
defineErrorMetadata(value, "location", source);
|
|
137
|
+
}
|
|
138
|
+
return value;
|
|
139
|
+
}
|
|
140
|
+
if (isVobsError(value)) return adoptVobsError(value, defaults);
|
|
141
|
+
return new VobsError({
|
|
142
|
+
code: defaults.code ?? "VOBS_UNKNOWN",
|
|
143
|
+
message: describeUnknown(value),
|
|
144
|
+
severity: defaults.severity ?? "error",
|
|
145
|
+
layer: defaults.layer ?? "runtime",
|
|
146
|
+
cause: void 0,
|
|
147
|
+
fix: defaults.fix
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
__name(normalizeVobsError, "normalizeVobsError");
|
|
151
|
+
function defineErrorMetadata(target, key, value) {
|
|
152
|
+
if (key in target) return;
|
|
153
|
+
try {
|
|
154
|
+
Object.defineProperty(target, key, { configurable: true, enumerable: false, value, writable: true });
|
|
155
|
+
} catch {
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
__name(defineErrorMetadata, "defineErrorMetadata");
|
|
159
|
+
function formatVobsError(value, options = {}) {
|
|
160
|
+
const error = normalizeVobsError(value);
|
|
161
|
+
const code = error.code || "VOBS_UNKNOWN";
|
|
162
|
+
const severity = error.severity || "error";
|
|
163
|
+
if (options.environment === "production") return `[Vobs ${code}] ${error.message}`;
|
|
164
|
+
const lines = [`[Vobs ${capitalize(severity)}] ${error.message}`, `Code: ${code}`];
|
|
165
|
+
if (error.location) lines.push(`Location: ${error.location.file}:${error.location.line}:${error.location.column}`);
|
|
166
|
+
if (error.codeFrame) lines.push("", error.codeFrame);
|
|
167
|
+
if (error.cause !== void 0) lines.push(`Cause: ${formatCause(error.cause)}`);
|
|
168
|
+
if (error.trace?.length) lines.push("", `Trace: ${error.trace.join(" \u2192 ")}`);
|
|
169
|
+
if (error.fix) lines.push("", `Fix: ${error.fix}`);
|
|
170
|
+
if (error.example) lines.push("", `Example:
|
|
171
|
+
${error.example}`);
|
|
172
|
+
if (error.docs) lines.push(`Docs: ${error.docs}`);
|
|
173
|
+
if (options.includeStack && error.stack) lines.push("", error.stack);
|
|
174
|
+
return lines.join("\n");
|
|
175
|
+
}
|
|
176
|
+
__name(formatVobsError, "formatVobsError");
|
|
177
|
+
function formatCause(value) {
|
|
178
|
+
return value instanceof Error ? `${value.name}: ${value.message}` : String(value);
|
|
179
|
+
}
|
|
180
|
+
__name(formatCause, "formatCause");
|
|
181
|
+
function capitalize(value) {
|
|
182
|
+
return value.slice(0, 1).toUpperCase() + value.slice(1);
|
|
183
|
+
}
|
|
184
|
+
__name(capitalize, "capitalize");
|
|
185
|
+
|
|
53
186
|
// packages/runtime/src/hmr.ts
|
|
54
187
|
var globalTarget = globalThis;
|
|
55
188
|
var hmrGlobal = globalTarget.__VOBS_HMR__ ?? { modules: /* @__PURE__ */ new Map(), states: /* @__PURE__ */ new Map() };
|
|
@@ -103,7 +236,7 @@ function syncSelectValue(parent) {
|
|
|
103
236
|
while (current !== null) {
|
|
104
237
|
if (current.nodeName === "SELECT") {
|
|
105
238
|
const read = selectValueReaders.get(current);
|
|
106
|
-
if (read !== void 0) setProperty(current, "value", read
|
|
239
|
+
if (read !== void 0) setProperty(current, "value", untrack(read));
|
|
107
240
|
return;
|
|
108
241
|
}
|
|
109
242
|
current = current.parentNode;
|
|
@@ -111,9 +244,9 @@ function syncSelectValue(parent) {
|
|
|
111
244
|
}
|
|
112
245
|
__name(syncSelectValue, "syncSelectValue");
|
|
113
246
|
function removeChild(parent, child) {
|
|
114
|
-
disposeNodeOwner(child);
|
|
115
247
|
if (isVobsFragment(child)) {
|
|
116
248
|
child.unmount(parent);
|
|
249
|
+
disposeNodeOwner(child);
|
|
117
250
|
return;
|
|
118
251
|
}
|
|
119
252
|
getRenderer().removeChild(parent, child);
|
|
@@ -124,11 +257,12 @@ function removeChild(parent, child) {
|
|
|
124
257
|
parent: describeDebugNode(parent)
|
|
125
258
|
});
|
|
126
259
|
}
|
|
260
|
+
disposeNodeOwner(child);
|
|
127
261
|
}
|
|
128
262
|
__name(removeChild, "removeChild");
|
|
129
263
|
function setProperty(node, key, value) {
|
|
130
264
|
const previousValue = getRuntimeDebugHooks() ? readDebugValue(() => Reflect.get(node, key)) : void 0;
|
|
131
|
-
getRenderer().setProperty(node, key, value);
|
|
265
|
+
getRenderer().setProperty(node, PROPERTY_IDL_NAMES[key] ?? key, value);
|
|
132
266
|
if (key === "value" && node.tagName === "SELECT") {
|
|
133
267
|
scheduleSelectValueSync(node, value);
|
|
134
268
|
}
|
|
@@ -149,15 +283,19 @@ function scheduleSelectValueSync(node, value) {
|
|
|
149
283
|
pendingSelectValues.set(node, value);
|
|
150
284
|
if (selectSyncScheduled.has(node)) return;
|
|
151
285
|
selectSyncScheduled.add(node);
|
|
286
|
+
const renderer = getRenderer();
|
|
152
287
|
queueMicrotask(() => {
|
|
153
288
|
selectSyncScheduled.delete(node);
|
|
154
289
|
if (!pendingSelectValues.has(node)) return;
|
|
155
290
|
const pending = pendingSelectValues.get(node);
|
|
156
291
|
pendingSelectValues.delete(node);
|
|
157
|
-
|
|
292
|
+
renderer.setProperty(node, "value", pending);
|
|
158
293
|
});
|
|
159
294
|
}
|
|
160
295
|
__name(scheduleSelectValueSync, "scheduleSelectValueSync");
|
|
296
|
+
var PROPERTY_IDL_NAMES = {
|
|
297
|
+
autoFocus: "autofocus"
|
|
298
|
+
};
|
|
161
299
|
function createBlock(factory) {
|
|
162
300
|
const owner = createOwner();
|
|
163
301
|
setOwnerDebugName(owner, "dynamic");
|
|
@@ -177,6 +315,11 @@ function createBlock(factory) {
|
|
|
177
315
|
}
|
|
178
316
|
__name(createBlock, "createBlock");
|
|
179
317
|
function associateNodeOwner(node, owner) {
|
|
318
|
+
if (node === null || node === void 0 || typeof node !== "object" && typeof node !== "function") {
|
|
319
|
+
throw new Error(
|
|
320
|
+
`Vobs: associateNodeOwner \u6536\u5230\u975E\u8282\u70B9\u503C\uFF08${String(node)}\uFF09\u3002\u7EC4\u4EF6\u5FC5\u987B\u8FD4\u56DE VobsNode\uFF1B\u8FD4\u56DE null/undefined \u7531 createComponent \u8F6C\u6210\u7A7A\u6CE8\u91CA\u8282\u70B9\u3002`
|
|
321
|
+
);
|
|
322
|
+
}
|
|
180
323
|
nodeOwners.set(node, owner);
|
|
181
324
|
}
|
|
182
325
|
__name(associateNodeOwner, "associateNodeOwner");
|
|
@@ -193,7 +336,7 @@ function insertDynamic(parent, anchor, factory) {
|
|
|
193
336
|
const marker = createComment("vobs:dynamic");
|
|
194
337
|
insertBefore(parent, marker, anchor);
|
|
195
338
|
let current = null;
|
|
196
|
-
|
|
339
|
+
effect2(() => {
|
|
197
340
|
const next = createBlock(factory);
|
|
198
341
|
if (next === current) return;
|
|
199
342
|
if (current) removeChild(parent, current);
|
|
@@ -203,82 +346,14 @@ function insertDynamic(parent, anchor, factory) {
|
|
|
203
346
|
}
|
|
204
347
|
__name(insertDynamic, "insertDynamic");
|
|
205
348
|
|
|
206
|
-
// packages/runtime/src/
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
this.code = options.code;
|
|
212
|
-
this.severity = options.severity ?? "error";
|
|
213
|
-
this.layer = options.layer ?? "runtime";
|
|
214
|
-
this.cause = options.cause;
|
|
215
|
-
this.fix = options.fix;
|
|
216
|
-
this.location = options.location;
|
|
217
|
-
this.trace = options.trace;
|
|
218
|
-
this.example = options.example;
|
|
219
|
-
this.docs = options.docs;
|
|
220
|
-
this.codeFrame = options.codeFrame;
|
|
221
|
-
}
|
|
222
|
-
};
|
|
223
|
-
__name(_VobsError, "VobsError");
|
|
224
|
-
var VobsError = _VobsError;
|
|
225
|
-
function isVobsError(value) {
|
|
226
|
-
return value instanceof VobsError || Boolean(value && typeof value === "object" && typeof value.code === "string" && typeof value.message === "string" && typeof value.layer === "string");
|
|
227
|
-
}
|
|
228
|
-
__name(isVobsError, "isVobsError");
|
|
229
|
-
function normalizeVobsError(value, defaults = {}) {
|
|
230
|
-
if (value instanceof VobsError) return value;
|
|
231
|
-
if (value instanceof Error) {
|
|
232
|
-
const metadata = value;
|
|
233
|
-
const code = defaults.code ?? (typeof metadata.vobsCode === "string" ? metadata.vobsCode : void 0);
|
|
234
|
-
if (code) defineErrorMetadata(value, "code", code);
|
|
235
|
-
defineErrorMetadata(value, "severity", defaults.severity ?? "error");
|
|
236
|
-
defineErrorMetadata(value, "layer", defaults.layer ?? "runtime");
|
|
237
|
-
const fix = defaults.fix ?? (typeof metadata.vobsHint === "string" ? metadata.vobsHint : void 0);
|
|
238
|
-
if (fix) defineErrorMetadata(value, "fix", fix);
|
|
239
|
-
const source = metadata.vobsSource;
|
|
240
|
-
if (source && typeof source === "object" && typeof source.file === "string" && typeof source.line === "number" && typeof source.column === "number") {
|
|
241
|
-
defineErrorMetadata(value, "location", source);
|
|
242
|
-
}
|
|
243
|
-
return value;
|
|
244
|
-
}
|
|
245
|
-
if (isVobsError(value)) {
|
|
246
|
-
const candidate = value;
|
|
247
|
-
return new VobsError({
|
|
248
|
-
code: candidate.code,
|
|
249
|
-
message: candidate.message,
|
|
250
|
-
severity: candidate.severity ?? defaults.severity,
|
|
251
|
-
layer: candidate.layer ?? defaults.layer,
|
|
252
|
-
cause: candidate.cause,
|
|
253
|
-
fix: candidate.fix ?? defaults.fix,
|
|
254
|
-
location: candidate.location,
|
|
255
|
-
trace: candidate.trace,
|
|
256
|
-
example: candidate.example,
|
|
257
|
-
docs: candidate.docs,
|
|
258
|
-
codeFrame: candidate.codeFrame
|
|
259
|
-
});
|
|
260
|
-
}
|
|
261
|
-
const message = String(value);
|
|
262
|
-
return new VobsError({
|
|
263
|
-
code: defaults.code ?? "VOBS_UNKNOWN",
|
|
264
|
-
message,
|
|
265
|
-
severity: defaults.severity ?? "error",
|
|
266
|
-
layer: defaults.layer ?? "runtime",
|
|
267
|
-
cause: void 0,
|
|
268
|
-
fix: defaults.fix
|
|
269
|
-
});
|
|
270
|
-
}
|
|
271
|
-
__name(normalizeVobsError, "normalizeVobsError");
|
|
272
|
-
function defineErrorMetadata(target, key, value) {
|
|
273
|
-
if (key in target) return;
|
|
274
|
-
try {
|
|
275
|
-
Object.defineProperty(target, key, { configurable: true, enumerable: false, value, writable: true });
|
|
276
|
-
} catch {
|
|
349
|
+
// packages/runtime/src/boundary.ts
|
|
350
|
+
function reportBoundaryError(event, loud) {
|
|
351
|
+
invokeRuntimeDebug("error", event);
|
|
352
|
+
if (loud && getRuntimeDebugHooks()?.error === void 0) {
|
|
353
|
+
console.error(formatVobsError(event.error, { includeStack: true }));
|
|
277
354
|
}
|
|
278
355
|
}
|
|
279
|
-
__name(
|
|
280
|
-
|
|
281
|
-
// packages/runtime/src/boundary.ts
|
|
356
|
+
__name(reportBoundaryError, "reportBoundaryError");
|
|
282
357
|
function insertBoundary(parent, anchor, options) {
|
|
283
358
|
const boundary = createOwner3();
|
|
284
359
|
boundary.run(() => {
|
|
@@ -295,24 +370,24 @@ function insertBoundary(parent, anchor, options) {
|
|
|
295
370
|
fix: "\u68C0\u67E5\u7EC4\u4EF6\u6E32\u67D3\u903B\u8F91\uFF0C\u6216\u5728\u8FB9\u754C fallback \u4E2D\u63D0\u4F9B\u6062\u590D\u64CD\u4F5C\u3002"
|
|
296
371
|
});
|
|
297
372
|
lastError = normalized;
|
|
298
|
-
|
|
373
|
+
reportBoundaryError({
|
|
299
374
|
error: normalized,
|
|
300
375
|
owner: boundary,
|
|
301
376
|
phase: "boundary",
|
|
302
377
|
handled: true,
|
|
303
378
|
recovery: "fallback"
|
|
304
|
-
});
|
|
379
|
+
}, true);
|
|
305
380
|
error.value = normalized;
|
|
306
381
|
});
|
|
307
382
|
const retry = /* @__PURE__ */ __name(() => {
|
|
308
383
|
if (error.value) {
|
|
309
|
-
|
|
384
|
+
reportBoundaryError({
|
|
310
385
|
error: error.value,
|
|
311
386
|
owner: boundary,
|
|
312
387
|
phase: "boundary",
|
|
313
388
|
handled: true,
|
|
314
389
|
recovery: "retrying"
|
|
315
|
-
});
|
|
390
|
+
}, false);
|
|
316
391
|
}
|
|
317
392
|
error.value = null;
|
|
318
393
|
return options.onRetry?.();
|
|
@@ -327,13 +402,13 @@ function insertBoundary(parent, anchor, options) {
|
|
|
327
402
|
const currentError = error.value;
|
|
328
403
|
if (!currentError) {
|
|
329
404
|
if (fallbackActive && lastError) {
|
|
330
|
-
|
|
405
|
+
reportBoundaryError({
|
|
331
406
|
error: lastError,
|
|
332
407
|
owner: boundary,
|
|
333
408
|
phase: "boundary",
|
|
334
409
|
handled: true,
|
|
335
410
|
recovery: "recovered"
|
|
336
|
-
});
|
|
411
|
+
}, false);
|
|
337
412
|
lastError = null;
|
|
338
413
|
}
|
|
339
414
|
fallbackActive = false;
|