@rustledger/wasm 0.9.1 → 0.10.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.
package/README.md CHANGED
@@ -1,360 +1,77 @@
1
- <div align="center">
1
+ # rustledger-wasm
2
2
 
3
- # rustledger
3
+ WebAssembly bindings for rustledger, enabling Beancount functionality in JavaScript/TypeScript.
4
4
 
5
- **A blazing-fast Rust implementation of [Beancount](https://beancount.github.io/)**
5
+ ## Features
6
6
 
7
- Parse and validate your ledger faster than Python beancount.
8
-
9
- [![CI](https://github.com/rustledger/rustledger/actions/workflows/ci.yml/badge.svg)](https://github.com/rustledger/rustledger/actions/workflows/ci.yml)
10
- [![Compatibility](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/rustledger/rustledger/compatibility/.github/badges/compat-badge.json)](https://github.com/rustledger/rustledger/actions/workflows/compat.yml)
11
- [![docs.rs](https://img.shields.io/docsrs/rustledger-core)](https://docs.rs/rustledger-core)
12
- [![GitHub Release](https://img.shields.io/github/v/release/rustledger/rustledger)](https://github.com/rustledger/rustledger/releases)
13
- [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](LICENSE)
14
- [![Liberapay](https://img.shields.io/liberapay/gives/rustledger.svg?logo=liberapay)](https://liberapay.com/rustledger)
15
-
16
- </div>
17
-
18
- ---
19
-
20
- ## Why rustledger?
21
-
22
- | | |
23
- |---|---|
24
- | **10-30x faster** | Parse and validate large ledgers in milliseconds ([see benchmarks](#performance)) |
25
- | **No dependencies** | No Python runtime, no libraries to install |
26
- | **Drop-in replacement** | Compatible `bean-*` CLI commands for easy migration |
27
- | **Full compatibility** | Parses any valid beancount file |
28
- | **Editor support** | LSP server for VS Code, Neovim, Helix, and more |
29
- | **AI-ready** | MCP server for Claude, Cursor, and other AI assistants |
30
- | **Runs anywhere** | WebAssembly support for browser and Node.js |
31
- | **Better errors** | Detailed error messages with source locations |
32
- | **20 built-in plugins** | Plus Python plugin compatibility via WASI sandbox |
33
-
34
- <details>
35
- <summary><strong>Comparison with other tools</strong></summary>
36
-
37
- | Feature | rustledger | Python beancount | hledger | ledger-cli |
38
- |---------|------------|------------------|---------|------------|
39
- | **Language** | Rust | Python | Haskell | C++ |
40
- | **Speed** | Very fast | Slow | Fast | Fast |
41
- | **Beancount syntax** | Native | Native | Via conversion | No |
42
- | **Query language** | BQL (100% compat) | BQL | Custom | Custom |
43
- | **LSP server** | Built-in | No | Via plugin | No |
44
- | **WASM support** | Yes | No | Partial | No |
45
- | **Plugin system** | Native + Python | Python | Haskell | Custom |
46
- | **Active development** | Yes | Maintenance | Yes | Limited |
47
-
48
- **When to use rustledger:**
49
- - You use Beancount syntax and want speed
50
- - You want a single binary with no runtime dependencies
51
- - You need LSP editor integration
52
- - You want to use existing Python plugins
53
-
54
- **When to use Python beancount:**
55
- - You need Fava web interface (until rustledger integration)
56
- - You have complex Python plugins with C extensions
57
-
58
- **When to use hledger:**
59
- - You prefer hledger's syntax and reports
60
- - You need time-tracking features
61
-
62
- </details>
63
-
64
- ## Install
65
-
66
- | Platform | Command | Status |
67
- |----------|---------|:------:|
68
- | **macOS** | `brew install rustledger` | [![Homebrew macOS](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/rustledger/rustledger/badges/.github/badges/test-homebrew-macos.json)](https://github.com/rustledger/rustledger/actions/workflows/release-test.yml) |
69
- | **Linux** | `brew install rustledger` | [![Homebrew Linux](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/rustledger/rustledger/badges/.github/badges/test-homebrew.json)](https://github.com/rustledger/rustledger/actions/workflows/release-test.yml) |
70
- | **Arch Linux** | `yay -S rustledger-bin` | [![AUR](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/rustledger/rustledger/badges/.github/badges/test-aur.json)](https://github.com/rustledger/rustledger/actions/workflows/release-test.yml) |
71
- | **Fedora/RHEL** | `sudo dnf copr enable robcohen/rustledger && sudo dnf install rustledger` | [![COPR](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/rustledger/rustledger/badges/.github/badges/test-copr.json)](https://github.com/rustledger/rustledger/actions/workflows/release-test.yml) |
72
- | **Windows** | `scoop bucket add rustledger https://github.com/rustledger/scoop-rustledger && scoop install rustledger` | [![Scoop](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/rustledger/rustledger/badges/.github/badges/test-scoop.json)](https://github.com/rustledger/rustledger/actions/workflows/release-test.yml) |
73
- | **Cargo** | `cargo binstall rustledger` or `cargo install rustledger` | [![Cargo](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/rustledger/rustledger/badges/.github/badges/test-cargo.json)](https://github.com/rustledger/rustledger/actions/workflows/release-test.yml) |
74
- | **Nix** | `nix run github:rustledger/rustledger` | [![Nix](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/rustledger/rustledger/badges/.github/badges/test-nix.json)](https://github.com/rustledger/rustledger/actions/workflows/release-test.yml) |
75
- | **Docker** | `docker run --rm -v "$PWD:/data" ghcr.io/rustledger/rustledger /data/ledger.beancount` | [![Docker](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/rustledger/rustledger/badges/.github/badges/test-docker.json)](https://github.com/rustledger/rustledger/actions/workflows/release-test.yml) |
76
- | **Binaries** | [GitHub Releases](https://github.com/rustledger/rustledger/releases) | [![Linux](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/rustledger/rustledger/badges/.github/badges/test-github-release.json)](https://github.com/rustledger/rustledger/actions/workflows/release-test.yml) [![macOS](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/rustledger/rustledger/badges/.github/badges/test-github-release-macos.json)](https://github.com/rustledger/rustledger/actions/workflows/release-test.yml) [![Windows](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/rustledger/rustledger/badges/.github/badges/test-github-release-windows.json)](https://github.com/rustledger/rustledger/actions/workflows/release-test.yml) |
77
- | **npm (WASM)** | `npm install @rustledger/wasm` | [![npm WASM](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/rustledger/rustledger/badges/.github/badges/test-npm.json)](https://github.com/rustledger/rustledger/actions/workflows/release-test.yml) |
78
- | **npm (MCP)** | `npx @rustledger/mcp-server` ([Model Context Protocol](https://modelcontextprotocol.io) server) | [![npm MCP](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/rustledger/rustledger/badges/.github/badges/test-npm-mcp.json)](https://github.com/rustledger/rustledger/actions/workflows/release-test.yml) |
79
-
80
- <sub>Missing your platform? [Open an issue](https://github.com/rustledger/rustledger/issues/new) to request it.</sub>
81
-
82
- **Coming from Python beancount?** See the [Migration Guide](docs/MIGRATION.md) for command equivalents and plugin mapping.
83
-
84
- ## Quick Start
85
-
86
- ```bash
87
- rledger check ledger.beancount
88
- rledger query ledger.beancount "SELECT account, SUM(position) GROUP BY account"
89
- ```
90
-
91
- ## CLI Commands
92
-
93
- | Command | Description |
7
+ | Feature | Description |
94
8
  |---------|-------------|
95
- | `rledger check` | Validate ledger files with detailed error messages |
96
- | `rledger query` | Run BQL queries (interactive shell or one-shot) |
97
- | `rledger format` | Auto-format beancount files |
98
- | `rledger report` | Generate balance, account, and statistics reports |
99
- | `rledger doctor` | Debugging tools for ledger issues |
100
- | `rledger extract` | Import transactions from CSV/OFX bank statements |
101
- | `rledger price` | Fetch commodity prices from online sources |
102
- | `rledger-lsp` | Language Server Protocol for editor integration |
103
-
104
- Python beancount users can also use `bean-check`, `bean-query`, etc.
105
-
106
- <details>
107
- <summary><strong>Report subcommands</strong></summary>
108
-
109
- | Subcommand | Alias | Description |
110
- |------------|-------|-------------|
111
- | `balances` | | All account balances |
112
- | `balsheet` | `bal` | Balance sheet report |
113
- | `income` | `is` | Income statement |
114
- | `journal` | `register` | Transaction register |
115
- | `holdings` | | Investment holdings |
116
- | `networth` | | Net worth over time |
117
- | `accounts` | | List all accounts |
118
- | `commodities` | | List all commodities |
119
- | `prices` | | Price entries |
120
- | `stats` | | Ledger statistics |
121
-
122
- </details>
123
-
124
- <details>
125
- <summary><strong>Doctor subcommands</strong></summary>
126
-
127
- Debugging and diagnostic tools:
128
-
129
- | Subcommand | Description |
130
- |------------|-------------|
131
- | `lex` | Dump lexer tokens (alias: `dump-lexer`) |
132
- | `parse` | Parse and show directives |
133
- | `context` | Show transaction context at a line number |
134
- | `linked` | Find transactions by link (`^link`) or tag (`#tag`) |
135
- | `missing-open` | Generate missing Open directives |
136
- | `list-options` | List all available beancount options |
137
- | `print-options` | Print options parsed from a file |
138
- | `stats` | Display ledger statistics |
139
- | `display-context` | Show inferred decimal precision context |
140
- | `roundtrip` | Round-trip parse/format test |
141
- | `directories` | Validate directory hierarchy against accounts |
142
- | `region` | Print transactions in a line range with balances |
143
- | `generate-synthetic` | Generate synthetic test files |
144
-
145
- ```bash
146
- # Debug a parsing issue at line 42
147
- rledger doctor context ledger.beancount 42
148
-
149
- # Find all transactions with a link
150
- rledger doctor linked ledger.beancount ^trip-2024
151
-
152
- # Generate Open directives for accounts missing them
153
- rledger doctor missing-open ledger.beancount >> ledger.beancount
154
- ```
155
-
156
- </details>
157
-
158
- <sub>Run `rledger <command> --help` for all options.</sub>
159
-
160
- <details>
161
- <summary><strong>CLI examples</strong></summary>
162
-
163
- ```bash
164
- # Validate with plugins
165
- rledger check --native-plugin auto_accounts ledger.beancount
166
-
167
- # Interactive query shell
168
- rledger query ledger.beancount
169
-
170
- # One-shot query
171
- rledger query ledger.beancount "SELECT date, narration WHERE account ~ 'Expenses:Food'"
172
-
173
- # Reports
174
- rledger report ledger.beancount balances
175
- rledger report ledger.beancount stats
176
-
177
- # Format in place
178
- rledger format --in-place ledger.beancount
9
+ | `parse()` | Parse Beancount source to JSON |
10
+ | `validateSource()` | Validate ledger with error reporting |
11
+ | `query()` | Run BQL queries |
12
+ | `format()` | Format source with consistent alignment |
13
+ | `expandPads()` | Expand pad directives |
14
+ | `runPlugin()` | Run native plugins (with `plugins` feature) |
15
+ | `bqlCompletions()` | BQL query completions (with `completions` feature) |
16
+ | `ParsedLedger` | Stateful class with LSP-like editor features |
17
+
18
+ ## Example
19
+
20
+ ```javascript
21
+ import init, { parse, validateSource, query } from '@rustledger/wasm';
22
+
23
+ await init();
24
+
25
+ const source = `
26
+ 2024-01-01 open Assets:Bank USD
27
+ 2024-01-15 * "Coffee"
28
+ Expenses:Food 5.00 USD
29
+ Assets:Bank -5.00 USD
30
+ `;
31
+
32
+ const result = parse(source);
33
+ if (result.errors.length === 0) {
34
+ const validation = validateSource(source);
35
+ console.log('Valid:', validation.valid);
36
+
37
+ const balances = query(source, 'BALANCES');
38
+ console.log('Balances:', balances.rows);
39
+ }
179
40
  ```
180
41
 
181
- </details>
182
-
183
- ## Crates
184
-
185
- | Crate | Description |
186
- |-------|-------------|
187
- | `rustledger` | CLI tool (`rledger check`, `rledger query`, etc.) |
188
- | `rustledger-core` | Core types: Amount, Position, Inventory |
189
- | `rustledger-parser` | Lexer and parser with error recovery |
190
- | `rustledger-loader` | File loading and includes |
191
- | `rustledger-booking` | Interpolation and 7 booking methods |
192
- | `rustledger-validate` | 27 validation error codes |
193
- | `rustledger-query` | BQL query engine |
194
- | `rustledger-plugin` | 20 built-in plugins + Python plugin support |
195
- | `rustledger-importer` | CSV/OFX import framework |
196
- | `rustledger-lsp` | Language Server Protocol for editor integration |
197
- | `rustledger-wasm` | WebAssembly bindings for JavaScript/TypeScript |
198
-
199
- <details>
200
- <summary><strong>Booking methods (7)</strong></summary>
201
-
202
- | Method | Description |
203
- |--------|-------------|
204
- | `STRICT` | Lots must match exactly (default) |
205
- | `STRICT_WITH_SIZE` | Exact-size matches accept oldest lot |
206
- | `FIFO` | First in, first out |
207
- | `LIFO` | Last in, first out |
208
- | `HIFO` | Highest cost first |
209
- | `AVERAGE` | Average cost basis |
210
- | `NONE` | No cost tracking |
211
-
212
- </details>
213
-
214
- <details>
215
- <summary><strong>Built-in plugins (20)</strong></summary>
216
-
217
- | Plugin | Description |
218
- |--------|-------------|
219
- | `auto_accounts` | Auto-generate Open directives |
220
- | `auto_tag` | Automatically tag transactions |
221
- | `check_average_cost` | Validate average cost bookings |
222
- | `check_closing` | Zero balance assertion on account close |
223
- | `check_commodity` | Validate commodity declarations |
224
- | `check_drained` | Ensure accounts are drained before close |
225
- | `close_tree` | Close descendant accounts |
226
- | `coherent_cost` | Enforce cost OR price (not both) |
227
- | `commodity_attr` | Validate commodity attributes |
228
- | `currency_accounts` | Enforce currency constraints on accounts |
229
- | `document_discovery` | Auto-discover document files |
230
- | `implicit_prices` | Generate price entries from transaction costs |
231
- | `leafonly` | Error on postings to non-leaf accounts |
232
- | `noduplicates` | Hash-based duplicate transaction detection |
233
- | `nounused` | Warn on unused accounts |
234
- | `onecommodity` | Single commodity per account |
235
- | `pedantic` | Enable all strict validations |
236
- | `sellgains` | Cross-check capital gains against sales |
237
- | `unique_prices` | One price per day per commodity pair |
238
- | `unrealized` | Calculate unrealized gains |
42
+ ## Stateful API
239
43
 
240
- **Python plugins**: Run existing Python beancount plugins via CPython-WASI sandbox.
44
+ For multiple operations on the same source, use `ParsedLedger` to avoid re-parsing:
241
45
 
242
- </details>
46
+ ```javascript
47
+ import { ParsedLedger } from '@rustledger/wasm';
243
48
 
244
- <details>
245
- <summary><strong>Plugin support</strong></summary>
49
+ const ledger = new ParsedLedger(source);
246
50
 
247
- rustledger supports three types of plugins:
51
+ if (ledger.isValid()) {
52
+ const balances = ledger.balances();
53
+ const formatted = ledger.format();
248
54
 
249
- **Native plugins** (built-in, fastest):
250
- ```bash
251
- # Run a native plugin from CLI
252
- rledger check --native-plugin implicit_prices ledger.beancount
253
-
254
- # Or declare in your beancount file (auto-detected as native):
255
- # plugin "beancount.plugins.auto_accounts"
256
- ```
257
-
258
- **Python file plugins** (via WASM sandbox):
259
- ```bash
260
- # Declare in your beancount file:
261
- # plugin "/path/to/my_plugin.py"
262
- ```
55
+ // Editor features
56
+ const completions = ledger.getCompletions(5, 10);
57
+ const hover = ledger.getHoverInfo(3, 5);
58
+ const definition = ledger.getDefinition(4, 3);
59
+ }
263
60
 
264
- **WASM plugins** (sandboxed WebAssembly):
265
- ```bash
266
- # Load a WASM plugin
267
- rledger check --plugin /path/to/plugin.wasm ledger.beancount
61
+ ledger.free(); // Release WASM memory
268
62
  ```
269
63
 
270
- **How Python plugins work:**
271
- - File-based plugins (`.py` files) run in a sandboxed CPython compiled to WebAssembly
272
- - No system Python installation required
273
- - Plugins cannot access the filesystem or network (sandbox isolation)
274
- - Compatible with most pure-Python beancount plugins
275
-
276
- **Limitations:**
277
- - Module-based plugins (`beancount.plugins.xyz`) only work if rustledger has a native implementation
278
- - Plugins with C extensions won't work (numpy, pandas, etc.)
279
- - No network access (price fetching plugins need alternatives)
280
-
281
- </details>
282
-
283
- ## Editor Integration
64
+ ## Cargo Features
284
65
 
285
- rustledger includes a full-featured Language Server (`rledger-lsp`) for IDE support:
66
+ - `plugins` (default) - Include native plugin support
67
+ - `completions` (default) - Include BQL query completions
286
68
 
287
- - Real-time diagnostics
288
- - Autocompletion (accounts, currencies, payees)
289
- - Go to definition / find references
290
- - Hover information with account balances
291
- - Rename refactoring
292
- - Document formatting
69
+ ## Building
293
70
 
294
- See [LSP setup guide](crates/rustledger-lsp/README.md) for VS Code, Neovim, Helix, Zed, and Emacs.
295
-
296
- ## Performance
297
-
298
- <picture>
299
- <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/rustledger/rustledger/benchmarks/.github/badges/validation-chart.svg">
300
- <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/rustledger/rustledger/benchmarks/.github/badges/validation-chart.svg">
301
- <img alt="Validation Benchmark" src="https://raw.githubusercontent.com/rustledger/rustledger/benchmarks/.github/badges/validation-chart.png" width="100%">
302
- </picture>
303
-
304
- <picture>
305
- <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/rustledger/rustledger/benchmarks/.github/badges/balance-chart.svg">
306
- <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/rustledger/rustledger/benchmarks/.github/badges/balance-chart.svg">
307
- <img alt="Balance Report Benchmark" src="https://raw.githubusercontent.com/rustledger/rustledger/benchmarks/.github/badges/balance-chart.png" width="100%">
308
- </picture>
309
-
310
- <sub>Benchmarks run nightly on 10K transaction ledgers. [View workflow →](https://github.com/rustledger/rustledger/actions/workflows/bench.yml)</sub>
311
-
312
- <details>
313
- <summary><strong>Benchmark details</strong></summary>
314
-
315
- **What's measured:**
316
- - **Validation**: Parse ledger + validate (balance assertions, account opens, etc.)
317
- - **Balance Report**: Parse + compute all account balances
318
-
319
- **Memory efficiency:**
320
- rustledger typically uses 3-5x less memory than Python beancount thanks to Rust's zero-cost abstractions and efficient data structures.
321
-
322
- **Run locally:**
323
71
  ```bash
324
- # Quick comparison (requires nix)
325
- nix develop .#bench
326
- ./scripts/bench.sh
327
-
328
- # Criterion micro-benchmarks
329
- cargo bench -p rustledger-core
330
- cargo bench -p rustledger-parser
72
+ wasm-pack build --target web crates/rustledger-wasm
331
73
  ```
332
74
 
333
- See [BENCHMARKING.md](docs/BENCHMARKING.md) for detailed benchmark documentation.
334
-
335
- </details>
336
-
337
- ## Contributing
338
-
339
- See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and guidelines.
340
-
341
- **Documentation:**
342
- - [Architecture](docs/ARCHITECTURE.md) - Crate structure and data flow
343
- - [BQL Reference](docs/BQL_REFERENCE.md) - Query language guide
344
- - [Importing](docs/IMPORTING.md) - CSV/OFX bank import tutorial
345
- - [Validation errors](docs/VALIDATION_ERRORS.md) - Error code reference
346
- - [API docs](https://docs.rs/rustledger-core) - Rust API documentation
347
-
348
- By submitting a pull request, you agree to the [Contributor License Agreement](CLA.md).
349
-
350
75
  ## License
351
76
 
352
- [GPL-3.0](LICENSE)
353
-
354
- **Commercial licensing available** - [contact us](https://rustledger.github.io/#contact) for proprietary license options.
355
-
356
- ## Funding
357
-
358
- rustledger is free and open source. If you find it useful, consider supporting development:
359
-
360
- [![Support on Liberapay](https://img.shields.io/badge/Support%20on-Liberapay-F6C915?logo=liberapay)](https://liberapay.com/rustledger)
77
+ GPL-3.0
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "Rustledger Contributors"
6
6
  ],
7
7
  "description": "Beancount WebAssembly bindings for JavaScript/TypeScript",
8
- "version": "0.9.1",
8
+ "version": "0.10.1",
9
9
  "license": "GPL-3.0-only",
10
10
  "repository": {
11
11
  "type": "git",
@@ -641,25 +641,25 @@ export function version() {
641
641
  function __wbg_get_imports() {
642
642
  const import0 = {
643
643
  __proto__: null,
644
- __wbg_Error_8c4e43fe74559d73: function(arg0, arg1) {
644
+ __wbg_Error_83742b46f01ce22d: function(arg0, arg1) {
645
645
  const ret = Error(getStringFromWasm0(arg0, arg1));
646
646
  return addHeapObject(ret);
647
647
  },
648
- __wbg_String_8f0eb39a4a4c2f66: function(arg0, arg1) {
648
+ __wbg_String_8564e559799eccda: function(arg0, arg1) {
649
649
  const ret = String(getObject(arg1));
650
650
  const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export, wasm.__wbindgen_export2);
651
651
  const len1 = WASM_VECTOR_LEN;
652
652
  getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);
653
653
  getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);
654
654
  },
655
- __wbg___wbindgen_is_string_cd444516edc5b180: function(arg0) {
655
+ __wbg___wbindgen_is_string_7ef6b97b02428fae: function(arg0) {
656
656
  const ret = typeof(getObject(arg0)) === 'string';
657
657
  return ret;
658
658
  },
659
- __wbg___wbindgen_throw_be289d5034ed271b: function(arg0, arg1) {
659
+ __wbg___wbindgen_throw_6ddd609b62940d55: function(arg0, arg1) {
660
660
  throw new Error(getStringFromWasm0(arg0, arg1));
661
661
  },
662
- __wbg_error_7534b8e9a36f1ab4: function(arg0, arg1) {
662
+ __wbg_error_a6fa202b58aa1cd3: function(arg0, arg1) {
663
663
  let deferred0_0;
664
664
  let deferred0_1;
665
665
  try {
@@ -670,49 +670,49 @@ function __wbg_get_imports() {
670
670
  wasm.__wbindgen_export3(deferred0_0, deferred0_1, 1);
671
671
  }
672
672
  },
673
- __wbg_getTime_1e3cd1391c5c3995: function(arg0) {
673
+ __wbg_getTime_1dad7b5386ddd2d9: function(arg0) {
674
674
  const ret = getObject(arg0).getTime();
675
675
  return ret;
676
676
  },
677
- __wbg_getTimezoneOffset_81776d10a4ec18a8: function(arg0) {
677
+ __wbg_getTimezoneOffset_639bcf2dde21158b: function(arg0) {
678
678
  const ret = getObject(arg0).getTimezoneOffset();
679
679
  return ret;
680
680
  },
681
- __wbg_new_0_73afc35eb544e539: function() {
681
+ __wbg_new_0_1dcafdf5e786e876: function() {
682
682
  const ret = new Date();
683
683
  return addHeapObject(ret);
684
684
  },
685
- __wbg_new_245cd5c49157e602: function(arg0) {
686
- const ret = new Date(getObject(arg0));
685
+ __wbg_new_227d7c05414eb861: function() {
686
+ const ret = new Error();
687
687
  return addHeapObject(ret);
688
688
  },
689
- __wbg_new_361308b2356cecd0: function() {
690
- const ret = new Object();
689
+ __wbg_new_49d5571bd3f0c4d4: function() {
690
+ const ret = new Map();
691
691
  return addHeapObject(ret);
692
692
  },
693
- __wbg_new_3eb36ae241fe6f44: function() {
693
+ __wbg_new_a70fbab9066b301f: function() {
694
694
  const ret = new Array();
695
695
  return addHeapObject(ret);
696
696
  },
697
- __wbg_new_8a6f238a6ece86ea: function() {
698
- const ret = new Error();
697
+ __wbg_new_ab79df5bd7c26067: function() {
698
+ const ret = new Object();
699
699
  return addHeapObject(ret);
700
700
  },
701
- __wbg_new_dca287b076112a51: function() {
702
- const ret = new Map();
701
+ __wbg_new_fd94ca5c9639abd2: function(arg0) {
702
+ const ret = new Date(getObject(arg0));
703
703
  return addHeapObject(ret);
704
704
  },
705
- __wbg_set_1eb0999cf5d27fc8: function(arg0, arg1, arg2) {
706
- const ret = getObject(arg0).set(getObject(arg1), getObject(arg2));
707
- return addHeapObject(ret);
705
+ __wbg_set_282384002438957f: function(arg0, arg1, arg2) {
706
+ getObject(arg0)[arg1 >>> 0] = takeObject(arg2);
708
707
  },
709
- __wbg_set_3f1d0b984ed272ed: function(arg0, arg1, arg2) {
708
+ __wbg_set_6be42768c690e380: function(arg0, arg1, arg2) {
710
709
  getObject(arg0)[takeObject(arg1)] = takeObject(arg2);
711
710
  },
712
- __wbg_set_f43e577aea94465b: function(arg0, arg1, arg2) {
713
- getObject(arg0)[arg1 >>> 0] = takeObject(arg2);
711
+ __wbg_set_bf7251625df30a02: function(arg0, arg1, arg2) {
712
+ const ret = getObject(arg0).set(getObject(arg1), getObject(arg2));
713
+ return addHeapObject(ret);
714
714
  },
715
- __wbg_stack_0ed75d68575b0f3c: function(arg0, arg1) {
715
+ __wbg_stack_3b0d974bbf31e44f: function(arg0, arg1) {
716
716
  const ret = getObject(arg1).stack;
717
717
  const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export, wasm.__wbindgen_export2);
718
718
  const len1 = WASM_VECTOR_LEN;
@@ -762,7 +762,7 @@ function addHeapObject(obj) {
762
762
  }
763
763
 
764
764
  function dropObject(idx) {
765
- if (idx < 132) return;
765
+ if (idx < 1028) return;
766
766
  heap[idx] = heap_next;
767
767
  heap_next = idx;
768
768
  }
@@ -790,7 +790,7 @@ function getUint8ArrayMemory0() {
790
790
 
791
791
  function getObject(idx) { return heap[idx]; }
792
792
 
793
- let heap = new Array(128).fill(undefined);
793
+ let heap = new Array(1024).fill(undefined);
794
794
  heap.push(undefined, null, true, false);
795
795
 
796
796
  let heap_next = heap.length;
Binary file