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.
- 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-fas-Arab-Latn-1997.js +0 -11
- 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-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,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IMFModel — a loaded, checksum-verified IMF v1 model. Greedy KV-cache
|
|
3
|
+
* decode when the zip ships decoder-kv.onnx (default), plain
|
|
4
|
+
* full-recompute fallback otherwise. The decode loop is the shared
|
|
5
|
+
* cross-runtime contract; outputs are byte-identical with the Python
|
|
6
|
+
* reference on the golden sets.
|
|
7
|
+
*/
|
|
8
|
+
export declare class IMFModel {
|
|
9
|
+
readonly id: string;
|
|
10
|
+
private readonly manifest;
|
|
11
|
+
private readonly encoder;
|
|
12
|
+
private readonly decoder;
|
|
13
|
+
private readonly kv;
|
|
14
|
+
private readonly pasts;
|
|
15
|
+
private constructor();
|
|
16
|
+
static fromZipBytes(zipBytes: Uint8Array): Promise<IMFModel>;
|
|
17
|
+
/** Accepts a zip path (Node), raw zip bytes, or a models.yaml model id. */
|
|
18
|
+
static load(source: string | Uint8Array, indexUrl?: string): Promise<IMFModel>;
|
|
19
|
+
translate(text: string, maxLen?: number): Promise<string>;
|
|
20
|
+
dispose(): Promise<void>;
|
|
21
|
+
private runEncoder;
|
|
22
|
+
private zeroPastSpecs;
|
|
23
|
+
private pastTensors;
|
|
24
|
+
private argmaxLastStep;
|
|
25
|
+
private greedyKv;
|
|
26
|
+
private greedyPlain;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/ml/imf/model.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAkBH,qBAAa,QAAQ;IACnB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAa;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0D;IAEhF,OAAO;WASM,YAAY,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC;IAYlE,2EAA2E;WAC9D,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAU9E,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,SAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUtD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAKhB,UAAU;IAYxB,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,cAAc;YAkBR,QAAQ;YA+BR,WAAW;CAyB1B"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IMFModel — a loaded, checksum-verified IMF v1 model. Greedy KV-cache
|
|
3
|
+
* decode when the zip ships decoder-kv.onnx (default), plain
|
|
4
|
+
* full-recompute fallback otherwise. The decode loop is the shared
|
|
5
|
+
* cross-runtime contract; outputs are byte-identical with the Python
|
|
6
|
+
* reference on the golden sets.
|
|
7
|
+
*/
|
|
8
|
+
import { createSession } from "../session/index.js";
|
|
9
|
+
import { verifyAndRead, parseManifest } from "./loader.js";
|
|
10
|
+
import { resolve } from "./registry.js";
|
|
11
|
+
import { EOS_ID, PAD_ID, decode, encode } from "./tokens.js";
|
|
12
|
+
export class IMFModel {
|
|
13
|
+
id;
|
|
14
|
+
manifest;
|
|
15
|
+
encoder;
|
|
16
|
+
decoder;
|
|
17
|
+
kv;
|
|
18
|
+
pasts;
|
|
19
|
+
constructor(manifest, encoder, decoder) {
|
|
20
|
+
this.manifest = manifest;
|
|
21
|
+
this.id = manifest.id;
|
|
22
|
+
this.encoder = encoder;
|
|
23
|
+
this.decoder = decoder;
|
|
24
|
+
this.kv = manifest.decoder === "kv" && decoder.inputNames.some((n) => n.startsWith("past_"));
|
|
25
|
+
this.pasts = this.kv ? this.zeroPastSpecs() : [];
|
|
26
|
+
}
|
|
27
|
+
static async fromZipBytes(zipBytes) {
|
|
28
|
+
const manifest = parseManifest(zipBytes);
|
|
29
|
+
const graphs = await verifyAndRead(zipBytes);
|
|
30
|
+
const encoder = await createSession(graphs.get("encoder.onnx"));
|
|
31
|
+
const decoderName = manifest.decoder === "kv" && graphs.has("decoder-kv.onnx")
|
|
32
|
+
? "decoder-kv.onnx"
|
|
33
|
+
: "decoder.onnx";
|
|
34
|
+
const decoder = (await createSession(graphs.get(decoderName)));
|
|
35
|
+
return new IMFModel(manifest, encoder, decoder);
|
|
36
|
+
}
|
|
37
|
+
/** Accepts a zip path (Node), raw zip bytes, or a models.yaml model id. */
|
|
38
|
+
static async load(source, indexUrl) {
|
|
39
|
+
if (source instanceof Uint8Array)
|
|
40
|
+
return IMFModel.fromZipBytes(source);
|
|
41
|
+
if (source.endsWith(".zip")) {
|
|
42
|
+
const fs = (await import("node:fs"));
|
|
43
|
+
return IMFModel.fromZipBytes(fs.readFileSync(source));
|
|
44
|
+
}
|
|
45
|
+
const resolved = await resolve(source, indexUrl);
|
|
46
|
+
return IMFModel.fromZipBytes(resolved.bytes);
|
|
47
|
+
}
|
|
48
|
+
async translate(text, maxLen = 256) {
|
|
49
|
+
const ids = encode(text);
|
|
50
|
+
if (ids.length === 1)
|
|
51
|
+
return "";
|
|
52
|
+
const hidden = await this.runEncoder(ids);
|
|
53
|
+
const tokens = this.kv
|
|
54
|
+
? await this.greedyKv(hidden, maxLen)
|
|
55
|
+
: await this.greedyPlain(hidden, maxLen);
|
|
56
|
+
return decode(tokens);
|
|
57
|
+
}
|
|
58
|
+
async dispose() {
|
|
59
|
+
await this.encoder.dispose();
|
|
60
|
+
await this.decoder.dispose();
|
|
61
|
+
}
|
|
62
|
+
async runEncoder(ids) {
|
|
63
|
+
const outputs = await this.encoder.run({
|
|
64
|
+
input_ids: {
|
|
65
|
+
name: "input_ids",
|
|
66
|
+
type: "int64",
|
|
67
|
+
data: new BigInt64Array(ids.map((n) => BigInt(n))),
|
|
68
|
+
dims: [1, ids.length],
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
return outputs["last_hidden_state"];
|
|
72
|
+
}
|
|
73
|
+
zeroPastSpecs() {
|
|
74
|
+
const specs = [];
|
|
75
|
+
const metadata = this.decoder.inputMetadata;
|
|
76
|
+
for (const name of this.decoder.inputNames) {
|
|
77
|
+
if (!name.startsWith("past_"))
|
|
78
|
+
continue;
|
|
79
|
+
// [batch, heads, past_seq, d_kv]: heads and d_kv are static
|
|
80
|
+
let heads = 6;
|
|
81
|
+
let dKv = 64;
|
|
82
|
+
const meta = metadata?.find((m) => m.name === name);
|
|
83
|
+
if (meta && typeof meta.shape[1] === "number")
|
|
84
|
+
heads = meta.shape[1];
|
|
85
|
+
if (meta && typeof meta.shape[3] === "number")
|
|
86
|
+
dKv = meta.shape[3];
|
|
87
|
+
specs.push({ name, dims: [1, heads, 0, dKv] });
|
|
88
|
+
}
|
|
89
|
+
return specs;
|
|
90
|
+
}
|
|
91
|
+
pastTensors(present) {
|
|
92
|
+
const feeds = {};
|
|
93
|
+
for (const spec of this.pasts) {
|
|
94
|
+
const value = present?.get(spec.name);
|
|
95
|
+
if (value) {
|
|
96
|
+
feeds[spec.name] = { name: spec.name, type: value.type, data: value.data, dims: value.dims };
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
feeds[spec.name] = {
|
|
100
|
+
name: spec.name,
|
|
101
|
+
type: "float32",
|
|
102
|
+
data: new Float32Array(0),
|
|
103
|
+
dims: [...spec.dims],
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return feeds;
|
|
108
|
+
}
|
|
109
|
+
argmaxLastStep(logits) {
|
|
110
|
+
const dims = logits.dims;
|
|
111
|
+
const classes = dims[dims.length - 1];
|
|
112
|
+
const data = logits.data;
|
|
113
|
+
const base = (dims[dims.length - 2] - 1) * classes;
|
|
114
|
+
let best = 0;
|
|
115
|
+
let bestVal = -Infinity;
|
|
116
|
+
for (let c = 0; c < classes; c++) {
|
|
117
|
+
const v = typeof data[base + c] === "bigint" ? Number(data[base + c]) : data[base + c];
|
|
118
|
+
if (v > bestVal) {
|
|
119
|
+
bestVal = v;
|
|
120
|
+
best = c;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return best;
|
|
124
|
+
}
|
|
125
|
+
async greedyKv(hidden, maxLen) {
|
|
126
|
+
const generated = [];
|
|
127
|
+
let current = [PAD_ID];
|
|
128
|
+
let present;
|
|
129
|
+
for (let step = 0; step < maxLen; step++) {
|
|
130
|
+
const outputs = await this.decoder.run({
|
|
131
|
+
input_ids: {
|
|
132
|
+
name: "input_ids",
|
|
133
|
+
type: "int64",
|
|
134
|
+
data: new BigInt64Array(current.map((n) => BigInt(n))),
|
|
135
|
+
dims: [1, current.length],
|
|
136
|
+
},
|
|
137
|
+
encoder_hidden_states: {
|
|
138
|
+
name: "encoder_hidden_states",
|
|
139
|
+
type: hidden.type,
|
|
140
|
+
data: hidden.data,
|
|
141
|
+
dims: hidden.dims,
|
|
142
|
+
},
|
|
143
|
+
...this.pastTensors(present),
|
|
144
|
+
});
|
|
145
|
+
const token = this.argmaxLastStep(outputs["logits"]);
|
|
146
|
+
if (token === EOS_ID)
|
|
147
|
+
break;
|
|
148
|
+
generated.push(token);
|
|
149
|
+
present = new Map(this.pasts.map((spec) => [spec.name, outputs[spec.name.replace("past_", "present_")]]));
|
|
150
|
+
current = [token];
|
|
151
|
+
}
|
|
152
|
+
return generated;
|
|
153
|
+
}
|
|
154
|
+
async greedyPlain(hidden, maxLen) {
|
|
155
|
+
const generated = [];
|
|
156
|
+
const decoderIds = [PAD_ID];
|
|
157
|
+
for (let step = 0; step < maxLen; step++) {
|
|
158
|
+
const outputs = await this.decoder.run({
|
|
159
|
+
input_ids: {
|
|
160
|
+
name: "input_ids",
|
|
161
|
+
type: "int64",
|
|
162
|
+
data: new BigInt64Array(decoderIds.map((n) => BigInt(n))),
|
|
163
|
+
dims: [1, decoderIds.length],
|
|
164
|
+
},
|
|
165
|
+
encoder_hidden_states: {
|
|
166
|
+
name: "encoder_hidden_states",
|
|
167
|
+
type: hidden.type,
|
|
168
|
+
data: hidden.data,
|
|
169
|
+
dims: hidden.dims,
|
|
170
|
+
},
|
|
171
|
+
});
|
|
172
|
+
const token = this.argmaxLastStep(outputs["logits"]);
|
|
173
|
+
if (token === EOS_ID)
|
|
174
|
+
break;
|
|
175
|
+
generated.push(token);
|
|
176
|
+
decoderIds.push(token);
|
|
177
|
+
}
|
|
178
|
+
return generated;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/ml/imf/model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* models.yaml resolution (the dynamic-fetch contract shared with the
|
|
3
|
+
* Python and Ruby runtimes): resolve id -> channel URL, verify a cached
|
|
4
|
+
* copy against the index sha256, or download -> verify -> install.
|
|
5
|
+
*
|
|
6
|
+
* Node persists to ~/.cache/interscript/models/<id>/ (fs, atomic
|
|
7
|
+
* rename); browsers keep the verified bytes in memory (the Cache API
|
|
8
|
+
* integration is future work). Overrides: SECRYST_INDEX,
|
|
9
|
+
* SECRYST_CACHE.
|
|
10
|
+
*/
|
|
11
|
+
export declare const DEFAULT_INDEX_URL = "https://raw.githubusercontent.com/interscript/interscript-ml/main/models.yaml";
|
|
12
|
+
export interface Part {
|
|
13
|
+
url: string;
|
|
14
|
+
sha256: string;
|
|
15
|
+
size: number;
|
|
16
|
+
}
|
|
17
|
+
export interface IndexEntry {
|
|
18
|
+
filename: string;
|
|
19
|
+
url: string;
|
|
20
|
+
sha256: string;
|
|
21
|
+
parts?: Part[];
|
|
22
|
+
}
|
|
23
|
+
export declare class RegistryError extends Error {
|
|
24
|
+
}
|
|
25
|
+
export interface ResolvedZip {
|
|
26
|
+
bytes: Uint8Array;
|
|
27
|
+
path?: string;
|
|
28
|
+
}
|
|
29
|
+
export declare function resolve(modelId: string, indexUrl?: string): Promise<ResolvedZip>;
|
|
30
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/ml/imf/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,eAAO,MAAM,iBAAiB,kFACmD,CAAA;AAEjF,MAAM,WAAW,IAAI;IACnB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,IAAI,EAAE,CAAA;CACf;AAED,qBAAa,aAAc,SAAQ,KAAK;CAAG;AA+E3C,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,UAAU,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,wBAAsB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA8EtF"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* models.yaml resolution (the dynamic-fetch contract shared with the
|
|
3
|
+
* Python and Ruby runtimes): resolve id -> channel URL, verify a cached
|
|
4
|
+
* copy against the index sha256, or download -> verify -> install.
|
|
5
|
+
*
|
|
6
|
+
* Node persists to ~/.cache/interscript/models/<id>/ (fs, atomic
|
|
7
|
+
* rename); browsers keep the verified bytes in memory (the Cache API
|
|
8
|
+
* integration is future work). Overrides: SECRYST_INDEX,
|
|
9
|
+
* SECRYST_CACHE.
|
|
10
|
+
*/
|
|
11
|
+
import { load as loadYaml } from "js-yaml";
|
|
12
|
+
export const DEFAULT_INDEX_URL = "https://raw.githubusercontent.com/interscript/interscript-ml/main/models.yaml";
|
|
13
|
+
export class RegistryError extends Error {
|
|
14
|
+
}
|
|
15
|
+
async function nodeFs() {
|
|
16
|
+
const g = globalThis;
|
|
17
|
+
if (!g.process?.versions?.node)
|
|
18
|
+
return undefined;
|
|
19
|
+
return (await import("node:fs"));
|
|
20
|
+
}
|
|
21
|
+
function cacheDir() {
|
|
22
|
+
const home = process.env["HOME"] ?? process.env["USERPROFILE"] ?? ".";
|
|
23
|
+
return process.env["SECRYST_CACHE"] ?? `${home}/.cache/interscript`;
|
|
24
|
+
}
|
|
25
|
+
async function fetchIndex(source) {
|
|
26
|
+
const text = source.startsWith("http://") || source.startsWith("https://")
|
|
27
|
+
? await (await fetch(source)).text()
|
|
28
|
+
: new TextDecoder().decode((await nodeFs()).readFileSync(source));
|
|
29
|
+
const raw = loadYaml(text);
|
|
30
|
+
if (raw.version !== 1)
|
|
31
|
+
throw new RegistryError("index must have version: 1");
|
|
32
|
+
const entries = {};
|
|
33
|
+
for (const [id, spec] of Object.entries(raw.models ?? {})) {
|
|
34
|
+
const entry = {
|
|
35
|
+
filename: spec["filename"],
|
|
36
|
+
url: spec["url"] ?? "",
|
|
37
|
+
sha256: spec["sha256"],
|
|
38
|
+
};
|
|
39
|
+
const parts = spec["parts"];
|
|
40
|
+
if (parts)
|
|
41
|
+
entry.parts = parts;
|
|
42
|
+
entries[id] = entry;
|
|
43
|
+
}
|
|
44
|
+
return entries;
|
|
45
|
+
}
|
|
46
|
+
async function sha256Hex(data) {
|
|
47
|
+
const digest = await crypto.subtle.digest("SHA-256", new Uint8Array(data).buffer);
|
|
48
|
+
return Array.from(new Uint8Array(digest))
|
|
49
|
+
.map((b) => b.toString(16).padStart(2, "0"))
|
|
50
|
+
.join("");
|
|
51
|
+
}
|
|
52
|
+
async function partBytes(fs, url) {
|
|
53
|
+
if (url.startsWith("file://")) {
|
|
54
|
+
if (!fs)
|
|
55
|
+
throw new RegistryError("file:// parts require a Node host");
|
|
56
|
+
return fs.readFileSync(url.replace(/^file:\/\//, ""));
|
|
57
|
+
}
|
|
58
|
+
return new Uint8Array(await (await fetch(url)).arrayBuffer());
|
|
59
|
+
}
|
|
60
|
+
async function fetchParts(entry, fs, onPart) {
|
|
61
|
+
const parts = entry.parts;
|
|
62
|
+
for (let i = 0; i < parts.length; i++) {
|
|
63
|
+
const bytes = await partBytes(fs, parts[i].url);
|
|
64
|
+
const actual = await sha256Hex(bytes);
|
|
65
|
+
if (actual !== parts[i].sha256) {
|
|
66
|
+
throw new RegistryError(`part ${i} of ${entry.filename} sha256 mismatch: got ${actual}, index says ${parts[i].sha256}`);
|
|
67
|
+
}
|
|
68
|
+
onPart(bytes);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
export async function resolve(modelId, indexUrl) {
|
|
72
|
+
const source = indexUrl ?? process.env["SECRYST_INDEX"] ?? DEFAULT_INDEX_URL;
|
|
73
|
+
const entries = await fetchIndex(source);
|
|
74
|
+
const entry = entries[modelId];
|
|
75
|
+
if (!entry) {
|
|
76
|
+
throw new RegistryError(`unknown model id '${modelId}' (known: ${Object.keys(entries).sort().join(", ")})`);
|
|
77
|
+
}
|
|
78
|
+
const fs = await nodeFs();
|
|
79
|
+
const target = `${cacheDir()}/models/${modelId}/${entry.filename}`;
|
|
80
|
+
if (fs?.existsSync(target)) {
|
|
81
|
+
const cached = fs.readFileSync(target);
|
|
82
|
+
if ((await sha256Hex(cached)) === entry.sha256)
|
|
83
|
+
return { bytes: cached, path: target };
|
|
84
|
+
}
|
|
85
|
+
if (entry.parts?.length) {
|
|
86
|
+
if (fs) {
|
|
87
|
+
const { createHash } = await import("node:crypto");
|
|
88
|
+
const whole = createHash("sha256");
|
|
89
|
+
const dir = target.substring(0, target.lastIndexOf("/"));
|
|
90
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
91
|
+
const tmp = `${target}.part.${process.pid}`;
|
|
92
|
+
fs.writeFileSync(tmp, new Uint8Array(0));
|
|
93
|
+
await fetchParts(entry, fs, (bytes) => {
|
|
94
|
+
whole.update(bytes);
|
|
95
|
+
fs.appendFileSync(tmp, bytes);
|
|
96
|
+
});
|
|
97
|
+
const actual = whole.digest("hex");
|
|
98
|
+
if (actual !== entry.sha256) {
|
|
99
|
+
throw new RegistryError(`assembled ${entry.filename} sha256 mismatch: got ${actual}, index says ${entry.sha256}`);
|
|
100
|
+
}
|
|
101
|
+
fs.renameSync(tmp, target);
|
|
102
|
+
return { bytes: fs.readFileSync(target), path: target };
|
|
103
|
+
}
|
|
104
|
+
// browser: parts are all small (client-tier models); concat in memory
|
|
105
|
+
const chunks = [];
|
|
106
|
+
let total = 0;
|
|
107
|
+
await fetchParts(entry, fs, (bytes) => {
|
|
108
|
+
chunks.push(bytes);
|
|
109
|
+
total += bytes.length;
|
|
110
|
+
});
|
|
111
|
+
const bytes = new Uint8Array(total);
|
|
112
|
+
let offset = 0;
|
|
113
|
+
for (const chunk of chunks) {
|
|
114
|
+
bytes.set(chunk, offset);
|
|
115
|
+
offset += chunk.length;
|
|
116
|
+
}
|
|
117
|
+
const actual = await sha256Hex(bytes);
|
|
118
|
+
if (actual !== entry.sha256) {
|
|
119
|
+
throw new RegistryError(`assembled ${entry.filename} sha256 mismatch: got ${actual}, index says ${entry.sha256}`);
|
|
120
|
+
}
|
|
121
|
+
return { bytes };
|
|
122
|
+
}
|
|
123
|
+
const bytes = entry.url.startsWith("file://")
|
|
124
|
+
? fs.readFileSync(entry.url.replace(/^file:\/\//, ""))
|
|
125
|
+
: new Uint8Array(await (await fetch(entry.url)).arrayBuffer());
|
|
126
|
+
const actual = await sha256Hex(bytes);
|
|
127
|
+
if (actual !== entry.sha256) {
|
|
128
|
+
throw new RegistryError(`downloaded ${entry.filename} sha256 mismatch: got ${actual}, index says ${entry.sha256}`);
|
|
129
|
+
}
|
|
130
|
+
if (fs) {
|
|
131
|
+
const dir = target.substring(0, target.lastIndexOf("/"));
|
|
132
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
133
|
+
const tmp = `${target}.part.${process.pid}`;
|
|
134
|
+
fs.writeFileSync(tmp, bytes);
|
|
135
|
+
fs.renameSync(tmp, target);
|
|
136
|
+
return { bytes, path: target };
|
|
137
|
+
}
|
|
138
|
+
return { bytes };
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/ml/imf/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The canonical ByT5 byte table (shared contract with the Python and
|
|
3
|
+
* Ruby runtimes): byte b -> token id b+3, trailing EOS; pad=0, unk=2.
|
|
4
|
+
* Token ids are NOT raw byte values — feeding TextEncoder output
|
|
5
|
+
* directly as ids silently produces garbage on real checkpoints.
|
|
6
|
+
*/
|
|
7
|
+
export declare const BYTE_OFFSET = 3;
|
|
8
|
+
export declare const PAD_ID = 0;
|
|
9
|
+
export declare const EOS_ID = 1;
|
|
10
|
+
export declare const UNK_ID = 2;
|
|
11
|
+
export declare function encode(text: string): number[];
|
|
12
|
+
export declare function decode(tokenIds: readonly number[]): string;
|
|
13
|
+
//# sourceMappingURL=tokens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../../src/ml/imf/tokens.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,WAAW,IAAI,CAAA;AAC5B,eAAO,MAAM,MAAM,IAAI,CAAA;AACvB,eAAO,MAAM,MAAM,IAAI,CAAA;AACvB,eAAO,MAAM,MAAM,IAAI,CAAA;AAKvB,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAM7C;AAED,wBAAgB,MAAM,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAQ1D"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The canonical ByT5 byte table (shared contract with the Python and
|
|
3
|
+
* Ruby runtimes): byte b -> token id b+3, trailing EOS; pad=0, unk=2.
|
|
4
|
+
* Token ids are NOT raw byte values — feeding TextEncoder output
|
|
5
|
+
* directly as ids silently produces garbage on real checkpoints.
|
|
6
|
+
*/
|
|
7
|
+
export const BYTE_OFFSET = 3;
|
|
8
|
+
export const PAD_ID = 0;
|
|
9
|
+
export const EOS_ID = 1;
|
|
10
|
+
export const UNK_ID = 2;
|
|
11
|
+
const encoder = new TextEncoder();
|
|
12
|
+
const decoder = new TextDecoder("utf-8", { fatal: false });
|
|
13
|
+
export function encode(text) {
|
|
14
|
+
const bytes = encoder.encode(text);
|
|
15
|
+
const ids = new Array(bytes.length + 1);
|
|
16
|
+
for (let i = 0; i < bytes.length; i++)
|
|
17
|
+
ids[i] = bytes[i] + BYTE_OFFSET;
|
|
18
|
+
ids[bytes.length] = EOS_ID;
|
|
19
|
+
return ids;
|
|
20
|
+
}
|
|
21
|
+
export function decode(tokenIds) {
|
|
22
|
+
const out = [];
|
|
23
|
+
for (const token of tokenIds) {
|
|
24
|
+
if (token === EOS_ID)
|
|
25
|
+
break;
|
|
26
|
+
if (token === PAD_ID || token === UNK_ID)
|
|
27
|
+
continue;
|
|
28
|
+
out.push((token - BYTE_OFFSET) % 256);
|
|
29
|
+
}
|
|
30
|
+
return decoder.decode(new Uint8Array(out));
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=tokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../../src/ml/imf/tokens.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAA;AAC5B,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAA;AACvB,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAA;AACvB,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAA;AAEvB,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;AACjC,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;AAE1D,MAAM,UAAU,MAAM,CAAC,IAAY;IACjC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAClC,MAAM,GAAG,GAAa,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAE,GAAG,WAAW,CAAA;IACvE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,CAAA;IAC1B,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,QAA2B;IAChD,MAAM,GAAG,GAAa,EAAE,CAAA;IACxB,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,IAAI,KAAK,KAAK,MAAM;YAAE,MAAK;QAC3B,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM;YAAE,SAAQ;QAClD,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,GAAG,CAAC,CAAA;IACvC,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;AAC5C,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public API for ML inference in interscript-ts.
|
|
3
|
+
*
|
|
4
|
+
* End users don't import this directly — they call `transliterateAsync`
|
|
5
|
+
* and the runtime transparently loads ML models when a map requires
|
|
6
|
+
* one. This module is for:
|
|
7
|
+
* - Internal stdlib integration (rababa/secryst functions)
|
|
8
|
+
* - Power users who want to load models directly
|
|
9
|
+
*
|
|
10
|
+
* Usage:
|
|
11
|
+
* import { loadModel } from "interscript-ts/ml"
|
|
12
|
+
* const rababa = await loadModel({ kind: "rababa", id: "200" })
|
|
13
|
+
*
|
|
14
|
+
* Models register themselves on first import of this module's
|
|
15
|
+
* `models/` submodules.
|
|
16
|
+
*/
|
|
17
|
+
export type { Model, ModelArtifacts, ModelFactory, ModelKind, ModelLoadParams, ModelRef, InferenceInputs, InferenceOutputs, InferenceSession, Tensor, } from "./types.js";
|
|
18
|
+
export { registerModel, loadModel, registeredKinds, resetModels } from "./registry.js";
|
|
19
|
+
export { createSession, detectBackend } from "./session/index.js";
|
|
20
|
+
export { setModelBase, getModelBase } from "./provision/base.js";
|
|
21
|
+
export { loadManifest, resolveManifestEntry, artifactUrls, sidecarFilenames, setInlineManifest, setManifestUrl, type AssetVariant, type Manifest, type ManifestModelEntry, } from "./provision/manifest.js";
|
|
22
|
+
import "./models/rababa/index.js";
|
|
23
|
+
import "./models/secryst/index.js";
|
|
24
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ml/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,YAAY,EACV,KAAK,EACL,cAAc,EACd,YAAY,EACZ,SAAS,EACT,eAAe,EACf,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,MAAM,GACP,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEtF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEjE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAEhE,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,kBAAkB,GACxB,MAAM,yBAAyB,CAAA;AAIhC,OAAO,0BAA0B,CAAA;AACjC,OAAO,2BAA2B,CAAA"}
|
package/dist/ml/index.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public API for ML inference in interscript-ts.
|
|
3
|
+
*
|
|
4
|
+
* End users don't import this directly — they call `transliterateAsync`
|
|
5
|
+
* and the runtime transparently loads ML models when a map requires
|
|
6
|
+
* one. This module is for:
|
|
7
|
+
* - Internal stdlib integration (rababa/secryst functions)
|
|
8
|
+
* - Power users who want to load models directly
|
|
9
|
+
*
|
|
10
|
+
* Usage:
|
|
11
|
+
* import { loadModel } from "interscript-ts/ml"
|
|
12
|
+
* const rababa = await loadModel({ kind: "rababa", id: "200" })
|
|
13
|
+
*
|
|
14
|
+
* Models register themselves on first import of this module's
|
|
15
|
+
* `models/` submodules.
|
|
16
|
+
*/
|
|
17
|
+
export { registerModel, loadModel, registeredKinds, resetModels } from "./registry.js";
|
|
18
|
+
export { createSession, detectBackend } from "./session/index.js";
|
|
19
|
+
export { setModelBase, getModelBase } from "./provision/base.js";
|
|
20
|
+
export { loadManifest, resolveManifestEntry, artifactUrls, sidecarFilenames, setInlineManifest, setManifestUrl, } from "./provision/manifest.js";
|
|
21
|
+
// Side-effect: register built-in model kinds. Adding a new model kind
|
|
22
|
+
// = adding a new import here. Order doesn't matter.
|
|
23
|
+
import "./models/rababa/index.js";
|
|
24
|
+
import "./models/secryst/index.js";
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ml/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAeH,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEtF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEjE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAEhE,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,GAIf,MAAM,yBAAyB,CAAA;AAEhC,sEAAsE;AACtE,oDAAoD;AACpD,OAAO,0BAA0B,CAAA;AACjC,OAAO,2BAA2B,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Text cleaner — mirrors `rababa/lib/rababa/{cleaner,arabic/cleaner}.rb`.
|
|
3
|
+
*
|
|
4
|
+
* Two cleaners, both pure functions:
|
|
5
|
+
* - cleanBasic: collapse whitespace, strip
|
|
6
|
+
* - cleanArabic: keep only VALID_ARABIC chars, then cleanBasic
|
|
7
|
+
*/
|
|
8
|
+
export declare function collapseWhitespace(text: string): string;
|
|
9
|
+
export declare function cleanBasic(text: string): string;
|
|
10
|
+
export declare function cleanArabic(text: string): string;
|
|
11
|
+
//# sourceMappingURL=cleaner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cleaner.d.ts","sourceRoot":"","sources":["../../../../src/ml/models/rababa/cleaner.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAGD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMhD"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Text cleaner — mirrors `rababa/lib/rababa/{cleaner,arabic/cleaner}.rb`.
|
|
3
|
+
*
|
|
4
|
+
* Two cleaners, both pure functions:
|
|
5
|
+
* - cleanBasic: collapse whitespace, strip
|
|
6
|
+
* - cleanArabic: keep only VALID_ARABIC chars, then cleanBasic
|
|
7
|
+
*/
|
|
8
|
+
import { VALID_ARABIC } from "./haraqat.js";
|
|
9
|
+
export function collapseWhitespace(text) {
|
|
10
|
+
return text.replace(/\s+/g, " ");
|
|
11
|
+
}
|
|
12
|
+
export function cleanBasic(text) {
|
|
13
|
+
return collapseWhitespace(text).trim();
|
|
14
|
+
}
|
|
15
|
+
const validArabicSet = new Set(VALID_ARABIC);
|
|
16
|
+
export function cleanArabic(text) {
|
|
17
|
+
return cleanBasic(Array.from(text)
|
|
18
|
+
.filter((c) => validArabicSet.has(c))
|
|
19
|
+
.join(""));
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=cleaner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cleaner.js","sourceRoot":"","sources":["../../../../src/ml/models/rababa/cleaner.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE3C,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;AACxC,CAAC;AAED,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAA;AAC5C,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,UAAU,CACf,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;SACb,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACpC,IAAI,CAAC,EAAE,CAAC,CACZ,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rababa diacritizer — port of `rababa/lib/rababa/arabic/diacritizer.rb`.
|
|
3
|
+
*
|
|
4
|
+
* Pipeline:
|
|
5
|
+
* text → clean → strip diacritics → encode to IDs
|
|
6
|
+
* → ONNX inference ({src, lengths}) → logits
|
|
7
|
+
* → argmax over classes → haraqat IDs
|
|
8
|
+
* → combine: original letters + predicted haraqat
|
|
9
|
+
* → reconcile with original input (preserves non-Arabic chars)
|
|
10
|
+
*
|
|
11
|
+
* The model file is loaded by the provisioner; we receive an
|
|
12
|
+
* InferenceSession + config artifacts.
|
|
13
|
+
*/
|
|
14
|
+
import type { InferenceSession, MLModel, ModelArtifacts, ModelKind } from "../../types.js";
|
|
15
|
+
export interface RababaConfig {
|
|
16
|
+
readonly maxLen: number;
|
|
17
|
+
readonly batchSize: number;
|
|
18
|
+
readonly textEncoder: "BasicArabicEncoder" | "ArabicEncoderWithStartSymbol";
|
|
19
|
+
readonly textCleaner: "basic_cleaners" | "valid_arabic_cleaners";
|
|
20
|
+
}
|
|
21
|
+
export interface RababaModel extends MLModel {
|
|
22
|
+
readonly kind: ModelKind;
|
|
23
|
+
diacritize(text: string): Promise<string>;
|
|
24
|
+
transform(input: string): Promise<string>;
|
|
25
|
+
dispose(): Promise<void>;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Factory: builds a RababaModel from a session + artifacts.
|
|
29
|
+
*
|
|
30
|
+
* Registered as the factory for kind "rababa" in src/ml/index.ts.
|
|
31
|
+
*/
|
|
32
|
+
export declare function createRababaModel(params: {
|
|
33
|
+
readonly session: InferenceSession;
|
|
34
|
+
readonly artifacts: ModelArtifacts;
|
|
35
|
+
readonly config?: RababaConfig;
|
|
36
|
+
}): Promise<RababaModel>;
|
|
37
|
+
//# sourceMappingURL=diacritizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diacritizer.d.ts","sourceRoot":"","sources":["../../../../src/ml/models/rababa/diacritizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAU,MAAM,gBAAgB,CAAA;AAKlG,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,WAAW,EAAE,oBAAoB,GAAG,8BAA8B,CAAA;IAC3E,QAAQ,CAAC,WAAW,EAAE,gBAAgB,GAAG,uBAAuB,CAAA;CACjE;AASD,MAAM,WAAW,WAAY,SAAQ,OAAO;IAC1C,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACzC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACzC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACzB;AA4ID;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE;IAC9C,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAA;IAClC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAA;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAA;CAC/B,GAAG,OAAO,CAAC,WAAW,CAAC,CAGvB"}
|