@rezless/vm 0.6.2 → 0.8.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/agents.d.ts +14 -0
- package/dist/builtins/agents.d.ts.map +1 -0
- package/dist/builtins/agents.js +117 -0
- package/dist/builtins/agents.js.map +1 -0
- package/dist/builtins/animation.d.ts +46 -0
- package/dist/builtins/animation.d.ts.map +1 -0
- package/dist/builtins/animation.js +316 -0
- package/dist/builtins/animation.js.map +1 -0
- package/dist/builtins/attachments.d.ts +9 -0
- package/dist/builtins/attachments.d.ts.map +1 -0
- package/dist/builtins/attachments.js +127 -0
- package/dist/builtins/attachments.js.map +1 -0
- package/dist/builtins/base64.d.ts +13 -2
- package/dist/builtins/base64.d.ts.map +1 -1
- package/dist/builtins/base64.js +8 -6
- package/dist/builtins/base64.js.map +1 -1
- package/dist/builtins/camera.d.ts +35 -0
- package/dist/builtins/camera.d.ts.map +1 -0
- package/dist/builtins/camera.js +104 -0
- package/dist/builtins/camera.js.map +1 -0
- package/dist/builtins/collision.d.ts +21 -0
- package/dist/builtins/collision.d.ts.map +1 -0
- package/dist/builtins/collision.js +44 -0
- package/dist/builtins/collision.js.map +1 -0
- package/dist/builtins/controls.d.ts +19 -0
- package/dist/builtins/controls.d.ts.map +1 -0
- package/dist/builtins/controls.js +27 -0
- package/dist/builtins/controls.js.map +1 -0
- package/dist/builtins/damage.d.ts +24 -0
- package/dist/builtins/damage.d.ts.map +1 -0
- package/dist/builtins/damage.js +166 -0
- package/dist/builtins/damage.js.map +1 -0
- package/dist/builtins/detected.d.ts +22 -1
- package/dist/builtins/detected.d.ts.map +1 -1
- package/dist/builtins/detected.js +28 -2
- package/dist/builtins/detected.js.map +1 -1
- package/dist/builtins/dialog.d.ts +23 -0
- package/dist/builtins/dialog.d.ts.map +1 -0
- package/dist/builtins/dialog.js +69 -0
- package/dist/builtins/dialog.js.map +1 -0
- package/dist/builtins/email.d.ts +61 -0
- package/dist/builtins/email.d.ts.map +1 -0
- package/dist/builtins/email.js +121 -0
- package/dist/builtins/email.js.map +1 -0
- package/dist/builtins/environment.d.ts +27 -0
- package/dist/builtins/environment.d.ts.map +1 -0
- package/dist/builtins/environment.js +126 -0
- package/dist/builtins/environment.js.map +1 -0
- package/dist/builtins/experience.d.ts +51 -0
- package/dist/builtins/experience.d.ts.map +1 -0
- package/dist/builtins/experience.js +202 -0
- package/dist/builtins/experience.js.map +1 -0
- package/dist/builtins/game-control.d.ts +17 -0
- package/dist/builtins/game-control.d.ts.map +1 -0
- package/dist/builtins/game-control.js +21 -0
- package/dist/builtins/game-control.js.map +1 -0
- package/dist/builtins/give.d.ts +16 -0
- package/dist/builtins/give.d.ts.map +1 -0
- package/dist/builtins/give.js +137 -0
- package/dist/builtins/give.js.map +1 -0
- package/dist/builtins/ground.d.ts +18 -0
- package/dist/builtins/ground.d.ts.map +1 -0
- package/dist/builtins/ground.js +83 -0
- package/dist/builtins/ground.js.map +1 -0
- 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/http.d.ts +99 -4
- package/dist/builtins/http.d.ts.map +1 -1
- package/dist/builtins/http.js +216 -6
- package/dist/builtins/http.js.map +1 -1
- package/dist/builtins/index.d.ts.map +1 -1
- package/dist/builtins/index.js +250 -14
- package/dist/builtins/index.js.map +1 -1
- package/dist/builtins/inventory.d.ts +8 -5
- package/dist/builtins/inventory.d.ts.map +1 -1
- package/dist/builtins/inventory.js +37 -15
- 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/land.d.ts +29 -0
- package/dist/builtins/land.d.ts.map +1 -0
- package/dist/builtins/land.js +339 -0
- package/dist/builtins/land.js.map +1 -0
- package/dist/builtins/link-info.js +2 -2
- package/dist/builtins/link-info.js.map +1 -1
- package/dist/builtins/links.d.ts +20 -0
- package/dist/builtins/links.d.ts.map +1 -0
- package/dist/builtins/links.js +53 -0
- package/dist/builtins/links.js.map +1 -0
- package/dist/builtins/linksetdata.d.ts +5 -0
- package/dist/builtins/linksetdata.d.ts.map +1 -1
- package/dist/builtins/linksetdata.js +22 -9
- package/dist/builtins/linksetdata.js.map +1 -1
- package/dist/builtins/lists.d.ts +21 -0
- package/dist/builtins/lists.d.ts.map +1 -1
- package/dist/builtins/lists.js +137 -17
- package/dist/builtins/lists.js.map +1 -1
- package/dist/builtins/math.d.ts +18 -0
- package/dist/builtins/math.d.ts.map +1 -1
- package/dist/builtins/math.js +104 -5
- package/dist/builtins/math.js.map +1 -1
- package/dist/builtins/media.d.ts +8 -0
- package/dist/builtins/media.d.ts.map +1 -0
- package/dist/builtins/media.js +167 -0
- package/dist/builtins/media.js.map +1 -0
- package/dist/builtins/motion.d.ts +79 -0
- package/dist/builtins/motion.d.ts.map +1 -0
- package/dist/builtins/motion.js +396 -0
- package/dist/builtins/motion.js.map +1 -0
- package/dist/builtins/notecard-search.d.ts +15 -0
- package/dist/builtins/notecard-search.d.ts.map +1 -0
- package/dist/builtins/notecard-search.js +374 -0
- package/dist/builtins/notecard-search.js.map +1 -0
- package/dist/builtins/object-animation.d.ts +21 -0
- package/dist/builtins/object-animation.d.ts.map +1 -0
- package/dist/builtins/object-animation.js +193 -0
- package/dist/builtins/object-animation.js.map +1 -0
- package/dist/builtins/object-reads.d.ts +39 -0
- package/dist/builtins/object-reads.d.ts.map +1 -0
- package/dist/builtins/object-reads.js +332 -0
- package/dist/builtins/object-reads.js.map +1 -0
- package/dist/builtins/object.d.ts +11 -2
- package/dist/builtins/object.d.ts.map +1 -1
- package/dist/builtins/object.js +32 -8
- package/dist/builtins/object.js.map +1 -1
- package/dist/builtins/particles.d.ts +4 -0
- package/dist/builtins/particles.d.ts.map +1 -0
- package/dist/builtins/particles.js +65 -0
- package/dist/builtins/particles.js.map +1 -0
- package/dist/builtins/pathfinding.d.ts +39 -0
- package/dist/builtins/pathfinding.d.ts.map +1 -0
- package/dist/builtins/pathfinding.js +83 -0
- package/dist/builtins/pathfinding.js.map +1 -0
- package/dist/builtins/permissions.d.ts.map +1 -1
- package/dist/builtins/permissions.js +6 -0
- package/dist/builtins/permissions.js.map +1 -1
- package/dist/builtins/physics.d.ts +49 -0
- package/dist/builtins/physics.d.ts.map +1 -0
- package/dist/builtins/physics.js +47 -0
- package/dist/builtins/physics.js.map +1 -0
- package/dist/builtins/prim-accessors.d.ts +4 -0
- package/dist/builtins/prim-accessors.d.ts.map +1 -1
- package/dist/builtins/prim-accessors.js +75 -28
- 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/raycast.d.ts +3 -0
- package/dist/builtins/raycast.d.ts.map +1 -0
- package/dist/builtins/raycast.js +65 -0
- package/dist/builtins/raycast.js.map +1 -0
- package/dist/builtins/region.d.ts +31 -0
- package/dist/builtins/region.d.ts.map +1 -0
- package/dist/builtins/region.js +125 -0
- package/dist/builtins/region.js.map +1 -0
- package/dist/builtins/remote-load.d.ts +3 -0
- package/dist/builtins/remote-load.d.ts.map +1 -0
- package/dist/builtins/remote-load.js +53 -0
- package/dist/builtins/remote-load.js.map +1 -0
- package/dist/builtins/rez.d.ts +10 -0
- package/dist/builtins/rez.d.ts.map +1 -0
- package/dist/builtins/rez.js +255 -0
- package/dist/builtins/rez.js.map +1 -0
- package/dist/builtins/rsa.d.ts +4 -0
- package/dist/builtins/rsa.d.ts.map +1 -0
- package/dist/builtins/rsa.js +44 -0
- package/dist/builtins/rsa.js.map +1 -0
- package/dist/builtins/script-control.d.ts +8 -3
- package/dist/builtins/script-control.d.ts.map +1 -1
- package/dist/builtins/script-control.js +27 -8
- package/dist/builtins/script-control.js.map +1 -1
- package/dist/builtins/sensor.d.ts +11 -0
- package/dist/builtins/sensor.d.ts.map +1 -0
- package/dist/builtins/sensor.js +145 -0
- package/dist/builtins/sensor.js.map +1 -0
- package/dist/builtins/sit.d.ts +23 -0
- package/dist/builtins/sit.d.ts.map +1 -0
- package/dist/builtins/sit.js +150 -0
- package/dist/builtins/sit.js.map +1 -0
- package/dist/builtins/sound.d.ts +19 -0
- package/dist/builtins/sound.d.ts.map +1 -0
- package/dist/builtins/sound.js +113 -0
- package/dist/builtins/sound.js.map +1 -0
- 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/targets.d.ts +12 -0
- package/dist/builtins/targets.d.ts.map +1 -0
- package/dist/builtins/targets.js +121 -0
- package/dist/builtins/targets.js.map +1 -0
- package/dist/builtins/time.d.ts +15 -5
- package/dist/builtins/time.d.ts.map +1 -1
- package/dist/builtins/time.js +36 -11
- package/dist/builtins/time.js.map +1 -1
- package/dist/builtins/vehicles.d.ts +22 -0
- package/dist/builtins/vehicles.d.ts.map +1 -0
- package/dist/builtins/vehicles.js +78 -0
- package/dist/builtins/vehicles.js.map +1 -0
- package/dist/builtins/viewer.d.ts +39 -0
- package/dist/builtins/viewer.d.ts.map +1 -0
- package/dist/builtins/viewer.js +74 -0
- package/dist/builtins/viewer.js.map +1 -0
- package/dist/clock.d.ts +45 -7
- package/dist/clock.d.ts.map +1 -1
- package/dist/clock.js +125 -14
- 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/experience.d.ts +39 -0
- package/dist/experience.d.ts.map +1 -0
- package/dist/experience.js +38 -0
- package/dist/experience.js.map +1 -0
- package/dist/index.d.ts +20 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/interpreter.d.ts +5 -10
- package/dist/interpreter.d.ts.map +1 -1
- package/dist/interpreter.js +143 -70
- package/dist/interpreter.js.map +1 -1
- package/dist/inventory.d.ts +2 -0
- package/dist/inventory.d.ts.map +1 -1
- package/dist/inventory.js +2 -0
- package/dist/inventory.js.map +1 -1
- package/dist/linkset.d.ts +147 -11
- package/dist/linkset.d.ts.map +1 -1
- package/dist/linkset.js +401 -28
- 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 +209 -125
- package/dist/prim-params.js.map +1 -1
- package/dist/prim.d.ts +95 -5
- package/dist/prim.d.ts.map +1 -1
- package/dist/prim.js +96 -7
- package/dist/prim.js.map +1 -1
- package/dist/runtime.d.ts +52 -3
- package/dist/runtime.d.ts.map +1 -1
- package/dist/script.d.ts +171 -12
- package/dist/script.d.ts.map +1 -1
- package/dist/script.js +480 -73
- 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 +10 -6
- package/dist/values/format.js.map +1 -1
- package/dist/values/ops.d.ts +3 -0
- package/dist/values/ops.d.ts.map +1 -1
- package/dist/values/ops.js +2 -2
- package/dist/values/ops.js.map +1 -1
- package/dist/world.d.ts +247 -1
- package/dist/world.d.ts.map +1 -1
- package/dist/world.js +318 -6
- package/dist/world.js.map +1 -1
- package/package.json +2 -2
package/dist/linkset.js
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
1
|
+
import { pauseSensors, resumeSensors } from './builtins/sensor.js';
|
|
2
|
+
import { pauseTargets, resumeTargets } from './builtins/targets.js';
|
|
3
|
+
import { flushDamageEvents } from './builtins/damage.js';
|
|
1
4
|
import { LinksetClock } from './clock.js';
|
|
2
5
|
import { Prim } from './prim.js';
|
|
6
|
+
import { mergeLinksetData } from './builtins/linksetdata.js';
|
|
3
7
|
import { NULL_KEY } from './values/types.js';
|
|
4
|
-
import {
|
|
8
|
+
import { conjugate, mulRotation, rotateVector } from './values/ops.js';
|
|
9
|
+
import { LINK_ROOT, LINK_SET, LINK_ALL_OTHERS, LINK_ALL_CHILDREN, LINK_THIS, PASS_ALWAYS, PASS_NEVER, CHANGED_LINK, KFM_CMD_STOP, REGION_FLAG_ALLOW_DAMAGE, } from './generated/constants.js';
|
|
5
10
|
// Re-export so `import { LINK_* } from '@rezless/vm'` keeps working.
|
|
6
11
|
export { LINK_ROOT, LINK_SET, LINK_ALL_OTHERS, LINK_ALL_CHILDREN, LINK_THIS };
|
|
12
|
+
const TOUCH_EVENTS = ['touch_start', 'touch', 'touch_end'];
|
|
7
13
|
const CHAT_RANGE = { whisper: 10, say: 20, shout: 100 };
|
|
8
14
|
/**
|
|
9
15
|
* A linkset owns the shared world state for its prims and scripts: the
|
|
@@ -32,29 +38,163 @@ export class Linkset {
|
|
|
32
38
|
clearLinkedMessages() {
|
|
33
39
|
this.linkedMessages.length = 0;
|
|
34
40
|
}
|
|
41
|
+
/** Whether this object is on damage-enabled land. Defaults to the region damage flag. */
|
|
42
|
+
damageEnabled = false;
|
|
43
|
+
/** Parcel-owner/group sources bypass the llDamage throttle. */
|
|
44
|
+
damageThrottleExempt = false;
|
|
35
45
|
owner;
|
|
46
|
+
/** Null while rezzed or detached; tests may attach fixtures with attachToAvatar. */
|
|
47
|
+
attachment = null;
|
|
48
|
+
lastAttachmentPoint = 6;
|
|
49
|
+
deleteAfterDetach = false;
|
|
50
|
+
/** True once a script in the linkset has called llDie. */
|
|
51
|
+
dead = false;
|
|
52
|
+
/** Provenance and initial motion of a script-rezzed object. */
|
|
53
|
+
rez;
|
|
54
|
+
/** Temporary objects expire after 60 seconds of virtual time. */
|
|
55
|
+
expiresAt;
|
|
56
|
+
rezCounter = 0;
|
|
36
57
|
world;
|
|
37
58
|
region;
|
|
38
|
-
|
|
59
|
+
startParameter;
|
|
60
|
+
startString;
|
|
61
|
+
animesh;
|
|
62
|
+
/**
|
|
63
|
+
* The linksets that share this one's clock and hear its chat: its world's,
|
|
64
|
+
* or, outside a world, this one and every linkset broken off it.
|
|
65
|
+
*/
|
|
66
|
+
peers;
|
|
67
|
+
/** `from` is the linkset this one breaks off; outside a world, they share a clock. */
|
|
68
|
+
constructor(opts = {}, from) {
|
|
39
69
|
this.owner = opts.owner ?? NULL_KEY;
|
|
40
70
|
this.region = opts.region;
|
|
71
|
+
this.startParameter = opts.startParameter ?? 0;
|
|
72
|
+
this.startString = opts.startString ?? '';
|
|
73
|
+
this.animesh = opts.animesh ?? false;
|
|
41
74
|
if (opts.world) {
|
|
42
75
|
opts.world.corner(opts.region);
|
|
43
76
|
this.world = opts.world;
|
|
44
77
|
this.clock = opts.world.clock;
|
|
45
|
-
opts.world.linksets
|
|
78
|
+
this.peers = opts.world.linksets;
|
|
79
|
+
}
|
|
80
|
+
else if (from) {
|
|
81
|
+
this.clock = from.clock;
|
|
82
|
+
this.peers = from.peers;
|
|
46
83
|
}
|
|
47
84
|
else {
|
|
48
85
|
this.clock = new LinksetClock(opts.startUnixTime);
|
|
86
|
+
this.peers = [];
|
|
49
87
|
}
|
|
88
|
+
this.damageEnabled = from?.damageEnabled
|
|
89
|
+
?? (((opts.world?.region(opts.region).flags ?? 0) & REGION_FLAG_ALLOW_DAMAGE) !== 0);
|
|
90
|
+
this.damageThrottleExempt = from?.damageThrottleExempt ?? false;
|
|
91
|
+
this.peers.push(this);
|
|
50
92
|
}
|
|
51
93
|
/** Add a prim to the linkset; assigns a 1-based linkNumber. */
|
|
52
94
|
addPrim(prim) {
|
|
53
95
|
prim.linkset = this;
|
|
96
|
+
prim.createdAt = this.clock.now;
|
|
54
97
|
this.prims.push(prim);
|
|
55
98
|
this.recomputeLinkNumbers();
|
|
56
99
|
return prim;
|
|
57
100
|
}
|
|
101
|
+
/** Wear a fixture without a script permission request, as a viewer does. */
|
|
102
|
+
attachToAvatar(avatar, point, temporary = false) {
|
|
103
|
+
if (this.dead || this.attachment || !this.prims.length)
|
|
104
|
+
return;
|
|
105
|
+
point &= 255;
|
|
106
|
+
point = point === 0 ? this.lastAttachmentPoint : point > 55 ? 1 : point;
|
|
107
|
+
const order = Math.max(0, ...this.peers.map(l => l.attachment?.order ?? 0)) + 1;
|
|
108
|
+
if (!this.peers.includes(this))
|
|
109
|
+
this.peers.push(this);
|
|
110
|
+
this.lastAttachmentPoint = point;
|
|
111
|
+
this.attachment = { avatar, point, temporary, order };
|
|
112
|
+
for (const script of this.allScripts()) {
|
|
113
|
+
resumeSensors(script);
|
|
114
|
+
resumeTargets(script);
|
|
115
|
+
}
|
|
116
|
+
this.broadcastAttach(avatar);
|
|
117
|
+
}
|
|
118
|
+
/** Detach into inventory, preserving script state and the remembered point. */
|
|
119
|
+
detachFromAvatar() {
|
|
120
|
+
if (!this.attachment)
|
|
121
|
+
return;
|
|
122
|
+
this.deleteAfterDetach = this.attachment.temporary;
|
|
123
|
+
this.attachment = null;
|
|
124
|
+
const index = this.peers.indexOf(this);
|
|
125
|
+
if (index >= 0)
|
|
126
|
+
this.peers.splice(index, 1);
|
|
127
|
+
// A detached object leaves region queries and recurring timers. The final
|
|
128
|
+
// attach event still runs from the shared clock's explicit event queue.
|
|
129
|
+
for (const script of this.allScripts()) {
|
|
130
|
+
pauseSensors(script);
|
|
131
|
+
pauseTargets(script);
|
|
132
|
+
this.clock.purgeTarget(script);
|
|
133
|
+
}
|
|
134
|
+
this.broadcastAttach(NULL_KEY);
|
|
135
|
+
this.finishTemporaryDetach();
|
|
136
|
+
}
|
|
137
|
+
finishTemporaryDetach() {
|
|
138
|
+
if (!this.deleteAfterDetach || this.allScripts().some(s => s.running && s.wakeAt === undefined && this.clock.hasPending(s, 'attach')))
|
|
139
|
+
return;
|
|
140
|
+
this.deleteAfterDetach = false;
|
|
141
|
+
this.remove();
|
|
142
|
+
}
|
|
143
|
+
broadcastAttach(avatar) {
|
|
144
|
+
for (const script of this.allScripts()) {
|
|
145
|
+
if (script.running && !script.dead)
|
|
146
|
+
this.clock.schedule(script, this.clock.now, 'attach', { avatar });
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/** Snapshot an inventory object, or instantiate it in the rezzer's world. */
|
|
150
|
+
copy(opts = {}, from) {
|
|
151
|
+
const copy = new Linkset({ owner: this.owner, animesh: this.animesh, ...opts }, from);
|
|
152
|
+
copy.lastAttachmentPoint = this.lastAttachmentPoint;
|
|
153
|
+
for (const source of this.prims) {
|
|
154
|
+
const prim = copy.addPrim(new Prim({ name: source.name }));
|
|
155
|
+
for (const [name, value] of Object.entries(source)) {
|
|
156
|
+
if (['key', 'linkset', 'linkNumber', 'createdAt', 'scripts', 'inventory', 'keyframedMotion'].includes(name))
|
|
157
|
+
continue;
|
|
158
|
+
Object.assign(prim, { [name]: structuredClone(value) });
|
|
159
|
+
}
|
|
160
|
+
// In-world: scripted derez retains motion; copy only its data, never live callbacks.
|
|
161
|
+
prim.keyframedMotion = source.keyframedMotion?.copyTo(prim, copy.clock) ?? null;
|
|
162
|
+
for (const item of source.inventory) {
|
|
163
|
+
if (item.script) {
|
|
164
|
+
const script = item.script.copyTo(prim);
|
|
165
|
+
Object.assign(prim.inventory.at(-1), { ...item, permMask: { ...item.permMask }, script });
|
|
166
|
+
}
|
|
167
|
+
else
|
|
168
|
+
prim.addInventory({ ...item, permMask: { ...item.permMask } });
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
for (const [key, value] of this.linksetData)
|
|
172
|
+
copy.linksetData.set(key, { ...value });
|
|
173
|
+
return copy;
|
|
174
|
+
}
|
|
175
|
+
/** Remove the object and cancel all its scripts, including sleeping handlers. */
|
|
176
|
+
remove() {
|
|
177
|
+
if (this.dead)
|
|
178
|
+
return;
|
|
179
|
+
this.dead = true;
|
|
180
|
+
for (const script of this.allScripts()) {
|
|
181
|
+
script.markDead();
|
|
182
|
+
this.clock.purgeTarget(script);
|
|
183
|
+
}
|
|
184
|
+
const index = this.peers.indexOf(this);
|
|
185
|
+
if (index >= 0)
|
|
186
|
+
this.peers.splice(index, 1);
|
|
187
|
+
this.world?.sensorProperties.delete(this);
|
|
188
|
+
}
|
|
189
|
+
/** Temporary status belongs to the whole object; repeated TRUE keeps its deadline. */
|
|
190
|
+
setTemporary(temporary) {
|
|
191
|
+
for (const prim of this.prims)
|
|
192
|
+
prim.params.tempOnRez = temporary;
|
|
193
|
+
if (temporary)
|
|
194
|
+
this.expiresAt ??= this.clock.now + 60000;
|
|
195
|
+
else
|
|
196
|
+
this.expiresAt = undefined;
|
|
197
|
+
}
|
|
58
198
|
recomputeLinkNumbers() {
|
|
59
199
|
if (this.prims.length === 1) {
|
|
60
200
|
// LSL: a lone unlinked prim reports linkNumber 0.
|
|
@@ -65,6 +205,111 @@ export class Linkset {
|
|
|
65
205
|
this.prims[i].linkNumber = i + 1;
|
|
66
206
|
}
|
|
67
207
|
}
|
|
208
|
+
/**
|
|
209
|
+
* llCreateLink: link `other`'s prims in from link 2, behind this linkset's
|
|
210
|
+
* root, each staying where it is. The root's linkset data stays and keys
|
|
211
|
+
* only `other` holds move over; `other` is left empty and leaves its world.
|
|
212
|
+
* Every script in the result gets changed(CHANGED_LINK).
|
|
213
|
+
*/
|
|
214
|
+
absorb(other) {
|
|
215
|
+
if (other !== this) {
|
|
216
|
+
// In-world: linking a mover as a child stops it but retains frames for play after unlink.
|
|
217
|
+
other.prims[0]?.keyframedMotion?.command(KFM_CMD_STOP);
|
|
218
|
+
this.place([this.prims[0], ...other.prims, ...this.prims.slice(1)]);
|
|
219
|
+
mergeLinksetData(this.linksetData, other.linksetData);
|
|
220
|
+
other.prims.length = 0;
|
|
221
|
+
other.linksetData.clear();
|
|
222
|
+
other.peers.splice(other.peers.indexOf(other), 1);
|
|
223
|
+
}
|
|
224
|
+
this.raiseLinkChanged(this.prims);
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* llBreakLink: take `prim` out into a linkset of its own. The root prim
|
|
228
|
+
* keeps the linkset data; when `prim` is the root, the rest stay linked
|
|
229
|
+
* under the next prim with no data. Every prim of both parts gets
|
|
230
|
+
* changed(CHANGED_LINK). A lone prim is left alone.
|
|
231
|
+
*/
|
|
232
|
+
breakOff(prim) {
|
|
233
|
+
if (this.prims.length < 2)
|
|
234
|
+
return;
|
|
235
|
+
const rest = this.prims.filter((p) => p !== prim);
|
|
236
|
+
const all = [...this.prims];
|
|
237
|
+
if (prim === this.prims[0]) {
|
|
238
|
+
this.splitOff(rest);
|
|
239
|
+
this.place([prim]);
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
this.splitOff([prim]);
|
|
243
|
+
this.place(rest);
|
|
244
|
+
}
|
|
245
|
+
this.raiseLinkChanged(all);
|
|
246
|
+
}
|
|
247
|
+
/** llBreakAllLinks: break every prim apart; each gets changed(CHANGED_LINK). */
|
|
248
|
+
breakAll() {
|
|
249
|
+
if (this.prims.length < 2)
|
|
250
|
+
return;
|
|
251
|
+
const all = [...this.prims];
|
|
252
|
+
for (const p of all.slice(1))
|
|
253
|
+
this.splitOff([p]);
|
|
254
|
+
this.place([all[0]]);
|
|
255
|
+
this.raiseLinkChanged(all);
|
|
256
|
+
}
|
|
257
|
+
/** Move `prims` into a new linkset in this one's world and region, with no linkset data. */
|
|
258
|
+
splitOff(prims) {
|
|
259
|
+
const opts = {
|
|
260
|
+
owner: this.owner,
|
|
261
|
+
startParameter: this.startParameter,
|
|
262
|
+
startString: this.startString,
|
|
263
|
+
};
|
|
264
|
+
if (this.world)
|
|
265
|
+
opts.world = this.world;
|
|
266
|
+
if (this.region !== undefined)
|
|
267
|
+
opts.region = this.region;
|
|
268
|
+
new Linkset(opts, this).place(prims);
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Make `prims` this linkset's prims, the first as root, keeping each prim
|
|
272
|
+
* at its region position and rotation.
|
|
273
|
+
*/
|
|
274
|
+
place(prims) {
|
|
275
|
+
const placed = prims.map((p) => ({ p, pos: p.regionPosition(), rot: p.regionRotation() }));
|
|
276
|
+
this.prims.splice(0, this.prims.length, ...prims);
|
|
277
|
+
const root = placed[0];
|
|
278
|
+
const inverse = conjugate(root.rot);
|
|
279
|
+
for (const { p, pos, rot } of placed) {
|
|
280
|
+
p.linkset = this;
|
|
281
|
+
if (p === root.p) {
|
|
282
|
+
p.params.position = pos;
|
|
283
|
+
p.params.rotation = rot;
|
|
284
|
+
}
|
|
285
|
+
else {
|
|
286
|
+
const offset = { x: pos.x - root.pos.x, y: pos.y - root.pos.y, z: pos.z - root.pos.z };
|
|
287
|
+
p.params.position = rotateVector(offset, inverse);
|
|
288
|
+
p.params.rotation = mulRotation(rot, inverse);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
this.recomputeLinkNumbers();
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Queue changed(CHANGED_LINK) on every script in `prims`. As in Second
|
|
295
|
+
* Life, a stopped script never gets it, and a script skips it while one
|
|
296
|
+
* queued since it last started or woke is still waiting, or while two are.
|
|
297
|
+
*/
|
|
298
|
+
raiseLinkChanged(prims) {
|
|
299
|
+
const pending = this.clock
|
|
300
|
+
.pendingEvents()
|
|
301
|
+
.filter((e) => e.event === 'changed' && e.payload['changes'] === CHANGED_LINK);
|
|
302
|
+
for (const p of prims) {
|
|
303
|
+
for (const s of p.scripts) {
|
|
304
|
+
if (!s.running)
|
|
305
|
+
continue;
|
|
306
|
+
const waiting = pending.filter((e) => e.target === s);
|
|
307
|
+
if (waiting.length >= 2 || waiting.some((e) => e.at >= s.resumedAt))
|
|
308
|
+
continue;
|
|
309
|
+
this.clock.schedule(s, this.clock.now, 'changed', { changes: CHANGED_LINK });
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
}
|
|
68
313
|
/** Flat list of every script in every prim, in prim/inventory order. */
|
|
69
314
|
allScripts() {
|
|
70
315
|
const out = [];
|
|
@@ -120,8 +365,9 @@ export class Linkset {
|
|
|
120
365
|
/**
|
|
121
366
|
* Send a `link_message` according to LSL fan-out semantics.
|
|
122
367
|
* `senderLink` is the calling prim's link number; the event payload's
|
|
123
|
-
* `sender_num` is set to that value.
|
|
124
|
-
*
|
|
368
|
+
* `sender_num` is set to that value. Scripts that are not running never
|
|
369
|
+
* get the message. The capture array on the linkset records every
|
|
370
|
+
* invocation for cross-script test assertions.
|
|
125
371
|
*/
|
|
126
372
|
deliverLinkMessage(senderLink, target, num, str, id) {
|
|
127
373
|
this.linkedMessages.push({ target, num, str, id });
|
|
@@ -129,7 +375,8 @@ export class Linkset {
|
|
|
129
375
|
const at = this.clock.now;
|
|
130
376
|
for (const p of targets) {
|
|
131
377
|
for (const s of p.scripts) {
|
|
132
|
-
|
|
378
|
+
if (s.running)
|
|
379
|
+
this.clock.schedule(s, at, 'link_message', { sender_num: senderLink, num, str, id });
|
|
133
380
|
}
|
|
134
381
|
}
|
|
135
382
|
}
|
|
@@ -139,10 +386,7 @@ export class Linkset {
|
|
|
139
386
|
* available for the single-script case (delivers only to that script).
|
|
140
387
|
*/
|
|
141
388
|
deliverChat(opts) {
|
|
142
|
-
|
|
143
|
-
s.matchChatListens(opts);
|
|
144
|
-
}
|
|
145
|
-
this.drainQueue();
|
|
389
|
+
this.settle(this.allScripts().filter((s) => s.matchChatListens(opts) && s.handles('listen')));
|
|
146
390
|
}
|
|
147
391
|
/**
|
|
148
392
|
* Queue chat a script in prim `from` sent on the listens of every prim it
|
|
@@ -155,20 +399,98 @@ export class Linkset {
|
|
|
155
399
|
const origin = this.globalPosition(from);
|
|
156
400
|
const range = CHAT_RANGE[type] ?? 0;
|
|
157
401
|
const reaches = (linkset, p) => {
|
|
402
|
+
if (p === from)
|
|
403
|
+
return false;
|
|
158
404
|
if (type === 'regionSay')
|
|
159
405
|
return linkset.region === this.region;
|
|
160
406
|
if (type === 'regionSayTo')
|
|
161
407
|
return linkset.region === this.region && to !== NULL_KEY && p.key === to;
|
|
162
408
|
return distanceSquared(origin, linkset.globalPosition(p)) <= range * range;
|
|
163
409
|
};
|
|
164
|
-
|
|
410
|
+
this.broadcast(reaches, { channel, name: from.name, key: from.key, message });
|
|
411
|
+
}
|
|
412
|
+
/**
|
|
413
|
+
* Queue an avatar's dialog answer on the listens of every prim within
|
|
414
|
+
* 20 m of `from`, the prim that showed the dialog, including `from`
|
|
415
|
+
* itself. Returns the scripts that matched.
|
|
416
|
+
*/
|
|
417
|
+
routeAvatarChat(from, chat) {
|
|
418
|
+
const origin = this.globalPosition(from);
|
|
419
|
+
const range = CHAT_RANGE.say;
|
|
420
|
+
return this.broadcast((linkset, p) => distanceSquared(origin, linkset.globalPosition(p)) <= range * range, chat);
|
|
421
|
+
}
|
|
422
|
+
broadcast(reaches, chat) {
|
|
423
|
+
const matched = [];
|
|
424
|
+
for (const linkset of this.peers) {
|
|
165
425
|
for (const p of linkset.prims) {
|
|
166
|
-
if (
|
|
426
|
+
if (!reaches(linkset, p))
|
|
167
427
|
continue;
|
|
168
428
|
for (const s of p.scripts)
|
|
169
|
-
s.matchChatListens(
|
|
429
|
+
if (s.matchChatListens(chat))
|
|
430
|
+
matched.push(s);
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
return matched;
|
|
434
|
+
}
|
|
435
|
+
/**
|
|
436
|
+
* Click link `link` as an avatar. Each script in that prim gets
|
|
437
|
+
* `touch_start`, `touch` and `touch_end`, if it handles them. The click
|
|
438
|
+
* also reaches the root's scripts when the prim set PASS_ALWAYS, or when
|
|
439
|
+
* no running script in it handles any touch event and it did not set
|
|
440
|
+
* PASS_NEVER. In every receiver llDetectedLinkNumber is `link` and
|
|
441
|
+
* llDetectedTouchFace is `face`. `touch_end` is queued `hold` ms after
|
|
442
|
+
* the click, only for receivers still running then; `touch` fires once,
|
|
443
|
+
* right after `touch_start`.
|
|
444
|
+
*/
|
|
445
|
+
touch(link, opts = {}) {
|
|
446
|
+
const prim = this.prims.length === 1 && (link === 0 || link === LINK_ROOT)
|
|
447
|
+
? this.prims[0]
|
|
448
|
+
: this.prims.find((p) => p.linkNumber === link);
|
|
449
|
+
if (!prim)
|
|
450
|
+
throw new Error(`touch: no prim with link number ${link}`);
|
|
451
|
+
const root = this.prims[0];
|
|
452
|
+
for (const s of new Set([...prim.scripts, ...root.scripts]))
|
|
453
|
+
if (s.running)
|
|
454
|
+
s.start();
|
|
455
|
+
const handlers = (p) => p.scripts.filter((s) => s.running && !s.dead && TOUCH_EVENTS.some((e) => s.handles(e)));
|
|
456
|
+
const receivers = handlers(prim);
|
|
457
|
+
const pass = prim.params.passTouches;
|
|
458
|
+
if (prim !== root && (pass === PASS_ALWAYS || (pass !== PASS_NEVER && receivers.length === 0))) {
|
|
459
|
+
receivers.push(...handlers(root));
|
|
460
|
+
}
|
|
461
|
+
const avatar = opts.avatar ?? { key: this.owner, name: '' };
|
|
462
|
+
const detected = [
|
|
463
|
+
{
|
|
464
|
+
...avatar,
|
|
465
|
+
linkNumber: prim.linkNumber,
|
|
466
|
+
touchFace: opts.face ?? 0,
|
|
467
|
+
...(opts.st && { touchST: opts.st }),
|
|
468
|
+
...(opts.uv && { touchUV: opts.uv }),
|
|
469
|
+
},
|
|
470
|
+
];
|
|
471
|
+
// Under llMinEventDelay a script holds one waiting click; it drops the others.
|
|
472
|
+
const dropped = new Set(receivers.filter((s) => s.clockView.minEventDelayMs > 0 && this.clock.hasPending(s, 'touch_start')));
|
|
473
|
+
const queue = (events) => {
|
|
474
|
+
for (const s of receivers) {
|
|
475
|
+
if (dropped.has(s))
|
|
476
|
+
continue;
|
|
477
|
+
if (!s.running || s.dead)
|
|
478
|
+
continue;
|
|
479
|
+
for (const e of events) {
|
|
480
|
+
if (s.handles(e))
|
|
481
|
+
this.clock.schedule(s, this.clock.now, e, { num_detected: 1, detected });
|
|
482
|
+
}
|
|
170
483
|
}
|
|
484
|
+
};
|
|
485
|
+
if (opts.hold) {
|
|
486
|
+
queue(['touch_start', 'touch']);
|
|
487
|
+
this.advanceTime(opts.hold);
|
|
488
|
+
queue(['touch_end']);
|
|
171
489
|
}
|
|
490
|
+
else {
|
|
491
|
+
queue(TOUCH_EVENTS);
|
|
492
|
+
}
|
|
493
|
+
this.settle(receivers);
|
|
172
494
|
}
|
|
173
495
|
globalPosition(prim) {
|
|
174
496
|
const p = prim.regionPosition();
|
|
@@ -182,7 +504,8 @@ export class Linkset {
|
|
|
182
504
|
* due across the linkset, or its whole world, dispatching each to its
|
|
183
505
|
* target script. The clock steps to each
|
|
184
506
|
* event's due time before its handler runs, so handlers see the time the
|
|
185
|
-
* event fired rather than the end of the window.
|
|
507
|
+
* event fired rather than the end of the window. The clock ends exactly
|
|
508
|
+
* `ms` later; a handler sleeping past that stays asleep until a later advance.
|
|
186
509
|
*/
|
|
187
510
|
advanceTime(ms) {
|
|
188
511
|
if (ms < 0)
|
|
@@ -192,34 +515,83 @@ export class Linkset {
|
|
|
192
515
|
if (this.clock.now < until)
|
|
193
516
|
this.clock.now = until;
|
|
194
517
|
}
|
|
518
|
+
/**
|
|
519
|
+
* Finish the handlers already active or queued on `scripts`, including
|
|
520
|
+
* their reset/state-change chains. Future recurring events do not extend
|
|
521
|
+
* this call indefinitely; tests run those with advanceTime.
|
|
522
|
+
*/
|
|
523
|
+
settle(scripts) {
|
|
524
|
+
const pending = this.clock.pendingEvents();
|
|
525
|
+
const goals = scripts.map(script => ({
|
|
526
|
+
script,
|
|
527
|
+
completed: script.clockView.completedHandlers + Number(script.wakeAt !== undefined) +
|
|
528
|
+
pending.filter(e => e.target === script && e.at <= this.clock.now && script.handles(e.event)).length,
|
|
529
|
+
}));
|
|
530
|
+
this.drainQueue();
|
|
531
|
+
for (;;) {
|
|
532
|
+
let at = Infinity;
|
|
533
|
+
for (const { script, completed } of goals) {
|
|
534
|
+
// Inventory suspends sleeping detach handlers until the object is worn
|
|
535
|
+
// again. They cannot complete as goals of this settling call.
|
|
536
|
+
if (script.running && script.linkset.peers.includes(script.linkset) &&
|
|
537
|
+
script.clockView.completedHandlers < completed && script.wakeAt !== undefined) {
|
|
538
|
+
at = Math.min(at, script.wakeAt);
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
if (at === Infinity)
|
|
542
|
+
return;
|
|
543
|
+
this.drainQueue(at);
|
|
544
|
+
}
|
|
545
|
+
}
|
|
195
546
|
/**
|
|
196
547
|
* Drain due events in chronological order. Each event is delivered to
|
|
197
548
|
* its target script via `script.deliver(event, payload)`. If a handler
|
|
198
549
|
* triggers more events (timers, chained chats, …) they may become due
|
|
199
550
|
* inside this loop and are picked up in the next iteration.
|
|
200
551
|
*
|
|
201
|
-
*
|
|
202
|
-
*
|
|
203
|
-
* builtin); when it happens, the new script's events are simply picked
|
|
204
|
-
* up on the next outer drain. Worth-the-trade for avoiding an O(scripts)
|
|
205
|
-
* allocation per event.
|
|
552
|
+
* Refresh the script roster for each event: a handler may rez or remove
|
|
553
|
+
* an object, changing which scripts can wake on this drain.
|
|
206
554
|
*/
|
|
207
555
|
drainQueue(until = this.clock.now) {
|
|
208
|
-
const scripts = this.world?.allScripts() ?? this.allScripts();
|
|
209
|
-
if (scripts.length === 0)
|
|
210
|
-
return;
|
|
211
556
|
while (true) {
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
557
|
+
flushDamageEvents(this.clock);
|
|
558
|
+
const scripts = this.peers.flatMap((l) => l.allScripts());
|
|
559
|
+
const horizon = Math.max(until, this.clock.now);
|
|
560
|
+
let expiry = Infinity;
|
|
561
|
+
for (const linkset of this.peers) {
|
|
562
|
+
if (!linkset.prims[0]?.params.tempOnRez)
|
|
563
|
+
linkset.expiresAt = undefined;
|
|
564
|
+
else {
|
|
565
|
+
linkset.expiresAt ??= this.clock.now + 60000;
|
|
566
|
+
expiry = Math.min(expiry, linkset.expiresAt);
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
const next = this.clock.takeNextDue(scripts, Math.min(horizon, expiry));
|
|
570
|
+
if (!next) {
|
|
571
|
+
if (expiry > horizon)
|
|
572
|
+
return;
|
|
573
|
+
this.clock.now = Math.max(this.clock.now, expiry);
|
|
574
|
+
for (const linkset of [...this.peers]) {
|
|
575
|
+
if (linkset.expiresAt !== undefined && linkset.expiresAt <= this.clock.now)
|
|
576
|
+
linkset.remove();
|
|
577
|
+
}
|
|
578
|
+
continue;
|
|
579
|
+
}
|
|
215
580
|
if (next.at > this.clock.now)
|
|
216
581
|
this.clock.now = next.at;
|
|
217
582
|
const target = next.target;
|
|
218
583
|
if (target.dead)
|
|
219
584
|
continue;
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
585
|
+
if (next.event === '__wake') {
|
|
586
|
+
// A simulator task may have detached this object after the clock
|
|
587
|
+
// captured its script roster. Inventory must not resume the handler.
|
|
588
|
+
if (target.linkset.peers.includes(target.linkset))
|
|
589
|
+
target.wake();
|
|
590
|
+
continue;
|
|
591
|
+
}
|
|
592
|
+
// `__reset` (from llResetOtherScript) was requested while the target
|
|
593
|
+
// was running, so it applies even if the target was stopped since; the
|
|
594
|
+
// target just stays stopped afterward.
|
|
223
595
|
if (!target.running && next.event !== '__reset') {
|
|
224
596
|
// Park for replay when the script is re-enabled. A paused script
|
|
225
597
|
// must not block other scripts' events, so we stash on the script
|
|
@@ -230,6 +602,7 @@ export class Linkset {
|
|
|
230
602
|
// ResetScriptSignal is caught inside `Script.runHandler`; it never
|
|
231
603
|
// bubbles up to here, so no try/catch is needed.
|
|
232
604
|
target.deliver(next.event, next.payload);
|
|
605
|
+
target.linkset.finishTemporaryDetach();
|
|
233
606
|
}
|
|
234
607
|
}
|
|
235
608
|
}
|
package/dist/linkset.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linkset.js","sourceRoot":"","sources":["../src/linkset.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"linkset.js","sourceRoot":"","sources":["../src/linkset.ts"],"names":[],"mappings":"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"}
|
package/dist/memory.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import type { FunctionDeclaration, Script as Ast } from '@rezless/parser';
|
|
2
2
|
import type { LslType, LslValue } from './values/types.js';
|
|
3
|
-
/** A fatal
|
|
4
|
-
export declare class
|
|
3
|
+
/** A fatal run-time error: the script reports it and halts. */
|
|
4
|
+
export declare class RuntimeError extends Error {
|
|
5
5
|
reported: boolean;
|
|
6
|
+
}
|
|
7
|
+
/** A fatal Stack-Heap Collision: the script ran out of memory. */
|
|
8
|
+
export declare class StackHeapCollision extends RuntimeError {
|
|
6
9
|
constructor();
|
|
7
10
|
}
|
|
8
11
|
/**
|
package/dist/memory.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,mBAAmB,EAAE,MAAM,IAAI,GAAG,EAAa,MAAM,iBAAiB,CAAA;AAChG,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAc1D
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,mBAAmB,EAAE,MAAM,IAAI,GAAG,EAAa,MAAM,iBAAiB,CAAA;AAChG,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAc1D,+DAA+D;AAC/D,qBAAa,YAAa,SAAQ,KAAK;IACrC,QAAQ,UAAQ;CACjB;AAED,kEAAkE;AAClE,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,cAGC;CACF;AAED;;;;GAIG;AACH,qBAAa,MAAM;IAYf,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAX3B,KAAK,SAAa;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,SAAI;IACR,SAAS,UAAQ;IACjB,qCAAqC;IACrC,MAAM,SAAI;IACV,OAAO,CAAC,KAAK,CAAI;IACjB,OAAO,CAAC,cAAc,CAAI;IAE1B,YACE,IAAI,EAAE,MAAM,EACK,QAAQ,EAAE,OAAO,EAGnC;IAED,6EAA6E;IAC7E,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAKzB;IAED,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAG9B;IAED,6DAA6D;IAC7D,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAGhC;IAED,0FAA0F;IAC1F,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAO7B;IAED,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAE5B;IAED,yGAAyG;IACzG,UAAU,IAAI,IAAI,CAGjB;IAED,YAAY,IAAI,IAAI,CAGnB;IAED,wEAAwE;IACxE,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAI/B;IAED,cAAc,IAAI,IAAI,CAGrB;CACF;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,mBAAmB,GAAG,MAAM,CAO1D;AAmCD,qDAAqD;AACrD,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,GAAG,MAAM,CAelE;AAED,wEAAwE;AACxE,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,MAAM,CAU/D;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAQ1C"}
|
package/dist/memory.js
CHANGED
|
@@ -6,9 +6,12 @@ const SCRIPT_BASE = 292;
|
|
|
6
6
|
const CODE_BLOCK = 512;
|
|
7
7
|
const FRAME_BYTES = 46;
|
|
8
8
|
const LIST_HEADER = 36;
|
|
9
|
-
/** A fatal
|
|
10
|
-
export class
|
|
9
|
+
/** A fatal run-time error: the script reports it and halts. */
|
|
10
|
+
export class RuntimeError extends Error {
|
|
11
11
|
reported = false;
|
|
12
|
+
}
|
|
13
|
+
/** A fatal Stack-Heap Collision: the script ran out of memory. */
|
|
14
|
+
export class StackHeapCollision extends RuntimeError {
|
|
12
15
|
constructor() {
|
|
13
16
|
super('Stack-Heap Collision');
|
|
14
17
|
this.name = 'StackHeapCollision';
|