@stll/anonymize-wasm 1.0.8 → 1.0.9

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 (257) hide show
  1. package/dist/AT.mjs +282 -0
  2. package/dist/AT.mjs.map +1 -0
  3. package/dist/AT2.mjs +343 -0
  4. package/dist/AT2.mjs.map +1 -0
  5. package/dist/AU.mjs +122 -0
  6. package/dist/AU.mjs.map +1 -0
  7. package/dist/AU2.mjs +90 -0
  8. package/dist/AU2.mjs.map +1 -0
  9. package/dist/BE.mjs +144 -0
  10. package/dist/BE.mjs.map +1 -0
  11. package/dist/BE2.mjs +107 -0
  12. package/dist/BE2.mjs.map +1 -0
  13. package/dist/BG.mjs +73 -0
  14. package/dist/BG.mjs.map +1 -0
  15. package/dist/BG2.mjs +42 -0
  16. package/dist/BG2.mjs.map +1 -0
  17. package/dist/BR.mjs +226 -0
  18. package/dist/BR.mjs.map +1 -0
  19. package/dist/BR2.mjs +339 -0
  20. package/dist/BR2.mjs.map +1 -0
  21. package/dist/CA.mjs +275 -0
  22. package/dist/CA.mjs.map +1 -0
  23. package/dist/CA2.mjs +222 -0
  24. package/dist/CA2.mjs.map +1 -0
  25. package/dist/CZ.mjs +212 -0
  26. package/dist/CZ.mjs.map +1 -0
  27. package/dist/CZ2.mjs +619 -0
  28. package/dist/CZ2.mjs.map +1 -0
  29. package/dist/CZ3.mjs +127 -0
  30. package/dist/CZ3.mjs.map +1 -0
  31. package/dist/DE.mjs +1652 -0
  32. package/dist/DE.mjs.map +1 -0
  33. package/dist/DE2.mjs +3885 -0
  34. package/dist/DE2.mjs.map +1 -0
  35. package/dist/DE3.mjs +669 -0
  36. package/dist/DE3.mjs.map +1 -0
  37. package/dist/DK.mjs +218 -0
  38. package/dist/DK.mjs.map +1 -0
  39. package/dist/DK2.mjs +162 -0
  40. package/dist/DK2.mjs.map +1 -0
  41. package/dist/ES.mjs +522 -0
  42. package/dist/ES.mjs.map +1 -0
  43. package/dist/ES2.mjs +352 -0
  44. package/dist/ES2.mjs.map +1 -0
  45. package/dist/FI.mjs +267 -0
  46. package/dist/FI.mjs.map +1 -0
  47. package/dist/FI2.mjs +107 -0
  48. package/dist/FI2.mjs.map +1 -0
  49. package/dist/FR.mjs +224 -0
  50. package/dist/FR.mjs.map +1 -0
  51. package/dist/FR2.mjs +1823 -0
  52. package/dist/FR2.mjs.map +1 -0
  53. package/dist/GB.mjs +298 -0
  54. package/dist/GB.mjs.map +1 -0
  55. package/dist/GB2.mjs +208 -0
  56. package/dist/GB2.mjs.map +1 -0
  57. package/dist/HR.mjs +37 -0
  58. package/dist/HR.mjs.map +1 -0
  59. package/dist/HR2.mjs +16 -0
  60. package/dist/HR2.mjs.map +1 -0
  61. package/dist/HU.mjs +59 -0
  62. package/dist/HU.mjs.map +1 -0
  63. package/dist/HU2.mjs +29 -0
  64. package/dist/HU2.mjs.map +1 -0
  65. package/dist/IE.mjs +35 -0
  66. package/dist/IE.mjs.map +1 -0
  67. package/dist/IE2.mjs +19 -0
  68. package/dist/IE2.mjs.map +1 -0
  69. package/dist/IT.mjs +341 -0
  70. package/dist/IT.mjs.map +1 -0
  71. package/dist/IT2.mjs +46 -0
  72. package/dist/IT2.mjs.map +1 -0
  73. package/dist/NL.mjs +298 -0
  74. package/dist/NL.mjs.map +1 -0
  75. package/dist/NL2.mjs +305 -0
  76. package/dist/NL2.mjs.map +1 -0
  77. package/dist/NO.mjs +178 -0
  78. package/dist/NO.mjs.map +1 -0
  79. package/dist/NO2.mjs +346 -0
  80. package/dist/NO2.mjs.map +1 -0
  81. package/dist/PL.mjs +175 -0
  82. package/dist/PL.mjs.map +1 -0
  83. package/dist/PL2.mjs +107 -0
  84. package/dist/PL2.mjs.map +1 -0
  85. package/dist/PT.mjs +78 -0
  86. package/dist/PT.mjs.map +1 -0
  87. package/dist/PT2.mjs +657 -0
  88. package/dist/PT2.mjs.map +1 -0
  89. package/dist/RO.mjs +181 -0
  90. package/dist/RO.mjs.map +1 -0
  91. package/dist/RO2.mjs +46 -0
  92. package/dist/RO2.mjs.map +1 -0
  93. package/dist/SE.mjs +270 -0
  94. package/dist/SE.mjs.map +1 -0
  95. package/dist/SE2.mjs +369 -0
  96. package/dist/SE2.mjs.map +1 -0
  97. package/dist/SI.mjs +27 -0
  98. package/dist/SI.mjs.map +1 -0
  99. package/dist/SI2.mjs +88 -0
  100. package/dist/SI2.mjs.map +1 -0
  101. package/dist/SK.mjs +61 -0
  102. package/dist/SK.mjs.map +1 -0
  103. package/dist/SK2.mjs +26 -0
  104. package/dist/SK2.mjs.map +1 -0
  105. package/dist/US.mjs +1061 -0
  106. package/dist/US.mjs.map +1 -0
  107. package/dist/US2.mjs +518 -0
  108. package/dist/US2.mjs.map +1 -0
  109. package/dist/address-boundaries.mjs +85 -0
  110. package/dist/address-boundaries.mjs.map +1 -0
  111. package/dist/address-prepositions.mjs +182 -0
  112. package/dist/address-prepositions.mjs.map +1 -0
  113. package/dist/address-street-types.mjs +162 -0
  114. package/dist/address-street-types.mjs.map +1 -0
  115. package/dist/allow-list.mjs +183 -0
  116. package/dist/allow-list.mjs.map +1 -0
  117. package/dist/amount-words.mjs +42 -0
  118. package/dist/amount-words.mjs.map +1 -0
  119. package/dist/coreference.cs.mjs +14 -0
  120. package/dist/coreference.cs.mjs.map +1 -0
  121. package/dist/coreference.de.mjs +14 -0
  122. package/dist/coreference.de.mjs.map +1 -0
  123. package/dist/coreference.en.mjs +14 -0
  124. package/dist/coreference.en.mjs.map +1 -0
  125. package/dist/coreference.sk.mjs +10 -0
  126. package/dist/coreference.sk.mjs.map +1 -0
  127. package/dist/cs.mjs +5080 -0
  128. package/dist/cs.mjs.map +1 -0
  129. package/dist/cs2.mjs +17609 -0
  130. package/dist/cs2.mjs.map +1 -0
  131. package/dist/currencies.mjs +231 -0
  132. package/dist/currencies.mjs.map +1 -0
  133. package/dist/date-months.mjs +618 -0
  134. package/dist/date-months.mjs.map +1 -0
  135. package/dist/de4.mjs +8214 -0
  136. package/dist/de4.mjs.map +1 -0
  137. package/dist/de5.mjs +8197 -0
  138. package/dist/de5.mjs.map +1 -0
  139. package/dist/dist.mjs +619 -0
  140. package/dist/dist.mjs.map +1 -0
  141. package/dist/en.mjs +9977 -0
  142. package/dist/en.mjs.map +1 -0
  143. package/dist/en2.mjs +5014 -0
  144. package/dist/en2.mjs.map +1 -0
  145. package/dist/es3.mjs +9059 -0
  146. package/dist/es3.mjs.map +1 -0
  147. package/dist/es4.mjs +8254 -0
  148. package/dist/es4.mjs.map +1 -0
  149. package/dist/eu-institutions.mjs +518 -0
  150. package/dist/eu-institutions.mjs.map +1 -0
  151. package/dist/fr3.mjs +9999 -0
  152. package/dist/fr3.mjs.map +1 -0
  153. package/dist/fr4.mjs +9975 -0
  154. package/dist/fr4.mjs.map +1 -0
  155. package/dist/generic-roles.mjs +65 -0
  156. package/dist/generic-roles.mjs.map +1 -0
  157. package/dist/global.mjs +195368 -0
  158. package/dist/global.mjs.map +1 -0
  159. package/dist/hospitals-CZ.mjs +747 -0
  160. package/dist/hospitals-CZ.mjs.map +1 -0
  161. package/dist/hospitals-DE.mjs +3356 -0
  162. package/dist/hospitals-DE.mjs.map +1 -0
  163. package/dist/hotword-rules.mjs +145 -0
  164. package/dist/hotword-rules.mjs.map +1 -0
  165. package/dist/hu3.mjs +9964 -0
  166. package/dist/hu3.mjs.map +1 -0
  167. package/dist/hu4.mjs +5031 -0
  168. package/dist/hu4.mjs.map +1 -0
  169. package/dist/it3.mjs +5037 -0
  170. package/dist/it3.mjs.map +1 -0
  171. package/dist/it4.mjs +9989 -0
  172. package/dist/it4.mjs.map +1 -0
  173. package/dist/legal-forms.mjs +2112 -0
  174. package/dist/legal-forms.mjs.map +1 -0
  175. package/dist/manifest.mjs +56 -0
  176. package/dist/manifest.mjs.map +1 -0
  177. package/dist/ministries-AT.mjs +180 -0
  178. package/dist/ministries-AT.mjs.map +1 -0
  179. package/dist/ministries-CZ.mjs +201 -0
  180. package/dist/ministries-CZ.mjs.map +1 -0
  181. package/dist/ministries-DE.mjs +859 -0
  182. package/dist/ministries-DE.mjs.map +1 -0
  183. package/dist/ministries-SK.mjs +174 -0
  184. package/dist/ministries-SK.mjs.map +1 -0
  185. package/dist/names-exclusions.mjs +191 -0
  186. package/dist/names-exclusions.mjs.map +1 -0
  187. package/dist/names-first.mjs +418 -0
  188. package/dist/names-first.mjs.map +1 -0
  189. package/dist/names-surnames.mjs +113 -0
  190. package/dist/names-surnames.mjs.map +1 -0
  191. package/dist/names-title-tokens.mjs +40 -0
  192. package/dist/names-title-tokens.mjs.map +1 -0
  193. package/dist/person-stopwords.mjs +69 -0
  194. package/dist/person-stopwords.mjs.map +1 -0
  195. package/dist/pl3.mjs +5059 -0
  196. package/dist/pl3.mjs.map +1 -0
  197. package/dist/pl4.mjs +9991 -0
  198. package/dist/pl4.mjs.map +1 -0
  199. package/dist/ro3.mjs +10000 -0
  200. package/dist/ro3.mjs.map +1 -0
  201. package/dist/ro4.mjs +5037 -0
  202. package/dist/ro4.mjs.map +1 -0
  203. package/dist/section-headings.mjs +52 -0
  204. package/dist/section-headings.mjs.map +1 -0
  205. package/dist/signing-clauses.mjs +78 -0
  206. package/dist/signing-clauses.mjs.map +1 -0
  207. package/dist/sk3.mjs +9205 -0
  208. package/dist/sk3.mjs.map +1 -0
  209. package/dist/sk4.mjs +15242 -0
  210. package/dist/sk4.mjs.map +1 -0
  211. package/dist/stopwords.mjs +9915 -0
  212. package/dist/stopwords.mjs.map +1 -0
  213. package/dist/sv.mjs +8312 -0
  214. package/dist/sv.mjs.map +1 -0
  215. package/dist/sv2.mjs +8439 -0
  216. package/dist/sv2.mjs.map +1 -0
  217. package/dist/translations.mjs +603 -0
  218. package/dist/translations.mjs.map +1 -0
  219. package/dist/triggers.cs.mjs +465 -0
  220. package/dist/triggers.cs.mjs.map +1 -0
  221. package/dist/triggers.de.mjs +139 -0
  222. package/dist/triggers.de.mjs.map +1 -0
  223. package/dist/triggers.en.mjs +72 -0
  224. package/dist/triggers.en.mjs.map +1 -0
  225. package/dist/triggers.es.mjs +57 -0
  226. package/dist/triggers.es.mjs.map +1 -0
  227. package/dist/triggers.fr.mjs +76 -0
  228. package/dist/triggers.fr.mjs.map +1 -0
  229. package/dist/triggers.global.mjs +34 -0
  230. package/dist/triggers.global.mjs.map +1 -0
  231. package/dist/triggers.hu.mjs +41 -0
  232. package/dist/triggers.hu.mjs.map +1 -0
  233. package/dist/triggers.it.mjs +52 -0
  234. package/dist/triggers.it.mjs.map +1 -0
  235. package/dist/triggers.pl.mjs +84 -0
  236. package/dist/triggers.pl.mjs.map +1 -0
  237. package/dist/triggers.ro.mjs +59 -0
  238. package/dist/triggers.ro.mjs.map +1 -0
  239. package/dist/triggers.sk.mjs +62 -0
  240. package/dist/triggers.sk.mjs.map +1 -0
  241. package/dist/triggers.sv.mjs +58 -0
  242. package/dist/triggers.sv.mjs.map +1 -0
  243. package/dist/universities-AT.mjs +410 -0
  244. package/dist/universities-AT.mjs.map +1 -0
  245. package/dist/universities-CZ.mjs +427 -0
  246. package/dist/universities-CZ.mjs.map +1 -0
  247. package/dist/universities-DE.mjs +3393 -0
  248. package/dist/universities-DE.mjs.map +1 -0
  249. package/dist/universities-SK.mjs +215 -0
  250. package/dist/universities-SK.mjs.map +1 -0
  251. package/dist/vite.mjs +4 -2
  252. package/dist/vite.mjs.map +1 -1
  253. package/dist/wasm.mjs +548 -46
  254. package/dist/wasm.mjs.map +1 -1
  255. package/dist/year-words.mjs +62 -0
  256. package/dist/year-words.mjs.map +1 -0
  257. package/package.json +1 -5
