@vobs/router 1.2.1 → 1.2.2

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/dist/index.cjs CHANGED
@@ -1,825 +1,45 @@
1
- 'use strict';
2
-
1
+ var __VOBS_CJS_FILE_URL = require("url").pathToFileURL(__filename).href;
2
+ "use strict";
3
3
  var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
4
7
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
5
-
6
- // packages/reactivity/src/debug.ts
7
- var activeDebugHooks = null;
8
- var signalNames = /* @__PURE__ */ new WeakMap();
9
- function hasDebugHooks() {
10
- return activeDebugHooks !== null;
11
- }
12
- __name(hasDebugHooks, "hasDebugHooks");
13
- function setSignalDebugName(signal, name) {
14
- signalNames.set(signal, name);
15
- invokeDebug("signalNamed", signal, name);
16
- }
17
- __name(setSignalDebugName, "setSignalDebugName");
18
- function invokeDebug(name, ...args) {
19
- return;
20
- }
21
- __name(invokeDebug, "invokeDebug");
22
-
23
- // packages/reactivity/src/owner.ts
24
- var currentOwner = null;
25
- var nextOwnerId = 1;
26
- var ownerNames = /* @__PURE__ */ new WeakMap();
27
- function createOwner() {
28
- const parent = currentOwner;
29
- let disposed = parent?.disposed ?? false;
30
- const children = [];
31
- const cleanups = [];
32
- const errorHandlers = /* @__PURE__ */ new Set();
33
- const owner = {
34
- id: `owner-${nextOwnerId++}`,
35
- parent,
36
- children,
37
- depth: (parent?.depth ?? -1) + 1,
38
- get disposed() {
39
- return disposed;
40
- },
41
- run(fn) {
42
- if (disposed) throw new Error("Vobs: \u5DF2\u9500\u6BC1\u7684 Owner \u4E0D\u80FD\u7EE7\u7EED\u8FD0\u884C");
43
- const previous = currentOwner;
44
- currentOwner = owner;
45
- try {
46
- return fn();
47
- } finally {
48
- currentOwner = previous;
49
- }
50
- },
51
- addCleanup(cleanup) {
52
- if (disposed) {
53
- cleanup();
54
- return;
55
- }
56
- cleanups.push(cleanup);
57
- },
58
- onDispose(cleanup) {
59
- owner.addCleanup(cleanup);
60
- },
61
- onError(handler) {
62
- errorHandlers.add(handler);
63
- const remove = /* @__PURE__ */ __name(() => errorHandlers.delete(handler), "remove");
64
- owner.addCleanup(remove);
65
- return remove;
66
- },
67
- handleError(error) {
68
- for (const handler of [...errorHandlers].reverse()) {
69
- try {
70
- handler(error);
71
- return true;
72
- } catch (handlerError) {
73
- return parent?.handleError(handlerError) ?? false;
74
- }
75
- }
76
- return parent?.handleError(error) ?? false;
77
- },
78
- dispose() {
79
- if (disposed) return;
80
- disposed = true;
81
- for (const child of [...children]) child.dispose();
82
- children.length = 0;
83
- let firstError;
84
- for (let index = cleanups.length - 1; index >= 0; index--) {
85
- try {
86
- cleanups[index]();
87
- } catch (error) {
88
- firstError ?? (firstError = error);
89
- }
90
- }
91
- cleanups.length = 0;
92
- if (parent) {
93
- const index = parent.children.indexOf(owner);
94
- if (index >= 0) parent.children.splice(index, 1);
95
- }
96
- if (firstError) throw firstError;
97
- }
98
- };
99
- if (parent && !parent.disposed) parent.children.push(owner);
100
- return owner;
101
- }
102
- __name(createOwner, "createOwner");
103
- function setOwnerDebugName(owner, name) {
104
- ownerNames.set(owner, name);
105
- }
106
- __name(setOwnerDebugName, "setOwnerDebugName");
107
- function getCurrentOwner() {
108
- return currentOwner;
109
- }
110
- __name(getCurrentOwner, "getCurrentOwner");
111
-
112
- // packages/reactivity/src/signal.ts
113
- var currentSubscriber = null;
114
- function getCurrentSubscriber() {
115
- return currentSubscriber;
116
- }
117
- __name(getCurrentSubscriber, "getCurrentSubscriber");
118
- function setCurrentSubscriber(subscriber) {
119
- currentSubscriber = subscriber;
120
- }
121
- __name(setCurrentSubscriber, "setCurrentSubscriber");
122
- function trackDependency(dependency) {
123
- if (!currentSubscriber || currentSubscriber.disposed) return;
124
- !currentSubscriber.dependencies.has(dependency);
125
- currentSubscriber.dependencies.add(dependency);
126
- }
127
- __name(trackDependency, "trackDependency");
128
- function state(initialValue, debugName) {
129
- let value = initialValue;
130
- let disposed = false;
131
- const subscribers = /* @__PURE__ */ new Set();
132
- const signalInstance = {
133
- get value() {
134
- const subscriber = getCurrentSubscriber();
135
- if (subscriber && !subscriber.disposed) {
136
- subscribers.add(subscriber);
137
- trackDependency(signalInstance);
138
- }
139
- return value;
140
- },
141
- set value(nextValue) {
142
- if (disposed || Object.is(value, nextValue)) return;
143
- value = nextValue;
144
- for (const subscriber of [...subscribers]) subscriber.notify();
145
- },
146
- unsubscribe(subscriber) {
147
- subscribers.delete(subscriber);
148
- },
149
- // 与 `.value =` 赋值同一条路径:判等短路、debug hook、notify 全部一致。
150
- // 以闭包实现,可安全地作为回调直接传递(无 this 绑定问题)。
151
- set(next) {
152
- signalInstance.value = next;
153
- },
154
- dispose() {
155
- if (disposed) return;
156
- disposed = true;
157
- subscribers.clear();
158
- }
159
- };
160
- const owner = getCurrentOwner();
161
- owner?.addCleanup(signalInstance.dispose);
162
- if (debugName?.trim()) setSignalDebugName(signalInstance, debugName.trim());
163
- return signalInstance;
164
- }
165
- __name(state, "state");
166
-
167
- // packages/reactivity/src/scheduler.ts
168
- var _Scheduler = class _Scheduler {
169
- constructor() {
170
- this.dirtyEffects = /* @__PURE__ */ new Set();
171
- this.lowPriorityEffects = /* @__PURE__ */ new Set();
172
- // flush 不可重入(flushing 标志保证),缓冲数组可在轮次间安全复用,避免每轮分配。
173
- this.normalBuffer = [];
174
- this.lowBuffer = [];
175
- this.flushing = false;
176
- this.scheduled = false;
177
- this.batchDepth = 0;
178
- }
179
- schedule(effect2) {
180
- if (effect2.disposed) return;
181
- this.dirtyEffects.add(effect2);
182
- this.lowPriorityEffects.delete(effect2);
183
- this.ensureScheduled();
184
- }
185
- /** Queue an effect behind normal updates while preserving deterministic order. */
186
- scheduleLow(effect2) {
187
- if (effect2.disposed) return;
188
- if (!this.dirtyEffects.has(effect2)) this.lowPriorityEffects.add(effect2);
189
- this.ensureScheduled();
190
- }
191
- ensureScheduled() {
192
- if (this.batchDepth === 0 && !this.flushing && !this.scheduled) {
193
- this.scheduled = true;
194
- queueMicrotask(() => {
195
- this.scheduled = false;
196
- this.flush();
197
- });
198
- }
199
- }
200
- remove(effect2) {
201
- this.dirtyEffects.delete(effect2);
202
- this.lowPriorityEffects.delete(effect2);
203
- }
204
- batch(fn) {
205
- this.batchDepth++;
206
- try {
207
- return fn();
208
- } finally {
209
- this.batchDepth--;
210
- if (this.batchDepth === 0) this.flush();
211
- }
212
- }
213
- flush() {
214
- if (this.flushing || this.batchDepth > 0) return;
215
- this.flushing = true;
216
- let rounds = 0;
217
- let firstError;
218
- let hasError = false;
219
- try {
220
- while (this.dirtyEffects.size > 0 || this.lowPriorityEffects.size > 0) {
221
- if (++rounds > 100) {
222
- this.dirtyEffects.clear();
223
- this.lowPriorityEffects.clear();
224
- throw new Error("Vobs: \u54CD\u5E94\u5F0F\u66F4\u65B0\u8D85\u8FC7 100 \u8F6E\uFF0C\u53EF\u80FD\u5B58\u5728\u5FAA\u73AF\u4F9D\u8D56");
225
- }
226
- this.collectRunnable(this.dirtyEffects, this.normalBuffer);
227
- this.collectRunnable(this.lowPriorityEffects, this.lowBuffer);
228
- sortEffects(this.normalBuffer);
229
- sortEffects(this.lowBuffer);
230
- for (const effect2 of this.normalBuffer) {
231
- try {
232
- effect2.run();
233
- } catch (error) {
234
- if (!hasError) {
235
- firstError = error;
236
- hasError = true;
237
- }
238
- }
239
- }
240
- for (const effect2 of this.lowBuffer) {
241
- try {
242
- effect2.run();
243
- } catch (error) {
244
- if (!hasError) {
245
- firstError = error;
246
- hasError = true;
247
- }
248
- }
249
- }
250
- this.normalBuffer.length = 0;
251
- this.lowBuffer.length = 0;
252
- }
253
- } finally {
254
- this.normalBuffer.length = 0;
255
- this.lowBuffer.length = 0;
256
- this.flushing = false;
257
- }
258
- if (hasError) throw firstError;
259
- }
260
- /** 收集未 disposed 的 effect 并清空源集合;run() 期间新调度的 effect 留给下一轮。 */
261
- collectRunnable(source, target) {
262
- for (const effect2 of source) {
263
- if (!effect2.disposed) target.push(effect2);
264
- }
265
- source.clear();
266
- }
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
267
11
  };
