@stll/anonymize-wasm 1.5.0 → 2.0.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.
Files changed (152) hide show
  1. package/LICENSE +1 -2
  2. package/README.md +93 -4
  3. package/dist/native/index.wasi-browser.js +12002 -0
  4. package/dist/native/index.wasi.cjs +122 -0
  5. package/dist/native/index.wasm32-wasi.wasm +0 -0
  6. package/dist/native/native-pipeline.cs.stlanonpkg +0 -0
  7. package/dist/native/native-pipeline.de.stlanonpkg +0 -0
  8. package/dist/native/native-pipeline.en.stlanonpkg +0 -0
  9. package/dist/native/native-pipeline.stlanonpkg +0 -0
  10. package/dist/native/wasi-worker-browser.mjs +10766 -0
  11. package/dist/native/wasi-worker.mjs +63 -0
  12. package/dist/vite.d.mts +18 -2
  13. package/dist/vite.mjs +89 -12
  14. package/dist/vite.mjs.map +1 -1
  15. package/dist/wasm.d.mts +553 -1102
  16. package/dist/wasm.mjs +359 -16223
  17. package/dist/wasm.mjs.map +1 -1
  18. package/package.json +15 -9
  19. package/dist/address-boundaries.mjs +0 -195
  20. package/dist/address-boundaries.mjs.map +0 -1
  21. package/dist/address-prepositions.mjs +0 -182
  22. package/dist/address-prepositions.mjs.map +0 -1
  23. package/dist/address-stop-keywords.mjs +0 -137
  24. package/dist/address-stop-keywords.mjs.map +0 -1
  25. package/dist/address-stopwords.mjs +0 -84
  26. package/dist/address-stopwords.mjs.map +0 -1
  27. package/dist/allow-list.mjs +0 -196
  28. package/dist/allow-list.mjs.map +0 -1
  29. package/dist/clause-noun-heads.mjs +0 -75
  30. package/dist/clause-noun-heads.mjs.map +0 -1
  31. package/dist/common-words-en.mjs +0 -9887
  32. package/dist/common-words-en.mjs.map +0 -1
  33. package/dist/coreference.cs.mjs +0 -14
  34. package/dist/coreference.cs.mjs.map +0 -1
  35. package/dist/coreference.de.mjs +0 -14
  36. package/dist/coreference.de.mjs.map +0 -1
  37. package/dist/coreference.en.mjs +0 -14
  38. package/dist/coreference.en.mjs.map +0 -1
  39. package/dist/coreference.es.mjs +0 -22
  40. package/dist/coreference.es.mjs.map +0 -1
  41. package/dist/coreference.fr.mjs +0 -32
  42. package/dist/coreference.fr.mjs.map +0 -1
  43. package/dist/coreference.it.mjs +0 -27
  44. package/dist/coreference.it.mjs.map +0 -1
  45. package/dist/coreference.pl.mjs +0 -27
  46. package/dist/coreference.pl.mjs.map +0 -1
  47. package/dist/coreference.pt-br.mjs +0 -14
  48. package/dist/coreference.pt-br.mjs.map +0 -1
  49. package/dist/coreference.sk.mjs +0 -27
  50. package/dist/coreference.sk.mjs.map +0 -1
  51. package/dist/currencies.mjs +0 -231
  52. package/dist/currencies.mjs.map +0 -1
  53. package/dist/date-months.mjs +0 -618
  54. package/dist/date-months.mjs.map +0 -1
  55. package/dist/document-structure-headings.mjs +0 -90
  56. package/dist/document-structure-headings.mjs.map +0 -1
  57. package/dist/generic-roles.mjs +0 -244
  58. package/dist/generic-roles.mjs.map +0 -1
  59. package/dist/hotword-rules.mjs +0 -149
  60. package/dist/hotword-rules.mjs.map +0 -1
  61. package/dist/legal-form-leading-clauses.mjs +0 -23
  62. package/dist/legal-form-leading-clauses.mjs.map +0 -1
  63. package/dist/legal-forms.mjs +0 -2115
  64. package/dist/legal-forms.mjs.map +0 -1
  65. package/dist/legal-role-heads.cs.mjs +0 -42
  66. package/dist/legal-role-heads.cs.mjs.map +0 -1
  67. package/dist/legal-role-heads.de.mjs +0 -33
  68. package/dist/legal-role-heads.de.mjs.map +0 -1
  69. package/dist/legal-role-heads.en.mjs +0 -37
  70. package/dist/legal-role-heads.en.mjs.map +0 -1
  71. package/dist/legal-role-heads.es.mjs +0 -54
  72. package/dist/legal-role-heads.es.mjs.map +0 -1
  73. package/dist/legal-role-heads.fr.mjs +0 -72
  74. package/dist/legal-role-heads.fr.mjs.map +0 -1
  75. package/dist/legal-role-heads.it.mjs +0 -68
  76. package/dist/legal-role-heads.it.mjs.map +0 -1
  77. package/dist/legal-role-heads.pl.mjs +0 -84
  78. package/dist/legal-role-heads.pl.mjs.map +0 -1
  79. package/dist/legal-role-heads.pt-br.mjs +0 -63
  80. package/dist/legal-role-heads.pt-br.mjs.map +0 -1
  81. package/dist/legal-role-heads.sk.mjs +0 -80
  82. package/dist/legal-role-heads.sk.mjs.map +0 -1
  83. package/dist/manifest.mjs +0 -69
  84. package/dist/manifest.mjs.map +0 -1
  85. package/dist/names-exclusions.mjs +0 -223
  86. package/dist/names-exclusions.mjs.map +0 -1
  87. package/dist/names-first.mjs +0 -418
  88. package/dist/names-first.mjs.map +0 -1
  89. package/dist/names-nw-ar.mjs +0 -202
  90. package/dist/names-nw-ar.mjs.map +0 -1
  91. package/dist/names-nw-excluded-allcaps.mjs +0 -112
  92. package/dist/names-nw-excluded-allcaps.mjs.map +0 -1
  93. package/dist/names-nw-fil.mjs +0 -202
  94. package/dist/names-nw-fil.mjs.map +0 -1
  95. package/dist/names-nw-id.mjs +0 -210
  96. package/dist/names-nw-id.mjs.map +0 -1
  97. package/dist/names-nw-in.mjs +0 -526
  98. package/dist/names-nw-in.mjs.map +0 -1
  99. package/dist/names-nw-ja-latn.mjs +0 -260
  100. package/dist/names-nw-ja-latn.mjs.map +0 -1
  101. package/dist/names-nw-ko.mjs +0 -162
  102. package/dist/names-nw-ko.mjs.map +0 -1
  103. package/dist/names-nw-th.mjs +0 -188
  104. package/dist/names-nw-th.mjs.map +0 -1
  105. package/dist/names-nw-vi.mjs +0 -151
  106. package/dist/names-nw-vi.mjs.map +0 -1
  107. package/dist/names-nw-zh-latn.mjs +0 -197
  108. package/dist/names-nw-zh-latn.mjs.map +0 -1
  109. package/dist/names-surnames.mjs +0 -113
  110. package/dist/names-surnames.mjs.map +0 -1
  111. package/dist/names-title-tokens.mjs +0 -40
  112. package/dist/names-title-tokens.mjs.map +0 -1
  113. package/dist/person-stopwords.mjs +0 -205
  114. package/dist/person-stopwords.mjs.map +0 -1
  115. package/dist/section-headings.mjs +0 -64
  116. package/dist/section-headings.mjs.map +0 -1
  117. package/dist/sentence-verb-indicators.mjs +0 -232
  118. package/dist/sentence-verb-indicators.mjs.map +0 -1
  119. package/dist/signing-clauses.mjs +0 -78
  120. package/dist/signing-clauses.mjs.map +0 -1
  121. package/dist/stopwords.mjs +0 -9915
  122. package/dist/stopwords.mjs.map +0 -1
  123. package/dist/structural-single-cap-prefixes.mjs +0 -99
  124. package/dist/structural-single-cap-prefixes.mjs.map +0 -1
  125. package/dist/triggers.cs.mjs +0 -569
  126. package/dist/triggers.cs.mjs.map +0 -1
  127. package/dist/triggers.de.mjs +0 -139
  128. package/dist/triggers.de.mjs.map +0 -1
  129. package/dist/triggers.en.mjs +0 -119
  130. package/dist/triggers.en.mjs.map +0 -1
  131. package/dist/triggers.es.mjs +0 -96
  132. package/dist/triggers.es.mjs.map +0 -1
  133. package/dist/triggers.fr.mjs +0 -275
  134. package/dist/triggers.fr.mjs.map +0 -1
  135. package/dist/triggers.global.mjs +0 -79
  136. package/dist/triggers.global.mjs.map +0 -1
  137. package/dist/triggers.hu.mjs +0 -41
  138. package/dist/triggers.hu.mjs.map +0 -1
  139. package/dist/triggers.it.mjs +0 -74
  140. package/dist/triggers.it.mjs.map +0 -1
  141. package/dist/triggers.pl.mjs +0 -271
  142. package/dist/triggers.pl.mjs.map +0 -1
  143. package/dist/triggers.pt-br.mjs +0 -193
  144. package/dist/triggers.pt-br.mjs.map +0 -1
  145. package/dist/triggers.ro.mjs +0 -59
  146. package/dist/triggers.ro.mjs.map +0 -1
  147. package/dist/triggers.sk.mjs +0 -555
  148. package/dist/triggers.sk.mjs.map +0 -1
  149. package/dist/triggers.sv.mjs +0 -58
  150. package/dist/triggers.sv.mjs.map +0 -1
  151. package/dist/year-words.mjs +0 -62
  152. package/dist/year-words.mjs.map +0 -1
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2026 Stella
3
+ Copyright (c) 2026 stella
4
4
 
