@rezless/vm 0.4.0 → 0.5.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 (131) hide show
  1. package/dist/builtins/base64.d.ts.map +1 -1
  2. package/dist/builtins/base64.js +29 -2
  3. package/dist/builtins/base64.js.map +1 -1
  4. package/dist/builtins/chat.d.ts +7 -1
  5. package/dist/builtins/chat.d.ts.map +1 -1
  6. package/dist/builtins/chat.js +26 -29
  7. package/dist/builtins/chat.js.map +1 -1
  8. package/dist/builtins/dataserver.d.ts +2 -1
  9. package/dist/builtins/dataserver.d.ts.map +1 -1
  10. package/dist/builtins/dataserver.js +5 -4
  11. package/dist/builtins/dataserver.js.map +1 -1
  12. package/dist/builtins/debug.d.ts +4 -0
  13. package/dist/builtins/debug.d.ts.map +1 -0
  14. package/dist/builtins/debug.js +7 -0
  15. package/dist/builtins/debug.js.map +1 -0
  16. package/dist/builtins/http.d.ts +8 -1
  17. package/dist/builtins/http.d.ts.map +1 -1
  18. package/dist/builtins/http.js +87 -9
  19. package/dist/builtins/http.js.map +1 -1
  20. package/dist/builtins/identity.d.ts +2 -0
  21. package/dist/builtins/identity.d.ts.map +1 -1
  22. package/dist/builtins/identity.js +9 -1
  23. package/dist/builtins/identity.js.map +1 -1
  24. package/dist/builtins/index.d.ts.map +1 -1
  25. package/dist/builtins/index.js +29 -7
  26. package/dist/builtins/index.js.map +1 -1
  27. package/dist/builtins/inventory.d.ts +13 -2
  28. package/dist/builtins/inventory.d.ts.map +1 -1
  29. package/dist/builtins/inventory.js +82 -43
  30. package/dist/builtins/inventory.js.map +1 -1
  31. package/dist/builtins/json.d.ts.map +1 -1
  32. package/dist/builtins/json.js +11 -36
  33. package/dist/builtins/json.js.map +1 -1
  34. package/dist/builtins/link-info.d.ts +1 -1
  35. package/dist/builtins/link-info.d.ts.map +1 -1
  36. package/dist/builtins/link-info.js +2 -2
  37. package/dist/builtins/link-info.js.map +1 -1
  38. package/dist/builtins/linksetdata.d.ts.map +1 -1
  39. package/dist/builtins/linksetdata.js +298 -31
  40. package/dist/builtins/linksetdata.js.map +1 -1
  41. package/dist/builtins/listen.d.ts +3 -1
  42. package/dist/builtins/listen.d.ts.map +1 -1
  43. package/dist/builtins/listen.js +9 -1
  44. package/dist/builtins/listen.js.map +1 -1
  45. package/dist/builtins/lists.d.ts +21 -0
  46. package/dist/builtins/lists.d.ts.map +1 -1
  47. package/dist/builtins/lists.js +82 -38
  48. package/dist/builtins/lists.js.map +1 -1
  49. package/dist/builtins/math.d.ts +27 -4
  50. package/dist/builtins/math.d.ts.map +1 -1
  51. package/dist/builtins/math.js +118 -41
  52. package/dist/builtins/math.js.map +1 -1
  53. package/dist/builtins/permissions.d.ts +18 -0
  54. package/dist/builtins/permissions.d.ts.map +1 -0
  55. package/dist/builtins/permissions.js +17 -0
  56. package/dist/builtins/permissions.js.map +1 -0
  57. package/dist/builtins/prim-accessors.d.ts +1 -0
  58. package/dist/builtins/prim-accessors.d.ts.map +1 -1
  59. package/dist/builtins/prim-accessors.js +44 -42
  60. package/dist/builtins/prim-accessors.js.map +1 -1
  61. package/dist/builtins/prim-params.d.ts +1 -1
  62. package/dist/builtins/prim-params.d.ts.map +1 -1
  63. package/dist/builtins/prim-params.js +19 -11
  64. package/dist/builtins/prim-params.js.map +1 -1
  65. package/dist/builtins/strings.d.ts.map +1 -1
  66. package/dist/builtins/strings.js +37 -33
  67. package/dist/builtins/strings.js.map +1 -1
  68. package/dist/builtins/time.d.ts +2 -0
  69. package/dist/builtins/time.d.ts.map +1 -1
  70. package/dist/builtins/time.js +2 -0
  71. package/dist/builtins/time.js.map +1 -1
  72. package/dist/clock.d.ts +23 -9
  73. package/dist/clock.d.ts.map +1 -1
  74. package/dist/clock.js +40 -13
  75. package/dist/clock.js.map +1 -1
  76. package/dist/dispatch.d.ts.map +1 -1
  77. package/dist/dispatch.js +10 -3
  78. package/dist/dispatch.js.map +1 -1
  79. package/dist/index.d.ts +2 -0
  80. package/dist/index.d.ts.map +1 -1
  81. package/dist/index.js +1 -0
  82. package/dist/index.js.map +1 -1
  83. package/dist/interpreter.js +2 -2
  84. package/dist/interpreter.js.map +1 -1
  85. package/dist/inventory.d.ts +2 -0
  86. package/dist/inventory.d.ts.map +1 -1
  87. package/dist/inventory.js +4 -0
  88. package/dist/inventory.js.map +1 -1
  89. package/dist/keys.d.ts +6 -0
  90. package/dist/keys.d.ts.map +1 -0
  91. package/dist/keys.js +20 -0
  92. package/dist/keys.js.map +1 -0
  93. package/dist/linkset.d.ts +28 -3
  94. package/dist/linkset.d.ts.map +1 -1
  95. package/dist/linkset.js +66 -7
  96. package/dist/linkset.js.map +1 -1
  97. package/dist/prim-params.d.ts +5 -0
  98. package/dist/prim-params.d.ts.map +1 -1
  99. package/dist/prim-params.js +187 -107
  100. package/dist/prim-params.js.map +1 -1
  101. package/dist/prim.d.ts +6 -1
  102. package/dist/prim.d.ts.map +1 -1
  103. package/dist/prim.js +23 -3
  104. package/dist/prim.js.map +1 -1
  105. package/dist/runtime.d.ts +11 -1
  106. package/dist/runtime.d.ts.map +1 -1
  107. package/dist/script.d.ts +27 -2
  108. package/dist/script.d.ts.map +1 -1
  109. package/dist/script.js +89 -27
  110. package/dist/script.js.map +1 -1
  111. package/dist/values/coerce.d.ts +11 -0
  112. package/dist/values/coerce.d.ts.map +1 -1
  113. package/dist/values/coerce.js +65 -38
  114. package/dist/values/coerce.js.map +1 -1
  115. package/dist/values/format.d.ts +24 -16
  116. package/dist/values/format.d.ts.map +1 -1
  117. package/dist/values/format.js +42 -25
  118. package/dist/values/format.js.map +1 -1
  119. package/dist/values/ops.d.ts +2 -1
  120. package/dist/values/ops.d.ts.map +1 -1
  121. package/dist/values/ops.js +13 -5
  122. package/dist/values/ops.js.map +1 -1
  123. package/dist/values/utf8.d.ts +3 -0
  124. package/dist/values/utf8.d.ts.map +1 -0
  125. package/dist/values/utf8.js +14 -0
  126. package/dist/values/utf8.js.map +1 -0
  127. package/dist/world.d.ts +29 -0
  128. package/dist/world.d.ts.map +1 -0
  129. package/dist/world.js +29 -0
  130. package/dist/world.js.map +1 -0
  131. package/package.json +2 -2