268
- __name(_Scheduler, "Scheduler");
269
- var Scheduler = _Scheduler;
270
- function sortEffects(effects) {
271
- if (effects.length > 1) {
272
- effects.sort((a, b) => b.depth - a.depth || a.order - b.order);
273
- }
274
- }
275
- __name(sortEffects, "sortEffects");
276
- var scheduler = new Scheduler();
277
-
278
- // packages/reactivity/src/effect.ts
279
- var nextEffectOrder = 1;
280
- function cleanupDependencies(subscriber) {
281
- for (const dependency of subscriber.dependencies) {
282
- dependency.unsubscribe(subscriber);
283
- }
284
- subscriber.dependencies.clear();
285
- }
286
- __name(cleanupDependencies, "cleanupDependencies");
287
- function effect(callback) {
288
- const owner = getCurrentOwner();
289
- let cleanup;
290
- let dirty = true;
291
- let disposed = false;
292
- const eff = {
293
- order: nextEffectOrder++,
294
- depth: owner?.depth ?? 0,
295
- dependencies: /* @__PURE__ */ new Set(),
296
- get disposed() {
297
- return disposed;
298
- },
299
- notify() {
300
- if (disposed || dirty) return;
301
- dirty = true;
302
- scheduler.schedule(eff);
303
- },
304
- run() {
305
- if (disposed || !dirty) return;
306
- dirty = false;
307
- const previousCleanup = cleanup;
308
- cleanup = void 0;
309
- let cleanupError;
310
- if (previousCleanup) {
311
- try {
312
- previousCleanup();
313
- } catch (error) {
314
- const handled2 = owner?.handleError(error) ?? false;
315
- if (!handled2) cleanupError = error;
316
- }
317
- }
318
- cleanupDependencies(eff);
319
- const previous = getCurrentSubscriber();
320
- setCurrentSubscriber(eff);
321
- let thrown;
322
- let handled = false;
323
- try {
324
- const result = owner ? owner.run(callback) : callback();
325
- cleanup = typeof result === "function" ? result : void 0;
326
- } catch (error) {
327
- thrown = error;
328
- handled = owner?.handleError(error) ?? false;
329
- if (!handled) throw error;
330
- } finally {
331
- setCurrentSubscriber(previous);
332
- }
333
- if (cleanupError && !thrown) throw cleanupError;
334
- },
335
- scheduleLow() {
336
- if (disposed || dirty) return;
337
- dirty = true;
338
- scheduler.scheduleLow(eff);
339
- },
340
- dispose() {
341
- if (disposed) return;
342
- disposed = true;
343
- dirty = false;
344
- scheduler.remove(eff);
345
- const previousCleanup = cleanup;
346
- cleanup = void 0;
347
- let cleanupError;
348
- if (previousCleanup) {
349
- try {
350
- previousCleanup();
351
- } catch (error) {
352
- const handled = owner?.handleError(error) ?? false;
353
- if (!handled) cleanupError = error;
354
- }
355
- }
356
- cleanupDependencies(eff);
357
- if (cleanupError) throw cleanupError;
358
- }
359
- };
360
- owner?.addCleanup(eff.dispose);
361
- eff.run();
362
- return eff;
363
- }
364
- __name(effect, "effect");
365
-
366
- // packages/runtime/src/debug.ts
367
- var activeRuntimeDebugHooks = null;
368
- var activeRuntimeDebugContext = null;
369
- function getRuntimeDebugHooks() {
370
- return activeRuntimeDebugHooks;
371
- }
372
- __name(getRuntimeDebugHooks, "getRuntimeDebugHooks");
373
- function getRuntimeDebugContext() {
374
- return activeRuntimeDebugContext;
375
- }
376
- __name(getRuntimeDebugContext, "getRuntimeDebugContext");
377
- function runWithRuntimeDebugContext(context, task) {
378
- const previous = activeRuntimeDebugContext;
379
- const next = { ...previous, ...context };
380
- activeRuntimeDebugContext = next;
381
- let result;
382
- try {
383
- result = task();
384
- } catch (error) {
385
- activeRuntimeDebugContext = previous;
386
- throw error;
387
- }
388
- if (isPromiseLike(result)) {
389
- return Promise.resolve(result).finally(() => {
390
- if (activeRuntimeDebugContext === next) activeRuntimeDebugContext = previous;
391
- });
392
- }
393
- activeRuntimeDebugContext = previous;
394
- return result;
395
- }
396
- __name(runWithRuntimeDebugContext, "runWithRuntimeDebugContext");
397
- function invokeRuntimeDebug(name, ...args) {
398
- return;
399
- }
400
- __name(invokeRuntimeDebug, "invokeRuntimeDebug");
401
- function isPromiseLike(value) {
402
- return Boolean(value) && (typeof value === "object" || typeof value === "function") && typeof value.then === "function";
403
- }
404
- __name(isPromiseLike, "isPromiseLike");
405
- function describeDebugNode(node) {
406
- if (!node || typeof node !== "object") return "node";
407
- const value = node;
408
- const name = typeof value.tagName === "string" ? value.tagName.toLowerCase() : typeof value.nodeName === "string" ? value.nodeName.toLowerCase() : "node";
409
- const id = typeof value.id === "string" && value.id ? `#${value.id}` : "";
410
- const className = typeof value.className === "string" && value.className ? `.${value.className.trim().split(/\s+/).filter(Boolean).join(".")}` : "";
411
- return `${name}${id}${className}`;
412
- }
413
- __name(describeDebugNode, "describeDebugNode");
414
-
415
- // packages/runtime/src/hmr.ts
416
- var globalTarget = globalThis;
417
- var hmrGlobal = globalTarget.__VOBS_HMR__ ?? { modules: /* @__PURE__ */ new Map() };
418
- globalTarget.__VOBS_HMR__ = hmrGlobal;
419
- function registerHmrInstance(moduleId, instance) {
420
- const instances = getModule(moduleId).instances;
421
- instances.add(instance);
422
- return () => instances.delete(instance);
423
- }
424
- __name(registerHmrInstance, "registerHmrInstance");
425
- function markHmrInstanceMounted(node, parent) {
426
- const instance = hmrInstances.get(node);
427
- if (instance) instance.parent = parent;
428
- }
429
- __name(markHmrInstanceMounted, "markHmrInstanceMounted");
430
- function getModule(moduleId) {
431
- let module = hmrGlobal.modules.get(moduleId);
432
- if (!module) {
433
- module = { components: /* @__PURE__ */ new Map(), state: /* @__PURE__ */ new Map(), instances: /* @__PURE__ */ new Set() };
434
- hmrGlobal.modules.set(moduleId, module);
435
- }
436
- return module;
437
- }
438
- __name(getModule, "getModule");
439
- var hmrInstances = /* @__PURE__ */ new WeakMap();
440
- function associateHmrInstance(node, instance) {
441
- hmrInstances.set(node, instance);
442
- }
443
- __name(associateHmrInstance, "associateHmrInstance");
444
- var nodeOwners = /* @__PURE__ */ new WeakMap();
445
- function getRenderer() {
446
- {
447
- throw new Error("\u6E32\u67D3\u5668\u672A\u521D\u59CB\u5316");
448
- }
449
- }
450
- __name(getRenderer, "getRenderer");
451
- function createComment(content) {
452
- return getRenderer().createComment(content);
453
- }
454
- __name(createComment, "createComment");
455
- function insertBefore(parent, child, anchor) {
456
- if (isVobsFragment(child)) {
457
- child.mount(parent, isVobsFragment(anchor) ? anchor.start : anchor);
458
- return;
459
- }
460
- getRenderer().insertBefore(parent, child, isVobsFragment(anchor) ? anchor.start : anchor);
461
- markHmrInstanceMounted(child, parent);
462
- }
463
- __name(insertBefore, "insertBefore");
464
- function removeChild(parent, child) {
465
- disposeNodeOwner(child);
466
- if (isVobsFragment(child)) {
467
- child.unmount(parent);
468
- return;
469
- }
470
- getRenderer().removeChild(parent, child);
471
- }
472
- __name(removeChild, "removeChild");
473
- function createComponent(component, props, source) {
474
- const owner = createOwner();
475
- const componentName = component.displayName || component.name || "anonymous";
476
- setOwnerDebugName(owner, source ? `${componentName} (${source.file}:${source.line}:${source.column})` : componentName);
477
- owner.onError((reason) => {
478
- attachSourceLocation(reason, source);
479
- attachComponentContext(reason, componentName, owner.id);
480
- throw reason;
481
- });
482
- let node;
483
- try {
484
- node = owner.run(() => component(props));
485
- } catch (error) {
486
- owner.dispose();
487
- attachSourceLocation(error, source);
488
- attachComponentContext(error, componentName, owner.id);
489
- throw error;
490
- }
491
- associateNodeOwner(node, owner);
492
- const hmrKey = component.hmrKey;
493
- if (hmrKey) {
494
- const instance = {
495
- node,
496
- parent: null,
497
- refresh() {
498
- const previous = instance.node;
499
- const next = owner.run(() => component(props));
500
- if (instance.parent && !isVobsFragment(previous) && !isVobsFragment(next)) {
501
- getRenderer().insertBefore(instance.parent, next, previous);
502
- getRenderer().removeChild(instance.parent, previous);
503
- }
504
- nodeOwners.delete(previous);
505
- nodeOwners.set(next, owner);
506
- associateHmrInstance(next, instance);
507
- instance.node = next;
508
- }
509
- };
510
- associateHmrInstance(node, instance);
511
- const separator = hmrKey.lastIndexOf(":");
512
- const moduleId = separator < 0 ? hmrKey : hmrKey.slice(0, separator);
513
- const cleanup = registerHmrInstance(moduleId, instance);
514
- owner.onDispose(cleanup);
515
- }
516
- return node;
517
- }
518
- __name(createComponent, "createComponent");
519
- function attachSourceLocation(reason, source) {
520
- if (!source || (!reason || typeof reason !== "object" && typeof reason !== "function")) return;
521
- const error = reason;
522
- if (error.vobsSource) return;
523
- try {
524
- Object.defineProperty(error, "vobsSource", {
525
- configurable: true,
526
- enumerable: false,
527
- value: source,
528
- writable: false
529
- });
530
- } catch {
531
- }
532
- }
533
- __name(attachSourceLocation, "attachSourceLocation");
534
- function attachComponentContext(reason, component, ownerId) {
535
- if (!reason || typeof reason !== "object" && typeof reason !== "function") return;
536
- const error = reason;
537
- try {
538
- if (!error.vobsComponent) Object.defineProperty(error, "vobsComponent", { configurable: true, enumerable: false, value: component, writable: false });
539
- if (!error.vobsOwnerId) Object.defineProperty(error, "vobsOwnerId", { configurable: true, enumerable: false, value: ownerId, writable: false });
540
- } catch {
541
- }
542
- }
543
- __name(attachComponentContext, "attachComponentContext");
544
- function createBlock(factory) {
545
- const owner = createOwner();
546
- setOwnerDebugName(owner, "dynamic");
547
- let node;
548
- try {
549
- node = owner.run(factory);
550
- } catch (error) {
551
- owner.dispose();
552
- throw error;
553
- }
554
- if (!node) {
555
- owner.dispose();
556
- return null;
557
- }
558
- associateNodeOwner(node, owner);
559
- return node;
560
- }
561
- __name(createBlock, "createBlock");
562
- function associateNodeOwner(node, owner) {
563
- nodeOwners.set(node, owner);
564
- }
565
- __name(associateNodeOwner, "associateNodeOwner");
566
- function disposeNodeOwner(node) {
567
- const owner = nodeOwners.get(node);
568
- if (!owner) return;
569
- nodeOwners.delete(node);
570
- owner.dispose();
571
- }
572
- __name(disposeNodeOwner, "disposeNodeOwner");
573
-
574
- // packages/runtime/src/fragment.ts
575
- function createFragment(factory) {
576
- const start = createComment("vobs:fragment:start");
577
- const end = createComment("vobs:fragment:end");
578
- let parent = null;
579
- let initialized = false;
580
- const owner = getCurrentOwner();
581
- const fragment = {
582
- kind: "vobs-fragment",
583
- start,
584
- end,
585
- mount(nextParent, anchor) {
586
- if (parent && parent !== nextParent) {
587
- throw new Error("Vobs Fragment: \u4E0D\u80FD\u8DE8\u7236\u8282\u70B9\u79FB\u52A8 Fragment");
588
- }
589
- if (initialized) {
590
- moveRange(nextParent, start, end, anchor);
591
- return;
592
- }
593
- const renderer = getRenderer();
594
- renderer.insertBefore(nextParent, start, anchor);
595
- renderer.insertBefore(nextParent, end, anchor);
596
- parent = nextParent;
597
- initialized = true;
598
- if (owner) owner.run(() => factory(nextParent, end));
599
- else factory(nextParent, end);
600
- },
601
- unmount(nextParent) {
602
- if (!initialized || parent !== nextParent) {
603
- throw new Error("Vobs Fragment: Fragment \u4E0D\u5C5E\u4E8E\u6307\u5B9A\u7236\u8282\u70B9");
604
- }
605
- const renderer = getRenderer();
606
- let current = renderer.nextSibling(start);
607
- while (current && current !== end) {
608
- const next = renderer.nextSibling(current);
609
- renderer.removeChild(nextParent, current);
610
- current = next;
611
- }
612
- renderer.removeChild(nextParent, start);
613
- renderer.removeChild(nextParent, end);
614
- parent = null;
615
- initialized = false;
616
- }
617
- };
618
- return fragment;
619
- }
620
- __name(createFragment, "createFragment");
621
- function isVobsFragment(value) {
622
- return Boolean(value) && typeof value === "object" && value.kind === "vobs-fragment";
623
- }
624
- __name(isVobsFragment, "isVobsFragment");
625
- function moveRange(parent, start, end, anchor) {
626
- const renderer = getRenderer();
627
- const nodes = [start];
628
- let current = renderer.nextSibling(start);
629
- while (current) {
630
- nodes.push(current);
631
- if (current === end) break;
632
- current = renderer.nextSibling(current);
633
- }
634
- if (nodes[nodes.length - 1] !== end) {
635
- throw new Error("Vobs Fragment: \u627E\u4E0D\u5230\u7ED3\u675F\u951A\u70B9");
636
- }
637
- for (const node of nodes) renderer.insertBefore(parent, node, anchor);
638
- }
639
- __name(moveRange, "moveRange");
640
-
641
- // packages/runtime/src/dynamic.ts
642
- function insertDynamic(parent, anchor, factory) {
643
- const marker = createComment("vobs:dynamic");
644
- insertBefore(parent, marker, anchor);
645
- let current = null;
646
- effect(() => {
647
- const next = createBlock(factory);
648
- if (next === current) return;
649
- if (current) removeChild(parent, current);
650
- current = next;
651
- if (current) insertBefore(parent, current, marker);
652
- });
653
- }
654
- __name(insertDynamic, "insertDynamic");
655
-
656
- // packages/runtime/src/error.ts
657
- var _VobsError = class _VobsError extends Error {
658
- constructor(options) {
659
- super(options.message);
660
- this.name = "VobsError";
661
- this.code = options.code;
662
- this.severity = options.severity ?? "error";
663
- this.layer = options.layer ?? "runtime";
664
- this.cause = options.cause;
665
- this.fix = options.fix;
666
- this.location = options.location;
667
- this.trace = options.trace;
668
- this.example = options.example;
669
- this.docs = options.docs;
670
- this.codeFrame = options.codeFrame;
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
671
17
  }
18
+ return to;
672
19
  };
