@lute-lang/runtime 0.40.0 → 0.41.1

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.
@@ -33,10 +33,28 @@ export class Program {
33
33
  * The clock position, as `ClockAt` JSON or `null` without a clock.
34
34
  */
35
35
  clock(state: State): string;
36
+ /**
37
+ * Evaluate the bundle's def `name` over the state, its parameters bound
38
+ * to `args` (a JSON array of scalars, one per declared parameter;
39
+ * absent = `[]`), as `Evaluation` JSON; an unknown def, an argument
40
+ * fault or an evaluation error is rejected.
41
+ */
42
+ def(state: State, name: string, args?: string | null): QueryResult;
36
43
  /**
37
44
  * The verdict of `beat` (for `member`), as `Candidate` JSON or `null`.
38
45
  */
39
46
  eligibility(state: State, beat: string, member?: string | null): string;
47
+ /**
48
+ * Evaluate an IR `exprNode` (JSON) over the state, as `Evaluation`
49
+ * JSON; a malformed expression or an evaluation error is rejected.
50
+ */
51
+ evaluate(state: State, expr: string): QueryResult;
52
+ /**
53
+ * Whether a `raiseOccasion` of `occasion` (for `target`) with no writes
54
+ * would pass the seam now, as `Gate` JSON; an occasion the bundle does
55
+ * not declare is rejected.
56
+ */
57
+ gate(state: State, occasion: string, target?: string | null): QueryResult;
40
58
  /**
41
59
  * Load a `project.index.json` and an object mapping artifact paths to IR.
42
60
  *
@@ -72,6 +90,19 @@ export class Program {
72
90
  readonly fingerprint: string;
73
91
  }
74
92
 
93
+ /**
94
+ * The result of a query (`evaluate`, `def`, `gate`): its answer JSON
95
+ * (`Evaluation`, `Gate`) or a rejection.
96
+ */
97
+ export class QueryResult {
98
+ private constructor();
99
+ free(): void;
100
+ [Symbol.dispose](): void;
101
+ readonly ok: boolean;
102
+ readonly rejected: string | undefined;
103
+ readonly value: string | undefined;
104
+ }
105
+
75
106
  /**
76
107
  * The result of restoring a snapshot.
77
108
  */
@@ -112,6 +143,7 @@ export interface InitOutput {
112
143
  readonly memory: WebAssembly.Memory;
113
144
  readonly __wbg_loadresult_free: (a: number, b: number) => void;
114
145
  readonly __wbg_program_free: (a: number, b: number) => void;
146
+ readonly __wbg_queryresult_free: (a: number, b: number) => void;
115
147
  readonly __wbg_restoreresult_free: (a: number, b: number) => void;
116
148
  readonly __wbg_state_free: (a: number, b: number) => void;
117
149
  readonly __wbg_stepresult_free: (a: number, b: number) => void;
@@ -121,8 +153,11 @@ export interface InitOutput {
121
153
  readonly program_begin: (a: number, b: number, c: number) => number;
122
154
  readonly program_candidates: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
123
155
  readonly program_clock: (a: number, b: number) => [number, number];
156
+ readonly program_def: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
124
157
  readonly program_eligibility: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
158
+ readonly program_evaluate: (a: number, b: number, c: number, d: number) => number;
125
159
  readonly program_fingerprint: (a: number) => [number, number];
160
+ readonly program_gate: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
126
161
  readonly program_load: (a: number, b: number, c: number, d: number) => number;
127
162
  readonly program_restore: (a: number, b: number, c: number) => number;
128
163
  readonly program_snapshot: (a: number, b: number) => [number, number];
@@ -130,6 +165,9 @@ export interface InitOutput {
130
165
  readonly program_step: (a: number, b: number, c: number, d: number) => number;
131
166
  readonly program_terminal: (a: number, b: number) => number;
132
167
  readonly program_view: (a: number, b: number, c: number) => [number, number];
168
+ readonly queryresult_ok: (a: number) => number;
169
+ readonly queryresult_rejected: (a: number) => [number, number];
170
+ readonly queryresult_value: (a: number) => [number, number];
133
171
  readonly restoreresult_ok: (a: number) => number;
134
172
  readonly restoreresult_rejected: (a: number) => [number, number];
135
173
  readonly restoreresult_state: (a: number) => number;
@@ -123,6 +123,25 @@ export class Program {
123
123
  wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
124
124
  }
125
125
  }
126
+ /**
127
+ * Evaluate the bundle's def `name` over the state, its parameters bound
128
+ * to `args` (a JSON array of scalars, one per declared parameter;
129
+ * absent = `[]`), as `Evaluation` JSON; an unknown def, an argument
130
+ * fault or an evaluation error is rejected.
131
+ * @param {State} state
132
+ * @param {string} name
133
+ * @param {string | null} [args]
134
+ * @returns {QueryResult}
135
+ */
136
+ def(state, name, args) {
137
+ _assertClass(state, State);
138
+ const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
139
+ const len0 = WASM_VECTOR_LEN;
140
+ var ptr1 = isLikeNone(args) ? 0 : passStringToWasm0(args, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
141
+ var len1 = WASM_VECTOR_LEN;
142
+ const ret = wasm.program_def(this.__wbg_ptr, state.__wbg_ptr, ptr0, len0, ptr1, len1);
143
+ return QueryResult.__wrap(ret);
144
+ }
126
145
  /**
127
146
  * The verdict of `beat` (for `member`), as `Candidate` JSON or `null`.
128
147
  * @param {State} state
@@ -147,6 +166,20 @@ export class Program {
147
166
  wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);
148
167
  }
149
168
  }
169
+ /**
170
+ * Evaluate an IR `exprNode` (JSON) over the state, as `Evaluation`
171
+ * JSON; a malformed expression or an evaluation error is rejected.
172
+ * @param {State} state
173
+ * @param {string} expr
174
+ * @returns {QueryResult}
175
+ */
176
+ evaluate(state, expr) {
177
+ _assertClass(state, State);
178
+ const ptr0 = passStringToWasm0(expr, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
179
+ const len0 = WASM_VECTOR_LEN;
180
+ const ret = wasm.program_evaluate(this.__wbg_ptr, state.__wbg_ptr, ptr0, len0);
181
+ return QueryResult.__wrap(ret);
182
+ }
150
183
  /**
151
184
  * @returns {string}
152
185
  */
@@ -162,6 +195,24 @@ export class Program {
162
195
  wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
163
196
  }
164
197
  }
198
+ /**
199
+ * Whether a `raiseOccasion` of `occasion` (for `target`) with no writes
200
+ * would pass the seam now, as `Gate` JSON; an occasion the bundle does
201
+ * not declare is rejected.
202
+ * @param {State} state
203
+ * @param {string} occasion
204
+ * @param {string | null} [target]
205
+ * @returns {QueryResult}
206
+ */
207
+ gate(state, occasion, target) {
208
+ _assertClass(state, State);
209
+ const ptr0 = passStringToWasm0(occasion, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
210
+ const len0 = WASM_VECTOR_LEN;
211
+ var ptr1 = isLikeNone(target) ? 0 : passStringToWasm0(target, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
212
+ var len1 = WASM_VECTOR_LEN;
213
+ const ret = wasm.program_gate(this.__wbg_ptr, state.__wbg_ptr, ptr0, len0, ptr1, len1);
214
+ return QueryResult.__wrap(ret);
215
+ }
165
216
  /**
166
217
  * Load a `project.index.json` and an object mapping artifact paths to IR.
167
218
  *
@@ -272,6 +323,61 @@ export class Program {
272
323
  }
273
324
  if (Symbol.dispose) Program.prototype[Symbol.dispose] = Program.prototype.free;
274
325
 
326
+ /**
327
+ * The result of a query (`evaluate`, `def`, `gate`): its answer JSON
328
+ * (`Evaluation`, `Gate`) or a rejection.
329
+ */
330
+ export class QueryResult {
331
+ static __wrap(ptr) {
332
+ const obj = Object.create(QueryResult.prototype);
333
+ obj.__wbg_ptr = ptr;
334
+ QueryResultFinalization.register(obj, obj.__wbg_ptr, obj);
335
+ return obj;
336
+ }
337
+ __destroy_into_raw() {
338
+ const ptr = this.__wbg_ptr;
339
+ this.__wbg_ptr = 0;
340
+ QueryResultFinalization.unregister(this);
341
+ return ptr;
342
+ }
343
+ free() {
344
+ const ptr = this.__destroy_into_raw();
345
+ wasm.__wbg_queryresult_free(ptr, 0);
346
+ }
347
+ /**
348
+ * @returns {boolean}
349
+ */
350
+ get ok() {
351
+ const ret = wasm.queryresult_ok(this.__wbg_ptr);
352
+ return ret !== 0;
353
+ }
354
+ /**
355
+ * @returns {string | undefined}
356
+ */
357
+ get rejected() {
358
+ const ret = wasm.queryresult_rejected(this.__wbg_ptr);
359
+ let v1;
360
+ if (ret[0] !== 0) {
361
+ v1 = getStringFromWasm0(ret[0], ret[1]).slice();
362
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
363
+ }
364
+ return v1;
365
+ }
366
+ /**
367
+ * @returns {string | undefined}
368
+ */
369
+ get value() {
370
+ const ret = wasm.queryresult_value(this.__wbg_ptr);
371
+ let v1;
372
+ if (ret[0] !== 0) {
373
+ v1 = getStringFromWasm0(ret[0], ret[1]).slice();
374
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
375
+ }
376
+ return v1;
377
+ }
378
+ }
379
+ if (Symbol.dispose) QueryResult.prototype[Symbol.dispose] = QueryResult.prototype.free;
380
+
275
381
  /**
276
382
  * The result of restoring a snapshot.
277
383
  */
@@ -432,6 +538,9 @@ const LoadResultFinalization = (typeof FinalizationRegistry === 'undefined')
432
538
  const ProgramFinalization = (typeof FinalizationRegistry === 'undefined')
433
539
  ? { register: () => {}, unregister: () => {} }
434
540
  : new FinalizationRegistry(ptr => wasm.__wbg_program_free(ptr, 1));
541
+ const QueryResultFinalization = (typeof FinalizationRegistry === 'undefined')
542
+ ? { register: () => {}, unregister: () => {} }
543
+ : new FinalizationRegistry(ptr => wasm.__wbg_queryresult_free(ptr, 1));
435
544
  const RestoreResultFinalization = (typeof FinalizationRegistry === 'undefined')
436
545
  ? { register: () => {}, unregister: () => {} }
437
546
  : new FinalizationRegistry(ptr => wasm.__wbg_restoreresult_free(ptr, 1));
Binary file
@@ -3,6 +3,7 @@
3
3
  export const memory: WebAssembly.Memory;
4
4
  export const __wbg_loadresult_free: (a: number, b: number) => void;
5
5
  export const __wbg_program_free: (a: number, b: number) => void;
6
+ export const __wbg_queryresult_free: (a: number, b: number) => void;
6
7
  export const __wbg_restoreresult_free: (a: number, b: number) => void;
7
8
  export const __wbg_state_free: (a: number, b: number) => void;
8
9
  export const __wbg_stepresult_free: (a: number, b: number) => void;
@@ -12,8 +13,11 @@ export const loadresult_rejected: (a: number) => [number, number];
12
13
  export const program_begin: (a: number, b: number, c: number) => number;
13
14
  export const program_candidates: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
14
15
  export const program_clock: (a: number, b: number) => [number, number];
16
+ export const program_def: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
15
17
  export const program_eligibility: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
18
+ export const program_evaluate: (a: number, b: number, c: number, d: number) => number;
16
19
  export const program_fingerprint: (a: number) => [number, number];
20
+ export const program_gate: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
17
21
  export const program_load: (a: number, b: number, c: number, d: number) => number;
18
22
  export const program_restore: (a: number, b: number, c: number) => number;
19
23
  export const program_snapshot: (a: number, b: number) => [number, number];
@@ -21,6 +25,9 @@ export const program_stage: (a: number, b: number) => [number, number];
21
25
  export const program_step: (a: number, b: number, c: number, d: number) => number;
22
26
  export const program_terminal: (a: number, b: number) => number;
23
27
  export const program_view: (a: number, b: number, c: number) => [number, number];
28
+ export const queryresult_ok: (a: number) => number;
29
+ export const queryresult_rejected: (a: number) => [number, number];
30
+ export const queryresult_value: (a: number) => [number, number];
24
31
  export const restoreresult_ok: (a: number) => number;
25
32
  export const restoreresult_rejected: (a: number) => [number, number];
26
33
  export const restoreresult_state: (a: number) => number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lute-lang/runtime",
3
- "version": "0.40.0",
3
+ "version": "0.41.1",
4
4
  "description": "The Lute runtime for TypeScript hosts, in Effect: load a compiled Lute bundle, drive the resumable step function, replay input logs (Bun and browsers).",
5
5
  "license": "MIT",
6
6
  "type": "module",