motely-wasm 1.0.0 → 1.0.2

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 (39) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +353 -11
  3. package/dist/_framework/Motely.Orchestration.Browser.wasm +0 -0
  4. package/dist/_framework/Motely.Orchestration.wasm +0 -0
  5. package/dist/_framework/Motely.Repository.wasm +0 -0
  6. package/dist/_framework/Motely.WASM.wasm +0 -0
  7. package/dist/_framework/Motely.wasm +0 -0
  8. package/dist/_framework/System.Collections.Concurrent.wasm +0 -0
  9. package/dist/_framework/System.Collections.wasm +0 -0
  10. package/dist/_framework/System.ComponentModel.Primitives.wasm +0 -0
  11. package/dist/_framework/System.Linq.wasm +0 -0
  12. package/dist/_framework/System.ObjectModel.wasm +0 -0
  13. package/dist/_framework/System.Private.CoreLib.wasm +0 -0
  14. package/dist/_framework/System.Private.Uri.wasm +0 -0
  15. package/dist/_framework/System.Text.Json.wasm +0 -0
  16. package/dist/_framework/System.Text.RegularExpressions.wasm +0 -0
  17. package/dist/_framework/System.Threading.Channels.wasm +0 -0
  18. package/dist/_framework/YamlDotNet.wasm +0 -0
  19. package/dist/_framework/dotnet.boot.js +26 -56
  20. package/dist/_framework/dotnet.native.js +25 -53
  21. package/dist/_framework/dotnet.native.wasm +0 -0
  22. package/dist/duckdb.d.ts +14 -0
  23. package/dist/duckdb.js +98 -0
  24. package/dist/loader.d.ts +17 -0
  25. package/dist/loader.js +38 -0
  26. package/docs/NEXTJS_INTEGRATION.md +202 -0
  27. package/index.d.ts +27 -0
  28. package/index.js +18 -25
  29. package/motely-wasm.d.ts +24 -7
  30. package/package.json +69 -11
  31. package/scripts/prepare-public.js +33 -0
  32. package/dist/_framework/DuckDB.NET.Bindings.wasm +0 -0
  33. package/dist/_framework/DuckDB.NET.Data.wasm +0 -0
  34. package/dist/_framework/Motely.DB.wasm +0 -0
  35. package/dist/_framework/System.ComponentModel.TypeConverter.wasm +0 -0
  36. package/dist/_framework/System.Data.Common.wasm +0 -0
  37. package/dist/_framework/System.Linq.Expressions.wasm +0 -0
  38. package/dist/_framework/System.Runtime.Numerics.wasm +0 -0
  39. package/dist/_framework/System.wasm +0 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) OptimusPi
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,26 +1,368 @@
1
- # Motely.WASM
1
+ # motely-wasm
2
2
 
3
- MotelyJAML WebAssembly build.
3
+ **Browser-only** Balatro seed analyzer and searcher — WebAssembly (SIMD + optional multi-threading). Analyze a seed or search seeds with a JAML filter. No server required.
4
4
 
5
- ## Dev
5
+ ---
6
+
7
+ ## Quick start (TypeScript website, out of the box)
6
8
 
7
9
  ```bash
8
- npm run dev
10
+ npm install motely-wasm
11
+ ```
12
+
13
+ That’s it. The package copies its WASM build to `public/motely-wasm` on install (postinstall). Your app must serve that folder as static files (e.g. `public/` in Vite/Next/CRA). To use a different path: `npx motely-wasm-prepare public/your-path`.
14
+
15
+ In your TypeScript code:
16
+
17
+ ```typescript
18
+ import { loadMotely } from 'motely-wasm';
19
+ import type { MotelyWasmApi, SeedAnalysisResult, ErrorResult } from 'motely-wasm';
20
+
21
+ // Load the API (path = where you served the WASM, default /motely-wasm)
22
+ const api: MotelyWasmApi = await loadMotely('/motely-wasm');
23
+
24
+ const json = await api.AnalyzeSeed('TACO1111', 'Red', 'White', 1, 8, '{}');
25
+ const result = JSON.parse(json) as SeedAnalysisResult | ErrorResult;
26
+ if ('error' in result) {
27
+ console.error(result.error);
28
+ } else {
29
+ console.log(result.seed, result.antes);
30
+ }
9
31
  ```
