@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/error-boundary.js
CHANGED
|
@@ -5,7 +5,140 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
|
|
|
5
5
|
import { getCurrentOwner as getCurrentOwner3 } from "@vobs/reactivity";
|
|
6
6
|
|
|
7
7
|
// packages/runtime/src/ops.ts
|
|
8
|
-
import { createOwner, getCurrentOwner as getCurrentOwner2, setOwnerDebugName, untrack } from "@vobs/reactivity";
|
|
8
|
+
import { createOwner, effect, getCurrentOwner as getCurrentOwner2, setOwnerDebugName, untrack } from "@vobs/reactivity";
|
|
9
|
+
|
|
10
|
+
// packages/runtime/src/error.ts
|
|
11
|
+
var _VobsError = class _VobsError extends Error {
|
|
12
|
+
constructor(options) {
|
|
13
|
+
super(options.message);
|
|
14
|
+
this.name = "VobsError";
|
|
15
|
+
this.code = options.code;
|
|
16
|
+
this.severity = options.severity ?? "error";
|
|
17
|
+
this.layer = options.layer ?? "runtime";
|
|
18
|
+
this.cause = options.cause;
|
|
19
|
+
this.fix = options.fix;
|
|
20
|
+
this.location = options.location;
|
|
21
|
+
this.trace = options.trace;
|
|
22
|
+
this.example = options.example;
|
|
23
|
+
this.docs = options.docs;
|
|
24
|
+
this.codeFrame = options.codeFrame;
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
__name(_VobsError, "VobsError");
|
|
28
|
+
var VobsError = _VobsError;
|
|
29
|
+
function isVobsError(value) {
|
|
30
|
+
return value instanceof VobsError || Boolean(value && typeof value === "object" && typeof value.code === "string" && typeof value.message === "string");
|
|
31
|
+
}
|
|
32
|
+
__name(isVobsError, "isVobsError");
|
|
33
|
+
function isForeignVobsError(value) {
|
|
34
|
+
return value instanceof Error && value.name === "VobsError" && typeof value.code === "string";
|
|
35
|
+
}
|
|
36
|
+
__name(isForeignVobsError, "isForeignVobsError");
|
|
37
|
+
function describeUnknown(value) {
|
|
38
|
+
if (value === null || value === void 0) return String(value);
|
|
39
|
+
if (typeof value === "string") return value;
|
|
40
|
+
if (typeof value === "object") {
|
|
41
|
+
const message = value.message;
|
|
42
|
+
if (typeof message === "string" && message !== "") return message;
|
|
43
|
+
try {
|
|
44
|
+
return JSON.stringify(value) ?? String(value);
|
|
45
|
+
} catch {
|
|
46
|
+
return String(value);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return String(value);
|
|
50
|
+
}
|
|
51
|
+
__name(describeUnknown, "describeUnknown");
|
|
52
|
+
function adoptVobsError(value, defaults) {
|
|
53
|
+
return new VobsError({
|
|
54
|
+
code: value.code,
|
|
55
|
+
message: value.message,
|
|
56
|
+
severity: value.severity ?? defaults.severity,
|
|
57
|
+
layer: value.layer ?? defaults.layer,
|
|
58
|
+
cause: value.cause ?? (value instanceof Error ? value : void 0),
|
|
59
|
+
fix: value.fix ?? defaults.fix,
|
|
60
|
+
location: value.location,
|
|
61
|
+
trace: value.trace,
|
|
62
|
+
example: value.example,
|
|
63
|
+
docs: value.docs,
|
|
64
|
+
codeFrame: value.codeFrame
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
__name(adoptVobsError, "adoptVobsError");
|
|
68
|
+
function normalizeVobsError(value, defaults = {}) {
|
|
69
|
+
if (value instanceof VobsError) return value;
|
|
70
|
+
if (isForeignVobsError(value)) return adoptVobsError(value, defaults);
|
|
71
|
+
if (value instanceof Error) {
|
|
72
|
+
const metadata = value;
|
|
73
|
+
const code = defaults.code ?? (typeof metadata.vobsCode === "string" ? metadata.vobsCode : void 0);
|
|
74
|
+
if (code) {
|
|
75
|
+
defineErrorMetadata(value, "code", code);
|
|
76
|
+
if (value.code !== code) {
|
|
77
|
+
return new VobsError({
|
|
78
|
+
code,
|
|
79
|
+
message: value.message,
|
|
80
|
+
severity: defaults.severity ?? "error",
|
|
81
|
+
layer: defaults.layer ?? "runtime",
|
|
82
|
+
cause: value,
|
|
83
|
+
fix: defaults.fix ?? (typeof metadata.vobsHint === "string" ? metadata.vobsHint : void 0)
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
defineErrorMetadata(value, "severity", defaults.severity ?? "error");
|
|
88
|
+
defineErrorMetadata(value, "layer", defaults.layer ?? "runtime");
|
|
89
|
+
const fix = defaults.fix ?? (typeof metadata.vobsHint === "string" ? metadata.vobsHint : void 0);
|
|
90
|
+
if (fix) defineErrorMetadata(value, "fix", fix);
|
|
91
|
+
const source = metadata.vobsSource;
|
|
92
|
+
if (source && typeof source === "object" && typeof source.file === "string" && typeof source.line === "number" && typeof source.column === "number") {
|
|
93
|
+
defineErrorMetadata(value, "location", source);
|
|
94
|
+
}
|
|
95
|
+
return value;
|
|
96
|
+
}
|
|
97
|
+
if (isVobsError(value)) return adoptVobsError(value, defaults);
|
|
98
|
+
return new VobsError({
|
|
99
|
+
code: defaults.code ?? "VOBS_UNKNOWN",
|
|
100
|
+
message: describeUnknown(value),
|
|
101
|
+
severity: defaults.severity ?? "error",
|
|
102
|
+
layer: defaults.layer ?? "runtime",
|
|
103
|
+
cause: void 0,
|
|
104
|
+
fix: defaults.fix
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
__name(normalizeVobsError, "normalizeVobsError");
|
|
108
|
+
function defineErrorMetadata(target, key, value) {
|
|
109
|
+
if (key in target) return;
|
|
110
|
+
try {
|
|
111
|
+
Object.defineProperty(target, key, { configurable: true, enumerable: false, value, writable: true });
|
|
112
|
+
} catch {
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
__name(defineErrorMetadata, "defineErrorMetadata");
|
|
116
|
+
function formatVobsError(value, options = {}) {
|
|
117
|
+
const error = normalizeVobsError(value);
|
|
118
|
+
const code = error.code || "VOBS_UNKNOWN";
|
|
119
|
+
const severity = error.severity || "error";
|
|
120
|
+
if (options.environment === "production") return `[Vobs ${code}] ${error.message}`;
|
|
121
|
+
const lines = [`[Vobs ${capitalize(severity)}] ${error.message}`, `Code: ${code}`];
|
|
122
|
+
if (error.location) lines.push(`Location: ${error.location.file}:${error.location.line}:${error.location.column}`);
|
|
123
|
+
if (error.codeFrame) lines.push("", error.codeFrame);
|
|
124
|
+
if (error.cause !== void 0) lines.push(`Cause: ${formatCause(error.cause)}`);
|
|
125
|
+
if (error.trace?.length) lines.push("", `Trace: ${error.trace.join(" \u2192 ")}`);
|
|
126
|
+
if (error.fix) lines.push("", `Fix: ${error.fix}`);
|
|
127
|
+
if (error.example) lines.push("", `Example:
|
|
128
|
+
${error.example}`);
|
|
129
|
+
if (error.docs) lines.push(`Docs: ${error.docs}`);
|
|
130
|
+
if (options.includeStack && error.stack) lines.push("", error.stack);
|
|
131
|
+
return lines.join("\n");
|
|
132
|
+
}
|
|
133
|
+
__name(formatVobsError, "formatVobsError");
|
|
134
|
+
function formatCause(value) {
|
|
135
|
+
return value instanceof Error ? `${value.name}: ${value.message}` : String(value);
|
|
136
|
+
}
|
|
137
|
+
__name(formatCause, "formatCause");
|
|
138
|
+
function capitalize(value) {
|
|
139
|
+
return value.slice(0, 1).toUpperCase() + value.slice(1);
|
|
140
|
+
}
|
|
141
|
+
__name(capitalize, "capitalize");
|
|
9
142
|
|
|
10
143
|
// packages/runtime/src/debug.ts
|
|
11
144
|
var activeRuntimeDebugHooks = null;
|
|
@@ -93,7 +226,7 @@ function syncSelectValue(parent) {
|
|
|
93
226
|
while (current !== null) {
|
|
94
227
|
if (current.nodeName === "SELECT") {
|
|
95
228
|
const read = selectValueReaders.get(current);
|
|
96
|
-
if (read !== void 0) setProperty(current, "value", read
|
|
229
|
+
if (read !== void 0) setProperty(current, "value", untrack(read));
|
|
97
230
|
return;
|
|
98
231
|
}
|
|
99
232
|
current = current.parentNode;
|
|
@@ -101,9 +234,9 @@ function syncSelectValue(parent) {
|
|
|
101
234
|
}
|
|
102
235
|
__name(syncSelectValue, "syncSelectValue");
|
|
103
236
|
function removeChild(parent, child) {
|
|
104
|
-
disposeNodeOwner(child);
|
|
105
237
|
if (isVobsFragment(child)) {
|
|
106
238
|
child.unmount(parent);
|
|
239
|
+
disposeNodeOwner(child);
|
|
107
240
|
return;
|
|
108
241
|
}
|
|
109
242
|
getRenderer().removeChild(parent, child);
|
|
@@ -114,11 +247,12 @@ function removeChild(parent, child) {
|
|
|
114
247
|
parent: describeDebugNode(parent)
|
|
115
248
|
});
|
|
116
249
|
}
|
|
250
|
+
disposeNodeOwner(child);
|
|
117
251
|
}
|
|
118
252
|
__name(removeChild, "removeChild");
|
|
119
253
|
function setProperty(node, key, value) {
|
|
120
254
|
const previousValue = getRuntimeDebugHooks() ? readDebugValue(() => Reflect.get(node, key)) : void 0;
|
|
121
|
-
getRenderer().setProperty(node, key, value);
|
|
255
|
+
getRenderer().setProperty(node, PROPERTY_IDL_NAMES[key] ?? key, value);
|
|
122
256
|
if (key === "value" && node.tagName === "SELECT") {
|
|
123
257
|
scheduleSelectValueSync(node, value);
|
|
124
258
|
}
|
|
@@ -139,15 +273,19 @@ function scheduleSelectValueSync(node, value) {
|
|
|
139
273
|
pendingSelectValues.set(node, value);
|
|
140
274
|
if (selectSyncScheduled.has(node)) return;
|
|
141
275
|
selectSyncScheduled.add(node);
|
|
276
|
+
const renderer = getRenderer();
|
|
142
277
|
queueMicrotask(() => {
|
|
143
278
|
selectSyncScheduled.delete(node);
|
|
144
279
|
if (!pendingSelectValues.has(node)) return;
|
|
145
280
|
const pending = pendingSelectValues.get(node);
|
|
146
281
|
pendingSelectValues.delete(node);
|
|
147
|
-
|
|
282
|
+
renderer.setProperty(node, "value", pending);
|
|
148
283
|
});
|
|
149
284
|
}
|
|
150
285
|
__name(scheduleSelectValueSync, "scheduleSelectValueSync");
|
|
286
|
+
var PROPERTY_IDL_NAMES = {
|
|
287
|
+
autoFocus: "autofocus"
|
|
288
|
+
};
|
|
151
289
|
function createBlock(factory) {
|
|
152
290
|
const owner = createOwner();
|
|
153
291
|
setOwnerDebugName(owner, "dynamic");
|
|
@@ -167,6 +305,11 @@ function createBlock(factory) {
|
|
|
167
305
|
}
|
|
168
306
|
__name(createBlock, "createBlock");
|
|
169
307
|
function associateNodeOwner(node, owner) {
|
|
308
|
+
if (node === null || node === void 0 || typeof node !== "object" && typeof node !== "function") {
|
|
309
|
+
throw new Error(
|
|
310
|
+
`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`
|
|
311
|
+
);
|
|
312
|
+
}
|
|
170
313
|
nodeOwners.set(node, owner);
|
|
171
314
|
}
|
|
172
315
|
__name(associateNodeOwner, "associateNodeOwner");
|
|
@@ -249,12 +392,12 @@ __name(moveRange, "moveRange");
|
|
|
249
392
|
import { createOwner as createOwner3, state as state2 } from "@vobs/reactivity";
|
|
250
393
|
|
|
251
394
|
// packages/runtime/src/dynamic.ts
|
|
252
|
-
import { createOwner as createOwner2, effect, state } from "@vobs/reactivity";
|
|
395
|
+
import { createOwner as createOwner2, effect as effect2, state } from "@vobs/reactivity";
|
|
253
396
|
function insertDynamic(parent, anchor, factory) {
|
|
254
397
|
const marker = createComment("vobs:dynamic");
|
|
255
398
|
insertBefore(parent, marker, anchor);
|
|
256
399
|
let current = null;
|
|
257
|
-
|
|
400
|
+
effect2(() => {
|
|
258
401
|
const next = createBlock(factory);
|
|
259
402
|
if (next === current) return;
|
|
260
403
|
if (current) removeChild(parent, current);
|
|
@@ -264,82 +407,14 @@ function insertDynamic(parent, anchor, factory) {
|
|
|
264
407
|
}
|
|
265
408
|
__name(insertDynamic, "insertDynamic");
|
|
266
409
|
|
|
267
|
-
// packages/runtime/src/
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
this.code = options.code;
|
|
273
|
-
this.severity = options.severity ?? "error";
|
|
274
|
-
this.layer = options.layer ?? "runtime";
|
|
275
|
-
this.cause = options.cause;
|
|
276
|
-
this.fix = options.fix;
|
|
277
|
-
this.location = options.location;
|
|
278
|
-
this.trace = options.trace;
|
|
279
|
-
this.example = options.example;
|
|
280
|
-
this.docs = options.docs;
|
|
281
|
-
this.codeFrame = options.codeFrame;
|
|
282
|
-
}
|
|
283
|
-
};
|
|
284
|
-
__name(_VobsError, "VobsError");
|
|
285
|
-
var VobsError = _VobsError;
|
|
286
|
-
function isVobsError(value) {
|
|
287
|
-
return value instanceof VobsError || Boolean(value && typeof value === "object" && typeof value.code === "string" && typeof value.message === "string" && typeof value.layer === "string");
|
|
288
|
-
}
|
|
289
|
-
__name(isVobsError, "isVobsError");
|
|
290
|
-
function normalizeVobsError(value, defaults = {}) {
|
|
291
|
-
if (value instanceof VobsError) return value;
|
|
292
|
-
if (value instanceof Error) {
|
|
293
|
-
const metadata = value;
|
|
294
|
-
const code = defaults.code ?? (typeof metadata.vobsCode === "string" ? metadata.vobsCode : void 0);
|
|
295
|
-
if (code) defineErrorMetadata(value, "code", code);
|
|
296
|
-
defineErrorMetadata(value, "severity", defaults.severity ?? "error");
|
|
297
|
-
defineErrorMetadata(value, "layer", defaults.layer ?? "runtime");
|
|
298
|
-
const fix = defaults.fix ?? (typeof metadata.vobsHint === "string" ? metadata.vobsHint : void 0);
|
|
299
|
-
if (fix) defineErrorMetadata(value, "fix", fix);
|
|
300
|
-
const source = metadata.vobsSource;
|
|
301
|
-
if (source && typeof source === "object" && typeof source.file === "string" && typeof source.line === "number" && typeof source.column === "number") {
|
|
302
|
-
defineErrorMetadata(value, "location", source);
|
|
303
|
-
}
|
|
304
|
-
return value;
|
|
305
|
-
}
|
|
306
|
-
if (isVobsError(value)) {
|
|
307
|
-
const candidate = value;
|
|
308
|
-
return new VobsError({
|
|
309
|
-
code: candidate.code,
|
|
310
|
-
message: candidate.message,
|
|
311
|
-
severity: candidate.severity ?? defaults.severity,
|
|
312
|
-
layer: candidate.layer ?? defaults.layer,
|
|
313
|
-
cause: candidate.cause,
|
|
314
|
-
fix: candidate.fix ?? defaults.fix,
|
|
315
|
-
location: candidate.location,
|
|
316
|
-
trace: candidate.trace,
|
|
317
|
-
example: candidate.example,
|
|
318
|
-
docs: candidate.docs,
|
|
319
|
-
codeFrame: candidate.codeFrame
|
|
320
|
-
});
|
|
321
|
-
}
|
|
322
|
-
const message = String(value);
|
|
323
|
-
return new VobsError({
|
|
324
|
-
code: defaults.code ?? "VOBS_UNKNOWN",
|
|
325
|
-
message,
|
|
326
|
-
severity: defaults.severity ?? "error",
|
|
327
|
-
layer: defaults.layer ?? "runtime",
|
|
328
|
-
cause: void 0,
|
|
329
|
-
fix: defaults.fix
|
|
330
|
-
});
|
|
331
|
-
}
|
|
332
|
-
__name(normalizeVobsError, "normalizeVobsError");
|
|
333
|
-
function defineErrorMetadata(target, key, value) {
|
|
334
|
-
if (key in target) return;
|
|
335
|
-
try {
|
|
336
|
-
Object.defineProperty(target, key, { configurable: true, enumerable: false, value, writable: true });
|
|
337
|
-
} catch {
|
|
410
|
+
// packages/runtime/src/boundary.ts
|
|
411
|
+
function reportBoundaryError(event, loud) {
|
|
412
|
+
invokeRuntimeDebug("error", event);
|
|
413
|
+
if (loud && getRuntimeDebugHooks()?.error === void 0) {
|
|
414
|
+
console.error(formatVobsError(event.error, { includeStack: true }));
|
|
338
415
|
}
|
|
339
416
|
}
|
|
340
|
-
__name(
|
|
341
|
-
|
|
342
|
-
// packages/runtime/src/boundary.ts
|
|
417
|
+
__name(reportBoundaryError, "reportBoundaryError");
|
|
343
418
|
function insertBoundary(parent, anchor, options) {
|
|
344
419
|
const boundary = createOwner3();
|
|
345
420
|
boundary.run(() => {
|
|
@@ -356,24 +431,24 @@ function insertBoundary(parent, anchor, options) {
|
|
|
356
431
|
fix: "\u68C0\u67E5\u7EC4\u4EF6\u6E32\u67D3\u903B\u8F91\uFF0C\u6216\u5728\u8FB9\u754C fallback \u4E2D\u63D0\u4F9B\u6062\u590D\u64CD\u4F5C\u3002"
|
|
357
432
|
});
|
|
358
433
|
lastError = normalized;
|
|
359
|
-
|
|
434
|
+
reportBoundaryError({
|
|
360
435
|
error: normalized,
|
|
361
436
|
owner: boundary,
|
|
362
437
|
phase: "boundary",
|
|
363
438
|
handled: true,
|
|
364
439
|
recovery: "fallback"
|
|
365
|
-
});
|
|
440
|
+
}, true);
|
|
366
441
|
error.value = normalized;
|
|
367
442
|
});
|
|
368
443
|
const retry = /* @__PURE__ */ __name(() => {
|
|
369
444
|
if (error.value) {
|
|
370
|
-
|
|
445
|
+
reportBoundaryError({
|
|
371
446
|
error: error.value,
|
|
372
447
|
owner: boundary,
|
|
373
448
|
phase: "boundary",
|
|
374
449
|
handled: true,
|
|
375
450
|
recovery: "retrying"
|
|
376
|
-
});
|
|
451
|
+
}, false);
|
|
377
452
|
}
|
|
378
453
|
error.value = null;
|
|
379
454
|
return options.onRetry?.();
|
|
@@ -388,13 +463,13 @@ function insertBoundary(parent, anchor, options) {
|
|
|
388
463
|
const currentError = error.value;
|
|
389
464
|
if (!currentError) {
|
|
390
465
|
if (fallbackActive && lastError) {
|
|
391
|
-
|
|
466
|
+
reportBoundaryError({
|
|
392
467
|
error: lastError,
|
|
393
468
|
owner: boundary,
|
|
394
469
|
phase: "boundary",
|
|
395
470
|
handled: true,
|
|
396
471
|
recovery: "recovered"
|
|
397
|
-
});
|
|
472
|
+
}, false);
|
|
398
473
|
lastError = null;
|
|
399
474
|
}
|
|
400
475
|
fallbackActive = false;
|