@rustledger/wasm 0.9.1 → 0.10.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.
- package/README.md +55 -338
- package/package.json +1 -1
- package/rustledger_wasm.js +26 -26
- package/rustledger_wasm_bg.wasm +0 -0
package/README.md
CHANGED
|
@@ -1,360 +1,77 @@
|
|
|
1
|
-
|
|
1
|
+
# rustledger-wasm
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
WebAssembly bindings for rustledger, enabling Beancount functionality in JavaScript/TypeScript.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## Features
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
[](https://github.com/rustledger/rustledger/actions/workflows/ci.yml)
|
|
10
|
-
[](https://github.com/rustledger/rustledger/actions/workflows/compat.yml)
|
|
11
|
-
[](https://docs.rs/rustledger-core)
|
|
12
|
-
[](https://github.com/rustledger/rustledger/releases)
|
|
13
|
-
[](LICENSE)
|
|
14
|
-
[](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` | [](https://github.com/rustledger/rustledger/actions/workflows/release-test.yml) |
|
|
69
|
-
| **Linux** | `brew install rustledger` | [](https://github.com/rustledger/rustledger/actions/workflows/release-test.yml) |
|
|
70
|
-
| **Arch Linux** | `yay -S rustledger-bin` | [](https://github.com/rustledger/rustledger/actions/workflows/release-test.yml) |
|
|
71
|
-
| **Fedora/RHEL** | `sudo dnf copr enable robcohen/rustledger && sudo dnf install rustledger` | [](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` | [](https://github.com/rustledger/rustledger/actions/workflows/release-test.yml) |
|
|
73
|
-
| **Cargo** | `cargo binstall rustledger` or `cargo install rustledger` | [](https://github.com/rustledger/rustledger/actions/workflows/release-test.yml) |
|
|
74
|
-
| **Nix** | `nix run github:rustledger/rustledger` | [](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` | [](https://github.com/rustledger/rustledger/actions/workflows/release-test.yml) |
|
|
76
|
-
| **Binaries** | [GitHub Releases](https://github.com/rustledger/rustledger/releases) | [](https://github.com/rustledger/rustledger/actions/workflows/release-test.yml) [](https://github.com/rustledger/rustledger/actions/workflows/release-test.yml) [](https://github.com/rustledger/rustledger/actions/workflows/release-test.yml) |
|
|
77
|
-
| **npm (WASM)** | `npm install @rustledger/wasm` | [](https://github.com/rustledger/rustledger/actions/workflows/release-test.yml) |
|
|
78
|
-
| **npm (MCP)** | `npx @rustledger/mcp-server` ([Model Context Protocol](https://modelcontextprotocol.io) server) | [](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
|
-
| `
|
|
96
|
-
| `
|
|
97
|
-
| `
|
|
98
|
-
| `
|
|
99
|
-
| `
|
|
100
|
-
| `
|
|
101
|
-
| `
|
|
102
|
-
| `
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
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
|
-
|
|
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
|
-
|
|
44
|
+
For multiple operations on the same source, use `ParsedLedger` to avoid re-parsing:
|
|
241
45
|
|
|
242
|
-
|
|
46
|
+
```javascript
|
|
47
|
+
import { ParsedLedger } from '@rustledger/wasm';
|
|
243
48
|
|
|
244
|
-
|
|
245
|
-
<summary><strong>Plugin support</strong></summary>
|
|
49
|
+
const ledger = new ParsedLedger(source);
|
|
246
50
|
|
|
247
|
-
|
|
51
|
+
if (ledger.isValid()) {
|
|
52
|
+
const balances = ledger.balances();
|
|
53
|
+
const formatted = ledger.format();
|
|
248
54
|
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
66
|
+
- `plugins` (default) - Include native plugin support
|
|
67
|
+
- `completions` (default) - Include BQL query completions
|
|
286
68
|
|
|
287
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
[](https://liberapay.com/rustledger)
|
|
77
|
+
GPL-3.0
|
package/package.json
CHANGED
package/rustledger_wasm.js
CHANGED
|
@@ -641,25 +641,25 @@ export function version() {
|
|
|
641
641
|
function __wbg_get_imports() {
|
|
642
642
|
const import0 = {
|
|
643
643
|
__proto__: null,
|
|
644
|
-
|
|
644
|
+
__wbg_Error_83742b46f01ce22d: function(arg0, arg1) {
|
|
645
645
|
const ret = Error(getStringFromWasm0(arg0, arg1));
|
|
646
646
|
return addHeapObject(ret);
|
|
647
647
|
},
|
|
648
|
-
|
|
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
|
-
|
|
655
|
+
__wbg___wbindgen_is_string_7ef6b97b02428fae: function(arg0) {
|
|
656
656
|
const ret = typeof(getObject(arg0)) === 'string';
|
|
657
657
|
return ret;
|
|
658
658
|
},
|
|
659
|
-
|
|
659
|
+
__wbg___wbindgen_throw_6ddd609b62940d55: function(arg0, arg1) {
|
|
660
660
|
throw new Error(getStringFromWasm0(arg0, arg1));
|
|
661
661
|
},
|
|
662
|
-
|
|
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
|
-
|
|
673
|
+
__wbg_getTime_1dad7b5386ddd2d9: function(arg0) {
|
|
674
674
|
const ret = getObject(arg0).getTime();
|
|
675
675
|
return ret;
|
|
676
676
|
},
|
|
677
|
-
|
|
677
|
+
__wbg_getTimezoneOffset_639bcf2dde21158b: function(arg0) {
|
|
678
678
|
const ret = getObject(arg0).getTimezoneOffset();
|
|
679
679
|
return ret;
|
|
680
680
|
},
|
|
681
|
-
|
|
681
|
+
__wbg_new_0_1dcafdf5e786e876: function() {
|
|
682
682
|
const ret = new Date();
|
|
683
683
|
return addHeapObject(ret);
|
|
684
684
|
},
|
|
685
|
-
|
|
686
|
-
const ret = new
|
|
685
|
+
__wbg_new_227d7c05414eb861: function() {
|
|
686
|
+
const ret = new Error();
|
|
687
687
|
return addHeapObject(ret);
|
|
688
688
|
},
|
|
689
|
-
|
|
690
|
-
const ret = new
|
|
689
|
+
__wbg_new_49d5571bd3f0c4d4: function() {
|
|
690
|
+
const ret = new Map();
|
|
691
691
|
return addHeapObject(ret);
|
|
692
692
|
},
|
|
693
|
-
|
|
693
|
+
__wbg_new_a70fbab9066b301f: function() {
|
|
694
694
|
const ret = new Array();
|
|
695
695
|
return addHeapObject(ret);
|
|
696
696
|
},
|
|
697
|
-
|
|
698
|
-
const ret = new
|
|
697
|
+
__wbg_new_ab79df5bd7c26067: function() {
|
|
698
|
+
const ret = new Object();
|
|
699
699
|
return addHeapObject(ret);
|
|
700
700
|
},
|
|
701
|
-
|
|
702
|
-
const ret = new
|
|
701
|
+
__wbg_new_fd94ca5c9639abd2: function(arg0) {
|
|
702
|
+
const ret = new Date(getObject(arg0));
|
|
703
703
|
return addHeapObject(ret);
|
|
704
704
|
},
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
return addHeapObject(ret);
|
|
705
|
+
__wbg_set_282384002438957f: function(arg0, arg1, arg2) {
|
|
706
|
+
getObject(arg0)[arg1 >>> 0] = takeObject(arg2);
|
|
708
707
|
},
|
|
709
|
-
|
|
708
|
+
__wbg_set_6be42768c690e380: function(arg0, arg1, arg2) {
|
|
710
709
|
getObject(arg0)[takeObject(arg1)] = takeObject(arg2);
|
|
711
710
|
},
|
|
712
|
-
|
|
713
|
-
getObject(arg0)
|
|
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
|
-
|
|
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 <
|
|
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(
|
|
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;
|
package/rustledger_wasm_bg.wasm
CHANGED
|
Binary file
|