673
- __name(_VobsError, "VobsError");
674
- var VobsError = _VobsError;
675
- function isVobsError(value) {
676
- return value instanceof VobsError || Boolean(value && typeof value === "object" && typeof value.code === "string" && typeof value.message === "string" && typeof value.layer === "string");
677
- }
678
- __name(isVobsError, "isVobsError");
679
- function normalizeVobsError(value, defaults = {}) {
680
- if (value instanceof VobsError) return value;
681
- if (value instanceof Error) {
682
- const metadata = value;
683
- const code = defaults.code ?? (typeof metadata.vobsCode === "string" ? metadata.vobsCode : void 0);
684
- if (code) defineErrorMetadata(value, "code", code);
685
- defineErrorMetadata(value, "severity", defaults.severity ?? "error");
686
- defineErrorMetadata(value, "layer", defaults.layer ?? "runtime");
687
- const fix = defaults.fix ?? (typeof metadata.vobsHint === "string" ? metadata.vobsHint : void 0);
688
- if (fix) defineErrorMetadata(value, "fix", fix);
689
- const source = metadata.vobsSource;
690
- if (source && typeof source === "object" && typeof source.file === "string" && typeof source.line === "number" && typeof source.column === "number") {
691
- defineErrorMetadata(value, "location", source);
692
- }
693
- return value;
694
- }
695
- if (isVobsError(value)) {
696
- const candidate = value;
697
- return new VobsError({
698
- code: candidate.code,
699
- message: candidate.message,
700
- severity: candidate.severity ?? defaults.severity,
701
- layer: candidate.layer ?? defaults.layer,
702
- cause: candidate.cause,
703
- fix: candidate.fix ?? defaults.fix,
704
- location: candidate.location,
705
- trace: candidate.trace,
706
- example: candidate.example,
707
- docs: candidate.docs,
708
- codeFrame: candidate.codeFrame
709
- });
710
- }
711
- const message = String(value);
712
- return new VobsError({
713
- code: defaults.code ?? "VOBS_UNKNOWN",
714
- message,
715
- severity: defaults.severity ?? "error",
716
- layer: defaults.layer ?? "runtime",
717
- cause: void 0,
718
- fix: defaults.fix
719
- });
720
- }
721
- __name(normalizeVobsError, "normalizeVobsError");
722
- function defineErrorMetadata(target, key, value) {
723
- if (key in target) return;
724
- try {
725
- Object.defineProperty(target, key, { configurable: true, enumerable: false, value, writable: true });
726
- } catch {
727
- }
728
- }
729
- __name(defineErrorMetadata, "defineErrorMetadata");
730
-
731
- // packages/runtime/src/boundary.ts
732
- function insertBoundary(parent, anchor, options) {
733
- const boundary = createOwner();
734
- boundary.run(() => {
735
- const error = state(null);
736
- let fallbackActive = false;
737
- let lastError = null;
738
- let initialized = false;
739
- let previousKey;
740
- boundary.onError((reason) => {
741
- if (fallbackActive) throw reason;
742
- const normalized = normalizeVobsError(reason, {
743
- code: "VOBS_R001",
744
- layer: "runtime",
745
- fix: "\u68C0\u67E5\u7EC4\u4EF6\u6E32\u67D3\u903B\u8F91\uFF0C\u6216\u5728\u8FB9\u754C fallback \u4E2D\u63D0\u4F9B\u6062\u590D\u64CD\u4F5C\u3002"
746
- });
747
- lastError = normalized;
748
- invokeRuntimeDebug("error", {
749
- error: normalized,
750
- owner: boundary,
751
- phase: "boundary",
752
- handled: true,
753
- recovery: "fallback"
754
- });
755
- error.value = normalized;
756
- });
757
- const retry = /* @__PURE__ */ __name(() => {
758
- if (error.value) {
759
- invokeRuntimeDebug("error", {
760
- error: error.value,
761
- owner: boundary,
762
- phase: "boundary",
763
- handled: true,
764
- recovery: "retrying"
765
- });
766
- }
767
- error.value = null;
768
- return options.onRetry?.();
769
- }, "retry");
770
- insertDynamic(parent, anchor, () => {
771
- const nextKey = options.resetKey?.();
772
- if (!initialized || !Object.is(previousKey, nextKey)) {
773
- initialized = true;
774
- previousKey = nextKey;
775
- if (error.value) error.value = null;
776
- }
777
- const currentError = error.value;
778
- if (!currentError) {
779
- if (fallbackActive && lastError) {
780
- invokeRuntimeDebug("error", {
781
- error: lastError,
782
- owner: boundary,
783
- phase: "boundary",
784
- handled: true,
785
- recovery: "recovered"
786
- });
787
- lastError = null;
788
- }
789
- fallbackActive = false;
790
- return options.children();
791
- }
792
- fallbackActive = true;
793
- return options.fallback(currentError, retry);
794
- });
795
- });
796
- }
797
- __name(insertBoundary, "insertBoundary");
20
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
798
21
 
