interscript 2.4.5 → 3.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 (478) hide show
  1. package/LICENSE +25 -0
  2. package/README.md +90 -41
  3. package/dist/cli.d.ts +25 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +327 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/detector.d.ts +22 -0
  8. package/dist/detector.d.ts.map +1 -0
  9. package/dist/detector.js +73 -0
  10. package/dist/detector.js.map +1 -0
  11. package/dist/errors.d.ts +26 -0
  12. package/dist/errors.d.ts.map +1 -0
  13. package/dist/errors.js +34 -0
  14. package/dist/errors.js.map +1 -0
  15. package/dist/http-loader.d.ts +42 -0
  16. package/dist/http-loader.d.ts.map +1 -0
  17. package/dist/http-loader.js +95 -0
  18. package/dist/http-loader.js.map +1 -0
  19. package/dist/index.d.ts +49 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +182 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/isc/converter.d.ts +11 -0
  24. package/dist/isc/converter.d.ts.map +1 -0
  25. package/dist/isc/converter.js +177 -0
  26. package/dist/isc/converter.js.map +1 -0
  27. package/dist/isc/index.d.ts +16 -0
  28. package/dist/isc/index.d.ts.map +1 -0
  29. package/dist/isc/index.js +15 -0
  30. package/dist/isc/index.js.map +1 -0
  31. package/dist/isc/loader.d.ts +22 -0
  32. package/dist/isc/loader.d.ts.map +1 -0
  33. package/dist/isc/loader.js +47 -0
  34. package/dist/isc/loader.js.map +1 -0
  35. package/dist/isc/parser.d.ts +14 -0
  36. package/dist/isc/parser.d.ts.map +1 -0
  37. package/dist/isc/parser.js +734 -0
  38. package/dist/isc/parser.js.map +1 -0
  39. package/dist/isc/types.d.ts +110 -0
  40. package/dist/isc/types.d.ts.map +1 -0
  41. package/dist/isc/types.js +19 -0
  42. package/dist/isc/types.js.map +1 -0
  43. package/dist/loader.d.ts +49 -0
  44. package/dist/loader.d.ts.map +1 -0
  45. package/dist/loader.js +93 -0
  46. package/dist/loader.js.map +1 -0
  47. package/dist/loaders.d.ts +23 -0
  48. package/dist/loaders.d.ts.map +1 -0
  49. package/dist/loaders.js +40 -0
  50. package/dist/loaders.js.map +1 -0
  51. package/dist/loaders.node.d.ts +25 -0
  52. package/dist/loaders.node.d.ts.map +1 -0
  53. package/dist/loaders.node.js +42 -0
  54. package/dist/loaders.node.js.map +1 -0
  55. package/dist/ml/imf/index.d.ts +6 -0
  56. package/dist/ml/imf/index.d.ts.map +1 -0
  57. package/dist/ml/imf/index.js +6 -0
  58. package/dist/ml/imf/index.js.map +1 -0
  59. package/dist/ml/imf/loader.d.ts +19 -0
  60. package/dist/ml/imf/loader.d.ts.map +1 -0
  61. package/dist/ml/imf/loader.js +59 -0
  62. package/dist/ml/imf/loader.js.map +1 -0
  63. package/dist/ml/imf/model.d.ts +28 -0
  64. package/dist/ml/imf/model.d.ts.map +1 -0
  65. package/dist/ml/imf/model.js +181 -0
  66. package/dist/ml/imf/model.js.map +1 -0
  67. package/dist/ml/imf/registry.d.ts +30 -0
  68. package/dist/ml/imf/registry.d.ts.map +1 -0
  69. package/dist/ml/imf/registry.js +140 -0
  70. package/dist/ml/imf/registry.js.map +1 -0
  71. package/dist/ml/imf/tokens.d.ts +13 -0
  72. package/dist/ml/imf/tokens.d.ts.map +1 -0
  73. package/dist/ml/imf/tokens.js +32 -0
  74. package/dist/ml/imf/tokens.js.map +1 -0
  75. package/dist/ml/index.d.ts +24 -0
  76. package/dist/ml/index.d.ts.map +1 -0
  77. package/dist/ml/index.js +25 -0
  78. package/dist/ml/index.js.map +1 -0
  79. package/dist/ml/models/rababa/cleaner.d.ts +11 -0
  80. package/dist/ml/models/rababa/cleaner.d.ts.map +1 -0
  81. package/dist/ml/models/rababa/cleaner.js +21 -0
  82. package/dist/ml/models/rababa/cleaner.js.map +1 -0
  83. package/dist/ml/models/rababa/diacritizer.d.ts +37 -0
  84. package/dist/ml/models/rababa/diacritizer.d.ts.map +1 -0
  85. package/dist/ml/models/rababa/diacritizer.js +172 -0
  86. package/dist/ml/models/rababa/diacritizer.js.map +1 -0
  87. package/dist/ml/models/rababa/encoder.d.ts +40 -0
  88. package/dist/ml/models/rababa/encoder.d.ts.map +1 -0
  89. package/dist/ml/models/rababa/encoder.js +57 -0
  90. package/dist/ml/models/rababa/encoder.js.map +1 -0
  91. package/dist/ml/models/rababa/haraqat.d.ts +49 -0
  92. package/dist/ml/models/rababa/haraqat.d.ts.map +1 -0
  93. package/dist/ml/models/rababa/haraqat.js +89 -0
  94. package/dist/ml/models/rababa/haraqat.js.map +1 -0
  95. package/dist/ml/models/rababa/index.d.ts +12 -0
  96. package/dist/ml/models/rababa/index.d.ts.map +1 -0
  97. package/dist/ml/models/rababa/index.js +14 -0
  98. package/dist/ml/models/rababa/index.js.map +1 -0
  99. package/dist/ml/models/rababa/reconciler.d.ts +29 -0
  100. package/dist/ml/models/rababa/reconciler.d.ts.map +1 -0
  101. package/dist/ml/models/rababa/reconciler.js +81 -0
  102. package/dist/ml/models/rababa/reconciler.js.map +1 -0
  103. package/dist/ml/models/secryst/index.d.ts +10 -0
  104. package/dist/ml/models/secryst/index.d.ts.map +1 -0
  105. package/dist/ml/models/secryst/index.js +12 -0
  106. package/dist/ml/models/secryst/index.js.map +1 -0
  107. package/dist/ml/models/secryst/masks.d.ts +33 -0
  108. package/dist/ml/models/secryst/masks.d.ts.map +1 -0
  109. package/dist/ml/models/secryst/masks.js +73 -0
  110. package/dist/ml/models/secryst/masks.js.map +1 -0
  111. package/dist/ml/models/secryst/translator.d.ts +31 -0
  112. package/dist/ml/models/secryst/translator.d.ts.map +1 -0
  113. package/dist/ml/models/secryst/translator.js +112 -0
  114. package/dist/ml/models/secryst/translator.js.map +1 -0
  115. package/dist/ml/models/secryst/vocab.d.ts +39 -0
  116. package/dist/ml/models/secryst/vocab.d.ts.map +1 -0
  117. package/dist/ml/models/secryst/vocab.js +85 -0
  118. package/dist/ml/models/secryst/vocab.js.map +1 -0
  119. package/dist/ml/provision/base.d.ts +14 -0
  120. package/dist/ml/provision/base.d.ts.map +1 -0
  121. package/dist/ml/provision/base.js +19 -0
  122. package/dist/ml/provision/base.js.map +1 -0
  123. package/dist/ml/provision/index.d.ts +62 -0
  124. package/dist/ml/provision/index.d.ts.map +1 -0
  125. package/dist/ml/provision/index.js +107 -0
  126. package/dist/ml/provision/index.js.map +1 -0
  127. package/dist/ml/provision/manifest.d.ts +79 -0
  128. package/dist/ml/provision/manifest.d.ts.map +1 -0
  129. package/dist/ml/provision/manifest.js +122 -0
  130. package/dist/ml/provision/manifest.js.map +1 -0
  131. package/dist/ml/registry.d.ts +35 -0
  132. package/dist/ml/registry.d.ts.map +1 -0
  133. package/dist/ml/registry.js +76 -0
  134. package/dist/ml/registry.js.map +1 -0
  135. package/dist/ml/session/index.d.ts +55 -0
  136. package/dist/ml/session/index.d.ts.map +1 -0
  137. package/dist/ml/session/index.js +57 -0
  138. package/dist/ml/session/index.js.map +1 -0
  139. package/dist/ml/session/litert-web.d.ts +50 -0
  140. package/dist/ml/session/litert-web.d.ts.map +1 -0
  141. package/dist/ml/session/litert-web.js +146 -0
  142. package/dist/ml/session/litert-web.js.map +1 -0
  143. package/dist/ml/session/onnx-node.d.ts +10 -0
  144. package/dist/ml/session/onnx-node.d.ts.map +1 -0
  145. package/dist/ml/session/onnx-node.js +62 -0
  146. package/dist/ml/session/onnx-node.js.map +1 -0
  147. package/dist/ml/session/onnx-web.d.ts +23 -0
  148. package/dist/ml/session/onnx-web.d.ts.map +1 -0
  149. package/dist/ml/session/onnx-web.js +74 -0
  150. package/dist/ml/session/onnx-web.js.map +1 -0
  151. package/dist/ml/types.d.ts +113 -0
  152. package/dist/ml/types.d.ts.map +1 -0
  153. package/dist/ml/types.js +7 -0
  154. package/dist/ml/types.js.map +1 -0
  155. package/dist/runtime/compile-item.d.ts +53 -0
  156. package/dist/runtime/compile-item.d.ts.map +1 -0
  157. package/dist/runtime/compile-item.js +278 -0
  158. package/dist/runtime/compile-item.js.map +1 -0
  159. package/dist/runtime/context.d.ts +33 -0
  160. package/dist/runtime/context.d.ts.map +1 -0
  161. package/dist/runtime/context.js +67 -0
  162. package/dist/runtime/context.js.map +1 -0
  163. package/dist/runtime/executor.d.ts +18 -0
  164. package/dist/runtime/executor.d.ts.map +1 -0
  165. package/dist/runtime/executor.js +228 -0
  166. package/dist/runtime/executor.js.map +1 -0
  167. package/dist/runtime/interpreter.d.ts +30 -0
  168. package/dist/runtime/interpreter.d.ts.map +1 -0
  169. package/dist/runtime/interpreter.js +130 -0
  170. package/dist/runtime/interpreter.js.map +1 -0
  171. package/dist/stdlib/ml.d.ts +55 -0
  172. package/dist/stdlib/ml.d.ts.map +1 -0
  173. package/dist/stdlib/ml.js +114 -0
  174. package/dist/stdlib/ml.js.map +1 -0
  175. package/dist/stdlib.d.ts +96 -0
  176. package/dist/stdlib.d.ts.map +1 -0
  177. package/dist/stdlib.js +160 -0
  178. package/dist/stdlib.js.map +1 -0
  179. package/dist/types.d.ts +167 -0
  180. package/dist/types.d.ts.map +1 -0
  181. package/dist/types.js +13 -0
  182. package/dist/types.js.map +1 -0
  183. package/package.json +78 -18
  184. package/LICENSE.md +0 -31
  185. package/README.adoc +0 -78
  186. package/src/maps/acadsin-zho-Hani-Latn-2002.js +0 -9
  187. package/src/maps/alalc-amh-Ethi-Latn-1997.js +0 -8
  188. package/src/maps/alalc-amh-Ethi-Latn-2011.js +0 -7
  189. package/src/maps/alalc-ara-Arab-Latn-1997.js +0 -8
  190. package/src/maps/alalc-asm-Deva-Latn-1997.js +0 -50
  191. package/src/maps/alalc-asm-Deva-Latn-2012.js +0 -7
  192. package/src/maps/alalc-aze-Arab-Latn-1997.js +0 -11
  193. package/src/maps/alalc-aze-Cyrl-Latn-1997.js +0 -9
  194. package/src/maps/alalc-bel-Cyrl-Latn-1997.js +0 -8
  195. package/src/maps/alalc-ben-Beng-Latn-1997.js +0 -52
  196. package/src/maps/alalc-ben-Beng-Latn-2017.js +0 -9
  197. package/src/maps/alalc-bul-Cyrl-Latn-1997.js +0 -10
  198. package/src/maps/alalc-div-Thaa-Latn-1997.js +0 -38
  199. package/src/maps/alalc-div-Thaa-Latn-2012.js +0 -7
  200. package/src/maps/alalc-ell-Grek-Latn-1997.js +0 -25
  201. package/src/maps/alalc-ell-Grek-Latn-2010.js +0 -27
  202. package/src/maps/alalc-fas-Arab-Latn-1997.js +0 -11
  203. package/src/maps/alalc-guj-Gujr-Latn-1997.js +0 -50
  204. package/src/maps/alalc-guj-Gujr-Latn-2011.js +0 -7
  205. package/src/maps/alalc-hin-Deva-Latn-1997.js +0 -60
  206. package/src/maps/alalc-hin-Deva-Latn-2011.js +0 -7
  207. package/src/maps/alalc-kan-Kana-Latn-1997.js +0 -51
  208. package/src/maps/alalc-kan-Kana-Latn-2011.js +0 -7
  209. package/src/maps/alalc-kat-Geok-Latn-1997.js +0 -8
  210. package/src/maps/alalc-kat-Geok-Latn-2011.js +0 -7
  211. package/src/maps/alalc-kat-Geor-Latn-1997.js +0 -8
  212. package/src/maps/alalc-kat-Geor-Latn-2011.js +0 -7
  213. package/src/maps/alalc-kor-Hang-Latn-1997.js +0 -9
  214. package/src/maps/alalc-mal-Mlym-Latn-1997.js +0 -52
  215. package/src/maps/alalc-mal-Mlym-Latn-2012.js +0 -7
  216. package/src/maps/alalc-mar-Deva-Latn-1997.js +0 -13
  217. package/src/maps/alalc-mar-Deva-Latn-2011.js +0 -7
  218. package/src/maps/alalc-mkd-Cyrl-Latn-1997.js +0 -17
  219. package/src/maps/alalc-mkd-Cyrl-Latn-2013.js +0 -17
  220. package/src/maps/alalc-mon-Cyrl-Latn-1997.js +0 -8
  221. package/src/maps/alalc-ori-Orya-Latn-1997.js +0 -55
  222. package/src/maps/alalc-ori-Orya-Latn-2011.js +0 -7
  223. package/src/maps/alalc-pan-Guru-Latn-1997.js +0 -17
  224. package/src/maps/alalc-pan-Guru-Latn-2011.js +0 -7
  225. package/src/maps/alalc-pli-Deva-Latn-2012.js +0 -13
  226. package/src/maps/alalc-pra-Deva-Latn-2012.js +0 -7
  227. package/src/maps/alalc-rus-Cyrl-Latn-1997.js +0 -9
  228. package/src/maps/alalc-rus-Cyrl-Latn-2012.js +0 -9
  229. package/src/maps/alalc-san-Deva-Latn-2012.js +0 -49
  230. package/src/maps/alalc-sin-Sinh-Latn-1997.js +0 -54
  231. package/src/maps/alalc-sin-Sinh-Latn-2011.js +0 -7
  232. package/src/maps/alalc-srp-Cyrl-Latn-1997.js +0 -17
  233. package/src/maps/alalc-srp-Cyrl-Latn-2013.js +0 -15
  234. package/src/maps/alalc-tam-Taml-Latn-1997.js +0 -9
  235. package/src/maps/alalc-tam-Taml-Latn-2011.js +0 -7
  236. package/src/maps/alalc-tel-Telu-Latn-1997.js +0 -54
  237. package/src/maps/alalc-tel-Telu-Latn-2011.js +0 -7
  238. package/src/maps/alalc-tir-Ethi-Latn-1997.js +0 -8
  239. package/src/maps/alalc-tir-Ethi-Latn-2011.js +0 -7
  240. package/src/maps/alalc-ukr-Cyrl-Latn-1997.js +0 -9
  241. package/src/maps/alalc-ukr-Cyrl-Latn-2011.js +0 -7
  242. package/src/maps/apcbg-bul-Cyrl-Latn-1995.js +0 -8
  243. package/src/maps/az-aze-Cyrl-Latn-1939.js +0 -8
  244. package/src/maps/az-aze-Cyrl-Latn-1958.js +0 -11
  245. package/src/maps/bas-rus-Cyrl-Latn-2017-bss.js +0 -10
  246. package/src/maps/bas-rus-Cyrl-Latn-2017-oss.js +0 -10
  247. package/src/maps/bgn-jpn-Hrkt-Latn-1962.js +0 -10
  248. package/src/maps/bgn-kor-Hang-Latn-1943.js +0 -9
  249. package/src/maps/bgn-kor-Kore-Latn-1943.js +0 -10
  250. package/src/maps/bgna-bul-Cyrl-Latn-2006.js +0 -7
  251. package/src/maps/bgna-bul-Cyrl-Latn-2009.js +0 -7
  252. package/src/maps/bgnpcgn-amh-Ethi-Latn-1967.js +0 -8
  253. package/src/maps/bgnpcgn-ara-Arab-Latn-1956.js +0 -25
  254. package/src/maps/bgnpcgn-arm-Armn-Latn-1981.js +0 -8
  255. package/src/maps/bgnpcgn-aze-Cyrl-Latn-1993.js +0 -8
  256. package/src/maps/bgnpcgn-bak-Cyrl-Latn-2007.js +0 -16
  257. package/src/maps/bgnpcgn-bal-Arab-Latn-2008.js +0 -9
  258. package/src/maps/bgnpcgn-bel-Cyrl-Latn-1979.js +0 -12
  259. package/src/maps/bgnpcgn-bul-Cyrl-Latn-1952.js +0 -12
  260. package/src/maps/bgnpcgn-bul-Cyrl-Latn-2013.js +0 -10
  261. package/src/maps/bgnpcgn-che-Cyrl-Latn-2008.js +0 -15
  262. package/src/maps/bgnpcgn-deu-Latn-Latn-2000.js +0 -12
  263. package/src/maps/bgnpcgn-div-Thaa-Latn-1972.js +0 -13
  264. package/src/maps/bgnpcgn-div-Thaa-Latn-1988.js +0 -9
  265. package/src/maps/bgnpcgn-ell-Grek-Latn-1962.js +0 -52
  266. package/src/maps/bgnpcgn-ell-Grek-Latn-1996.js +0 -7
  267. package/src/maps/bgnpcgn-fao-Latn-Latn-1964.js +0 -11
  268. package/src/maps/bgnpcgn-fao-Latn-Latn-1968.js +0 -7
  269. package/src/maps/bgnpcgn-fas-Arab-Latn-1956.js +0 -8
  270. package/src/maps/bgnpcgn-isl-Latn-Latn-1964.js +0 -10
  271. package/src/maps/bgnpcgn-isl-Latn-Latn-1968.js +0 -7
  272. package/src/maps/bgnpcgn-jpn-Hrkt-Latn-1976.js +0 -10
  273. package/src/maps/bgnpcgn-kat-Geor-Latn-1981.js +0 -8
  274. package/src/maps/bgnpcgn-kat-Geor-Latn-2009.js +0 -7
  275. package/src/maps/bgnpcgn-kaz-Cyrl-Latn-1979.js +0 -8
  276. package/src/maps/bgnpcgn-kir-Cyrl-Latn-1979.js +0 -8
  277. package/src/maps/bgnpcgn-kor-Hang-Latn-kn-1945.js +0 -52
  278. package/src/maps/bgnpcgn-kor-Hang-Latn-rok-2011.js +0 -8
  279. package/src/maps/bgnpcgn-kor-Kore-Latn-rok-2011.js +0 -8
  280. package/src/maps/bgnpcgn-kur-Arab-Latn-2007.js +0 -9
  281. package/src/maps/bgnpcgn-mkd-Cyrl-Latn-1981.js +0 -15
  282. package/src/maps/bgnpcgn-mkd-Cyrl-Latn-2013.js +0 -17
  283. package/src/maps/bgnpcgn-mon-Cyrl-Latn-1964.js +0 -12
  284. package/src/maps/bgnpcgn-nep-Deva-Latn-2011.js +0 -13
  285. package/src/maps/bgnpcgn-per-Arab-Latn-1958.js +0 -10
  286. package/src/maps/bgnpcgn-prs-Arab-Latn-2007.js +0 -25
  287. package/src/maps/bgnpcgn-prs-Arab-Latn-yaghoubi.js +0 -8
  288. package/src/maps/bgnpcgn-pus-Arab-Latn-1968.js +0 -26
  289. package/src/maps/bgnpcgn-ron-Cyrl-Latn-2002.js +0 -23
  290. package/src/maps/bgnpcgn-rue-Cyrl-Latn-2016.js +0 -8
  291. package/src/maps/bgnpcgn-rus-Cyrl-Latn-1947.js +0 -52
  292. package/src/maps/bgnpcgn-sme-Latn-Latn-1984.js +0 -8
  293. package/src/maps/bgnpcgn-srp-Cyrl-Latn-1962.js +0 -7
  294. package/src/maps/bgnpcgn-srp-Cyrl-Latn-2005.js +0 -15
  295. package/src/maps/bgnpcgn-tat-Cyrl-Latn-2007.js +0 -27
  296. package/src/maps/bgnpcgn-tgk-Cyrl-Latn-1994.js +0 -12
  297. package/src/maps/bgnpcgn-tir-Ethi-Latn-2007.js +0 -8
  298. package/src/maps/bgnpcgn-ukr-Cyrl-Latn-1965.js +0 -9
  299. package/src/maps/bgnpcgn-ukr-Cyrl-Latn-2019.js +0 -9
  300. package/src/maps/bgnpcgn-urd-Arab-Latn-2007.js +0 -25
  301. package/src/maps/bgnpcgn-uzb-Cyrl-Latn-1979.js +0 -12
  302. package/src/maps/bgnpcgn-uzb-Cyrl-Latn-2000.js +0 -11
  303. package/src/maps/bgnpcgn-zho-Hans-Latn-1979.js +0 -8
  304. package/src/maps/bis-asm-Beng-Latn-13194-1991.js +0 -14
  305. package/src/maps/bis-ben-Beng-Latn-13194-1991.js +0 -14
  306. package/src/maps/bis-dev-Deva-Latn-13194-1991.js +0 -14
  307. package/src/maps/bis-guj-Gujr-Latn-13194-1991.js +0 -14
  308. package/src/maps/bis-kan-Kana-Latn-13194-1991.js +0 -14
  309. package/src/maps/bis-mlm-Mlym-Latn-13194-1991.js +0 -14
  310. package/src/maps/bis-ori-Orya-Latn-13194-1991.js +0 -14
  311. package/src/maps/bis-pnj-Guru-Latn-13194-1991.js +0 -14
  312. package/src/maps/bis-tel-Telu-Latn-13194-1991.js +0 -14
  313. package/src/maps/bis-tml-Taml-Latn-13194-1991.js +0 -14
  314. package/src/maps/by-bel-Cyrl-Latn-1998.js +0 -19
  315. package/src/maps/by-bel-Cyrl-Latn-2007.js +0 -7
  316. package/src/maps/din-grc-Grek-Latn-31634-2011-t1.js +0 -23
  317. package/src/maps/din-hin-Deva-Latn-33904-2018.js +0 -9
  318. package/src/maps/din-kat-Geor-Latn-32707-2010.js +0 -8
  319. package/src/maps/din-mar-Deva-Latn-33904-2018.js +0 -9
  320. package/src/maps/din-nep-Deva-Latn-33904-2018.js +0 -9
  321. package/src/maps/din-pli-Deva-Latn-33904-2018.js +0 -7
  322. package/src/maps/din-pra-Deva-Latn-33904-2018.js +0 -7
  323. package/src/maps/din-san-Deva-Latn-33904-2018.js +0 -51
  324. package/src/maps/din-tam-Taml-Latn-33903-2016.js +0 -34
  325. package/src/maps/dos-nep-Deva-Latn-1997.js +0 -9
  326. package/src/maps/elot-ell-Grek-Latn-743-1982-tl.js +0 -53
  327. package/src/maps/elot-ell-Grek-Latn-743-1982-ts.js +0 -53
  328. package/src/maps/elot-ell-Grek-Latn-743-2001-tl.js +0 -7
  329. package/src/maps/elot-ell-Grek-Latn-743-2001-ts.js +0 -7
  330. package/src/maps/ggg-kat-Geor-Latn-2002.js +0 -8
  331. package/src/maps/gki-bel-Cyrl-Latn-1992.js +0 -9
  332. package/src/maps/gki-bel-Cyrl-Latn-2000.js +0 -18
  333. package/src/maps/gost-rus-Cyrl-Latn-16876-71-1983.js +0 -10
  334. package/src/maps/gost-rus-Cyrl-Latn-7.79-2000-2002.js +0 -9
  335. package/src/maps/hk-yue-Hani-Latn-1888.js +0 -10
  336. package/src/maps/icao-bel-Cyrl-Latn-9303.js +0 -8
  337. package/src/maps/icao-bul-Cyrl-Latn-9303.js +0 -8
  338. package/src/maps/icao-fas-Arab-Latn-9303.js +0 -8
  339. package/src/maps/icao-heb-Hebr-Latn-9303.js +0 -8
  340. package/src/maps/icao-mkd-Cyrl-Latn-9303.js +0 -8
  341. package/src/maps/icao-rus-Cyrl-Latn-9303.js +0 -8
  342. package/src/maps/icao-srp-Cyrl-Latn-9303.js +0 -8
  343. package/src/maps/icao-ukr-Cyrl-Latn-9303.js +0 -8
  344. package/src/maps/index.json +0 -1
  345. package/src/maps/iso-ara-Arab-Latn-233-1984.js +0 -24
  346. package/src/maps/iso-ara-Arab-Latn-233-2-1993.js +0 -12
  347. package/src/maps/iso-asm-Beng-Latn-15919-2001.js +0 -9
  348. package/src/maps/iso-ben-Beng-Latn-15919-2001.js +0 -9
  349. package/src/maps/iso-ell-Grek-Latn-843-1997-t1.js +0 -15
  350. package/src/maps/iso-ell-Grek-Latn-843-1997-t2.js +0 -9
  351. package/src/maps/iso-guj-Gujr-Latn-15919-2001.js +0 -9
  352. package/src/maps/iso-hin-Deva-Latn-15919-2001.js +0 -7
  353. package/src/maps/iso-inc-Deva-Latn-15919-2001.js +0 -7
  354. package/src/maps/iso-jpn-Hrkt-Latn-3602-1989.js +0 -10
  355. package/src/maps/iso-kan-Kana-Latn-15919-2001.js +0 -9
  356. package/src/maps/iso-kat-Geor-Latn-9984-1996.js +0 -8
  357. package/src/maps/iso-kor-Hang-Latn-1996-method1.js +0 -14
  358. package/src/maps/iso-kor-Hang-Latn-1996-method2.js +0 -13
  359. package/src/maps/iso-mal-Mlym-Latn-15919-2001.js +0 -12
  360. package/src/maps/iso-mar-Deva-Latn-15919-2001.js +0 -7
  361. package/src/maps/iso-nep-Deva-Latn-15919-2001.js +0 -7
  362. package/src/maps/iso-ori-Orya-Latn-15919-2001.js +0 -9
  363. package/src/maps/iso-pan-Guru-Latn-15919-2001.js +0 -9
  364. package/src/maps/iso-pli-Beng-Latn-15919-2001.js +0 -7
  365. package/src/maps/iso-pli-Deva-Latn-15919-2001.js +0 -7
  366. package/src/maps/iso-pli-Sinh-Latn-15919-2001.js +0 -9
  367. package/src/maps/iso-pli-Thai-Latn-15919-2001.js +0 -7
  368. package/src/maps/iso-pra-Deva-Latn-15919-2001.js +0 -7
  369. package/src/maps/iso-prs-Arab-Latn-233-3-1999.js +0 -8
  370. package/src/maps/iso-rus-Cyrl-Latn-9-1995.js +0 -8
  371. package/src/maps/iso-san-Deva-Latn-15919-2001.js +0 -9
  372. package/src/maps/iso-tam-Taml-Latn-15919-2001.js +0 -9
  373. package/src/maps/iso-tel-Telu-Latn-15919-2001.js +0 -9
  374. package/src/maps/iso-tha-Thai-Latn-11940-1998.js +0 -9
  375. package/src/maps/kp-kor-Hang-Latn-2002.js +0 -78
  376. package/src/maps/lshk-yue-Hani-Latn-jyutping-1993.js +0 -8
  377. package/src/maps/masm-mon-Cyrl-Latn-5217-2012.js +0 -8
  378. package/src/maps/masm-mon-Latn-Cyrl-5217-2012.js +0 -18
  379. package/src/maps/mext-jpn-Hrkt-Latn-1954.js +0 -16
  380. package/src/maps/moct-kor-Hang-Latn-2000.js +0 -112
  381. package/src/maps/mofa-jpn-Hrkt-Latn-1989.js +0 -14
  382. package/src/maps/mv-div-Thaa-Latn-1987.js +0 -58
  383. package/src/maps/mvd-bel-Cyrl-Latn-2008.js +0 -36
  384. package/src/maps/mvd-bel-Cyrl-Latn-2010.js +0 -11
  385. package/src/maps/mvd-rus-Cyrl-Latn-2008.js +0 -19
  386. package/src/maps/mvd-rus-Cyrl-Latn-2010.js +0 -9
  387. package/src/maps/odni-ara-Arab-Latn-2004.js +0 -7
  388. package/src/maps/odni-ara-Arab-Latn-2015.js +0 -10
  389. package/src/maps/odni-aze-Cyrl-Latn-2015.js +0 -18
  390. package/src/maps/odni-bel-Cyrl-Latn-2015.js +0 -8
  391. package/src/maps/odni-bul-Cyrl-Latn-2005.js +0 -8
  392. package/src/maps/odni-bul-Cyrl-Latn-2015.js +0 -13
  393. package/src/maps/odni-che-Cyrl-Latn-2015.js +0 -13
  394. package/src/maps/odni-fas-Arab-Latn-2004.js +0 -8
  395. package/src/maps/odni-fas-Arab-Latn-2015.js +0 -8
  396. package/src/maps/odni-hin-Deva-Latn-2004.js +0 -8
  397. package/src/maps/odni-hin-Deva-Latn-2015.js +0 -8
  398. package/src/maps/odni-kat-Geor-Latn-2015.js +0 -8
  399. package/src/maps/odni-kaz-Cyrl-Latn-2015.js +0 -20
  400. package/src/maps/odni-kir-Cyrl-Latn-2015.js +0 -18
  401. package/src/maps/odni-kor-Hang-Latn-2015.js +0 -92
  402. package/src/maps/odni-mkd-Cyrl-Latn-2005.js +0 -7
  403. package/src/maps/odni-mkd-Cyrl-Latn-2015.js +0 -8
  404. package/src/maps/odni-prs-Arab-Latn-2004.js +0 -9
  405. package/src/maps/odni-prs-Arab-Latn-2015.js +0 -9
  406. package/src/maps/odni-pus-Arab-Latn-2011.js +0 -10
  407. package/src/maps/odni-rus-Cyrl-Latn-2015.js +0 -8
  408. package/src/maps/odni-srp-Cyrl-Latn-2005.js +0 -7
  409. package/src/maps/odni-srp-Cyrl-Latn-2015.js +0 -8
  410. package/src/maps/odni-tat-Cyrl-Latn-2015.js +0 -19
  411. package/src/maps/odni-tgk-Cyrl-Latn-2015.js +0 -21
  412. package/src/maps/odni-tuk-Cyrl-Latn-2015.js +0 -13
  413. package/src/maps/odni-uig-Cyrl-Latn-2015.js +0 -17
  414. package/src/maps/odni-ukr-Cyrl-Latn-2015.js +0 -9
  415. package/src/maps/odni-urd-Arab-Latn-2015.js +0 -8
  416. package/src/maps/odni-uzb-Cyrl-Latn-2015.js +0 -13
  417. package/src/maps/posix.js +0 -5
  418. package/src/maps/sac-zho-Hans-Latn-1979.js +0 -8
  419. package/src/maps/sasm-mon-Mong-Latn-general-1978.js +0 -8
  420. package/src/maps/sasm-mon-Mong-Latn-phonetic-1978.js +0 -9
  421. package/src/maps/ses-ara-Arab-Latn-1930.js +0 -10
  422. package/src/maps/stategeocadastre-ukr-Cyrl-Latn-1993.js +0 -19
  423. package/src/maps/ua-ukr-Cyrl-Latn-1996.js +0 -21
  424. package/src/maps/ua-ukr-Cyrl-Latn-2007.js +0 -16
  425. package/src/maps/ua-ukr-Cyrl-Latn-2010.js +0 -11
  426. package/src/maps/un-amh-Ethi-Latn-2016.js +0 -9
  427. package/src/maps/un-ara-Arab-Latn-1971.js +0 -13
  428. package/src/maps/un-ara-Arab-Latn-1972.js +0 -13
  429. package/src/maps/un-ara-Arab-Latn-2017.js +0 -24
  430. package/src/maps/un-asm-Beng-Latn-1972.js +0 -50
  431. package/src/maps/un-bel-Cyrl-Latn-2007.js +0 -7
  432. package/src/maps/un-ben-Beng-Latn-2016.js +0 -8
  433. package/src/maps/un-bul-Cyrl-Latn-1977.js +0 -14
  434. package/src/maps/un-ell-Grek-Latn-1987-phonetic.js +0 -83
  435. package/src/maps/un-ell-Grek-Latn-1987-tl.js +0 -7
  436. package/src/maps/un-ell-Grek-Latn-1987-ts.js +0 -7
  437. package/src/maps/un-guj-Gujr-Latn-1972.js +0 -45
  438. package/src/maps/un-hin-Deva-Latn-2016.js +0 -91
  439. package/src/maps/un-kan-Kana-Latn-2016.js +0 -45
  440. package/src/maps/un-mal-Mlym-Latn-1972.js +0 -48
  441. package/src/maps/un-mar-Deva-Latn-2016.js +0 -11
  442. package/src/maps/un-mkd-Cyrl-Latn-1977.js +0 -21
  443. package/src/maps/un-mon-Mong-Latn-general-2013.js +0 -7
  444. package/src/maps/un-mon-Mong-Latn-phonetic-2013.js +0 -7
  445. package/src/maps/un-nep-Deva-Latn-1972.js +0 -91
  446. package/src/maps/un-nep-Deva-Latn-2013.js +0 -7
  447. package/src/maps/un-ori-Orya-Latn-1972.js +0 -48
  448. package/src/maps/un-pan-Guru-Latn-1972.js +0 -87
  449. package/src/maps/un-prs-Arab-Latn-1967.js +0 -11
  450. package/src/maps/un-rus-Cyrl-Latn-1987.js +0 -9
  451. package/src/maps/un-sin-Sinh-Latn-1972.js +0 -46
  452. package/src/maps/un-srp-Cyrl-Latn-1997.js +0 -7
  453. package/src/maps/un-tam-Taml-Latn-1972.js +0 -34
  454. package/src/maps/un-tel-Telu-Latn-1972.js +0 -46
  455. package/src/maps/un-ukr-Cyrl-Latn-1998.js +0 -10
  456. package/src/maps/un-ukr-Cyrl-Latn-2012.js +0 -7
  457. package/src/maps/un-urd-Arab-Latn-1972.js +0 -25
  458. package/src/maps/unicode.js +0 -7
  459. package/src/maps/var-Cyrl.js +0 -7
  460. package/src/maps/var-amh-Ethi-Latn-eae-2003.js +0 -8
  461. package/src/maps/var-gez-Ethi-Latn-eae-2003.js +0 -7
  462. package/src/maps/var-hin-Deva-Latn-hunterian-1872.js +0 -12
  463. package/src/maps/var-jpn-Hrkt-Latn-hepburn-1886.js +0 -18
  464. package/src/maps/var-jpn-Hrkt-Latn-hepburn-1954.js +0 -17
  465. package/src/maps/var-kor-Hang-Hang-jamo.js +0 -8
  466. package/src/maps/var-kor-Hang-Latn-mr-1939.js +0 -355
  467. package/src/maps/var-kor-Kore-Hang-2013.js +0 -8
  468. package/src/maps/var-kor-Kore-Latn-mr-1939.js +0 -10
  469. package/src/maps/var-kor.js +0 -19
  470. package/src/maps/var-mar-Deva-Latn-hunterian-1872.js +0 -7
  471. package/src/maps/var-mon-Mong-Latn-1930.js +0 -8
  472. package/src/maps/var-mon-Mong-Latn-lessing.js +0 -14
  473. package/src/maps/var-mon-Mong-Latn-vpmc.js +0 -10
  474. package/src/maps/var-pra-Deva-Latn-iast-1912.js +0 -7
  475. package/src/maps/var-san-Deva-Latn-iast-1912.js +0 -9
  476. package/src/maps/var-zho-Hani-Latn-wd-1979.js +0 -13
  477. package/src/stdlib.js +0 -294
  478. package/test/test.js +0 -26
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Rababa function — wired into the stdlib function registry.
3
+ *
4
+ * Called from rule executors when a map invokes `rababa config: "200"`.
5
+ * Loads the model on first use via the ML registry.
6
+ *
7
+ * Config keys (e.g. "200") map to a (model URL, rababa-specific config)
8
+ * pair via a registry. The registry is populated from
9
+ * `interscript-maps.yaml`'s `rababa-configs` section, the same source
10
+ * the Ruby runtime uses. Callers can override at runtime via
11
+ * `setRababaConfig(key, ...)`.
12
+ */
13
+ import { createSession } from "../ml/session/index.js";
14
+ import { createRababaModel } from "../ml/models/rababa/diacritizer.js";
15
+ const DEFAULT_RABABA_CONFIGS = Object.freeze({
16
+ "200": Object.freeze({
17
+ model: "https://github.com/secryst/rababa-models/releases/download/0.1/diacritization_model_arabic.onnx",
18
+ config: Object.freeze({
19
+ session_name: "base",
20
+ text_encoder: "ArabicEncoderWithStartSymbol",
21
+ text_cleaner: "valid_arabic_cleaners",
22
+ max_len: 200,
23
+ batch_size: 32,
24
+ }),
25
+ }),
26
+ });
27
+ let rababaConfigs = new Map(Object.entries(DEFAULT_RABABA_CONFIGS));
28
+ /**
29
+ * Register or replace a rababa config entry. Useful for tests and for
30
+ * air-gapped environments that need to point at a local model file.
31
+ *
32
+ * setRababaConfig("200", {
33
+ * model: "file:///path/to/model.onnx",
34
+ * config: { max_len: 200, batch_size: 32, ... },
35
+ * })
36
+ */
37
+ export function setRababaConfig(key, entry) {
38
+ rababaConfigs.set(key, entry);
39
+ }
40
+ /**
41
+ * Reset the rababa config registry to the defaults shipped with the
42
+ * library. Tests use this to undo `setRababaConfig` between cases.
43
+ */
44
+ export function resetRababaConfigs() {
45
+ rababaConfigs = new Map(Object.entries(DEFAULT_RABABA_CONFIGS));
46
+ }
47
+ function resolveConfig(key) {
48
+ const entry = rababaConfigs.get(key);
49
+ if (!entry) {
50
+ throw new Error(`No rababa config registered under '${key}'. ` +
51
+ `Register one via setRababaConfig() before invoking rababa.`);
52
+ }
53
+ return entry;
54
+ }
55
+ function buildRababaConfig(raw) {
56
+ return {
57
+ maxLen: Number(raw.max_len ?? raw.maxLen ?? 200),
58
+ batchSize: Number(raw.batch_size ?? raw.batchSize ?? 32),
59
+ textEncoder: (raw.text_encoder ??
60
+ "ArabicEncoderWithStartSymbol"),
61
+ textCleaner: (raw.text_cleaner ?? "valid_arabic_cleaners"),
62
+ };
63
+ }
64
+ const rababaCache = new Map();
65
+ async function getRababa(configKey) {
66
+ let cached = rababaCache.get(configKey);
67
+ if (!cached) {
68
+ const entry = resolveConfig(configKey);
69
+ cached = (async () => {
70
+ const bytes = await fetchBytesLocal(entry.model);
71
+ const session = await createSession(bytes);
72
+ const config = buildRababaConfig(entry.config);
73
+ return createRababaModel({ session, artifacts: {}, config });
74
+ })();
75
+ rababaCache.set(configKey, cached);
76
+ cached.catch(() => rababaCache.delete(configKey));
77
+ }
78
+ return cached;
79
+ }
80
+ // Local fetch helper that handles file:// and https:// URLs.
81
+ async function fetchBytesLocal(url) {
82
+ if (url.startsWith("file:") || url.startsWith(".")) {
83
+ const { readFile } = await import("node:fs/promises");
84
+ const path = url.startsWith("file:") ? url.slice(5) : url;
85
+ return new Uint8Array(await readFile(path));
86
+ }
87
+ const res = await fetch(url);
88
+ if (!res.ok)
89
+ throw new Error(`Failed to fetch ${url}: ${res.status}`);
90
+ return new Uint8Array(await res.arrayBuffer());
91
+ }
92
+ /**
93
+ * Run rababa diacritization on the input.
94
+ *
95
+ * Maps call this as `rababa config: "200"` (the Interscript DSL).
96
+ * The function registry in `executor.ts` dispatches funcalls with
97
+ * `name: "rababa"` to this function.
98
+ *
99
+ * Async — the function executor must use `transliterateAsync` when
100
+ * a map's stage contains a rababa call (see #67).
101
+ */
102
+ export async function rababa(input, opts = {}) {
103
+ const configKey = opts.config ?? "200";
104
+ const model = await getRababa(configKey);
105
+ return model.diacritize(input);
106
+ }
107
+ /**
108
+ * Strip haraqat from text. Pure — no model required.
109
+ * Used by `rababa_reverse` in maps.
110
+ */
111
+ export function rababaReverse(input) {
112
+ return input.replace(/[ًٌٍَُِّْ]/g, "");
113
+ }
114
+ //# sourceMappingURL=ml.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ml.js","sourceRoot":"","sources":["../../src/stdlib/ml.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Standard library helpers — direct port of
3
+ * `interscript-ruby/lib/interscript/stdlib.rb`.
4
+ *
5
+ * Pure functions: no global state, no side effects. Easy to test in
6
+ * isolation. Each function has exactly one responsibility (MECE).
7
+ */
8
+ /**
9
+ * Apply parallel string replacements in a single pass.
10
+ *
11
+ * Replaces all (from, to) pairs simultaneously, longest-from-first to
12
+ * avoid ambiguity. Tree-based for O(n log n) on input length.
13
+ *
14
+ * Port of `Interscript::Stdlib.parallel_replace`.
15
+ */
16
+ export declare function parallelReplace(input: string, pairs: readonly (readonly [string, string])[]): string;
17
+ /**
18
+ * Trie node for parallel replacement. Maps char code → child node.
19
+ * `match` holds the replacement string when this node is the end of a
20
+ * complete "from" pattern.
21
+ *
22
+ * Port of Ruby's nested-hash tree with `nil` sentinel for matches.
23
+ */
24
+ export interface ParallelTrieNode {
25
+ readonly children: Map<number, ParallelTrieNode>;
26
+ match: string | null;
27
+ }
28
+ export declare function emptyTrieNode(): ParallelTrieNode;
29
+ /**
30
+ * Build a trie from (from, to) pairs. Each "from" string becomes a path
31
+ * from root through character codes; the final node holds `match = to`.
32
+ *
33
+ * Multiple "from"s can share prefixes naturally. Longest match wins at
34
+ * runtime (handled by `parallelReplaceTree`).
35
+ *
36
+ * Port of `Interscript::Stdlib.parallel_replace_compile_tree`.
37
+ */
38
+ export declare function compileParallelTree(pairs: readonly (readonly [string, string])[]): ParallelTrieNode;
39
+ /**
40
+ * Walk `input` against the trie, emitting the longest match at each
41
+ * position. Falls back to passing through the character unchanged.
42
+ *
43
+ * Port of `Interscript::Stdlib.parallel_replace_tree`.
44
+ */
45
+ export declare function parallelReplaceTree(input: string, tree: ParallelTrieNode): string;
46
+ /**
47
+ * Escape a string so it matches literally inside a RegExp.
48
+ * Port of Ruby's `Regexp.escape`.
49
+ */
50
+ export declare function regexpEscape(input: string): string;
51
+ /**
52
+ * Lowercase a string. Maps to `Interscript.functions.downcase`.
53
+ */
54
+ export declare function downcase(input: string): string;
55
+ /**
56
+ * Uppercase a string. Maps to `Interscript.functions.upcase`.
57
+ */
58
+ export declare function upcase(input: string): string;
59
+ /**
60
+ * Capitalise each word; honours custom word separator.
61
+ * Maps to `Interscript.functions.title_case`.
62
+ */
63
+ export declare function titleCase(input: string, opts?: {
64
+ wordSeparator?: string;
65
+ }): string;
66
+ /**
67
+ * Insert a separator between every character.
68
+ * Maps to `Interscript.functions.separate`.
69
+ */
70
+ export declare function separate(input: string, opts?: {
71
+ separator?: string;
72
+ }): string;
73
+ /**
74
+ * Unicode NFC normalisation via String.prototype.normalize.
75
+ */
76
+ export declare function compose(input: string): string;
77
+ export declare function decompose(input: string): string;
78
+ /**
79
+ * Megaregexp parallel replace — Ruby's fallback for parallel blocks
80
+ * where any rule has `before`/`after`/`not_before`/`not_after` constraints.
81
+ *
82
+ * Mirrors `Interscript::Stdlib.parallel_regexp_compile` + `parallel_regexp_gsub`:
83
+ * all rules join into one alternation `(?<g0>p0)|(?<g1>p1)|...` and a single
84
+ * gsub decides which alternative matched via the named group. Rule order is
85
+ * pre-sorted by the caller (longest `max_length` first, declaration order
86
+ * as tiebreaker — matching Ruby's `deterministic_sort_by_max_length`).
87
+ *
88
+ * Onigmo and V8 share alternation semantics: at each scan position,
89
+ * alternatives are tried in declaration order and the first match wins.
90
+ */
91
+ export interface MegaregexpRule {
92
+ readonly pattern: string;
93
+ readonly replace: (match: string, groups: (string | undefined)[]) => string;
94
+ }
95
+ export declare function parallelMegaregexp(input: string, rules: readonly MegaregexpRule[]): string;
96
+ //# sourceMappingURL=stdlib.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stdlib.d.ts","sourceRoot":"","sources":["../src/stdlib.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,GAC5C,MAAM,CAGR;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IAChD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB;AAED,wBAAgB,aAAa,IAAI,gBAAgB,CAEhD;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,GAC5C,gBAAgB,CAuBlB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,MAAM,CA8BjF;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,MAAM,CAOtF;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,MAAM,CAGjF;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,KAAK,MAAM,CAAA;CAC5E;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,cAAc,EAAE,GAAG,MAAM,CAe1F"}
package/dist/stdlib.js ADDED
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Standard library helpers — direct port of
3
+ * `interscript-ruby/lib/interscript/stdlib.rb`.
4
+ *
5
+ * Pure functions: no global state, no side effects. Easy to test in
6
+ * isolation. Each function has exactly one responsibility (MECE).
7
+ */
8
+ /**
9
+ * Apply parallel string replacements in a single pass.
10
+ *
11
+ * Replaces all (from, to) pairs simultaneously, longest-from-first to
12
+ * avoid ambiguity. Tree-based for O(n log n) on input length.
13
+ *
14
+ * Port of `Interscript::Stdlib.parallel_replace`.
15
+ */
16
+ export function parallelReplace(input, pairs) {
17
+ if (pairs.length === 0)
18
+ return input;
19
+ return parallelReplaceTree(input, compileParallelTree(pairs));
20
+ }
21
+ export function emptyTrieNode() {
22
+ return { children: new Map(), match: null };
23
+ }
24
+ /**
25
+ * Build a trie from (from, to) pairs. Each "from" string becomes a path
26
+ * from root through character codes; the final node holds `match = to`.
27
+ *
28
+ * Multiple "from"s can share prefixes naturally. Longest match wins at
29
+ * runtime (handled by `parallelReplaceTree`).
30
+ *
31
+ * Port of `Interscript::Stdlib.parallel_replace_compile_tree`.
32
+ */
33
+ export function compileParallelTree(pairs) {
34
+ const root = emptyTrieNode();
35
+ for (const [from, to] of pairs) {
36
+ if (from.length === 0)
37
+ continue;
38
+ let branch = root;
39
+ for (let i = 0; i < from.length - 1; i++) {
40
+ const code = from.charCodeAt(i);
41
+ let next = branch.children.get(code);
42
+ if (!next) {
43
+ next = emptyTrieNode();
44
+ branch.children.set(code, next);
45
+ }
46
+ branch = next;
47
+ }
48
+ const last = from.charCodeAt(from.length - 1);
49
+ let leaf = branch.children.get(last);
50
+ if (!leaf) {
51
+ leaf = emptyTrieNode();
52
+ branch.children.set(last, leaf);
53
+ }
54
+ leaf.match = to;
55
+ }
56
+ return root;
57
+ }
58
+ /**
59
+ * Walk `input` against the trie, emitting the longest match at each
60
+ * position. Falls back to passing through the character unchanged.
61
+ *
62
+ * Port of `Interscript::Stdlib.parallel_replace_tree`.
63
+ */
64
+ export function parallelReplaceTree(input, tree) {
65
+ let out = "";
66
+ const len = input.length;
67
+ let i = 0;
68
+ while (i < len) {
69
+ let branch = tree;
70
+ let matchEnd = 0;
71
+ let matchReplacement = null;
72
+ for (let j = 0; i + j < len; j++) {
73
+ const code = input.charCodeAt(i + j);
74
+ const next = branch.children.get(code);
75
+ if (!next)
76
+ break;
77
+ branch = next;
78
+ if (branch.match !== null) {
79
+ matchEnd = j + 1;
80
+ matchReplacement = branch.match;
81
+ }
82
+ }
83
+ if (matchReplacement !== null && matchEnd > 0) {
84
+ out += matchReplacement;
85
+ i += matchEnd;
86
+ }
87
+ else {
88
+ out += input[i];
89
+ i += 1;
90
+ }
91
+ }
92
+ return out;
93
+ }
94
+ /**
95
+ * Escape a string so it matches literally inside a RegExp.
96
+ * Port of Ruby's `Regexp.escape`.
97
+ */
98
+ export function regexpEscape(input) {
99
+ return input.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
100
+ }
101
+ /**
102
+ * Lowercase a string. Maps to `Interscript.functions.downcase`.
103
+ */
104
+ export function downcase(input) {
105
+ return input.toLowerCase();
106
+ }
107
+ /**
108
+ * Uppercase a string. Maps to `Interscript.functions.upcase`.
109
+ */
110
+ export function upcase(input) {
111
+ return input.toUpperCase();
112
+ }
113
+ /**
114
+ * Capitalise each word; honours custom word separator.
115
+ * Maps to `Interscript.functions.title_case`.
116
+ */
117
+ export function titleCase(input, opts = {}) {
118
+ const sep = opts.wordSeparator ?? " ";
119
+ if (sep === "")
120
+ return input.charAt(0).toUpperCase() + input.slice(1).toLowerCase();
121
+ return input
122
+ .split(sep)
123
+ .map((w) => (w.length === 0 ? w : w.charAt(0).toUpperCase() + w.slice(1).toLowerCase()))
124
+ .join(sep);
125
+ }
126
+ /**
127
+ * Insert a separator between every character.
128
+ * Maps to `Interscript.functions.separate`.
129
+ */
130
+ export function separate(input, opts = {}) {
131
+ const sep = opts.separator ?? " ";
132
+ return input.split("").join(sep);
133
+ }
134
+ /**
135
+ * Unicode NFC normalisation via String.prototype.normalize.
136
+ */
137
+ export function compose(input) {
138
+ return input.normalize("NFC");
139
+ }
140
+ export function decompose(input) {
141
+ return input.normalize("NFD");
142
+ }
143
+ export function parallelMegaregexp(input, rules) {
144
+ if (rules.length === 0)
145
+ return input;
146
+ const parts = rules.map((r, i) => `(?<__r${i}>${r.pattern})`);
147
+ const re = new RegExp(parts.join("|"), "gmu");
148
+ return input.replace(re, (...args) => {
149
+ const groups = args[args.length - 1];
150
+ for (let i = 0; i < rules.length; i++) {
151
+ if (groups[`__r${i}`] !== undefined) {
152
+ const match = args[0];
153
+ const captures = args.slice(1, -2);
154
+ return rules[i].replace(match, captures);
155
+ }
156
+ }
157
+ return args[0];
158
+ });
159
+ }
160
+ //# sourceMappingURL=stdlib.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stdlib.js","sourceRoot":"","sources":["../src/stdlib.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,167 @@
1
+ /**
2
+ * Domain model for Interscript — TypeScript-native port of the Ruby AST.
3
+ *
4
+ * Design principles (per OCP):
5
+ * - AST nodes are discriminated unions, not class hierarchies. Adding a
6
+ * new node kind = adding a new variant + a new executor registration.
7
+ * Existing executors never need to change.
8
+ * - Each type maps to exactly one Ruby AST concept (MECE).
9
+ * - Public types live here so consumers can pattern-match without
10
+ * depending on internal file layout.
11
+ */
12
+ /** Identifier of a transliteration system, e.g. "bgnpcgn-ukr-Cyrl-Latn-2019". */
13
+ export type SystemCode = string;
14
+ /** Metadata about a transliteration map. */
15
+ export interface MapInfo {
16
+ systemCode: SystemCode;
17
+ displayName?: string;
18
+ authority?: string;
19
+ sourceScript?: string;
20
+ destinationScript?: string;
21
+ }
22
+ /** Result of a detect() call — one candidate system with its distance. */
23
+ export interface DetectionResult {
24
+ mapName: SystemCode;
25
+ distance: number;
26
+ }
27
+ /** Options for detect(). */
28
+ export interface DetectOptions {
29
+ mapPattern?: string;
30
+ }
31
+ /**
32
+ * JSON IR shape emitted by `Interscript::Compiler::JsonIR` (Ruby).
33
+ *
34
+ * `aliases` and `functions` are serialised as plain JSON objects (not
35
+ * Maps) because JSON has no Map type. The runtime reconstructs them
36
+ * into Maps at load time via `normaliseMap()`.
37
+ */
38
+ export interface CompiledMapJson {
39
+ readonly schemaVersion: 1;
40
+ readonly systemCode: SystemCode;
41
+ readonly dependencies: readonly SystemCode[];
42
+ readonly metadata?: Readonly<Record<string, unknown>>;
43
+ readonly stages: readonly Stage[];
44
+ readonly aliases: Readonly<Record<string, Item>>;
45
+ readonly functions: Readonly<Record<string, unknown>>;
46
+ }
47
+ /**
48
+ * Runtime form of a compiled map.
49
+ *
50
+ * Public consumers should treat this as opaque; the loader produces it
51
+ * from `CompiledMapJson` via `normaliseMap()`.
52
+ */
53
+ export interface CompiledMap {
54
+ readonly schemaVersion: 1;
55
+ readonly systemCode: SystemCode;
56
+ readonly dependencies: readonly SystemCode[];
57
+ readonly metadata?: Readonly<Record<string, unknown>>;
58
+ readonly stages: readonly Stage[];
59
+ readonly aliases: ReadonlyMap<string, Item>;
60
+ readonly functions: ReadonlyMap<string, FunctionDef>;
61
+ }
62
+ /** Mutable builder form — produced by `normaliseMap`, frozen before use. */
63
+ export type CompiledMapBuilder = {
64
+ -readonly [K in keyof CompiledMap]: CompiledMap[K];
65
+ };
66
+ export interface FunctionDef {
67
+ readonly name: string;
68
+ /** Native function reference. JSON IR serialises names; runtime resolves. */
69
+ readonly impl?: (input: string, opts?: Record<string, unknown>) => string;
70
+ }
71
+ /** A stage is a sequence of rules applied in order to a string. */
72
+ export interface Stage {
73
+ readonly kind: "stage";
74
+ readonly name: string;
75
+ readonly rules: readonly Rule[];
76
+ }
77
+ /**
78
+ * Discriminated union of all rule kinds.
79
+ * Adding a new rule kind = adding a variant here + an executor.
80
+ */
81
+ export type Rule = SubRule | RunRule | FuncallRule | ParallelRule | SequentialRule;
82
+ export interface SubRule {
83
+ readonly kind: "sub";
84
+ readonly from?: Item;
85
+ readonly to?: Item | FuncallInline;
86
+ readonly before?: Item;
87
+ readonly after?: Item;
88
+ readonly notBefore?: Item;
89
+ readonly notAfter?: Item;
90
+ readonly priority?: number;
91
+ }
92
+ export interface RunRule {
93
+ readonly kind: "run";
94
+ readonly stage: string;
95
+ readonly docName?: string;
96
+ }
97
+ export interface FuncallRule {
98
+ readonly kind: "funcall";
99
+ readonly name: string;
100
+ readonly kwargs?: Readonly<Record<string, unknown>>;
101
+ }
102
+ /** Parallel rule group — all subs inside apply in a single pass. */
103
+ export interface ParallelRule {
104
+ readonly kind: "parallel";
105
+ readonly rules: readonly Rule[];
106
+ }
107
+ /** Sequential rule group — applies rules in order, like a sub-stage. */
108
+ export interface SequentialRule {
109
+ readonly kind: "sequential";
110
+ readonly rules: readonly Rule[];
111
+ }
112
+ /** Inline function call used as a SubRule's `to` (e.g. `:upcase`). */
113
+ export interface FuncallInline {
114
+ readonly kind: "funcall_inline";
115
+ readonly name: string;
116
+ }
117
+ /** Items are the building blocks of pattern/replace expressions. */
118
+ export type Item = StringItem | CaptureGroupItem | CaptureRefItem | AliasItem | AnyItem | AnyCharClassItem | GroupItem | RepeatItem | StageItem;
119
+ export interface StringItem {
120
+ readonly kind: "string";
121
+ readonly value: string;
122
+ }
123
+ /** A capture group `(...)` — defines a new capture. */
124
+ export interface CaptureGroupItem {
125
+ readonly kind: "capture_group";
126
+ readonly data: Item;
127
+ }
128
+ /** A back-reference to a previously-defined capture group (`\1`). */
129
+ export interface CaptureRefItem {
130
+ readonly kind: "capture_ref";
131
+ readonly id: number;
132
+ }
133
+ export interface AliasItem {
134
+ readonly kind: "alias";
135
+ readonly name: string;
136
+ readonly map?: string;
137
+ }
138
+ export interface AnyItem {
139
+ readonly kind: "any";
140
+ readonly of: readonly Item[];
141
+ }
142
+ /**
143
+ * Character class — `[a-z]`, `[abc]`, etc. Mirrors Ruby's Any node when
144
+ * constructed from a String or Range payload. Kept distinct from
145
+ * `AnyItem` because Ruby's interpreter compiles them differently:
146
+ * `Any(["a","b"])` → `(?:a|b)`, `Any("ab")` → `[ab]`, `Any("a".."z")` → `[a-z]`.
147
+ */
148
+ export interface AnyCharClassItem {
149
+ readonly kind: "any_char_class";
150
+ readonly range?: readonly [string, string];
151
+ readonly chars?: readonly string[];
152
+ }
153
+ export interface GroupItem {
154
+ readonly kind: "group";
155
+ readonly items: readonly Item[];
156
+ }
157
+ export interface RepeatItem {
158
+ readonly kind: "repeat";
159
+ readonly item: Item;
160
+ readonly min: number;
161
+ readonly max: number | null;
162
+ }
163
+ export interface StageItem {
164
+ readonly kind: "stage_ref";
165
+ readonly name: string;
166
+ }
167
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Domain model for Interscript — TypeScript-native port of the Ruby AST.
3
+ *
4
+ * Design principles (per OCP):
5
+ * - AST nodes are discriminated unions, not class hierarchies. Adding a
6
+ * new node kind = adding a new variant + a new executor registration.
7
+ * Existing executors never need to change.
8
+ * - Each type maps to exactly one Ruby AST concept (MECE).
9
+ * - Public types live here so consumers can pattern-match without
10
+ * depending on internal file layout.
11
+ */
12
+ export {};
13
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}