@velarscript/web 0.27.4 → 0.28.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/dist/analyzer.d.ts +46 -0
- package/dist/analyzer.d.ts.map +1 -1
- package/dist/analyzer.js +275 -7
- package/dist/analyzer.js.map +1 -1
- package/dist/emitter.d.ts.map +1 -1
- package/dist/emitter.js +10 -0
- package/dist/emitter.js.map +1 -1
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +27 -16
- package/dist/host.js.map +1 -1
- package/dist/runtime-foundation.d.ts.map +1 -1
- package/dist/runtime-foundation.js +161 -20
- package/dist/runtime-foundation.js.map +1 -1
- package/package.json +2 -2
|
@@ -569,6 +569,7 @@ ${errorHostRuntime}
|
|
|
569
569
|
const __velarRuntimeKey = Symbol.for(${JSON.stringify(VELAR_RUNTIME_REGISTRY_KEY)});
|
|
570
570
|
const __velarFoundationReflectApply = Object.getOwnPropertyDescriptor(Reflect, "apply")?.value;
|
|
571
571
|
const __velarFoundationQueueMicrotask = globalThis.queueMicrotask;
|
|
572
|
+
const __velarFoundationSetTimeout = globalThis.setTimeout;
|
|
572
573
|
const __velarFoundationDate = globalThis.Date;
|
|
573
574
|
const __velarFoundationDateNow = typeof __velarFoundationDate === "function"
|
|
574
575
|
? Object.getOwnPropertyDescriptor(__velarFoundationDate, "now")?.value
|
|
@@ -680,12 +681,120 @@ function __velarNextObserverSequence() {
|
|
|
680
681
|
return __velarObserverSequenceCell[0];
|
|
681
682
|
}
|
|
682
683
|
|
|
683
|
-
//
|
|
684
|
-
// the
|
|
685
|
-
|
|
684
|
+
// D114 W/A1, as narrowed by W2: the identity a flush stamps its run counts
|
|
685
|
+
// with, and the budget those runs spend. They belong to one host *task* -- but
|
|
686
|
+
// the window follows work an observer started, and nothing else.
|
|
687
|
+
//
|
|
688
|
+
// A cycle that crosses a microtask boundary -- 'watch x: detach step()', where
|
|
689
|
+
// 'step' awaits an already-resolved Promise and then writes 'x' -- is a fresh
|
|
690
|
+
// flush every round, so a budget that reset per flush never saw it: two
|
|
691
|
+
// observer runs, well inside 100,000, forever. Flushes chained through
|
|
692
|
+
// microtasks therefore share one token, one budget and one leaders list, and
|
|
693
|
+
// the macrotask sentinel below closes the window. Work that resumes after a
|
|
694
|
+
// timer, an event or network I/O is a new task and opens a fresh window, which
|
|
695
|
+
// is what keeps an animation that writes state every frame from being stopped.
|
|
696
|
+
//
|
|
697
|
+
// W2: a flush continues the open window only once an observer run inside it has
|
|
698
|
+
// started asynchronous work -- a 'detach' statement, or an 'action' call, made
|
|
699
|
+
// while an observer was running. Those are the two ways a synchronous observer
|
|
700
|
+
// body reaches a later microtask, so they are the only ways the ring above can
|
|
701
|
+
// be closed; a chain of flushes with none of them in it has no cycle to find. A
|
|
702
|
+
// bulk import loop that writes a progress counter and awaits promise-only work
|
|
703
|
+
// per row runs millions of observers in one uninterrupted task and is not a
|
|
704
|
+
// runaway, so each of its flushes gets the fresh budget it had before W. The
|
|
705
|
+
// sentinel still closes every window at the task boundary, so the animation
|
|
706
|
+
// case is protected either way.
|
|
707
|
+
//
|
|
708
|
+
// The overrun's carried token is the same rule seen from one flush earlier: an
|
|
709
|
+
// overrun schedules its continuation as a microtask, so that continuation is
|
|
710
|
+
// this same task and continues these same counts by construction. It carries
|
|
711
|
+
// them whether or not an observer started anything, because the continuation is
|
|
712
|
+
// the overrun's own unfinished work rather than a new write.
|
|
713
|
+
const __velarFlushBudgetPerTask = 100000;
|
|
714
|
+
let __velarFlushToken = null;
|
|
715
|
+
let __velarFlushBudget = 0;
|
|
716
|
+
// One-shot, consumed by the next settle: the flush an overrun scheduled
|
|
717
|
+
// continues the window it was scheduled from, whatever that window recorded.
|
|
718
|
+
let __velarFlushCarried = false;
|
|
719
|
+
// One sentinel is enough for a window: the first one to fire closes it, and
|
|
720
|
+
// arming a second on every flush would leave a timer per flush behind.
|
|
721
|
+
let __velarTaskSentinelArmed = false;
|
|
722
|
+
|
|
723
|
+
// The two facts W2 needs live on one global slot, for the same reason the
|
|
724
|
+
// observer sequence above does: every emitted module carries its own copy of
|
|
725
|
+
// this runtime, and the two ends of the question are in different copies. The
|
|
726
|
+
// settle that asks it belongs to whichever copy created the registry -- in an
|
|
727
|
+
// application that imports velar/app, that is velar/app's -- while the places
|
|
728
|
+
// that answer it, a 'detach' statement's detached-task helper and an action's
|
|
729
|
+
// run, are emitted into the application module. Two module-scope variables
|
|
730
|
+
// would never meet.
|
|
731
|
+
//
|
|
732
|
+
// Slot 0 is how deep the settle currently is inside 'observer.run()'. It is a
|
|
733
|
+
// depth rather than a flag because an observer created by a running one runs
|
|
734
|
+
// nested. '__velarRuntime.activeObserver' cannot stand in for it: a watch body
|
|
735
|
+
// runs untracked, precisely so its own reads do not become dependencies of the
|
|
736
|
+
// watched expression, so the active observer is null exactly where the 'detach'
|
|
737
|
+
// that closes a cycle is written.
|
|
738
|
+
//
|
|
739
|
+
// Slot 1 is the fact recorded on the open window: an observer run in it started
|
|
740
|
+
// asynchronous work.
|
|
741
|
+
const __velarAsyncWorkKey = Symbol.for("velar.web.observer.asyncwork.v1");
|
|
742
|
+
const __velarAsyncWorkCell = (() => {
|
|
743
|
+
const descriptor = __velarGraphOwnDescriptor(globalThis, __velarAsyncWorkKey);
|
|
744
|
+
if (descriptor) {
|
|
745
|
+
if (!("value" in descriptor) || descriptor.enumerable || descriptor.configurable || descriptor.writable
|
|
746
|
+
|| !__velarGraphIsList(descriptor.value)) {
|
|
747
|
+
throw new TypeError("VelarScript Web observer async-work ownership is invalid");
|
|
748
|
+
}
|
|
749
|
+
return descriptor.value;
|
|
750
|
+
}
|
|
751
|
+
const cell = [0, false];
|
|
752
|
+
__velarGraphDefine(globalThis, __velarAsyncWorkKey, {
|
|
753
|
+
value: cell,
|
|
754
|
+
enumerable: false,
|
|
755
|
+
configurable: false,
|
|
756
|
+
writable: false,
|
|
757
|
+
});
|
|
758
|
+
return cell;
|
|
759
|
+
})();
|
|
760
|
+
|
|
761
|
+
// What the two compiler-owned lowering points call: the detached-task helper a
|
|
762
|
+
// 'detach' statement lowers to, where a detached Promise enters the runtime,
|
|
763
|
+
// and an action's run, where an action call does. Outside an observer run there
|
|
764
|
+
// is nothing to record -- an action a handler or '@main' starts is the host
|
|
765
|
+
// task's own work, not a ring an observer closed -- so the same unconditional
|
|
766
|
+
// call is correct at both sites.
|
|
767
|
+
function __velarNoteAsyncWork() {
|
|
768
|
+
if (__velarAsyncWorkCell[0] > 0) __velarAsyncWorkCell[1] = true;
|
|
769
|
+
return null;
|
|
770
|
+
}
|
|
771
|
+
|
|
772
|
+
function __velarCloseTaskWindow() {
|
|
773
|
+
__velarTaskSentinelArmed = false;
|
|
774
|
+
__velarFlushToken = null;
|
|
775
|
+
__velarAsyncWorkCell[1] = false;
|
|
776
|
+
return null;
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
// The macrotask boundary the run-count window ends at. 'setTimeout' is the one
|
|
780
|
+
// scheduling operation every host this runtime supports publishes -- page,
|
|
781
|
+
// worker, and the Node process a 'velar test' run drives the emitted runtime
|
|
782
|
+
// in -- and it is captured at module initialization like every other ambient
|
|
783
|
+
// operation here. A host that publishes none is not left without a gate: the
|
|
784
|
+
// window then closes as soon as the flush chain comes to rest, which is the
|
|
785
|
+
// per-flush budget this runtime had before, so the synchronous cycles stay
|
|
786
|
+
// covered and only the asynchronous one goes back to being invisible.
|
|
787
|
+
function __velarArmTaskSentinel() {
|
|
788
|
+
if (__velarTaskSentinelArmed) return true;
|
|
789
|
+
if (typeof __velarFoundationSetTimeout !== "function" || typeof __velarFoundationReflectApply !== "function") return false;
|
|
790
|
+
__velarTaskSentinelArmed = true;
|
|
791
|
+
try { __velarFoundationReflectApply(__velarFoundationSetTimeout, globalThis, [__velarCloseTaskWindow, 0]); }
|
|
792
|
+
catch { __velarTaskSentinelArmed = false; return false; }
|
|
793
|
+
return true;
|
|
794
|
+
}
|
|
686
795
|
|
|
687
|
-
// The three observers that have run most in the
|
|
688
|
-
// the run counts are stamped rather than reconstructed afterwards: the queue at
|
|
796
|
+
// The three observers that have run most in the task window running now, kept
|
|
797
|
+
// as the run counts are stamped rather than reconstructed afterwards: the queue at
|
|
689
798
|
// the moment the budget runs out holds only whichever half of a cycle has not
|
|
690
799
|
// just run, so it cannot name the ring on its own. An observer that has run
|
|
691
800
|
// once is not a candidate, which is every observer of an ordinary flush.
|
|
@@ -741,7 +850,7 @@ function __velarFlushRunaway(stalled, token) {
|
|
|
741
850
|
const named = observer.mode === "watch" && typeof observer.label === "string" && observer.label !== ""
|
|
742
851
|
? "the watch on '" + observer.label + "'"
|
|
743
852
|
: "a " + observer.mode + " observer";
|
|
744
|
-
detail += (detail === "" ? "Ran most in this
|
|
853
|
+
detail += (detail === "" ? "Ran most in this task: " : ", ") + named
|
|
745
854
|
+ " (" + observer.flushRuns + (observer.flushRuns === 1 ? " run)" : " runs)");
|
|
746
855
|
if (component === "" && typeof observer.component === "string") component = observer.component;
|
|
747
856
|
}
|
|
@@ -794,12 +903,17 @@ function __velarFlushOverflow(token) {
|
|
|
794
903
|
requeued = true;
|
|
795
904
|
}
|
|
796
905
|
const runaway = __velarFlushRunaway(stalled, token);
|
|
797
|
-
|
|
906
|
+
// The window keeps its token and its run counts -- the requeued flush is one
|
|
907
|
+
// more flush of the same task, and the pool of observers it has not reached
|
|
908
|
+
// yet only shrinks -- but the budget is granted again. Without that, the
|
|
909
|
+
// exhausted count would trip the very next flush of the same task, and the
|
|
910
|
+
// observers stopped for it would be whatever was queued at that moment: the
|
|
911
|
+
// innocent ones this overrun just put back, or an unrelated later write.
|
|
912
|
+
__velarFlushBudget = __velarFlushBudgetPerTask;
|
|
913
|
+
__velarFlushCarried = requeued;
|
|
914
|
+
__velarRuntime.report(new RangeError("Reactive updates cannot run more than " + __velarFlushBudgetPerTask + " observers in one task"),
|
|
798
915
|
{ phase: "update", detail: runaway.detail, component: runaway.component, unhandled: true });
|
|
799
|
-
if (requeued)
|
|
800
|
-
__velarOverflowToken = token;
|
|
801
|
-
__velarScheduleFlush();
|
|
802
|
-
}
|
|
916
|
+
if (requeued) __velarScheduleFlush();
|
|
803
917
|
}
|
|
804
918
|
|
|
805
919
|
// The one entry point: the microtask __velarScheduleFlush enqueues, and the
|
|
@@ -807,8 +921,18 @@ function __velarFlushOverflow(token) {
|
|
|
807
921
|
// R1-a-scope's flush-scoped writer registry around the settle; R21 deleted the
|
|
808
922
|
// registry with the referee that read it, so the name is all that remains and
|
|
809
923
|
// it remains because __velarEnqueue and tick() both hold it.
|
|
924
|
+
//
|
|
925
|
+
// D114 W/A1: it is also where the task window is closed or handed on. Both
|
|
926
|
+
// entries pass through here, including tick()'s drain, so the sentinel is armed
|
|
927
|
+
// once per window however the flush was reached, and a host without a timer
|
|
928
|
+
// falls back to closing the window here, one flush at a time.
|
|
810
929
|
function __velarFlush() {
|
|
811
|
-
__velarFlushSettle();
|
|
930
|
+
try { __velarFlushSettle(); }
|
|
931
|
+
// Without a timer the window closes as soon as the chain comes to rest,
|
|
932
|
+
// which is the per-flush budget this runtime had before -- except that a
|
|
933
|
+
// flush already scheduled keeps it open, so an overrun's carried counts and
|
|
934
|
+
// the queues a settle could not finish reach the flush that continues them.
|
|
935
|
+
finally { if (!__velarArmTaskSentinel() && !__velarRuntime.flushPending) __velarCloseTaskWindow(); }
|
|
812
936
|
}
|
|
813
937
|
|
|
814
938
|
// Glitch-free order: every derived value and every watch settles to a fixed
|
|
@@ -828,25 +952,42 @@ function __velarFlush() {
|
|
|
828
952
|
// queue in the order the action wrote the states. So each pass takes the queue
|
|
829
953
|
// as it stands and runs it by sequence number. Watches queued by this pass are
|
|
830
954
|
// picked up by the next one, in their own order.
|
|
955
|
+
//
|
|
956
|
+
// D114 W/A1, narrowed by W2: a flush that starts while the task window is still
|
|
957
|
+
// open continues it -- the same token, so flushRuns keeps accumulating on every
|
|
958
|
+
// observer, the same leaders, and the same remaining budget -- but only when an
|
|
959
|
+
// observer run in that window started asynchronous work, or when the overrun
|
|
960
|
+
// itself scheduled this flush. Every other flush opens a new window, which is
|
|
961
|
+
// the per-flush budget this runtime had before W.
|
|
831
962
|
function __velarFlushSettle() {
|
|
832
963
|
__velarRuntime.flushPending = false;
|
|
833
|
-
const
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
964
|
+
const carried = __velarFlushCarried;
|
|
965
|
+
__velarFlushCarried = false;
|
|
966
|
+
if (__velarFlushToken === null || !(carried || __velarAsyncWorkCell[1])) {
|
|
967
|
+
__velarFlushToken = {};
|
|
968
|
+
__velarFlushBudget = __velarFlushBudgetPerTask;
|
|
969
|
+
__velarFlushLeaders.length = 0;
|
|
970
|
+
__velarAsyncWorkCell[1] = false;
|
|
971
|
+
}
|
|
972
|
+
const token = __velarFlushToken;
|
|
837
973
|
const step = (observer) => {
|
|
838
974
|
__velarGraphSetRemove(observer.mode === "watch" ? __velarRuntime.watchQueue : __velarRuntime.domQueue, observer);
|
|
839
975
|
if (observer.flushToken === token) observer.flushRuns += 1;
|
|
840
976
|
else { observer.flushToken = token; observer.flushRuns = 1; }
|
|
841
977
|
if (observer.flushRuns > 1) __velarFlushLead(observer);
|
|
842
|
-
|
|
978
|
+
// The span the two lowering points ask about. It is the run itself rather
|
|
979
|
+
// than the whole settle: work started by the flush's own bookkeeping is
|
|
980
|
+
// not an observer's, and a nested observer created by a running one is.
|
|
981
|
+
__velarAsyncWorkCell[0] += 1;
|
|
982
|
+
try { observer.run(); }
|
|
983
|
+
finally { __velarAsyncWorkCell[0] -= 1; }
|
|
843
984
|
};
|
|
844
985
|
while (__velarGraphSetCount(__velarRuntime.domQueue) || __velarGraphSetCount(__velarRuntime.watchQueue)) {
|
|
845
986
|
while (true) {
|
|
846
987
|
let ran = false;
|
|
847
988
|
for (const observer of __velarGraphSetItems(__velarRuntime.domQueue)) {
|
|
848
989
|
if (observer.mode !== "computed") continue;
|
|
849
|
-
if ((
|
|
990
|
+
if ((__velarFlushBudget -= 1) < 0) { __velarFlushOverflow(token); return; }
|
|
850
991
|
step(observer);
|
|
851
992
|
ran = true;
|
|
852
993
|
}
|
|
@@ -860,7 +1001,7 @@ function __velarFlushSettle() {
|
|
|
860
1001
|
// snapshot is a plan, and the queue is what says whether it still owes
|
|
861
1002
|
// a run.
|
|
862
1003
|
if (observer.stopped || !__velarGraphSetContains(__velarRuntime.watchQueue, observer)) continue;
|
|
863
|
-
if ((
|
|
1004
|
+
if ((__velarFlushBudget -= 1) < 0) { __velarFlushOverflow(token); return; }
|
|
864
1005
|
step(observer);
|
|
865
1006
|
ran = true;
|
|
866
1007
|
}
|
|
@@ -868,7 +1009,7 @@ function __velarFlushSettle() {
|
|
|
868
1009
|
}
|
|
869
1010
|
for (const observer of __velarGraphSetItems(__velarRuntime.domQueue)) {
|
|
870
1011
|
if (observer.mode === "computed") break;
|
|
871
|
-
if ((
|
|
1012
|
+
if ((__velarFlushBudget -= 1) < 0) { __velarFlushOverflow(token); return; }
|
|
872
1013
|
step(observer);
|
|
873
1014
|
}
|
|
874
1015
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-foundation.js","sourceRoot":"","sources":["../src/runtime-foundation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iCAAiC,EACjC,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,iCAAiC,CAAC;AAEzC,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+a7C,CAAC,SAAS,EAAE,CAAC;AAEd,MAAM,CAAC,MAAM,2BAA2B,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsGpD,CAAC,SAAS,EAAE,CAAC;AAEd,MAAM,CAAC,MAAM,2BAA2B,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;CAyBpD,CAAC,SAAS,EAAE,CAAC;AAEd,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,iCAAiC,KAAK,2BAA2B,EAAE,CAAC;AAE7G,SAAS,oBAAoB,CAAC,gBAAwB;IACpD,OAAO,MAAM,CAAC,GAAG,CAAA;EACjB,2BAA2B;EAC3B,oBAAoB;EACpB,gBAAgB;uCACqB,IAAI,CAAC,SAAS,CAAC,0BAA0B,CAAC
|
|
1
|
+
{"version":3,"file":"runtime-foundation.js","sourceRoot":"","sources":["../src/runtime-foundation.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@velarscript/web",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.28.1",
|
|
4
4
|
"description": "The official VelarScript Web framework contract and browser runtime.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
}
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@velarscript/compiler": "0.
|
|
36
|
+
"@velarscript/compiler": "0.28.1"
|
|
37
37
|
},
|
|
38
38
|
"exports": {
|
|
39
39
|
".": {
|