799
- // packages/vobs/src/context.ts
800
- var ownerProviders = /* @__PURE__ */ new WeakMap();
801
- function inject(key, fallback) {
802
- const owner = getCurrentOwner();
803
- const value = owner ? injectFromOwner(owner, key) : void 0;
804
- return value === void 0 ? fallback : value;
805
- }
806
- __name(inject, "inject");
807
- function injectFromOwner(owner, key) {
808
- let current = owner;
809
- while (current) {
810
- const providers = ownerProviders.get(current);
811
- if (providers?.has(key)) return providers.get(key);
812
- current = current.parent;
813
- }
814
- return void 0;
815
- }
816
- __name(injectFromOwner, "injectFromOwner");
817
-
818
- // packages/vobs/src/app.ts
819
- function createInjectionKey(description) {
820
- return Symbol(description);
821
- }
822
- __name(createInjectionKey, "createInjectionKey");
22
+ // packages/router/src/index.ts
23
+ var src_exports = {};
24
+ __export(src_exports, {
25
+ NavigationCancelledError: () => NavigationCancelledError,
26
+ NavigationRedirectError: () => NavigationRedirectError,
27
+ ROUTER_KEY: () => ROUTER_KEY,
28
+ RouterView: () => RouterView,
29
+ createBrowserHistory: () => createBrowserHistory,
30
+ createMemoryHistory: () => createMemoryHistory,
31
+ createRouter: () => createRouter,
32
+ createRouterDebugId: () => createRouterDebugId,
33
+ emitRouterDebug: () => emitRouterDebug,
34
+ lazy: () => lazy,
35
+ routerPlugin: () => routerPlugin,
36
+ subscribeRouterDebug: () => subscribeRouterDebug,
37
+ useRoute: () => useRoute,
38
+ useRouter: () => useRouter
39
+ });
40
+ module.exports = __toCommonJS(src_exports);
41
+ var import_reactivity = require("@vobs/reactivity");
42
+ var import_vobs = require("@vobs/vobs");
823
43
 
