@drawmotive/textgraph 0.2.2-alpha.1 → 0.2.2-alpha.3

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 (45) hide show
  1. package/README.md +18 -5
  2. package/docs/api-v1.md +21 -4
  3. package/docs/releases.md +8 -8
  4. package/generated/wasm/DrawMotive.TextGraph.Bridge.wasm +0 -0
  5. package/generated/wasm/ExCSS.wasm +0 -0
  6. package/generated/wasm/Graphics.Core.wasm +0 -0
  7. package/generated/wasm/Grpc.Core.Api.wasm +0 -0
  8. package/generated/wasm/HarfBuzzSharp.wasm +0 -0
  9. package/generated/wasm/MagicOnion.Abstractions.wasm +0 -0
  10. package/generated/wasm/MagicOnion.Serialization.MessagePack.wasm +0 -0
  11. package/generated/wasm/MagicOnion.Shared.wasm +0 -0
  12. package/generated/wasm/Markdig.wasm +0 -0
  13. package/generated/wasm/Math.Core.wasm +0 -0
  14. package/generated/wasm/MessagePack.Annotations.wasm +0 -0
  15. package/generated/wasm/MessagePack.wasm +0 -0
  16. package/generated/wasm/Polly.Core.wasm +0 -0
  17. package/generated/wasm/Polly.wasm +0 -0
  18. package/generated/wasm/RBush.wasm +0 -0
  19. package/generated/wasm/SkiaSharp.HarfBuzz.wasm +0 -0
  20. package/generated/wasm/SkiaSharp.wasm +0 -0
  21. package/generated/wasm/System.Collections.NonGeneric.wasm +0 -0
  22. package/generated/wasm/System.ComponentModel.TypeConverter.wasm +0 -0
  23. package/generated/wasm/System.Console.wasm +0 -0
  24. package/generated/wasm/System.Net.Http.wasm +0 -0
  25. package/generated/wasm/System.Net.Primitives.wasm +0 -0
  26. package/generated/wasm/System.ObjectModel.wasm +0 -0
  27. package/generated/wasm/System.Private.CoreLib.wasm +0 -0
  28. package/generated/wasm/System.Private.Uri.wasm +0 -0
  29. package/generated/wasm/System.Private.Xml.Linq.wasm +0 -0
  30. package/generated/wasm/System.Private.Xml.wasm +0 -0
  31. package/generated/wasm/System.Xml.Linq.wasm +0 -0
  32. package/generated/wasm/System.Xml.XDocument.wasm +0 -0
  33. package/generated/wasm/dotnet.boot.js +47 -27
  34. package/generated/wasm/dotnet.native.js +18 -2
  35. package/generated/wasm/dotnet.native.wasm +0 -0
  36. package/generated/wasm-manifest.js +67 -42
  37. package/generated/wasm-manifest.json +67 -42
  38. package/package.json +1 -1
  39. package/schemas/render-svg.schema.json +65 -0
  40. package/schemas/wasm-manifest.schema.json +1 -1
  41. package/src/index.d.ts +15 -0
  42. package/src/index.js +24 -17
  43. package/src/runtime/dotnet.js +6 -4
  44. package/src/runtime/manifest.js +7 -1
  45. package/src/runtime/rendering.js +49 -7
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  **Turn text into diagrams in your application.**
4
4
 
5
- Render flowcharts and directed graphs as PNGs in Node.js, browsers, React, and Web
5
+ Render flowcharts and directed graphs as PNGs or SVGs in Node.js, browsers, React, and Web
6
6
  Workers. TextGraph handles automatic layout and provides source validation and
7
7
  rendering diagnostics. The renderer runs where your code runs; no hosted rendering
8
8
  API or API key is required.
@@ -35,7 +35,7 @@ TextGraph uses a small, structured language; it does not interpret unrestricted
35
35
 
36
36
  | What you want to do | Use | Working example |
37
37
  | --- | --- | --- |