package/dist/wasm.mjs CHANGED
@@ -1,7 +1,6 @@
1
1
  import { TextSearch } from "@stll/text-search-wasm";
2
2
  import { at, be, bg, cy, cz, de, dk, ee, es, fi, fr, gb, gr, hr, hu, ie, it, lt, lu, lv, mt, nl, pl, pt, ro, se, si, sk } from "@stll/stdnum";
3
3
  import { toRegex } from "@stll/stdnum/patterns";
4
- import charGroupsJson from "@stll/anonymize-data/config/char-groups.json";
5
4
  //#region src/search-engine.ts
6
5
  let _TextSearch;
7
6
  const initTextSearch = (ctor) => {
@@ -125,7 +124,7 @@ const loadManifest = () => {
125
124
  if (_manifestPromise) return _manifestPromise;
126
125
  _manifestPromise = (async () => {
127
126
  try {
128
- const mod = await import("@stll/anonymize-data/config/manifest.json");
127
+ const mod = await import("./manifest.mjs");
129
128
  const parsed = mod.default ?? mod;
130
129
  if (!parsed || typeof parsed.languages !== "object" || parsed.languages === null || Array.isArray(parsed.languages)) {
131
130
  console.warn("[anonymize] lang-loader: manifest has unexpected structure, falling back to hardcoded list");
@@ -144,23 +143,23 @@ const loadManifest = () => {
144
143
  };
145
144
  const LOADER_REGISTRIES = {
146
145
  triggers: {
147
- cs: () => import("@stll/anonymize-data/config/triggers.cs.json"),
148
- de: () => import("@stll/anonymize-data/config/triggers.de.json"),
149
- en: () => import("@stll/anonymize-data/config/triggers.en.json"),
150
- es: () => import("@stll/anonymize-data/config/triggers.es.json"),
151
- fr: () => import("@stll/anonymize-data/config/triggers.fr.json"),
152
- hu: () => import("@stll/anonymize-data/config/triggers.hu.json"),
153
- it: () => import("@stll/anonymize-data/config/triggers.it.json"),
154
- pl: () => import("@stll/anonymize-data/config/triggers.pl.json"),
155
- ro: () => import("@stll/anonymize-data/config/triggers.ro.json"),
156
- sk: () => import("@stll/anonymize-data/config/triggers.sk.json"),
157
- sv: () => import("@stll/anonymize-data/config/triggers.sv.json")
146
+ cs: () => import("./triggers.cs.mjs"),
147
+ de: () => import("./triggers.de.mjs"),
148
+ en: () => import("./triggers.en.mjs"),
149
+ es: () => import("./triggers.es.mjs"),
150
+ fr: () => import("./triggers.fr.mjs"),
151
+ hu: () => import("./triggers.hu.mjs"),
152
+ it: () => import("./triggers.it.mjs"),
153
+ pl: () => import("./triggers.pl.mjs"),
154
+ ro: () => import("./triggers.ro.mjs"),
155
+ sk: () => import("./triggers.sk.mjs"),
156
+ sv: () => import("./triggers.sv.mjs")
158
157
  },
159
158
  coreference: {
160
- cs: () => import("@stll/anonymize-data/config/coreference.cs.json"),
161
- de: () => import("@stll/anonymize-data/config/coreference.de.json"),
162
- en: () => import("@stll/anonymize-data/config/coreference.en.json"),
163
- sk: () => import("@stll/anonymize-data/config/coreference.sk.json")
159
+ cs: () => import("./coreference.cs.mjs"),
160
+ de: () => import("./coreference.de.mjs"),
161
+ en: () => import("./coreference.en.mjs"),
162
+ sk: () => import("./coreference.sk.mjs")
164
163
  }
165
164
  };
166
165
  const FALLBACK_LANGUAGES = {
@@ -231,7 +230,7 @@ const loadLanguageConfigs = async (configType, mapFn) => {
231
230
  //#region src/detectors/coreference.ts
232
231
  /**
233
232
  * Load coreference definition patterns from per-language
234
- * JSON configs in @stll/anonymize-data. Uses the
233
+ * JSON configs in src/data/. Uses the
235
234
  * language manifest for auto-discovery.
236
235
  */
237
236
  const loadDefinitionPatterns = async () => {
@@ -264,7 +263,7 @@ const getRoleStopSet = async (ctx) => {
264
263
  const promise = (async () => {
265
264
  let result;
266
265
  try {
267
- const mod = await import("@stll/anonymize-data/config/generic-roles.json");
266
+ const mod = await import("./generic-roles.mjs");
268
267
  const data = mod.default ?? mod;
269
268
  result = new Set(data.roles.map((r) => r.toLowerCase()));
270
269
  } catch {
@@ -608,7 +607,7 @@ const getNameCorpusSurnames = (ctx = defaultContext) => ctx.nameCorpus?.surnames
608
607
  const getNameCorpusTitles = (ctx = defaultContext) => ctx.nameCorpus?.titlesList ?? [];
609
608
  /**
610
609
  * Languages with per-language first/surname
611
- * dictionaries in @stll/anonymize-data.
610
+ * dictionaries from @stll/anonymize-data (optional).
612
611
  */
613
612
  const NAME_LANGUAGES = [
614
613
  "cs",
@@ -647,10 +646,10 @@ const initNameCorpus = (ctx = defaultContext) => {
647
646
  const promise = (async () => {
648
647
  try {
649
648
  const [legacyFirstMod, legacySurnameMod, titleMod, exclusionMod] = await Promise.all([
650
- import("@stll/anonymize-data/config/names-first.json"),
651
- import("@stll/anonymize-data/config/names-surnames.json"),
652
- import("@stll/anonymize-data/config/names-title-tokens.json"),
653
- import("@stll/anonymize-data/config/names-exclusions.json")
649
+ import("./names-first.mjs"),
650
+ import("./names-surnames.mjs"),
651
+ import("./names-title-tokens.mjs"),
652
+ import("./names-exclusions.mjs")
654
653
  ]);
655
654
  const firstImports = NAME_LANGUAGES.map((lang) => tryImportArray(`@stll/anonymize-data/dictionaries/names/first/${lang}.json`));
656
655
  const surnameImports = NAME_LANGUAGES.map((lang) => tryImportArray(`@stll/anonymize-data/dictionaries/names/surnames/${lang}.json`));
@@ -1087,12 +1086,515 @@ const POST_NOMINALS = [
1087
1086
  "CIPP"
1088
1087
  ];
1089
1088
  //#endregion
1089
+ //#region src/data/char-groups.json
1090
+ var char_groups_default = {
1091
+ _comment: "Unicode character equivalence groups. Used to build regex character classes that match all variants of a character type.",
1092
+ groups: {
1093
+ "dash": {
1094
+ "description": "Dash-like characters (hyphens, en-dash, em-dash, minus)",
1095
+ "chars": [
1096
+ {
1097
+ "char": "-",
1098
+ "name": "hyphen-minus",
1099
+ "code": "U+002D"
1100
+ },
1101
+ {
1102
+ "char": "–",
1103
+ "name": "en-dash",
1104
+ "code": "U+2013"
1105
+ },
1106
+ {
1107
+ "char": "—",
1108
+ "name": "em-dash",
1109
+ "code": "U+2014"
1110
+ },
1111
+ {
1112
+ "char": "‐",
1113
+ "name": "hyphen",
1114
+ "code": "U+2010"
1115
+ },
1116
+ {
1117
+ "char": "‑",
1118
+ "name": "non-breaking hyphen",
1119
+ "code": "U+2011"
1120
+ },
1121
+ {
1122
+ "char": "−",
1123
+ "name": "minus sign",
1124
+ "code": "U+2212"
1125
+ },
1126
+ {
1127
+ "char": "⁃",
1128
+ "name": "hyphen bullet",
1129
+ "code": "U+2043"
1130
+ },
1131
+ {
1132
+ "char": "‒",
1133
+ "name": "figure dash",
1134
+ "code": "U+2012"
1135
+ },
1136
+ {
1137
+ "char": "―",
1138
+ "name": "horizontal bar",
1139
+ "code": "U+2015"
1140
+ },
1141
+ {
1142
+ "char": "⸺",
1143
+ "name": "two-em dash",
1144
+ "code": "U+2E3A"
1145
+ },
1146
+ {
1147
+ "char": "⸻",
1148
+ "name": "three-em dash",
1149
+ "code": "U+2E3B"
1150
+ },
1151
+ {
1152
+ "char": "־",
1153
+ "name": "Hebrew maqaf",
1154
+ "code": "U+05BE"
1155
+ }
1156
+ ]
1157
+ },
1158
+ "space": {
1159
+ "description": "Space-like characters",
1160
+ "chars": [
1161
+ {
1162
+ "char": " ",
1163
+ "name": "space",
1164
+ "code": "U+0020"
1165
+ },
1166
+ {
1167
+ "char": "\xA0",
1168
+ "name": "no-break space",
1169
+ "code": "U+00A0"
1170
+ },
1171
+ {
1172
+ "char": " ",
1173
+ "name": "en space",
1174
+ "code": "U+2002"
1175
+ },
1176
+ {
1177
+ "char": " ",
1178
+ "name": "em space",
1179
+ "code": "U+2003"
1180
+ },
1181
+ {
1182
+ "char": " ",
1183
+ "name": "thin space",
1184
+ "code": "U+2009"
1185
+ },
1186
+ {
1187
+ "char": " ",
1188
+ "name": "hair space",
1189
+ "code": "U+200A"
1190
+ },
1191
+ {
1192
+ "char": " ",
1193
+ "name": "narrow no-break space",
1194
+ "code": "U+202F"
1195
+ },
1196
+ {
1197
+ "char": " ",
1198
+ "name": "Ogham space mark",
1199
+ "code": "U+1680"
1200
+ },
1201
+ {
1202
+ "char": " ",
1203
+ "name": "en quad",
1204
+ "code": "U+2000"
1205
+ },
1206
+ {
1207
+ "char": " ",
1208
+ "name": "em quad",
1209
+ "code": "U+2001"
1210
+ },
1211
+ {
1212
+ "char": " ",
1213
+ "name": "three-per-em space",
1214
+ "code": "U+2004"
1215
+ },
1216
+ {
1217
+ "char": " ",
1218
+ "name": "four-per-em space",
1219
+ "code": "U+2005"
1220
+ },
1221
+ {
1222
+ "char": " ",
1223
+ "name": "six-per-em space",
1224
+ "code": "U+2006"
1225
+ },
1226
+ {
1227
+ "char": " ",
1228
+ "name": "figure space",
1229
+ "code": "U+2007"
1230
+ },
1231
+ {
1232
+ "char": " ",
1233
+ "name": "punctuation space",
1234
+ "code": "U+2008"
1235
+ },
1236
+ {
1237
+ "char": " ",
1238
+ "name": "medium mathematical space",
1239
+ "code": "U+205F"
1240
+ },
1241
+ {
1242
+ "char": " ",
1243
+ "name": "ideographic space",
1244
+ "code": "U+3000"
1245
+ },
1246
+ {
1247
+ "char": "​",
1248
+ "name": "zero width space",
1249
+ "code": "U+200B"
1250
+ }
1251
+ ]
1252
+ },
1253
+ "quote-double": {
1254
+ "description": "Double quotation marks",
1255
+ "chars": [
1256
+ {
1257
+ "char": "\"",
1258
+ "name": "quotation mark",
1259
+ "code": "U+0022"
1260
+ },
1261
+ {
1262
+ "char": "“",
1263
+ "name": "left double quotation mark",
1264
+ "code": "U+201C"
1265
+ },
1266
+ {
1267
+ "char": "”",
1268
+ "name": "right double quotation mark",
1269
+ "code": "U+201D"
1270
+ },
1271
+ {
1272
+ "char": "„",
1273
+ "name": "double low-9 quotation mark",
1274
+ "code": "U+201E"
1275
+ },
1276
+ {
1277
+ "char": "«",
1278
+ "name": "left guillemet",
1279
+ "code": "U+00AB"
1280
+ },
1281
+ {
1282
+ "char": "»",
1283
+ "name": "right guillemet",
1284
+ "code": "U+00BB"
1285
+ }
1286
+ ]
1287
+ },
1288
+ "quote-single": {
1289
+ "description": "Single quotation marks and apostrophes",
1290
+ "chars": [
1291
+ {
1292
+ "char": "'",
1293
+ "name": "apostrophe",
1294
+ "code": "U+0027"
1295
+ },
1296
+ {
1297
+ "char": "‘",
1298
+ "name": "left single quotation mark",
1299
+ "code": "U+2018"
1300
+ },
1301
+ {
1302
+ "char": "’",
1303
+ "name": "right single quotation mark",
1304
+ "code": "U+2019"
1305
+ },
1306
+ {
1307
+ "char": "‚",
1308
+ "name": "single low-9 quotation mark",
1309
+ "code": "U+201A"
1310
+ },
1311
+ {
1312
+ "char": "‹",
1313
+ "name": "left single guillemet",
1314
+ "code": "U+2039"
1315
+ },
1316
+ {
1317
+ "char": "›",
1318
+ "name": "right single guillemet",
1319
+ "code": "U+203A"
1320
+ },
1321
+ {
1322
+ "char": "ʼ",
1323
+ "name": "modifier letter apostrophe",
1324
+ "code": "U+02BC"
1325
+ },
1326
+ {
1327
+ "char": "´",
1328
+ "name": "acute accent",
1329
+ "code": "U+00B4"
1330
+ },
1331
+ {
1332
+ "char": "`",
1333
+ "name": "grave accent",
1334
+ "code": "U+0060"
1335
+ },
1336
+ {
1337
+ "char": "ʽ",
1338
+ "name": "modifier letter reversed comma",
1339
+ "code": "U+02BD"
1340
+ },
1341
+ {
1342
+ "char": "ʾ",
1343
+ "name": "modifier letter right half ring",
1344
+ "code": "U+02BE"
1345
+ },
1346
+ {
1347
+ "char": "ʿ",
1348
+ "name": "modifier letter left half ring",
1349
+ "code": "U+02BF"
1350
+ },
1351
+ {
1352
+ "char": "ˈ",
1353
+ "name": "modifier letter vertical line",
1354
+ "code": "U+02C8"
1355
+ }
1356
+ ]
1357
+ },
1358
+ "dot": {
1359
+ "description": "Dot-like characters",
1360
+ "chars": [
1361
+ {
1362
+ "char": ".",
1363
+ "name": "full stop",
1364
+ "code": "U+002E"
1365
+ },
1366
+ {
1367
+ "char": "·",
1368
+ "name": "middle dot",
1369
+ "code": "U+00B7"
1370
+ },
1371
+ {
1372
+ "char": "•",
1373
+ "name": "bullet",
1374
+ "code": "U+2022"
1375
+ },
1376
+ {
1377
+ "char": "․",
1378
+ "name": "one dot leader",
1379
+ "code": "U+2024"
1380
+ },
1381
+ {
1382
+ "char": "。",
1383
+ "name": "CJK full stop",
1384
+ "code": "U+3002"
1385
+ },
1386
+ {
1387
+ "char": "׃",
1388
+ "name": "Hebrew sof pasuq",
1389
+ "code": "U+05C3"
1390
+ }
1391
+ ]
1392
+ },
1393
+ "slash": {
1394
+ "description": "Slash-like characters",
1395
+ "chars": [
1396
+ {
1397
+ "char": "/",
1398
+ "name": "solidus",
1399
+ "code": "U+002F"
1400
+ },
1401
+ {
1402
+ "char": "⁄",
1403
+ "name": "fraction slash",
1404
+ "code": "U+2044"
1405
+ },
1406
+ {
1407
+ "char": "∕",
1408
+ "name": "division slash",
1409
+ "code": "U+2215"
1410
+ }
1411
+ ]
1412
+ },
1413
+ "colon": {
1414
+ "description": "Colon-like characters",
1415
+ "chars": [
1416
+ {
1417
+ "char": ":",
1418
+ "name": "colon",
1419
+ "code": "U+003A"
1420
+ },
1421
+ {
1422
+ "char": "꞉",
1423
+ "name": "modifier letter colon",
1424
+ "code": "U+A789"
1425
+ },
1426
+ {
1427
+ "char": "∶",
1428
+ "name": "ratio",
1429
+ "code": "U+2236"
1430
+ },
1431
+ {
1432
+ "char": ":",
1433
+ "name": "full-width colon",
1434
+ "code": "U+FF1A"
1435
+ },
1436
+ {
1437
+ "char": "፥",
1438
+ "name": "Ethiopic colon",
1439
+ "code": "U+1365"
1440
+ }
1441
+ ]
1442
+ },
1443
+ "comma": {
1444
+ "description": "Comma-like characters",
1445
+ "chars": [
1446
+ {
1447
+ "char": ",",
1448
+ "name": "comma",
1449
+ "code": "U+002C"
1450
+ },
1451
+ {
1452
+ "char": "‚",
1453
+ "name": "single low-9 quotation mark (used as comma)",
1454
+ "code": "U+201A"
1455
+ },
1456
+ {
1457
+ "char": "،",
1458
+ "name": "Arabic comma",
1459
+ "code": "U+060C"
1460
+ },
1461
+ {
1462
+ "char": "、",
1463
+ "name": "ideographic comma",
1464
+ "code": "U+3001"
1465
+ },
1466
+ {
1467
+ "char": ",",
1468
+ "name": "full-width comma",
1469
+ "code": "U+FF0C"
1470
+ },
1471
+ {
1472
+ "char": "﹐",
1473
+ "name": "small comma",
1474
+ "code": "U+FE50"
1475
+ },
1476
+ {
1477
+ "char": "՝",
1478
+ "name": "Armenian comma",
1479
+ "code": "U+055D"
1480
+ }
1481
+ ]
1482
+ },
1483
+ "ellipsis": {
1484
+ "description": "Ellipsis characters",
1485
+ "chars": [{
1486
+ "char": "…",
1487
+ "name": "horizontal ellipsis",
1488
+ "code": "U+2026"
1489
+ }]
1490
+ },
1491
+ "question-mark": {
1492
+ "description": "Question mark variants",
1493
+ "chars": [
1494
+ {
1495
+ "char": "?",
1496
+ "name": "question mark",
1497
+ "code": "U+003F"
1498
+ },
1499
+ {
1500
+ "char": "?",
1501
+ "name": "full-width question mark",
1502
+ "code": "U+FF1F"
1503
+ },
1504
+ {
1505
+ "char": "⁇",
1506
+ "name": "double question mark",
1507
+ "code": "U+2047"
1508
+ },
1509
+ {
1510
+ "char": "⁈",
1511
+ "name": "question exclamation mark",
1512
+ "code": "U+2048"
1513
+ },
1514
+ {
1515
+ "char": "؟",
1516
+ "name": "Arabic question mark",
1517
+ "code": "U+061F"
1518
+ },
1519
+ {
1520
+ "char": "‽",
1521
+ "name": "interrobang",
1522
+ "code": "U+203D"
1523
+ }
1524
+ ]
1525
+ },
1526
+ "exclamation-mark": {
1527
+ "description": "Exclamation mark variants",
1528
+ "chars": [
1529
+ {
1530
+ "char": "!",
1531
+ "name": "exclamation mark",
1532
+ "code": "U+0021"
1533
+ },
1534
+ {
1535
+ "char": "!",
1536
+ "name": "full-width exclamation mark",
1537
+ "code": "U+FF01"
1538
+ },
1539
+ {
1540
+ "char": "‼",
1541
+ "name": "double exclamation mark",
1542
+ "code": "U+203C"
1543
+ },
1544
+ {
1545
+ "char": "¡",
1546
+ "name": "inverted exclamation mark",
1547
+ "code": "U+00A1"
1548
+ }
1549
+ ]
1550
+ },
1551
+ "semicolon": {
1552
+ "description": "Semicolon variants",
1553
+ "chars": [
1554
+ {
1555
+ "char": ";",
1556
+ "name": "semicolon",
1557
+ "code": "U+003B"
1558
+ },
1559
+ {
1560
+ "char": "؛",
1561
+ "name": "Arabic semicolon",
1562
+ "code": "U+061B"
1563
+ },
1564
+ {
1565
+ "char": ";",
1566
+ "name": "full-width semicolon",
1567
+ "code": "U+FF1B"
1568
+ },
1569
+ {
1570
+ "char": "፤",
1571
+ "name": "Ethiopic semicolon",
1572
+ "code": "U+1364"
1573
+ }
1574
+ ]
1575
+ },
1576
+ "underscore": {
1577
+ "description": "Underscore variants",
1578
+ "chars": [{
1579
+ "char": "_",
1580
+ "name": "low line",
1581
+ "code": "U+005F"
1582
+ }, {
1583
+ "char": "_",
1584
+ "name": "full-width low line",
1585
+ "code": "U+FF3F"
1586
+ }]
1587
+ }
1588
+ }
1589
+ };
1590
+ //#endregion
1090
1591
  //#region src/util/char-groups.ts
1091
1592
  /**
1092
1593
  * Centralized Unicode character equivalence groups.
1093
1594
  *
1094
- * Loads char-groups.json from @stll/anonymize-data and
1095
- * provides helpers to build regex character classes that
1595
+ * Centralized Unicode character equivalence groups.
1596
+ *
1597
+ * Provides helpers to build regex character classes that
1096
1598
  * match all typographic variants of a character type
1097
1599
  * (dashes, spaces, quotes, etc.).
1098
1600
  *
@@ -1102,7 +1604,7 @@ const POST_NOMINALS = [
1102
1604
  /** Chars that need escaping inside a regex char class. */
1103
1605
  const REGEX_CLASS_SPECIAL = /[\\\]^-]/;
1104
1606
  const escapeForCharClass = (ch) => REGEX_CLASS_SPECIAL.test(ch) ? `\\${ch}` : ch;
1105
- const config = charGroupsJson;
1607
+ const config = char_groups_default;
1106
1608
  /**
1107
1609
  * Get the raw characters for a named group.
1108
1610
  * Throws if the group does not exist.
@@ -1441,7 +1943,7 @@ const buildDatePatternsFromMonths = (alt) => {
1441
1943
  /** Cached promise for date patterns. Loaded once. */
1442
1944
  let datePatternPromise = null;
1443
1945
  const loadDatePatterns = async () => {
1444
- const mod = await import("@stll/anonymize-data/config/date-months.json");
1946
+ const mod = await import("./date-months.mjs");
1445
1947
  return buildDatePatternsFromMonths(buildMonthAlternation(mod.default ?? mod));
1446
1948
  };
1447
1949
  /**
@@ -1508,7 +2010,7 @@ const buildCurrencyPatterns = (data) => {
1508
2010
  /** Cached promise for currency patterns. Loaded once. */
1509
2011
  let currencyPatternPromise = null;
1510
2012
  const loadCurrencyPatterns = async () => {
1511
- const mod = await import("@stll/anonymize-data/config/currencies.json");
2013
+ const mod = await import("./currencies.mjs");
1512
2014
  return buildCurrencyPatterns(mod.default ?? mod);
1513
2015
  };
1514
2016
  /**
@@ -1590,7 +2092,7 @@ const SIGNING_CLAUSE_META = {
1590
2092
  };
1591
2093
  let signingPatternPromise = null;
1592
2094
  const loadSigningPatterns = async () => {
1593
- const mod = await import("@stll/anonymize-data/config/signing-clauses.json");
2095
+ const mod = await import("./signing-clauses.mjs");
1594
2096
  return buildSigningClausePatterns(mod.default ?? mod);
1595
2097
  };
1596
2098
  const getSigningClausePatterns = () => {
@@ -1624,7 +2126,7 @@ const buildPatternString = (forms) => {
1624
2126
  const buildLegalFormPatterns = async () => {
1625
2127
  let data = {};
1626
2128
  try {
1627
- data = (await import("@stll/anonymize-data/config/legal-forms.json")).default;
2129
+ data = (await import("./legal-forms.mjs")).default;
1628
2130
  } catch {
1629
2131
  return [];
1630
2132
  }
@@ -1942,14 +2444,14 @@ const buildTriggerPatterns = async () => {
1942
2444
  rules.push(...expandTriggerGroups(groups));
1943
2445
  }
1944
2446
  try {
1945
- const globalMod = await import("@stll/anonymize-data/config/triggers.global.json");
2447
+ const globalMod = await import("./triggers.global.mjs");
1946
2448
  const globalGroups = globalMod.default ?? globalMod;
1947
2449
  if (Array.isArray(globalGroups)) rules.push(...expandTriggerGroups(globalGroups));
1948
2450
  } catch (err) {
1949
2451
  if (!(err instanceof Error) || !err.message.includes("Cannot find module")) throw err;
1950
2452
  }
1951
2453
  try {
1952
- const yearMod = await import("@stll/anonymize-data/config/year-words.json");
2454
+ const yearMod = await import("./year-words.mjs");
1953
2455
  const data = yearMod.default ?? yearMod;
1954
2456
  const seen = /* @__PURE__ */ new Set();
1955
2457
  const yearValidation = compileValidations([{
@@ -2566,7 +3068,7 @@ const loadGenericRoles = (ctx = defaultContext) => {
2566
3068
  if (ctx.genericRolesPromise) return ctx.genericRolesPromise;
2567
3069
  ctx.genericRolesPromise = (async () => {
2568
3070
  try {
2569
- const mod = await import("@stll/anonymize-data/config/generic-roles.json");
3071
+ const mod = await import("./generic-roles.mjs");
2570
3072
  const set = new Set(mod.default?.roles ?? []);
2571
3073
  ctx.genericRoles = set;
2572
3074
  return set;
@@ -2660,7 +3162,7 @@ const normalizeForSearch = (text) => {
2660
3162
  */
2661
3163
  const loadDataModule = async () => {
2662
3164
  try {
2663
- return await import("@stll/anonymize-data");
3165
+ return await import("./dist.mjs");
2664
3166
  } catch {
2665
3167
  return null;
2666
3168
  }
@@ -2669,7 +3171,7 @@ const loadAllowList = (ctx) => {
2669
3171
  if (ctx.allowListPromise) return ctx.allowListPromise;
2670
3172
  ctx.allowListPromise = (async () => {
2671
3173
  try {
2672
- const mod = await import("@stll/anonymize-data/config/allow-list.json");
3174
+ const mod = await import("./allow-list.mjs");
2673
3175
  const set = new Set(mod.default?.words ?? []);
2674
3176
  ctx.allowList = set;
2675
3177
  return set;
@@ -2744,7 +3246,7 @@ const loadStopwords = (ctx) => {
2744
3246
  if (ctx.stopwordsPromise) return ctx.stopwordsPromise;
2745
3247
  ctx.stopwordsPromise = (async () => {
2746
3248
  try {
2747
- const list = ((await import("@stll/anonymize-data/config/stopwords.json")).default ?? []).filter((w) => !getFirstNameExclusions(ctx).has(w));
3249
+ const list = ((await import("./stopwords.mjs")).default ?? []).filter((w) => !getFirstNameExclusions(ctx).has(w));
2748
3250
  const set = new Set(list);
2749
3251
  ctx.stopwords = set;
2750
3252
  return set;
@@ -2764,7 +3266,7 @@ const loadPersonStopwords = (ctx) => {
2764
3266
  if (ctx.personStopwordsPromise) return ctx.personStopwordsPromise;
2765
3267
  ctx.personStopwordsPromise = (async () => {
2766
3268
  try {
2767
- const mod = await import("@stll/anonymize-data/config/person-stopwords.json");
3269
+ const mod = await import("./person-stopwords.mjs");
2768
3270
  const set = new Set(mod.default?.words ?? []);
2769
3271
  ctx.personStopwords = set;
2770
3272
  return set;
@@ -3137,7 +3639,7 @@ const extendPersonName = (text, start, end, ctx) => {
3137
3639
  let cachedBoundaryRe = null;
3138
3640
  const loadBoundaryWords = async () => {
3139
3641
  try {
3140
- return (await import("@stll/anonymize-data/config/address-boundaries.json")).default;
3642
+ return (await import("./address-boundaries.mjs")).default;
3141
3643
  } catch {
3142
3644
  return {};
3143
3645
  }
@@ -3166,7 +3668,7 @@ const getBoundaryRe = async () => {
3166
3668
  const buildStreetTypePatterns = async () => {
3167
3669
  let config = {};
3168
3670
  try {
3169
- config = (await import("@stll/anonymize-data/config/address-street-types.json")).default;
3671
+ config = (await import("./address-street-types.mjs")).default;
3170
3672
  } catch {
3171
3673
  return [];
3172
3674
  }
@@ -3494,7 +3996,7 @@ let _temporalPreps = null;
3494
3996
  let _prepsPromise = null;
3495
3997
  const loadPrepositions = async () => {
3496
3998
  try {
3497
- const mod = await import("@stll/anonymize-data/config/address-prepositions.json");
3999
+ const mod = await import("./address-prepositions.mjs");
3498
4000
  const data = mod.default ?? mod;
3499
4001
  const addr = /* @__PURE__ */ new Set();
3500
4002
  const temp = /* @__PURE__ */ new Set();
@@ -3518,7 +4020,7 @@ let _streetAbbrevs = null;
3518
4020
  let _streetAbbrevsPromise = null;
3519
4021
  const loadStreetAbbrevs = async () => {
3520
4022
  try {
3521
- const mod = await import("@stll/anonymize-data/config/address-street-types.json");
4023
+ const mod = await import("./address-street-types.mjs");
3522
4024
  const data = mod.default ?? mod;
3523
4025
  const abbrevs = /* @__PURE__ */ new Set();
3524
4026
  for (const [key, words] of Object.entries(data)) {
@@ -3687,11 +4189,11 @@ const ZONE_SCORE_ADJUSTMENTS = {
3687
4189
  table: .05
3688
4190
  };
3689
4191
  const loadSectionHeadings = async () => {
3690
- const mod = await import("@stll/anonymize-data/config/section-headings.json");
4192
+ const mod = await import("./section-headings.mjs");
3691
4193
  return (mod.default ?? mod).patterns.map((p) => new RegExp(p.re, p.flags));
3692
4194
  };
3693
4195
  const loadSigningClauses = async () => {
3694
- const mod = await import("@stll/anonymize-data/config/signing-clauses.json");
4196
+ const mod = await import("./signing-clauses.mjs");
3695
4197
  return (mod.default ?? mod).patterns.map((p) => {
3696
4198
  const prefix = p.prefix || "";
3697
4199
  const suffix = p.suffix || "";
@@ -3875,7 +4377,7 @@ let search = null;
3875
4377
  let patternToRule = null;
3876
4378
  let initPromise = null;
3877
4379
  const loadRules = async () => {
3878
- const mod = await import("@stll/anonymize-data/config/hotword-rules.json");
4380
+ const mod = await import("./hotword-rules.mjs");
3879
4381
  const loaded = (mod.default ?? mod).rules;
3880
4382
  const patterns = [];
3881
4383
  const mapping = [];
@@ -4575,7 +5077,7 @@ let amountWordsLoaded = false;
4575
5077
  const getAmountWordsRe = async () => {
4576
5078
  if (amountWordsLoaded && amountWordsRe) return amountWordsRe;
4577
5079
  try {
4578
- const alt = (await import("@stll/anonymize-data/config/amount-words.json")).default.patterns.flatMap((p) => p.keywords).map(escapeRegex).join("|");
5080
+ const alt = (await import("./amount-words.mjs")).default.patterns.flatMap((p) => p.keywords).map(escapeRegex).join("|");
4579
5081
  amountWordsRe = new RegExp(`^[,;]?[^\\S\\n]*(\\((?:${alt})[:\\s][^)\\n]{1,120}\\))`, "i");
4580
5082
  } catch {
4581
5083
  amountWordsRe = /^[,;]?[^\S\n]*(\((?:slovy|slovně)[:\s][^)\n]{1,120}\))/i;