@stll/anonymize-wasm 2.0.0-alpha.1 → 2.0.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.
Files changed (161) hide show
  1. package/README.md +93 -4
  2. package/dist/native/index.wasi-browser.js +12002 -0
  3. package/dist/native/index.wasi.cjs +122 -0
  4. package/dist/native/index.wasm32-wasi.wasm +0 -0
  5. package/dist/native/native-pipeline.cs.stlanonpkg +0 -0
  6. package/dist/native/native-pipeline.de.stlanonpkg +0 -0
  7. package/dist/native/native-pipeline.en.stlanonpkg +0 -0
  8. package/dist/native/native-pipeline.stlanonpkg +0 -0
  9. package/dist/native/wasi-worker-browser.mjs +10766 -0
  10. package/dist/native/wasi-worker.mjs +63 -0
  11. package/dist/vite.d.mts +18 -2
  12. package/dist/vite.mjs +89 -12
  13. package/dist/vite.mjs.map +1 -1
  14. package/dist/wasm.d.mts +417 -1348
  15. package/dist/wasm.mjs +461 -18598
  16. package/dist/wasm.mjs.map +1 -1
  17. package/package.json +15 -9
  18. package/dist/address-boundaries.mjs +0 -197
  19. package/dist/address-boundaries.mjs.map +0 -1
  20. package/dist/address-jurisdiction-prefixes.mjs +0 -16
  21. package/dist/address-jurisdiction-prefixes.mjs.map +0 -1
  22. package/dist/address-stop-keywords.mjs +0 -148
  23. package/dist/address-stop-keywords.mjs.map +0 -1
  24. package/dist/address-stopwords.mjs +0 -84
  25. package/dist/address-stopwords.mjs.map +0 -1
  26. package/dist/address-unit-abbreviations.mjs +0 -15
  27. package/dist/address-unit-abbreviations.mjs.map +0 -1
  28. package/dist/allow-list.mjs +0 -196
  29. package/dist/allow-list.mjs.map +0 -1
  30. package/dist/clause-noun-heads.mjs +0 -79
  31. package/dist/clause-noun-heads.mjs.map +0 -1
  32. package/dist/common-words-en.mjs +0 -9887
  33. package/dist/common-words-en.mjs.map +0 -1
  34. package/dist/coreference-org-determiners.mjs +0 -19
  35. package/dist/coreference-org-determiners.mjs.map +0 -1
  36. package/dist/coreference.cs.mjs +0 -14
  37. package/dist/coreference.cs.mjs.map +0 -1
  38. package/dist/coreference.de.mjs +0 -14
  39. package/dist/coreference.de.mjs.map +0 -1
  40. package/dist/coreference.en.mjs +0 -14
  41. package/dist/coreference.en.mjs.map +0 -1
  42. package/dist/coreference.es.mjs +0 -22
  43. package/dist/coreference.es.mjs.map +0 -1
  44. package/dist/coreference.fr.mjs +0 -32
  45. package/dist/coreference.fr.mjs.map +0 -1
  46. package/dist/coreference.it.mjs +0 -27
  47. package/dist/coreference.it.mjs.map +0 -1
  48. package/dist/coreference.pl.mjs +0 -27
  49. package/dist/coreference.pl.mjs.map +0 -1
  50. package/dist/coreference.pt-br.mjs +0 -14
  51. package/dist/coreference.pt-br.mjs.map +0 -1
  52. package/dist/coreference.sk.mjs +0 -27
  53. package/dist/coreference.sk.mjs.map +0 -1
  54. package/dist/currencies.mjs +0 -231
  55. package/dist/currencies.mjs.map +0 -1
  56. package/dist/date-months.mjs +0 -618
  57. package/dist/date-months.mjs.map +0 -1
  58. package/dist/defined-term-heads.mjs +0 -15
  59. package/dist/defined-term-heads.mjs.map +0 -1
  60. package/dist/document-structure-headings.mjs +0 -90
  61. package/dist/document-structure-headings.mjs.map +0 -1
  62. package/dist/false-positive-shapes.mjs +0 -36
  63. package/dist/false-positive-shapes.mjs.map +0 -1
  64. package/dist/generic-roles.mjs +0 -244
  65. package/dist/generic-roles.mjs.map +0 -1
  66. package/dist/hotword-rules.mjs +0 -149
  67. package/dist/hotword-rules.mjs.map +0 -1
  68. package/dist/legal-form-leading-clauses.mjs +0 -23
  69. package/dist/legal-form-leading-clauses.mjs.map +0 -1
  70. package/dist/legal-forms.mjs +0 -2115
  71. package/dist/legal-forms.mjs.map +0 -1
  72. package/dist/legal-role-heads.cs.mjs +0 -48
  73. package/dist/legal-role-heads.cs.mjs.map +0 -1
  74. package/dist/legal-role-heads.de.mjs +0 -33
  75. package/dist/legal-role-heads.de.mjs.map +0 -1
  76. package/dist/legal-role-heads.en.mjs +0 -37
  77. package/dist/legal-role-heads.en.mjs.map +0 -1
  78. package/dist/legal-role-heads.es.mjs +0 -54
  79. package/dist/legal-role-heads.es.mjs.map +0 -1
  80. package/dist/legal-role-heads.fr.mjs +0 -72
  81. package/dist/legal-role-heads.fr.mjs.map +0 -1
  82. package/dist/legal-role-heads.it.mjs +0 -68
  83. package/dist/legal-role-heads.it.mjs.map +0 -1
  84. package/dist/legal-role-heads.pl.mjs +0 -84
  85. package/dist/legal-role-heads.pl.mjs.map +0 -1
  86. package/dist/legal-role-heads.pt-br.mjs +0 -63
  87. package/dist/legal-role-heads.pt-br.mjs.map +0 -1
  88. package/dist/legal-role-heads.sk.mjs +0 -80
  89. package/dist/legal-role-heads.sk.mjs.map +0 -1
  90. package/dist/manifest.mjs +0 -69
  91. package/dist/manifest.mjs.map +0 -1
  92. package/dist/names-exclusions.mjs +0 -223
  93. package/dist/names-exclusions.mjs.map +0 -1
  94. package/dist/names-first.mjs +0 -418
  95. package/dist/names-first.mjs.map +0 -1
  96. package/dist/names-nw-ar.mjs +0 -202
  97. package/dist/names-nw-ar.mjs.map +0 -1
  98. package/dist/names-nw-excluded-allcaps.mjs +0 -112
  99. package/dist/names-nw-excluded-allcaps.mjs.map +0 -1
  100. package/dist/names-nw-fil.mjs +0 -202
  101. package/dist/names-nw-fil.mjs.map +0 -1
  102. package/dist/names-nw-id.mjs +0 -210
  103. package/dist/names-nw-id.mjs.map +0 -1
  104. package/dist/names-nw-in.mjs +0 -526
  105. package/dist/names-nw-in.mjs.map +0 -1
  106. package/dist/names-nw-ja-latn.mjs +0 -260
  107. package/dist/names-nw-ja-latn.mjs.map +0 -1
  108. package/dist/names-nw-ko.mjs +0 -162
  109. package/dist/names-nw-ko.mjs.map +0 -1
  110. package/dist/names-nw-th.mjs +0 -188
  111. package/dist/names-nw-th.mjs.map +0 -1
  112. package/dist/names-nw-vi.mjs +0 -151
  113. package/dist/names-nw-vi.mjs.map +0 -1
  114. package/dist/names-nw-zh-latn.mjs +0 -197
  115. package/dist/names-nw-zh-latn.mjs.map +0 -1
  116. package/dist/names-surnames.mjs +0 -113
  117. package/dist/names-surnames.mjs.map +0 -1
  118. package/dist/names-title-tokens.mjs +0 -40
  119. package/dist/names-title-tokens.mjs.map +0 -1
  120. package/dist/organization-unit-heads.mjs +0 -20
  121. package/dist/organization-unit-heads.mjs.map +0 -1
  122. package/dist/person-stopwords.mjs +0 -211
  123. package/dist/person-stopwords.mjs.map +0 -1
  124. package/dist/section-headings.mjs +0 -64
  125. package/dist/section-headings.mjs.map +0 -1
  126. package/dist/sentence-verb-indicators.mjs +0 -232
  127. package/dist/sentence-verb-indicators.mjs.map +0 -1
  128. package/dist/signing-clauses.mjs +0 -102
  129. package/dist/signing-clauses.mjs.map +0 -1
  130. package/dist/stopwords.mjs +0 -9915
  131. package/dist/stopwords.mjs.map +0 -1
  132. package/dist/structural-single-cap-prefixes.mjs +0 -99
  133. package/dist/structural-single-cap-prefixes.mjs.map +0 -1
  134. package/dist/triggers.cs.mjs +0 -569
  135. package/dist/triggers.cs.mjs.map +0 -1
  136. package/dist/triggers.de.mjs +0 -139
  137. package/dist/triggers.de.mjs.map +0 -1
  138. package/dist/triggers.en.mjs +0 -119
  139. package/dist/triggers.en.mjs.map +0 -1
  140. package/dist/triggers.es.mjs +0 -96
  141. package/dist/triggers.es.mjs.map +0 -1
  142. package/dist/triggers.fr.mjs +0 -275
  143. package/dist/triggers.fr.mjs.map +0 -1
  144. package/dist/triggers.global.mjs +0 -79
  145. package/dist/triggers.global.mjs.map +0 -1
  146. package/dist/triggers.hu.mjs +0 -41
  147. package/dist/triggers.hu.mjs.map +0 -1
  148. package/dist/triggers.it.mjs +0 -74
  149. package/dist/triggers.it.mjs.map +0 -1
  150. package/dist/triggers.pl.mjs +0 -271
  151. package/dist/triggers.pl.mjs.map +0 -1
  152. package/dist/triggers.pt-br.mjs +0 -193
  153. package/dist/triggers.pt-br.mjs.map +0 -1
  154. package/dist/triggers.ro.mjs +0 -59
  155. package/dist/triggers.ro.mjs.map +0 -1
  156. package/dist/triggers.sk.mjs +0 -555
  157. package/dist/triggers.sk.mjs.map +0 -1
  158. package/dist/triggers.sv.mjs +0 -58
  159. package/dist/triggers.sv.mjs.map +0 -1
  160. package/dist/year-words.mjs +0 -62
  161. package/dist/year-words.mjs.map +0 -1
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.