38
- | Generate diagrams for documentation, reports, or build jobs | Node.js: write PNG bytes to a file | [Node sample](https://github.com/drawmotive/textgraph/tree/main/samples/node) |
38
+ | Generate diagrams for documentation, reports, or build jobs | Node.js: write PNG bytes or SVG text to a file | [Node sample](https://github.com/drawmotive/textgraph/tree/main/samples/node) |
39
39
  | Embed live diagrams in dashboards or internal tools | React component and shared provider | [React + Vite sample](https://github.com/drawmotive/textgraph/tree/main/samples/react-vite) |
40
40
  | Add editable source and previews to a web app | Browser SDK | [Plain JavaScript sample](https://github.com/drawmotive/textgraph/tree/main/samples/browser) |
41
41
  | Keep the UI responsive while rendering larger diagrams | SDK in a module Web Worker | [Worker sample](https://github.com/drawmotive/textgraph/tree/main/samples/worker) |
@@ -48,7 +48,7 @@ For existing documentation, use the
48
48
  ## Install
49
49
 
50
50
  ```bash
51
- npm install @drawmotive/textgraph@0.2.2-alpha.1
51
+ npm install @drawmotive/textgraph@0.2.2-alpha.3
52
52
  ```
53
53
 
54
54
  Requires **Node.js 22+** or a modern browser with WebAssembly and Web Crypto.
@@ -84,6 +84,19 @@ multiple diagrams, then dispose it when the job is finished.
84
84
 
85
85
  [Complete file-to-PNG sample →](https://github.com/drawmotive/textgraph/tree/main/samples/node)
86
86
 
87
+ For vector output, use the same initialized instance:
88
+
89
+ ```javascript
90
+ const vector = await textgraph.renderSvg("browser -> api -> database", { padding: 10 });
91
+ if (vector.success) {
92
+ await writeFile("diagram.svg", vector.svg, "utf8");
93
+ }
94
+ ```
95
+
96
+ SVG returns logical `displayWidth` and `displayHeight`. It accepts `padding`,
97
+ `language`, and `signal`; raster settings such as `scale` apply only to PNG.
98
+ React components continue to use PNG; browser and Worker SDK instances also expose `renderSvg()`.
99
+
87
100
  ## Add a diagram to React
88
101
 
89
102
  For browser, React, and Worker applications, copy the runtime assets before
@@ -216,9 +229,9 @@ publish anything. Samples are not included in the npm package.
216
229
 
217
230
  ## Current scope
218
231
 
219
- - **Available:** flowcharts and directed graphs, automatic layout, PNG rendering,
232
+ - **Available:** flowcharts and directed graphs, automatic layout, PNG and SVG rendering,
220
233
  and source validation.
221
- - **Not available yet:** mind maps, sequence diagrams, slides, and SVG export.
234
+ - **Not available yet:** mind maps, sequence diagrams, and slides.
222
235
  - **Fonts:** Noto Sans and Fuzzy Bubbles are included. Custom font descriptors are
223
236
  supported; the optional `@drawmotive/textgraph-fonts` package is not published.
224
237
  See [font configuration](https://github.com/drawmotive/textgraph/blob/main/docs/api-v1.md#fonts-and-language-packs).
package/docs/api-v1.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # TextGraph API, protocol 1
2
2
 
3
- This contract covers validation and PNG rendering. Validation checks parsing and semantic reference resolution; it does not certify layout feasibility or renderability. Empty source is valid. Public AST, editable layout and file APIs remain separate milestones.
3
+ This contract covers validation and PNG/SVG rendering. Validation checks parsing and semantic reference resolution; it does not certify layout feasibility or renderability. Empty source is valid. Public AST, editable layout and file APIs remain separate milestones.
4
4
 
5
5
  ```javascript
6
6
  import { initializeTextGraph } from '@drawmotive/textgraph';
@@ -38,6 +38,21 @@ For web display, use scale `2` and the returned display dimensions as image dime
38
38
 
39
39
  After applying `maxWidth`, output is limited to 16,384 pixels per side and 16,777,216 pixels in total. Larger images return the `TG_RENDER_SIZE_LIMIT` diagnostic. PNG dimensions and signature are checked against the response metadata; malformed responses reject with `INVALID_RESPONSE`.
40
40
 
41
+ ## SVG rendering
42
+
43
+ `renderSvg(source, { padding, language, signal }?)` returns `{ success: true, svg, displayWidth, displayHeight, diagnostics }` or `{ success: false, diagnostics }`. The SVG is a complete vector document, and both display dimensions are positive logical diagram units matching its padded viewBox. Results and diagnostics are frozen. Diagram failures contain no image data or dimensions.
44
+
45
+ ```javascript
46
+ const image = await runtime.renderSvg("browser -> api -> database", { padding: 24 });
47
+ if (image.success) {
48
+ await writeFile("diagram.svg", image.svg, "utf8");
49
+ }
50
+ ```
51
+
52
+ Padding defaults to `10` and has the same finite float32 constraints as PNG. The optional language hint selects fonts in the same way as PNG. SVG rejects PNG-only `encoding`, `scale`, and `maxWidth` settings and all unknown option keys with `INVALID_ARGUMENT`. Cancellation and resource preparation share the instance queue with PNG and validation.
53
+
54
+ SVG requires the additive `textgraph-render-svg-v1` capability; older runtimes reject with `UNSUPPORTED_CAPABILITY` before preparing resources or calling the bridge. The wrapper checks the document root and SVG namespace, positive display dimensions, and consistency between success and error diagnostics. Malformed responses reject with `INVALID_RESPONSE`; the document check is not a general XML parser or sanitizer.
55
+
41
56
  ## Fonts and language packs
42
57
 
43
58
  Runtimes advertising `textgraph-fonts-v1` prepare actual visible labels before measurement.
@@ -65,7 +80,7 @@ browser/server-owned; there is no new IndexedDB or Service Worker. Offline opera
65
80
  requires the complete runtime and font package on a local filesystem or local server;
66
81
  an online page cannot fetch an uncached font after losing network access.
67
82
 
68
- `renderPng(source, { language: "ja" })` can disambiguate Han-only labels. Without a hint,
83
+ `renderPng(source, { language: "ja" })` and `renderSvg(source, { language: "ja" })` can disambiguate Han-only labels. Without a hint,
69
84
  kana selects Japanese for that label and Han-only labels use Chinese. Grapheme-aware
70
85
  emoji selection includes flags, ZWJ sequences, modifiers and keycaps. Font selection
71
86
  does not depend on which languages were rendered previously. Unsupported glyphs still
@@ -123,12 +138,14 @@ fonts with language metadata; `cancel-prepare` releases interrupted preparation.
123
138
  Render commands accept the same language hint. Existing configuration/disposal
124
139
  envelopes remain unchanged. The wrapper checks this capability before using a catalog.
125
140
 
126
- ABI 1.0.0 retains GetAbiVersion/GetPackageKind/CountParseDiagnostics and adds GetRuntimeInfo(), Validate(source) and Execute(requestJson) on DrawMotive.TextGraph.Bridge.Program. Info returns JSON `{ abiVersion, packageKind, protocolVersion: 1, capabilities }`; Validate returns `{ protocolVersion: 1, valid, diagnostics }`. Wrappers require `textgraph-validate-v1`; PNG rendering additionally requires `textgraph-render-v1` and the manifest `bridge.execute` export. Legacy validation exports remain supported. This is a managed export/JSON protocol, not a raw WASM pointer ABI.
141
+ ABI 1.0.0 retains GetAbiVersion/GetPackageKind/CountParseDiagnostics and adds GetRuntimeInfo(), Validate(source) and Execute(requestJson) on DrawMotive.TextGraph.Bridge.Program. Info returns JSON `{ abiVersion, packageKind, protocolVersion: 1, capabilities }`; Validate returns `{ protocolVersion: 1, valid, diagnostics }`. Wrappers require `textgraph-validate-v1`; PNG rendering additionally requires `textgraph-render-v1`, and SVG requires `textgraph-render-svg-v1`. Both require the manifest `bridge.execute` export and rendering resources. Legacy validation exports remain supported. This is a managed export/JSON protocol, not a raw WASM pointer ABI.
127
142
 
128
- `generated/wasm-manifest.json` is authoritative; its ESM projection avoids JSON-module browser assumptions. Shipped schemas describe the manifest, validation response and rendering response. Manifest schema, ABI, protocol and npm versions are separate. Additive exports use capabilities; incompatible wire changes require a new supported version. npm versions and bundled assets are released together. DSL/file-format versions are not frozen by this milestone.
143
+ `generated/wasm-manifest.json` is authoritative; its ESM projection avoids JSON-module browser assumptions. Shipped schemas describe the manifest, validation response and separate PNG/SVG rendering responses. Manifest schema, ABI, protocol and npm versions are separate. Additive exports use capabilities; incompatible wire changes require a new supported version. npm versions and bundled assets are released together. DSL/file-format versions are not frozen by this milestone.
129
144
 
130
145
  Assets have relative path, media type, byte count and SHA-256. Packaging checks reject missing/extra assets, debug files, hash/projection/version drift. Runtime data assets are hash-checked before native startup. Bundled fonts and themes are loaded and hash-checked lazily before the first render; license files require no runtime I/O. These checks establish distribution consistency, not authenticated runtime signatures. `privateSource.commit` identifies committed private C# and bridge inputs. Toolchain changes may change bytes; cross-toolchain byte-for-byte reproducibility is not promised.
131
146
 
132
147
  The rendering wire uses one `Execute(requestJson)` export. Configuration is performed once before the first render with `{ protocolVersion: 1, operation: "configure", theme, fonts: [{ family, data }], fallbackFamilies }`, where `data` is base64 font data. Its response is `{ protocolVersion: 1, success, diagnostics }`. A render request is `{ protocolVersion: 1, operation: "render", source, export: { format: "png", scale, padding, maxWidth? } }`. Native success returns base64 `png`, `width`, `height`, and diagnostics, plus an additive optional `displayWidth`/`displayHeight` pair; failures contain only `success: false` and diagnostics beside the protocol version. The JavaScript wrapper validates the display dimensions when present and converts image data to the requested encoding.
133
148
 
134
149
  For rendering-capable bridges, disposal sends `{ protocolVersion: 1, operation: "dispose" }` and validates the same success/diagnostics envelope as configuration. This request releases native resources without loading fonts or shutting down the host runtime. Legacy validation-only bridges release wrapper references directly.
150
+
151
+ SVG uses the same `Execute` export with `{ protocolVersion: 1, operation: "render", source, language?, export: { format: "svg", padding } }`. Native success returns `{ protocolVersion: 1, success: true, svg, displayWidth, displayHeight, diagnostics }`; failures omit `svg` and dimensions. `schemas/render-svg.schema.json` describes this separate additive response.
package/docs/releases.md CHANGED
@@ -7,7 +7,7 @@ Releases are selected deliberately and published by `.github/workflows/release.y
7
7
  | Version | npm dist-tag | Install |
8
8
  | --- | --- | --- |
9
9
  | `0.2.1` (stable) | `latest` | `npm install @drawmotive/textgraph@0.2.1` |
10
- | `0.2.2-alpha.1` (preview) | `alpha` | `npm install @drawmotive/textgraph@0.2.2-alpha.1` |
10
+ | `0.2.2-alpha.2` (preview) | `alpha` | `npm install @drawmotive/textgraph@0.2.2-alpha.2` |
11
11
 
12
12
  Alpha releases update `alpha` and preserve an existing `latest`. npm may assign `latest` on a package’s first publication even when `alpha` is specified.
13
13
 
@@ -33,10 +33,10 @@ Trusted publishing requires npm 11.5.1+ and Node.js 22.14.0+. Publication from a
33
33
  Native builds belong to the private DrawMotive repository. Commit native source, resource, and bridge changes first, then run there:
34
34
 
35
35
  ```bash
36
- npm run release:textgraph -- 0.2.2-alpha.1
36
+ npm run release:textgraph -- 0.2.2-alpha.2
37
37
  ```
38
38
 
39
- This updates the package and lock versions, builds Release assets from the recorded private source commit, generates matching JSON/ESM manifests, updates the root workspace lock, and verifies asset hashes. It does not commit, push, tag, or publish. The `just release-textgraph 0.2.2-alpha.1` alias runs the same command.
39
+ This updates the package and lock versions, builds Release assets from the recorded private source commit, generates matching JSON/ESM manifests, updates the root workspace lock, and verifies asset hashes. It does not commit, push, tag, or publish. The `just release-textgraph 0.2.2-alpha.2` alias runs the same command.
40
40
 
41
41
  For a JavaScript-only release reusing already verified native bytes, run in this package:
42
42
 
@@ -80,8 +80,8 @@ If npm requires a one-time code, run with `NPM_CONFIG_OTP` set in the local term
80
80
  After preparation, tests, and review, create the tag on the verified package commit:
81
81
 
82
82
  ```bash
83
- git tag -a textgraph-v0.2.2-alpha.1 -m "Release 0.2.2-alpha.1"
84
- git push origin textgraph-v0.2.2-alpha.1
83
+ git tag -a textgraph-v0.2.2-alpha.2 -m "Release 0.2.2-alpha.2"
84
+ git push origin textgraph-v0.2.2-alpha.2
85
85
  ```
86
86
 
87
87
  The release workflow resolves the tag to a commit, runs Node.js and three-browser tests on Ubuntu, packs the tested checkout, and passes the artifact to the `npm` environment for publication. All CI and release jobs use `ubuntu-latest`; the browser suite covers Chromium, Firefox, and WebKit. Alpha releases select `alpha`; stable releases select `latest`. Never pass a custom dist-tag to bypass the release policy.
@@ -90,14 +90,14 @@ The release workflow resolves the tag to a commit, runs Node.js and three-browse
90
90
 
91
91
  ```bash
92
92
  npm view @drawmotive/textgraph dist-tags --json
93
- npm view @drawmotive/textgraph@0.2.2-alpha.1 dist.integrity
94
- npm install @drawmotive/textgraph@0.2.2-alpha.1
93
+ npm view @drawmotive/textgraph@0.2.2-alpha.2 dist.integrity
94
+ npm install @drawmotive/textgraph@0.2.2-alpha.2
95
95
  ```
96
96
 
97
97
  If a workflow fails before publishing, fix the configuration and rerun the same tag. For a manual dispatch, select the release tag as the workflow ref and supply the same tag as input; dispatching from `main` is rejected so OIDC and provenance identify the correct commit. For example:
98
98
 
99
99
  ```bash
100
- gh workflow run release.yml --ref textgraph-v0.2.2-alpha.1 -f tag=textgraph-v0.2.2-alpha.1
100
+ gh workflow run release.yml --ref textgraph-v0.2.2-alpha.2 -f tag=textgraph-v0.2.2-alpha.2
101
101
  ```
102
102
 
103
103
  If publication succeeded but a later check failed, the script accepts an identical registry artifact with the correct channel and refuses different bytes at the same version. Keep the original workflow artifact for diagnosing integrity differences.
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1,7 +1,7 @@
1
1
  export const config = /*json-start*/{
2
2
  "mainAssemblyName": "DrawMotive.TextGraph.Bridge.dll",
3
3
  "resources": {
4
- "hash": "sha256-d50+Y9w70cL84QUZzDTk72kSrZo/KqrcpbDpZSu6uq4=",
4
+ "hash": "sha256-8FmwOmBZ+SFhsg4Z1Q4eyPRkYNbS6XkVYj2B2RWM2Uw=",
5
5
  "jsModuleNative": [
6
6
  {
7
7
  "name": "dotnet.native.js"
@@ -15,7 +15,7 @@ export const config = /*json-start*/{
15
15
  "wasmNative": [
16
16
  {
17
17
  "name": "dotnet.native.wasm",
18
- "hash": "sha256-TMXBeFM5qwXQX8z+88x9WkqxXQTKHn/Lgogwr+GdG+Q="
18
+ "hash": "sha256-3DvnYxhVVGZUnnhjVRAjnr+yRc4RUw3tH5mtWSs4OCk="
19
19
  }
20
20
  ],
21
21
  "coreAssembly": [
@@ -27,44 +27,44 @@ export const config = /*json-start*/{
27
27
  {
28
28
  "virtualPath": "System.Private.CoreLib.wasm",
29
29
  "name": "System.Private.CoreLib.wasm",
30
- "hash": "sha256-oOxC4TkHO0/zu1jbe+G16eMbQ8kBAvmjZLUDTufJOPo="
30
+ "hash": "sha256-R3WPOu0FW1nr0l4R5IUtgsh9K4LqI8nG4E1P2qaGZ04="
31
31
  }
32
32
  ],
33
33
  "assembly": [
34
34
  {
35
35
  "virtualPath": "ExCSS.wasm",
36
36
  "name": "ExCSS.wasm",
37
- "hash": "sha256-8Gq5sGr5bYe17OLNLNtVme+803cBlugkbVfni3/KtVc="
37
+ "hash": "sha256-c1TReuTKA12fGvn9dqvotNKJxTLhhu5QsiwYt+ZpmYI="
38
38
  },
39
39
  {
40
40
  "virtualPath": "Grpc.Core.Api.wasm",
41
41
  "name": "Grpc.Core.Api.wasm",
42
- "hash": "sha256-LZNSqTir3SJCQuaEEuvd3moFVhRGtP71VkNVwzK2Bo0="
42
+ "hash": "sha256-cAsCPThXAaxkhablgLVwz/pEW8al1JTVs552cOIPDLY="
43
43
  },
44
44
  {
45
45
  "virtualPath": "HarfBuzzSharp.wasm",
46
46
  "name": "HarfBuzzSharp.wasm",
47
- "hash": "sha256-JMypDX8jRR/Ddb46wIWAIFYbNxKEgsjvP1tJfqp7RVU="
47
+ "hash": "sha256-0rnI3MbFX+T2XsQ+WPS3Gama89dTzWD0iUGVJBwTRXc="
48
48
  },
49
49
  {
50
50
  "virtualPath": "MagicOnion.Abstractions.wasm",
51
51
  "name": "MagicOnion.Abstractions.wasm",
52
- "hash": "sha256-q5ZbT1om4/SVjxE/gn3kdGdMi/yoJsHtVFygeTCNImI="
52
+ "hash": "sha256-BbUCP5Xhr6OYZcOdsvWPCWEGwMzkzPnIkNfBDZYGock="
53
53
  },
54
54
  {
55
55
  "virtualPath": "MagicOnion.Serialization.MessagePack.wasm",
56
56
  "name": "MagicOnion.Serialization.MessagePack.wasm",
57
- "hash": "sha256-Y/8wQofIUUOdYr4eiSVcnXV+s4e/XEV1U8lTqRv1VgY="
57
+ "hash": "sha256-Wt9Bd96kId46BqyMKff8y57vQCTmRuwtV4zHchq9r88="
58
58
  },
59
59
  {
60
60
  "virtualPath": "MagicOnion.Shared.wasm",
61
61
  "name": "MagicOnion.Shared.wasm",
62
- "hash": "sha256-JIJ1qHwWIchCh+BU6ce12aqOoe+t6Jox04eI0IOysM0="
62
+ "hash": "sha256-iSzZFHWPwQEuYG8HXmyGlfiO3mSAldSlMxasUj3NPao="
63
63
  },
64
64
  {
65
65
  "virtualPath": "Markdig.wasm",
66
66
  "name": "Markdig.wasm",
67
- "hash": "sha256-Vs+O4z19GqKw3tbW2sPDdGS0+/V6Y7ZqqYniikjBh58="
67
+ "hash": "sha256-6O7MXmY38XS3+jaBbhrQWVRIZp5SyzDjQ6H28DGw8uo="
68
68
  },
69
69
  {
70
70
  "virtualPath": "MemoryPack.Core.wasm",
@@ -74,12 +74,12 @@ export const config = /*json-start*/{
74
74
  {
75
75
  "virtualPath": "MessagePack.wasm",
76
76
  "name": "MessagePack.wasm",
77
- "hash": "sha256-k45a7exscPJaoUW1Fx1mGY9Bc6RbRGTIrAfNE1gpQSA="
77
+ "hash": "sha256-gODv3klgqHElqEVeNUjDIZWsiqJpxrDUtP+FaxwUzC0="
78
78
  },
79
79
  {
80
80
  "virtualPath": "MessagePack.Annotations.wasm",
81
81
  "name": "MessagePack.Annotations.wasm",
82
- "hash": "sha256-X6T/B2hLfscTRV8R+udP1isYQ3QedoqGTYRoezLWLNQ="
82
+ "hash": "sha256-Y8larPe7kCvkk5jFVAE2jryNh1le1lvNF42d2htyGpY="
83
83
  },
84
84
  {
85
85
  "virtualPath": "Microsoft.AspNetCore.Components.Web.wasm",
@@ -134,12 +134,12 @@ export const config = /*json-start*/{
134
134
  {
135
135
  "virtualPath": "Polly.wasm",
136
136
  "name": "Polly.wasm",
137
- "hash": "sha256-eSXY+B0UR7o5vq1w0+MYQU84lXRsKRij1hP/2bsV86I="
137
+ "hash": "sha256-NcV7gutiGHCDff06/wDsud+20Wl6xOEHNhalWs4CdIE="
138
138
  },
139
139
  {
140
140
  "virtualPath": "Polly.Core.wasm",
141
141
  "name": "Polly.Core.wasm",
142
- "hash": "sha256-Oi8ZSbTHuOZe5zMKIdkKI4KxKpi1gm3dK9mcOg9qSGU="
142
+ "hash": "sha256-li+Zk1bbR406FjygbR4vHFxUYBMg6YMRm3hUkOYwuzo="
143
143
  },
144
144
  {
145
145
  "virtualPath": "R3.wasm",
@@ -154,12 +154,12 @@ export const config = /*json-start*/{
154
154
  {
155
155
  "virtualPath": "SkiaSharp.wasm",
156
156
  "name": "SkiaSharp.wasm",
157
- "hash": "sha256-ALHHBsQPXjld3UNJnyusXQuEmW3VxRMASWqnym/2GBg="
157
+ "hash": "sha256-MpeE81pK73isgx4BVEiPEljrY/wUyoYXGq5+xbHAMYs="
158
158
  },
159
159
  {
160
160
  "virtualPath": "SkiaSharp.HarfBuzz.wasm",
161
161
  "name": "SkiaSharp.HarfBuzz.wasm",
162
- "hash": "sha256-c72h3ML5ME05dqE4g6ypYT8myBzNb7AiBJR8EIx2E7I="
162
+ "hash": "sha256-iirdrlaRo+I9Mqlx4JqjClxYg9IbbTOaBHx6kyyLIn4="
163
163
  },
164
164
  {
165
165
  "virtualPath": "Stateless.wasm",
@@ -174,22 +174,22 @@ export const config = /*json-start*/{
174
174
  {
175
175
  "virtualPath": "Graphics.Core.wasm",
176
176
  "name": "Graphics.Core.wasm",
177
- "hash": "sha256-iSEauCY5q1oAeNbaV2jczNbYY33Rqo+mzPz52tDG4MQ="
177
+ "hash": "sha256-pURePVdy3OdXKVxBOGxozwxpgUuNp+gDbRR4K0yOjII="
178
178
  },
179
179
  {
180
180
  "virtualPath": "Math.Core.wasm",
181
181
  "name": "Math.Core.wasm",
182
- "hash": "sha256-TSjfBhvfHe94weEF0VavS2OXq1xHQ+CxNvXwg1g3PGU="
182
+ "hash": "sha256-rAwRf96kfhvzX87bTnypm9ukbRUO04ILuNsSzbrRCdY="
183
183
  },
184
184
  {
185
185
  "virtualPath": "RBush.wasm",
186
186
  "name": "RBush.wasm",
187
- "hash": "sha256-L7jxKSrz2MRUb/FNRsqWDamh5eL+tKfIZaJAVSVdQGc="
187
+ "hash": "sha256-EaDqY2JWw7Fb0CUJ6KczHvuqtvJKpQ3h3NAR6bDkghw="
188
188
  },
189
189
  {
190
190
  "virtualPath": "DrawMotive.TextGraph.Bridge.wasm",
191
191
  "name": "DrawMotive.TextGraph.Bridge.wasm",
192
- "hash": "sha256-0A1CgGsBa7rIodX4pSLlRlKb4ckqbm8fZmllDCavUGs="
192
+ "hash": "sha256-ojZGmKsqH6SfJ2X8Kgdym9LOxMDXGoZuUNcdj59ZL2c="
193
193
  },
194
194
  {
195
195
  "virtualPath": "System.Collections.Concurrent.wasm",
@@ -204,7 +204,7 @@ export const config = /*json-start*/{
204
204
  {
205
205
  "virtualPath": "System.Collections.NonGeneric.wasm",
206
206
  "name": "System.Collections.NonGeneric.wasm",
207
- "hash": "sha256-riuXH4ihfobLOIaugvAaKP6T4/R6fyY2KqkjTIhEcrk="
207
+ "hash": "sha256-ZShNVRUSARfhYe21AlvBKsoCCQq+AK/yefCYxwoqLnQ="
208
208
  },
209
209
  {
210
210
  "virtualPath": "System.Collections.Specialized.wasm",
@@ -229,7 +229,7 @@ export const config = /*json-start*/{
229
229
  {
230
230
  "virtualPath": "System.ComponentModel.TypeConverter.wasm",
231
231
  "name": "System.ComponentModel.TypeConverter.wasm",
232
- "hash": "sha256-X7lhgCA+uGhl6GnVuRnsxDegHMwfoTQ9Eugr/a5JrFk="
232
+ "hash": "sha256-mWRb2YHFZI0WdPaEh6nx+U5WMUaMl6gK9FD71Kh6Upc="
233
233
  },
234
234
  {
235
235
  "virtualPath": "System.ComponentModel.wasm",
@@ -239,7 +239,7 @@ export const config = /*json-start*/{
239
239
  {
240
240
  "virtualPath": "System.Console.wasm",
241
241
  "name": "System.Console.wasm",
242
- "hash": "sha256-nHNjBB9UxljOJbvXLQY5JaHyhkAaZcPwgmEHapmoj6k="
242
+ "hash": "sha256-BAKmU+lUWgxhtkmZ8jieCZeWo80RWxGZs2ooZ6iqZ/o="
243
243
  },
244
244
  {
245
245
  "virtualPath": "System.Diagnostics.StackTrace.wasm",
@@ -284,12 +284,12 @@ export const config = /*json-start*/{
284
284
  {
285
285
  "virtualPath": "System.Net.Http.wasm",
286
286
  "name": "System.Net.Http.wasm",
287
- "hash": "sha256-NbpsFk2PX4JexJzfyXJecwIfAF5lh0JO4M74vtC6OZE="
287
+ "hash": "sha256-VTLLDv0CufL90HZn7zDPWv02ruTg8G9m+SwcJyD1i3Q="
288
288
  },
289
289
  {
290
290
  "virtualPath": "System.Net.Primitives.wasm",
291
291
  "name": "System.Net.Primitives.wasm",
292
- "hash": "sha256-PtieOAN9/qc/n9XPjxEkLGTyAN7KCN+7ejDfzGv9K7A="
292
+ "hash": "sha256-eSkmLWnZ3RkSwQTH7dunFXMwU+BM4C35r9dvdzASvUk="
293
293
  },
294
294
  {
295
295
  "virtualPath": "System.Numerics.Vectors.wasm",
@@ -299,12 +299,22 @@ export const config = /*json-start*/{
299
299
  {
300
300
  "virtualPath": "System.ObjectModel.wasm",
301
301
  "name": "System.ObjectModel.wasm",
302
- "hash": "sha256-kU2d0FPAYCB2M2uIqAneJPsjyUhhA0I+L6DpnvbquXM="
302
+ "hash": "sha256-ZGzUR9M3xG+ldoMXJlEMFhykHM1XM07pwcNSKnmUgjA="
303
303
  },
304
304
  {
305
305
  "virtualPath": "System.Private.Uri.wasm",
306
306
  "name": "System.Private.Uri.wasm",
307
- "hash": "sha256-v6FwYU8ldZriilKh+GXYNMT4RAqeSdF0WnCfCsigVH4="
307
+ "hash": "sha256-7qWIqu5RB2yKuIMYFhkDAdZPTC8THfBWQQXFOjYuyUY="
308
+ },
309
+ {
310
+ "virtualPath": "System.Private.Xml.Linq.wasm",
311
+ "name": "System.Private.Xml.Linq.wasm",
312
+ "hash": "sha256-YUdLSlfh4mTeprrwyQIUxsElrJbYfvbUWpkeckKJ/vQ="
313
+ },
314
+ {
315
+ "virtualPath": "System.Private.Xml.wasm",
316
+ "name": "System.Private.Xml.wasm",
317
+ "hash": "sha256-NvKzCnIW7pjCHMcZ2yNX4d5GFjvAW3WFRTIl30pZshc="
308
318
  },
309
319
  {
310
320
  "virtualPath": "System.Reflection.Emit.ILGeneration.wasm",
@@ -396,6 +406,16 @@ export const config = /*json-start*/{
396
406
  "name": "System.Threading.wasm",
397
407
  "hash": "sha256-33A/53dyHRgFy1DQMqZyZKc6Jn7wGiVD6e6ymxdcu0Q="
398
408
  },
409
+ {
410
+ "virtualPath": "System.Xml.Linq.wasm",
411
+ "name": "System.Xml.Linq.wasm",
412
+ "hash": "sha256-e5txtle0V/jlZ+5laxHe+k2o2xewHh66AVpDrj8yXlc="
413
+ },
414
+ {
415
+ "virtualPath": "System.Xml.XDocument.wasm",
416
+ "name": "System.Xml.XDocument.wasm",
417
+ "hash": "sha256-Zz8cfnvyOXtJrBj5EKFxKoHWmuOgo/vOKwV9EocZ0Mg="
418
+ },
399
419
  {
400
420
  "virtualPath": "System.wasm",
401
421
  "name": "System.wasm",
@@ -30,11 +30,11 @@ Module['ready'] = new Promise((resolve, reject) => {
30
30
 
31
31
  // --pre-jses are emitted after the Module integration code, so that they can
32
32
  // refer to Module (if they choose; they can also define Module)
33
- // include: /home/mason/dotnet/packs/Microsoft.NETCore.App.Runtime.Mono.browser-wasm/10.0.12/runtimes/browser-wasm/native/src/es6/dotnet.es6.pre.js
33
+ // include: /home/admin/.dotnet/packs/Microsoft.NETCore.App.Runtime.Mono.browser-wasm/10.0.12/runtimes/browser-wasm/native/src/es6/dotnet.es6.pre.js
34
34
  if (_nativeModuleLoaded) throw new Error("Native module already loaded");
35
35
  _nativeModuleLoaded = true;
36
36
  createDotnetRuntime = Module = moduleArg(Module);
37
- // end include: /home/mason/dotnet/packs/Microsoft.NETCore.App.Runtime.Mono.browser-wasm/10.0.12/runtimes/browser-wasm/native/src/es6/dotnet.es6.pre.js
37
+ // end include: /home/admin/.dotnet/packs/Microsoft.NETCore.App.Runtime.Mono.browser-wasm/10.0.12/runtimes/browser-wasm/native/src/es6/dotnet.es6.pre.js
38
38
 
39
39
 
40
40
  // Sometimes an existing Module object exists with properties
@@ -4986,6 +4986,20 @@ function createWasm() {
4986
4986
  ;
4987
4987
  }
4988
4988
 
4989
+ function _fd_sync(fd) {
4990
+ try {
4991
+
4992
+ var stream = SYSCALLS.getStreamFromFD(fd);
4993
+ if (stream.stream_ops?.fsync) {
4994
+ return stream.stream_ops.fsync(stream);
4995
+ }
4996
+ return 0; // we can't do anything synchronously; the in-memory FS is already synced to
4997
+ } catch (e) {
4998
+ if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e;
4999
+ return e.errno;
5000
+ }
5001
+ }
5002
+
4989
5003
 
4990
5004
  function _fd_write(fd, iov, iovcnt, pnum) {
4991
5005
  try {
@@ -5860,6 +5874,8 @@ var wasmImports = {
5860
5874
  /** @export */
5861
5875
  fd_seek: _fd_seek,
5862
5876
  /** @export */
5877
+ fd_sync: _fd_sync,
5878
+ /** @export */
5863
5879
  fd_write: _fd_write,
5864
5880
  /** @export */
5865
5881
  mono_interp_flush_jitcall_queue: _mono_interp_flush_jitcall_queue,
Binary file