@rezless/vm 0.1.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.
Files changed (175) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +32 -0
  3. package/dist/builtins/base64.d.ts +25 -0
  4. package/dist/builtins/base64.d.ts.map +1 -0
  5. package/dist/builtins/base64.js +43 -0
  6. package/dist/builtins/base64.js.map +1 -0
  7. package/dist/builtins/chat.d.ts +10 -0
  8. package/dist/builtins/chat.d.ts.map +1 -0
  9. package/dist/builtins/chat.js +36 -0
  10. package/dist/builtins/chat.js.map +1 -0
  11. package/dist/builtins/dataserver.d.ts +26 -0
  12. package/dist/builtins/dataserver.d.ts.map +1 -0
  13. package/dist/builtins/dataserver.js +20 -0
  14. package/dist/builtins/dataserver.js.map +1 -0
  15. package/dist/builtins/detected.d.ts +40 -0
  16. package/dist/builtins/detected.d.ts.map +1 -0
  17. package/dist/builtins/detected.js +23 -0
  18. package/dist/builtins/detected.js.map +1 -0
  19. package/dist/builtins/hash.d.ts +6 -0
  20. package/dist/builtins/hash.d.ts.map +1 -0
  21. package/dist/builtins/hash.js +34 -0
  22. package/dist/builtins/hash.js.map +1 -0
  23. package/dist/builtins/http.d.ts +40 -0
  24. package/dist/builtins/http.d.ts.map +1 -0
  25. package/dist/builtins/http.js +87 -0
  26. package/dist/builtins/http.js.map +1 -0
  27. package/dist/builtins/identity.d.ts +14 -0
  28. package/dist/builtins/identity.d.ts.map +1 -0
  29. package/dist/builtins/identity.js +17 -0
  30. package/dist/builtins/identity.js.map +1 -0
  31. package/dist/builtins/index.d.ts +8 -0
  32. package/dist/builtins/index.d.ts.map +1 -0
  33. package/dist/builtins/index.js +232 -0
  34. package/dist/builtins/index.js.map +1 -0
  35. package/dist/builtins/inventory.d.ts +33 -0
  36. package/dist/builtins/inventory.d.ts.map +1 -0
  37. package/dist/builtins/inventory.js +134 -0
  38. package/dist/builtins/inventory.js.map +1 -0
  39. package/dist/builtins/json.d.ts +7 -0
  40. package/dist/builtins/json.d.ts.map +1 -0
  41. package/dist/builtins/json.js +690 -0
  42. package/dist/builtins/json.js.map +1 -0
  43. package/dist/builtins/link-info.d.ts +10 -0
  44. package/dist/builtins/link-info.d.ts.map +1 -0
  45. package/dist/builtins/link-info.js +26 -0
  46. package/dist/builtins/link-info.js.map +1 -0
  47. package/dist/builtins/linked.d.ts +23 -0
  48. package/dist/builtins/linked.d.ts.map +1 -0
  49. package/dist/builtins/linked.js +20 -0
  50. package/dist/builtins/linked.js.map +1 -0
  51. package/dist/builtins/linksetdata.d.ts +20 -0
  52. package/dist/builtins/linksetdata.d.ts.map +1 -0
  53. package/dist/builtins/linksetdata.js +196 -0
  54. package/dist/builtins/linksetdata.js.map +1 -0
  55. package/dist/builtins/listen.d.ts +33 -0
  56. package/dist/builtins/listen.d.ts.map +1 -0
  57. package/dist/builtins/listen.js +45 -0
  58. package/dist/builtins/listen.js.map +1 -0
  59. package/dist/builtins/lists.d.ts +37 -0
  60. package/dist/builtins/lists.d.ts.map +1 -0
  61. package/dist/builtins/lists.js +275 -0
  62. package/dist/builtins/lists.js.map +1 -0
  63. package/dist/builtins/math.d.ts +32 -0
  64. package/dist/builtins/math.d.ts.map +1 -0
  65. package/dist/builtins/math.js +104 -0
  66. package/dist/builtins/math.js.map +1 -0
  67. package/dist/builtins/object.d.ts +29 -0
  68. package/dist/builtins/object.d.ts.map +1 -0
  69. package/dist/builtins/object.js +50 -0
  70. package/dist/builtins/object.js.map +1 -0
  71. package/dist/builtins/prim-accessors.d.ts +56 -0
  72. package/dist/builtins/prim-accessors.d.ts.map +1 -0
  73. package/dist/builtins/prim-accessors.js +353 -0
  74. package/dist/builtins/prim-accessors.js.map +1 -0
  75. package/dist/builtins/prim-params.d.ts +12 -0
  76. package/dist/builtins/prim-params.d.ts.map +1 -0
  77. package/dist/builtins/prim-params.js +124 -0
  78. package/dist/builtins/prim-params.js.map +1 -0
  79. package/dist/builtins/script-control.d.ts +13 -0
  80. package/dist/builtins/script-control.d.ts.map +1 -0
  81. package/dist/builtins/script-control.js +41 -0
  82. package/dist/builtins/script-control.js.map +1 -0
  83. package/dist/builtins/strings.d.ts +23 -0
  84. package/dist/builtins/strings.d.ts.map +1 -0
  85. package/dist/builtins/strings.js +130 -0
  86. package/dist/builtins/strings.js.map +1 -0
  87. package/dist/builtins/time.d.ts +28 -0
  88. package/dist/builtins/time.d.ts.map +1 -0
  89. package/dist/builtins/time.js +54 -0
  90. package/dist/builtins/time.js.map +1 -0
  91. package/dist/clock.d.ts +75 -0
  92. package/dist/clock.d.ts.map +1 -0
  93. package/dist/clock.js +125 -0
  94. package/dist/clock.js.map +1 -0
  95. package/dist/coverage.d.ts +110 -0
  96. package/dist/coverage.d.ts.map +1 -0
  97. package/dist/coverage.js +221 -0
  98. package/dist/coverage.js.map +1 -0
  99. package/dist/dispatch.d.ts +19 -0
  100. package/dist/dispatch.d.ts.map +1 -0
  101. package/dist/dispatch.js +42 -0
  102. package/dist/dispatch.js.map +1 -0
  103. package/dist/env.d.ts +33 -0
  104. package/dist/env.d.ts.map +1 -0
  105. package/dist/env.js +76 -0
  106. package/dist/env.js.map +1 -0
  107. package/dist/generated/constants.d.ts +967 -0
  108. package/dist/generated/constants.d.ts.map +1 -0
  109. package/dist/generated/constants.js +969 -0
  110. package/dist/generated/constants.js.map +1 -0
  111. package/dist/generated/constants_table.d.ts +11 -0
  112. package/dist/generated/constants_table.d.ts.map +1 -0
  113. package/dist/generated/constants_table.js +978 -0
  114. package/dist/generated/constants_table.js.map +1 -0
  115. package/dist/generated/events.d.ts +545 -0
  116. package/dist/generated/events.d.ts.map +1 -0
  117. package/dist/generated/events.js +49 -0
  118. package/dist/generated/events.js.map +1 -0
  119. package/dist/generated/functions.d.ts +6051 -0
  120. package/dist/generated/functions.d.ts.map +1 -0
  121. package/dist/generated/functions.js +526 -0
  122. package/dist/generated/functions.js.map +1 -0
  123. package/dist/index.d.ts +21 -0
  124. package/dist/index.d.ts.map +1 -0
  125. package/dist/index.js +11 -0
  126. package/dist/index.js.map +1 -0
  127. package/dist/interpreter.d.ts +39 -0
  128. package/dist/interpreter.d.ts.map +1 -0
  129. package/dist/interpreter.js +381 -0
  130. package/dist/interpreter.js.map +1 -0
  131. package/dist/inventory.d.ts +52 -0
  132. package/dist/inventory.d.ts.map +1 -0
  133. package/dist/inventory.js +45 -0
  134. package/dist/inventory.js.map +1 -0
  135. package/dist/linkset.d.ts +89 -0
  136. package/dist/linkset.d.ts.map +1 -0
  137. package/dist/linkset.js +179 -0
  138. package/dist/linkset.js.map +1 -0
  139. package/dist/prim-params.d.ts +221 -0
  140. package/dist/prim-params.d.ts.map +1 -0
  141. package/dist/prim-params.js +852 -0
  142. package/dist/prim-params.js.map +1 -0
  143. package/dist/prim.d.ts +79 -0
  144. package/dist/prim.d.ts.map +1 -0
  145. package/dist/prim.js +96 -0
  146. package/dist/prim.js.map +1 -0
  147. package/dist/random.d.ts +16 -0
  148. package/dist/random.d.ts.map +1 -0
  149. package/dist/random.js +29 -0
  150. package/dist/random.js.map +1 -0
  151. package/dist/runtime.d.ts +108 -0
  152. package/dist/runtime.d.ts.map +1 -0
  153. package/dist/runtime.js +2 -0
  154. package/dist/runtime.js.map +1 -0
  155. package/dist/script.d.ts +248 -0
  156. package/dist/script.d.ts.map +1 -0
  157. package/dist/script.js +667 -0
  158. package/dist/script.js.map +1 -0
  159. package/dist/values/coerce.d.ts +22 -0
  160. package/dist/values/coerce.d.ts.map +1 -0
  161. package/dist/values/coerce.js +184 -0
  162. package/dist/values/coerce.js.map +1 -0
  163. package/dist/values/format.d.ts +20 -0
  164. package/dist/values/format.d.ts.map +1 -0
  165. package/dist/values/format.js +47 -0
  166. package/dist/values/format.js.map +1 -0
  167. package/dist/values/ops.d.ts +19 -0
  168. package/dist/values/ops.d.ts.map +1 -0
  169. package/dist/values/ops.js +345 -0
  170. package/dist/values/ops.js.map +1 -0
  171. package/dist/values/types.d.ts +39 -0
  172. package/dist/values/types.d.ts.map +1 -0
  173. package/dist/values/types.js +68 -0
  174. package/dist/values/types.js.map +1 -0
  175. package/package.json +52 -0