5
5
  Permission is hereby granted, free of charge, to any
6
6
  person obtaining a copy of this software and associated
@@ -25,4 +25,3 @@ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25
25
  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
26
26
  IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
27
27
  DEALINGS IN THE SOFTWARE.
28
-
package/README.md CHANGED
@@ -12,12 +12,101 @@ bun add @stll/anonymize-wasm
12
12
 
13
13
  ## Usage
14
14
 
15
+ Same native-SDK surface as `@stll/anonymize/native`, backed by the WebAssembly
16
+ binding. Browsers load prebuilt prepared packages (there is no in-browser config
17
+ building). The wasm binding is instantiated lazily on first use.
18
+
19
+ ```ts
20
+ import { loadDefaultPipeline } from "@stll/anonymize-wasm";
21
+
22
+ // Loads the compressed default package bundled in the tarball.
23
+ const pipeline = await loadDefaultPipeline();
24
+ const { redaction } = pipeline.redactText("A contract signed by Jan Novak.");
25
+ console.log(redaction.redactedText);
26
+ ```
27
+
28
+ Bring your own prepared package (bytes, an `ArrayBuffer`, or a URL to fetch):
29
+
30
+ ```ts
31
+ import { loadPipeline } from "@stll/anonymize-wasm";
32
+
33
+ const pipeline = await loadPipeline(
34
+ new URL("./my-package.stlanonpkg", import.meta.url),
35
+ );
36
+ ```
37
+
38
+ With Vite, register the helper plugin so the wasm binary, WASI worker, and
39
+ `.stlanonpkg` assets survive both dependency pre-bundling (dev) and a
40
+ production `vite build` (the plugin emits the `native/` assets and rewrites the
41
+ runtime asset base to point at them):
42
+
43
+ ```ts
44
+ import stllAnonymizeWasm from "@stll/anonymize-wasm/vite";
45
+ // vite.config: plugins: [stllAnonymizeWasm()]
46
+ ```
47
+
48
+ By default the plugin emits every bundled prepared package into your build. The
49
+ full-dictionary default package alone is large (~20 MB), plus the per-language
50
+ `cs`, `de`, and `en` variants. If your app only needs some of them, restrict the
51
+ emitted packages with the `packages` option (the wasm binary, glue, and workers
52
+ are always emitted):
53
+
15
54
  ```ts
16
- import { runPipeline } from "@stll/anonymize-wasm";
17
- import stllWasm from "@stll/anonymize-wasm/vite";
55
+ // Emit only the Czech scoped package.
56
+ stllAnonymizeWasm({ packages: ["cs"] });
57
+
58
+ // Emit the full-dictionary default plus English.
59
+ stllAnonymizeWasm({ packages: ["default", "en"] });
60
+
61
+ // Emit no prepared packages; the app supplies its own to loadPipeline().
62
+ stllAnonymizeWasm({ packages: "none" });
63
+
64
+ // Emit everything (the default).
65
+ stllAnonymizeWasm({ packages: "all" });
18
66
  ```