@@ -1,15 +1,286 @@
1
- import { LINKSETDATA_OK, LINKSETDATA_ENOKEY, LINKSETDATA_EPROTECTED, LINKSETDATA_NOTFOUND, LINKSETDATA_NOUPDATE, LINKSETDATA_RESET, LINKSETDATA_UPDATE, LINKSETDATA_DELETE, LINKSETDATA_MULTIDELETE, } from '../generated/constants.js';
1
+ import { LINKSETDATA_OK, LINKSETDATA_EMEMORY, LINKSETDATA_ENOKEY, LINKSETDATA_EPROTECTED, LINKSETDATA_NOTFOUND, LINKSETDATA_NOUPDATE, LINKSETDATA_RESET, LINKSETDATA_UPDATE, LINKSETDATA_DELETE, LINKSETDATA_MULTIDELETE, } from '../generated/constants.js';
2
2
  import { uniformList } from '../values/list-types.js';
3
3
  const LSD_AVAILABLE_BYTES = 131072;
4
4
  function fireEvent(ctx, action, keyname, value) {
5
5
  ctx.linkset.broadcastLinksetData(action, keyname, value);
6
6
  }
7
+ const PROTECTED_OVERHEAD = 32;
8
+ function entryCost(name, entry) {
9
+ return (Buffer.byteLength(name, 'utf8') +
10
+ Buffer.byteLength(entry.value, 'utf8') +
11
+ (entry.password === '' ? 0 : PROTECTED_OVERHEAD));
12
+ }
13
+ function bytesUsed(store) {
14
+ let used = 0;
15
+ for (const [name, entry] of store)
16
+ used += entryCost(name, entry);
17
+ return used;
18
+ }
19
+ function fits(ctx, name, entry) {
20
+ const store = ctx.state.linksetData;
21
+ const existing = store.get(name);
22
+ const before = bytesUsed(store) - (existing ? entryCost(name, existing) : 0);
23
+ return before + entryCost(name, entry) <= LSD_AVAILABLE_BYTES;
24
+ }
25
+ /**
26
+ * SL compares and matches keys as UTF-8 bytes. Each byte becomes one char; bytes from 0x80 map into
27
+ * the private use area so that a JS RegExp never case-folds them.
28
+ */
29
+ const byteChar = (b) => String.fromCharCode(b < 0x80 ? b : 0xe000 + b);
30
+ function utf8Chars(s) {
31
+ let out = '';
32
+ for (const b of Buffer.from(s, 'utf8'))
33
+ out += byteChar(b);
34
+ return out;
35
+ }
36
+ const byUtf8 = (a, b) => Buffer.compare(Buffer.from(a, 'utf8'), Buffer.from(b, 'utf8'));
37
+ function sortedKeys(ctx) {
38
+ return [...ctx.state.linksetData.keys()].sort(byUtf8);
39
+ }
40
+ const POSIX_CLASSES = {
41
+ alpha: 'A-Za-z',
42
+ digit: '0-9',
43
+ alnum: 'A-Za-z0-9',
44
+ upper: 'A-Z',
45
+ lower: 'a-z',
46
+ space: '\\t\\n\\v\\f\\r ',
47
+ blank: '\\t ',
48
+ punct: '!-\\/:-@\\[-`{-~',
49
+ xdigit: '0-9A-Fa-f',
50
+ cntrl: '\\x00-\\x1f\\x7f',
51
+ print: '\\x20-\\x7e',
52
+ graph: '\\x21-\\x7e',
53
+ word: 'A-Za-z0-9_',
54
+ };
55
+ const UNICODE_CLASSES = {
56
+ L: 'a-z',
57
+ Lu: 'A-Z',
58
+ Ll: 'a-z',
59
+ N: '0-9',
60
+ Nd: '0-9',
61
+ };
62
+ const ESCAPE_CLASSES = {
63
+ h: '[\\t ]',
64
+ H: '[^\\t ]',
65
+ s: '[\\t\\n\\v\\f\\r ]',
66
+ S: '[^\\t\\n\\v\\f\\r ]',
67
+ l: '[a-z]',
68
+ L: '[^a-z]',
69
+ u: '[A-Z]',
70
+ U: '[^A-Z]',
71
+ A: '^',
72
+ z: '$',
73
+ };
74
+ /** Escapes that stay a character class inside brackets; any other backslash is a literal. */
75
+ const BRACKET_ESCAPES = new Set(['d', 'D', 'w', 'W', 's', 'S']);
76
+ function escapeLiteral(ch) {
77
+ return /[\\^$.*+?()[\]{}|/-]/.test(ch) ? '\\' + ch : ch;
78
+ }
79
+ function translateBracket(p, i) {
80
+ let out = '[';
81
+ let j = i + 1;
82
+ if (p[j] === '^') {
83
+ out += '^';
84
+ j += 1;
85
+ }
86
+ if (p[j] === ']') {
87
+ out += '\\]';
88
+ j += 1;
89
+ }
90
+ while (j < p.length && p[j] !== ']') {
91
+ const ch = p[j];
92
+ if (ch === '[' && p[j + 1] === ':') {
93
+ const close = p.indexOf(':]', j + 2);
94
+ if (close < 0)
95
+ return null;
96
+ const cls = POSIX_CLASSES[p.slice(j + 2, close)];
97
+ if (cls === undefined)
98
+ return null;
99
+ out += cls;
100
+ j = close + 2;
101
+ }
102
+ else if (ch === '[' && (p[j + 1] === '=' || p[j + 1] === '.')) {
103
+ const kind = p[j + 1];
104
+ const close = p.indexOf(kind + ']', j + 2);
105
+ const name = close < 0 ? '' : p.slice(j + 2, close);
106
+ if ([...name].length !== 1)
107
+ return null;
108
+ const chars = kind === '=' ? new Set([name.toLowerCase(), name.toUpperCase()]) : new Set([name]);
109
+ out += [...chars].map(escapeLiteral).join('');
110
+ j = close + 2;
111
+ }
112
+ else if (ch === '\\' && BRACKET_ESCAPES.has(p[j + 1] ?? '')) {
113
+ out += p.slice(j, j + 2);
114
+ j += 2;
115
+ }
116
+ else if (ch === '\\') {
117
+ out += '\\\\';
118
+ j += 1;
119
+ }
120
+ else {
121
+ out += ch === '[' ? '\\[' : ch;
122
+ j += 1;
123
+ }
124
+ }
125
+ if (j >= p.length)
126
+ return null;
127
+ return [out + ']', j + 1];
128
+ }
129
+ /**
130
+ * Translates SL's linkset data regex dialect (Boost POSIX-extended with Boost
131
+ * escapes and a leading `(?i)`) into a JS RegExp. Empty alternatives are
132
+ * dropped. Anything SL rejects or does not support returns null so it matches
133
+ * no key.
134
+ */
7
135
  function compilePattern(pattern) {
8
- // LSL uses POSIX ERE; we use JS RegExp. The dialect gap is small in practice
9
- // (anchors, character classes, alternation all match). Invalid patterns
10
- // return no matches in LSL — emulate by returning null.
136
+ let p = utf8Chars(pattern);
137
+ let flags = '';
138
+ if (p.startsWith('(?i)')) {
139
+ flags = 'i';
140
+ p = p.slice(4);
141
+ }
142
+ let out = '';
143
+ const groupStarts = [];
144
+ let altEmpty = true;
145
+ let pendingBar = false;
146
+ let quantifiable = false;
147
+ let i = 0;
148
+ const emit = (s) => {
149
+ if (pendingBar)
150
+ out += '|';
151
+ pendingBar = false;
152
+ out += s;
153
+ };
154
+ const atom = (s, canRepeat = true) => {
155
+ emit(s);
156
+ altEmpty = false;
157
+ quantifiable = canRepeat;
158
+ };
159
+ while (i < p.length) {
160
+ const ch = p[i];
161
+ if (ch === '\\') {
162
+ const next = p[i + 1];
163
+ if (next === undefined)
164
+ return null;
165
+ if (next === 'Q') {
166
+ const close = p.indexOf('\\E', i + 2);
167
+ const literal = p.slice(i + 2, close < 0 ? p.length : close);
168
+ if (literal !== '')
169
+ atom([...literal].map(escapeLiteral).join(''));
170
+ i = close < 0 ? p.length : close + 2;
171
+ continue;
172
+ }
173
+ if (next === 'x' && p[i + 2] === '{') {
174
+ const close = p.indexOf('}', i + 3);
175
+ const hex = close < 0 ? '' : p.slice(i + 3, close);
176
+ if (!/^[0-9A-Fa-f]{1,6}$/.test(hex))
177
+ return null;
178
+ const code = parseInt(hex, 16);
179
+ if (code > 0x10ffff)
180
+ return null;
181
+ atom(escapeLiteral(String.fromCodePoint(code)));
182
+ i = close + 1;
183
+ continue;
184
+ }
185
+ const hexByte = next === 'x' ? /^[0-9A-Fa-f]{2}/.exec(p.slice(i + 2)) : null;
186
+ if (hexByte) {
187
+ atom(escapeLiteral(byteChar(parseInt(hexByte[0], 16))));
188
+ i += 4;
189
+ continue;
190
+ }
191
+ if (next === 'p' || next === 'P') {
192
+ let name;
193
+ let after;
194
+ if (p[i + 2] === '{') {
195
+ const close = p.indexOf('}', i + 3);
196
+ if (close < 0)
197
+ return null;
198
+ name = p.slice(i + 3, close);
199
+ after = close + 1;
200
+ }
201
+ else {
202
+ name = p[i + 2] ?? '';
203
+ after = i + 3;
204
+ }
205
+ const cls = UNICODE_CLASSES[name] ?? POSIX_CLASSES[name];
206
+ if (cls === undefined)
207
+ return null;
208
+ atom(`[${next === 'P' ? '^' : ''}${cls}]`);
209
+ i = after;
210
+ continue;
211
+ }
212
+ if (/[1-9kgcEeG]/.test(next))
213
+ return null;
214
+ const cls = ESCAPE_CLASSES[next];
215
+ if (cls !== undefined)
216
+ atom(cls, next !== 'A' && next !== 'z');
217
+ else
218
+ atom('\\' + next);
219
+ i += 2;
220
+ continue;
221
+ }
222
+ if (ch === '[') {
223
+ const bracket = translateBracket(p, i);
224
+ if (!bracket)
225
+ return null;
226
+ atom(bracket[0]);
227
+ i = bracket[1];
228
+ continue;
229
+ }
230
+ if (ch === '(') {
231
+ if (p[i + 1] === '?')
232
+ return null;
233
+ emit('(');
234
+ groupStarts.push(out.length);
235
+ altEmpty = true;
236
+ quantifiable = false;
237
+ i += 1;
238
+ continue;
239
+ }
240
+ if (ch === ')') {
241
+ pendingBar = false;
242
+ const start = groupStarts.pop();
243
+ if (start === undefined || start === out.length)
244
+ return null;
245
+ atom(')');
246
+ i += 1;
247
+ continue;
248
+ }
249
+ if (ch === '|') {
250
+ if (!altEmpty)
251
+ pendingBar = true;
252
+ altEmpty = true;
253
+ quantifiable = false;
254
+ i += 1;
255
+ continue;
256
+ }
257
+ if (ch === '*' || ch === '+' || ch === '?' || ch === '{') {
258
+ if (!quantifiable)
259
+ return null;
260
+ let end = i + 1;
261
+ if (ch === '{') {
262
+ const bound = /^\{(\d+)(,(\d*))?\}/.exec(p.slice(i));
263
+ if (!bound)
264
+ return null;
265
+ const min = Number(bound[1]);
266
+ if (bound[3] !== undefined && bound[3] !== '' && Number(bound[3]) < min)
267
+ return null;
268
+ end = i + bound[0].length;
269
+ }
270
+ out += p.slice(i, end);
271
+ quantifiable = false;
272
+ i = end;
273
+ continue;
274
+ }
275
+ const anchor = ch === '^' || ch === '$';
276
+ atom(anchor || ch === '.' ? ch : escapeLiteral(ch), !anchor);
277
+ i += 1;
278
+ }
279
+ if (groupStarts.length !== 0 || out === '')
280
+ return null;
11
281
  try {
12
- return new RegExp(pattern);
282
+ const re = new RegExp(out, flags);
283
+ return (key) => re.test(utf8Chars(key));
13
284
  }
14
285
  catch {
15
286
  return null;
@@ -17,7 +288,7 @@ function compilePattern(pattern) {
17
288
  }
18
289
  /**
19
290
  * Slice helper matching LSL list-style start/count semantics for ListKeys /
20
- * FindKeys: negative `start` counts from the end; `count = -1` means "to the
291
+ * FindKeys: negative `start` counts from the end; `count < 1` means "to the
21
292
  * end".
22
293
  */
23
294
  function slice(arr, start, count) {
@@ -28,7 +299,7 @@ function slice(arr, start, count) {
28
299
  s = 0;
29
300
  if (s >= arr.length)
30
301
  return [];
31
- const end = count < 0 ? arr.length : Math.min(arr.length, s + count);
302
+ const end = count < 1 ? arr.length : Math.min(arr.length, s + count);
32
303
  return arr.slice(s, end);
33
304
  }
34
305
  export const llLinksetDataWrite = (ctx, args) => {
@@ -49,7 +320,10 @@ export const llLinksetDataWrite = (ctx, args) => {
49
320
  }
50
321
  if (existing && existing.value === value)
51
322
  return LINKSETDATA_NOUPDATE;
52
- store.set(name, { value, password: '' });
323
+ const entry = { value, password: '' };
324
+ if (!fits(ctx, name, entry))
325
+ return LINKSETDATA_EMEMORY;
326
+ store.set(name, entry);
53
327
  fireEvent(ctx, LINKSETDATA_UPDATE, name, value);
54
328
  return LINKSETDATA_OK;
55
329
  };
@@ -74,7 +348,10 @@ export const llLinksetDataWriteProtected = (ctx, args) => {
74
348
  if (existing && existing.value === value && existing.password === password) {
75
349
  return LINKSETDATA_NOUPDATE;
76
350
  }
77
- store.set(name, { value, password });
351
+ const entry = { value, password };
352
+ if (!fits(ctx, name, entry))
353
+ return LINKSETDATA_EMEMORY;
354
+ store.set(name, entry);
78
355
  // The resulting entry's protection state — not the function name — decides
79
356
  // whether the UPDATE event blanks the value. WriteProtected with an empty
80
357
  // password creates an unprotected entry and so must carry the value, same
@@ -133,14 +410,14 @@ export const llLinksetDataDeleteProtected = (ctx, args) => {
133
410
  export const llLinksetDataDeleteFound = (ctx, args) => {
134
411
  const pattern = args[0] ?? '';
135
412
  const password = args[1] ?? '';
136
- const re = compilePattern(pattern);
137
- if (!re)
413
+ const matches = compilePattern(pattern);
414
+ if (!matches)
138
415
  return uniformList([0, 0], 'integer');
139
416
  const store = ctx.state.linksetData;
140
417
  const deletedKeys = [];
141
418
  let notDeleted = 0;
142
419
  for (const [name, entry] of [...store.entries()]) {
143
- if (!re.test(name))
420
+ if (!matches(name))
144
421
  continue;
145
422
  if (entry.password !== password) {
146
423
  notDeleted += 1;
@@ -151,7 +428,7 @@ export const llLinksetDataDeleteFound = (ctx, args) => {
151
428
  }
152
429
  if (deletedKeys.length > 0) {
153
430
  // SL emits MULTIDELETE.name in ASCII-lex order, not insertion order.
154
- deletedKeys.sort();
431
+ deletedKeys.sort(byUtf8);
155
432
  fireEvent(ctx, LINKSETDATA_MULTIDELETE, deletedKeys.join(','), '');
156
433
  }
157
434
  return uniformList([deletedKeys.length, notDeleted], 'integer');
@@ -161,42 +438,32 @@ export const llLinksetDataReset = (ctx) => {
161
438
  fireEvent(ctx, LINKSETDATA_RESET, '', '');
162
439
  return undefined;
163
440
  };
164
- export const llLinksetDataAvailable = (ctx) => {
165
- // TODO: track real bytes used (UTF-8 size of keys + values + overhead) once
166
- // memory accounting lands. For now return the full quota minus a rough
167
- // per-entry estimate so tests can still observe the value going down.
168
- let used = 0;
169
- for (const [k, e] of ctx.state.linksetData) {
170
- used += k.length + e.value.length + e.password.length;
171
- }
172
- return Math.max(0, LSD_AVAILABLE_BYTES - used);
173
- };
441
+ export const llLinksetDataAvailable = (ctx) => Math.max(0, LSD_AVAILABLE_BYTES - bytesUsed(ctx.state.linksetData));
174
442
  export const llLinksetDataCountKeys = (ctx) => {
175
443
  return ctx.state.linksetData.size;
176
444
  };
177
445
  export const llLinksetDataListKeys = (ctx, args) => {
178
446
  const start = args[0] ?? 0;
179
447
  const count = args[1] ?? -1;
180
- return uniformList(slice([...ctx.state.linksetData.keys()], start, count), 'string');
448
+ return uniformList(slice(sortedKeys(ctx), start, count), 'string');
181
449
  };
182
450
  export const llLinksetDataFindKeys = (ctx, args) => {
183
451
  const pattern = args[0] ?? '';
184
452
  const start = args[1] ?? 0;
185
453
  const count = args[2] ?? -1;
186
- const re = compilePattern(pattern);
187
- if (!re)
454
+ const matches = compilePattern(pattern);
455
+ if (!matches)
188
456
  return [];
189
- const matches = [...ctx.state.linksetData.keys()].filter((k) => re.test(k));
190
- return uniformList(slice(matches, start, count), 'string');
457
+ return uniformList(slice(sortedKeys(ctx).filter(matches), start, count), 'string');
191
458
  };
192
459
  export const llLinksetDataCountFound = (ctx, args) => {
193
460
  const pattern = args[0] ?? '';
194
- const re = compilePattern(pattern);
195
- if (!re)
461
+ const matches = compilePattern(pattern);
462
+ if (!matches)
196
463
  return 0;
197
464
  let n = 0;
198
465
  for (const k of ctx.state.linksetData.keys())
199
- if (re.test(k))
466
+ if (matches(k))
200
467
  n += 1;
201
468
  return n;
202
469
  };
@@ -1 +1 @@
1
- {"version":3,"file":"linksetdata.js","sourceRoot":"","sources":["../../src/builtins/linksetdata.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"linksetdata.js","sourceRoot":"","sources":["../../src/builtins/linksetdata.ts"],"names":[],"mappings":"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"}
@@ -23,7 +23,9 @@ export interface ListenEntry {
23
23
  * llListen(integer channel, string name, key id, string msg) → integer handle
24
24
  *
25
25
  * Empty name / NULL_KEY id / empty msg act as wildcards. The handle is
26
- * a positive integer used by llListenRemove / llListenControl.
26
+ * a positive integer used by llListenRemove / llListenControl. A filter
27
+ * identical to an existing listen returns that listen's handle. Opening
28
+ * more than 65 listens is a fatal "Too Many Listens" error.
27
29
  */
28
30
  export declare const llListen: BuiltinImpl;
29
31
  /** llListenRemove(integer handle) — drops the listen entirely. */
@@ -1 +1 @@
1
- {"version":3,"file":"listen.d.ts","sourceRoot":"","sources":["../../src/builtins/listen.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAGhD;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,6CAA6C;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,8DAA8D;IAC9D,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,wCAAwC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,6DAA6D;IAC7D,MAAM,EAAE,OAAO,CAAA;CAChB;AAOD;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,EAAE,WAetB,CAAA;AAED,kEAAkE;AAClE,eAAO,MAAM,cAAc,EAAE,WAK5B,CAAA;AAED,kFAAkF;AAClF,eAAO,MAAM,eAAe,EAAE,WAM7B,CAAA"}
1
+ {"version":3,"file":"listen.d.ts","sourceRoot":"","sources":["../../src/builtins/listen.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAGhD;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,6CAA6C;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,8DAA8D;IAC9D,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,wCAAwC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,6DAA6D;IAC7D,MAAM,EAAE,OAAO,CAAA;CAChB;AASD;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ,EAAE,WAoBtB,CAAA;AAED,kEAAkE;AAClE,eAAO,MAAM,cAAc,EAAE,WAK5B,CAAA;AAED,kFAAkF;AAClF,eAAO,MAAM,eAAe,EAAE,WAM7B,CAAA"}
@@ -3,17 +3,25 @@ function nextListenHandle(state) {
3
3
  state.listenHandleCounter += 1;
4
4
  return state.listenHandleCounter;
5
5
  }
6
+ const MAX_LISTENS = 65;
6
7
  /**
7
8
  * llListen(integer channel, string name, key id, string msg) → integer handle
8
9
  *
9
10
  * Empty name / NULL_KEY id / empty msg act as wildcards. The handle is
10
- * a positive integer used by llListenRemove / llListenControl.
11
+ * a positive integer used by llListenRemove / llListenControl. A filter
12
+ * identical to an existing listen returns that listen's handle. Opening
13
+ * more than 65 listens is a fatal "Too Many Listens" error.
11
14
  */
12
15
  export const llListen = (ctx, args) => {
13
16
  const channel = args[0] ?? 0;
14
17
  const name = args[1] ?? '';
15
18
  const id = args[2] ?? NULL_KEY;
16
19
  const msg = args[3] ?? '';
20
+ const existing = ctx.state.listens.find((l) => l.active && l.channel === channel && l.name === name && l.key === id && l.message === msg);
21
+ if (existing)
22
+ return existing.handle;
23
+ if (ctx.state.listens.length >= MAX_LISTENS)
24
+ throw new Error('Too Many Listens');
17
25
  const handle = nextListenHandle(ctx.state);
18
26
  ctx.state.listens.push({
19
27
  handle,
@@ -1 +1 @@
1
- {"version":3,"file":"listen.js","sourceRoot":"","sources":["../../src/builtins/listen.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAuB7C,SAAS,gBAAgB,CAAC,KAAsC;IAC9D,KAAK,CAAC,mBAAmB,IAAI,CAAC,CAAA;IAC9B,OAAO,KAAK,CAAC,mBAAmB,CAAA;AAClC,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;IACjD,MAAM,OAAO,GAAI,IAAI,CAAC,CAAC,CAAwB,IAAI,CAAC,CAAA;IACpD,MAAM,IAAI,GAAI,IAAI,CAAC,CAAC,CAAwB,IAAI,EAAE,CAAA;IAClD,MAAM,EAAE,GAAI,IAAI,CAAC,CAAC,CAAwB,IAAI,QAAQ,CAAA;IACtD,MAAM,GAAG,GAAI,IAAI,CAAC,CAAC,CAAwB,IAAI,EAAE,CAAA;IACjD,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC1C,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QACrB,MAAM;QACN,OAAO;QACP,IAAI;QACJ,GAAG,EAAE,EAAE;QACP,OAAO,EAAE,GAAG;QACZ,MAAM,EAAE,IAAI;KACb,CAAC,CAAA;IACF,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,kEAAkE;AAClE,MAAM,CAAC,MAAM,cAAc,GAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;IACvD,MAAM,MAAM,GAAI,IAAI,CAAC,CAAC,CAAwB,IAAI,CAAC,CAAA;IACnD,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAA;IACjE,IAAI,CAAC,IAAI,CAAC;QAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC1C,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAED,kFAAkF;AAClF,MAAM,CAAC,MAAM,eAAe,GAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;IACxD,MAAM,MAAM,GAAI,IAAI,CAAC,CAAC,CAAwB,IAAI,CAAC,CAAA;IACnD,MAAM,MAAM,GAAG,CAAE,IAAI,CAAC,CAAC,CAAwB,IAAI,CAAC,CAAC,KAAK,CAAC,CAAA;IAC3D,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAA;IAChE,IAAI,KAAK;QAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAA;IAChC,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA"}
1
+ {"version":3,"file":"listen.js","sourceRoot":"","sources":["../../src/builtins/listen.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAuB7C,SAAS,gBAAgB,CAAC,KAAsC;IAC9D,KAAK,CAAC,mBAAmB,IAAI,CAAC,CAAA;IAC9B,OAAO,KAAK,CAAC,mBAAmB,CAAA;AAClC,CAAC;AAED,MAAM,WAAW,GAAG,EAAE,CAAA;AAEtB;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;IACjD,MAAM,OAAO,GAAI,IAAI,CAAC,CAAC,CAAwB,IAAI,CAAC,CAAA;IACpD,MAAM,IAAI,GAAI,IAAI,CAAC,CAAC,CAAwB,IAAI,EAAE,CAAA;IAClD,MAAM,EAAE,GAAI,IAAI,CAAC,CAAC,CAAwB,IAAI,QAAQ,CAAA;IACtD,MAAM,GAAG,GAAI,IAAI,CAAC,CAAC,CAAwB,IAAI,EAAE,CAAA;IACjD,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CACrC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC,OAAO,KAAK,GAAG,CACjG,CAAA;IACD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC,MAAM,CAAA;IACpC,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,WAAW;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;IAChF,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC1C,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QACrB,MAAM;QACN,OAAO;QACP,IAAI;QACJ,GAAG,EAAE,EAAE;QACP,OAAO,EAAE,GAAG;QACZ,MAAM,EAAE,IAAI;KACb,CAAC,CAAA;IACF,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,kEAAkE;AAClE,MAAM,CAAC,MAAM,cAAc,GAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;IACvD,MAAM,MAAM,GAAI,IAAI,CAAC,CAAC,CAAwB,IAAI,CAAC,CAAA;IACnD,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAA;IACjE,IAAI,CAAC,IAAI,CAAC;QAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC1C,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAED,kFAAkF;AAClF,MAAM,CAAC,MAAM,eAAe,GAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;IACxD,MAAM,MAAM,GAAI,IAAI,CAAC,CAAC,CAAwB,IAAI,CAAC,CAAA;IACnD,MAAM,MAAM,GAAG,CAAE,IAAI,CAAC,CAAC,CAAwB,IAAI,CAAC,CAAC,KAAK,CAAC,CAAA;IAC3D,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAA;IAChE,IAAI,KAAK;QAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAA;IAChC,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA"}
@@ -54,4 +54,25 @@ export declare const llParseStringKeepNulls: BuiltinImpl;
54
54
  * length isn't a multiple of stride comes back unsorted.
55
55
  */
56
56
  export declare const llListSort: BuiltinImpl;
57
+ /**
58
+ * llList2ListStrided(list src, integer start, integer end, integer stride) —
59
+ * the elements in start..end whose index in the whole list is a multiple of
60
+ * the stride. A stride of 0 acts as 1, a negative one as its absolute value,
61
+ * and start after end selects the whole list.
62
+ */
63
+ export declare const llList2ListStrided: BuiltinImpl;
64
+ /**
65
+ * llList2ListSlice(list src, integer start, integer end, integer stride, integer slice_index)
66
+ * — within each selected range, the elements whose offset from the range's
67
+ * start is slice_index modulo the stride. A negative slice_index counts from
68
+ * the end of the stride; one outside the stride, or a stride below 1, gives [].
69
+ */
70
+ export declare const llList2ListSlice: BuiltinImpl;
71
+ /**
72
+ * llListRandomize(list src, integer stride) — shuffles whole stride-sized
73
+ * blocks with the script's seeded random source. A stride below 1 shuffles
74
+ * single elements; a list whose length isn't a multiple of the stride comes
75
+ * back unchanged.
76
+ */
77
+ export declare const llListRandomize: BuiltinImpl;
57
78
  //# sourceMappingURL=lists.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lists.d.ts","sourceRoot":"","sources":["../../src/builtins/lists.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAMhD,oDAAoD;AACpD,eAAO,MAAM,eAAe,EAAE,WAG7B,CAAA;AAaD,kFAAkF;AAClF,eAAO,MAAM,cAAc,EAAE,WAY5B,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,WAY1B,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,WAkB3B,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,WAOxB,CAAA;AAWD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAahC,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,WAO3B,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,WAOxB,CAAA;AAYD;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,WAOzB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,WAO7B,CAAA;AAED,8EAA8E;AAC9E,eAAO,MAAM,gBAAgB,EAAE,WAO9B,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,EAAE,WAY/B,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,WAc5B,CAAA;AAmBD,eAAO,MAAM,iBAAiB,EAAE,WAI/B,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,WAGxB,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,WAqBxB,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,WAAsD,CAAA;AAEvF,4HAA4H;AAC5H,eAAO,MAAM,sBAAsB,EAAE,WAAqD,CAAA;AAuC1F;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,EAAE,WAoBxB,CAAA"}
1
+ {"version":3,"file":"lists.d.ts","sourceRoot":"","sources":["../../src/builtins/lists.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAOhD,oDAAoD;AACpD,eAAO,MAAM,eAAe,EAAE,WAG7B,CAAA;AAaD,kFAAkF;AAClF,eAAO,MAAM,cAAc,EAAE,WAS5B,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,WAY1B,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,WAM3B,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,WAOxB,CAAA;AAWD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAahC,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,WAO3B,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,WAOxB,CAAA;AAYD;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,WAOzB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,WAO7B,CAAA;AAED,8EAA8E;AAC9E,eAAO,MAAM,gBAAgB,EAAE,WAO9B,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,EAAE,WAY/B,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,WAc5B,CAAA;AAUD,eAAO,MAAM,iBAAiB,EAAE,WAI/B,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,WAGxB,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,WAqBxB,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,WAAsD,CAAA;AAEvF,4HAA4H;AAC5H,eAAO,MAAM,sBAAsB,EAAE,WAAqD,CAAA;AAuC1F;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,EAAE,WAoBxB,CAAA;AA0CD;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAUhC,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,WAa9B,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,eAAe,EAAE,WAU7B,CAAA"}