10
- Opens http://localhost:3333
11
32
 
12
- ## API
33
+ Types resolve automatically; no extra config. For multi-threading, your server must send [COOP/COEP headers](#multi-threading-coopcoep) (see below).
34
+
35
+ ### Optional: DuckDB-WASM results storage
36
+
37
+ If you want browser-side persistence of search results, initialize DuckDB-WASM before running a search:
38
+
39
+ ```typescript
40
+ import { loadMotely, initDuckDbWasmResults } from 'motely-wasm';
41
+
42
+ await initDuckDbWasmResults({ tableName: 'motely_results' });
43
+ const api = await loadMotely('/motely-wasm');
44
+
45
+ // Now SearchSeeds will also stream results into DuckDB-WASM
46
+ await api.SearchSeeds(jamlJson, null, 4, 1000);
47
+ ```
48
+
49
+ `initDuckDbWasmResults` hooks into `globalThis.MotelyWasmOnResult` and streams each result into DuckDB-WASM.
50
+
51
+ ---
52
+
53
+ ## Setup (other workflows)
54
+
55
+ Copy runs automatically on `npm install`. To copy again or to a different path:
56
+
57
+ ```bash
58
+ npx motely-wasm-prepare
59
+ # or
60
+ npx motely-wasm-prepare public/my-wasm
61
+ ```
62
+
63
+ Or use `require('motely-wasm').getDistPath()` in your own build step.
64
+
65
+ **Docs:** [Next.js](docs/NEXTJS_INTEGRATION.md)
66
+
67
+ ---
68
+
69
+ ## Installation
70
+
71
+ ```bash
72
+ npm install motely-wasm
73
+ ```
74
+
75
+ ## Load the API in the browser (no bundler)
76
+
77
+ If you're not using a bundler, load the runtime directly from your public path:
13
78
 
14
79
  ```js
15
- await MotelyWasm.AnalyzeSeed(seed, deck, stake, minAnte, maxAnte, optionsJson)
16
- await MotelyWasm.SearchSeeds(jamlJson, seedList, threads)
17
- await MotelyWasm.ValidateJaml(jamlString)
80
+ const { dotnet } = await import('/motely-wasm/_framework/dotnet.js');
81
+ const { getAssemblyExports, getConfig } = await dotnet.create();
82
+ const exports = await getAssemblyExports(getConfig().mainAssemblyName);
83
+ const api = exports.Motely.WASM.MotelyWasm;
84
+
85
+ const result = await api.AnalyzeSeed("TACO1111", "Red", "White", 1, 8, "{}");
86
+ console.log(JSON.parse(result));
87
+ ```
88
+
89
+ ### Multi-threading (COOP/COEP)
90
+
91
+ Your server MUST send these headers for WASM multi-threading to work:
92
+
93
+ ```
94
+ Cross-Origin-Embedder-Policy: require-corp
95
+ Cross-Origin-Opener-Policy: same-origin
96
+ ```
97
+
98
+ Without these headers, the WASM will still load but run single-threaded.
99
+
100
+ **Other frameworks:** Run `npx motely-wasm-prepare` or use `getDistPath()` in your own script so your app can serve the WASM; then load `/motely-wasm/_framework/dotnet.js` in the browser as above.
101
+
102
+ ## API Reference
103
+
104
+ **Browser API:** After loading the WASM module, use `exports.Motely.WASM.MotelyWasm`. All 9 methods are exported from C# (JSExport); SearchSeeds optionally calls your JS callbacks (JSImport) for progress and results. All methods are async and return JSON strings; parse with `JSON.parse()`.
105
+
106
+ | Method | Description |
107
+ |--------|-------------|
108
+ | `AnalyzeSeed(seed, deck, stake, minAnte, maxAnte, optionsJson)` | Analyze one seed; returns ante data. |
109
+ | `SearchSeeds(jamlFilterJson, seedList, threadCount, maxResults?)` | Search seeds matching a JAML filter. Optional: set `globalThis.MotelyWasmOnProgress`, `MotelyWasmOnResult`, `MotelyWasmOnComplete` before calling. |
110
+ | `ValidateJaml(jamlString)` | Validate JAML without searching. |
111
+ | `CancelSearch()` | Cancel in-progress search. |
112
+ | `IsSearchRunning()` | Returns whether a search is running. |
113
+ | `GetSearchProgress()` | Current progress JSON (alternative to callbacks). |
114
+ | `GetLastSearchResult()` | Last search result JSON (cleared after read). |
115
+ | `GetProcessorCount()` | Number of threads (use for `threadCount`). |
116
+ | `GetVersion()` | Version info JSON. |
117
+
118
+ ### AnalyzeSeed
119
+
120
+ Analyze a specific seed and return all ante data.
121
+
122
+ ```typescript
123
+ await MotelyWasm.AnalyzeSeed(
124
+ seed: string, // e.g., "TACO1111"
125
+ deck: string, // "Red", "Blue", "Yellow", "Green", "Black", "Magic", "Nebula", "Ghost", etc.
126
+ stake: string, // "White", "Red", "Green", "Black", "Blue", "Purple", "Orange", "Gold"
127
+ minAnte: number, // 1-8
128
+ maxAnte: number, // 1-8
129
+ optionsJson: string // "{}" (reserved for future options)
130
+ ): Promise<string> // Returns SeedAnalysisResult or ErrorResult JSON
131
+ ```
132
+
133
+ **Response:**
134
+ ```typescript
135
+ interface SeedAnalysisResult {
136
+ seed: string;
137
+ deck: string;
138
+ stake: string;
139
+ erraticDeckComposition: string[];
140
+ twos: number;
141
+ antes: AnteAnalysis[];
142
+ }
143
+
144
+ interface AnteAnalysis {
145
+ ante: number;
146
+ boss: string;
147
+ voucher: string;
148
+ smallBlindTag: string;
149
+ bigBlindTag: string;
150
+ drawOrder: string;
151
+ shopQueue: { id: string; name: string }[];
152
+ packs: { type: string; items: string[] }[];
153
+ }
154
+ ```
155
+
156
+ ### SearchSeeds
157
+
158
+ Search for seeds matching a JAML filter.
159
+
160
+ ```typescript
161
+ await MotelyWasm.SearchSeeds(
162
+ jamlFilterJson: string, // JAML filter as string
163
+ seedList: string | null, // Comma-separated seeds to search, or null for sequential
164
+ threadCount: number, // Number of threads (use GetProcessorCount())
165
+ maxResults?: number // Max results to return (default 1000)
166
+ ): Promise<string> // Returns SearchResponse or ErrorResult JSON
167
+ ```
168
+
169
+ **Callbacks:** Set these on `globalThis` BEFORE calling SearchSeeds:
170
+
171
+ ```javascript
172
+ // Progress updates (called every ~200ms)
173
+ globalThis.MotelyWasmOnProgress = (progressJson) => {
174
+ const progress = JSON.parse(progressJson);
175
+ console.log(`Searched: ${progress.searchedCount}, Found: ${progress.foundCount}`);
176
+ };
177
+
178
+ // Each matching seed as it's found
179
+ globalThis.MotelyWasmOnResult = (seed, score, talliesStr) => {
180
+ const tallies = talliesStr ? talliesStr.split(',').map(Number) : [];
181
+ console.log(`Found: ${seed} (score: ${score})`);
182
+ };
183
+
184
+ // Search complete
185
+ globalThis.MotelyWasmOnComplete = (resultJson) => {
186
+ const result = JSON.parse(resultJson);
187
+ console.log(`Search complete! Found ${result.foundCount} seeds.`);
188
+ };
189
+ ```
190
+
191
+ **Response:**
192
+ ```typescript
193
+ interface SearchResponse {
194
+ results: SearchHit[]; // Empty if using callbacks
195
+ totalSearched: number;
196
+ foundCount: number;
197
+ cancelled: boolean;
198
+ }
199
+
200
+ interface SearchProgress {
201
+ searchedCount: number;
202
+ foundCount: number;
203
+ status: string;
204
+ percentComplete: number;
205
+ seedsPerSecond: number;
206
+ threadCount: number;
207
+ }
208
+ ```
209
+
210
+ ### ValidateJaml
211
+
212
+ Validate a JAML filter without running a search.
213
+
214
+ ```typescript
215
+ await MotelyWasm.ValidateJaml(jamlString: string): Promise<string>
216
+ ```
217
+
218
+ **Response:**
219
+ ```typescript
220
+ interface ValidateResult {
221
+ valid: boolean;
222
+ error?: string;
223
+ name?: string;
224
+ deck?: string;
225
+ stake?: string;
226
+ }
227
+ ```
228
+
229
+ ### CancelSearch
230
+
231
+ Cancel an in-progress search.
232
+
233
+ ```typescript
234
+ await MotelyWasm.CancelSearch(): Promise<void>
235
+ ```
236
+
237
+ ### IsSearchRunning
238
+
239
+ Check if a search is currently running.
240
+
241
+ ```typescript
242
+ await MotelyWasm.IsSearchRunning(): Promise<boolean>
18
243
  ```
19
244
 
20
- ## Headers
245
+ ### GetSearchProgress
246
+
247
+ Get current search progress (alternative to callbacks).
21
248
 
22
- Server needs for multi-threading:
249
+ ```typescript
250
+ await MotelyWasm.GetSearchProgress(): Promise<string> // Returns SearchProgress JSON
251
+ ```
252
+
253
+ ### GetLastSearchResult
254
+
255
+ Get the last search result JSON (cleared after retrieval). Use as an alternative to `MotelyWasmOnComplete` when not using callbacks.
256
+
257
+ ```typescript
258
+ await MotelyWasm.GetLastSearchResult(): Promise<string> // Returns SearchResponse or empty
259
+ ```
260
+
261
+ ### GetProcessorCount
262
+
263
+ Get the number of processors/threads available.
264
+
265
+ ```typescript
266
+ await MotelyWasm.GetProcessorCount(): Promise<number>
267
+ ```
268
+
269
+ ### GetVersion
270
+
271
+ Get version information.
272
+
273
+ ```typescript
274
+ await MotelyWasm.GetVersion(): Promise<string>
275
+ // Returns: { version: "1.0.1", runtime: "browser-wasm", features: [...] }
276
+ ```
277
+
278
+ ## JAML Filter Format
279
+
280
+ JAML (JSON-Augmented Markup Language) is a YAML-based format for defining seed search filters.
281
+
282
+ ```yaml
283
+ name: My Filter
284
+ deck: Red
285
+ stake: White
286
+
287
+ must:
288
+ - joker: Blueprint
289
+ antes: [1, 2]
290
+ - voucher: Overstock
291
+ antes: [1]
292
+
293
+ should:
294
+ - joker: Showman
295
+ score: 10
296
+ - spectralCard: Aura
297
+ antes: [1, 2]
298
+ ```
299
+
300
+ ## Example: Next.js Integration
301
+
302
+ ```typescript
303
+ // lib/motely.ts
304
+ let motelyWasm: any = null;
305
+
306
+ export async function getMotely() {
307
+ if (motelyWasm) return motelyWasm;
308
+
309
+ const { dotnet } = await import('/motely-wasm/_framework/dotnet.js');
310
+ const { getAssemblyExports, getConfig } = await dotnet.create();
311
+ const exports = await getAssemblyExports(getConfig().mainAssemblyName);
312
+
313
+ motelyWasm = exports.Motely.WASM.MotelyWasm;
314
+ return motelyWasm;
315
+ }
316
+
317
+ // Usage in component
318
+ const api = await getMotely();
319
+ const result = JSON.parse(await api.AnalyzeSeed("TACO1111", "Red", "White", 1, 8, "{}"));
320
+ ```
321
+
322
+ ## Troubleshooting
323
+
324
+ ### "SharedArrayBuffer is not defined"
325
+
326
+ Your server is missing COOP/COEP headers. Add:
23
327
  ```
24
328
  Cross-Origin-Embedder-Policy: require-corp
25
329
  Cross-Origin-Opener-Policy: same-origin
26
330
  ```
331
+
332
+ ### Search runs slowly
333
+
334
+ Make sure COOP/COEP headers are set for multi-threading. Without them, WASM runs single-threaded.
335
+
336
+ ### Module not found
337
+
338
+ Ensure the `dist/_framework/` folder is copied to your public directory and accessible at the URL you're importing from.
339
+
340
+ ## Development (maintainers)
341
+
342
+ Run all commands from the **Motely.WASM** directory (where package.json lives).
343
+
344
+ ```bash
345
+ # Build WASM and copy publish output to dist/
346
+ npm run build
347
+
348
+ # Local dev server with COOP/COEP (serves dist/ on http://localhost:3333)
349
+ npm run dev
350
+ ```
351
+
352
+ ## Publishing (maintainers)
353
+
354
+ **Do not use `npm publish --ignore-scripts`.** The package must include a built `dist/` with WASM files; scripts build and verify that.
355
+
356
+ 1. From repo root, build the solution so dependencies are ready: `dotnet build`
357
+ 2. `cd Motely.WASM`
358
+ 3. `npm run build` — wait until it finishes (dotnet publish + copy to dist). If it fails, fix the build before publishing.
359
+ 4. Confirm `dist/_framework` exists and has files (e.g. `dotnet.js`, `.wasm` files).
360
+ 5. `npm publish` (run `npm login` first if needed).
361
+
362
+ **Verify before publish:** Run `npm pack` in Motely.WASM. Unpack the `.tgz` and confirm `package/dist/_framework` has files. If it doesn’t, the published package will be broken for users.
363
+
364
+ **Verify after install (consumer):** After `npm install motely-wasm`, check that `node_modules/motely-wasm/dist/_framework` exists and has files. If it’s missing or empty, the publish didn’t include the build.
365
+
366
+ ## License
367
+
368
+ MIT
Binary file
Binary file
Binary file
Binary file
@@ -1,7 +1,7 @@
1
1
  export const config = /*json-start*/{
2
2
  "mainAssemblyName": "Motely.WASM.dll",
3
3
  "resources": {
4
- "hash": "sha256-cDJnXzaPfQLxYzeJMQ3QMtPpMQ6D1Fg+S2a70/P3PmA=",
4
+ "hash": "sha256-aO+i4xVT6oSLeZsLATfmhfC9XLzPc42IiCXTueNj4KA=",
5
5
  "jsModuleWorker": [
6
6
  {
7
7
  "name": "dotnet.native.worker.mjs"
@@ -20,75 +20,55 @@ export const config = /*json-start*/{
20
20
  "wasmNative": [
21
21
  {
22
22
  "name": "dotnet.native.wasm",
23
- "integrity": "sha256-pynCW3cr4SOL8S0g2SgxVJdm027gQXLogx93leFlEPc="
23
+ "integrity": "sha256-LaKjhruOfm5MO3UQ7YNQAZTGJFZD0qIaVuC5Wlj1aKw="
24
24
  }
25
25
  ],
26
26
  "coreAssembly": [
27
- {
28
- "virtualPath": "DuckDB.NET.Bindings.wasm",
29
- "name": "DuckDB.NET.Bindings.wasm",
30
- "integrity": "sha256-wqxaaQM497E3IjjC7jdl4C41iuXUgt3CIC+L39iZ/lE="
31
- },
32
- {
33
- "virtualPath": "DuckDB.NET.Data.wasm",
34
- "name": "DuckDB.NET.Data.wasm",
35
- "integrity": "sha256-tTXnng0Nm7oyHXPf4U7D6XLpQEQJg8lOA67bZgdD5Wg="
36
- },
37
- {
38
- "virtualPath": "Motely.DB.wasm",
39
- "name": "Motely.DB.wasm",
40
- "integrity": "sha256-mgKeRITKQ7qNH/7nIdWmL/DQzfDBWlRAtanEw/QrI7E="
41
- },
42
27
  {
43
28
  "virtualPath": "Motely.wasm",
44
29
  "name": "Motely.wasm",
45
- "integrity": "sha256-9dvjpkffXLEStr9R5cbo/H2PEGOihiZKxENaFYZ9RZ8="
30
+ "integrity": "sha256-gIFYClf0DXpm7HsvvQ0jR2MGwd4lKuOOZN01OyMSHg8="
31
+ },
32
+ {
33
+ "virtualPath": "Motely.Orchestration.Browser.wasm",
34
+ "name": "Motely.Orchestration.Browser.wasm",
35
+ "integrity": "sha256-ve/7dyF3t4Rn7A79Axesc9rzflRKTS3jSzHBUF0B9tY="
46
36
  },
47
37
  {
48
38
  "virtualPath": "Motely.Orchestration.wasm",
49
39
  "name": "Motely.Orchestration.wasm",
50
- "integrity": "sha256-lFpy94SjuTIso9jHlQvFuIFtxLXqu3sxDvR/3cq5tPA="
40
+ "integrity": "sha256-PUBCdVNXQ3w4qOx4zRL4ejhOg/H1clsXYu1K9sn7cMQ="
41
+ },
42
+ {
43
+ "virtualPath": "Motely.Repository.wasm",
44
+ "name": "Motely.Repository.wasm",
45
+ "integrity": "sha256-jirHMql3tGeV89AxSWy9UMSTy+D5YxXi4ZIE2FRJSuM="
51
46
  },
52
47
  {
53
48
  "virtualPath": "Motely.WASM.wasm",
54
49
  "name": "Motely.WASM.wasm",
55
- "integrity": "sha256-ExNs1gtYpHl6jbIIU9lY1Uv9sn5/CqJZLYnfPqSHX8w="
50
+ "integrity": "sha256-inefOwfugLkyVJ9BLwS48DdoFCHMj8tnPcj0nHljNaA="
56
51
  },
57
52
  {
58
53
  "virtualPath": "System.Collections.Concurrent.wasm",
59
54
  "name": "System.Collections.Concurrent.wasm",
60
- "integrity": "sha256-CWu7OvQpoj42ejCs1HpqnzisMWgXXobaaOjjtZQS7OQ="
55
+ "integrity": "sha256-AFZxuyv5C7gl+Zq58wcA2OWTXvGnnOtUjDmJ8K3ZZ0Q="
61
56
  },
62
57
  {
63
58
  "virtualPath": "System.Collections.wasm",
64
59
  "name": "System.Collections.wasm",
65
- "integrity": "sha256-pQmhSB7BWqrKN53pAlqPyERgHOsjfLoAboW+KrJ+wwk="
60
+ "integrity": "sha256-DsUmQwaER2ZIB1lKEDfcCg8JiVComy+nW2ft5TwReUY="
66
61
  },
67
62
  {
68
63
  "virtualPath": "System.ComponentModel.Primitives.wasm",
69
64
  "name": "System.ComponentModel.Primitives.wasm",
70
- "integrity": "sha256-A4tZOdQlsq0vrR94Kgo+0cG+pd60w/RVYcnKOLj1xgE="
71
- },
72
- {
73
- "virtualPath": "System.ComponentModel.TypeConverter.wasm",
74
- "name": "System.ComponentModel.TypeConverter.wasm",
75
- "integrity": "sha256-R9CyKUM1Yc/xacERK46upAkz+nBtTnFvWidNXqgBsl8="
65
+ "integrity": "sha256-4jl7fheYZfslgTS9+Tb5swIW4WyeIxC7CYIAUmZSkqw="
76
66
  },
77
67
  {
78
68
  "virtualPath": "System.Console.wasm",
79
69
  "name": "System.Console.wasm",
80
70
  "integrity": "sha256-RwubalytojFWDevPivMJVmaTy1f1LuUTYxJv6sgNaiU="
81
71
  },
82
- {
83
- "virtualPath": "System.Data.Common.wasm",
84
- "name": "System.Data.Common.wasm",
85
- "integrity": "sha256-oPkIp+I4fIjVPA9YDJ90yCc0asSTrmj0kkZ3c6aVdGw="
86
- },
87
- {
88
- "virtualPath": "System.wasm",
89
- "name": "System.wasm",
90
- "integrity": "sha256-YabWgbCEFJ/C33k/i+7FudaFKYcs5tDuAf9sQAhhC2A="
91
- },
92
72
  {
93
73
  "virtualPath": "System.IO.Pipelines.wasm",
94
74
  "name": "System.IO.Pipelines.wasm",
@@ -97,12 +77,7 @@ export const config = /*json-start*/{
97
77
  {
98
78
  "virtualPath": "System.Linq.wasm",
99
79
  "name": "System.Linq.wasm",
100
- "integrity": "sha256-zgqOTRaSyGZESi7fSOQenqDDuaT3TdAHN2y5bhBeS/Y="
101
- },
102
- {
103
- "virtualPath": "System.Linq.Expressions.wasm",
104
- "name": "System.Linq.Expressions.wasm",
105
- "integrity": "sha256-q2RyKG/0tx8nJ4QiKD4vTNYlLhrfSAtbHgxfHK0p5+Q="
80
+ "integrity": "sha256-FpqCpQ9wcwctxGL/d8AREWyZDt5gDZG0Ect7VaxuSmA="
106
81
  },
107
82
  {
108
83
  "virtualPath": "System.Memory.wasm",
@@ -112,28 +87,23 @@ export const config = /*json-start*/{
112
87
  {
113
88
  "virtualPath": "System.ObjectModel.wasm",
114
89
  "name": "System.ObjectModel.wasm",
115
- "integrity": "sha256-X18I4bR7MFPCBc/6qDmAvYmBRZqWKoycYhsKhacbEjc="
90
+ "integrity": "sha256-53tJJYiS7ZklSNA64xArxUXeHucwKEMDeM2BdSs1ud0="
116
91
  },
117
92
  {
118
93
  "virtualPath": "System.Private.CoreLib.wasm",
119
94
  "name": "System.Private.CoreLib.wasm",
120
- "integrity": "sha256-o6w5niLXm/C+zWNkSaysklzXKEtEu3dQE0fJ531Jb7c="
95
+ "integrity": "sha256-OeYdMfIeVa/xGdtFOcCjtDu2KBN152SkvOdvvEcHSdk="
121
96
  },
122
97
  {
123
98
  "virtualPath": "System.Private.Uri.wasm",
124
99
  "name": "System.Private.Uri.wasm",
125
- "integrity": "sha256-TWTo87XjocKFIRkOBcm0RG7FbzwHSsxYSg9SlSPveXs="
100
+ "integrity": "sha256-iZHFmCnpe0uSpmPJK8HMBqJ/TJEu39sbYQ6bGAwu4zs="
126
101
  },
127
102
  {
128
103
  "virtualPath": "System.Runtime.InteropServices.JavaScript.wasm",
129
104
  "name": "System.Runtime.InteropServices.JavaScript.wasm",
130
105
  "integrity": "sha256-kMfuIHajm5NGI4GIVJI0/8O+C2k7ZW+oogCwkyMRpk8="
131
106
  },
132
- {
133
- "virtualPath": "System.Runtime.Numerics.wasm",
134
- "name": "System.Runtime.Numerics.wasm",
135
- "integrity": "sha256-gSb0Gu2r6r7VBStSEVMfeoKYpKIGZkGT+2c0QzmO5D8="
136
- },
137
107
  {
138
108
  "virtualPath": "System.Security.Cryptography.wasm",
139
109
  "name": "System.Security.Cryptography.wasm",
@@ -147,17 +117,17 @@ export const config = /*json-start*/{
147
117
  {
148
118
  "virtualPath": "System.Text.Json.wasm",
149
119
  "name": "System.Text.Json.wasm",
150
- "integrity": "sha256-sdGrRV1ZiwO/kR8Tl5tK4iX3ojCyc7oXXP/PnJb/ilI="
120
+ "integrity": "sha256-0YO5kydtFOl8SwOv9skKooBIxosKDEvD14rqyO8H4M4="
151
121
  },
152
122
  {
153
123
  "virtualPath": "System.Text.RegularExpressions.wasm",
154
124
  "name": "System.Text.RegularExpressions.wasm",
155
- "integrity": "sha256-LivmUKsgqtW1rHzuKpfx+TjhO8yz/sJ2POGrenby/nQ="
125
+ "integrity": "sha256-fMJntAuv6fs8Acy7cl7DCii3G37WR7OK/3P0iG+GNoU="
156
126
  },
157
127
  {
158
128
  "virtualPath": "System.Threading.Channels.wasm",
159
129
  "name": "System.Threading.Channels.wasm",
160
- "integrity": "sha256-2EgxriwFFANyHLTavSVnZRryibA+Mmh+X5tpb753RzM="
130
+ "integrity": "sha256-9wxtrvceNdYncnllXgzowxFSLkUDvySzFbgdIwpspbg="
161
131
  },
162
132
  {
163
133
  "virtualPath": "System.Threading.wasm",
@@ -167,7 +137,7 @@ export const config = /*json-start*/{
167
137
  {
168
138
  "virtualPath": "YamlDotNet.wasm",
169
139
  "name": "YamlDotNet.wasm",
170
- "integrity": "sha256-Daw6C2JGNfcVFjWBMQMfBtMOVoH5M1f8TiJbAxdlOOA="
140
+ "integrity": "sha256-ym2r8OJPp9GcsZ2CIDDUlC81V6rrarojAsdiVRLFV3s="
171
141
  },
172
142
  {
173
143
  "virtualPath": "aot-instances.wasm",