824
44
  // packages/router/src/debug.ts
825
45
  var listeners = /* @__PURE__ */ new Set();
@@ -845,6 +65,7 @@ function emitRouterDebug(routerId, type, payload, context) {
845
65
  __name(emitRouterDebug, "emitRouterDebug");
846
66
 
847
67
  // packages/router/src/index.ts
68
+ var import_runtime2 = require("@vobs/runtime");
848
69
  var _NavigationCancelledError = class _NavigationCancelledError extends Error {
849
70
  constructor() {
850
71
  super("Vobs Router: \u5BFC\u822A\u5DF2\u88AB\u66F4\u65B0\u7684\u5BFC\u822A\u53D6\u6D88");
@@ -863,7 +84,7 @@ var _NavigationRedirectError = class _NavigationRedirectError extends Error {
863
84
  };
864
85
  __name(_NavigationRedirectError, "NavigationRedirectError");
865
86
  var NavigationRedirectError = _NavigationRedirectError;
866
- var ROUTER_KEY = createInjectionKey("vobs.router");
87
+ var ROUTER_KEY = (0, import_vobs.createInjectionKey)("vobs.router");
867
88
  function lazy(loader) {
868
89
  return {
869
90
  kind: "vobs-lazy-route",
@@ -944,7 +165,7 @@ function createRouter(options) {
944
165
  const history = options.history ?? defaultHistory();
945
166
  const routerDebugId = createRouterDebugId();
946
167
  matchers.sort(compareMatchers);
947
- const currentRoute = state(resolvePath(history.location));
168
+ const currentRoute = (0, import_reactivity.state)(resolvePath(history.location));
948
169
  const lazyStates = /* @__PURE__ */ new Map();
949
170
  const guards = [];
950
171
  const navigationHistory = [];
@@ -961,7 +182,7 @@ function createRouter(options) {
961
182
  let nextErrorId = 1;
962
183
  let navigationId = 0;
963
184
  let destroyed = false;
964
- const viewRevision = state(0);
185
+ const viewRevision = (0, import_reactivity.state)(0);
965
186
  function resolve(to) {
966
187
  ensureActive();
967
188
  const target = typeof to === "string" ? parseTargetString(to) : normalizeTarget(to, matchers);
@@ -1091,7 +312,7 @@ function createRouter(options) {
1091
312
  } catch {
1092
313
  }
1093
314
  }
1094
- emitRouterDebug(routerDebugId, event, payload, getRuntimeDebugContext() ?? void 0);
315
+ emitRouterDebug(routerDebugId, event, payload, (0, import_runtime2.getRuntimeDebugContext)() ?? void 0);
1095
316
  }
1096
317
  __name(emitRouter, "emitRouter");
1097
318
  function recordNavigation(trace) {
@@ -1112,7 +333,7 @@ function createRouter(options) {
1112
333
  const options2 = typeof optionsOrRoute === "string" ? { route: optionsOrRoute } : optionsOrRoute;
1113
334
  const id = nextDataRequestId++;
1114
335
  const startedAt = now();
1115
- const context = getRuntimeDebugContext();
336
+ const context = (0, import_runtime2.getRuntimeDebugContext)();
1116
337
  const route = options2.route ?? currentRoute.value.fullPath;
1117
338
  const requestContext = {
1118
339
  ...context,
@@ -1141,7 +362,7 @@ function createRouter(options) {
1141
362
  emitRouterDebug(routerDebugId, "data-request", { phase: "start", trace: loading }, requestContext);
1142
363
  dataLoaders.set(key, { kind, route, task });
1143
364
  try {
1144
- const result = await runWithRuntimeDebugContext(requestContext, () => task({ dataRequestId: id }));
365
+ const result = await (0, import_runtime2.runWithRuntimeDebugContext)(requestContext, () => task({ dataRequestId: id }));
1145
366
  const endedAt = now();
1146
367
  replaceDataRequest(id, { ...loading, status: "success", endedAt, duration: endedAt - startedAt, result });
1147
368
  return result;
@@ -1350,11 +571,11 @@ function createRouter(options) {
1350
571
  }
1351
572
  __name(createRouter, "createRouter");
1352
573
  function RouterView(props = {}) {
1353
- const router = props.router ?? inject(ROUTER_KEY);
574
+ const router = props.router ?? (0, import_vobs.inject)(ROUTER_KEY);
1354
575
  if (!router) throw new Error("Vobs Router: RouterView \u627E\u4E0D\u5230 Router\uFF0C\u8BF7\u5B89\u88C5 routerPlugin");
1355
- return createFragment((parent, anchor) => {
576
+ return (0, import_vobs.createFragment)((parent, anchor) => {
1356
577
  let routeRetry = /* @__PURE__ */ __name(() => void 0, "routeRetry");
1357
- insertBoundary(parent, anchor, {
578
+ (0, import_vobs.insertBoundary)(parent, anchor, {
1358
579
  resetKey: /* @__PURE__ */ __name(() => router.currentRoute.value.fullPath, "resetKey"),
1359
580
  onRetry: /* @__PURE__ */ __name(() => routeRetry(), "onRetry"),
1360
581
  fallback: /* @__PURE__ */ __name((error, retry) => {
@@ -1373,13 +594,13 @@ function RouterView(props = {}) {
1373
594
  throw view.error ?? new Error("\u8DEF\u7531\u7EC4\u4EF6\u52A0\u8F7D\u5931\u8D25");
1374
595
  }
1375
596
  if (!view.component) return null;
1376
- let node = createComponent(view.component, {
597
+ let node = (0, import_vobs.createComponent)(view.component, {
1377
598
  route,
1378
599
  params: route.params,
1379
600
  query: route.query
1380
601
  });
1381
602
  for (let index = (view.layouts?.length ?? 0) - 1; index >= 0; index--) {
1382
- node = createComponent(view.layouts[index], {
603
+ node = (0, import_vobs.createComponent)(view.layouts[index], {
1383
604
  route,
1384
605
  params: route.params,
1385
606
  query: route.query,
@@ -1393,7 +614,7 @@ function RouterView(props = {}) {
1393
614
  }
1394
615
  __name(RouterView, "RouterView");
1395
616
  function useRouter() {
1396
- const router = inject(ROUTER_KEY);
617
+ const router = (0, import_vobs.inject)(ROUTER_KEY);
1397
618
  if (!router) throw new Error("Vobs Router: useRouter \u627E\u4E0D\u5230 Router\uFF0C\u8BF7\u5B89\u88C5 routerPlugin");
1398
619
  return router;
1399
620
  }
@@ -1663,8 +884,8 @@ function isRouteComponentDefinition(value) {
1663
884
  }
1664
885
  __name(isRouteComponentDefinition, "isRouteComponentDefinition");
1665
886
  async function loadRouteComponent(loader) {
1666
- const module = await loader.load();
1667
- const component = typeof module === "function" ? module : module.default;
887
+ const module2 = await loader.load();
888
+ const component = typeof module2 === "function" ? module2 : module2.default;
1668
889
  if (typeof component !== "function") throw new Error("Vobs Router: \u61D2\u52A0\u8F7D\u6A21\u5757\u6CA1\u6709\u9ED8\u8BA4\u7EC4\u4EF6\u5BFC\u51FA");
1669
890
  return component;
1670
891
  }
@@ -1681,20 +902,21 @@ function isAbortError(reason) {
1681
902
  return Boolean(reason) && typeof reason === "object" && (reason.name === "AbortError" || reason.code === "ERR_CANCELED");
1682
903
  }
1683
904
  __name(isAbortError, "isAbortError");
1684
-
1685
- exports.NavigationCancelledError = NavigationCancelledError;
1686
- exports.NavigationRedirectError = NavigationRedirectError;
1687
- exports.ROUTER_KEY = ROUTER_KEY;
1688
- exports.RouterView = RouterView;
1689
- exports.createBrowserHistory = createBrowserHistory;
1690
- exports.createMemoryHistory = createMemoryHistory;
1691
- exports.createRouter = createRouter;
1692
- exports.createRouterDebugId = createRouterDebugId;
1693
- exports.emitRouterDebug = emitRouterDebug;
1694
- exports.lazy = lazy;
1695
- exports.routerPlugin = routerPlugin;
1696
- exports.subscribeRouterDebug = subscribeRouterDebug;
1697
- exports.useRoute = useRoute;
1698
- exports.useRouter = useRouter;
1699
- //# sourceMappingURL=index.cjs.map
905
+ // Annotate the CommonJS export names for ESM import in node:
906
+ 0 && (module.exports = {
907
+ NavigationCancelledError,
908
+ NavigationRedirectError,
909
+ ROUTER_KEY,
910
+ RouterView,
911
+ createBrowserHistory,
912
+ createMemoryHistory,
913
+ createRouter,
914
+ createRouterDebugId,
915
+ emitRouterDebug,
916
+ lazy,
917
+ routerPlugin,
918
+ subscribeRouterDebug,
919
+ useRoute,
920
+ useRouter
921
+ });
1700
922
  //# sourceMappingURL=index.cjs.map