@formata/stof 0.9.15 → 0.9.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -19,61 +19,51 @@
19
19
  <br/>
20
20
 
21
21
  ## Overview
22
+
22
23
  Data and logic have always been separate. That makes things hard. Stof puts them together.
23
24
 
24
- A portable document format where validation, functions, and behavior live alongside the data they belong to, in one document, across any service, language, or runtime.
25
+ A portable document format where validation, functions, and behavior live alongside the data they belong to in one document, across any service, language, or runtime.
25
26
 
26
- > Works with JSON, YAML, TOML, etc. out of the box for seamless interchange. Add sandboxed logic as data where you need it for immediate eval/transforms.
27
+ - **Superset of JSON** valid JSON is always valid Stof. Works with YAML, TOML, and more out of the box.
28
+ - **Sandboxed execution** — logic runs in a secure, isolated runtime. Safe to execute untrusted code from external sources.
29
+ - **Built in Rust, runs everywhere** — native crate, WebAssembly for JS/TS (Node, Deno, Bun, browser), and Python bindings via PyPI.
27
30
 
28
- > Built with Stof: [Limitr](https://limitr.dev) is an open source pricing and enforcement engine. The entire policy - plans, credits, limits, validation logic - lives in a single Stof document.
31
+ > Used in production: [Limitr](https://limitr.dev)'s pricing policy engine plans, credits, limits, validation logic runs entirely on Stof.
32
+
33
+
34
+ ## Data That Does Things
35
+
36
+ Stof starts where JSON ends. Add functions right next to the data they operate on.
29
37
 
30
- ## Define Data and Logic Together - Combine/Split as Needed
31
- `npm i @formata/stof`
32
38
  ```typescript
33
39
  import { stofAsync } from '@formata/stof';
34
40
 
35
- const doc = await stofAsync`{
36
- json: '{"plans":{"pro":{"label":"Pro","price":{"amount":20},"entitlements":{"ai_chat":{"description":"AI Chat Feature","limit":{"credit":"chat-token","value":100000,"resets":true,"reset_inc":1.0}}}}}}'
37
- yaml: ''
41
+ const doc = await stofAsync`
42
+ name: "Alice"
43
+ age: 30
38
44
 
39
- fn transform() {
40
- const policy = new {};
41
- parse(self.json, policy, 'json');
42
-
43
- policy.plans.pro.price.amount = 50;
44
- const entitlements = policy.plans.pro.entitlements;
45
- entitlements.ai_chat.limit.value *= 2;
46
-
47
- self.yaml = stringify('yaml', policy);
48
- Std.pln(self.yaml);
45
+ fn greet() -> str {
46
+ 'Hello, ' + self.name + '!'
49
47
  }
50
- }`;
51
- doc.lib('Std', 'pln', (...args: unknown[])=>console.log(...args));
48
+
49
+ fn can_rent_car() -> bool {
50
+ self.age >= 25
51
+ }
52
+ `;
52
53
 
53
- await doc.call('transform');
54
- ```
55
- ```bash
56
- bun run transform.ts
57
- plans:
58
- pro:
59
- label: Pro
60
- price:
61
- amount: 50
62
- entitlements:
63
- ai_chat:
64
- description: AI Chat Feature
65
- limit:
66
- credit: chat-token
67
- value: 200000
68
- resets: true
69
- reset_inc: 1.0
54
+ console.log(await doc.call('greet')); // Hello, Alice!
55
+ console.log(await doc.call('can_rent_car')); // true
70
56
  ```
71
57
 
58
+ No separate schema file. No external validator. The data knows its own rules.
59
+
60
+
72
61
  ## Units & Types
73
- Rich type system for accuracy and consistency across environments + conversions (time, memory e.g. GB or MiB, temperature, etc.).
62
+
63
+ Rich type system with automatic unit conversions — time, distance, memory, temperature, and more.
74
64
 
75
65
  ```typescript
76
- import { stofAsync } from '../doc.ts';
66
+ import { stofAsync } from '@formata/stof';
77
67
 
78
68
  const doc = await stofAsync`
79
69
  #[type]
@@ -102,10 +92,56 @@ const dist = await doc.call('distance', '{ "x": 3, "y": 4 }');
102
92
  console.log(dist); // 170.52
103
93
  ```
104
94
 
95
+
96
+ ## Format Interop
97
+
98
+ Combine JSON, YAML, TOML, and Stof in a single document. Parse one format, transform it, export as another.
99
+
100
+ ```typescript
101
+ import { stofAsync } from '@formata/stof';
102
+
103
+ const doc = await stofAsync`{
104
+ json: '{"plans":{"pro":{"label":"Pro","price":{"amount":20},"entitlements":{"ai_chat":{"description":"AI Chat Feature","limit":{"credit":"chat-token","value":100000,"resets":true,"reset_inc":1.0}}}}}}'
105
+ yaml: ''
106
+
107
+ fn transform() {
108
+ const policy = new {};
109
+ parse(self.json, policy, 'json');
110
+
111
+ policy.plans.pro.price.amount = 50;
112
+ const entitlements = policy.plans.pro.entitlements;
113
+ entitlements.ai_chat.limit.value *= 2;
114
+
115
+ self.yaml = stringify('yaml', policy);
116
+ Std.pln(self.yaml);
117
+ }
118
+ }`;
119
+ doc.lib('Std', 'pln', (...args: unknown[])=>console.log(...args));
120
+
121
+ await doc.call('transform');
122
+ ```
123
+ ```
124
+ plans:
125
+ pro:
126
+ label: Pro
127
+ price:
128
+ amount: 50
129
+ entitlements:
130
+ ai_chat:
131
+ description: AI Chat Feature
132
+ limit:
133
+ credit: chat-token
134
+ value: 200000
135
+ resets: true
136
+ reset_inc: 1.0
137
+ ```
138
+
139
+
105
140
  ## Self-Expanding Contexts
106
- Documents evolve over time. Stof can even parse itself for immediate use in the same call.
107
141
 
108
- Small surface area, always sandboxed (wasm + host libs), ultra portable, and quick.
142
+ This is the capability that changes everything.
143
+
144
+ Stof documents can parse new Stof into themselves at runtime — receiving code over the network and immediately executing it. The program grows while it runs, always sandboxed.
109
145
 
110
146
  ```typescript
111
147
  import { stofAsync } from '@formata/stof';
@@ -114,9 +150,10 @@ const doc = await stofAsync`
114
150
  api: {}
115
151
 
116
152
  fn load_api(stof: str) {
117
- parse(stof, self.api); // parses itself
153
+ parse(stof, self.api);
118
154
  }`;
119
155
 
156
+ // Imagine this arriving over HTTP, from another service, or from an agent
120
157
  const api = `
121
158
  name: 'Stof'
122
159
  fn message() -> str { 'Hello, ' + self.name ?? 'World' + '!!' }
@@ -128,12 +165,14 @@ fn main() {
128
165
 
129
166
  doc.lib('Std', 'pln', (...args: unknown[])=>console.log(...args));
130
167
  await doc.call('load_api', api);
131
- await doc.run(); // calls #[main] funcs - see docs
168
+ await doc.run(); // calls #[main] funcs
132
169
 
133
170
  // Hello, Stof
134
171
  ```
135
172
 
173
+
136
174
  ## CLI
175
+
137
176
  See [installation docs](https://docs.stof.dev/book/installation) for CLI instructions and more information.
138
177
 
139
178
  ```rust
@@ -147,11 +186,14 @@ fn say_hi() {
147
186
  Hello, world!
148
187
  ```
149
188
 
189
+
150
190
  ## Embedded
191
+
151
192
  Stof is written in Rust, but use it where you work. Join the project [Discord](https://discord.gg/Up5kxdeXZt) to contribute.
152
193
 
153
194
  ### Rust
154
- ``` toml
195
+
196
+ ```toml
155
197
  [dependencies]
156
198
  stof = "0.9.*"
157
199
  ```
@@ -176,6 +218,7 @@ fn main() {
176
218
  ```
177
219
 
178
220
  ### Python
221
+
179
222
  `pip install stof`
180
223
 
181
224
  ```python
@@ -206,9 +249,11 @@ if __name__ == "__main__":
206
249
  ```
207
250
 
208
251
  ### JavaScript/TypeScript
252
+
209
253
  `npm i @formata/stof`
210
254
 
211
255
  #### Initialization
256
+
212
257
  Stof uses WebAssembly, so make sure to initialize it once.
213
258
 
214
259
  ```typescript
@@ -226,39 +271,39 @@ import { initStof } from '@formata/stof';
226
271
  import stofWasm from '@formata/stof/wasm';
227
272
  await initStof(await stofWasm());
228
273
  ```
274
+
275
+ #### Usage
276
+
229
277
  ```typescript
230
278
  import { initStof, StofDoc } from '@formata/stof';
231
279
 
232
- // Initialize wasm once at startup
233
280
  await initStof();
234
281
 
235
- // Create and parse documents
236
282
  const doc = new StofDoc();
237
283
  doc.parse(`
238
284
  name: "Alice"
239
285
  age: 30
240
- fn greet() -> string {
241
- "Hello, " + self.name
286
+ fn greet() -> str {
287
+ 'Hello, ' + self.name
242
288
  }
243
289
  `);
244
290
 
245
- // Call functions and access values
246
291
  const greeting = await doc.call('greet');
247
292
  console.log(greeting); // "Hello, Alice"
248
293
  console.log(doc.get('age')); // 30
249
294
  ```
250
295
 
251
296
  #### JavaScript Interop
297
+
252
298
  ```typescript
253
299
  await initStof();
254
300
  const doc = new StofDoc();
255
301
 
256
- // Register JS functions
257
302
  doc.lib('console', 'log', (...args: unknown[]) => console.log(...args));
258
303
  doc.lib('fetch', 'get', async (url: string) => {
259
304
  const res = await fetch(url);
260
305
  return await res.json();
261
- }, true); // true = async function - full support
306
+ }, true); // true = async function
262
307
 
263
308
  doc.parse(`
264
309
  fn main() {
@@ -271,21 +316,24 @@ await doc.call('main');
271
316
  ```
272
317
 
273
318
  #### Parse & Export
319
+
274
320
  ```typescript
275
- // Parse from JSON
276
321
  doc.parse({ name: "Bob", age: 25 });
277
322
 
278
- // Export to different formats
279
323
  const json = doc.stringify('json');
280
- const obj = doc.record(); // JavaScript object
324
+ const obj = doc.record();
281
325
  ```
282
326
 
283
327
  **Supports**: Node.js, Browser, Deno, Bun, Edge runtimes
284
328
 
329
+
285
330
  ## License
331
+
286
332
  Apache 2.0. See LICENSE for details.
287
333
 
334
+
288
335
  ## Feedback & Community
336
+
289
337
  - Open issues or discussions on [GitHub](https://github.com/dev-formata-io/stof)
290
338
  - Chat with us on [Discord](https://discord.gg/Up5kxdeXZt)
291
339
  - Star the project to support future development!
package/dist/doc.d.ts CHANGED
@@ -22,9 +22,9 @@ export declare function stofAsync(strings: TemplateStringsArray, ...values: unkn
22
22
  * Stof document.
23
23
  */
24
24
  export declare class StofDoc {
25
- static readonly VERSION = "0.9.14";
25
+ static readonly VERSION = "0.9.17";
26
26
  private static initialized?;
27
- private static wasmGate;
27
+ private static wasmMutex;
28
28
  stof: Stof;
29
29
  /**
30
30
  * Initialize Stof WASM.
@@ -39,7 +39,7 @@ export declare class StofDoc {
39
39
  /**
40
40
  * Ensure stof is initialized before creating a new instance.
41
41
  */
42
- static new(): Promise<StofDoc>;
42
+ static new(src?: string | Record<string, unknown> | Uint8Array, format?: string, profile?: 'prod' | 'test'): Promise<StofDoc>;
43
43
  /**
44
44
  * Parse a JS object into a StofDoc.
45
45
  */
@@ -107,16 +107,5 @@ export declare class StofDoc {
107
107
  * Create a deep copy of this document.
108
108
  */
109
109
  clone(): Promise<StofDoc>;
110
- /*****************************************************************************
111
- * Network.
112
- *****************************************************************************/
113
- /**
114
- * Send Stof doc string body as an HTTP request.
115
- */
116
- static send(url: string, stof: string, method?: string, bearer?: string, headers?: Record<string, string>): Promise<Response>;
117
- /**
118
- * Send this document ('bstf' format) as an HTTP request.
119
- */
120
- send(url: string, method?: string, bearer?: string, headers?: Record<string, string>): Promise<Response>;
121
110
  }
122
111
  //# sourceMappingURL=doc.d.ts.map
package/dist/doc.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"doc.d.ts","sourceRoot":"","sources":["../doc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doc.d.ts","sourceRoot":"","sources":["../doc.ts"],"names":[],"mappings":"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"}
package/dist/doc.js CHANGED
@@ -119,17 +119,31 @@ export async function stofAsync(strings, ...values) {
119
119
  return doc;
120
120
  }
121
121
  /**
122
- * Internal gate to serialize WASM calls.
122
+ * Internal mutex for single linear WASM.
123
123
  * Prevents race conditions and memory issues.
124
124
  */
125
- class WasmGate {
125
+ class WasmMutex {
126
126
  constructor() {
127
- this.tail = Promise.resolve();
127
+ this.locked = false;
128
+ this.waiters = [];
128
129
  }
129
- run(fn) {
130
- const next = this.tail.then(fn, fn);
131
- this.tail = next.catch(() => { });
132
- return next;
130
+ acquire() {
131
+ if (!this.locked) {
132
+ this.locked = true;
133
+ return Promise.resolve();
134
+ }
135
+ return new Promise((resolve) => {
136
+ this.waiters.push(resolve);
137
+ });
138
+ }
139
+ release() {
140
+ if (this.waiters.length > 0) {
141
+ const next = this.waiters.shift();
142
+ setTimeout(next, 0); // Resolve on next so frame completes
143
+ }
144
+ else {
145
+ this.locked = false;
146
+ }
133
147
  }
134
148
  }
135
149
  /**
@@ -162,9 +176,12 @@ export class StofDoc {
162
176
  /**
163
177
  * Ensure stof is initialized before creating a new instance.
164
178
  */
165
- static async new() {
179
+ static async new(src, format = "stof", profile = 'prod') {
166
180
  await initStof();
167
- return new StofDoc();
181
+ const doc = new StofDoc();
182
+ if (src)
183
+ doc.parse(src, format, undefined, profile);
184
+ return doc;
168
185
  }
169
186
  /**
170
187
  * Parse a JS object into a StofDoc.
@@ -199,16 +216,19 @@ export class StofDoc {
199
216
  * Add JS library function.
200
217
  */
201
218
  // deno-lint-ignore ban-types
202
- lib(library, name, func, is_async = false) {
219
+ lib(library, name, func, is_async) {
203
220
  const docid = this.stof.docid();
204
- this.stof.js_library_function(new StofFunc(docid, library, name, func, is_async));
221
+ const async_fn = is_async ?? func.constructor.name === "AsyncFunction";
222
+ this.stof.js_library_function(new StofFunc(docid, library, name, func, async_fn));
205
223
  }
206
224
  /**
207
225
  * Run this document with a given set of Stof attributes.
208
226
  * Will run all #[main] functions by default.
209
227
  */
210
228
  async run(attr = 'main') {
211
- return await StofDoc.wasmGate.run(() => this.stof.run(attr));
229
+ const acquire = () => StofDoc.wasmMutex.acquire();
230
+ const release = () => StofDoc.wasmMutex.release();
231
+ return await this.stof.run_with_gate(attr, acquire, release);
212
232
  }
213
233
  /**
214
234
  * Run this document with a given set of Stof attributes (synchronously).
@@ -224,7 +244,9 @@ export class StofDoc {
224
244
  async call(path, ...args) {
225
245
  if (!path.includes('.'))
226
246
  path = 'root.' + path; // assume root node if not specified
227
- return await StofDoc.wasmGate.run(() => this.stof.call(path, args));
247
+ const acquire = () => StofDoc.wasmMutex.acquire();
248
+ const release = () => StofDoc.wasmMutex.release();
249
+ return await this.stof.call_with_gate(path, args, acquire, release);
228
250
  }
229
251
  /**
230
252
  * Call a specific Stof function by path/name.
@@ -288,39 +310,7 @@ export class StofDoc {
288
310
  doc.stof.binaryImport(serialized, 'bstf', null, 'prod');
289
311
  return doc;
290
312
  }
291
- /*****************************************************************************
292
- * Network.
293
- *****************************************************************************/
294
- /**
295
- * Send Stof doc string body as an HTTP request.
296
- */
297
- static async send(url, stof, method = 'POST', bearer, headers = {}) {
298
- headers['Content-Type'] = 'application/stof';
299
- if (bearer !== undefined)
300
- headers['Authorization'] = `Bearer ${bearer}`;
301
- return await fetch(url, {
302
- method,
303
- headers: headers,
304
- body: stof
305
- });
306
- }
307
- /**
308
- * Send this document ('bstf' format) as an HTTP request.
309
- */
310
- async send(url, method = 'POST', bearer, headers = {}) {
311
- return await StofDoc.wasmGate.run(async () => {
312
- headers['Content-Type'] = 'application/bstf';
313
- if (bearer !== undefined)
314
- headers['Authorization'] = `Bearer ${bearer}`;
315
- const body = this.stof.binaryExport('bstf', null); // Uint8Array
316
- return await fetch(url, {
317
- method,
318
- headers: headers,
319
- body
320
- });
321
- });
322
- }
323
313
  }
324
- StofDoc.VERSION = '0.9.14';
325
- StofDoc.wasmGate = new WasmGate();
314
+ StofDoc.VERSION = '0.9.17';
315
+ StofDoc.wasmMutex = new WasmMutex();
326
316
  //# sourceMappingURL=doc.js.map
package/dist/doc.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"doc.js","sourceRoot":"","sources":["../doc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doc.js","sourceRoot":"","sources":["../doc.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,11 @@ export class Stof {
18
18
  * Import a JS object value.
19
19
  */
20
20
  objImport(js_obj: any, node: any): boolean;
21
+ /**
22
+ * Run functions with the given attribute(s) in this document.
23
+ * Attributes defaults to #[main] functions if null or undefined.
24
+ */
25
+ run_with_gate(attributes: any, acquire: Function, release: Function): Promise<string>;
21
26
  /**
22
27
  * String export, using a format of choice.
23
28
  */
@@ -26,6 +31,12 @@ export class Stof {
26
31
  * String import, using a format of choice (including stof).
27
32
  */
28
33
  stringImport(src: string, format: string, node: any, profile: string): boolean;
34
+ /**
35
+ * Call a singular function in the document (by path).
36
+ * If no arguments, pass undefined as args.
37
+ * Otherwise, pass an array of arguments as args.
38
+ */
39
+ call_with_gate(path: string, args: any, acquire: Function, release: Function): Promise<any>;
29
40
  /**
30
41
  * Insert a JS function as a library function, available in Stof.
31
42
  */
@@ -38,21 +49,10 @@ export class Stof {
38
49
  * Construct a new document.
39
50
  */
40
51
  constructor();
41
- /**
42
- * Run functions with the given attribute(s) in this document.
43
- * Attributes defaults to #[main] functions if null or undefined.
44
- */
45
- run(attributes: any): Promise<string>;
46
52
  /**
47
53
  * Set a value onto this graph using the Stof runtime.
48
54
  */
49
55
  set(path: string, value: any, start: any): boolean;
50
- /**
51
- * Call a singular function in the document (by path).
52
- * If no arguments, pass undefined as args.
53
- * Otherwise, pass an array of arguments as args.
54
- */
55
- call(path: string, args: any): Promise<any>;
56
56
  /**
57
57
  * Get the ID of this document as a string.
58
58
  */
@@ -100,14 +100,14 @@ export interface InitOutput {
100
100
  readonly start: () => void;
101
101
  readonly stof_binaryExport: (a: number, b: number, c: number, d: any) => [number, number, number];
102
102
  readonly stof_binaryImport: (a: number, b: any, c: number, d: number, e: any, f: number, g: number) => [number, number, number];
103
- readonly stof_call: (a: number, b: number, c: number, d: any) => any;
103
+ readonly stof_call_with_gate: (a: number, b: number, c: number, d: any, e: any, f: any) => any;
104
104
  readonly stof_docid: (a: number) => [number, number];
105
105
  readonly stof_get: (a: number, b: number, c: number, d: any) => any;
106
106
  readonly stof_js_library_function: (a: number, b: number) => void;
107
107
  readonly stof_new: () => number;
108
108
  readonly stof_objImport: (a: number, b: any, c: any) => [number, number, number];
109
109
  readonly stof_parse: (a: number, b: number, c: number, d: any, e: number, f: number) => [number, number, number];
110
- readonly stof_run: (a: number, b: any) => any;
110
+ readonly stof_run_with_gate: (a: number, b: any, c: any, d: any) => any;
111
111
  readonly stof_set: (a: number, b: number, c: number, d: any, e: any) => number;
112
112
  readonly stof_stringExport: (a: number, b: number, c: number, d: any) => [number, number, number, number];
113
113
  readonly stof_stringImport: (a: number, b: number, c: number, d: number, e: number, f: any, g: number, h: number) => [number, number, number];
package/dist/pkg/stof.js CHANGED
@@ -300,6 +300,18 @@ export class Stof {
300
300
  }
301
301
  return ret[0] !== 0;
302
302
  }
303
+ /**
304
+ * Run functions with the given attribute(s) in this document.
305
+ * Attributes defaults to #[main] functions if null or undefined.
306
+ * @param {any} attributes
307
+ * @param {Function} acquire
308
+ * @param {Function} release
309
+ * @returns {Promise<string>}
310
+ */
311
+ run_with_gate(attributes, acquire, release) {
312
+ const ret = wasm.stof_run_with_gate(this.__wbg_ptr, attributes, acquire, release);
313
+ return ret;
314
+ }
303
315
  /**
304
316
  * String export, using a format of choice.
305
317
  * @param {string} format
@@ -347,6 +359,22 @@ export class Stof {
347
359
  }
348
360
  return ret[0] !== 0;
349
361
  }
362
+ /**
363
+ * Call a singular function in the document (by path).
364
+ * If no arguments, pass undefined as args.
365
+ * Otherwise, pass an array of arguments as args.
366
+ * @param {string} path
367
+ * @param {any} args
368
+ * @param {Function} acquire
369
+ * @param {Function} release
370
+ * @returns {Promise<any>}
371
+ */
372
+ call_with_gate(path, args, acquire, release) {
373
+ const ptr0 = passStringToWasm0(path, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
374
+ const len0 = WASM_VECTOR_LEN;
375
+ const ret = wasm.stof_call_with_gate(this.__wbg_ptr, ptr0, len0, args, acquire, release);
376
+ return ret;
377
+ }
350
378
  /**
351
379
  * Insert a JS function as a library function, available in Stof.
352
380
  * @param {StofFunc} func
@@ -377,16 +405,6 @@ export class Stof {
377
405
  StofFinalization.register(this, this.__wbg_ptr, this);
378
406
  return this;
379
407
  }
380
- /**
381
- * Run functions with the given attribute(s) in this document.
382
- * Attributes defaults to #[main] functions if null or undefined.
383
- * @param {any} attributes
384
- * @returns {Promise<string>}
385
- */
386
- run(attributes) {
387
- const ret = wasm.stof_run(this.__wbg_ptr, attributes);
388
- return ret;
389
- }
390
408
  /**
391
409
  * Set a value onto this graph using the Stof runtime.
392
410
  * @param {string} path
@@ -400,20 +418,6 @@ export class Stof {
400
418
  const ret = wasm.stof_set(this.__wbg_ptr, ptr0, len0, value, start);
401
419
  return ret !== 0;
402
420
  }
403
- /**
404
- * Call a singular function in the document (by path).
405
- * If no arguments, pass undefined as args.
406
- * Otherwise, pass an array of arguments as args.
407
- * @param {string} path
408
- * @param {any} args
409
- * @returns {Promise<any>}
410
- */
411
- call(path, args) {
412
- const ptr0 = passStringToWasm0(path, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
413
- const len0 = WASM_VECTOR_LEN;
414
- const ret = wasm.stof_call(this.__wbg_ptr, ptr0, len0, args);
415
- return ret;
416
- }
417
421
  /**
418
422
  * Get the ID of this document as a string.
419
423
  * @returns {string}
@@ -1015,8 +1019,8 @@ function __wbg_get_imports() {
1015
1019
  const ret = BigInt.asUintN(64, arg0);
1016
1020
  return ret;
1017
1021
  };
1018
- imports.wbg.__wbindgen_cast_79b583b6f4ba1f12 = function(arg0, arg1) {
1019
- // Cast intrinsic for `Closure(Closure { dtor_idx: 7050, function: Function { arguments: [Externref], shim_idx: 7051, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
1022
+ imports.wbg.__wbindgen_cast_4f41d4709fd67779 = function(arg0, arg1) {
1023
+ // Cast intrinsic for `Closure(Closure { dtor_idx: 7056, function: Function { arguments: [Externref], shim_idx: 7057, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
1020
1024
  const ret = makeMutClosure(arg0, arg1, wasm.wasm_bindgen__closure__destroy__h72b14ab7db8750ca, wasm_bindgen__convert__closures_____invoke__h53d5cf04cab8438f);
1021
1025
  return ret;
1022
1026
  };
Binary file
@@ -6,14 +6,14 @@ export const __wbg_stoffunc_free: (a: number, b: number) => void;
6
6
  export const start: () => void;
7
7
  export const stof_binaryExport: (a: number, b: number, c: number, d: any) => [number, number, number];
8
8
  export const stof_binaryImport: (a: number, b: any, c: number, d: number, e: any, f: number, g: number) => [number, number, number];
9
- export const stof_call: (a: number, b: number, c: number, d: any) => any;
9
+ export const stof_call_with_gate: (a: number, b: number, c: number, d: any, e: any, f: any) => any;
10
10
  export const stof_docid: (a: number) => [number, number];
11
11
  export const stof_get: (a: number, b: number, c: number, d: any) => any;
12
12
  export const stof_js_library_function: (a: number, b: number) => void;
13
13
  export const stof_new: () => number;
14
14
  export const stof_objImport: (a: number, b: any, c: any) => [number, number, number];
15
15
  export const stof_parse: (a: number, b: number, c: number, d: any, e: number, f: number) => [number, number, number];
16
- export const stof_run: (a: number, b: any) => any;
16
+ export const stof_run_with_gate: (a: number, b: any, c: any, d: any) => any;
17
17
  export const stof_set: (a: number, b: number, c: number, d: any, e: any) => number;
18
18
  export const stof_stringExport: (a: number, b: number, c: number, d: any) => [number, number, number, number];
19
19
  export const stof_stringImport: (a: number, b: number, c: number, d: number, e: number, f: any, g: number, h: number) => [number, number, number];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@formata/stof",
3
- "version": "0.9.15",
3
+ "version": "0.9.17",
4
4
  "type": "module",
5
5
  "main": "./dist/doc.js",
6
6
  "types": "./dist/doc.d.ts",