@@ -0,0 +1,345 @@
1
+ import { isVector, isRotation, toInt32, vec, rot, NULL_KEY } from './types.js';
2
+ import { coerce, stringify } from './coerce.js';
3
+ /**
4
+ * Implementations of LSL binary and unary operators with the language's
5
+ * (often surprising) typing rules. Notable LSL quirks:
6
+ * - `+` on lists concatenates / appends / prepends.
7
+ * - `*` and `/` between vectors and rotations do real geometry.
8
+ * - `&&` and `||` are NOT short-circuit (both sides are always evaluated).
9
+ * The interpreter accordingly evaluates both operands before calling here.
10
+ * - Integer arithmetic wraps at 32 bits.
11
+ * - Mixed-type arithmetic promotes int → float when the other side is float.
12
+ */
13
+ export function applyUnary(op, arg) {
14
+ switch (op) {
15
+ case '+':
16
+ if (arg.type === 'integer' || arg.type === 'float')
17
+ return arg;
18
+ if (isVector(arg.value) || isRotation(arg.value))
19
+ return arg;
20
+ throw new Error(`unary '+' not defined for ${arg.type}`);
21
+ case '-':
22
+ if (arg.type === 'integer')
23
+ return { type: 'integer', value: toInt32(-arg.value) };
24
+ if (arg.type === 'float')
25
+ return { type: 'float', value: -arg.value };
26
+ if (isVector(arg.value)) {
27
+ const v = arg.value;
28
+ return { type: 'vector', value: vec(-v.x, -v.y, -v.z) };
29
+ }
30
+ if (isRotation(arg.value)) {
31
+ const r = arg.value;
32
+ return { type: 'rotation', value: rot(-r.x, -r.y, -r.z, -r.s) };
33
+ }
34
+ throw new Error(`unary '-' not defined for ${arg.type}`);
35
+ case '!':
36
+ // LSL: logical not — only valid on integers per the wiki, treat float/key likewise as truthy.
37
+ return { type: 'integer', value: truthy(arg) ? 0 : 1 };
38
+ case '~':
39
+ // Bitwise NOT — integer only.
40
+ if (arg.type === 'integer')
41
+ return { type: 'integer', value: toInt32(~arg.value) };
42
+ throw new Error(`unary '~' not defined for ${arg.type}`);
43
+ }
44
+ }
45
+ export function truthy(r) {
46
+ switch (r.type) {
47
+ case 'integer':
48
+ case 'float':
49
+ return r.value !== 0;
50
+ case 'string':
51
+ return r.value.length > 0;
52
+ case 'key':
53
+ // In LSL, a key is "true" if it is a valid UUID and not NULL_KEY.
54
+ return isValidUuid(r.value);
55
+ case 'vector':
56
+ return !isVectorZero(r.value);
57
+ case 'rotation': {
58
+ // `if (rot)` per LSL: true if the rotation is non-identity.
59
+ const q = r.value;
60
+ return q.x !== 0 || q.y !== 0 || q.z !== 0 || q.s !== 1;
61
+ }
62
+ case 'list':
63
+ return r.value.length > 0;
64
+ case 'void':
65
+ return false;
66
+ }
67
+ }
68
+ function isValidUuid(k) {
69
+ return (/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(k) &&
70
+ k !== NULL_KEY);
71
+ }
72
+ function isVectorZero(v) {
73
+ return v.x === 0 && v.y === 0 && v.z === 0;
74
+ }
75
+ // ---- Binary ----
76
+ export function applyBinary(op, left, right) {
77
+ switch (op) {
78
+ case '+':
79
+ return opAdd(left, right);
80
+ case '-':
81
+ return opSub(left, right);
82
+ case '*':
83
+ return opMul(left, right);
84
+ case '/':
85
+ return opDiv(left, right);
86
+ case '%':
87
+ return opMod(left, right);
88
+ case '<<':
89
+ return intBinary(left, right, (a, b) => toInt32(a << (b & 31)));
90
+ case '>>':
91
+ return intBinary(left, right, (a, b) => toInt32(a >> (b & 31)));
92
+ case '&':
93
+ return intBinary(left, right, (a, b) => toInt32(a & b));
94
+ case '^':
95
+ return intBinary(left, right, (a, b) => toInt32(a ^ b));
96
+ case '|':
97
+ return intBinary(left, right, (a, b) => toInt32(a | b));
98
+ case '&&':
99
+ // NOT short-circuit per LSL — caller has already evaluated both.
100
+ return { type: 'integer', value: truthy(left) && truthy(right) ? 1 : 0 };
101
+ case '||':
102
+ return { type: 'integer', value: truthy(left) || truthy(right) ? 1 : 0 };
103
+ case '<':
104
+ case '>':
105
+ case '<=':
106
+ case '>=':
107
+ return numericCompare(op, left, right);
108
+ case '==':
109
+ return { type: 'integer', value: lslEquals(left, right) ? 1 : 0 };
110
+ case '!=':
111
+ return { type: 'integer', value: lslEquals(left, right) ? 0 : 1 };
112
+ }
113
+ }
114
+ function intBinary(left, right, fn) {
115
+ const a = coerce(left, 'integer').value;
116
+ const b = coerce(right, 'integer').value;
117
+ return { type: 'integer', value: fn(a, b) };
118
+ }
119
+ function numericCompare(op, left, right) {
120
+ const promoted = promoteNumeric(left, right);
121
+ if (!promoted)
122
+ throw new Error(`cannot compare ${left.type} and ${right.type}`);
123
+ const [a, b] = promoted;
124
+ let result;
125
+ switch (op) {
126
+ case '<':
127
+ result = a.value < b.value;
128
+ break;
129
+ case '>':
130
+ result = a.value > b.value;
131
+ break;
132
+ case '<=':
133
+ result = a.value <= b.value;
134
+ break;
135
+ case '>=':
136
+ result = a.value >= b.value;
137
+ break;
138
+ }
139
+ return { type: 'integer', value: result ? 1 : 0 };
140
+ }
141
+ function promoteNumeric(a, b) {
142
+ const aN = a.type === 'integer' || a.type === 'float';
143
+ const bN = b.type === 'integer' || b.type === 'float';
144
+ if (!aN || !bN)
145
+ return null;
146
+ if (a.type === 'float' || b.type === 'float') {
147
+ return [coerce(a, 'float'), coerce(b, 'float')];
148
+ }
149
+ return [a, b];
150
+ }
151
+ /** Strict structural equality with LSL nuances: vectors/rotations compare componentwise; key↔string equate. */
152
+ function lslEquals(a, b) {
153
+ // String/key cross-equality.
154
+ if ((a.type === 'string' || a.type === 'key') && (b.type === 'string' || b.type === 'key')) {
155
+ return a.value === b.value;
156
+ }
157
+ if ((a.type === 'integer' || a.type === 'float') && (b.type === 'integer' || b.type === 'float')) {
158
+ return a.value === b.value;
159
+ }
160
+ if (isVector(a.value) && isVector(b.value)) {
161
+ return a.value.x === b.value.x && a.value.y === b.value.y && a.value.z === b.value.z;
162
+ }
163
+ if (isRotation(a.value) && isRotation(b.value)) {
164
+ return (a.value.x === b.value.x &&
165
+ a.value.y === b.value.y &&
166
+ a.value.z === b.value.z &&
167
+ a.value.s === b.value.s);
168
+ }
169
+ if (a.type === 'list' && b.type === 'list') {
170
+ // LSL: list == list compares LENGTHS, not contents.
171
+ return (a.value.length ===
172
+ b.value.length);
173
+ }
174
+ return false;
175
+ }
176
+ // ---- + ----
177
+ function opAdd(a, b) {
178
+ // String concat
179
+ if (a.type === 'string' && b.type === 'string') {
180
+ return { type: 'string', value: a.value + b.value };
181
+ }
182
+ // List concat / append / prepend
183
+ if (a.type === 'list' || b.type === 'list') {
184
+ const left = a.type === 'list' ? a.value : [a.value];
185
+ const right = b.type === 'list' ? b.value : [b.value];
186
+ return { type: 'list', value: [...left, ...right] };
187
+ }
188
+ // Vector / rotation
189
+ if (isVector(a.value) && isVector(b.value)) {
190
+ return {
191
+ type: 'vector',
192
+ value: vec(a.value.x + b.value.x, a.value.y + b.value.y, a.value.z + b.value.z),
193
+ };
194
+ }
195
+ if (isRotation(a.value) && isRotation(b.value)) {
196
+ return {
197
+ type: 'rotation',
198
+ value: rot(a.value.x + b.value.x, a.value.y + b.value.y, a.value.z + b.value.z, a.value.s + b.value.s),
199
+ };
200
+ }
201
+ // Numeric
202
+ const p = promoteNumeric(a, b);
203
+ if (p) {
204
+ const [x, y] = p;
205
+ if (x.type === 'integer')
206
+ return { type: 'integer', value: toInt32(x.value + y.value) };
207
+ return { type: 'float', value: x.value + y.value };
208
+ }
209
+ throw new Error(`cannot add ${a.type} and ${b.type}`);
210
+ }
211
+ function opSub(a, b) {
212
+ if (isVector(a.value) && isVector(b.value)) {
213
+ return {
214
+ type: 'vector',
215
+ value: vec(a.value.x - b.value.x, a.value.y - b.value.y, a.value.z - b.value.z),
216
+ };
217
+ }
218
+ if (isRotation(a.value) && isRotation(b.value)) {
219
+ return {
220
+ type: 'rotation',
221
+ value: rot(a.value.x - b.value.x, a.value.y - b.value.y, a.value.z - b.value.z, a.value.s - b.value.s),
222
+ };
223
+ }
224
+ const p = promoteNumeric(a, b);
225
+ if (p) {
226
+ const [x, y] = p;
227
+ if (x.type === 'integer')
228
+ return { type: 'integer', value: toInt32(x.value - y.value) };
229
+ return { type: 'float', value: x.value - y.value };
230
+ }
231
+ throw new Error(`cannot subtract ${b.type} from ${a.type}`);
232
+ }
233
+ function opMul(a, b) {
234
+ // vector * vector → dot product (float)
235
+ if (isVector(a.value) && isVector(b.value)) {
236
+ return {
237
+ type: 'float',
238
+ value: a.value.x * b.value.x + a.value.y * b.value.y + a.value.z * b.value.z,
239
+ };
240
+ }
241
+ // vector * float / float * vector → scale
242
+ if (isVector(a.value) && (b.type === 'integer' || b.type === 'float')) {
243
+ const k = b.value;
244
+ return { type: 'vector', value: vec(a.value.x * k, a.value.y * k, a.value.z * k) };
245
+ }
246
+ if ((a.type === 'integer' || a.type === 'float') && isVector(b.value)) {
247
+ const k = a.value;
248
+ return { type: 'vector', value: vec(b.value.x * k, b.value.y * k, b.value.z * k) };
249
+ }
250
+ // vector * rotation → rotate vector
251
+ if (isVector(a.value) && isRotation(b.value)) {
252
+ return { type: 'vector', value: rotateVector(a.value, b.value) };
253
+ }
254
+ // rotation * rotation → quaternion multiply
255
+ if (isRotation(a.value) && isRotation(b.value)) {
256
+ return { type: 'rotation', value: mulRotation(a.value, b.value) };
257
+ }
258
+ // numeric
259
+ const p = promoteNumeric(a, b);
260
+ if (p) {
261
+ const [x, y] = p;
262
+ if (x.type === 'integer')
263
+ return { type: 'integer', value: toInt32(Math.imul(x.value, y.value)) };
264
+ return { type: 'float', value: x.value * y.value };
265
+ }
266
+ throw new Error(`cannot multiply ${a.type} and ${b.type}`);
267
+ }
268
+ function opDiv(a, b) {
269
+ // vector / float
270
+ if (isVector(a.value) && (b.type === 'integer' || b.type === 'float')) {
271
+ const k = b.value;
272
+ if (k === 0)
273
+ throw new Error('Math Error: divide by zero');
274
+ return { type: 'vector', value: vec(a.value.x / k, a.value.y / k, a.value.z / k) };
275
+ }
276
+ // vector / rotation → rotate by inverse
277
+ if (isVector(a.value) && isRotation(b.value)) {
278
+ return { type: 'vector', value: rotateVector(a.value, conjugate(b.value)) };
279
+ }
280
+ // rotation / rotation → multiply by inverse
281
+ if (isRotation(a.value) && isRotation(b.value)) {
282
+ return { type: 'rotation', value: mulRotation(a.value, conjugate(b.value)) };
283
+ }
284
+ // numeric
285
+ const p = promoteNumeric(a, b);
286
+ if (p) {
287
+ const [x, y] = p;
288
+ if (x.type === 'integer') {
289
+ if (y.value === 0)
290
+ throw new Error('Math Error: divide by zero');
291
+ return {
292
+ type: 'integer',
293
+ value: toInt32(Math.trunc(x.value / y.value)),
294
+ };
295
+ }
296
+ if (y.value === 0)
297
+ throw new Error('Math Error: divide by zero');
298
+ return { type: 'float', value: x.value / y.value };
299
+ }
300
+ throw new Error(`cannot divide ${a.type} by ${b.type}`);
301
+ }
302
+ function opMod(a, b) {
303
+ // vector % vector → cross product
304
+ if (isVector(a.value) && isVector(b.value)) {
305
+ const u = a.value;
306
+ const v = b.value;
307
+ return {
308
+ type: 'vector',
309
+ value: vec(u.y * v.z - u.z * v.y, u.z * v.x - u.x * v.z, u.x * v.y - u.y * v.x),
310
+ };
311
+ }
312
+ // numeric (integer modulo only in LSL)
313
+ if ((a.type === 'integer' || a.type === 'float') &&
314
+ (b.type === 'integer' || b.type === 'float')) {
315
+ const x = coerce(a, 'integer').value;
316
+ const y = coerce(b, 'integer').value;
317
+ if (y === 0)
318
+ throw new Error('Math Error: modulo by zero');
319
+ return { type: 'integer', value: toInt32(x % y) };
320
+ }
321
+ throw new Error(`cannot modulo ${a.type} and ${b.type}`);
322
+ }
323
+ // ---- Quaternion math ----
324
+ function mulRotation(a, b) {
325
+ // Hamilton product (LSL convention).
326
+ return rot(a.s * b.x + a.x * b.s + a.y * b.z - a.z * b.y, a.s * b.y - a.x * b.z + a.y * b.s + a.z * b.x, a.s * b.z + a.x * b.y - a.y * b.x + a.z * b.s, a.s * b.s - a.x * b.x - a.y * b.y - a.z * b.z);
327
+ }
328
+ function conjugate(q) {
329
+ return rot(-q.x, -q.y, -q.z, q.s);
330
+ }
331
+ function rotateVector(v, q) {
332
+ // v' = q * v * q⁻¹
333
+ const qv = rot(v.x, v.y, v.z, 0);
334
+ const r = mulRotation(mulRotation(q, qv), conjugate(q));
335
+ return vec(r.x, r.y, r.z);
336
+ }
337
+ /** For interpreter compound-assignment helpers. */
338
+ export function reduceCompound(op, left, right) {
339
+ const binOp = op.slice(0, -1);
340
+ const result = applyBinary(binOp, left, right);
341
+ // Preserve the target's declared type by coercing back.
342
+ return coerce(result, left.type);
343
+ }
344
+ export { coerce, stringify };
345
+ //# sourceMappingURL=ops.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ops.js","sourceRoot":"","sources":["../../src/values/ops.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * LSL value types as represented at runtime.
3
+ *
4
+ * LSL has 7 value types: integer, float, string, key, vector, rotation, list.
5
+ * Internally we use raw JS values (number / string / Vector / Rotation / array)
6
+ * and carry the LSL type tag alongside in `EvalResult`. Tagging the type
7
+ * separately keeps the public boundary (call log, ll* builtin args) simple
8
+ * while still letting arithmetic and coercion know whether a number is an
9
+ * integer or a float.
10
+ */
11
+ export type LslType = 'integer' | 'float' | 'string' | 'key' | 'vector' | 'rotation' | 'list' | 'void';
12
+ export interface Vector {
13
+ readonly x: number;
14
+ readonly y: number;
15
+ readonly z: number;
16
+ }
17
+ export interface Rotation {
18
+ readonly x: number;
19
+ readonly y: number;
20
+ readonly z: number;
21
+ readonly s: number;
22
+ }
23
+ export type LslValue = number | string | Vector | Rotation | ReadonlyArray<LslValue>;
24
+ export interface EvalResult {
25
+ readonly value: LslValue;
26
+ readonly type: LslType;
27
+ }
28
+ export declare const ZERO_VECTOR: Vector;
29
+ export declare const ZERO_ROTATION: Rotation;
30
+ export declare const NULL_KEY = "00000000-0000-0000-0000-000000000000";
31
+ export declare function defaultValueFor(type: LslType): LslValue | undefined;
32
+ export declare function defaultEvalFor(type: LslType): EvalResult;
33
+ /** Truncate a JS number to LSL's 32-bit signed integer semantics. */
34
+ export declare function toInt32(n: number): number;
35
+ export declare function isVector(v: LslValue): v is Vector;
36
+ export declare function isRotation(v: LslValue): v is Rotation;
37
+ export declare function vec(x: number, y: number, z: number): Vector;
38
+ export declare function rot(x: number, y: number, z: number, s: number): Rotation;
39
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/values/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,MAAM,OAAO,GACf,SAAS,GACT,OAAO,GACP,QAAQ,GACR,KAAK,GACL,QAAQ,GACR,UAAU,GACV,MAAM,GACN,MAAM,CAAA;AAEV,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,MAAM,QAAQ,GAChB,MAAM,GACN,MAAM,GACN,MAAM,GACN,QAAQ,GACR,aAAa,CAAC,QAAQ,CAAC,CAAA;AAE3B,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CACvB;AAED,eAAO,MAAM,WAAW,EAAE,MAA4C,CAAA;AACtE,eAAO,MAAM,aAAa,EAAE,QAAoD,CAAA;AAChF,eAAO,MAAM,QAAQ,yCAAyC,CAAA;AAE9D,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAmBnE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,CAExD;AAED,qEAAqE;AACrE,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAIzC;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,IAAI,MAAM,CAUjD;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,IAAI,QAAQ,CAUrD;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,QAAQ,CAExE"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * LSL value types as represented at runtime.
3
+ *
4
+ * LSL has 7 value types: integer, float, string, key, vector, rotation, list.
5
+ * Internally we use raw JS values (number / string / Vector / Rotation / array)
6
+ * and carry the LSL type tag alongside in `EvalResult`. Tagging the type
7
+ * separately keeps the public boundary (call log, ll* builtin args) simple
8
+ * while still letting arithmetic and coercion know whether a number is an
9
+ * integer or a float.
10
+ */
11
+ export const ZERO_VECTOR = Object.freeze({ x: 0, y: 0, z: 0 });
12
+ export const ZERO_ROTATION = Object.freeze({ x: 0, y: 0, z: 0, s: 1 });
13
+ export const NULL_KEY = '00000000-0000-0000-0000-000000000000';
14
+ export function defaultValueFor(type) {
15
+ switch (type) {
16
+ case 'integer':
17
+ return 0;
18
+ case 'float':
19
+ return 0;
20
+ case 'string':
21
+ return '';
22
+ case 'key':
23
+ return NULL_KEY;
24
+ case 'vector':
25
+ return ZERO_VECTOR;
26
+ case 'rotation':
27
+ return ZERO_ROTATION;
28
+ case 'list':
29
+ return [];
30
+ case 'void':
31
+ return undefined;
32
+ }
33
+ }
34
+ export function defaultEvalFor(type) {
35
+ return { value: defaultValueFor(type) ?? 0, type };
36
+ }
37
+ /** Truncate a JS number to LSL's 32-bit signed integer semantics. */
38
+ export function toInt32(n) {
39
+ // `| 0` does ToInt32; clamp NaN/Infinity to 0 first to mirror LSL's behaviour.
40
+ if (!Number.isFinite(n))
41
+ return 0;
42
+ return n | 0;
43
+ }
44
+ export function isVector(v) {
45
+ return (typeof v === 'object' &&
46
+ v !== null &&
47
+ !Array.isArray(v) &&
48
+ 'x' in v &&
49
+ 'y' in v &&
50
+ 'z' in v &&
51
+ !('s' in v));
52
+ }
53
+ export function isRotation(v) {
54
+ return (typeof v === 'object' &&
55
+ v !== null &&
56
+ !Array.isArray(v) &&
57
+ 'x' in v &&
58
+ 'y' in v &&
59
+ 'z' in v &&
60
+ 's' in v);
61
+ }
62
+ export function vec(x, y, z) {
63
+ return Object.freeze({ x, y, z });
64
+ }
65
+ export function rot(x, y, z, s) {
66
+ return Object.freeze({ x, y, z, s });
67
+ }
68
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/values/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAqCH,MAAM,CAAC,MAAM,WAAW,GAAW,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;AACtE,MAAM,CAAC,MAAM,aAAa,GAAa,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;AAChF,MAAM,CAAC,MAAM,QAAQ,GAAG,sCAAsC,CAAA;AAE9D,MAAM,UAAU,eAAe,CAAC,IAAa;IAC3C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS;YACZ,OAAO,CAAC,CAAA;QACV,KAAK,OAAO;YACV,OAAO,CAAC,CAAA;QACV,KAAK,QAAQ;YACX,OAAO,EAAE,CAAA;QACX,KAAK,KAAK;YACR,OAAO,QAAQ,CAAA;QACjB,KAAK,QAAQ;YACX,OAAO,WAAW,CAAA;QACpB,KAAK,UAAU;YACb,OAAO,aAAa,CAAA;QACtB,KAAK,MAAM;YACT,OAAO,EAAE,CAAA;QACX,KAAK,MAAM;YACT,OAAO,SAAS,CAAA;IACpB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAa;IAC1C,OAAO,EAAE,KAAK,EAAE,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAA;AACpD,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,OAAO,CAAC,CAAS;IAC/B,+EAA+E;IAC/E,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAA;IACjC,OAAO,CAAC,GAAG,CAAC,CAAA;AACd,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,CAAW;IAClC,OAAO,CACL,OAAO,CAAC,KAAK,QAAQ;QACrB,CAAC,KAAK,IAAI;QACV,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACjB,GAAG,IAAI,CAAC;QACR,GAAG,IAAI,CAAC;QACR,GAAG,IAAI,CAAC;QACR,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CACZ,CAAA;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,CAAW;IACpC,OAAO,CACL,OAAO,CAAC,KAAK,QAAQ;QACrB,CAAC,KAAK,IAAI;QACV,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACjB,GAAG,IAAI,CAAC;QACR,GAAG,IAAI,CAAC;QACR,GAAG,IAAI,CAAC;QACR,GAAG,IAAI,CAAC,CACT,CAAA;AACH,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;IACjD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;AACnC,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS;IAC5D,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;AACtC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "@rezless/vm",
3
+ "version": "0.1.0",
4
+ "description": "Tree-walking interpreter and virtual clock for the Linden Scripting Language (LSL).",
5
+ "license": "Apache-2.0",
6
+ "author": "i-doll",
7
+ "homepage": "https://github.com/i-doll/rezless#readme",
8
+ "bugs": {
9
+ "url": "https://github.com/i-doll/rezless/issues"
10
+ },
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "git+https://github.com/i-doll/rezless.git",
14
+ "directory": "packages/vm"
15
+ },
16
+ "keywords": [
17
+ "lsl",
18
+ "linden-scripting-language",
19
+ "second-life",
20
+ "interpreter",
21
+ "vm",
22
+ "rezless"
23
+ ],
24
+ "type": "module",
25
+ "main": "./dist/index.js",
26
+ "types": "./dist/index.d.ts",
27
+ "exports": {
28
+ ".": {
29
+ "types": "./dist/index.d.ts",
30
+ "import": "./dist/index.js"
31
+ }
32
+ },
33
+ "files": [
34
+ "dist",
35
+ "LICENSE",
36
+ "NOTICE",
37
+ "README.md"
38
+ ],
39
+ "publishConfig": {
40
+ "access": "public"
41
+ },
42
+ "dependencies": {
43
+ "@rezless/parser": "0.1.0"
44
+ },
45
+ "devDependencies": {
46
+ "typescript": "^5.7.0"
47
+ },
48
+ "scripts": {
49
+ "build": "tsc -p tsconfig.json",
50
+ "typecheck": "tsc -p tsconfig.json --noEmit"
51
+ }
52
+ }