@lokascript/semantic 1.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 +21 -0
- package/README.md +686 -0
- package/dist/browser-ar.ar.global.js +2 -0
- package/dist/browser-core.core.global.js +2 -0
- package/dist/browser-de.de.global.js +2 -0
- package/dist/browser-east-asian.east-asian.global.js +2 -0
- package/dist/browser-en-tr.en-tr.global.js +2 -0
- package/dist/browser-en.en.global.js +2 -0
- package/dist/browser-es-en.es-en.global.js +2 -0
- package/dist/browser-es.es.global.js +2 -0
- package/dist/browser-fr.fr.global.js +2 -0
- package/dist/browser-id.id.global.js +2 -0
- package/dist/browser-ja.ja.global.js +2 -0
- package/dist/browser-ko.ko.global.js +2 -0
- package/dist/browser-lazy.lazy.global.js +2 -0
- package/dist/browser-priority.priority.global.js +2 -0
- package/dist/browser-pt.pt.global.js +2 -0
- package/dist/browser-qu.qu.global.js +2 -0
- package/dist/browser-sw.sw.global.js +2 -0
- package/dist/browser-tr.tr.global.js +2 -0
- package/dist/browser-western.western.global.js +2 -0
- package/dist/browser-zh.zh.global.js +2 -0
- package/dist/browser.global.js +3 -0
- package/dist/browser.global.js.map +1 -0
- package/dist/index.cjs +35051 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +3426 -0
- package/dist/index.d.ts +3426 -0
- package/dist/index.js +34890 -0
- package/dist/index.js.map +1 -0
- package/dist/languages/ar.d.ts +78 -0
- package/dist/languages/ar.js +1622 -0
- package/dist/languages/ar.js.map +1 -0
- package/dist/languages/de.d.ts +38 -0
- package/dist/languages/de.js +1168 -0
- package/dist/languages/de.js.map +1 -0
- package/dist/languages/en.d.ts +44 -0
- package/dist/languages/en.js +3491 -0
- package/dist/languages/en.js.map +1 -0
- package/dist/languages/es.d.ts +52 -0
- package/dist/languages/es.js +1493 -0
- package/dist/languages/es.js.map +1 -0
- package/dist/languages/fr.d.ts +37 -0
- package/dist/languages/fr.js +1159 -0
- package/dist/languages/fr.js.map +1 -0
- package/dist/languages/id.d.ts +35 -0
- package/dist/languages/id.js +1152 -0
- package/dist/languages/id.js.map +1 -0
- package/dist/languages/ja.d.ts +53 -0
- package/dist/languages/ja.js +1430 -0
- package/dist/languages/ja.js.map +1 -0
- package/dist/languages/ko.d.ts +51 -0
- package/dist/languages/ko.js +1729 -0
- package/dist/languages/ko.js.map +1 -0
- package/dist/languages/pt.d.ts +37 -0
- package/dist/languages/pt.js +1127 -0
- package/dist/languages/pt.js.map +1 -0
- package/dist/languages/qu.d.ts +36 -0
- package/dist/languages/qu.js +1143 -0
- package/dist/languages/qu.js.map +1 -0
- package/dist/languages/sw.d.ts +35 -0
- package/dist/languages/sw.js +1147 -0
- package/dist/languages/sw.js.map +1 -0
- package/dist/languages/tr.d.ts +45 -0
- package/dist/languages/tr.js +1529 -0
- package/dist/languages/tr.js.map +1 -0
- package/dist/languages/zh.d.ts +58 -0
- package/dist/languages/zh.js +1257 -0
- package/dist/languages/zh.js.map +1 -0
- package/dist/types-C4dcj53L.d.ts +600 -0
- package/package.json +202 -0
- package/src/__test-utils__/index.ts +7 -0
- package/src/__test-utils__/test-helpers.ts +8 -0
- package/src/__types__/test-helpers.ts +122 -0
- package/src/analysis/index.ts +479 -0
- package/src/ast-builder/command-mappers.ts +1133 -0
- package/src/ast-builder/expression-parser/index.ts +41 -0
- package/src/ast-builder/expression-parser/parser.ts +563 -0
- package/src/ast-builder/expression-parser/tokenizer.ts +394 -0
- package/src/ast-builder/expression-parser/types.ts +208 -0
- package/src/ast-builder/index.ts +536 -0
- package/src/ast-builder/value-converters.ts +172 -0
- package/src/bridge.ts +275 -0
- package/src/browser-ar.ts +162 -0
- package/src/browser-core.ts +231 -0
- package/src/browser-de.ts +162 -0
- package/src/browser-east-asian.ts +173 -0
- package/src/browser-en-tr.ts +165 -0
- package/src/browser-en.ts +157 -0
- package/src/browser-es-en.ts +200 -0
- package/src/browser-es.ts +170 -0
- package/src/browser-fr.ts +162 -0
- package/src/browser-id.ts +162 -0
- package/src/browser-ja.ts +162 -0
- package/src/browser-ko.ts +162 -0
- package/src/browser-lazy.ts +189 -0
- package/src/browser-priority.ts +214 -0
- package/src/browser-pt.ts +162 -0
- package/src/browser-qu.ts +162 -0
- package/src/browser-sw.ts +162 -0
- package/src/browser-tr.ts +162 -0
- package/src/browser-western.ts +181 -0
- package/src/browser-zh.ts +162 -0
- package/src/browser.ts +268 -0
- package/src/cache/index.ts +14 -0
- package/src/cache/semantic-cache.ts +344 -0
- package/src/core-bridge.ts +372 -0
- package/src/explicit/converter.ts +258 -0
- package/src/explicit/index.ts +18 -0
- package/src/explicit/parser.ts +236 -0
- package/src/explicit/renderer.ts +424 -0
- package/src/generators/command-schemas.ts +1636 -0
- package/src/generators/event-handler-generator.ts +109 -0
- package/src/generators/index.ts +117 -0
- package/src/generators/language-profiles.ts +139 -0
- package/src/generators/pattern-generator.ts +537 -0
- package/src/generators/profiles/arabic.ts +131 -0
- package/src/generators/profiles/bengali.ts +132 -0
- package/src/generators/profiles/chinese.ts +124 -0
- package/src/generators/profiles/english.ts +113 -0
- package/src/generators/profiles/french.ts +125 -0
- package/src/generators/profiles/german.ts +126 -0
- package/src/generators/profiles/hindi.ts +146 -0
- package/src/generators/profiles/index.ts +46 -0
- package/src/generators/profiles/indonesian.ts +125 -0
- package/src/generators/profiles/italian.ts +139 -0
- package/src/generators/profiles/japanese.ts +149 -0
- package/src/generators/profiles/korean.ts +127 -0
- package/src/generators/profiles/marker-templates.ts +288 -0
- package/src/generators/profiles/ms.ts +130 -0
- package/src/generators/profiles/polish.ts +249 -0
- package/src/generators/profiles/portuguese.ts +115 -0
- package/src/generators/profiles/quechua.ts +113 -0
- package/src/generators/profiles/russian.ts +260 -0
- package/src/generators/profiles/spanish.ts +130 -0
- package/src/generators/profiles/swahili.ts +129 -0
- package/src/generators/profiles/thai.ts +132 -0
- package/src/generators/profiles/tl.ts +128 -0
- package/src/generators/profiles/turkish.ts +124 -0
- package/src/generators/profiles/types.ts +165 -0
- package/src/generators/profiles/ukrainian.ts +270 -0
- package/src/generators/profiles/vietnamese.ts +133 -0
- package/src/generators/schema-error-codes.ts +160 -0
- package/src/generators/schema-validator.ts +391 -0
- package/src/index.ts +429 -0
- package/src/language-building-schema.ts +3170 -0
- package/src/language-loader.ts +394 -0
- package/src/languages/_all.ts +65 -0
- package/src/languages/ar.ts +15 -0
- package/src/languages/bn.ts +16 -0
- package/src/languages/de.ts +15 -0
- package/src/languages/en.ts +29 -0
- package/src/languages/es.ts +15 -0
- package/src/languages/fr.ts +15 -0
- package/src/languages/hi.ts +26 -0
- package/src/languages/id.ts +15 -0
- package/src/languages/index.ts +18 -0
- package/src/languages/it.ts +15 -0
- package/src/languages/ja.ts +15 -0
- package/src/languages/ko.ts +15 -0
- package/src/languages/ms.ts +16 -0
- package/src/languages/pl.ts +18 -0
- package/src/languages/pt.ts +15 -0
- package/src/languages/qu.ts +15 -0
- package/src/languages/ru.ts +26 -0
- package/src/languages/sw.ts +15 -0
- package/src/languages/th.ts +16 -0
- package/src/languages/tl.ts +16 -0
- package/src/languages/tr.ts +15 -0
- package/src/languages/uk.ts +26 -0
- package/src/languages/vi.ts +16 -0
- package/src/languages/zh.ts +15 -0
- package/src/parser/index.ts +15 -0
- package/src/parser/pattern-matcher.ts +1181 -0
- package/src/parser/semantic-parser.ts +573 -0
- package/src/parser/utils/index.ts +35 -0
- package/src/parser/utils/marker-resolution.ts +111 -0
- package/src/parser/utils/possessive-keywords.ts +43 -0
- package/src/parser/utils/role-positioning.ts +70 -0
- package/src/parser/utils/type-validation.ts +134 -0
- package/src/patterns/add/ar.ts +71 -0
- package/src/patterns/add/bn.ts +70 -0
- package/src/patterns/add/hi.ts +69 -0
- package/src/patterns/add/index.ts +87 -0
- package/src/patterns/add/it.ts +61 -0
- package/src/patterns/add/ja.ts +93 -0
- package/src/patterns/add/ko.ts +74 -0
- package/src/patterns/add/ms.ts +30 -0
- package/src/patterns/add/pl.ts +62 -0
- package/src/patterns/add/ru.ts +62 -0
- package/src/patterns/add/th.ts +49 -0
- package/src/patterns/add/tl.ts +30 -0
- package/src/patterns/add/tr.ts +71 -0
- package/src/patterns/add/uk.ts +62 -0
- package/src/patterns/add/vi.ts +61 -0
- package/src/patterns/add/zh.ts +71 -0
- package/src/patterns/builders.ts +207 -0
- package/src/patterns/decrement/bn.ts +70 -0
- package/src/patterns/decrement/de.ts +42 -0
- package/src/patterns/decrement/hi.ts +68 -0
- package/src/patterns/decrement/index.ts +79 -0
- package/src/patterns/decrement/it.ts +69 -0
- package/src/patterns/decrement/ms.ts +30 -0
- package/src/patterns/decrement/pl.ts +58 -0
- package/src/patterns/decrement/ru.ts +58 -0
- package/src/patterns/decrement/th.ts +49 -0
- package/src/patterns/decrement/tl.ts +30 -0
- package/src/patterns/decrement/tr.ts +48 -0
- package/src/patterns/decrement/uk.ts +58 -0
- package/src/patterns/decrement/vi.ts +61 -0
- package/src/patterns/decrement/zh.ts +32 -0
- package/src/patterns/en.ts +302 -0
- package/src/patterns/event-handler/ar.ts +151 -0
- package/src/patterns/event-handler/bn.ts +72 -0
- package/src/patterns/event-handler/de.ts +117 -0
- package/src/patterns/event-handler/en.ts +117 -0
- package/src/patterns/event-handler/es.ts +136 -0
- package/src/patterns/event-handler/fr.ts +117 -0
- package/src/patterns/event-handler/hi.ts +64 -0
- package/src/patterns/event-handler/id.ts +117 -0
- package/src/patterns/event-handler/index.ts +119 -0
- package/src/patterns/event-handler/it.ts +54 -0
- package/src/patterns/event-handler/ja.ts +118 -0
- package/src/patterns/event-handler/ko.ts +133 -0
- package/src/patterns/event-handler/ms.ts +30 -0
- package/src/patterns/event-handler/pl.ts +62 -0
- package/src/patterns/event-handler/pt.ts +117 -0
- package/src/patterns/event-handler/qu.ts +66 -0
- package/src/patterns/event-handler/ru.ts +62 -0
- package/src/patterns/event-handler/shared.ts +270 -0
- package/src/patterns/event-handler/sw.ts +117 -0
- package/src/patterns/event-handler/th.ts +53 -0
- package/src/patterns/event-handler/tl.ts +30 -0
- package/src/patterns/event-handler/tr.ts +170 -0
- package/src/patterns/event-handler/uk.ts +62 -0
- package/src/patterns/event-handler/vi.ts +61 -0
- package/src/patterns/event-handler/zh.ts +150 -0
- package/src/patterns/get/ar.ts +49 -0
- package/src/patterns/get/bn.ts +47 -0
- package/src/patterns/get/de.ts +32 -0
- package/src/patterns/get/hi.ts +52 -0
- package/src/patterns/get/index.ts +83 -0
- package/src/patterns/get/it.ts +56 -0
- package/src/patterns/get/ja.ts +53 -0
- package/src/patterns/get/ko.ts +53 -0
- package/src/patterns/get/ms.ts +30 -0
- package/src/patterns/get/pl.ts +57 -0
- package/src/patterns/get/ru.ts +57 -0
- package/src/patterns/get/th.ts +29 -0
- package/src/patterns/get/tl.ts +30 -0
- package/src/patterns/get/uk.ts +57 -0
- package/src/patterns/get/vi.ts +48 -0
- package/src/patterns/grammar-transformed/index.ts +39 -0
- package/src/patterns/grammar-transformed/ja.ts +1713 -0
- package/src/patterns/grammar-transformed/ko.ts +1311 -0
- package/src/patterns/grammar-transformed/tr.ts +1067 -0
- package/src/patterns/hide/ar.ts +67 -0
- package/src/patterns/hide/bn.ts +47 -0
- package/src/patterns/hide/de.ts +36 -0
- package/src/patterns/hide/hi.ts +61 -0
- package/src/patterns/hide/index.ts +91 -0
- package/src/patterns/hide/it.ts +56 -0
- package/src/patterns/hide/ja.ts +69 -0
- package/src/patterns/hide/ko.ts +69 -0
- package/src/patterns/hide/ms.ts +30 -0
- package/src/patterns/hide/pl.ts +57 -0
- package/src/patterns/hide/ru.ts +57 -0
- package/src/patterns/hide/th.ts +29 -0
- package/src/patterns/hide/tl.ts +30 -0
- package/src/patterns/hide/tr.ts +65 -0
- package/src/patterns/hide/uk.ts +57 -0
- package/src/patterns/hide/vi.ts +56 -0
- package/src/patterns/hide/zh.ts +68 -0
- package/src/patterns/increment/bn.ts +70 -0
- package/src/patterns/increment/de.ts +36 -0
- package/src/patterns/increment/hi.ts +68 -0
- package/src/patterns/increment/index.ts +79 -0
- package/src/patterns/increment/it.ts +69 -0
- package/src/patterns/increment/ms.ts +30 -0
- package/src/patterns/increment/pl.ts +58 -0
- package/src/patterns/increment/ru.ts +58 -0
- package/src/patterns/increment/th.ts +49 -0
- package/src/patterns/increment/tl.ts +30 -0
- package/src/patterns/increment/tr.ts +52 -0
- package/src/patterns/increment/uk.ts +58 -0
- package/src/patterns/increment/vi.ts +61 -0
- package/src/patterns/increment/zh.ts +32 -0
- package/src/patterns/index.ts +84 -0
- package/src/patterns/languages/en/control-flow.ts +93 -0
- package/src/patterns/languages/en/fetch.ts +62 -0
- package/src/patterns/languages/en/index.ts +42 -0
- package/src/patterns/languages/en/repeat.ts +67 -0
- package/src/patterns/languages/en/set.ts +48 -0
- package/src/patterns/languages/en/swap.ts +38 -0
- package/src/patterns/languages/en/temporal.ts +57 -0
- package/src/patterns/put/ar.ts +74 -0
- package/src/patterns/put/bn.ts +53 -0
- package/src/patterns/put/en.ts +74 -0
- package/src/patterns/put/es.ts +74 -0
- package/src/patterns/put/hi.ts +69 -0
- package/src/patterns/put/id.ts +96 -0
- package/src/patterns/put/index.ts +99 -0
- package/src/patterns/put/it.ts +56 -0
- package/src/patterns/put/ja.ts +75 -0
- package/src/patterns/put/ko.ts +67 -0
- package/src/patterns/put/ms.ts +30 -0
- package/src/patterns/put/pl.ts +81 -0
- package/src/patterns/put/ru.ts +85 -0
- package/src/patterns/put/th.ts +32 -0
- package/src/patterns/put/tl.ts +30 -0
- package/src/patterns/put/tr.ts +67 -0
- package/src/patterns/put/uk.ts +85 -0
- package/src/patterns/put/vi.ts +72 -0
- package/src/patterns/put/zh.ts +62 -0
- package/src/patterns/registry.ts +163 -0
- package/src/patterns/remove/ar.ts +71 -0
- package/src/patterns/remove/bn.ts +68 -0
- package/src/patterns/remove/hi.ts +69 -0
- package/src/patterns/remove/index.ts +87 -0
- package/src/patterns/remove/it.ts +69 -0
- package/src/patterns/remove/ja.ts +74 -0
- package/src/patterns/remove/ko.ts +78 -0
- package/src/patterns/remove/ms.ts +30 -0
- package/src/patterns/remove/pl.ts +62 -0
- package/src/patterns/remove/ru.ts +62 -0
- package/src/patterns/remove/th.ts +49 -0
- package/src/patterns/remove/tl.ts +30 -0
- package/src/patterns/remove/tr.ts +78 -0
- package/src/patterns/remove/uk.ts +62 -0
- package/src/patterns/remove/vi.ts +61 -0
- package/src/patterns/remove/zh.ts +72 -0
- package/src/patterns/set/ar.ts +84 -0
- package/src/patterns/set/bn.ts +53 -0
- package/src/patterns/set/de.ts +84 -0
- package/src/patterns/set/es.ts +92 -0
- package/src/patterns/set/fr.ts +88 -0
- package/src/patterns/set/hi.ts +56 -0
- package/src/patterns/set/id.ts +84 -0
- package/src/patterns/set/index.ts +107 -0
- package/src/patterns/set/it.ts +56 -0
- package/src/patterns/set/ja.ts +86 -0
- package/src/patterns/set/ko.ts +85 -0
- package/src/patterns/set/ms.ts +30 -0
- package/src/patterns/set/pl.ts +57 -0
- package/src/patterns/set/pt.ts +84 -0
- package/src/patterns/set/ru.ts +57 -0
- package/src/patterns/set/th.ts +31 -0
- package/src/patterns/set/tl.ts +30 -0
- package/src/patterns/set/tr.ts +107 -0
- package/src/patterns/set/uk.ts +57 -0
- package/src/patterns/set/vi.ts +53 -0
- package/src/patterns/set/zh.ts +84 -0
- package/src/patterns/show/ar.ts +67 -0
- package/src/patterns/show/bn.ts +47 -0
- package/src/patterns/show/de.ts +32 -0
- package/src/patterns/show/fr.ts +32 -0
- package/src/patterns/show/hi.ts +61 -0
- package/src/patterns/show/index.ts +95 -0
- package/src/patterns/show/it.ts +56 -0
- package/src/patterns/show/ja.ts +69 -0
- package/src/patterns/show/ko.ts +73 -0
- package/src/patterns/show/ms.ts +30 -0
- package/src/patterns/show/pl.ts +57 -0
- package/src/patterns/show/ru.ts +57 -0
- package/src/patterns/show/th.ts +29 -0
- package/src/patterns/show/tl.ts +30 -0
- package/src/patterns/show/tr.ts +65 -0
- package/src/patterns/show/uk.ts +57 -0
- package/src/patterns/show/vi.ts +56 -0
- package/src/patterns/show/zh.ts +68 -0
- package/src/patterns/take/ar.ts +51 -0
- package/src/patterns/take/index.ts +31 -0
- package/src/patterns/toggle/ar.ts +61 -0
- package/src/patterns/toggle/bn.ts +70 -0
- package/src/patterns/toggle/en.ts +61 -0
- package/src/patterns/toggle/es.ts +61 -0
- package/src/patterns/toggle/hi.ts +80 -0
- package/src/patterns/toggle/index.ts +95 -0
- package/src/patterns/toggle/it.ts +69 -0
- package/src/patterns/toggle/ja.ts +156 -0
- package/src/patterns/toggle/ko.ts +113 -0
- package/src/patterns/toggle/ms.ts +30 -0
- package/src/patterns/toggle/pl.ts +62 -0
- package/src/patterns/toggle/ru.ts +62 -0
- package/src/patterns/toggle/th.ts +50 -0
- package/src/patterns/toggle/tl.ts +30 -0
- package/src/patterns/toggle/tr.ts +88 -0
- package/src/patterns/toggle/uk.ts +62 -0
- package/src/patterns/toggle/vi.ts +61 -0
- package/src/patterns/toggle/zh.ts +99 -0
- package/src/public-api.ts +286 -0
- package/src/registry.ts +441 -0
- package/src/tokenizers/arabic.ts +723 -0
- package/src/tokenizers/base.ts +1300 -0
- package/src/tokenizers/bengali.ts +289 -0
- package/src/tokenizers/chinese.ts +481 -0
- package/src/tokenizers/english.ts +416 -0
- package/src/tokenizers/french.ts +326 -0
- package/src/tokenizers/german.ts +324 -0
- package/src/tokenizers/hindi.ts +319 -0
- package/src/tokenizers/index.ts +127 -0
- package/src/tokenizers/indonesian.ts +306 -0
- package/src/tokenizers/italian.ts +458 -0
- package/src/tokenizers/japanese.ts +447 -0
- package/src/tokenizers/korean.ts +642 -0
- package/src/tokenizers/morphology/arabic-normalizer.ts +242 -0
- package/src/tokenizers/morphology/french-normalizer.ts +268 -0
- package/src/tokenizers/morphology/german-normalizer.ts +256 -0
- package/src/tokenizers/morphology/index.ts +46 -0
- package/src/tokenizers/morphology/italian-normalizer.ts +329 -0
- package/src/tokenizers/morphology/japanese-normalizer.ts +288 -0
- package/src/tokenizers/morphology/korean-normalizer.ts +428 -0
- package/src/tokenizers/morphology/polish-normalizer.ts +264 -0
- package/src/tokenizers/morphology/portuguese-normalizer.ts +310 -0
- package/src/tokenizers/morphology/spanish-normalizer.ts +327 -0
- package/src/tokenizers/morphology/turkish-normalizer.ts +412 -0
- package/src/tokenizers/morphology/types.ts +211 -0
- package/src/tokenizers/ms.ts +198 -0
- package/src/tokenizers/polish.ts +354 -0
- package/src/tokenizers/portuguese.ts +304 -0
- package/src/tokenizers/quechua.ts +339 -0
- package/src/tokenizers/russian.ts +375 -0
- package/src/tokenizers/spanish.ts +403 -0
- package/src/tokenizers/swahili.ts +303 -0
- package/src/tokenizers/thai.ts +236 -0
- package/src/tokenizers/tl.ts +198 -0
- package/src/tokenizers/turkish.ts +411 -0
- package/src/tokenizers/ukrainian.ts +369 -0
- package/src/tokenizers/vietnamese.ts +410 -0
- package/src/types/grammar-types.ts +617 -0
- package/src/types/unified-profile.ts +267 -0
- package/src/types.ts +709 -0
- package/src/utils/confidence-calculator.ts +147 -0
- package/src/validators/command-validator.ts +380 -0
- package/src/validators/index.ts +15 -0
|
@@ -0,0 +1,394 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Language Loader
|
|
3
|
+
*
|
|
4
|
+
* Provides lazy loading capabilities for language modules.
|
|
5
|
+
* Languages can be loaded:
|
|
6
|
+
* 1. Via dynamic import from package subpath
|
|
7
|
+
* 2. From a URL (for CDN usage)
|
|
8
|
+
* 3. From a pre-loaded module object
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import { loadLanguage, parse } from '@lokascript/semantic/browser/lazy';
|
|
13
|
+
*
|
|
14
|
+
* // Load Japanese on demand
|
|
15
|
+
* await loadLanguage('ja');
|
|
16
|
+
*
|
|
17
|
+
* // Now parsing works for Japanese
|
|
18
|
+
* parse('トグル .active', 'ja');
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
import {
|
|
23
|
+
registerLanguage,
|
|
24
|
+
registerPatterns,
|
|
25
|
+
isLanguageRegistered,
|
|
26
|
+
type LanguageProfile,
|
|
27
|
+
} from './registry';
|
|
28
|
+
import type { LanguageTokenizer, LanguagePattern } from './types';
|
|
29
|
+
|
|
30
|
+
// =============================================================================
|
|
31
|
+
// Types
|
|
32
|
+
// =============================================================================
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Options for loading a language.
|
|
36
|
+
*/
|
|
37
|
+
export interface LoadLanguageOptions {
|
|
38
|
+
/**
|
|
39
|
+
* URL to fetch the language module from (for CDN usage).
|
|
40
|
+
* The module should export: tokenizer, profile, patterns (or buildPatterns)
|
|
41
|
+
*/
|
|
42
|
+
url?: string;
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Pre-loaded module object.
|
|
46
|
+
* Use this if you've already imported the module.
|
|
47
|
+
*/
|
|
48
|
+
module?: LanguageModule;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Skip loading if the language is already registered.
|
|
52
|
+
* Defaults to true.
|
|
53
|
+
*/
|
|
54
|
+
skipIfRegistered?: boolean;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* A language module that can be registered with the semantic parser.
|
|
59
|
+
*/
|
|
60
|
+
export interface LanguageModule {
|
|
61
|
+
/** The language tokenizer */
|
|
62
|
+
tokenizer: LanguageTokenizer;
|
|
63
|
+
|
|
64
|
+
/** The language profile for pattern generation */
|
|
65
|
+
profile: LanguageProfile;
|
|
66
|
+
|
|
67
|
+
/** Pre-built patterns (optional) */
|
|
68
|
+
patterns?: LanguagePattern[];
|
|
69
|
+
|
|
70
|
+
/** Function to build patterns lazily (optional) */
|
|
71
|
+
buildPatterns?: () => LanguagePattern[];
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Result of a language loading operation.
|
|
76
|
+
*/
|
|
77
|
+
export interface LoadLanguageResult {
|
|
78
|
+
/** The language code that was loaded */
|
|
79
|
+
code: string;
|
|
80
|
+
|
|
81
|
+
/** Whether the language was newly loaded (false if already registered) */
|
|
82
|
+
loaded: boolean;
|
|
83
|
+
|
|
84
|
+
/** Error message if loading failed */
|
|
85
|
+
error?: string;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// =============================================================================
|
|
89
|
+
// Language Module Import Map
|
|
90
|
+
// =============================================================================
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Map of language codes to their module import functions.
|
|
94
|
+
* This enables dynamic imports without bundling all languages.
|
|
95
|
+
*
|
|
96
|
+
* Most languages use the registry's pattern generator (set via setPatternGenerator).
|
|
97
|
+
* English has special hand-crafted patterns that are explicitly registered.
|
|
98
|
+
*/
|
|
99
|
+
const LANGUAGE_IMPORTERS: Record<string, () => Promise<LanguageModule>> = {
|
|
100
|
+
en: async () => {
|
|
101
|
+
// English has special hand-crafted patterns
|
|
102
|
+
const { englishTokenizer } = await import('./tokenizers/english');
|
|
103
|
+
const { englishProfile } = await import('./generators/profiles/english');
|
|
104
|
+
const { buildEnglishPatterns } = await import('./patterns/en');
|
|
105
|
+
return {
|
|
106
|
+
tokenizer: englishTokenizer,
|
|
107
|
+
profile: englishProfile,
|
|
108
|
+
buildPatterns: buildEnglishPatterns,
|
|
109
|
+
};
|
|
110
|
+
},
|
|
111
|
+
es: async () => {
|
|
112
|
+
const { spanishTokenizer } = await import('./tokenizers/spanish');
|
|
113
|
+
const { spanishProfile } = await import('./generators/profiles/spanish');
|
|
114
|
+
return { tokenizer: spanishTokenizer, profile: spanishProfile };
|
|
115
|
+
},
|
|
116
|
+
ja: async () => {
|
|
117
|
+
const { japaneseTokenizer } = await import('./tokenizers/japanese');
|
|
118
|
+
const { japaneseProfile } = await import('./generators/profiles/japanese');
|
|
119
|
+
return { tokenizer: japaneseTokenizer, profile: japaneseProfile };
|
|
120
|
+
},
|
|
121
|
+
ar: async () => {
|
|
122
|
+
const { arabicTokenizer } = await import('./tokenizers/arabic');
|
|
123
|
+
const { arabicProfile } = await import('./generators/profiles/arabic');
|
|
124
|
+
return { tokenizer: arabicTokenizer, profile: arabicProfile };
|
|
125
|
+
},
|
|
126
|
+
ko: async () => {
|
|
127
|
+
const { koreanTokenizer } = await import('./tokenizers/korean');
|
|
128
|
+
const { koreanProfile } = await import('./generators/profiles/korean');
|
|
129
|
+
return { tokenizer: koreanTokenizer, profile: koreanProfile };
|
|
130
|
+
},
|
|
131
|
+
zh: async () => {
|
|
132
|
+
const { chineseTokenizer } = await import('./tokenizers/chinese');
|
|
133
|
+
const { chineseProfile } = await import('./generators/profiles/chinese');
|
|
134
|
+
return { tokenizer: chineseTokenizer, profile: chineseProfile };
|
|
135
|
+
},
|
|
136
|
+
tr: async () => {
|
|
137
|
+
const { turkishTokenizer } = await import('./tokenizers/turkish');
|
|
138
|
+
const { turkishProfile } = await import('./generators/profiles/turkish');
|
|
139
|
+
return { tokenizer: turkishTokenizer, profile: turkishProfile };
|
|
140
|
+
},
|
|
141
|
+
pt: async () => {
|
|
142
|
+
const { portugueseTokenizer } = await import('./tokenizers/portuguese');
|
|
143
|
+
const { portugueseProfile } = await import('./generators/profiles/portuguese');
|
|
144
|
+
return { tokenizer: portugueseTokenizer, profile: portugueseProfile };
|
|
145
|
+
},
|
|
146
|
+
fr: async () => {
|
|
147
|
+
const { frenchTokenizer } = await import('./tokenizers/french');
|
|
148
|
+
const { frenchProfile } = await import('./generators/profiles/french');
|
|
149
|
+
return { tokenizer: frenchTokenizer, profile: frenchProfile };
|
|
150
|
+
},
|
|
151
|
+
de: async () => {
|
|
152
|
+
const { germanTokenizer } = await import('./tokenizers/german');
|
|
153
|
+
const { germanProfile } = await import('./generators/profiles/german');
|
|
154
|
+
return { tokenizer: germanTokenizer, profile: germanProfile };
|
|
155
|
+
},
|
|
156
|
+
id: async () => {
|
|
157
|
+
const { indonesianTokenizer } = await import('./tokenizers/indonesian');
|
|
158
|
+
const { indonesianProfile } = await import('./generators/profiles/indonesian');
|
|
159
|
+
return { tokenizer: indonesianTokenizer, profile: indonesianProfile };
|
|
160
|
+
},
|
|
161
|
+
qu: async () => {
|
|
162
|
+
const { quechuaTokenizer } = await import('./tokenizers/quechua');
|
|
163
|
+
const { quechuaProfile } = await import('./generators/profiles/quechua');
|
|
164
|
+
return { tokenizer: quechuaTokenizer, profile: quechuaProfile };
|
|
165
|
+
},
|
|
166
|
+
sw: async () => {
|
|
167
|
+
const { swahiliTokenizer } = await import('./tokenizers/swahili');
|
|
168
|
+
const { swahiliProfile } = await import('./generators/profiles/swahili');
|
|
169
|
+
return { tokenizer: swahiliTokenizer, profile: swahiliProfile };
|
|
170
|
+
},
|
|
171
|
+
bn: async () => {
|
|
172
|
+
const { bengaliTokenizer } = await import('./tokenizers/bengali');
|
|
173
|
+
const { bengaliProfile } = await import('./generators/profiles/bengali');
|
|
174
|
+
return { tokenizer: bengaliTokenizer, profile: bengaliProfile };
|
|
175
|
+
},
|
|
176
|
+
hi: async () => {
|
|
177
|
+
const { hindiTokenizer } = await import('./tokenizers/hindi');
|
|
178
|
+
const { hindiProfile } = await import('./generators/profiles/hindi');
|
|
179
|
+
return { tokenizer: hindiTokenizer, profile: hindiProfile };
|
|
180
|
+
},
|
|
181
|
+
it: async () => {
|
|
182
|
+
const { italianTokenizer } = await import('./tokenizers/italian');
|
|
183
|
+
const { italianProfile } = await import('./generators/profiles/italian');
|
|
184
|
+
return { tokenizer: italianTokenizer, profile: italianProfile };
|
|
185
|
+
},
|
|
186
|
+
ms: async () => {
|
|
187
|
+
const { malayTokenizer } = await import('./tokenizers/ms');
|
|
188
|
+
const { malayProfile } = await import('./generators/profiles/ms');
|
|
189
|
+
return { tokenizer: malayTokenizer, profile: malayProfile };
|
|
190
|
+
},
|
|
191
|
+
pl: async () => {
|
|
192
|
+
const { polishTokenizer } = await import('./tokenizers/polish');
|
|
193
|
+
const { polishProfile } = await import('./generators/profiles/polish');
|
|
194
|
+
return { tokenizer: polishTokenizer, profile: polishProfile };
|
|
195
|
+
},
|
|
196
|
+
ru: async () => {
|
|
197
|
+
const { russianTokenizer } = await import('./tokenizers/russian');
|
|
198
|
+
const { russianProfile } = await import('./generators/profiles/russian');
|
|
199
|
+
return { tokenizer: russianTokenizer, profile: russianProfile };
|
|
200
|
+
},
|
|
201
|
+
th: async () => {
|
|
202
|
+
const { thaiTokenizer } = await import('./tokenizers/thai');
|
|
203
|
+
const { thaiProfile } = await import('./generators/profiles/thai');
|
|
204
|
+
return { tokenizer: thaiTokenizer, profile: thaiProfile };
|
|
205
|
+
},
|
|
206
|
+
tl: async () => {
|
|
207
|
+
const { tagalogTokenizer } = await import('./tokenizers/tl');
|
|
208
|
+
const { tagalogProfile } = await import('./generators/profiles/tl');
|
|
209
|
+
return { tokenizer: tagalogTokenizer, profile: tagalogProfile };
|
|
210
|
+
},
|
|
211
|
+
uk: async () => {
|
|
212
|
+
const { ukrainianTokenizer } = await import('./tokenizers/ukrainian');
|
|
213
|
+
const { ukrainianProfile } = await import('./generators/profiles/ukrainian');
|
|
214
|
+
return { tokenizer: ukrainianTokenizer, profile: ukrainianProfile };
|
|
215
|
+
},
|
|
216
|
+
vi: async () => {
|
|
217
|
+
const { vietnameseTokenizer } = await import('./tokenizers/vietnamese');
|
|
218
|
+
const { vietnameseProfile } = await import('./generators/profiles/vietnamese');
|
|
219
|
+
return { tokenizer: vietnameseTokenizer, profile: vietnameseProfile };
|
|
220
|
+
},
|
|
221
|
+
};
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* List of all supported language codes.
|
|
225
|
+
*/
|
|
226
|
+
export const SUPPORTED_LANGUAGES = Object.keys(LANGUAGE_IMPORTERS);
|
|
227
|
+
|
|
228
|
+
// =============================================================================
|
|
229
|
+
// Core Loading Functions
|
|
230
|
+
// =============================================================================
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* Register a language module with the semantic parser.
|
|
234
|
+
*/
|
|
235
|
+
function registerModule(code: string, module: LanguageModule): void {
|
|
236
|
+
// Register tokenizer and profile
|
|
237
|
+
registerLanguage(code, module.tokenizer, module.profile);
|
|
238
|
+
|
|
239
|
+
// Register patterns
|
|
240
|
+
if (module.patterns) {
|
|
241
|
+
registerPatterns(code, module.patterns);
|
|
242
|
+
} else if (module.buildPatterns) {
|
|
243
|
+
registerPatterns(code, module.buildPatterns());
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* Load a language from a URL.
|
|
249
|
+
* The URL should return a JavaScript module that exports a LanguageModule.
|
|
250
|
+
*/
|
|
251
|
+
async function loadFromUrl(code: string, url: string): Promise<LanguageModule> {
|
|
252
|
+
try {
|
|
253
|
+
// Fetch the module
|
|
254
|
+
const response = await fetch(url);
|
|
255
|
+
if (!response.ok) {
|
|
256
|
+
throw new Error(`Failed to fetch ${url}: ${response.status} ${response.statusText}`);
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
// Get the module text and create a blob URL
|
|
260
|
+
const text = await response.text();
|
|
261
|
+
const blob = new Blob([text], { type: 'application/javascript' });
|
|
262
|
+
const blobUrl = URL.createObjectURL(blob);
|
|
263
|
+
|
|
264
|
+
try {
|
|
265
|
+
// Dynamic import from blob URL
|
|
266
|
+
const module = await import(/* @vite-ignore */ blobUrl);
|
|
267
|
+
|
|
268
|
+
// Validate module structure
|
|
269
|
+
if (!module.tokenizer || !module.profile) {
|
|
270
|
+
throw new Error(`Invalid language module: missing tokenizer or profile`);
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
return module as LanguageModule;
|
|
274
|
+
} finally {
|
|
275
|
+
// Clean up blob URL
|
|
276
|
+
URL.revokeObjectURL(blobUrl);
|
|
277
|
+
}
|
|
278
|
+
} catch (error) {
|
|
279
|
+
throw new Error(
|
|
280
|
+
`Failed to load language '${code}' from ${url}: ${error instanceof Error ? error.message : String(error)}`
|
|
281
|
+
);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* Load a single language.
|
|
287
|
+
*
|
|
288
|
+
* @param code - The language code (e.g., 'en', 'ja', 'es')
|
|
289
|
+
* @param options - Loading options
|
|
290
|
+
* @returns Result indicating success or failure
|
|
291
|
+
*
|
|
292
|
+
* @example
|
|
293
|
+
* ```typescript
|
|
294
|
+
* // Load from package
|
|
295
|
+
* await loadLanguage('ja');
|
|
296
|
+
*
|
|
297
|
+
* // Load from CDN
|
|
298
|
+
* await loadLanguage('ko', {
|
|
299
|
+
* url: 'https://cdn.example.com/hyperfixi-semantic-ko.js'
|
|
300
|
+
* });
|
|
301
|
+
*
|
|
302
|
+
* // Load from pre-loaded module
|
|
303
|
+
* await loadLanguage('en', { module: myEnglishModule });
|
|
304
|
+
* ```
|
|
305
|
+
*/
|
|
306
|
+
export async function loadLanguage(
|
|
307
|
+
code: string,
|
|
308
|
+
options: LoadLanguageOptions = {}
|
|
309
|
+
): Promise<LoadLanguageResult> {
|
|
310
|
+
const { url, module, skipIfRegistered = true } = options;
|
|
311
|
+
|
|
312
|
+
// Check if already registered
|
|
313
|
+
if (skipIfRegistered && isLanguageRegistered(code)) {
|
|
314
|
+
return { code, loaded: false };
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
try {
|
|
318
|
+
let languageModule: LanguageModule;
|
|
319
|
+
|
|
320
|
+
if (module) {
|
|
321
|
+
// Use provided module directly
|
|
322
|
+
languageModule = module;
|
|
323
|
+
} else if (url) {
|
|
324
|
+
// Load from URL
|
|
325
|
+
languageModule = await loadFromUrl(code, url);
|
|
326
|
+
} else {
|
|
327
|
+
// Dynamic import from package
|
|
328
|
+
const importer = LANGUAGE_IMPORTERS[code];
|
|
329
|
+
if (!importer) {
|
|
330
|
+
throw new Error(`Unknown language: ${code}. Supported: ${SUPPORTED_LANGUAGES.join(', ')}`);
|
|
331
|
+
}
|
|
332
|
+
languageModule = await importer();
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
// Register the module
|
|
336
|
+
registerModule(code, languageModule);
|
|
337
|
+
|
|
338
|
+
return { code, loaded: true };
|
|
339
|
+
} catch (error) {
|
|
340
|
+
return {
|
|
341
|
+
code,
|
|
342
|
+
loaded: false,
|
|
343
|
+
error: error instanceof Error ? error.message : String(error),
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
/**
|
|
349
|
+
* Load multiple languages in parallel.
|
|
350
|
+
*
|
|
351
|
+
* @param codes - Array of language codes to load
|
|
352
|
+
* @param options - Loading options (applied to all languages)
|
|
353
|
+
* @returns Array of results for each language
|
|
354
|
+
*
|
|
355
|
+
* @example
|
|
356
|
+
* ```typescript
|
|
357
|
+
* // Load multiple languages
|
|
358
|
+
* const results = await loadLanguages(['en', 'es', 'ja']);
|
|
359
|
+
*
|
|
360
|
+
* // Check results
|
|
361
|
+
* for (const result of results) {
|
|
362
|
+
* if (result.error) {
|
|
363
|
+
* console.error(`Failed to load ${result.code}: ${result.error}`);
|
|
364
|
+
* }
|
|
365
|
+
* }
|
|
366
|
+
* ```
|
|
367
|
+
*/
|
|
368
|
+
export async function loadLanguages(
|
|
369
|
+
codes: string[],
|
|
370
|
+
options: Omit<LoadLanguageOptions, 'module'> = {}
|
|
371
|
+
): Promise<LoadLanguageResult[]> {
|
|
372
|
+
return Promise.all(codes.map(code => loadLanguage(code, options)));
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
/**
|
|
376
|
+
* Check if a language can be loaded (is supported).
|
|
377
|
+
*/
|
|
378
|
+
export function canLoadLanguage(code: string): boolean {
|
|
379
|
+
return code in LANGUAGE_IMPORTERS;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
/**
|
|
383
|
+
* Get list of languages that are currently loaded.
|
|
384
|
+
*/
|
|
385
|
+
export function getLoadedLanguages(): string[] {
|
|
386
|
+
return SUPPORTED_LANGUAGES.filter(isLanguageRegistered);
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
/**
|
|
390
|
+
* Get list of languages that are not yet loaded.
|
|
391
|
+
*/
|
|
392
|
+
export function getUnloadedLanguages(): string[] {
|
|
393
|
+
return SUPPORTED_LANGUAGES.filter(code => !isLanguageRegistered(code));
|
|
394
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* All Languages Module
|
|
3
|
+
*
|
|
4
|
+
* Imports and registers all 23 supported languages.
|
|
5
|
+
* Use this for the full bundle with all language support.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import '@lokascript/semantic/languages/_all';
|
|
10
|
+
* // or
|
|
11
|
+
* import '@lokascript/semantic/languages';
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* @generated This file is auto-generated. Do not edit manually.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
// Import all language modules to trigger registration
|
|
18
|
+
import './ar';
|
|
19
|
+
import './bn';
|
|
20
|
+
import './de';
|
|
21
|
+
import './en';
|
|
22
|
+
import './es';
|
|
23
|
+
import './fr';
|
|
24
|
+
import './hi';
|
|
25
|
+
import './id';
|
|
26
|
+
import './it';
|
|
27
|
+
import './ja';
|
|
28
|
+
import './ko';
|
|
29
|
+
import './ms';
|
|
30
|
+
import './pl';
|
|
31
|
+
import './pt';
|
|
32
|
+
import './qu';
|
|
33
|
+
import './ru';
|
|
34
|
+
import './sw';
|
|
35
|
+
import './th';
|
|
36
|
+
import './tl';
|
|
37
|
+
import './tr';
|
|
38
|
+
import './uk';
|
|
39
|
+
import './vi';
|
|
40
|
+
import './zh';
|
|
41
|
+
|
|
42
|
+
// Re-export everything for convenience
|
|
43
|
+
export * from './ar';
|
|
44
|
+
export * from './bn';
|
|
45
|
+
export * from './de';
|
|
46
|
+
export * from './en';
|
|
47
|
+
export * from './es';
|
|
48
|
+
export * from './fr';
|
|
49
|
+
export * from './hi';
|
|
50
|
+
export * from './id';
|
|
51
|
+
export * from './it';
|
|
52
|
+
export * from './ja';
|
|
53
|
+
export * from './ko';
|
|
54
|
+
export * from './ms';
|
|
55
|
+
export * from './pl';
|
|
56
|
+
export * from './pt';
|
|
57
|
+
export * from './qu';
|
|
58
|
+
export * from './ru';
|
|
59
|
+
export * from './sw';
|
|
60
|
+
export * from './th';
|
|
61
|
+
export * from './tl';
|
|
62
|
+
export * from './tr';
|
|
63
|
+
export * from './uk';
|
|
64
|
+
export * from './vi';
|
|
65
|
+
export * from './zh';
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Arabic Language Module
|
|
3
|
+
*
|
|
4
|
+
* Self-registering module for Arabic language support.
|
|
5
|
+
* Importing this module registers Arabic tokenizer and profile.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { registerLanguage } from '../registry';
|
|
9
|
+
import { arabicTokenizer } from '../tokenizers/arabic';
|
|
10
|
+
import { arabicProfile } from '../generators/profiles/arabic';
|
|
11
|
+
|
|
12
|
+
export { arabicTokenizer } from '../tokenizers/arabic';
|
|
13
|
+
export { arabicProfile } from '../generators/profiles/arabic';
|
|
14
|
+
|
|
15
|
+
registerLanguage('ar', arabicTokenizer, arabicProfile);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bengali Language Registration
|
|
3
|
+
*
|
|
4
|
+
* Self-registering language module for Bengali.
|
|
5
|
+
* Import this module to enable Bengali language support.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { registerLanguage } from '../registry';
|
|
9
|
+
import { bengaliTokenizer } from '../tokenizers/bengali';
|
|
10
|
+
import { bengaliProfile } from '../generators/profiles/bengali';
|
|
11
|
+
|
|
12
|
+
// Register Bengali with the tokenizer and profile
|
|
13
|
+
registerLanguage('bn', bengaliTokenizer, bengaliProfile);
|
|
14
|
+
|
|
15
|
+
// Re-export for direct access
|
|
16
|
+
export { bengaliTokenizer, bengaliProfile };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* German Language Module
|
|
3
|
+
*
|
|
4
|
+
* Self-registering module for German language support.
|
|
5
|
+
* Importing this module registers German tokenizer and profile.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { registerLanguage } from '../registry';
|
|
9
|
+
import { germanTokenizer } from '../tokenizers/german';
|
|
10
|
+
import { germanProfile } from '../generators/profiles/german';
|
|
11
|
+
|
|
12
|
+
export { germanTokenizer } from '../tokenizers/german';
|
|
13
|
+
export { germanProfile } from '../generators/profiles/german';
|
|
14
|
+
|
|
15
|
+
registerLanguage('de', germanTokenizer, germanProfile);
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* English Language Module
|
|
3
|
+
*
|
|
4
|
+
* Self-registering module for English language support.
|
|
5
|
+
* Importing this module registers English tokenizer, profile, and patterns.
|
|
6
|
+
*
|
|
7
|
+
* This module enables tree-shaking by directly importing only English-specific
|
|
8
|
+
* code, avoiding the patterns/index.ts barrel which pulls in all languages.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import '@lokascript/semantic/languages/en';
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import { registerLanguage, registerPatterns } from '../registry';
|
|
17
|
+
import { englishTokenizer } from '../tokenizers/english';
|
|
18
|
+
import { englishProfile } from '../generators/profiles/english';
|
|
19
|
+
import { buildEnglishPatterns } from '../patterns/en';
|
|
20
|
+
|
|
21
|
+
// Re-export for direct access
|
|
22
|
+
export { englishTokenizer } from '../tokenizers/english';
|
|
23
|
+
export { englishProfile } from '../generators/profiles/english';
|
|
24
|
+
|
|
25
|
+
// Auto-register when this module is imported
|
|
26
|
+
registerLanguage('en', englishTokenizer, englishProfile);
|
|
27
|
+
|
|
28
|
+
// Register English patterns directly (enables tree-shaking)
|
|
29
|
+
registerPatterns('en', buildEnglishPatterns());
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spanish Language Module
|
|
3
|
+
*
|
|
4
|
+
* Self-registering module for Spanish language support.
|
|
5
|
+
* Importing this module registers Spanish tokenizer and profile.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { registerLanguage } from '../registry';
|
|
9
|
+
import { spanishTokenizer } from '../tokenizers/spanish';
|
|
10
|
+
import { spanishProfile } from '../generators/profiles/spanish';
|
|
11
|
+
|
|
12
|
+
export { spanishTokenizer } from '../tokenizers/spanish';
|
|
13
|
+
export { spanishProfile } from '../generators/profiles/spanish';
|
|
14
|
+
|
|
15
|
+
registerLanguage('es', spanishTokenizer, spanishProfile);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* French Language Module
|
|
3
|
+
*
|
|
4
|
+
* Self-registering module for French language support.
|
|
5
|
+
* Importing this module registers French tokenizer and profile.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { registerLanguage } from '../registry';
|
|
9
|
+
import { frenchTokenizer } from '../tokenizers/french';
|
|
10
|
+
import { frenchProfile } from '../generators/profiles/french';
|
|
11
|
+
|
|
12
|
+
export { frenchTokenizer } from '../tokenizers/french';
|
|
13
|
+
export { frenchProfile } from '../generators/profiles/french';
|
|
14
|
+
|
|
15
|
+
registerLanguage('fr', frenchTokenizer, frenchProfile);
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hindi Language Module
|
|
3
|
+
*
|
|
4
|
+
* Self-registering module that sets up Hindi language support.
|
|
5
|
+
* Import this module to enable Hindi in the semantic parser.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* // Enable Hindi
|
|
10
|
+
* import '@lokascript/semantic/languages/hi';
|
|
11
|
+
*
|
|
12
|
+
* // Or import everything
|
|
13
|
+
* import '@lokascript/semantic/languages/_all';
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { registerLanguage } from '../registry';
|
|
18
|
+
import { hindiTokenizer } from '../tokenizers/hindi';
|
|
19
|
+
import { hindiProfile } from '../generators/profiles/hindi';
|
|
20
|
+
|
|
21
|
+
// Re-export for direct access
|
|
22
|
+
export { hindiTokenizer } from '../tokenizers/hindi';
|
|
23
|
+
export { hindiProfile } from '../generators/profiles/hindi';
|
|
24
|
+
|
|
25
|
+
// Self-register on import
|
|
26
|
+
registerLanguage('hi', hindiTokenizer, hindiProfile);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Indonesian Language Module
|
|
3
|
+
*
|
|
4
|
+
* Self-registering module for Indonesian language support.
|
|
5
|
+
* Importing this module registers Indonesian tokenizer and profile.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { registerLanguage } from '../registry';
|
|
9
|
+
import { indonesianTokenizer } from '../tokenizers/indonesian';
|
|
10
|
+
import { indonesianProfile } from '../generators/profiles/indonesian';
|
|
11
|
+
|
|
12
|
+
export { indonesianTokenizer } from '../tokenizers/indonesian';
|
|
13
|
+
export { indonesianProfile } from '../generators/profiles/indonesian';
|
|
14
|
+
|
|
15
|
+
registerLanguage('id', indonesianTokenizer, indonesianProfile);
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Languages Index
|
|
3
|
+
*
|
|
4
|
+
* Re-exports all languages for the full bundle.
|
|
5
|
+
* For minimal bundles, import specific languages instead.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* // Full bundle - all languages
|
|
10
|
+
* import '@lokascript/semantic/languages';
|
|
11
|
+
*
|
|
12
|
+
* // Minimal bundle - specific languages only
|
|
13
|
+
* import '@lokascript/semantic/languages/en';
|
|
14
|
+
* import '@lokascript/semantic/languages/es';
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
export * from './_all';
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Italian Language Module
|
|
3
|
+
*
|
|
4
|
+
* Self-registering module for Italian language support.
|
|
5
|
+
* Importing this module registers Italian tokenizer and profile.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { registerLanguage } from '../registry';
|
|
9
|
+
import { italianTokenizer } from '../tokenizers/italian';
|
|
10
|
+
import { italianProfile } from '../generators/profiles/italian';
|
|
11
|
+
|
|
12
|
+
export { italianTokenizer } from '../tokenizers/italian';
|
|
13
|
+
export { italianProfile } from '../generators/profiles/italian';
|
|
14
|
+
|
|
15
|
+
registerLanguage('it', italianTokenizer, italianProfile);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Japanese Language Module
|
|
3
|
+
*
|
|
4
|
+
* Self-registering module for Japanese language support.
|
|
5
|
+
* Importing this module registers Japanese tokenizer and profile.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { registerLanguage } from '../registry';
|
|
9
|
+
import { japaneseTokenizer } from '../tokenizers/japanese';
|
|
10
|
+
import { japaneseProfile } from '../generators/profiles/japanese';
|
|
11
|
+
|
|
12
|
+
export { japaneseTokenizer } from '../tokenizers/japanese';
|
|
13
|
+
export { japaneseProfile } from '../generators/profiles/japanese';
|
|
14
|
+
|
|
15
|
+
registerLanguage('ja', japaneseTokenizer, japaneseProfile);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Korean Language Module
|
|
3
|
+
*
|
|
4
|
+
* Self-registering module for Korean language support.
|
|
5
|
+
* Importing this module registers Korean tokenizer and profile.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { registerLanguage } from '../registry';
|
|
9
|
+
import { koreanTokenizer } from '../tokenizers/korean';
|
|
10
|
+
import { koreanProfile } from '../generators/profiles/korean';
|
|
11
|
+
|
|
12
|
+
export { koreanTokenizer } from '../tokenizers/korean';
|
|
13
|
+
export { koreanProfile } from '../generators/profiles/korean';
|
|
14
|
+
|
|
15
|
+
registerLanguage('ko', koreanTokenizer, koreanProfile);
|