@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,248 @@
1
+ import type { Script as Ast } from '@rezless/parser';
2
+ import type { BuiltinImpl, ChatEntry, CallEntry } from './runtime.js';
3
+ import type { HttpRequestEntry } from './builtins/http.js';
4
+ import type { ListenEntry } from './builtins/listen.js';
5
+ import type { LinkedMessageEntry } from './builtins/linked.js';
6
+ import type { DataserverRequestEntry } from './builtins/dataserver.js';
7
+ import type { LinksetDataEntry } from './builtins/linksetdata.js';
8
+ import type { CoverageReport } from './coverage.js';
9
+ import type { LslType, LslValue } from './values/types.js';
10
+ import { ScriptClockView } from './clock.js';
11
+ import { Linkset } from './linkset.js';
12
+ import { Prim } from './prim.js';
13
+ export interface ScriptOptions {
14
+ /** Filename used in diagnostics; defaults to "<inline>". */
15
+ readonly filename?: string;
16
+ /**
17
+ * Seed for the script's PRNG (used by llFrand and friends). Default 1.
18
+ * Pin a seed per test if you need deterministic random output.
19
+ */
20
+ readonly randomSeed?: number;
21
+ /** Owner key returned by llGetOwner. Defaults to NULL_KEY. */
22
+ readonly owner?: string;
23
+ /** Prim key returned by llGetKey. Defaults to a deterministic per-script key. */
24
+ readonly objectKey?: string;
25
+ /** Prim name returned by llGetObjectName. Defaults to "Object". */
26
+ readonly objectName?: string;
27
+ /** Script name returned by llGetScriptName. Defaults to filename basename or "script". */
28
+ readonly scriptName?: string;
29
+ /**
30
+ * Host prim. If omitted, a 1-prim default linkset is auto-allocated. Pass
31
+ * a prim that's already been added to a Linkset to opt into multi-script.
32
+ */
33
+ readonly host?: Prim;
34
+ /**
35
+ * Original LSL source — kept on the script for LCOV / Istanbul line maps
36
+ * when coverage is enabled. loadScript() supplies this automatically.
37
+ */
38
+ readonly source?: string;
39
+ /**
40
+ * Enable coverage collection on this script. When true, `script.coverage`
41
+ * returns a snapshot after each test; default false (zero overhead).
42
+ */
43
+ readonly coverage?: boolean;
44
+ }
45
+ /**
46
+ * Public handle for a loaded LSL script. Tests interact almost entirely
47
+ * with this surface: drive events via fire(), inspect chat / calls,
48
+ * override functions via mock(), read or seed globals.
49
+ */
50
+ export declare class Script {
51
+ private readonly ast;
52
+ private readonly state;
53
+ private readonly mocks;
54
+ private readonly globals;
55
+ private readonly userFunctions;
56
+ private readonly handlersByState;
57
+ private started;
58
+ /** Per-script clock facade (timer state + time reference). */
59
+ readonly clockView: ScriptClockView;
60
+ readonly host: Prim;
61
+ readonly linkset: Linkset;
62
+ readonly scriptName: string;
63
+ /** When false, drainQueue parks events instead of delivering them. */
64
+ running: boolean;
65
+ /** Events parked while `running === false`; replayed when re-enabled. */
66
+ readonly parkedEvents: Array<{
67
+ at: number;
68
+ event: string;
69
+ payload: Record<string, unknown>;
70
+ }>;
71
+ constructor(ast: Ast, options?: ScriptOptions);
72
+ /** Current virtual time in milliseconds since linkset construction. */
73
+ get now(): number;
74
+ /**
75
+ * Advance the linkset clock by `ms` and fire every queued event whose
76
+ * scheduled time is ≤ the new now (across all scripts in the linkset).
77
+ * Convenience pass-through to `linkset.advanceTime`.
78
+ */
79
+ advanceTime(ms: number): void;
80
+ /**
81
+ * Configured recurring timer interval in seconds, or 0 if no timer is
82
+ * registered. Mirrors `llSetTimerEvent`'s most recent argument.
83
+ */
84
+ get timerInterval(): number;
85
+ /** Current LSL state name. */
86
+ get currentState(): string;
87
+ /**
88
+ * Coverage report snapshot, or null when coverage is disabled. Each call
89
+ * returns a fresh frozen object — safe to retain across further fire()s
90
+ * without seeing later mutations.
91
+ */
92
+ get coverage(): CoverageReport | null;
93
+ /** Captured chat output (llSay/llShout/llWhisper/llOwnerSay/...). */
94
+ get chat(): ReadonlyArray<ChatEntry>;
95
+ /** Universal log of every ll* call this script has made. Filter with callsOf(name). */
96
+ get calls(): ReadonlyArray<CallEntry>;
97
+ /** Filtered call log: only entries for `name`. */
98
+ callsOf(name: string): ReadonlyArray<CallEntry>;
99
+ /** Captured outgoing HTTP requests from `llHTTPRequest`. */
100
+ get httpRequests(): ReadonlyArray<HttpRequestEntry>;
101
+ /**
102
+ * Feed a response to a previously captured HTTP request. Schedules an
103
+ * `http_response` event for immediate delivery.
104
+ */
105
+ respondToHttp(key: string, response: {
106
+ status: number;
107
+ body?: string;
108
+ metadata?: ReadonlyArray<unknown>;
109
+ }): void;
110
+ /** Convenience: respond to the most recent HTTP request. */
111
+ respondToLastHttp(response: {
112
+ status: number;
113
+ body?: string;
114
+ metadata?: ReadonlyArray<unknown>;
115
+ }): void;
116
+ /** Currently active listen registrations (from `llListen`). */
117
+ get listens(): ReadonlyArray<ListenEntry>;
118
+ /** Captured llMessageLinked invocations originating from this script. */
119
+ get linkedMessages(): ReadonlyArray<LinkedMessageEntry>;
120
+ /** Drop every captured outgoing linked-message entry for this script. */
121
+ clearLinkedMessages(): void;
122
+ /** Captured pending dataserver requests (llRequestAgentData and friends). */
123
+ get dataserverRequests(): ReadonlyArray<DataserverRequestEntry>;
124
+ /**
125
+ * Feed a value back to a pending dataserver request. Schedules a
126
+ * `dataserver` event with the request key and a string value.
127
+ */
128
+ respondToDataserver(key: string, value: string): void;
129
+ /** Convenience: respond to the most recent dataserver request. */
130
+ respondToLastDataserver(value: string): void;
131
+ /** Currently displayed floating text (from llSetText). null if unset. */
132
+ get text(): {
133
+ text: string;
134
+ color: {
135
+ x: number;
136
+ y: number;
137
+ z: number;
138
+ };
139
+ alpha: number;
140
+ } | null;
141
+ /** Object description from llSetObjectDesc. */
142
+ get objectDesc(): string;
143
+ /**
144
+ * Read-only view of the Linkset Data store. Tests can iterate to assert on
145
+ * keys / values / protection. Modify via the LSL builtins or seedLinksetData.
146
+ */
147
+ get linksetData(): ReadonlyMap<string, LinksetDataEntry>;
148
+ /**
149
+ * White-box helper: pre-populate the Linkset Data store without going
150
+ * through llLinksetDataWrite. Does not fire linkset_data events.
151
+ */
152
+ seedLinksetData(entries: Iterable<readonly [string, {
153
+ value: string;
154
+ password?: string;
155
+ }]>): void;
156
+ /** True once `llDie()` has been called. Subsequent fire() calls are no-ops. */
157
+ get dead(): boolean;
158
+ /**
159
+ * Match chat against this script's listens and queue `listen` events for
160
+ * every match. Does not drain — caller does that. Used by Linkset.deliverChat
161
+ * for cross-script delivery.
162
+ */
163
+ matchChatListens(opts: {
164
+ channel: number;
165
+ name: string;
166
+ key: string;
167
+ message: string;
168
+ }): void;
169
+ /**
170
+ * Deliver chat to this script only. Linkset-wide delivery (every listening
171
+ * script in the linkset) is `linkset.deliverChat`.
172
+ */
173
+ deliverChat(opts: {
174
+ channel: number;
175
+ name: string;
176
+ key: string;
177
+ message: string;
178
+ }): void;
179
+ /**
180
+ * Override an `ll*` function for the lifetime of this Script. Replaces
181
+ * any built-in or stub of the same name.
182
+ */
183
+ mock(name: string, impl: BuiltinImpl): void;
184
+ /** Read a global variable's current value. White-box hook for tests. */
185
+ global(name: string): LslValue;
186
+ /** Seed a global variable. The value is coerced to the global's declared type. */
187
+ setGlobal(name: string, value: LslValue, type?: LslType): void;
188
+ /**
189
+ * Drive an event into the current state.
190
+ *
191
+ * `payload` is keyed by the event's documented parameter names (per kwdb).
192
+ * The handler's declared parameters bind by position to the event spec, so
193
+ * the user's chosen names don't have to match.
194
+ *
195
+ * Synchronous: runs the handler to completion before returning, including
196
+ * any state transitions triggered by `state foo;` (state_exit / change /
197
+ * state_entry chain runs before fire() returns).
198
+ *
199
+ * If the current state has no handler for `eventName`, this is a no-op
200
+ * — matches LSL behavior of silently dropping unhandled events.
201
+ */
202
+ fire(eventName: string, payload?: Record<string, unknown>): void;
203
+ /**
204
+ * Run state_entry of the default state. If the script has been auto-started
205
+ * (e.g. by an earlier fire), this is a no-op.
206
+ */
207
+ start(): void;
208
+ /**
209
+ * Reset the script as if `llResetScript` had been called: clear globals,
210
+ * reseed them from the AST initializers, return to the default state,
211
+ * cancel timers, and run state_entry. Used internally when llResetScript
212
+ * is invoked from inside a handler; tests can also call it directly.
213
+ */
214
+ reset(): void;
215
+ /**
216
+ * Internal: invoked by `Linkset.drainQueue` to deliver one queued event.
217
+ * The synthetic `__reset` event triggers a sibling-initiated reset
218
+ * (scheduled by `llResetOtherScript`).
219
+ */
220
+ deliver(event: string, payload: Record<string, unknown>): void;
221
+ /**
222
+ * Push a detected context (if the payload includes `detected`) for the
223
+ * duration of `fn`, so llDetectedKey / Name / Pos / etc. inside the
224
+ * handler resolve to the right entries.
225
+ */
226
+ private withDetected;
227
+ /**
228
+ * Run a handler and process any state-change signal it raises.
229
+ *
230
+ * LSL semantics: when a handler executes `state foo;`, control leaves the
231
+ * handler immediately, the current state's `state_exit` fires, the state
232
+ * changes, then the new state's `state_entry` fires. We mirror that here
233
+ * with a small loop so that a `state_exit` or `state_entry` that itself
234
+ * does `state foo;` continues the chain correctly.
235
+ */
236
+ private runHandler;
237
+ /**
238
+ * Mark this script as dead and cancel its timer. Used by llDie to bring
239
+ * down every script in the linkset. Idempotent.
240
+ */
241
+ markDead(): void;
242
+ /**
243
+ * Replay any events parked while this script was disabled. Caller is
244
+ * responsible for advancing the linkset clock if needed afterwards.
245
+ */
246
+ resumeParked(): void;
247
+ }
248
+ //# sourceMappingURL=script.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"script.d.ts","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"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"}