19
67
 
68
+ `"default"` selects the full-dictionary package that `loadDefaultPipeline()`
69
+ (no argument) loads; a language code selects the scoped package that
70
+ `loadDefaultPipeline("cs")` loads. Requesting a package that is not bundled
71
+ fails the build.
72
+
73
+ Interplay with the runtime loaders: the plugin only controls which assets ship,
74
+ not which the code asks for. Calling `loadDefaultPipeline(language)` for a
75
+ package you did not emit resolves to a missing asset URL and rejects with a
76
+ fetch error at runtime. Keep the `packages` list aligned with the languages your
77
+ app actually loads, or load your own package bytes through `loadPipeline`.
78
+
20
79
  ## Notes
21
80
 
22
- - This package depends on the same core runtime behavior as `@stll/anonymize`.
23
- - If you use Vite, include the helper plugin so wasm asset resolution stays intact.
81
+ - Same redaction core as `@stll/anonymize`, running in WebAssembly.
82
+ - The binding targets `wasm32-wasip1-threads` (shared memory), so it needs a
83
+ cross-origin-isolated context (`SharedArrayBuffer`) in the browser.
84
+
85
+ ## Third-party licenses
86
+
87
+ The shipped browser WASI glue (`dist/native/index.wasi-browser.js` and
88
+ `dist/native/wasi-worker-browser.mjs`) is bundled at build time and inlines the
89
+ following MIT-licensed runtime so it is self-contained for consumer bundlers:
90
+
91
+ - `@napi-rs/wasm-runtime` (MIT) — Copyright (c) napi-rs authors —
92
+ https://github.com/napi-rs/napi-rs
93
+ - `@tybys/wasm-util` (MIT) — Copyright (c) toyobayashi —
94
+ https://github.com/toyobayashi/wasm-util
95
+
96
+ Both are distributed under the MIT License; the full license text is available
97
+ in each project's repository.
98
+
99
+ ## Building from source
100
+
101
+ The wasm binding is generated by napi-rs and is not checked in:
102
+
103
+ ```bash
104
+ cd packages/anonymize
105
+ bun run build:native-wasm # needs the wasm32-wasip1-threads Rust target
106
+ bun run build # tsdown + native node binding
107
+ bun run build:wasm-assets # copy glue + build compressed packages into wasm/dist/native
108
+ ```
109
+
110
+ The `wasm32-wasip1-threads` target is pinned in `rust-toolchain.toml`, so
111
+ `rustup` installs it automatically; with a non-rustup toolchain run
112
+ `rustup target add wasm32-wasip1-threads` first.