interscript 2.4.1 → 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.
- package/LICENSE +25 -0
- package/README.md +90 -41
- package/dist/cli.d.ts +25 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +327 -0
- package/dist/cli.js.map +1 -0
- package/dist/detector.d.ts +22 -0
- package/dist/detector.d.ts.map +1 -0
- package/dist/detector.js +73 -0
- package/dist/detector.js.map +1 -0
- package/dist/errors.d.ts +26 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +34 -0
- package/dist/errors.js.map +1 -0
- package/dist/http-loader.d.ts +42 -0
- package/dist/http-loader.d.ts.map +1 -0
- package/dist/http-loader.js +95 -0
- package/dist/http-loader.js.map +1 -0
- package/dist/index.d.ts +49 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +182 -0
- package/dist/index.js.map +1 -0
- package/dist/isc/converter.d.ts +11 -0
- package/dist/isc/converter.d.ts.map +1 -0
- package/dist/isc/converter.js +177 -0
- package/dist/isc/converter.js.map +1 -0
- package/dist/isc/index.d.ts +16 -0
- package/dist/isc/index.d.ts.map +1 -0
- package/dist/isc/index.js +15 -0
- package/dist/isc/index.js.map +1 -0
- package/dist/isc/loader.d.ts +22 -0
- package/dist/isc/loader.d.ts.map +1 -0
- package/dist/isc/loader.js +47 -0
- package/dist/isc/loader.js.map +1 -0
- package/dist/isc/parser.d.ts +14 -0
- package/dist/isc/parser.d.ts.map +1 -0
- package/dist/isc/parser.js +734 -0
- package/dist/isc/parser.js.map +1 -0
- package/dist/isc/types.d.ts +110 -0
- package/dist/isc/types.d.ts.map +1 -0
- package/dist/isc/types.js +19 -0
- package/dist/isc/types.js.map +1 -0
- package/dist/loader.d.ts +49 -0
- package/dist/loader.d.ts.map +1 -0
- package/dist/loader.js +93 -0
- package/dist/loader.js.map +1 -0
- package/dist/loaders.d.ts +23 -0
- package/dist/loaders.d.ts.map +1 -0
- package/dist/loaders.js +40 -0
- package/dist/loaders.js.map +1 -0
- package/dist/loaders.node.d.ts +25 -0
- package/dist/loaders.node.d.ts.map +1 -0
- package/dist/loaders.node.js +42 -0
- package/dist/loaders.node.js.map +1 -0
- package/dist/ml/imf/index.d.ts +6 -0
- package/dist/ml/imf/index.d.ts.map +1 -0
- package/dist/ml/imf/index.js +6 -0
- package/dist/ml/imf/index.js.map +1 -0
- package/dist/ml/imf/loader.d.ts +19 -0
- package/dist/ml/imf/loader.d.ts.map +1 -0
- package/dist/ml/imf/loader.js +59 -0
- package/dist/ml/imf/loader.js.map +1 -0
- package/dist/ml/imf/model.d.ts +28 -0
- package/dist/ml/imf/model.d.ts.map +1 -0
- package/dist/ml/imf/model.js +181 -0
- package/dist/ml/imf/model.js.map +1 -0
- package/dist/ml/imf/registry.d.ts +30 -0
- package/dist/ml/imf/registry.d.ts.map +1 -0
- package/dist/ml/imf/registry.js +140 -0
- package/dist/ml/imf/registry.js.map +1 -0
- package/dist/ml/imf/tokens.d.ts +13 -0
- package/dist/ml/imf/tokens.d.ts.map +1 -0
- package/dist/ml/imf/tokens.js +32 -0
- package/dist/ml/imf/tokens.js.map +1 -0
- package/dist/ml/index.d.ts +24 -0
- package/dist/ml/index.d.ts.map +1 -0
- package/dist/ml/index.js +25 -0
- package/dist/ml/index.js.map +1 -0
- package/dist/ml/models/rababa/cleaner.d.ts +11 -0
- package/dist/ml/models/rababa/cleaner.d.ts.map +1 -0
- package/dist/ml/models/rababa/cleaner.js +21 -0
- package/dist/ml/models/rababa/cleaner.js.map +1 -0
- package/dist/ml/models/rababa/diacritizer.d.ts +37 -0
- package/dist/ml/models/rababa/diacritizer.d.ts.map +1 -0
- package/dist/ml/models/rababa/diacritizer.js +172 -0
- package/dist/ml/models/rababa/diacritizer.js.map +1 -0
- package/dist/ml/models/rababa/encoder.d.ts +40 -0
- package/dist/ml/models/rababa/encoder.d.ts.map +1 -0
- package/dist/ml/models/rababa/encoder.js +57 -0
- package/dist/ml/models/rababa/encoder.js.map +1 -0
- package/dist/ml/models/rababa/haraqat.d.ts +49 -0
- package/dist/ml/models/rababa/haraqat.d.ts.map +1 -0
- package/dist/ml/models/rababa/haraqat.js +89 -0
- package/dist/ml/models/rababa/haraqat.js.map +1 -0
- package/dist/ml/models/rababa/index.d.ts +12 -0
- package/dist/ml/models/rababa/index.d.ts.map +1 -0
- package/dist/ml/models/rababa/index.js +14 -0
- package/dist/ml/models/rababa/index.js.map +1 -0
- package/dist/ml/models/rababa/reconciler.d.ts +29 -0
- package/dist/ml/models/rababa/reconciler.d.ts.map +1 -0
- package/dist/ml/models/rababa/reconciler.js +81 -0
- package/dist/ml/models/rababa/reconciler.js.map +1 -0
- package/dist/ml/models/secryst/index.d.ts +10 -0
- package/dist/ml/models/secryst/index.d.ts.map +1 -0
- package/dist/ml/models/secryst/index.js +12 -0
- package/dist/ml/models/secryst/index.js.map +1 -0
- package/dist/ml/models/secryst/masks.d.ts +33 -0
- package/dist/ml/models/secryst/masks.d.ts.map +1 -0
- package/dist/ml/models/secryst/masks.js +73 -0
- package/dist/ml/models/secryst/masks.js.map +1 -0
- package/dist/ml/models/secryst/translator.d.ts +31 -0
- package/dist/ml/models/secryst/translator.d.ts.map +1 -0
- package/dist/ml/models/secryst/translator.js +112 -0
- package/dist/ml/models/secryst/translator.js.map +1 -0
- package/dist/ml/models/secryst/vocab.d.ts +39 -0
- package/dist/ml/models/secryst/vocab.d.ts.map +1 -0
- package/dist/ml/models/secryst/vocab.js +85 -0
- package/dist/ml/models/secryst/vocab.js.map +1 -0
- package/dist/ml/provision/base.d.ts +14 -0
- package/dist/ml/provision/base.d.ts.map +1 -0
- package/dist/ml/provision/base.js +19 -0
- package/dist/ml/provision/base.js.map +1 -0
- package/dist/ml/provision/index.d.ts +62 -0
- package/dist/ml/provision/index.d.ts.map +1 -0
- package/dist/ml/provision/index.js +107 -0
- package/dist/ml/provision/index.js.map +1 -0
- package/dist/ml/provision/manifest.d.ts +79 -0
- package/dist/ml/provision/manifest.d.ts.map +1 -0
- package/dist/ml/provision/manifest.js +122 -0
- package/dist/ml/provision/manifest.js.map +1 -0
- package/dist/ml/registry.d.ts +35 -0
- package/dist/ml/registry.d.ts.map +1 -0
- package/dist/ml/registry.js +76 -0
- package/dist/ml/registry.js.map +1 -0
- package/dist/ml/session/index.d.ts +55 -0
- package/dist/ml/session/index.d.ts.map +1 -0
- package/dist/ml/session/index.js +57 -0
- package/dist/ml/session/index.js.map +1 -0
- package/dist/ml/session/litert-web.d.ts +50 -0
- package/dist/ml/session/litert-web.d.ts.map +1 -0
- package/dist/ml/session/litert-web.js +146 -0
- package/dist/ml/session/litert-web.js.map +1 -0
- package/dist/ml/session/onnx-node.d.ts +10 -0
- package/dist/ml/session/onnx-node.d.ts.map +1 -0
- package/dist/ml/session/onnx-node.js +62 -0
- package/dist/ml/session/onnx-node.js.map +1 -0
- package/dist/ml/session/onnx-web.d.ts +23 -0
- package/dist/ml/session/onnx-web.d.ts.map +1 -0
- package/dist/ml/session/onnx-web.js +74 -0
- package/dist/ml/session/onnx-web.js.map +1 -0
- package/dist/ml/types.d.ts +113 -0
- package/dist/ml/types.d.ts.map +1 -0
- package/dist/ml/types.js +7 -0
- package/dist/ml/types.js.map +1 -0
- package/dist/runtime/compile-item.d.ts +53 -0
- package/dist/runtime/compile-item.d.ts.map +1 -0
- package/dist/runtime/compile-item.js +278 -0
- package/dist/runtime/compile-item.js.map +1 -0
- package/dist/runtime/context.d.ts +33 -0
- package/dist/runtime/context.d.ts.map +1 -0
- package/dist/runtime/context.js +67 -0
- package/dist/runtime/context.js.map +1 -0
- package/dist/runtime/executor.d.ts +18 -0
- package/dist/runtime/executor.d.ts.map +1 -0
- package/dist/runtime/executor.js +228 -0
- package/dist/runtime/executor.js.map +1 -0
- package/dist/runtime/interpreter.d.ts +30 -0
- package/dist/runtime/interpreter.d.ts.map +1 -0
- package/dist/runtime/interpreter.js +130 -0
- package/dist/runtime/interpreter.js.map +1 -0
- package/dist/stdlib/ml.d.ts +55 -0
- package/dist/stdlib/ml.d.ts.map +1 -0
- package/dist/stdlib/ml.js +114 -0
- package/dist/stdlib/ml.js.map +1 -0
- package/dist/stdlib.d.ts +96 -0
- package/dist/stdlib.d.ts.map +1 -0
- package/dist/stdlib.js +160 -0
- package/dist/stdlib.js.map +1 -0
- package/dist/types.d.ts +167 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +13 -0
- package/dist/types.js.map +1 -0
- package/package.json +78 -18
- package/LICENSE.md +0 -31
- package/README.adoc +0 -78
- package/src/maps/acadsin-zho-Hani-Latn-2002.js +0 -9
- package/src/maps/alalc-amh-Ethi-Latn-1997.js +0 -8
- package/src/maps/alalc-amh-Ethi-Latn-2011.js +0 -7
- package/src/maps/alalc-ara-Arab-Latn-1997.js +0 -8
- package/src/maps/alalc-asm-Deva-Latn-1997.js +0 -50
- package/src/maps/alalc-asm-Deva-Latn-2012.js +0 -7
- package/src/maps/alalc-aze-Arab-Latn-1997.js +0 -11
- package/src/maps/alalc-aze-Cyrl-Latn-1997.js +0 -9
- package/src/maps/alalc-bel-Cyrl-Latn-1997.js +0 -8
- package/src/maps/alalc-ben-Beng-Latn-1997.js +0 -52
- package/src/maps/alalc-ben-Beng-Latn-2017.js +0 -9
- package/src/maps/alalc-bul-Cyrl-Latn-1997.js +0 -10
- package/src/maps/alalc-div-Thaa-Latn-1997.js +0 -38
- package/src/maps/alalc-div-Thaa-Latn-2012.js +0 -7
- package/src/maps/alalc-ell-Grek-Latn-1997.js +0 -25
- package/src/maps/alalc-ell-Grek-Latn-2010.js +0 -27
- package/src/maps/alalc-guj-Gujr-Latn-1997.js +0 -50
- package/src/maps/alalc-guj-Gujr-Latn-2011.js +0 -7
- package/src/maps/alalc-hin-Deva-Latn-1997.js +0 -60
- package/src/maps/alalc-hin-Deva-Latn-2011.js +0 -7
- package/src/maps/alalc-kan-Kana-Latn-1997.js +0 -51
- package/src/maps/alalc-kan-Kana-Latn-2011.js +0 -7
- package/src/maps/alalc-kat-Geok-Latn-1997.js +0 -8
- package/src/maps/alalc-kat-Geok-Latn-2011.js +0 -7
- package/src/maps/alalc-kat-Geor-Latn-1997.js +0 -8
- package/src/maps/alalc-kat-Geor-Latn-2011.js +0 -7
- package/src/maps/alalc-kor-Hang-Latn-1997.js +0 -9
- package/src/maps/alalc-mal-Mlym-Latn-1997.js +0 -52
- package/src/maps/alalc-mal-Mlym-Latn-2012.js +0 -7
- package/src/maps/alalc-mar-Deva-Latn-1997.js +0 -13
- package/src/maps/alalc-mar-Deva-Latn-2011.js +0 -7
- package/src/maps/alalc-mkd-Cyrl-Latn-1997.js +0 -17
- package/src/maps/alalc-mkd-Cyrl-Latn-2013.js +0 -17
- package/src/maps/alalc-mon-Cyrl-Latn-1997.js +0 -8
- package/src/maps/alalc-ori-Orya-Latn-1997.js +0 -55
- package/src/maps/alalc-ori-Orya-Latn-2011.js +0 -7
- package/src/maps/alalc-pan-Guru-Latn-1997.js +0 -17
- package/src/maps/alalc-pan-Guru-Latn-2011.js +0 -7
- package/src/maps/alalc-per-Arab-Latn-1997.js +0 -11
- package/src/maps/alalc-pli-Deva-Latn-2012.js +0 -13
- package/src/maps/alalc-pra-Deva-Latn-2012.js +0 -7
- package/src/maps/alalc-rus-Cyrl-Latn-1997.js +0 -9
- package/src/maps/alalc-rus-Cyrl-Latn-2012.js +0 -9
- package/src/maps/alalc-san-Deva-Latn-2012.js +0 -49
- package/src/maps/alalc-sin-Sinh-Latn-1997.js +0 -54
- package/src/maps/alalc-sin-Sinh-Latn-2011.js +0 -7
- package/src/maps/alalc-srp-Cyrl-Latn-1997.js +0 -17
- package/src/maps/alalc-srp-Cyrl-Latn-2013.js +0 -15
- package/src/maps/alalc-tam-Taml-Latn-1997.js +0 -9
- package/src/maps/alalc-tam-Taml-Latn-2011.js +0 -7
- package/src/maps/alalc-tel-Telu-Latn-1997.js +0 -54
- package/src/maps/alalc-tel-Telu-Latn-2011.js +0 -7
- package/src/maps/alalc-tir-Ethi-Latn-1997.js +0 -8
- package/src/maps/alalc-tir-Ethi-Latn-2011.js +0 -7
- package/src/maps/alalc-ukr-Cyrl-Latn-1997.js +0 -9
- package/src/maps/alalc-ukr-Cyrl-Latn-2011.js +0 -7
- package/src/maps/apcbg-bul-Cyrl-Latn-1995.js +0 -8
- package/src/maps/az-aze-Cyrl-Latn-1939.js +0 -8
- package/src/maps/az-aze-Cyrl-Latn-1958.js +0 -11
- package/src/maps/bas-rus-Cyrl-Latn-2017-bss.js +0 -10
- package/src/maps/bas-rus-Cyrl-Latn-2017-oss.js +0 -10
- package/src/maps/bgn-jpn-Hrkt-Latn-1962.js +0 -10
- package/src/maps/bgn-kor-Hang-Latn-1943.js +0 -9
- package/src/maps/bgn-kor-Kore-Latn-1943.js +0 -10
- package/src/maps/bgna-bul-Cyrl-Latn-2006.js +0 -7
- package/src/maps/bgna-bul-Cyrl-Latn-2009.js +0 -7
- package/src/maps/bgnpcgn-amh-Ethi-Latn-1967.js +0 -8
- package/src/maps/bgnpcgn-ara-Arab-Latn-1956.js +0 -25
- package/src/maps/bgnpcgn-arm-Armn-Latn-1981.js +0 -8
- package/src/maps/bgnpcgn-aze-Cyrl-Latn-1993.js +0 -8
- package/src/maps/bgnpcgn-bak-Cyrl-Latn-2007.js +0 -16
- package/src/maps/bgnpcgn-bal-Arab-Latn-2008.js +0 -9
- package/src/maps/bgnpcgn-bel-Cyrl-Latn-1979.js +0 -12
- package/src/maps/bgnpcgn-bul-Cyrl-Latn-1952.js +0 -12
- package/src/maps/bgnpcgn-bul-Cyrl-Latn-2013.js +0 -10
- package/src/maps/bgnpcgn-che-Cyrl-Latn-2008.js +0 -15
- package/src/maps/bgnpcgn-deu-Latn-Latn-2000.js +0 -12
- package/src/maps/bgnpcgn-div-Thaa-Latn-1972.js +0 -13
- package/src/maps/bgnpcgn-div-Thaa-Latn-1988.js +0 -9
- package/src/maps/bgnpcgn-ell-Grek-Latn-1962.js +0 -52
- package/src/maps/bgnpcgn-ell-Grek-Latn-1996.js +0 -7
- package/src/maps/bgnpcgn-fao-Latn-Latn-1964.js +0 -11
- package/src/maps/bgnpcgn-fao-Latn-Latn-1968.js +0 -7
- package/src/maps/bgnpcgn-fas-Arab-Latn-1956.js +0 -8
- package/src/maps/bgnpcgn-isl-Latn-Latn-1964.js +0 -10
- package/src/maps/bgnpcgn-isl-Latn-Latn-1968.js +0 -7
- package/src/maps/bgnpcgn-jpn-Hrkt-Latn-1976.js +0 -10
- package/src/maps/bgnpcgn-kat-Geor-Latn-1981.js +0 -8
- package/src/maps/bgnpcgn-kat-Geor-Latn-2009.js +0 -7
- package/src/maps/bgnpcgn-kaz-Cyrl-Latn-1979.js +0 -8
- package/src/maps/bgnpcgn-kir-Cyrl-Latn-1979.js +0 -8
- package/src/maps/bgnpcgn-kor-Hang-Latn-kn-1945.js +0 -52
- package/src/maps/bgnpcgn-kor-Hang-Latn-rok-2011.js +0 -8
- package/src/maps/bgnpcgn-kor-Kore-Latn-rok-2011.js +0 -8
- package/src/maps/bgnpcgn-kur-Arab-Latn-2007.js +0 -9
- package/src/maps/bgnpcgn-mkd-Cyrl-Latn-1981.js +0 -15
- package/src/maps/bgnpcgn-mkd-Cyrl-Latn-2013.js +0 -17
- package/src/maps/bgnpcgn-mon-Cyrl-Latn-1964.js +0 -12
- package/src/maps/bgnpcgn-nep-Deva-Latn-2011.js +0 -13
- package/src/maps/bgnpcgn-per-Arab-Latn-1958.js +0 -10
- package/src/maps/bgnpcgn-prs-Arab-Latn-2007.js +0 -25
- package/src/maps/bgnpcgn-prs-Arab-Latn-yaghoubi.js +0 -8
- package/src/maps/bgnpcgn-pus-Arab-Latn-1968.js +0 -26
- package/src/maps/bgnpcgn-ron-Cyrl-Latn-2002.js +0 -23
- package/src/maps/bgnpcgn-rue-Cyrl-Latn-2016.js +0 -8
- package/src/maps/bgnpcgn-rus-Cyrl-Latn-1947.js +0 -52
- package/src/maps/bgnpcgn-sme-Latn-Latn-1984.js +0 -8
- package/src/maps/bgnpcgn-srp-Cyrl-Latn-1962.js +0 -7
- package/src/maps/bgnpcgn-srp-Cyrl-Latn-2005.js +0 -15
- package/src/maps/bgnpcgn-tat-Cyrl-Latn-2007.js +0 -27
- package/src/maps/bgnpcgn-tgk-Cyrl-Latn-1994.js +0 -12
- package/src/maps/bgnpcgn-tir-Ethi-Latn-2007.js +0 -8
- package/src/maps/bgnpcgn-ukr-Cyrl-Latn-1965.js +0 -9
- package/src/maps/bgnpcgn-ukr-Cyrl-Latn-2019.js +0 -9
- package/src/maps/bgnpcgn-urd-Arab-Latn-2007.js +0 -25
- package/src/maps/bgnpcgn-uzb-Cyrl-Latn-1979.js +0 -12
- package/src/maps/bgnpcgn-uzb-Cyrl-Latn-2000.js +0 -11
- package/src/maps/bgnpcgn-zho-Hans-Latn-1979.js +0 -8
- package/src/maps/bis-asm-Beng-Latn-13194-1991.js +0 -14
- package/src/maps/bis-ben-Beng-Latn-13194-1991.js +0 -14
- package/src/maps/bis-dev-Deva-Latn-13194-1991.js +0 -14
- package/src/maps/bis-guj-Gujr-Latn-13194-1991.js +0 -14
- package/src/maps/bis-kan-Kana-Latn-13194-1991.js +0 -14
- package/src/maps/bis-mlm-Mlym-Latn-13194-1991.js +0 -14
- package/src/maps/bis-ori-Orya-Latn-13194-1991.js +0 -14
- package/src/maps/bis-pnj-Guru-Latn-13194-1991.js +0 -14
- package/src/maps/bis-tel-Telu-Latn-13194-1991.js +0 -14
- package/src/maps/bis-tml-Taml-Latn-13194-1991.js +0 -14
- package/src/maps/by-bel-Cyrl-Latn-1998.js +0 -19
- package/src/maps/by-bel-Cyrl-Latn-2007.js +0 -7
- package/src/maps/din-grc-Grek-Latn-31634-2011-t1.js +0 -23
- package/src/maps/din-hin-Deva-Latn-33904-2018.js +0 -9
- package/src/maps/din-kat-Geor-Latn-32707-2010.js +0 -8
- package/src/maps/din-mar-Deva-Latn-33904-2018.js +0 -9
- package/src/maps/din-nep-Deva-Latn-33904-2018.js +0 -9
- package/src/maps/din-pli-Deva-Latn-33904-2018.js +0 -7
- package/src/maps/din-pra-Deva-Latn-33904-2018.js +0 -7
- package/src/maps/din-san-Deva-Latn-33904-2018.js +0 -51
- package/src/maps/din-tam-Taml-Latn-33903-2016.js +0 -34
- package/src/maps/dos-nep-Deva-Latn-1997.js +0 -9
- package/src/maps/elot-ell-Grek-Latn-743-1982-tl.js +0 -53
- package/src/maps/elot-ell-Grek-Latn-743-1982-ts.js +0 -53
- package/src/maps/elot-ell-Grek-Latn-743-2001-tl.js +0 -7
- package/src/maps/elot-ell-Grek-Latn-743-2001-ts.js +0 -7
- package/src/maps/ggg-kat-Geor-Latn-2002.js +0 -8
- package/src/maps/gki-bel-Cyrl-Latn-1992.js +0 -9
- package/src/maps/gki-bel-Cyrl-Latn-2000.js +0 -18
- package/src/maps/gost-rus-Cyrl-Latn-16876-71-1983.js +0 -10
- package/src/maps/gost-rus-Cyrl-Latn-7.79-2000-2002.js +0 -9
- package/src/maps/hk-yue-Hani-Latn-1888.js +0 -10
- package/src/maps/icao-bel-Cyrl-Latn-9303.js +0 -8
- package/src/maps/icao-bul-Cyrl-Latn-9303.js +0 -8
- package/src/maps/icao-fas-Arab-Latn-9303.js +0 -8
- package/src/maps/icao-heb-Hebr-Latn-9303.js +0 -8
- package/src/maps/icao-mkd-Cyrl-Latn-9303.js +0 -8
- package/src/maps/icao-rus-Cyrl-Latn-9303.js +0 -8
- package/src/maps/icao-srp-Cyrl-Latn-9303.js +0 -8
- package/src/maps/icao-ukr-Cyrl-Latn-9303.js +0 -8
- package/src/maps/index.json +0 -1
- package/src/maps/iso-ara-Arab-Latn-233-1984.js +0 -24
- package/src/maps/iso-ara-Arab-Latn-233-2-1993.js +0 -12
- package/src/maps/iso-asm-Beng-Latn-15919-2001.js +0 -9
- package/src/maps/iso-ben-Beng-Latn-15919-2001.js +0 -9
- package/src/maps/iso-ell-Grek-Latn-843-1997-t1.js +0 -15
- package/src/maps/iso-ell-Grek-Latn-843-1997-t2.js +0 -9
- package/src/maps/iso-guj-Gujr-Latn-15919-2001.js +0 -9
- package/src/maps/iso-hin-Deva-Latn-15919-2001.js +0 -7
- package/src/maps/iso-inc-Deva-Latn-15919-2001.js +0 -7
- package/src/maps/iso-jpn-Hrkt-Latn-3602-1989.js +0 -10
- package/src/maps/iso-kan-Kana-Latn-15919-2001.js +0 -9
- package/src/maps/iso-kat-Geor-Latn-9984-1996.js +0 -8
- package/src/maps/iso-kor-Hang-Latn-1996-method1.js +0 -14
- package/src/maps/iso-kor-Hang-Latn-1996-method2.js +0 -13
- package/src/maps/iso-mal-Mlym-Latn-15919-2001.js +0 -12
- package/src/maps/iso-mar-Deva-Latn-15919-2001.js +0 -7
- package/src/maps/iso-nep-Deva-Latn-15919-2001.js +0 -7
- package/src/maps/iso-ori-Orya-Latn-15919-2001.js +0 -9
- package/src/maps/iso-pan-Guru-Latn-15919-2001.js +0 -9
- package/src/maps/iso-pli-Beng-Latn-15919-2001.js +0 -7
- package/src/maps/iso-pli-Deva-Latn-15919-2001.js +0 -7
- package/src/maps/iso-pli-Sinh-Latn-15919-2001.js +0 -9
- package/src/maps/iso-pli-Thai-Latn-15919-2001.js +0 -7
- package/src/maps/iso-pra-Deva-Latn-15919-2001.js +0 -7
- package/src/maps/iso-prs-Arab-Latn-233-3-1999.js +0 -8
- package/src/maps/iso-rus-Cyrl-Latn-9-1995.js +0 -8
- package/src/maps/iso-san-Deva-Latn-15919-2001.js +0 -9
- package/src/maps/iso-tam-Taml-Latn-15919-2001.js +0 -9
- package/src/maps/iso-tel-Telu-Latn-15919-2001.js +0 -9
- package/src/maps/iso-tha-Thai-Latn-11940-1998.js +0 -9
- package/src/maps/kp-kor-Hang-Latn-2002.js +0 -78
- package/src/maps/lshk-yue-Hani-Latn-jyutping-1993.js +0 -8
- package/src/maps/masm-mon-Cyrl-Latn-5217-2012.js +0 -8
- package/src/maps/masm-mon-Latn-Cyrl-5217-2012.js +0 -18
- package/src/maps/mext-jpn-Hrkt-Latn-1954.js +0 -16
- package/src/maps/moct-kor-Hang-Latn-2000.js +0 -112
- package/src/maps/mofa-jpn-Hrkt-Latn-1989.js +0 -14
- package/src/maps/mv-div-Thaa-Latn-1987.js +0 -58
- package/src/maps/mvd-bel-Cyrl-Latn-2008.js +0 -36
- package/src/maps/mvd-bel-Cyrl-Latn-2010.js +0 -11
- package/src/maps/mvd-rus-Cyrl-Latn-2008.js +0 -19
- package/src/maps/mvd-rus-Cyrl-Latn-2010.js +0 -9
- package/src/maps/odni-ara-Arab-Latn-2004.js +0 -7
- package/src/maps/odni-ara-Arab-Latn-2015.js +0 -10
- package/src/maps/odni-aze-Cyrl-Latn-2015.js +0 -18
- package/src/maps/odni-bel-Cyrl-Latn-2015.js +0 -8
- package/src/maps/odni-bul-Cyrl-Latn-2005.js +0 -8
- package/src/maps/odni-bul-Cyrl-Latn-2015.js +0 -13
- package/src/maps/odni-che-Cyrl-Latn-2015.js +0 -13
- package/src/maps/odni-fas-Arab-Latn-2004.js +0 -8
- package/src/maps/odni-fas-Arab-Latn-2015.js +0 -8
- package/src/maps/odni-hin-Deva-Latn-2004.js +0 -8
- package/src/maps/odni-hin-Deva-Latn-2015.js +0 -8
- package/src/maps/odni-kat-Geor-Latn-2015.js +0 -8
- package/src/maps/odni-kaz-Cyrl-Latn-2015.js +0 -20
- package/src/maps/odni-kir-Cyrl-Latn-2015.js +0 -18
- package/src/maps/odni-kor-Hang-Latn-2015.js +0 -92
- package/src/maps/odni-mkd-Cyrl-Latn-2005.js +0 -7
- package/src/maps/odni-mkd-Cyrl-Latn-2015.js +0 -8
- package/src/maps/odni-prs-Arab-Latn-2004.js +0 -9
- package/src/maps/odni-prs-Arab-Latn-2015.js +0 -9
- package/src/maps/odni-pus-Arab-Latn-2011.js +0 -10
- package/src/maps/odni-rus-Cyrl-Latn-2015.js +0 -8
- package/src/maps/odni-srp-Cyrl-Latn-2005.js +0 -7
- package/src/maps/odni-srp-Cyrl-Latn-2015.js +0 -8
- package/src/maps/odni-tat-Cyrl-Latn-2015.js +0 -19
- package/src/maps/odni-tgk-Cyrl-Latn-2015.js +0 -21
- package/src/maps/odni-tuk-Cyrl-Latn-2015.js +0 -13
- package/src/maps/odni-uig-Cyrl-Latn-2015.js +0 -17
- package/src/maps/odni-ukr-Cyrl-Latn-2015.js +0 -9
- package/src/maps/odni-urd-Arab-Latn-2015.js +0 -8
- package/src/maps/odni-uzb-Cyrl-Latn-2015.js +0 -13
- package/src/maps/posix.js +0 -5
- package/src/maps/sac-zho-Hans-Latn-1979.js +0 -8
- package/src/maps/sasm-mon-Mong-Latn-general-1978.js +0 -8
- package/src/maps/sasm-mon-Mong-Latn-phonetic-1978.js +0 -9
- package/src/maps/ses-ara-Arab-Latn-1930.js +0 -10
- package/src/maps/stategeocadastre-ukr-Cyrl-Latn-1993.js +0 -19
- package/src/maps/ua-ukr-Cyrl-Latn-1996.js +0 -21
- package/src/maps/ua-ukr-Cyrl-Latn-2007.js +0 -16
- package/src/maps/ua-ukr-Cyrl-Latn-2010.js +0 -11
- package/src/maps/un-amh-Ethi-Latn-2016.js +0 -9
- package/src/maps/un-ara-Arab-Latn-1971.js +0 -13
- package/src/maps/un-ara-Arab-Latn-1972.js +0 -13
- package/src/maps/un-ara-Arab-Latn-2017.js +0 -24
- package/src/maps/un-asm-Beng-Latn-1972.js +0 -50
- package/src/maps/un-bel-Cyrl-Latn-2007.js +0 -7
- package/src/maps/un-ben-Beng-Latn-2016.js +0 -8
- package/src/maps/un-bul-Cyrl-Latn-1977.js +0 -14
- package/src/maps/un-ell-Grek-Latn-1987-phonetic.js +0 -83
- package/src/maps/un-ell-Grek-Latn-1987-tl.js +0 -7
- package/src/maps/un-ell-Grek-Latn-1987-ts.js +0 -7
- package/src/maps/un-guj-Gujr-Latn-1972.js +0 -45
- package/src/maps/un-hin-Deva-Latn-2016.js +0 -91
- package/src/maps/un-kan-Kana-Latn-2016.js +0 -45
- package/src/maps/un-mal-Mlym-Latn-1972.js +0 -48
- package/src/maps/un-mar-Deva-Latn-2016.js +0 -11
- package/src/maps/un-mkd-Cyrl-Latn-1977.js +0 -21
- package/src/maps/un-mon-Mong-Latn-general-2013.js +0 -7
- package/src/maps/un-mon-Mong-Latn-phonetic-2013.js +0 -7
- package/src/maps/un-nep-Deva-Latn-1972.js +0 -91
- package/src/maps/un-nep-Deva-Latn-2013.js +0 -7
- package/src/maps/un-ori-Orya-Latn-1972.js +0 -48
- package/src/maps/un-pan-Guru-Latn-1972.js +0 -87
- package/src/maps/un-prs-Arab-Latn-1967.js +0 -11
- package/src/maps/un-rus-Cyrl-Latn-1987.js +0 -9
- package/src/maps/un-sin-Sinh-Latn-1972.js +0 -46
- package/src/maps/un-srp-Cyrl-Latn-1997.js +0 -7
- package/src/maps/un-tam-Taml-Latn-1972.js +0 -34
- package/src/maps/un-tel-Telu-Latn-1972.js +0 -46
- package/src/maps/un-ukr-Cyrl-Latn-1998.js +0 -10
- package/src/maps/un-ukr-Cyrl-Latn-2012.js +0 -7
- package/src/maps/un-urd-Arab-Latn-1972.js +0 -25
- package/src/maps/unicode.js +0 -7
- package/src/maps/var-Cyrl.js +0 -7
- package/src/maps/var-amh-Ethi-Latn-eae-2003.js +0 -8
- package/src/maps/var-gez-Ethi-Latn-eae-2003.js +0 -7
- package/src/maps/var-hin-Deva-Latn-hunterian-1872.js +0 -12
- package/src/maps/var-jpn-Hrkt-Latn-hepburn-1886.js +0 -18
- package/src/maps/var-jpn-Hrkt-Latn-hepburn-1954.js +0 -17
- package/src/maps/var-kor-Hang-Hang-jamo.js +0 -8
- package/src/maps/var-kor-Hang-Latn-mr-1939.js +0 -355
- package/src/maps/var-kor-Kore-Hang-2013.js +0 -8
- package/src/maps/var-kor-Kore-Latn-mr-1939.js +0 -10
- package/src/maps/var-kor.js +0 -19
- package/src/maps/var-mar-Deva-Latn-hunterian-1872.js +0 -7
- package/src/maps/var-mon-Mong-Latn-1930.js +0 -8
- package/src/maps/var-mon-Mong-Latn-lessing.js +0 -14
- package/src/maps/var-mon-Mong-Latn-vpmc.js +0 -10
- package/src/maps/var-pra-Deva-Latn-iast-1912.js +0 -7
- package/src/maps/var-san-Deva-Latn-iast-1912.js +0 -9
- package/src/maps/var-zho-Hani-Latn-wd-1979.js +0 -13
- package/src/stdlib.js +0 -294
- 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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"}
|
package/dist/stdlib.d.ts
ADDED
|
@@ -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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"}
|
package/dist/types.d.ts
ADDED
|
@@ -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"}
|