@rezless/vm 0.6.1 → 0.7.0
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/builtins/base64.d.ts +5 -2
- package/dist/builtins/base64.d.ts.map +1 -1
- package/dist/builtins/base64.js +7 -5
- package/dist/builtins/base64.js.map +1 -1
- package/dist/builtins/detected.d.ts.map +1 -1
- package/dist/builtins/detected.js +1 -1
- package/dist/builtins/detected.js.map +1 -1
- package/dist/builtins/hash.d.ts +1 -0
- package/dist/builtins/hash.d.ts.map +1 -1
- package/dist/builtins/hash.js +12 -2
- package/dist/builtins/hash.js.map +1 -1
- package/dist/builtins/index.d.ts.map +1 -1
- package/dist/builtins/index.js +18 -7
- package/dist/builtins/index.js.map +1 -1
- package/dist/builtins/inventory.d.ts +7 -5
- package/dist/builtins/inventory.d.ts.map +1 -1
- package/dist/builtins/inventory.js +36 -14
- package/dist/builtins/inventory.js.map +1 -1
- package/dist/builtins/json.d.ts.map +1 -1
- package/dist/builtins/json.js +45 -34
- package/dist/builtins/json.js.map +1 -1
- package/dist/builtins/link-info.js +2 -2
- package/dist/builtins/link-info.js.map +1 -1
- package/dist/builtins/linksetdata.d.ts.map +1 -1
- package/dist/builtins/linksetdata.js +6 -9
- package/dist/builtins/linksetdata.js.map +1 -1
- package/dist/builtins/lists.d.ts +15 -0
- package/dist/builtins/lists.d.ts.map +1 -1
- package/dist/builtins/lists.js +126 -19
- package/dist/builtins/lists.js.map +1 -1
- package/dist/builtins/math.d.ts +2 -0
- package/dist/builtins/math.d.ts.map +1 -1
- package/dist/builtins/math.js +34 -8
- package/dist/builtins/math.js.map +1 -1
- package/dist/builtins/object.d.ts +5 -2
- package/dist/builtins/object.d.ts.map +1 -1
- package/dist/builtins/object.js +13 -5
- package/dist/builtins/object.js.map +1 -1
- package/dist/builtins/prim-accessors.d.ts +1 -0
- package/dist/builtins/prim-accessors.d.ts.map +1 -1
- package/dist/builtins/prim-accessors.js +51 -24
- package/dist/builtins/prim-accessors.js.map +1 -1
- package/dist/builtins/prim-params.d.ts.map +1 -1
- package/dist/builtins/prim-params.js +6 -2
- package/dist/builtins/prim-params.js.map +1 -1
- package/dist/builtins/script-control.d.ts +4 -3
- package/dist/builtins/script-control.d.ts.map +1 -1
- package/dist/builtins/script-control.js +22 -8
- package/dist/builtins/script-control.js.map +1 -1
- package/dist/builtins/strings.d.ts +6 -0
- package/dist/builtins/strings.d.ts.map +1 -1
- package/dist/builtins/strings.js +47 -6
- package/dist/builtins/strings.js.map +1 -1
- package/dist/builtins/time.d.ts +3 -5
- package/dist/builtins/time.d.ts.map +1 -1
- package/dist/builtins/time.js +4 -7
- package/dist/builtins/time.js.map +1 -1
- package/dist/clock.d.ts +16 -6
- package/dist/clock.d.ts.map +1 -1
- package/dist/clock.js +38 -11
- package/dist/clock.js.map +1 -1
- package/dist/dispatch.d.ts +3 -2
- package/dist/dispatch.d.ts.map +1 -1
- package/dist/dispatch.js +15 -10
- package/dist/dispatch.js.map +1 -1
- package/dist/interpreter.d.ts +5 -9
- package/dist/interpreter.d.ts.map +1 -1
- package/dist/interpreter.js +143 -70
- package/dist/interpreter.js.map +1 -1
- package/dist/linkset.d.ts +11 -3
- package/dist/linkset.d.ts.map +1 -1
- package/dist/linkset.js +32 -11
- package/dist/linkset.js.map +1 -1
- package/dist/memory.d.ts +5 -2
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +5 -2
- package/dist/memory.js.map +1 -1
- package/dist/prim-params.d.ts +27 -10
- package/dist/prim-params.d.ts.map +1 -1
- package/dist/prim-params.js +198 -122
- package/dist/prim-params.js.map +1 -1
- package/dist/prim.d.ts +1 -1
- package/dist/prim.d.ts.map +1 -1
- package/dist/prim.js +2 -2
- package/dist/prim.js.map +1 -1
- package/dist/runtime.d.ts +11 -3
- package/dist/runtime.d.ts.map +1 -1
- package/dist/script.d.ts +24 -10
- package/dist/script.d.ts.map +1 -1
- package/dist/script.js +118 -65
- package/dist/script.js.map +1 -1
- package/dist/typecheck.d.ts +3 -1
- package/dist/typecheck.d.ts.map +1 -1
- package/dist/typecheck.js +25 -5
- package/dist/typecheck.js.map +1 -1
- package/dist/values/coerce.d.ts +1 -1
- package/dist/values/coerce.d.ts.map +1 -1
- package/dist/values/coerce.js +10 -6
- package/dist/values/coerce.js.map +1 -1
- package/dist/values/format.d.ts +3 -1
- package/dist/values/format.d.ts.map +1 -1
- package/dist/values/format.js +12 -6
- package/dist/values/format.js.map +1 -1
- package/package.json +2 -2
package/dist/clock.d.ts
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
* Virtual clock + event queue.
|
|
3
3
|
*
|
|
4
4
|
* The clock is the only source of "time" in the VM. Tests advance it
|
|
5
|
-
* explicitly (`vm.advanceTime` / `linkset.advanceTime`);
|
|
6
|
-
*
|
|
7
|
-
* never read.
|
|
5
|
+
* explicitly (`vm.advanceTime` / `linkset.advanceTime`); a script in
|
|
6
|
+
* `llSleep` or a builtin delay is suspended until its wake time while the
|
|
7
|
+
* clock runs other scripts' events. Real wall-clock time is never read.
|
|
8
8
|
*
|
|
9
9
|
* The queue is **linkset-wide**, or world-wide for linksets in a `World`:
|
|
10
10
|
* every script shares one `now` and one event queue. Each queued event carries a `target: Script`
|
|
@@ -43,8 +43,11 @@ export declare class LinksetClock {
|
|
|
43
43
|
advance(ms: number): void;
|
|
44
44
|
/**
|
|
45
45
|
* Pop and return the next due event (`at <= horizon`, default `now`) considering all queued
|
|
46
|
-
* one-shots
|
|
47
|
-
* event is ready.
|
|
46
|
+
* one-shots, every script's recurring timer and every sleeping script's wake
|
|
47
|
+
* (a synthetic `__wake` event). Returns `null` when no event is ready. A
|
|
48
|
+
* sleeping script gets no events but `__reset` until it finishes, and wakes
|
|
49
|
+
* at its wake time or, if paused past it, on resume. At the same instant a
|
|
50
|
+
* queued event comes first, then a timer, then a wake.
|
|
48
51
|
*
|
|
49
52
|
* Recurring timers fire once per script per interval; their next fire
|
|
50
53
|
* timestamp is advanced by `at + interval` (not `now + interval`) so that
|
|
@@ -55,6 +58,13 @@ export declare class LinksetClock {
|
|
|
55
58
|
takeNextDue(scripts: ReadonlyArray<Script>, horizon?: number): QueuedEvent | null;
|
|
56
59
|
/** Snapshot of the pending one-shot queue. Read-only; for inspection/tests. */
|
|
57
60
|
pendingEvents(): readonly QueuedEvent[];
|
|
61
|
+
/**
|
|
62
|
+
* Move `script`'s events that are due by now behind every other queued
|
|
63
|
+
* event, in their order. Called when a handler that took time finishes,
|
|
64
|
+
* so the events that waited for it follow other scripts' events at that
|
|
65
|
+
* instant.
|
|
66
|
+
*/
|
|
67
|
+
requeue(script: Script): void;
|
|
58
68
|
/**
|
|
59
69
|
* Remove every queued event whose target is `script` and that is due by
|
|
60
70
|
* `upTo` (default: all of them), except events named `keep`. Used on reset
|
|
@@ -86,7 +96,7 @@ export declare class ScriptClockView {
|
|
|
86
96
|
scheduleOn(target: Script, at: number, event: string, payload?: Record<string, unknown>): void;
|
|
87
97
|
cancelTimer(): void;
|
|
88
98
|
setTimer(intervalMs: number): void;
|
|
89
|
-
/** Advances the linkset clock
|
|
99
|
+
/** Advances the linkset clock. */
|
|
90
100
|
advance(ms: number): void;
|
|
91
101
|
/** Wall-clock time in microseconds since the Unix epoch, floored. */
|
|
92
102
|
unixMicros(): number;
|
package/dist/clock.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clock.d.ts","sourceRoot":"","sources":["../src/clock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,MAAM,WAAW,WAAW;IAC1B,sEAAsE;IACtE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC1C;AAED,kFAAkF;AAClF,eAAO,MAAM,kBAAkB,KAAK,CAAA;AAEpC,oDAAoD;AACpD,qBAAa,YAAY;IAKX,QAAQ,CAAC,aAAa;IAJlC,2EAA2E;IAC3E,GAAG,SAAI;IAEP,iEAAiE;IACjE,YAAqB,aAAa,SAAI,EAAI;IAE1C,qEAAqE;IACrE,UAAU,IAAI,MAAM,CAEnB;IAED,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoB;IAE1C;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,IAAI,CAO/F;IAED,qEAAqE;IACrE,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAGxB;IAED
|
|
1
|
+
{"version":3,"file":"clock.d.ts","sourceRoot":"","sources":["../src/clock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,MAAM,WAAW,WAAW;IAC1B,sEAAsE;IACtE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC1C;AAED,kFAAkF;AAClF,eAAO,MAAM,kBAAkB,KAAK,CAAA;AAEpC,oDAAoD;AACpD,qBAAa,YAAY;IAKX,QAAQ,CAAC,aAAa;IAJlC,2EAA2E;IAC3E,GAAG,SAAI;IAEP,iEAAiE;IACjE,YAAqB,aAAa,SAAI,EAAI;IAE1C,qEAAqE;IACrE,UAAU,IAAI,MAAM,CAEnB;IAED,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoB;IAE1C;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,IAAI,CAO/F;IAED,qEAAqE;IACrE,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAGxB;IAED;;;;;;;;;;;;;OAaG;IACH,WAAW,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,OAAO,SAAW,GAAG,WAAW,GAAG,IAAI,CAmDlF;IAED,+EAA+E;IAC/E,aAAa,IAAI,SAAS,WAAW,EAAE,CAEtC;IAED;;;;;OAKG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAI5B;IAED;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,SAAW,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAKhE;CACF;AAED;;;;GAIG;AACH,qBAAa,eAAe;IAWxB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI;IAXvB,mHAAmH;IACnH,eAAe,EAAE,MAAM,CAAA;IACvB,oDAAoD;IACpD,eAAe,SAAI;IACnB,wDAAwD;IACxD,eAAe,SAAI;IACnB,qGAAqG;IACrG,WAAW,SAAI;IAEf,YACmB,YAAY,EAAE,YAAY,EAC1B,IAAI,EAAE,MAAM,MAAM,EAGpC;IAED,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,gDAAgD;IAChD,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,IAAI,CAE/E;IAED,sDAAsD;IACtD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,IAAI,CAEjG;IAED,WAAW,IAAI,IAAI,CAGlB;IAED,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAOjC;IAED,kCAAkC;IAClC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAExB;IAED,qEAAqE;IACrE,UAAU,IAAI,MAAM,CAEnB;IAED,cAAc,IAAI,MAAM,CAEvB;IAED,cAAc,IAAI,IAAI,CAErB;CACF"}
|
package/dist/clock.js
CHANGED
|
@@ -38,8 +38,11 @@ export class LinksetClock {
|
|
|
38
38
|
}
|
|
39
39
|
/**
|
|
40
40
|
* Pop and return the next due event (`at <= horizon`, default `now`) considering all queued
|
|
41
|
-
* one-shots
|
|
42
|
-
* event is ready.
|
|
41
|
+
* one-shots, every script's recurring timer and every sleeping script's wake
|
|
42
|
+
* (a synthetic `__wake` event). Returns `null` when no event is ready. A
|
|
43
|
+
* sleeping script gets no events but `__reset` until it finishes, and wakes
|
|
44
|
+
* at its wake time or, if paused past it, on resume. At the same instant a
|
|
45
|
+
* queued event comes first, then a timer, then a wake.
|
|
43
46
|
*
|
|
44
47
|
* Recurring timers fire once per script per interval; their next fire
|
|
45
48
|
* timestamp is advanced by `at + interval` (not `now + interval`) so that
|
|
@@ -52,19 +55,31 @@ export class LinksetClock {
|
|
|
52
55
|
let bestAt = Infinity;
|
|
53
56
|
for (let i = 0; i < this.queue.length; i++) {
|
|
54
57
|
const e = this.queue[i];
|
|
55
|
-
|
|
56
|
-
|
|
58
|
+
// An event that waited for its target's handler is due when that handler finished.
|
|
59
|
+
const due = Math.max(e.at, e.target.clockView.busyUntilMs);
|
|
60
|
+
if (due <= horizon && due < bestAt && (e.event === '__reset' || e.target.wakeAt === undefined)) {
|
|
61
|
+
bestAt = due;
|
|
57
62
|
bestIdx = i;
|
|
58
63
|
}
|
|
59
64
|
}
|
|
60
65
|
let bestTimerScript = null;
|
|
61
66
|
let bestTimerAt = Infinity;
|
|
67
|
+
let waking = null;
|
|
68
|
+
let wakeAt = Infinity;
|
|
62
69
|
for (const s of scripts) {
|
|
63
70
|
// Per LSL: dead and stopped scripts don't generate timer events. Skip
|
|
64
71
|
// their timer state so we don't waste catch-up iterations or accumulate
|
|
65
72
|
// back-logged events that flood the script on resume.
|
|
66
73
|
if (s.dead || !s.running)
|
|
67
74
|
continue;
|
|
75
|
+
const w = s.wakeAt === undefined ? undefined : Math.max(s.wakeAt, this.now);
|
|
76
|
+
if (w !== undefined) {
|
|
77
|
+
if (w <= horizon && w < wakeAt) {
|
|
78
|
+
wakeAt = w;
|
|
79
|
+
waking = s;
|
|
80
|
+
}
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
68
83
|
const v = s.clockView;
|
|
69
84
|
if (v.timerIntervalMs > 0 && v.timerNextFireMs <= horizon) {
|
|
70
85
|
const due = Math.max(v.timerNextFireMs, v.busyUntilMs);
|
|
@@ -74,22 +89,34 @@ export class LinksetClock {
|
|
|
74
89
|
}
|
|
75
90
|
}
|
|
76
91
|
}
|
|
77
|
-
if (bestIdx
|
|
78
|
-
|
|
79
|
-
|
|
92
|
+
if (bestIdx !== -1 && bestAt <= bestTimerAt && bestAt <= wakeAt) {
|
|
93
|
+
const ev = this.queue[bestIdx];
|
|
94
|
+
this.queue.splice(bestIdx, 1);
|
|
95
|
+
return ev;
|
|
96
|
+
}
|
|
97
|
+
if (bestTimerScript && bestTimerAt <= wakeAt) {
|
|
80
98
|
const at = bestTimerAt;
|
|
81
99
|
const v = bestTimerScript.clockView;
|
|
82
100
|
v.timerNextFireMs = at + v.timerIntervalMs;
|
|
83
101
|
return { at, target: bestTimerScript, event: 'timer', payload: {} };
|
|
84
102
|
}
|
|
85
|
-
|
|
86
|
-
this.queue.splice(bestIdx, 1);
|
|
87
|
-
return ev;
|
|
103
|
+
return waking && { at: wakeAt, target: waking, event: '__wake', payload: {} };
|
|
88
104
|
}
|
|
89
105
|
/** Snapshot of the pending one-shot queue. Read-only; for inspection/tests. */
|
|
90
106
|
pendingEvents() {
|
|
91
107
|
return this.queue.slice();
|
|
92
108
|
}
|
|
109
|
+
/**
|
|
110
|
+
* Move `script`'s events that are due by now behind every other queued
|
|
111
|
+
* event, in their order. Called when a handler that took time finishes,
|
|
112
|
+
* so the events that waited for it follow other scripts' events at that
|
|
113
|
+
* instant.
|
|
114
|
+
*/
|
|
115
|
+
requeue(script) {
|
|
116
|
+
const waited = this.queue.filter((e) => e.target === script && e.at <= this.now);
|
|
117
|
+
this.purgeTarget(script, this.now);
|
|
118
|
+
this.queue.push(...waited);
|
|
119
|
+
}
|
|
93
120
|
/**
|
|
94
121
|
* Remove every queued event whose target is `script` and that is due by
|
|
95
122
|
* `upTo` (default: all of them), except events named `keep`. Used on reset
|
|
@@ -147,7 +174,7 @@ export class ScriptClockView {
|
|
|
147
174
|
this.timerIntervalMs = intervalMs;
|
|
148
175
|
this.timerNextFireMs = this.now + intervalMs;
|
|
149
176
|
}
|
|
150
|
-
/** Advances the linkset clock
|
|
177
|
+
/** Advances the linkset clock. */
|
|
151
178
|
advance(ms) {
|
|
152
179
|
this.linksetClock.advance(ms);
|
|
153
180
|
}
|
package/dist/clock.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clock.js","sourceRoot":"","sources":["../src/clock.ts"],"names":[],"mappings":"AAyBA,kFAAkF;AAClF,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAA;AAEpC,oDAAoD;AACpD,MAAM,OAAO,YAAY;IAKF,aAAa;IAJlC,2EAA2E;IAC3E,GAAG,GAAG,CAAC,CAAA;IAEP,iEAAiE;IACjE,YAAqB,aAAa,GAAG,CAAC;6BAAjB,aAAa;IAAO,CAAC;IAE1C,qEAAqE;IACrE,UAAU;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAA;IAC/D,CAAC;IAEgB,KAAK,GAAkB,EAAE,CAAA;IAE1C;;;;OAIG;IACH,QAAQ,CAAC,MAAc,EAAE,EAAU,EAAE,KAAa,EAAE,OAAO,GAA4B,EAAE;QACvF,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAA;YACxC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK;gBAAE,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM;oBAAE,OAAO,EAAE,CAAA;YAC9D,IAAI,OAAO,IAAI,kBAAkB;gBAAE,OAAM;QAC3C,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;IACjD,CAAC;IAED,qEAAqE;IACrE,OAAO,CAAC,EAAU;QAChB,IAAI,EAAE,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;QAC5D,IAAI,CAAC,GAAG,IAAI,EAAE,CAAA;IAChB,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"clock.js","sourceRoot":"","sources":["../src/clock.ts"],"names":[],"mappings":"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"}
|
package/dist/dispatch.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { BuiltinImpl, ScriptState } from './runtime.js';
|
|
1
|
+
import type { BuiltinImpl, Run, ScriptState } from './runtime.js';
|
|
2
2
|
import type { LslValue } from './values/types.js';
|
|
3
3
|
import type { BuiltinSpec } from './generated/functions.js';
|
|
4
4
|
import type { Script } from './script.js';
|
|
@@ -14,6 +14,7 @@ export interface DispatchContext {
|
|
|
14
14
|
*
|
|
15
15
|
* Resolution order: user mock > real built-in > generated stub > error.
|
|
16
16
|
* Every successful call (including stubs) is appended to ScriptState.calls.
|
|
17
|
+
* A builtin that sleeps or has a delay suspends the script after it returns.
|
|
17
18
|
*/
|
|
18
|
-
export declare function callBuiltin(dctx: DispatchContext, name: string, args: ReadonlyArray<LslValue>): LslValue | undefined
|
|
19
|
+
export declare function callBuiltin(dctx: DispatchContext, name: string, args: ReadonlyArray<LslValue>): Run<LslValue | undefined>;
|
|
19
20
|
//# sourceMappingURL=dispatch.d.ts.map
|
package/dist/dispatch.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../src/dispatch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAe,WAAW,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../src/dispatch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAe,GAAG,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC9E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAGjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAE3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAIzC,8DAA8D;AAC9D,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAE7D;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAA;IAC3B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAA;IACrD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AAED;;;;;;GAMG;AACH,wBAAiB,WAAW,CAC1B,IAAI,EAAE,eAAe,EACrB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,GAC5B,GAAG,CAAC,QAAQ,GAAG,SAAS,CAAC,CAsB3B"}
|
package/dist/dispatch.js
CHANGED
|
@@ -2,7 +2,7 @@ import { defaultValueFor } from './values/types.js';
|
|
|
2
2
|
import { BUILTIN_SPECS } from './generated/functions.js';
|
|
3
3
|
import { REAL_BUILTINS } from './builtins/index.js';
|
|
4
4
|
import { own } from './own.js';
|
|
5
|
-
import {
|
|
5
|
+
import { HaltSignal } from './builtins/object.js';
|
|
6
6
|
/** Look up the generated spec for a function name, if any. */
|
|
7
7
|
export function specFor(name) {
|
|
8
8
|
return own(BUILTIN_SPECS, name);
|
|
@@ -12,27 +12,32 @@ export function specFor(name) {
|
|
|
12
12
|
*
|
|
13
13
|
* Resolution order: user mock > real built-in > generated stub > error.
|
|
14
14
|
* Every successful call (including stubs) is appended to ScriptState.calls.
|
|
15
|
+
* A builtin that sleeps or has a delay suspends the script after it returns.
|
|
15
16
|
*/
|
|
16
|
-
export function callBuiltin(dctx, name, args) {
|
|
17
|
+
export function* callBuiltin(dctx, name, args) {
|
|
17
18
|
const spec = specFor(name);
|
|
18
19
|
const impl = dctx.mocks[name] ?? own(REAL_BUILTINS, name) ?? makeStub(dctx.script, name);
|
|
20
|
+
let sleptMs = null;
|
|
19
21
|
const ctx = {
|
|
20
22
|
state: dctx.state,
|
|
21
23
|
spec,
|
|
22
24
|
script: dctx.script,
|
|
23
25
|
prim: dctx.script.host,
|
|
24
26
|
linkset: dctx.script.linkset,
|
|
27
|
+
sleep: (ms) => {
|
|
28
|
+
sleptMs = (sleptMs ?? 0) + ms;
|
|
29
|
+
},
|
|
25
30
|
};
|
|
26
|
-
const
|
|
31
|
+
const dying = dctx.state.lifecycle.dying;
|
|
32
|
+
if (dctx.state.lifecycle.removed && name !== 'llOwnerSay')
|
|
33
|
+
throw new HaltSignal();
|
|
27
34
|
const result = impl(ctx, args);
|
|
28
35
|
dctx.state.calls.push({ name, args, returned: result });
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
if (dctx.state.lifecycle.removed && dctx.state.clock.now > startedAt)
|
|
35
|
-
throw new ScriptRemovedSignal();
|
|
36
|
+
if (dying)
|
|
37
|
+
throw new HaltSignal();
|
|
38
|
+
const delayMs = spec ? spec.delay * 1000 : 0;
|
|
39
|
+
if (sleptMs !== null || delayMs > 0)
|
|
40
|
+
yield { until: dctx.state.clock.now + (sleptMs ?? 0) + delayMs };
|
|
36
41
|
return result;
|
|
37
42
|
}
|
|
38
43
|
function makeStub(script, name) {
|
package/dist/dispatch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../src/dispatch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEnD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../src/dispatch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEnD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEjD,8DAA8D;AAC9D,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,OAAO,GAAG,CAAC,aAA4C,EAAE,IAAI,CAAC,CAAA;AAChE,CAAC;AAQD;;;;;;GAMG;AACH,MAAM,SAAS,CAAC,CAAC,WAAW,CAC1B,IAAqB,EACrB,IAAY,EACZ,IAA6B;IAE7B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACxF,IAAI,OAAO,GAAkB,IAAI,CAAA;IACjC,MAAM,GAAG,GAAgB;QACvB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,IAAI;QACJ,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;QACtB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;QAC5B,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE;YACZ,OAAO,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,EAAE,CAAA;QAC/B,CAAC;KACF,CAAA;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAA;IACxC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,IAAI,IAAI,KAAK,YAAY;QAAE,MAAM,IAAI,UAAU,EAAE,CAAA;IACjF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAC9B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;IACvD,IAAI,KAAK;QAAE,MAAM,IAAI,UAAU,EAAE,CAAA;IACjC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IAC5C,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,GAAG,CAAC;QAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,CAAA;IACrG,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,MAAc,EAAE,IAAY;IAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,GAAG,EAAE;YACV,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,qFAAqF,CAAC,CAAA;QAC7H,CAAC,CAAA;IACH,CAAC;IACD,OAAO,GAAG,EAAE;QACV,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACvB,OAAO,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACzC,CAAC,CAAA;AACH,CAAC"}
|
package/dist/interpreter.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { EventHandler, FunctionDeclaration } from '@rezless/parser';
|
|
2
|
-
import type { BuiltinImpl, ScriptState } from './runtime.js';
|
|
1
|
+
import type { EventHandler, FunctionDeclaration, Node } from '@rezless/parser';
|
|
2
|
+
import type { BuiltinImpl, Run, ScriptState } from './runtime.js';
|
|
3
3
|
import type { FunctionSignature, Script } from './script.js';
|
|
4
4
|
import type { EvalResult } from './values/types.js';
|
|
5
5
|
import { Env } from './env.js';
|
|
@@ -22,6 +22,8 @@ export interface InterpreterContext {
|
|
|
22
22
|
readonly userFunctions: ReadonlyMap<string, FunctionDeclaration>;
|
|
23
23
|
/** Functions outside the LSL definitions declared through `ScriptOptions.functions`. */
|
|
24
24
|
readonly functions: Readonly<Record<string, FunctionSignature>>;
|
|
25
|
+
/** Functions and handlers that halt the script when entered. */
|
|
26
|
+
readonly invalidPrograms: ReadonlySet<Node>;
|
|
25
27
|
/** Owning script — passed through to builtins via dispatch. */
|
|
26
28
|
readonly script: Script;
|
|
27
29
|
readonly prim: import('./prim.js').Prim;
|
|
@@ -31,11 +33,5 @@ export declare class StateChangeSignal {
|
|
|
31
33
|
readonly target: string;
|
|
32
34
|
constructor(target: string);
|
|
33
35
|
}
|
|
34
|
-
export declare function execHandler(ctx: InterpreterContext, handler: EventHandler, args?: ReadonlyArray<EvalResult>): void
|
|
35
|
-
/**
|
|
36
|
-
* Invoke a user-defined function. Pushes a fresh env (no closures —
|
|
37
|
-
* functions see globals only), binds args to params, runs the body,
|
|
38
|
-
* and unwraps a ReturnSignal into the function's return value.
|
|
39
|
-
*/
|
|
40
|
-
export declare function callUserFunction(ctx: InterpreterContext, fn: FunctionDeclaration, args: ReadonlyArray<EvalResult>): EvalResult;
|
|
36
|
+
export declare function execHandler(ctx: InterpreterContext, handler: EventHandler, args?: ReadonlyArray<EvalResult>): Run<void>;
|
|
41
37
|
//# sourceMappingURL=interpreter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interpreter.d.ts","sourceRoot":"","sources":["../src/interpreter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,YAAY,EAiBZ,mBAAmB,
|
|
1
|
+
{"version":3,"file":"interpreter.d.ts","sourceRoot":"","sources":["../src/interpreter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,YAAY,EAiBZ,mBAAmB,EACnB,IAAI,EAEL,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,EAAc,MAAM,cAAc,CAAA;AAC7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAE5D,OAAO,KAAK,EAAE,UAAU,EAAuC,MAAM,mBAAmB,CAAA;AAKxF,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAa9B;;;;;;;;;GASG;AAEH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAA;IAC3B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAA;IACrD,+DAA+D;IAC/D,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAA;IACrB,mFAAmF;IACnF,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;IAChE,wFAAwF;IACxF,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAA;IAC/D,gEAAgE;IAChE,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,IAAI,CAAC,CAAA;IAC3C,+DAA+D;IAC/D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO,WAAW,EAAE,IAAI,CAAA;IACvC,QAAQ,CAAC,OAAO,EAAE,OAAO,cAAc,EAAE,OAAO,CAAA;CACjD;AAUD,qBAAa,iBAAiB;aACA,MAAM,EAAE,MAAM;IAA1C,YAA4B,MAAM,EAAE,MAAM,EAAI;CAC/C;AAUD,wBAAgB,WAAW,CACzB,GAAG,EAAE,kBAAkB,EACvB,OAAO,EAAE,YAAY,EACrB,IAAI,GAAE,aAAa,CAAC,UAAU,CAAM,GACnC,GAAG,CAAC,IAAI,CAAC,CAEX"}
|