@lokascript/semantic 1.2.1 → 2.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/dist/__test-utils__/index.d.ts +6 -0
- package/dist/__test-utils__/index.d.ts.map +1 -0
- package/dist/__test-utils__/test-helpers.d.ts +7 -0
- package/dist/__test-utils__/test-helpers.d.ts.map +1 -0
- package/dist/__types__/test-helpers.d.ts +67 -0
- package/dist/__types__/test-helpers.d.ts.map +1 -0
- package/dist/analysis/index.d.ts +106 -0
- package/dist/analysis/index.d.ts.map +1 -0
- package/dist/ast-builder/command-mappers.d.ts +50 -0
- package/dist/ast-builder/command-mappers.d.ts.map +1 -0
- package/dist/ast-builder/expression-parser/index.d.ts +14 -0
- package/dist/ast-builder/expression-parser/index.d.ts.map +1 -0
- package/dist/ast-builder/expression-parser/parser.d.ts +50 -0
- package/dist/ast-builder/expression-parser/parser.d.ts.map +1 -0
- package/dist/ast-builder/expression-parser/tokenizer.d.ts +44 -0
- package/dist/ast-builder/expression-parser/tokenizer.d.ts.map +1 -0
- package/dist/ast-builder/expression-parser/types.d.ts +111 -0
- package/dist/ast-builder/expression-parser/types.d.ts.map +1 -0
- package/dist/ast-builder/index.d.ts +183 -0
- package/dist/ast-builder/index.d.ts.map +1 -0
- package/dist/ast-builder/value-converters.d.ts +51 -0
- package/dist/ast-builder/value-converters.d.ts.map +1 -0
- package/dist/browser-ar.ar.global.js +2 -2
- package/dist/browser-ar.d.ts +47 -0
- package/dist/browser-ar.d.ts.map +1 -0
- package/dist/browser-bn.bn.global.js +2 -0
- package/dist/browser-bn.d.ts +47 -0
- package/dist/browser-bn.d.ts.map +1 -0
- package/dist/browser-core.core.global.js +2 -2
- package/dist/browser-core.d.ts +83 -0
- package/dist/browser-core.d.ts.map +1 -0
- package/dist/browser-de.d.ts +47 -0
- package/dist/browser-de.d.ts.map +1 -0
- package/dist/browser-de.de.global.js +2 -2
- package/dist/browser-east-asian.d.ts +59 -0
- package/dist/browser-east-asian.d.ts.map +1 -0
- package/dist/browser-east-asian.east-asian.global.js +2 -2
- package/dist/browser-en-tr.d.ts +50 -0
- package/dist/browser-en-tr.d.ts.map +1 -0
- package/dist/browser-en-tr.en-tr.global.js +2 -2
- package/dist/browser-en.d.ts +48 -0
- package/dist/browser-en.d.ts.map +1 -0
- package/dist/browser-en.en.global.js +2 -2
- package/dist/browser-es-en.d.ts +62 -0
- package/dist/browser-es-en.d.ts.map +1 -0
- package/dist/browser-es-en.es-en.global.js +2 -2
- package/dist/browser-es.d.ts +51 -0
- package/dist/browser-es.d.ts.map +1 -0
- package/dist/browser-es.es.global.js +2 -2
- package/dist/browser-fr.d.ts +47 -0
- package/dist/browser-fr.d.ts.map +1 -0
- package/dist/browser-fr.fr.global.js +2 -2
- package/dist/browser-hi.d.ts +47 -0
- package/dist/browser-hi.d.ts.map +1 -0
- package/dist/browser-hi.hi.global.js +2 -0
- package/dist/browser-id.d.ts +47 -0
- package/dist/browser-id.d.ts.map +1 -0
- package/dist/browser-id.id.global.js +2 -2
- package/dist/browser-it.d.ts +47 -0
- package/dist/browser-it.d.ts.map +1 -0
- package/dist/browser-it.it.global.js +2 -0
- package/dist/browser-ja.d.ts +47 -0
- package/dist/browser-ja.d.ts.map +1 -0
- package/dist/browser-ja.ja.global.js +2 -2
- package/dist/browser-ko.d.ts +47 -0
- package/dist/browser-ko.d.ts.map +1 -0
- package/dist/browser-ko.ko.global.js +2 -2
- package/dist/browser-lazy.d.ts +52 -0
- package/dist/browser-lazy.d.ts.map +1 -0
- package/dist/browser-lazy.lazy.global.js +2 -2
- package/dist/browser-ms.d.ts +47 -0
- package/dist/browser-ms.d.ts.map +1 -0
- package/dist/browser-ms.ms.global.js +2 -0
- package/dist/browser-pl.d.ts +47 -0
- package/dist/browser-pl.d.ts.map +1 -0
- package/dist/browser-pl.pl.global.js +2 -0
- package/dist/browser-priority.d.ts +83 -0
- package/dist/browser-priority.d.ts.map +1 -0
- package/dist/browser-priority.priority.global.js +2 -2
- package/dist/browser-pt.d.ts +47 -0
- package/dist/browser-pt.d.ts.map +1 -0
- package/dist/browser-pt.pt.global.js +2 -2
- package/dist/browser-qu.d.ts +47 -0
- package/dist/browser-qu.d.ts.map +1 -0
- package/dist/browser-qu.qu.global.js +2 -2
- package/dist/browser-ru.d.ts +47 -0
- package/dist/browser-ru.d.ts.map +1 -0
- package/dist/browser-ru.ru.global.js +2 -0
- package/dist/browser-sw.d.ts +47 -0
- package/dist/browser-sw.d.ts.map +1 -0
- package/dist/browser-sw.sw.global.js +2 -2
- package/dist/browser-th.d.ts +47 -0
- package/dist/browser-th.d.ts.map +1 -0
- package/dist/browser-th.th.global.js +2 -0
- package/dist/browser-tl.d.ts +47 -0
- package/dist/browser-tl.d.ts.map +1 -0
- package/dist/browser-tl.tl.global.js +2 -0
- package/dist/browser-tr.d.ts +47 -0
- package/dist/browser-tr.d.ts.map +1 -0
- package/dist/browser-tr.tr.global.js +2 -2
- package/dist/browser-uk.d.ts +47 -0
- package/dist/browser-uk.d.ts.map +1 -0
- package/dist/browser-uk.uk.global.js +2 -0
- package/dist/browser-vi.d.ts +47 -0
- package/dist/browser-vi.d.ts.map +1 -0
- package/dist/browser-vi.vi.global.js +2 -0
- package/dist/browser-western.d.ts +67 -0
- package/dist/browser-western.d.ts.map +1 -0
- package/dist/browser-western.western.global.js +2 -2
- package/dist/browser-zh.d.ts +47 -0
- package/dist/browser-zh.d.ts.map +1 -0
- package/dist/browser-zh.zh.global.js +2 -2
- package/dist/browser.d.ts +69 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.global.js +2 -2
- package/dist/browser.global.js.map +1 -1
- package/dist/cache/index.d.ts +7 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/semantic-cache.d.ts +138 -0
- package/dist/cache/semantic-cache.d.ts.map +1 -0
- package/dist/core-bridge.d.ts +154 -0
- package/dist/core-bridge.d.ts.map +1 -0
- package/dist/core.d.ts +24 -1235
- package/dist/core.d.ts.map +1 -0
- package/dist/core.js +6433 -1731
- package/dist/core.js.map +1 -1
- package/dist/explicit/converter.d.ts +98 -0
- package/dist/explicit/converter.d.ts.map +1 -0
- package/dist/explicit/index.d.ts +10 -0
- package/dist/explicit/index.d.ts.map +1 -0
- package/dist/explicit/parser.d.ts +25 -0
- package/dist/explicit/parser.d.ts.map +1 -0
- package/dist/explicit/renderer.d.ts +82 -0
- package/dist/explicit/renderer.d.ts.map +1 -0
- package/dist/generators/command-schemas.d.ts +358 -0
- package/dist/generators/command-schemas.d.ts.map +1 -0
- package/dist/generators/event-handlers-sov.d.ts +91 -0
- package/dist/generators/event-handlers-sov.d.ts.map +1 -0
- package/dist/generators/event-handlers-vso.d.ts +69 -0
- package/dist/generators/event-handlers-vso.d.ts.map +1 -0
- package/dist/generators/index.d.ts +12 -0
- package/dist/generators/index.d.ts.map +1 -0
- package/dist/generators/language-profiles.d.ts +65 -0
- package/dist/generators/language-profiles.d.ts.map +1 -0
- package/dist/generators/pattern-generator.d.ts +81 -0
- package/dist/generators/pattern-generator.d.ts.map +1 -0
- package/dist/generators/profiles/arabic.d.ts +9 -0
- package/dist/generators/profiles/arabic.d.ts.map +1 -0
- package/dist/generators/profiles/bengali.d.ts +9 -0
- package/dist/generators/profiles/bengali.d.ts.map +1 -0
- package/dist/generators/profiles/chinese.d.ts +9 -0
- package/dist/generators/profiles/chinese.d.ts.map +1 -0
- package/dist/generators/profiles/english.d.ts +8 -0
- package/dist/generators/profiles/english.d.ts.map +1 -0
- package/dist/generators/profiles/french.d.ts +9 -0
- package/dist/generators/profiles/french.d.ts.map +1 -0
- package/dist/generators/profiles/german.d.ts +9 -0
- package/dist/generators/profiles/german.d.ts.map +1 -0
- package/dist/generators/profiles/hebrew.d.ts +10 -0
- package/dist/generators/profiles/hebrew.d.ts.map +1 -0
- package/dist/generators/profiles/hindi.d.ts +9 -0
- package/dist/generators/profiles/hindi.d.ts.map +1 -0
- package/dist/generators/profiles/index.d.ts +36 -0
- package/dist/generators/profiles/index.d.ts.map +1 -0
- package/dist/generators/profiles/indonesian.d.ts +9 -0
- package/dist/generators/profiles/indonesian.d.ts.map +1 -0
- package/dist/generators/profiles/italian.d.ts +10 -0
- package/dist/generators/profiles/italian.d.ts.map +1 -0
- package/dist/generators/profiles/japanese.d.ts +9 -0
- package/dist/generators/profiles/japanese.d.ts.map +1 -0
- package/dist/generators/profiles/korean.d.ts +9 -0
- package/dist/generators/profiles/korean.d.ts.map +1 -0
- package/dist/generators/profiles/marker-templates.d.ts +119 -0
- package/dist/generators/profiles/marker-templates.d.ts.map +1 -0
- package/dist/generators/profiles/ms.d.ts +8 -0
- package/dist/generators/profiles/ms.d.ts.map +1 -0
- package/dist/generators/profiles/polish.d.ts +10 -0
- package/dist/generators/profiles/polish.d.ts.map +1 -0
- package/dist/generators/profiles/portuguese.d.ts +9 -0
- package/dist/generators/profiles/portuguese.d.ts.map +1 -0
- package/dist/generators/profiles/quechua.d.ts +9 -0
- package/dist/generators/profiles/quechua.d.ts.map +1 -0
- package/dist/generators/profiles/russian.d.ts +10 -0
- package/dist/generators/profiles/russian.d.ts.map +1 -0
- package/dist/generators/profiles/spanish.d.ts +9 -0
- package/dist/generators/profiles/spanish.d.ts.map +1 -0
- package/dist/generators/profiles/spanishMexico.d.ts +19 -0
- package/dist/generators/profiles/spanishMexico.d.ts.map +1 -0
- package/dist/generators/profiles/swahili.d.ts +9 -0
- package/dist/generators/profiles/swahili.d.ts.map +1 -0
- package/dist/generators/profiles/thai.d.ts +9 -0
- package/dist/generators/profiles/thai.d.ts.map +1 -0
- package/dist/generators/profiles/tl.d.ts +8 -0
- package/dist/generators/profiles/tl.d.ts.map +1 -0
- package/dist/generators/profiles/turkish.d.ts +9 -0
- package/dist/generators/profiles/turkish.d.ts.map +1 -0
- package/dist/generators/profiles/types.d.ts +170 -0
- package/dist/generators/profiles/types.d.ts.map +1 -0
- package/dist/generators/profiles/ukrainian.d.ts +10 -0
- package/dist/generators/profiles/ukrainian.d.ts.map +1 -0
- package/dist/generators/profiles/vietnamese.d.ts +10 -0
- package/dist/generators/profiles/vietnamese.d.ts.map +1 -0
- package/dist/generators/schema-error-codes.d.ts +60 -0
- package/dist/generators/schema-error-codes.d.ts.map +1 -0
- package/dist/generators/schema-validator.d.ts +77 -0
- package/dist/generators/schema-validator.d.ts.map +1 -0
- package/dist/index.cjs +5451 -2522
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +50 -3436
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5448 -2526
- package/dist/index.js.map +1 -1
- package/dist/interchange/from-semantic.d.ts +23 -0
- package/dist/interchange/from-semantic.d.ts.map +1 -0
- package/dist/interchange/index.d.ts +7 -0
- package/dist/interchange/index.d.ts.map +1 -0
- package/dist/interchange/types.d.ts +132 -0
- package/dist/interchange/types.d.ts.map +1 -0
- package/dist/language-building-schema.d.ts +163 -0
- package/dist/language-building-schema.d.ts.map +1 -0
- package/dist/language-loader.d.ts +126 -0
- package/dist/language-loader.d.ts.map +1 -0
- package/dist/languages/_all.d.ts +66 -0
- package/dist/languages/_all.d.ts.map +1 -0
- package/dist/languages/ar.d.ts +6 -75
- package/dist/languages/ar.d.ts.map +1 -0
- package/dist/languages/ar.js +65 -14
- package/dist/languages/ar.js.map +1 -1
- package/dist/languages/bn.d.ts +10 -0
- package/dist/languages/bn.d.ts.map +1 -0
- package/dist/languages/bn.js +1163 -0
- package/dist/languages/bn.js.map +1 -0
- package/dist/languages/de.d.ts +6 -35
- package/dist/languages/de.d.ts.map +1 -0
- package/dist/languages/de.js +260 -22
- package/dist/languages/de.js.map +1 -1
- package/dist/languages/en.d.ts +13 -40
- package/dist/languages/en.d.ts.map +1 -0
- package/dist/languages/en.js +788 -241
- package/dist/languages/en.js.map +1 -1
- package/dist/languages/es-MX.d.ts +24 -0
- package/dist/languages/es-MX.d.ts.map +1 -0
- package/dist/languages/es-MX.js +1729 -0
- package/dist/languages/es-MX.js.map +1 -0
- package/dist/languages/es.d.ts +6 -49
- package/dist/languages/es.d.ts.map +1 -0
- package/dist/languages/es.js +60 -13
- package/dist/languages/es.js.map +1 -1
- package/dist/languages/fr.d.ts +6 -34
- package/dist/languages/fr.d.ts.map +1 -0
- package/dist/languages/fr.js +309 -22
- package/dist/languages/fr.js.map +1 -1
- package/dist/languages/he.d.ts +9 -0
- package/dist/languages/he.d.ts.map +1 -0
- package/dist/languages/he.js +1378 -0
- package/dist/languages/he.js.map +1 -0
- package/dist/languages/hi.d.ts +18 -0
- package/dist/languages/hi.d.ts.map +1 -0
- package/dist/languages/hi.js +1209 -0
- package/dist/languages/hi.js.map +1 -0
- package/dist/languages/id.d.ts +6 -32
- package/dist/languages/id.d.ts.map +1 -0
- package/dist/languages/id.js +60 -13
- package/dist/languages/id.js.map +1 -1
- package/dist/languages/index.d.ts +18 -0
- package/dist/languages/index.d.ts.map +1 -0
- package/dist/languages/it.d.ts +9 -0
- package/dist/languages/it.d.ts.map +1 -0
- package/dist/languages/it.js +1647 -0
- package/dist/languages/it.js.map +1 -0
- package/dist/languages/ja.d.ts +6 -50
- package/dist/languages/ja.d.ts.map +1 -0
- package/dist/languages/ja.js +60 -13
- package/dist/languages/ja.js.map +1 -1
- package/dist/languages/ko.d.ts +6 -55
- package/dist/languages/ko.d.ts.map +1 -0
- package/dist/languages/ko.js +64 -13
- package/dist/languages/ko.js.map +1 -1
- package/dist/languages/ms.d.ts +10 -0
- package/dist/languages/ms.d.ts.map +1 -0
- package/dist/languages/ms.js +1088 -0
- package/dist/languages/ms.js.map +1 -0
- package/dist/languages/pl.d.ts +12 -0
- package/dist/languages/pl.d.ts.map +1 -0
- package/dist/languages/pl.js +1586 -0
- package/dist/languages/pl.js.map +1 -0
- package/dist/languages/pt.d.ts +6 -34
- package/dist/languages/pt.d.ts.map +1 -0
- package/dist/languages/pt.js +344 -22
- package/dist/languages/pt.js.map +1 -1
- package/dist/languages/qu.d.ts +6 -44
- package/dist/languages/qu.d.ts.map +1 -0
- package/dist/languages/qu.js +105 -28
- package/dist/languages/qu.js.map +1 -1
- package/dist/languages/ru.d.ts +18 -0
- package/dist/languages/ru.d.ts.map +1 -0
- package/dist/languages/ru.js +1705 -0
- package/dist/languages/ru.js.map +1 -0
- package/dist/languages/sw.d.ts +6 -32
- package/dist/languages/sw.d.ts.map +1 -0
- package/dist/languages/sw.js +69 -17
- package/dist/languages/sw.js.map +1 -1
- package/dist/languages/th.d.ts +10 -0
- package/dist/languages/th.d.ts.map +1 -0
- package/dist/languages/th.js +1123 -0
- package/dist/languages/th.js.map +1 -0
- package/dist/languages/tl.d.ts +10 -0
- package/dist/languages/tl.d.ts.map +1 -0
- package/dist/languages/tl.js +1086 -0
- package/dist/languages/tl.js.map +1 -0
- package/dist/languages/tr.d.ts +6 -50
- package/dist/languages/tr.d.ts.map +1 -0
- package/dist/languages/tr.js +67 -16
- package/dist/languages/tr.js.map +1 -1
- package/dist/languages/uk.d.ts +18 -0
- package/dist/languages/uk.d.ts.map +1 -0
- package/dist/languages/uk.js +1691 -0
- package/dist/languages/uk.js.map +1 -0
- package/dist/languages/vi.d.ts +10 -0
- package/dist/languages/vi.d.ts.map +1 -0
- package/dist/languages/vi.js +1266 -0
- package/dist/languages/vi.js.map +1 -0
- package/dist/languages/zh.d.ts +6 -55
- package/dist/languages/zh.d.ts.map +1 -0
- package/dist/languages/zh.js +59 -13
- package/dist/languages/zh.js.map +1 -1
- package/dist/parser/index.d.ts +8 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/pattern-matcher.d.ts +188 -0
- package/dist/parser/pattern-matcher.d.ts.map +1 -0
- package/dist/parser/semantic-parser.d.ts +238 -0
- package/dist/parser/semantic-parser.d.ts.map +1 -0
- package/dist/parser/utils/index.d.ts +9 -0
- package/dist/parser/utils/index.d.ts.map +1 -0
- package/dist/parser/utils/marker-resolution.d.ts +57 -0
- package/dist/parser/utils/marker-resolution.d.ts.map +1 -0
- package/dist/parser/utils/possessive-keywords.d.ts +31 -0
- package/dist/parser/utils/possessive-keywords.d.ts.map +1 -0
- package/dist/parser/utils/role-positioning.d.ts +42 -0
- package/dist/parser/utils/role-positioning.d.ts.map +1 -0
- package/dist/parser/utils/type-validation.d.ts +63 -0
- package/dist/parser/utils/type-validation.d.ts.map +1 -0
- package/dist/patterns/add/ar.d.ts +12 -0
- package/dist/patterns/add/ar.d.ts.map +1 -0
- package/dist/patterns/add/bn.d.ts +8 -0
- package/dist/patterns/add/bn.d.ts.map +1 -0
- package/dist/patterns/add/hi.d.ts +8 -0
- package/dist/patterns/add/hi.d.ts.map +1 -0
- package/dist/patterns/add/index.d.ts +31 -0
- package/dist/patterns/add/index.d.ts.map +1 -0
- package/dist/patterns/add/it.d.ts +11 -0
- package/dist/patterns/add/it.d.ts.map +1 -0
- package/dist/patterns/add/ja.d.ts +12 -0
- package/dist/patterns/add/ja.d.ts.map +1 -0
- package/dist/patterns/add/ko.d.ts +12 -0
- package/dist/patterns/add/ko.d.ts.map +1 -0
- package/dist/patterns/add/pl.d.ts +12 -0
- package/dist/patterns/add/pl.d.ts.map +1 -0
- package/dist/patterns/add/qu.d.ts +9 -0
- package/dist/patterns/add/qu.d.ts.map +1 -0
- package/dist/patterns/add/ru.d.ts +12 -0
- package/dist/patterns/add/ru.d.ts.map +1 -0
- package/dist/patterns/add/th.d.ts +8 -0
- package/dist/patterns/add/th.d.ts.map +1 -0
- package/dist/patterns/add/tr.d.ts +12 -0
- package/dist/patterns/add/tr.d.ts.map +1 -0
- package/dist/patterns/add/uk.d.ts +12 -0
- package/dist/patterns/add/uk.d.ts.map +1 -0
- package/dist/patterns/add/vi.d.ts +11 -0
- package/dist/patterns/add/vi.d.ts.map +1 -0
- package/dist/patterns/add/zh.d.ts +12 -0
- package/dist/patterns/add/zh.d.ts.map +1 -0
- package/dist/patterns/builders.d.ts +52 -0
- package/dist/patterns/builders.d.ts.map +1 -0
- package/dist/patterns/decrement/bn.d.ts +8 -0
- package/dist/patterns/decrement/bn.d.ts.map +1 -0
- package/dist/patterns/decrement/de.d.ts +12 -0
- package/dist/patterns/decrement/de.d.ts.map +1 -0
- package/dist/patterns/decrement/hi.d.ts +8 -0
- package/dist/patterns/decrement/hi.d.ts.map +1 -0
- package/dist/patterns/decrement/index.d.ts +28 -0
- package/dist/patterns/decrement/index.d.ts.map +1 -0
- package/dist/patterns/decrement/it.d.ts +11 -0
- package/dist/patterns/decrement/it.d.ts.map +1 -0
- package/dist/patterns/decrement/pl.d.ts +12 -0
- package/dist/patterns/decrement/pl.d.ts.map +1 -0
- package/dist/patterns/decrement/ru.d.ts +12 -0
- package/dist/patterns/decrement/ru.d.ts.map +1 -0
- package/dist/patterns/decrement/th.d.ts +8 -0
- package/dist/patterns/decrement/th.d.ts.map +1 -0
- package/dist/patterns/decrement/tr.d.ts +12 -0
- package/dist/patterns/decrement/tr.d.ts.map +1 -0
- package/dist/patterns/decrement/uk.d.ts +12 -0
- package/dist/patterns/decrement/uk.d.ts.map +1 -0
- package/dist/patterns/decrement/vi.d.ts +11 -0
- package/dist/patterns/decrement/vi.d.ts.map +1 -0
- package/dist/patterns/decrement/zh.d.ts +12 -0
- package/dist/patterns/decrement/zh.d.ts.map +1 -0
- package/dist/patterns/en.d.ts +13 -0
- package/dist/patterns/en.d.ts.map +1 -0
- package/dist/patterns/event-handler/ar.d.ts +12 -0
- package/dist/patterns/event-handler/ar.d.ts.map +1 -0
- package/dist/patterns/event-handler/bn.d.ts +8 -0
- package/dist/patterns/event-handler/bn.d.ts.map +1 -0
- package/dist/patterns/event-handler/de.d.ts +11 -0
- package/dist/patterns/event-handler/de.d.ts.map +1 -0
- package/dist/patterns/event-handler/en.d.ts +11 -0
- package/dist/patterns/event-handler/en.d.ts.map +1 -0
- package/dist/patterns/event-handler/es.d.ts +11 -0
- package/dist/patterns/event-handler/es.d.ts.map +1 -0
- package/dist/patterns/event-handler/fr.d.ts +11 -0
- package/dist/patterns/event-handler/fr.d.ts.map +1 -0
- package/dist/patterns/event-handler/he.d.ts +12 -0
- package/dist/patterns/event-handler/he.d.ts.map +1 -0
- package/dist/patterns/event-handler/hi.d.ts +9 -0
- package/dist/patterns/event-handler/hi.d.ts.map +1 -0
- package/dist/patterns/event-handler/id.d.ts +11 -0
- package/dist/patterns/event-handler/id.d.ts.map +1 -0
- package/dist/patterns/event-handler/index.d.ts +41 -0
- package/dist/patterns/event-handler/index.d.ts.map +1 -0
- package/dist/patterns/event-handler/it.d.ts +11 -0
- package/dist/patterns/event-handler/it.d.ts.map +1 -0
- package/dist/patterns/event-handler/ja.d.ts +12 -0
- package/dist/patterns/event-handler/ja.d.ts.map +1 -0
- package/dist/patterns/event-handler/ko.d.ts +12 -0
- package/dist/patterns/event-handler/ko.d.ts.map +1 -0
- package/dist/patterns/event-handler/ms.d.ts +14 -0
- package/dist/patterns/event-handler/ms.d.ts.map +1 -0
- package/dist/patterns/event-handler/pl.d.ts +12 -0
- package/dist/patterns/event-handler/pl.d.ts.map +1 -0
- package/dist/patterns/event-handler/pt.d.ts +11 -0
- package/dist/patterns/event-handler/pt.d.ts.map +1 -0
- package/dist/patterns/event-handler/qu.d.ts +11 -0
- package/dist/patterns/event-handler/qu.d.ts.map +1 -0
- package/dist/patterns/event-handler/ru.d.ts +12 -0
- package/dist/patterns/event-handler/ru.d.ts.map +1 -0
- package/dist/patterns/event-handler/shared.d.ts +15 -0
- package/dist/patterns/event-handler/shared.d.ts.map +1 -0
- package/dist/patterns/event-handler/sw.d.ts +11 -0
- package/dist/patterns/event-handler/sw.d.ts.map +1 -0
- package/dist/patterns/event-handler/th.d.ts +8 -0
- package/dist/patterns/event-handler/th.d.ts.map +1 -0
- package/dist/patterns/event-handler/tl.d.ts +9 -0
- package/dist/patterns/event-handler/tl.d.ts.map +1 -0
- package/dist/patterns/event-handler/tr.d.ts +12 -0
- package/dist/patterns/event-handler/tr.d.ts.map +1 -0
- package/dist/patterns/event-handler/uk.d.ts +12 -0
- package/dist/patterns/event-handler/uk.d.ts.map +1 -0
- package/dist/patterns/event-handler/vi.d.ts +11 -0
- package/dist/patterns/event-handler/vi.d.ts.map +1 -0
- package/dist/patterns/event-handler/zh.d.ts +11 -0
- package/dist/patterns/event-handler/zh.d.ts.map +1 -0
- package/dist/patterns/get/ar.d.ts +12 -0
- package/dist/patterns/get/ar.d.ts.map +1 -0
- package/dist/patterns/get/bn.d.ts +8 -0
- package/dist/patterns/get/bn.d.ts.map +1 -0
- package/dist/patterns/get/de.d.ts +12 -0
- package/dist/patterns/get/de.d.ts.map +1 -0
- package/dist/patterns/get/hi.d.ts +8 -0
- package/dist/patterns/get/hi.d.ts.map +1 -0
- package/dist/patterns/get/index.d.ts +29 -0
- package/dist/patterns/get/index.d.ts.map +1 -0
- package/dist/patterns/get/it.d.ts +11 -0
- package/dist/patterns/get/it.d.ts.map +1 -0
- package/dist/patterns/get/ja.d.ts +12 -0
- package/dist/patterns/get/ja.d.ts.map +1 -0
- package/dist/patterns/get/ko.d.ts +12 -0
- package/dist/patterns/get/ko.d.ts.map +1 -0
- package/dist/patterns/get/pl.d.ts +12 -0
- package/dist/patterns/get/pl.d.ts.map +1 -0
- package/dist/patterns/get/ru.d.ts +12 -0
- package/dist/patterns/get/ru.d.ts.map +1 -0
- package/dist/patterns/get/th.d.ts +8 -0
- package/dist/patterns/get/th.d.ts.map +1 -0
- package/dist/patterns/get/uk.d.ts +12 -0
- package/dist/patterns/get/uk.d.ts.map +1 -0
- package/dist/patterns/get/vi.d.ts +11 -0
- package/dist/patterns/get/vi.d.ts.map +1 -0
- package/dist/patterns/grammar-transformed/index.d.ts +20 -0
- package/dist/patterns/grammar-transformed/index.d.ts.map +1 -0
- package/dist/patterns/grammar-transformed/ja.d.ts +12 -0
- package/dist/patterns/grammar-transformed/ja.d.ts.map +1 -0
- package/dist/patterns/grammar-transformed/ko.d.ts +12 -0
- package/dist/patterns/grammar-transformed/ko.d.ts.map +1 -0
- package/dist/patterns/grammar-transformed/tr.d.ts +12 -0
- package/dist/patterns/grammar-transformed/tr.d.ts.map +1 -0
- package/dist/patterns/hide/ar.d.ts +12 -0
- package/dist/patterns/hide/ar.d.ts.map +1 -0
- package/dist/patterns/hide/bn.d.ts +8 -0
- package/dist/patterns/hide/bn.d.ts.map +1 -0
- package/dist/patterns/hide/de.d.ts +12 -0
- package/dist/patterns/hide/de.d.ts.map +1 -0
- package/dist/patterns/hide/hi.d.ts +8 -0
- package/dist/patterns/hide/hi.d.ts.map +1 -0
- package/dist/patterns/hide/index.d.ts +31 -0
- package/dist/patterns/hide/index.d.ts.map +1 -0
- package/dist/patterns/hide/it.d.ts +11 -0
- package/dist/patterns/hide/it.d.ts.map +1 -0
- package/dist/patterns/hide/ja.d.ts +12 -0
- package/dist/patterns/hide/ja.d.ts.map +1 -0
- package/dist/patterns/hide/ko.d.ts +12 -0
- package/dist/patterns/hide/ko.d.ts.map +1 -0
- package/dist/patterns/hide/pl.d.ts +12 -0
- package/dist/patterns/hide/pl.d.ts.map +1 -0
- package/dist/patterns/hide/ru.d.ts +12 -0
- package/dist/patterns/hide/ru.d.ts.map +1 -0
- package/dist/patterns/hide/th.d.ts +8 -0
- package/dist/patterns/hide/th.d.ts.map +1 -0
- package/dist/patterns/hide/tr.d.ts +12 -0
- package/dist/patterns/hide/tr.d.ts.map +1 -0
- package/dist/patterns/hide/uk.d.ts +12 -0
- package/dist/patterns/hide/uk.d.ts.map +1 -0
- package/dist/patterns/hide/vi.d.ts +11 -0
- package/dist/patterns/hide/vi.d.ts.map +1 -0
- package/dist/patterns/hide/zh.d.ts +12 -0
- package/dist/patterns/hide/zh.d.ts.map +1 -0
- package/dist/patterns/increment/bn.d.ts +8 -0
- package/dist/patterns/increment/bn.d.ts.map +1 -0
- package/dist/patterns/increment/de.d.ts +12 -0
- package/dist/patterns/increment/de.d.ts.map +1 -0
- package/dist/patterns/increment/hi.d.ts +8 -0
- package/dist/patterns/increment/hi.d.ts.map +1 -0
- package/dist/patterns/increment/index.d.ts +28 -0
- package/dist/patterns/increment/index.d.ts.map +1 -0
- package/dist/patterns/increment/it.d.ts +11 -0
- package/dist/patterns/increment/it.d.ts.map +1 -0
- package/dist/patterns/increment/pl.d.ts +12 -0
- package/dist/patterns/increment/pl.d.ts.map +1 -0
- package/dist/patterns/increment/ru.d.ts +12 -0
- package/dist/patterns/increment/ru.d.ts.map +1 -0
- package/dist/patterns/increment/th.d.ts +8 -0
- package/dist/patterns/increment/th.d.ts.map +1 -0
- package/dist/patterns/increment/tr.d.ts +12 -0
- package/dist/patterns/increment/tr.d.ts.map +1 -0
- package/dist/patterns/increment/uk.d.ts +12 -0
- package/dist/patterns/increment/uk.d.ts.map +1 -0
- package/dist/patterns/increment/vi.d.ts +11 -0
- package/dist/patterns/increment/vi.d.ts.map +1 -0
- package/dist/patterns/increment/zh.d.ts +12 -0
- package/dist/patterns/increment/zh.d.ts.map +1 -0
- package/dist/patterns/index.d.ts +21 -0
- package/dist/patterns/index.d.ts.map +1 -0
- package/dist/patterns/languages/en/control-flow.d.ts +40 -0
- package/dist/patterns/languages/en/control-flow.d.ts.map +1 -0
- package/dist/patterns/languages/en/fetch.d.ts +22 -0
- package/dist/patterns/languages/en/fetch.d.ts.map +1 -0
- package/dist/patterns/languages/en/index.d.ts +22 -0
- package/dist/patterns/languages/en/index.d.ts.map +1 -0
- package/dist/patterns/languages/en/repeat.d.ts +22 -0
- package/dist/patterns/languages/en/repeat.d.ts.map +1 -0
- package/dist/patterns/languages/en/set.d.ts +23 -0
- package/dist/patterns/languages/en/set.d.ts.map +1 -0
- package/dist/patterns/languages/en/swap.d.ts +19 -0
- package/dist/patterns/languages/en/swap.d.ts.map +1 -0
- package/dist/patterns/languages/en/temporal.d.ts +24 -0
- package/dist/patterns/languages/en/temporal.d.ts.map +1 -0
- package/dist/patterns/put/ar.d.ts +12 -0
- package/dist/patterns/put/ar.d.ts.map +1 -0
- package/dist/patterns/put/bn.d.ts +8 -0
- package/dist/patterns/put/bn.d.ts.map +1 -0
- package/dist/patterns/put/en.d.ts +11 -0
- package/dist/patterns/put/en.d.ts.map +1 -0
- package/dist/patterns/put/es.d.ts +11 -0
- package/dist/patterns/put/es.d.ts.map +1 -0
- package/dist/patterns/put/hi.d.ts +8 -0
- package/dist/patterns/put/hi.d.ts.map +1 -0
- package/dist/patterns/put/id.d.ts +15 -0
- package/dist/patterns/put/id.d.ts.map +1 -0
- package/dist/patterns/put/index.d.ts +33 -0
- package/dist/patterns/put/index.d.ts.map +1 -0
- package/dist/patterns/put/it.d.ts +11 -0
- package/dist/patterns/put/it.d.ts.map +1 -0
- package/dist/patterns/put/ja.d.ts +12 -0
- package/dist/patterns/put/ja.d.ts.map +1 -0
- package/dist/patterns/put/ko.d.ts +12 -0
- package/dist/patterns/put/ko.d.ts.map +1 -0
- package/dist/patterns/put/pl.d.ts +12 -0
- package/dist/patterns/put/pl.d.ts.map +1 -0
- package/dist/patterns/put/ru.d.ts +12 -0
- package/dist/patterns/put/ru.d.ts.map +1 -0
- package/dist/patterns/put/th.d.ts +8 -0
- package/dist/patterns/put/th.d.ts.map +1 -0
- package/dist/patterns/put/tr.d.ts +12 -0
- package/dist/patterns/put/tr.d.ts.map +1 -0
- package/dist/patterns/put/uk.d.ts +12 -0
- package/dist/patterns/put/uk.d.ts.map +1 -0
- package/dist/patterns/put/vi.d.ts +11 -0
- package/dist/patterns/put/vi.d.ts.map +1 -0
- package/dist/patterns/put/zh.d.ts +12 -0
- package/dist/patterns/put/zh.d.ts.map +1 -0
- package/dist/patterns/registry.d.ts +53 -0
- package/dist/patterns/registry.d.ts.map +1 -0
- package/dist/patterns/remove/ar.d.ts +12 -0
- package/dist/patterns/remove/ar.d.ts.map +1 -0
- package/dist/patterns/remove/bn.d.ts +8 -0
- package/dist/patterns/remove/bn.d.ts.map +1 -0
- package/dist/patterns/remove/hi.d.ts +8 -0
- package/dist/patterns/remove/hi.d.ts.map +1 -0
- package/dist/patterns/remove/index.d.ts +31 -0
- package/dist/patterns/remove/index.d.ts.map +1 -0
- package/dist/patterns/remove/it.d.ts +11 -0
- package/dist/patterns/remove/it.d.ts.map +1 -0
- package/dist/patterns/remove/ja.d.ts +12 -0
- package/dist/patterns/remove/ja.d.ts.map +1 -0
- package/dist/patterns/remove/ko.d.ts +12 -0
- package/dist/patterns/remove/ko.d.ts.map +1 -0
- package/dist/patterns/remove/pl.d.ts +12 -0
- package/dist/patterns/remove/pl.d.ts.map +1 -0
- package/dist/patterns/remove/qu.d.ts +9 -0
- package/dist/patterns/remove/qu.d.ts.map +1 -0
- package/dist/patterns/remove/ru.d.ts +12 -0
- package/dist/patterns/remove/ru.d.ts.map +1 -0
- package/dist/patterns/remove/th.d.ts +8 -0
- package/dist/patterns/remove/th.d.ts.map +1 -0
- package/dist/patterns/remove/tr.d.ts +12 -0
- package/dist/patterns/remove/tr.d.ts.map +1 -0
- package/dist/patterns/remove/uk.d.ts +12 -0
- package/dist/patterns/remove/uk.d.ts.map +1 -0
- package/dist/patterns/remove/vi.d.ts +11 -0
- package/dist/patterns/remove/vi.d.ts.map +1 -0
- package/dist/patterns/remove/zh.d.ts +12 -0
- package/dist/patterns/remove/zh.d.ts.map +1 -0
- package/dist/patterns/set/ar.d.ts +12 -0
- package/dist/patterns/set/ar.d.ts.map +1 -0
- package/dist/patterns/set/bn.d.ts +8 -0
- package/dist/patterns/set/bn.d.ts.map +1 -0
- package/dist/patterns/set/de.d.ts +12 -0
- package/dist/patterns/set/de.d.ts.map +1 -0
- package/dist/patterns/set/es.d.ts +12 -0
- package/dist/patterns/set/es.d.ts.map +1 -0
- package/dist/patterns/set/fr.d.ts +12 -0
- package/dist/patterns/set/fr.d.ts.map +1 -0
- package/dist/patterns/set/hi.d.ts +8 -0
- package/dist/patterns/set/hi.d.ts.map +1 -0
- package/dist/patterns/set/id.d.ts +12 -0
- package/dist/patterns/set/id.d.ts.map +1 -0
- package/dist/patterns/set/index.d.ts +35 -0
- package/dist/patterns/set/index.d.ts.map +1 -0
- package/dist/patterns/set/it.d.ts +11 -0
- package/dist/patterns/set/it.d.ts.map +1 -0
- package/dist/patterns/set/ja.d.ts +12 -0
- package/dist/patterns/set/ja.d.ts.map +1 -0
- package/dist/patterns/set/ko.d.ts +12 -0
- package/dist/patterns/set/ko.d.ts.map +1 -0
- package/dist/patterns/set/pl.d.ts +12 -0
- package/dist/patterns/set/pl.d.ts.map +1 -0
- package/dist/patterns/set/pt.d.ts +12 -0
- package/dist/patterns/set/pt.d.ts.map +1 -0
- package/dist/patterns/set/ru.d.ts +12 -0
- package/dist/patterns/set/ru.d.ts.map +1 -0
- package/dist/patterns/set/th.d.ts +8 -0
- package/dist/patterns/set/th.d.ts.map +1 -0
- package/dist/patterns/set/tr.d.ts +12 -0
- package/dist/patterns/set/tr.d.ts.map +1 -0
- package/dist/patterns/set/uk.d.ts +12 -0
- package/dist/patterns/set/uk.d.ts.map +1 -0
- package/dist/patterns/set/vi.d.ts +11 -0
- package/dist/patterns/set/vi.d.ts.map +1 -0
- package/dist/patterns/set/zh.d.ts +12 -0
- package/dist/patterns/set/zh.d.ts.map +1 -0
- package/dist/patterns/show/ar.d.ts +12 -0
- package/dist/patterns/show/ar.d.ts.map +1 -0
- package/dist/patterns/show/bn.d.ts +8 -0
- package/dist/patterns/show/bn.d.ts.map +1 -0
- package/dist/patterns/show/de.d.ts +12 -0
- package/dist/patterns/show/de.d.ts.map +1 -0
- package/dist/patterns/show/fr.d.ts +12 -0
- package/dist/patterns/show/fr.d.ts.map +1 -0
- package/dist/patterns/show/hi.d.ts +8 -0
- package/dist/patterns/show/hi.d.ts.map +1 -0
- package/dist/patterns/show/index.d.ts +32 -0
- package/dist/patterns/show/index.d.ts.map +1 -0
- package/dist/patterns/show/it.d.ts +11 -0
- package/dist/patterns/show/it.d.ts.map +1 -0
- package/dist/patterns/show/ja.d.ts +12 -0
- package/dist/patterns/show/ja.d.ts.map +1 -0
- package/dist/patterns/show/ko.d.ts +12 -0
- package/dist/patterns/show/ko.d.ts.map +1 -0
- package/dist/patterns/show/pl.d.ts +12 -0
- package/dist/patterns/show/pl.d.ts.map +1 -0
- package/dist/patterns/show/ru.d.ts +12 -0
- package/dist/patterns/show/ru.d.ts.map +1 -0
- package/dist/patterns/show/th.d.ts +8 -0
- package/dist/patterns/show/th.d.ts.map +1 -0
- package/dist/patterns/show/tr.d.ts +12 -0
- package/dist/patterns/show/tr.d.ts.map +1 -0
- package/dist/patterns/show/uk.d.ts +12 -0
- package/dist/patterns/show/uk.d.ts.map +1 -0
- package/dist/patterns/show/vi.d.ts +11 -0
- package/dist/patterns/show/vi.d.ts.map +1 -0
- package/dist/patterns/show/zh.d.ts +12 -0
- package/dist/patterns/show/zh.d.ts.map +1 -0
- package/dist/patterns/take/ar.d.ts +12 -0
- package/dist/patterns/take/ar.d.ts.map +1 -0
- package/dist/patterns/take/index.d.ts +18 -0
- package/dist/patterns/take/index.d.ts.map +1 -0
- package/dist/patterns/toggle/ar.d.ts +12 -0
- package/dist/patterns/toggle/ar.d.ts.map +1 -0
- package/dist/patterns/toggle/bn.d.ts +8 -0
- package/dist/patterns/toggle/bn.d.ts.map +1 -0
- package/dist/patterns/toggle/en.d.ts +11 -0
- package/dist/patterns/toggle/en.d.ts.map +1 -0
- package/dist/patterns/toggle/es.d.ts +11 -0
- package/dist/patterns/toggle/es.d.ts.map +1 -0
- package/dist/patterns/toggle/hi.d.ts +9 -0
- package/dist/patterns/toggle/hi.d.ts.map +1 -0
- package/dist/patterns/toggle/index.d.ts +33 -0
- package/dist/patterns/toggle/index.d.ts.map +1 -0
- package/dist/patterns/toggle/it.d.ts +11 -0
- package/dist/patterns/toggle/it.d.ts.map +1 -0
- package/dist/patterns/toggle/ja.d.ts +12 -0
- package/dist/patterns/toggle/ja.d.ts.map +1 -0
- package/dist/patterns/toggle/ko.d.ts +12 -0
- package/dist/patterns/toggle/ko.d.ts.map +1 -0
- package/dist/patterns/toggle/pl.d.ts +12 -0
- package/dist/patterns/toggle/pl.d.ts.map +1 -0
- package/dist/patterns/toggle/qu.d.ts +9 -0
- package/dist/patterns/toggle/qu.d.ts.map +1 -0
- package/dist/patterns/toggle/ru.d.ts +12 -0
- package/dist/patterns/toggle/ru.d.ts.map +1 -0
- package/dist/patterns/toggle/th.d.ts +9 -0
- package/dist/patterns/toggle/th.d.ts.map +1 -0
- package/dist/patterns/toggle/tr.d.ts +12 -0
- package/dist/patterns/toggle/tr.d.ts.map +1 -0
- package/dist/patterns/toggle/uk.d.ts +12 -0
- package/dist/patterns/toggle/uk.d.ts.map +1 -0
- package/dist/patterns/toggle/vi.d.ts +11 -0
- package/dist/patterns/toggle/vi.d.ts.map +1 -0
- package/dist/patterns/toggle/zh.d.ts +11 -0
- package/dist/patterns/toggle/zh.d.ts.map +1 -0
- package/dist/public-api.d.ts +190 -0
- package/dist/public-api.d.ts.map +1 -0
- package/dist/registry.d.ts +225 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/tokenizers/arabic.d.ts +67 -0
- package/dist/tokenizers/arabic.d.ts.map +1 -0
- package/dist/tokenizers/base-tokenizer.d.ts +240 -0
- package/dist/tokenizers/base-tokenizer.d.ts.map +1 -0
- package/dist/tokenizers/base.d.ts +14 -0
- package/dist/tokenizers/base.d.ts.map +1 -0
- package/dist/tokenizers/bengali.d.ts +22 -0
- package/dist/tokenizers/bengali.d.ts.map +1 -0
- package/dist/tokenizers/char-classifiers.d.ts +56 -0
- package/dist/tokenizers/char-classifiers.d.ts.map +1 -0
- package/dist/tokenizers/chinese.d.ts +47 -0
- package/dist/tokenizers/chinese.d.ts.map +1 -0
- package/dist/tokenizers/english.d.ts +34 -0
- package/dist/tokenizers/english.d.ts.map +1 -0
- package/dist/tokenizers/extractors.d.ts +61 -0
- package/dist/tokenizers/extractors.d.ts.map +1 -0
- package/dist/tokenizers/french.d.ts +26 -0
- package/dist/tokenizers/french.d.ts.map +1 -0
- package/dist/tokenizers/german.d.ts +27 -0
- package/dist/tokenizers/german.d.ts.map +1 -0
- package/dist/tokenizers/he.d.ts +58 -0
- package/dist/tokenizers/he.d.ts.map +1 -0
- package/dist/tokenizers/hindi.d.ts +25 -0
- package/dist/tokenizers/hindi.d.ts.map +1 -0
- package/dist/tokenizers/index.d.ts +64 -0
- package/dist/tokenizers/index.d.ts.map +1 -0
- package/dist/tokenizers/indonesian.d.ts +24 -0
- package/dist/tokenizers/indonesian.d.ts.map +1 -0
- package/dist/tokenizers/italian.d.ts +41 -0
- package/dist/tokenizers/italian.d.ts.map +1 -0
- package/dist/tokenizers/japanese.d.ts +42 -0
- package/dist/tokenizers/japanese.d.ts.map +1 -0
- package/dist/tokenizers/korean.d.ts +47 -0
- package/dist/tokenizers/korean.d.ts.map +1 -0
- package/dist/tokenizers/morphology/arabic-normalizer.d.ts +37 -0
- package/dist/tokenizers/morphology/arabic-normalizer.d.ts.map +1 -0
- package/dist/tokenizers/morphology/french-normalizer.d.ts +46 -0
- package/dist/tokenizers/morphology/french-normalizer.d.ts.map +1 -0
- package/dist/tokenizers/morphology/german-normalizer.d.ts +55 -0
- package/dist/tokenizers/morphology/german-normalizer.d.ts.map +1 -0
- package/dist/tokenizers/morphology/index.d.ts +20 -0
- package/dist/tokenizers/morphology/index.d.ts.map +1 -0
- package/dist/tokenizers/morphology/italian-normalizer.d.ts +52 -0
- package/dist/tokenizers/morphology/italian-normalizer.d.ts.map +1 -0
- package/dist/tokenizers/morphology/japanese-normalizer.d.ts +43 -0
- package/dist/tokenizers/morphology/japanese-normalizer.d.ts.map +1 -0
- package/dist/tokenizers/morphology/korean-normalizer.d.ts +45 -0
- package/dist/tokenizers/morphology/korean-normalizer.d.ts.map +1 -0
- package/dist/tokenizers/morphology/polish-normalizer.d.ts +61 -0
- package/dist/tokenizers/morphology/polish-normalizer.d.ts.map +1 -0
- package/dist/tokenizers/morphology/portuguese-normalizer.d.ts +51 -0
- package/dist/tokenizers/morphology/portuguese-normalizer.d.ts.map +1 -0
- package/dist/tokenizers/morphology/russian-normalizer.d.ts +72 -0
- package/dist/tokenizers/morphology/russian-normalizer.d.ts.map +1 -0
- package/dist/tokenizers/morphology/spanish-normalizer.d.ts +49 -0
- package/dist/tokenizers/morphology/spanish-normalizer.d.ts.map +1 -0
- package/dist/tokenizers/morphology/turkish-normalizer.d.ts +52 -0
- package/dist/tokenizers/morphology/turkish-normalizer.d.ts.map +1 -0
- package/dist/tokenizers/morphology/types.d.ts +110 -0
- package/dist/tokenizers/morphology/types.d.ts.map +1 -0
- package/dist/tokenizers/morphology/ukrainian-normalizer.d.ts +76 -0
- package/dist/tokenizers/morphology/ukrainian-normalizer.d.ts.map +1 -0
- package/dist/tokenizers/ms.d.ts +22 -0
- package/dist/tokenizers/ms.d.ts.map +1 -0
- package/dist/tokenizers/polish.d.ts +25 -0
- package/dist/tokenizers/polish.d.ts.map +1 -0
- package/dist/tokenizers/portuguese.d.ts +26 -0
- package/dist/tokenizers/portuguese.d.ts.map +1 -0
- package/dist/tokenizers/quechua.d.ts +36 -0
- package/dist/tokenizers/quechua.d.ts.map +1 -0
- package/dist/tokenizers/russian.d.ts +25 -0
- package/dist/tokenizers/russian.d.ts.map +1 -0
- package/dist/tokenizers/spanish.d.ts +41 -0
- package/dist/tokenizers/spanish.d.ts.map +1 -0
- package/dist/tokenizers/swahili.d.ts +24 -0
- package/dist/tokenizers/swahili.d.ts.map +1 -0
- package/dist/tokenizers/thai.d.ts +24 -0
- package/dist/tokenizers/thai.d.ts.map +1 -0
- package/dist/tokenizers/tl.d.ts +22 -0
- package/dist/tokenizers/tl.d.ts.map +1 -0
- package/dist/tokenizers/token-utils.d.ts +97 -0
- package/dist/tokenizers/token-utils.d.ts.map +1 -0
- package/dist/tokenizers/turkish.d.ts +42 -0
- package/dist/tokenizers/turkish.d.ts.map +1 -0
- package/dist/tokenizers/ukrainian.d.ts +25 -0
- package/dist/tokenizers/ukrainian.d.ts.map +1 -0
- package/dist/tokenizers/vietnamese.d.ts +47 -0
- package/dist/tokenizers/vietnamese.d.ts.map +1 -0
- package/dist/types/grammar-types.d.ts +224 -0
- package/dist/types/grammar-types.d.ts.map +1 -0
- package/dist/types/unified-profile.d.ts +167 -0
- package/dist/types/unified-profile.d.ts.map +1 -0
- package/dist/types.d.ts +401 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/utils/confidence-calculator.d.ts +43 -0
- package/dist/utils/confidence-calculator.d.ts.map +1 -0
- package/dist/validators/command-validator.d.ts +83 -0
- package/dist/validators/command-validator.d.ts.map +1 -0
- package/dist/validators/index.d.ts +7 -0
- package/dist/validators/index.d.ts.map +1 -0
- package/package.json +86 -6
- package/src/ast-builder/command-mappers.ts +9 -1
- package/src/ast-builder/expression-parser/parser.ts +13 -2
- package/src/ast-builder/index.ts +20 -6
- package/src/browser-bn.ts +162 -0
- package/src/browser-east-asian.ts +1 -1
- package/src/browser-hi.ts +162 -0
- package/src/browser-it.ts +162 -0
- package/src/browser-ms.ts +162 -0
- package/src/browser-pl.ts +162 -0
- package/src/browser-priority.ts +1 -1
- package/src/browser-ru.ts +162 -0
- package/src/browser-th.ts +162 -0
- package/src/browser-tl.ts +162 -0
- package/src/browser-uk.ts +162 -0
- package/src/browser-vi.ts +162 -0
- package/src/browser-western.ts +1 -1
- package/src/core-bridge.ts +43 -16
- package/src/core.ts +13 -0
- package/src/explicit/parser.ts +4 -2
- package/src/explicit/renderer.ts +1 -1
- package/src/generators/command-schemas.ts +214 -2
- package/src/generators/event-handlers-sov.ts +686 -0
- package/src/generators/event-handlers-vso.ts +489 -0
- package/src/generators/pattern-generator.ts +93 -736
- package/src/generators/profiles/arabic.ts +11 -1
- package/src/generators/profiles/bengali.ts +6 -0
- package/src/generators/profiles/chinese.ts +6 -0
- package/src/generators/profiles/english.ts +6 -0
- package/src/generators/profiles/french.ts +6 -0
- package/src/generators/profiles/german.ts +6 -0
- package/src/generators/profiles/hebrew.ts +6 -0
- package/src/generators/profiles/hindi.ts +6 -0
- package/src/generators/profiles/indonesian.ts +6 -0
- package/src/generators/profiles/italian.ts +6 -0
- package/src/generators/profiles/japanese.ts +6 -0
- package/src/generators/profiles/korean.ts +6 -0
- package/src/generators/profiles/ms.ts +6 -0
- package/src/generators/profiles/polish.ts +6 -0
- package/src/generators/profiles/portuguese.ts +6 -0
- package/src/generators/profiles/quechua.ts +35 -13
- package/src/generators/profiles/russian.ts +6 -0
- package/src/generators/profiles/spanish.ts +6 -0
- package/src/generators/profiles/spanishMexico.ts +6 -0
- package/src/generators/profiles/swahili.ts +14 -3
- package/src/generators/profiles/thai.ts +6 -0
- package/src/generators/profiles/tl.ts +22 -9
- package/src/generators/profiles/turkish.ts +7 -1
- package/src/generators/profiles/ukrainian.ts +6 -0
- package/src/generators/profiles/vietnamese.ts +6 -0
- package/src/generators/schema-validator.ts +8 -3
- package/src/index.ts +54 -0
- package/src/interchange/from-semantic.ts +440 -0
- package/src/interchange/index.ts +26 -0
- package/src/interchange/types.ts +186 -0
- package/src/parser/pattern-matcher.ts +65 -15
- package/src/parser/semantic-parser.ts +850 -8
- package/src/patterns/add/index.ts +1 -9
- package/src/patterns/builders.ts +2 -2
- package/src/patterns/decrement/index.ts +1 -9
- package/src/patterns/event-handler/shared.ts +30 -0
- package/src/patterns/event-handler/tl.ts +39 -19
- package/src/patterns/get/index.ts +1 -9
- package/src/patterns/hide/index.ts +1 -9
- package/src/patterns/increment/index.ts +1 -9
- package/src/patterns/put/index.ts +1 -9
- package/src/patterns/registry.ts +2 -2
- package/src/patterns/remove/index.ts +1 -9
- package/src/patterns/set/index.ts +1 -9
- package/src/patterns/show/index.ts +1 -9
- package/src/patterns/toggle/index.ts +1 -9
- package/src/tokenizers/arabic.ts +14 -1
- package/src/tokenizers/base-tokenizer.ts +644 -0
- package/src/tokenizers/base.ts +39 -1297
- package/src/tokenizers/bengali.ts +37 -10
- package/src/tokenizers/char-classifiers.ts +79 -0
- package/src/tokenizers/chinese.ts +7 -0
- package/src/tokenizers/english.ts +8 -1
- package/src/tokenizers/extractors.ts +452 -0
- package/src/tokenizers/french.ts +16 -1
- package/src/tokenizers/german.ts +16 -1
- package/src/tokenizers/he.ts +14 -1
- package/src/tokenizers/hindi.ts +14 -1
- package/src/tokenizers/indonesian.ts +14 -1
- package/src/tokenizers/italian.ts +14 -1
- package/src/tokenizers/japanese.ts +14 -1
- package/src/tokenizers/korean.ts +19 -1
- package/src/tokenizers/morphology/index.ts +17 -0
- package/src/tokenizers/morphology/polish-normalizer.ts +147 -131
- package/src/tokenizers/morphology/russian-normalizer.ts +397 -0
- package/src/tokenizers/morphology/ukrainian-normalizer.ts +366 -0
- package/src/tokenizers/ms.ts +14 -1
- package/src/tokenizers/polish.ts +16 -1
- package/src/tokenizers/portuguese.ts +16 -1
- package/src/tokenizers/quechua.ts +30 -1
- package/src/tokenizers/russian.ts +16 -1
- package/src/tokenizers/spanish.ts +14 -1
- package/src/tokenizers/swahili.ts +14 -1
- package/src/tokenizers/thai.ts +14 -1
- package/src/tokenizers/tl.ts +14 -1
- package/src/tokenizers/token-utils.ts +205 -0
- package/src/tokenizers/turkish.ts +21 -2
- package/src/tokenizers/ukrainian.ts +16 -1
- package/src/tokenizers/vietnamese.ts +7 -0
- package/src/types.ts +41 -2
- package/src/validators/command-validator.ts +17 -40
- package/dist/index.d.cts +0 -3470
- package/dist/types-BY3Id07j.d.ts +0 -615
- package/src/bridge.ts +0 -275
- package/src/generators/event-handler-generator.ts +0 -115
- package/src/patterns/add/ms.ts +0 -30
- package/src/patterns/add/tl.ts +0 -30
- package/src/patterns/decrement/ms.ts +0 -30
- package/src/patterns/decrement/tl.ts +0 -30
- package/src/patterns/get/ms.ts +0 -30
- package/src/patterns/get/tl.ts +0 -30
- package/src/patterns/hide/ms.ts +0 -30
- package/src/patterns/hide/tl.ts +0 -30
- package/src/patterns/increment/ms.ts +0 -30
- package/src/patterns/increment/tl.ts +0 -30
- package/src/patterns/put/ms.ts +0 -30
- package/src/patterns/put/tl.ts +0 -30
- package/src/patterns/remove/ms.ts +0 -30
- package/src/patterns/remove/tl.ts +0 -30
- package/src/patterns/set/ms.ts +0 -30
- package/src/patterns/set/tl.ts +0 -30
- package/src/patterns/show/ms.ts +0 -30
- package/src/patterns/show/tl.ts +0 -30
- package/src/patterns/toggle/ms.ts +0 -30
- package/src/patterns/toggle/tl.ts +0 -30
|
@@ -0,0 +1,1586 @@
|
|
|
1
|
+
// src/registry.ts
|
|
2
|
+
var tokenizers = /* @__PURE__ */ new Map();
|
|
3
|
+
var profiles = /* @__PURE__ */ new Map();
|
|
4
|
+
var patternCache = /* @__PURE__ */ new Map();
|
|
5
|
+
function registerLanguage(code, tokenizer, profile) {
|
|
6
|
+
tokenizers.set(code, tokenizer);
|
|
7
|
+
profiles.set(code, profile);
|
|
8
|
+
patternCache.delete(code);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
// src/tokenizers/token-utils.ts
|
|
12
|
+
var TokenStreamImpl = class {
|
|
13
|
+
constructor(tokens, language) {
|
|
14
|
+
this.pos = 0;
|
|
15
|
+
this.tokens = tokens;
|
|
16
|
+
this.language = language;
|
|
17
|
+
}
|
|
18
|
+
peek(offset = 0) {
|
|
19
|
+
const index = this.pos + offset;
|
|
20
|
+
if (index < 0 || index >= this.tokens.length) {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
return this.tokens[index];
|
|
24
|
+
}
|
|
25
|
+
advance() {
|
|
26
|
+
if (this.isAtEnd()) {
|
|
27
|
+
throw new Error("Unexpected end of token stream");
|
|
28
|
+
}
|
|
29
|
+
return this.tokens[this.pos++];
|
|
30
|
+
}
|
|
31
|
+
isAtEnd() {
|
|
32
|
+
return this.pos >= this.tokens.length;
|
|
33
|
+
}
|
|
34
|
+
mark() {
|
|
35
|
+
return { position: this.pos };
|
|
36
|
+
}
|
|
37
|
+
reset(mark) {
|
|
38
|
+
this.pos = mark.position;
|
|
39
|
+
}
|
|
40
|
+
position() {
|
|
41
|
+
return this.pos;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Get remaining tokens as an array.
|
|
45
|
+
*/
|
|
46
|
+
remaining() {
|
|
47
|
+
return this.tokens.slice(this.pos);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Consume tokens while predicate is true.
|
|
51
|
+
*/
|
|
52
|
+
takeWhile(predicate) {
|
|
53
|
+
const result = [];
|
|
54
|
+
while (!this.isAtEnd() && predicate(this.peek())) {
|
|
55
|
+
result.push(this.advance());
|
|
56
|
+
}
|
|
57
|
+
return result;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Skip tokens while predicate is true.
|
|
61
|
+
*/
|
|
62
|
+
skipWhile(predicate) {
|
|
63
|
+
while (!this.isAtEnd() && predicate(this.peek())) {
|
|
64
|
+
this.advance();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
function createPosition(start, end) {
|
|
69
|
+
return { start, end };
|
|
70
|
+
}
|
|
71
|
+
function createToken(value, kind, position, normalizedOrOptions) {
|
|
72
|
+
if (typeof normalizedOrOptions === "string") {
|
|
73
|
+
return { value, kind, position, normalized: normalizedOrOptions };
|
|
74
|
+
}
|
|
75
|
+
if (normalizedOrOptions) {
|
|
76
|
+
const { normalized: normalized2, stem, stemConfidence } = normalizedOrOptions;
|
|
77
|
+
return {
|
|
78
|
+
value,
|
|
79
|
+
kind,
|
|
80
|
+
position,
|
|
81
|
+
...normalized2 !== void 0 && { normalized: normalized2 },
|
|
82
|
+
...stem !== void 0 && { stem },
|
|
83
|
+
...stemConfidence !== void 0 && { stemConfidence }
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
return { value, kind, position };
|
|
87
|
+
}
|
|
88
|
+
function isWhitespace(char) {
|
|
89
|
+
return /\s/.test(char);
|
|
90
|
+
}
|
|
91
|
+
function isSelectorStart(char) {
|
|
92
|
+
return char === "#" || char === "." || char === "[" || char === "@" || char === "*" || char === "<";
|
|
93
|
+
}
|
|
94
|
+
function isQuote(char) {
|
|
95
|
+
return char === '"' || char === "'" || char === "`" || char === "\u300C" || char === "\u300D";
|
|
96
|
+
}
|
|
97
|
+
function isDigit(char) {
|
|
98
|
+
return /\d/.test(char);
|
|
99
|
+
}
|
|
100
|
+
function isAsciiLetter(char) {
|
|
101
|
+
return /[a-zA-Z]/.test(char);
|
|
102
|
+
}
|
|
103
|
+
function isAsciiIdentifierChar(char) {
|
|
104
|
+
return /[a-zA-Z0-9_-]/.test(char);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// src/tokenizers/char-classifiers.ts
|
|
108
|
+
function createLatinCharClassifiers(letterPattern) {
|
|
109
|
+
const isLetter = (char) => letterPattern.test(char);
|
|
110
|
+
const isIdentifierChar = (char) => isLetter(char) || /[0-9_-]/.test(char);
|
|
111
|
+
return { isLetter, isIdentifierChar };
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// src/tokenizers/extractors.ts
|
|
115
|
+
function extractCssSelector(input, startPos) {
|
|
116
|
+
if (startPos >= input.length) return null;
|
|
117
|
+
const char = input[startPos];
|
|
118
|
+
if (!isSelectorStart(char)) return null;
|
|
119
|
+
let pos = startPos;
|
|
120
|
+
let selector = "";
|
|
121
|
+
if (char === "#" || char === ".") {
|
|
122
|
+
selector += input[pos++];
|
|
123
|
+
while (pos < input.length && isAsciiIdentifierChar(input[pos])) {
|
|
124
|
+
selector += input[pos++];
|
|
125
|
+
}
|
|
126
|
+
if (selector.length <= 1) return null;
|
|
127
|
+
if (pos < input.length && input[pos] === "." && char === "#") {
|
|
128
|
+
const methodStart = pos + 1;
|
|
129
|
+
let methodEnd = methodStart;
|
|
130
|
+
while (methodEnd < input.length && isAsciiIdentifierChar(input[methodEnd])) {
|
|
131
|
+
methodEnd++;
|
|
132
|
+
}
|
|
133
|
+
if (methodEnd < input.length && input[methodEnd] === "(") {
|
|
134
|
+
return selector;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
} else if (char === "[") {
|
|
138
|
+
let depth = 1;
|
|
139
|
+
let inQuote = false;
|
|
140
|
+
let quoteChar = null;
|
|
141
|
+
let escaped = false;
|
|
142
|
+
selector += input[pos++];
|
|
143
|
+
while (pos < input.length && depth > 0) {
|
|
144
|
+
const c = input[pos];
|
|
145
|
+
selector += c;
|
|
146
|
+
if (escaped) {
|
|
147
|
+
escaped = false;
|
|
148
|
+
} else if (c === "\\") {
|
|
149
|
+
escaped = true;
|
|
150
|
+
} else if (inQuote) {
|
|
151
|
+
if (c === quoteChar) {
|
|
152
|
+
inQuote = false;
|
|
153
|
+
quoteChar = null;
|
|
154
|
+
}
|
|
155
|
+
} else {
|
|
156
|
+
if (c === '"' || c === "'" || c === "`") {
|
|
157
|
+
inQuote = true;
|
|
158
|
+
quoteChar = c;
|
|
159
|
+
} else if (c === "[") {
|
|
160
|
+
depth++;
|
|
161
|
+
} else if (c === "]") {
|
|
162
|
+
depth--;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
pos++;
|
|
166
|
+
}
|
|
167
|
+
if (depth !== 0) return null;
|
|
168
|
+
} else if (char === "@") {
|
|
169
|
+
selector += input[pos++];
|
|
170
|
+
while (pos < input.length && isAsciiIdentifierChar(input[pos])) {
|
|
171
|
+
selector += input[pos++];
|
|
172
|
+
}
|
|
173
|
+
if (selector.length <= 1) return null;
|
|
174
|
+
} else if (char === "*") {
|
|
175
|
+
selector += input[pos++];
|
|
176
|
+
while (pos < input.length && isAsciiIdentifierChar(input[pos])) {
|
|
177
|
+
selector += input[pos++];
|
|
178
|
+
}
|
|
179
|
+
if (selector.length <= 1) return null;
|
|
180
|
+
} else if (char === "<") {
|
|
181
|
+
selector += input[pos++];
|
|
182
|
+
if (pos >= input.length || !isAsciiLetter(input[pos])) return null;
|
|
183
|
+
while (pos < input.length && isAsciiIdentifierChar(input[pos])) {
|
|
184
|
+
selector += input[pos++];
|
|
185
|
+
}
|
|
186
|
+
while (pos < input.length) {
|
|
187
|
+
const modChar = input[pos];
|
|
188
|
+
if (modChar === ".") {
|
|
189
|
+
selector += input[pos++];
|
|
190
|
+
if (pos >= input.length || !isAsciiIdentifierChar(input[pos])) {
|
|
191
|
+
return null;
|
|
192
|
+
}
|
|
193
|
+
while (pos < input.length && isAsciiIdentifierChar(input[pos])) {
|
|
194
|
+
selector += input[pos++];
|
|
195
|
+
}
|
|
196
|
+
} else if (modChar === "#") {
|
|
197
|
+
selector += input[pos++];
|
|
198
|
+
if (pos >= input.length || !isAsciiIdentifierChar(input[pos])) {
|
|
199
|
+
return null;
|
|
200
|
+
}
|
|
201
|
+
while (pos < input.length && isAsciiIdentifierChar(input[pos])) {
|
|
202
|
+
selector += input[pos++];
|
|
203
|
+
}
|
|
204
|
+
} else if (modChar === "[") {
|
|
205
|
+
let depth = 1;
|
|
206
|
+
let inQuote = false;
|
|
207
|
+
let quoteChar = null;
|
|
208
|
+
let escaped = false;
|
|
209
|
+
selector += input[pos++];
|
|
210
|
+
while (pos < input.length && depth > 0) {
|
|
211
|
+
const c = input[pos];
|
|
212
|
+
selector += c;
|
|
213
|
+
if (escaped) {
|
|
214
|
+
escaped = false;
|
|
215
|
+
} else if (c === "\\") {
|
|
216
|
+
escaped = true;
|
|
217
|
+
} else if (inQuote) {
|
|
218
|
+
if (c === quoteChar) {
|
|
219
|
+
inQuote = false;
|
|
220
|
+
quoteChar = null;
|
|
221
|
+
}
|
|
222
|
+
} else {
|
|
223
|
+
if (c === '"' || c === "'" || c === "`") {
|
|
224
|
+
inQuote = true;
|
|
225
|
+
quoteChar = c;
|
|
226
|
+
} else if (c === "[") {
|
|
227
|
+
depth++;
|
|
228
|
+
} else if (c === "]") {
|
|
229
|
+
depth--;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
pos++;
|
|
233
|
+
}
|
|
234
|
+
if (depth !== 0) return null;
|
|
235
|
+
} else {
|
|
236
|
+
break;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
while (pos < input.length && isWhitespace(input[pos])) {
|
|
240
|
+
selector += input[pos++];
|
|
241
|
+
}
|
|
242
|
+
if (pos < input.length && input[pos] === "/") {
|
|
243
|
+
selector += input[pos++];
|
|
244
|
+
while (pos < input.length && isWhitespace(input[pos])) {
|
|
245
|
+
selector += input[pos++];
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
if (pos >= input.length || input[pos] !== ">") return null;
|
|
249
|
+
selector += input[pos++];
|
|
250
|
+
}
|
|
251
|
+
return selector || null;
|
|
252
|
+
}
|
|
253
|
+
function isPossessiveMarker(input, pos) {
|
|
254
|
+
if (pos >= input.length || input[pos] !== "'") return false;
|
|
255
|
+
if (pos + 1 >= input.length) return false;
|
|
256
|
+
const nextChar = input[pos + 1].toLowerCase();
|
|
257
|
+
if (nextChar !== "s") return false;
|
|
258
|
+
if (pos + 2 >= input.length) return true;
|
|
259
|
+
const afterS = input[pos + 2];
|
|
260
|
+
return isWhitespace(afterS) || afterS === "*" || !isAsciiIdentifierChar(afterS);
|
|
261
|
+
}
|
|
262
|
+
function extractStringLiteral(input, startPos) {
|
|
263
|
+
if (startPos >= input.length) return null;
|
|
264
|
+
const openQuote = input[startPos];
|
|
265
|
+
if (!isQuote(openQuote)) return null;
|
|
266
|
+
if (openQuote === "'" && isPossessiveMarker(input, startPos)) {
|
|
267
|
+
return null;
|
|
268
|
+
}
|
|
269
|
+
const closeQuoteMap = {
|
|
270
|
+
'"': '"',
|
|
271
|
+
"'": "'",
|
|
272
|
+
"`": "`",
|
|
273
|
+
"\u300C": "\u300D"
|
|
274
|
+
};
|
|
275
|
+
const closeQuote = closeQuoteMap[openQuote];
|
|
276
|
+
if (!closeQuote) return null;
|
|
277
|
+
let pos = startPos + 1;
|
|
278
|
+
let literal = openQuote;
|
|
279
|
+
let escaped = false;
|
|
280
|
+
while (pos < input.length) {
|
|
281
|
+
const char = input[pos];
|
|
282
|
+
literal += char;
|
|
283
|
+
if (escaped) {
|
|
284
|
+
escaped = false;
|
|
285
|
+
} else if (char === "\\") {
|
|
286
|
+
escaped = true;
|
|
287
|
+
} else if (char === closeQuote) {
|
|
288
|
+
return literal;
|
|
289
|
+
}
|
|
290
|
+
pos++;
|
|
291
|
+
}
|
|
292
|
+
return literal;
|
|
293
|
+
}
|
|
294
|
+
function isUrlStart(input, pos) {
|
|
295
|
+
if (pos >= input.length) return false;
|
|
296
|
+
const char = input[pos];
|
|
297
|
+
const next = input[pos + 1] || "";
|
|
298
|
+
const third = input[pos + 2] || "";
|
|
299
|
+
if (char === "/" && next !== "/" && /[a-zA-Z0-9._-]/.test(next)) {
|
|
300
|
+
return true;
|
|
301
|
+
}
|
|
302
|
+
if (char === "/" && next === "/" && /[a-zA-Z]/.test(third)) {
|
|
303
|
+
return true;
|
|
304
|
+
}
|
|
305
|
+
if (char === "." && (next === "/" || next === "." && third === "/")) {
|
|
306
|
+
return true;
|
|
307
|
+
}
|
|
308
|
+
const slice = input.slice(pos, pos + 8).toLowerCase();
|
|
309
|
+
if (slice.startsWith("http://") || slice.startsWith("https://")) {
|
|
310
|
+
return true;
|
|
311
|
+
}
|
|
312
|
+
return false;
|
|
313
|
+
}
|
|
314
|
+
function extractUrl(input, startPos) {
|
|
315
|
+
if (!isUrlStart(input, startPos)) return null;
|
|
316
|
+
let pos = startPos;
|
|
317
|
+
let url = "";
|
|
318
|
+
const urlChars = /[a-zA-Z0-9/:._\-?&=%@+~!$'()*,;[\]]/;
|
|
319
|
+
while (pos < input.length) {
|
|
320
|
+
const char = input[pos];
|
|
321
|
+
if (char === "#") {
|
|
322
|
+
if (url.length > 0 && /[a-zA-Z0-9/.]$/.test(url)) {
|
|
323
|
+
url += char;
|
|
324
|
+
pos++;
|
|
325
|
+
while (pos < input.length && /[a-zA-Z0-9_-]/.test(input[pos])) {
|
|
326
|
+
url += input[pos++];
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
break;
|
|
330
|
+
}
|
|
331
|
+
if (urlChars.test(char)) {
|
|
332
|
+
url += char;
|
|
333
|
+
pos++;
|
|
334
|
+
} else {
|
|
335
|
+
break;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
if (url.length < 2) return null;
|
|
339
|
+
return url;
|
|
340
|
+
}
|
|
341
|
+
function extractNumber(input, startPos) {
|
|
342
|
+
if (startPos >= input.length) return null;
|
|
343
|
+
const char = input[startPos];
|
|
344
|
+
if (!isDigit(char) && char !== "-" && char !== "+") return null;
|
|
345
|
+
let pos = startPos;
|
|
346
|
+
let number = "";
|
|
347
|
+
if (input[pos] === "-" || input[pos] === "+") {
|
|
348
|
+
number += input[pos++];
|
|
349
|
+
}
|
|
350
|
+
if (pos >= input.length || !isDigit(input[pos])) {
|
|
351
|
+
return null;
|
|
352
|
+
}
|
|
353
|
+
while (pos < input.length && isDigit(input[pos])) {
|
|
354
|
+
number += input[pos++];
|
|
355
|
+
}
|
|
356
|
+
if (pos < input.length && input[pos] === ".") {
|
|
357
|
+
number += input[pos++];
|
|
358
|
+
while (pos < input.length && isDigit(input[pos])) {
|
|
359
|
+
number += input[pos++];
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
if (pos < input.length) {
|
|
363
|
+
const suffix = input.slice(pos, pos + 2);
|
|
364
|
+
if (suffix === "ms") {
|
|
365
|
+
number += "ms";
|
|
366
|
+
} else if (input[pos] === "s" || input[pos] === "m" || input[pos] === "h") {
|
|
367
|
+
number += input[pos];
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
return number;
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
// src/tokenizers/base-tokenizer.ts
|
|
374
|
+
var _BaseTokenizer = class _BaseTokenizer {
|
|
375
|
+
constructor() {
|
|
376
|
+
/** Keywords derived from profile, sorted longest-first for greedy matching */
|
|
377
|
+
this.profileKeywords = [];
|
|
378
|
+
/** Map for O(1) keyword lookups by lowercase native word */
|
|
379
|
+
this.profileKeywordMap = /* @__PURE__ */ new Map();
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Check if current position is a property access (obj.prop) vs CSS selector (.active).
|
|
383
|
+
* Property access: no whitespace before '.', previous token is identifier/keyword/selector.
|
|
384
|
+
* Also detects standalone method calls: .identifier( pattern.
|
|
385
|
+
*
|
|
386
|
+
* Returns true if '.' was emitted as an operator token and pos should advance by 1.
|
|
387
|
+
* Returns false if this is a CSS selector and should be handled by trySelector().
|
|
388
|
+
*/
|
|
389
|
+
tryPropertyAccess(input, pos, tokens) {
|
|
390
|
+
if (input[pos] !== ".") return false;
|
|
391
|
+
const lastToken = tokens[tokens.length - 1];
|
|
392
|
+
const hasWhitespaceBefore = lastToken && lastToken.position.end < pos;
|
|
393
|
+
const isPropertyAccess = lastToken && !hasWhitespaceBefore && (lastToken.kind === "identifier" || lastToken.kind === "keyword" || lastToken.kind === "selector");
|
|
394
|
+
if (isPropertyAccess) {
|
|
395
|
+
tokens.push(createToken(".", "operator", createPosition(pos, pos + 1)));
|
|
396
|
+
return true;
|
|
397
|
+
}
|
|
398
|
+
const methodStart = pos + 1;
|
|
399
|
+
let methodEnd = methodStart;
|
|
400
|
+
while (methodEnd < input.length && isAsciiIdentifierChar(input[methodEnd])) {
|
|
401
|
+
methodEnd++;
|
|
402
|
+
}
|
|
403
|
+
if (methodEnd < input.length && input[methodEnd] === "(") {
|
|
404
|
+
tokens.push(createToken(".", "operator", createPosition(pos, pos + 1)));
|
|
405
|
+
return true;
|
|
406
|
+
}
|
|
407
|
+
return false;
|
|
408
|
+
}
|
|
409
|
+
/**
|
|
410
|
+
* Initialize keyword mappings from a language profile.
|
|
411
|
+
* Builds a list of native→english mappings from:
|
|
412
|
+
* - profile.keywords (primary + alternatives)
|
|
413
|
+
* - profile.references (me, it, you, etc.)
|
|
414
|
+
* - profile.roleMarkers (into, from, with, etc.)
|
|
415
|
+
*
|
|
416
|
+
* Results are sorted longest-first for greedy matching (important for non-space languages).
|
|
417
|
+
* Extras take precedence over profile entries when there are duplicates.
|
|
418
|
+
*
|
|
419
|
+
* @param profile - Language profile containing keyword translations
|
|
420
|
+
* @param extras - Additional keyword entries to include (literals, positional, events)
|
|
421
|
+
*/
|
|
422
|
+
initializeKeywordsFromProfile(profile, extras = []) {
|
|
423
|
+
const keywordMap = /* @__PURE__ */ new Map();
|
|
424
|
+
if (profile.keywords) {
|
|
425
|
+
for (const [normalized2, translation] of Object.entries(profile.keywords)) {
|
|
426
|
+
keywordMap.set(translation.primary, {
|
|
427
|
+
native: translation.primary,
|
|
428
|
+
normalized: translation.normalized || normalized2
|
|
429
|
+
});
|
|
430
|
+
if (translation.alternatives) {
|
|
431
|
+
for (const alt of translation.alternatives) {
|
|
432
|
+
keywordMap.set(alt, {
|
|
433
|
+
native: alt,
|
|
434
|
+
normalized: translation.normalized || normalized2
|
|
435
|
+
});
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
if (profile.references) {
|
|
441
|
+
for (const [normalized2, native] of Object.entries(profile.references)) {
|
|
442
|
+
keywordMap.set(native, { native, normalized: normalized2 });
|
|
443
|
+
}
|
|
444
|
+
for (const canonical of Object.keys(profile.references)) {
|
|
445
|
+
if (!keywordMap.has(canonical)) {
|
|
446
|
+
keywordMap.set(canonical, { native: canonical, normalized: canonical });
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
if (profile.roleMarkers) {
|
|
451
|
+
for (const [role, marker] of Object.entries(profile.roleMarkers)) {
|
|
452
|
+
if (marker.primary) {
|
|
453
|
+
keywordMap.set(marker.primary, { native: marker.primary, normalized: role });
|
|
454
|
+
}
|
|
455
|
+
if (marker.alternatives) {
|
|
456
|
+
for (const alt of marker.alternatives) {
|
|
457
|
+
keywordMap.set(alt, { native: alt, normalized: role });
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
for (const extra of extras) {
|
|
463
|
+
keywordMap.set(extra.native, extra);
|
|
464
|
+
}
|
|
465
|
+
this.profileKeywords = Array.from(keywordMap.values()).sort(
|
|
466
|
+
(a, b) => b.native.length - a.native.length
|
|
467
|
+
);
|
|
468
|
+
this.profileKeywordMap = /* @__PURE__ */ new Map();
|
|
469
|
+
for (const keyword of this.profileKeywords) {
|
|
470
|
+
this.profileKeywordMap.set(keyword.native.toLowerCase(), keyword);
|
|
471
|
+
const normalized2 = this.removeDiacritics(keyword.native);
|
|
472
|
+
if (normalized2 !== keyword.native && !this.profileKeywordMap.has(normalized2.toLowerCase())) {
|
|
473
|
+
this.profileKeywordMap.set(normalized2.toLowerCase(), keyword);
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
/**
|
|
478
|
+
* Remove diacritical marks from a word for normalization.
|
|
479
|
+
* Primarily for Arabic (shadda, fatha, kasra, damma, sukun, etc.)
|
|
480
|
+
* but could be extended for other languages.
|
|
481
|
+
*
|
|
482
|
+
* @param word - Word to normalize
|
|
483
|
+
* @returns Word without diacritics
|
|
484
|
+
*/
|
|
485
|
+
removeDiacritics(word) {
|
|
486
|
+
return word.replace(/[\u064B-\u0652\u0670]/g, "");
|
|
487
|
+
}
|
|
488
|
+
/**
|
|
489
|
+
* Try to match a keyword from profile at the current position.
|
|
490
|
+
* Uses longest-first greedy matching (important for non-space languages).
|
|
491
|
+
*
|
|
492
|
+
* @param input - Input string
|
|
493
|
+
* @param pos - Current position
|
|
494
|
+
* @returns Token if matched, null otherwise
|
|
495
|
+
*/
|
|
496
|
+
tryProfileKeyword(input, pos) {
|
|
497
|
+
for (const entry of this.profileKeywords) {
|
|
498
|
+
if (input.slice(pos).startsWith(entry.native)) {
|
|
499
|
+
return createToken(
|
|
500
|
+
entry.native,
|
|
501
|
+
"keyword",
|
|
502
|
+
createPosition(pos, pos + entry.native.length),
|
|
503
|
+
entry.normalized
|
|
504
|
+
);
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
return null;
|
|
508
|
+
}
|
|
509
|
+
/**
|
|
510
|
+
* Check if the remaining input starts with any known keyword.
|
|
511
|
+
* Useful for non-space languages to detect word boundaries.
|
|
512
|
+
*
|
|
513
|
+
* @param input - Input string
|
|
514
|
+
* @param pos - Current position
|
|
515
|
+
* @returns true if a keyword starts at this position
|
|
516
|
+
*/
|
|
517
|
+
isKeywordStart(input, pos) {
|
|
518
|
+
const remaining = input.slice(pos);
|
|
519
|
+
return this.profileKeywords.some((entry) => remaining.startsWith(entry.native));
|
|
520
|
+
}
|
|
521
|
+
/**
|
|
522
|
+
* Look up a keyword by native word (case-insensitive).
|
|
523
|
+
* O(1) lookup using the keyword map.
|
|
524
|
+
*
|
|
525
|
+
* @param native - Native word to look up
|
|
526
|
+
* @returns KeywordEntry if found, undefined otherwise
|
|
527
|
+
*/
|
|
528
|
+
lookupKeyword(native) {
|
|
529
|
+
return this.profileKeywordMap.get(native.toLowerCase());
|
|
530
|
+
}
|
|
531
|
+
/**
|
|
532
|
+
* Check if a word is a known keyword (case-insensitive).
|
|
533
|
+
* O(1) lookup using the keyword map.
|
|
534
|
+
*
|
|
535
|
+
* @param native - Native word to check
|
|
536
|
+
* @returns true if the word is a keyword
|
|
537
|
+
*/
|
|
538
|
+
isKeyword(native) {
|
|
539
|
+
return this.profileKeywordMap.has(native.toLowerCase());
|
|
540
|
+
}
|
|
541
|
+
/**
|
|
542
|
+
* Set the morphological normalizer for this tokenizer.
|
|
543
|
+
*/
|
|
544
|
+
setNormalizer(normalizer) {
|
|
545
|
+
this.normalizer = normalizer;
|
|
546
|
+
}
|
|
547
|
+
/**
|
|
548
|
+
* Try to normalize a word using the morphological normalizer.
|
|
549
|
+
* Returns null if no normalizer is set or normalization fails.
|
|
550
|
+
*
|
|
551
|
+
* Note: We don't check isNormalizable() here because the individual tokenizers
|
|
552
|
+
* historically called normalize() directly without that check. The normalize()
|
|
553
|
+
* method itself handles returning noChange() for words that can't be normalized.
|
|
554
|
+
*/
|
|
555
|
+
tryNormalize(word) {
|
|
556
|
+
if (!this.normalizer) return null;
|
|
557
|
+
const result = this.normalizer.normalize(word);
|
|
558
|
+
if (result.stem !== word && result.confidence >= 0.7) {
|
|
559
|
+
return result;
|
|
560
|
+
}
|
|
561
|
+
return null;
|
|
562
|
+
}
|
|
563
|
+
/**
|
|
564
|
+
* Try morphological normalization and keyword lookup.
|
|
565
|
+
*
|
|
566
|
+
* If the word can be normalized to a stem that matches a known keyword,
|
|
567
|
+
* returns a keyword token with morphological metadata (stem, stemConfidence).
|
|
568
|
+
*
|
|
569
|
+
* This is the common pattern for handling conjugated verbs across languages:
|
|
570
|
+
* 1. Normalize the word (e.g., "toggled" → "toggle")
|
|
571
|
+
* 2. Look up the stem in the keyword map
|
|
572
|
+
* 3. Create a token with both the original form and stem metadata
|
|
573
|
+
*
|
|
574
|
+
* @param word - The word to normalize and look up
|
|
575
|
+
* @param startPos - Start position for the token
|
|
576
|
+
* @param endPos - End position for the token
|
|
577
|
+
* @returns Token if stem matches a keyword, null otherwise
|
|
578
|
+
*/
|
|
579
|
+
tryMorphKeywordMatch(word, startPos, endPos) {
|
|
580
|
+
const result = this.tryNormalize(word);
|
|
581
|
+
if (!result) return null;
|
|
582
|
+
const stemEntry = this.lookupKeyword(result.stem);
|
|
583
|
+
if (!stemEntry) return null;
|
|
584
|
+
const tokenOptions = {
|
|
585
|
+
normalized: stemEntry.normalized,
|
|
586
|
+
stem: result.stem,
|
|
587
|
+
stemConfidence: result.confidence
|
|
588
|
+
};
|
|
589
|
+
return createToken(word, "keyword", createPosition(startPos, endPos), tokenOptions);
|
|
590
|
+
}
|
|
591
|
+
/**
|
|
592
|
+
* Try to extract a CSS selector at the current position.
|
|
593
|
+
*/
|
|
594
|
+
trySelector(input, pos) {
|
|
595
|
+
const selector = extractCssSelector(input, pos);
|
|
596
|
+
if (selector) {
|
|
597
|
+
return createToken(selector, "selector", createPosition(pos, pos + selector.length));
|
|
598
|
+
}
|
|
599
|
+
return null;
|
|
600
|
+
}
|
|
601
|
+
/**
|
|
602
|
+
* Try to extract an event modifier at the current position.
|
|
603
|
+
* Event modifiers are .once, .debounce(N), .throttle(N), .queue(strategy)
|
|
604
|
+
*/
|
|
605
|
+
tryEventModifier(input, pos) {
|
|
606
|
+
if (input[pos] !== ".") {
|
|
607
|
+
return null;
|
|
608
|
+
}
|
|
609
|
+
const match = input.slice(pos).match(/^\.(?:once|debounce|throttle|queue)(?:\(([^)]+)\))?(?:\s|$|\.)/);
|
|
610
|
+
if (!match) {
|
|
611
|
+
return null;
|
|
612
|
+
}
|
|
613
|
+
const fullMatch = match[0].replace(/(\s|\.)$/, "");
|
|
614
|
+
const modifierName = fullMatch.slice(1).split("(")[0];
|
|
615
|
+
const value = match[1];
|
|
616
|
+
const token = createToken(
|
|
617
|
+
fullMatch,
|
|
618
|
+
"event-modifier",
|
|
619
|
+
createPosition(pos, pos + fullMatch.length)
|
|
620
|
+
);
|
|
621
|
+
return {
|
|
622
|
+
...token,
|
|
623
|
+
metadata: {
|
|
624
|
+
modifierName,
|
|
625
|
+
value: value ? modifierName === "queue" ? value : parseInt(value, 10) : void 0
|
|
626
|
+
}
|
|
627
|
+
};
|
|
628
|
+
}
|
|
629
|
+
/**
|
|
630
|
+
* Try to extract a string literal at the current position.
|
|
631
|
+
*/
|
|
632
|
+
tryString(input, pos) {
|
|
633
|
+
const literal = extractStringLiteral(input, pos);
|
|
634
|
+
if (literal) {
|
|
635
|
+
return createToken(literal, "literal", createPosition(pos, pos + literal.length));
|
|
636
|
+
}
|
|
637
|
+
return null;
|
|
638
|
+
}
|
|
639
|
+
/**
|
|
640
|
+
* Try to extract a number at the current position.
|
|
641
|
+
*/
|
|
642
|
+
tryNumber(input, pos) {
|
|
643
|
+
const number = extractNumber(input, pos);
|
|
644
|
+
if (number) {
|
|
645
|
+
return createToken(number, "literal", createPosition(pos, pos + number.length));
|
|
646
|
+
}
|
|
647
|
+
return null;
|
|
648
|
+
}
|
|
649
|
+
/**
|
|
650
|
+
* Try to match a time unit from a list of patterns.
|
|
651
|
+
*
|
|
652
|
+
* @param input - Input string
|
|
653
|
+
* @param pos - Position after the number
|
|
654
|
+
* @param timeUnits - Array of time unit mappings (native pattern → standard suffix)
|
|
655
|
+
* @param skipWhitespace - Whether to skip whitespace before time unit (default: false)
|
|
656
|
+
* @returns Object with matched suffix and new position, or null if no match
|
|
657
|
+
*/
|
|
658
|
+
tryMatchTimeUnit(input, pos, timeUnits, skipWhitespace = false) {
|
|
659
|
+
let unitPos = pos;
|
|
660
|
+
if (skipWhitespace) {
|
|
661
|
+
while (unitPos < input.length && isWhitespace(input[unitPos])) {
|
|
662
|
+
unitPos++;
|
|
663
|
+
}
|
|
664
|
+
}
|
|
665
|
+
const remaining = input.slice(unitPos);
|
|
666
|
+
for (const unit of timeUnits) {
|
|
667
|
+
const candidate = remaining.slice(0, unit.length);
|
|
668
|
+
const matches = unit.caseInsensitive ? candidate.toLowerCase() === unit.pattern.toLowerCase() : candidate === unit.pattern;
|
|
669
|
+
if (matches) {
|
|
670
|
+
if (unit.notFollowedBy) {
|
|
671
|
+
const nextChar = remaining[unit.length] || "";
|
|
672
|
+
if (nextChar === unit.notFollowedBy) continue;
|
|
673
|
+
}
|
|
674
|
+
if (unit.checkBoundary) {
|
|
675
|
+
const nextChar = remaining[unit.length] || "";
|
|
676
|
+
if (isAsciiIdentifierChar(nextChar)) continue;
|
|
677
|
+
}
|
|
678
|
+
return { suffix: unit.suffix, endPos: unitPos + unit.length };
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
return null;
|
|
682
|
+
}
|
|
683
|
+
/**
|
|
684
|
+
* Parse a base number (sign, integer, decimal) without time units.
|
|
685
|
+
* Returns the number string and end position.
|
|
686
|
+
*
|
|
687
|
+
* @param input - Input string
|
|
688
|
+
* @param startPos - Start position
|
|
689
|
+
* @param allowSign - Whether to allow +/- sign (default: true)
|
|
690
|
+
* @returns Object with number string and end position, or null
|
|
691
|
+
*/
|
|
692
|
+
parseBaseNumber(input, startPos, allowSign = true) {
|
|
693
|
+
let pos = startPos;
|
|
694
|
+
let number = "";
|
|
695
|
+
if (allowSign && (input[pos] === "-" || input[pos] === "+")) {
|
|
696
|
+
number += input[pos++];
|
|
697
|
+
}
|
|
698
|
+
if (pos >= input.length || !isDigit(input[pos])) {
|
|
699
|
+
return null;
|
|
700
|
+
}
|
|
701
|
+
while (pos < input.length && isDigit(input[pos])) {
|
|
702
|
+
number += input[pos++];
|
|
703
|
+
}
|
|
704
|
+
if (pos < input.length && input[pos] === ".") {
|
|
705
|
+
number += input[pos++];
|
|
706
|
+
while (pos < input.length && isDigit(input[pos])) {
|
|
707
|
+
number += input[pos++];
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
if (!number || number === "-" || number === "+") return null;
|
|
711
|
+
return { number, endPos: pos };
|
|
712
|
+
}
|
|
713
|
+
/**
|
|
714
|
+
* Try to extract a number with native language time units.
|
|
715
|
+
*
|
|
716
|
+
* This is a template method that handles the common pattern:
|
|
717
|
+
* 1. Parse the base number (sign, integer, decimal)
|
|
718
|
+
* 2. Try to match native language time units
|
|
719
|
+
* 3. Fall back to standard time units (ms, s, m, h)
|
|
720
|
+
*
|
|
721
|
+
* @param input - Input string
|
|
722
|
+
* @param pos - Start position
|
|
723
|
+
* @param nativeTimeUnits - Language-specific time unit mappings
|
|
724
|
+
* @param options - Configuration options
|
|
725
|
+
* @returns Token if number found, null otherwise
|
|
726
|
+
*/
|
|
727
|
+
tryNumberWithTimeUnits(input, pos, nativeTimeUnits, options = {}) {
|
|
728
|
+
const { allowSign = true, skipWhitespace = false } = options;
|
|
729
|
+
const baseResult = this.parseBaseNumber(input, pos, allowSign);
|
|
730
|
+
if (!baseResult) return null;
|
|
731
|
+
let { number, endPos } = baseResult;
|
|
732
|
+
const allUnits = [...nativeTimeUnits, ..._BaseTokenizer.STANDARD_TIME_UNITS];
|
|
733
|
+
const timeMatch = this.tryMatchTimeUnit(input, endPos, allUnits, skipWhitespace);
|
|
734
|
+
if (timeMatch) {
|
|
735
|
+
number += timeMatch.suffix;
|
|
736
|
+
endPos = timeMatch.endPos;
|
|
737
|
+
}
|
|
738
|
+
return createToken(number, "literal", createPosition(pos, endPos));
|
|
739
|
+
}
|
|
740
|
+
/**
|
|
741
|
+
* Try to extract a URL at the current position.
|
|
742
|
+
* Handles /path, ./path, ../path, //domain.com, http://, https://
|
|
743
|
+
*/
|
|
744
|
+
tryUrl(input, pos) {
|
|
745
|
+
const url = extractUrl(input, pos);
|
|
746
|
+
if (url) {
|
|
747
|
+
return createToken(url, "url", createPosition(pos, pos + url.length));
|
|
748
|
+
}
|
|
749
|
+
return null;
|
|
750
|
+
}
|
|
751
|
+
/**
|
|
752
|
+
* Try to extract a variable reference (:varname) at the current position.
|
|
753
|
+
* In hyperscript, :x refers to a local variable named x.
|
|
754
|
+
*/
|
|
755
|
+
tryVariableRef(input, pos) {
|
|
756
|
+
if (input[pos] !== ":") return null;
|
|
757
|
+
if (pos + 1 >= input.length) return null;
|
|
758
|
+
if (!isAsciiIdentifierChar(input[pos + 1])) return null;
|
|
759
|
+
let endPos = pos + 1;
|
|
760
|
+
while (endPos < input.length && isAsciiIdentifierChar(input[endPos])) {
|
|
761
|
+
endPos++;
|
|
762
|
+
}
|
|
763
|
+
const varRef = input.slice(pos, endPos);
|
|
764
|
+
return createToken(varRef, "identifier", createPosition(pos, endPos));
|
|
765
|
+
}
|
|
766
|
+
/**
|
|
767
|
+
* Try to extract an operator or punctuation token at the current position.
|
|
768
|
+
* Handles two-character operators (==, !=, etc.) and single-character operators.
|
|
769
|
+
*/
|
|
770
|
+
tryOperator(input, pos) {
|
|
771
|
+
const twoChar = input.slice(pos, pos + 2);
|
|
772
|
+
if (["==", "!=", "<=", ">=", "&&", "||", "->"].includes(twoChar)) {
|
|
773
|
+
return createToken(twoChar, "operator", createPosition(pos, pos + 2));
|
|
774
|
+
}
|
|
775
|
+
const oneChar = input[pos];
|
|
776
|
+
if (["<", ">", "!", "+", "-", "*", "/", "="].includes(oneChar)) {
|
|
777
|
+
return createToken(oneChar, "operator", createPosition(pos, pos + 1));
|
|
778
|
+
}
|
|
779
|
+
if (["(", ")", "{", "}", ",", ";", ":"].includes(oneChar)) {
|
|
780
|
+
return createToken(oneChar, "punctuation", createPosition(pos, pos + 1));
|
|
781
|
+
}
|
|
782
|
+
return null;
|
|
783
|
+
}
|
|
784
|
+
/**
|
|
785
|
+
* Try to match a multi-character particle from a list.
|
|
786
|
+
*
|
|
787
|
+
* Used by languages like Japanese, Korean, and Chinese that have
|
|
788
|
+
* multi-character particles (e.g., Japanese から, まで, より).
|
|
789
|
+
*
|
|
790
|
+
* @param input - Input string
|
|
791
|
+
* @param pos - Current position
|
|
792
|
+
* @param particles - Array of multi-character particles to match
|
|
793
|
+
* @returns Token if matched, null otherwise
|
|
794
|
+
*/
|
|
795
|
+
tryMultiCharParticle(input, pos, particles) {
|
|
796
|
+
for (const particle of particles) {
|
|
797
|
+
if (input.slice(pos, pos + particle.length) === particle) {
|
|
798
|
+
return createToken(particle, "particle", createPosition(pos, pos + particle.length));
|
|
799
|
+
}
|
|
800
|
+
}
|
|
801
|
+
return null;
|
|
802
|
+
}
|
|
803
|
+
};
|
|
804
|
+
/**
|
|
805
|
+
* Configuration for native language time units.
|
|
806
|
+
* Maps patterns to their standard suffix (ms, s, m, h).
|
|
807
|
+
*/
|
|
808
|
+
_BaseTokenizer.STANDARD_TIME_UNITS = [
|
|
809
|
+
{ pattern: "ms", suffix: "ms", length: 2 },
|
|
810
|
+
{ pattern: "s", suffix: "s", length: 1, checkBoundary: true },
|
|
811
|
+
{ pattern: "m", suffix: "m", length: 1, checkBoundary: true, notFollowedBy: "s" },
|
|
812
|
+
{ pattern: "h", suffix: "h", length: 1, checkBoundary: true }
|
|
813
|
+
];
|
|
814
|
+
var BaseTokenizer = _BaseTokenizer;
|
|
815
|
+
|
|
816
|
+
// src/generators/profiles/polish.ts
|
|
817
|
+
var polishProfile = {
|
|
818
|
+
code: "pl",
|
|
819
|
+
name: "Polish",
|
|
820
|
+
nativeName: "Polski",
|
|
821
|
+
direction: "ltr",
|
|
822
|
+
wordOrder: "SVO",
|
|
823
|
+
markingStrategy: "preposition",
|
|
824
|
+
usesSpaces: true,
|
|
825
|
+
// Polish uses imperative form for commands in software UI
|
|
826
|
+
// (unlike most languages that use infinitive)
|
|
827
|
+
defaultVerbForm: "imperative",
|
|
828
|
+
verb: {
|
|
829
|
+
position: "start",
|
|
830
|
+
subjectDrop: true,
|
|
831
|
+
suffixes: ["a\u0107", "e\u0107", "i\u0107", "y\u0107", "\u0105\u0107", "owa\u0107"]
|
|
832
|
+
},
|
|
833
|
+
references: {
|
|
834
|
+
me: "ja",
|
|
835
|
+
// "I/me"
|
|
836
|
+
it: "to",
|
|
837
|
+
// "it"
|
|
838
|
+
you: "ty",
|
|
839
|
+
// "you"
|
|
840
|
+
result: "wynik",
|
|
841
|
+
event: "zdarzenie",
|
|
842
|
+
target: "cel",
|
|
843
|
+
body: "body"
|
|
844
|
+
},
|
|
845
|
+
possessive: {
|
|
846
|
+
marker: "",
|
|
847
|
+
// Polish uses genitive case, not a marker
|
|
848
|
+
markerPosition: "after-object",
|
|
849
|
+
usePossessiveAdjectives: true,
|
|
850
|
+
specialForms: {
|
|
851
|
+
me: "m\xF3j",
|
|
852
|
+
// "my" (masculine)
|
|
853
|
+
it: "jego",
|
|
854
|
+
// "its"
|
|
855
|
+
you: "tw\xF3j"
|
|
856
|
+
// "your"
|
|
857
|
+
},
|
|
858
|
+
keywords: {
|
|
859
|
+
// "my" variants (masculine/feminine/neuter)
|
|
860
|
+
m\u00F3j: "me",
|
|
861
|
+
moja: "me",
|
|
862
|
+
moje: "me",
|
|
863
|
+
// "your" variants
|
|
864
|
+
tw\u00F3j: "you",
|
|
865
|
+
twoja: "you",
|
|
866
|
+
twoje: "you",
|
|
867
|
+
// "its/his/her" forms
|
|
868
|
+
jego: "it",
|
|
869
|
+
// his/its
|
|
870
|
+
jej: "it"
|
|
871
|
+
// her/its (feminine)
|
|
872
|
+
}
|
|
873
|
+
},
|
|
874
|
+
roleMarkers: {
|
|
875
|
+
destination: { primary: "do", alternatives: ["w", "na"], position: "before" },
|
|
876
|
+
source: { primary: "z", alternatives: ["od", "ze"], position: "before" },
|
|
877
|
+
patient: { primary: "", position: "before" },
|
|
878
|
+
style: { primary: "z", alternatives: ["ze"], position: "before" }
|
|
879
|
+
},
|
|
880
|
+
keywords: {
|
|
881
|
+
// Class/Attribute operations (imperative form)
|
|
882
|
+
toggle: {
|
|
883
|
+
primary: "prze\u0142\u0105cz",
|
|
884
|
+
alternatives: ["przelacz"],
|
|
885
|
+
normalized: "toggle",
|
|
886
|
+
form: "imperative"
|
|
887
|
+
},
|
|
888
|
+
add: { primary: "dodaj", normalized: "add", form: "imperative" },
|
|
889
|
+
remove: {
|
|
890
|
+
primary: "usu\u0144",
|
|
891
|
+
alternatives: ["usun", "wyczy\u015B\u0107", "wyczysc"],
|
|
892
|
+
normalized: "remove",
|
|
893
|
+
form: "imperative"
|
|
894
|
+
},
|
|
895
|
+
// Content operations
|
|
896
|
+
put: {
|
|
897
|
+
primary: "umie\u015B\u0107",
|
|
898
|
+
alternatives: ["umiesc", "wstaw"],
|
|
899
|
+
normalized: "put",
|
|
900
|
+
form: "imperative"
|
|
901
|
+
},
|
|
902
|
+
append: {
|
|
903
|
+
primary: "do\u0142\u0105cz",
|
|
904
|
+
alternatives: ["dolacz"],
|
|
905
|
+
normalized: "append",
|
|
906
|
+
form: "imperative"
|
|
907
|
+
},
|
|
908
|
+
prepend: {
|
|
909
|
+
primary: "poprzed\u017A",
|
|
910
|
+
alternatives: ["poprzedz"],
|
|
911
|
+
normalized: "prepend",
|
|
912
|
+
form: "imperative"
|
|
913
|
+
},
|
|
914
|
+
take: {
|
|
915
|
+
primary: "we\u017A",
|
|
916
|
+
alternatives: ["wez"],
|
|
917
|
+
// removed 'pobierz' - it's the primary keyword for 'get'
|
|
918
|
+
normalized: "take",
|
|
919
|
+
form: "imperative"
|
|
920
|
+
},
|
|
921
|
+
make: {
|
|
922
|
+
primary: "utw\xF3rz",
|
|
923
|
+
alternatives: ["utworz", "stw\xF3rz", "stworz"],
|
|
924
|
+
normalized: "make",
|
|
925
|
+
form: "imperative"
|
|
926
|
+
},
|
|
927
|
+
clone: {
|
|
928
|
+
primary: "sklonuj",
|
|
929
|
+
alternatives: ["kopiuj"],
|
|
930
|
+
normalized: "clone",
|
|
931
|
+
form: "imperative"
|
|
932
|
+
},
|
|
933
|
+
swap: { primary: "zamie\u0144", alternatives: ["zamien"], normalized: "swap", form: "imperative" },
|
|
934
|
+
morph: {
|
|
935
|
+
primary: "przekszta\u0142\u0107",
|
|
936
|
+
alternatives: ["przeksztalc"],
|
|
937
|
+
normalized: "morph",
|
|
938
|
+
form: "imperative"
|
|
939
|
+
},
|
|
940
|
+
// Variable operations
|
|
941
|
+
set: {
|
|
942
|
+
primary: "ustaw",
|
|
943
|
+
alternatives: ["okre\u015Bl", "okresl"],
|
|
944
|
+
normalized: "set",
|
|
945
|
+
form: "imperative"
|
|
946
|
+
},
|
|
947
|
+
get: {
|
|
948
|
+
primary: "pobierz",
|
|
949
|
+
alternatives: ["we\u017A", "wez"],
|
|
950
|
+
normalized: "get",
|
|
951
|
+
form: "imperative"
|
|
952
|
+
},
|
|
953
|
+
increment: {
|
|
954
|
+
primary: "zwi\u0119ksz",
|
|
955
|
+
alternatives: ["zwieksz"],
|
|
956
|
+
normalized: "increment",
|
|
957
|
+
form: "imperative"
|
|
958
|
+
},
|
|
959
|
+
decrement: { primary: "zmniejsz", normalized: "decrement", form: "imperative" },
|
|
960
|
+
log: { primary: "loguj", alternatives: ["wypisz"], normalized: "log", form: "imperative" },
|
|
961
|
+
// Visibility
|
|
962
|
+
show: {
|
|
963
|
+
primary: "poka\u017C",
|
|
964
|
+
alternatives: ["pokaz", "wy\u015Bwietl", "wyswietl"],
|
|
965
|
+
normalized: "show",
|
|
966
|
+
form: "imperative"
|
|
967
|
+
},
|
|
968
|
+
hide: { primary: "ukryj", alternatives: ["schowaj"], normalized: "hide", form: "imperative" },
|
|
969
|
+
transition: {
|
|
970
|
+
primary: "animuj",
|
|
971
|
+
alternatives: ["przej\u015Bcie", "przejscie"],
|
|
972
|
+
normalized: "transition",
|
|
973
|
+
form: "imperative"
|
|
974
|
+
},
|
|
975
|
+
// Events
|
|
976
|
+
on: { primary: "gdy", alternatives: ["kiedy", "przy", "na"], normalized: "on" },
|
|
977
|
+
trigger: {
|
|
978
|
+
primary: "wywo\u0142aj",
|
|
979
|
+
alternatives: ["wywolaj", "wyzw\xF3l", "wyzwol"],
|
|
980
|
+
normalized: "trigger",
|
|
981
|
+
form: "imperative"
|
|
982
|
+
},
|
|
983
|
+
send: { primary: "wy\u015Blij", alternatives: ["wyslij"], normalized: "send", form: "imperative" },
|
|
984
|
+
// DOM focus
|
|
985
|
+
focus: {
|
|
986
|
+
primary: "skup",
|
|
987
|
+
alternatives: ["skupienie"],
|
|
988
|
+
normalized: "focus",
|
|
989
|
+
form: "imperative"
|
|
990
|
+
},
|
|
991
|
+
blur: { primary: "rozmyj", alternatives: ["odskup"], normalized: "blur", form: "imperative" },
|
|
992
|
+
// Navigation
|
|
993
|
+
go: {
|
|
994
|
+
primary: "id\u017A",
|
|
995
|
+
alternatives: ["idz", "przejd\u017A", "przejdz", "nawiguj"],
|
|
996
|
+
normalized: "go",
|
|
997
|
+
form: "imperative"
|
|
998
|
+
},
|
|
999
|
+
// Async
|
|
1000
|
+
wait: { primary: "czekaj", alternatives: ["poczekaj"], normalized: "wait", form: "imperative" },
|
|
1001
|
+
fetch: {
|
|
1002
|
+
primary: "pobierz",
|
|
1003
|
+
alternatives: ["za\u0142aduj", "zaladuj"],
|
|
1004
|
+
normalized: "fetch",
|
|
1005
|
+
form: "imperative"
|
|
1006
|
+
},
|
|
1007
|
+
settle: { primary: "ustabilizuj", normalized: "settle", form: "imperative" },
|
|
1008
|
+
// Control flow
|
|
1009
|
+
if: { primary: "je\u015Bli", alternatives: ["jesli", "je\u017Celi", "jezeli"], normalized: "if" },
|
|
1010
|
+
when: { primary: "kiedy", normalized: "when" },
|
|
1011
|
+
where: { primary: "gdzie", normalized: "where" },
|
|
1012
|
+
else: { primary: "inaczej", alternatives: ["wpp"], normalized: "else" },
|
|
1013
|
+
repeat: {
|
|
1014
|
+
primary: "powt\xF3rz",
|
|
1015
|
+
alternatives: ["powtorz"],
|
|
1016
|
+
normalized: "repeat",
|
|
1017
|
+
form: "imperative"
|
|
1018
|
+
},
|
|
1019
|
+
for: { primary: "dla", alternatives: ["ka\u017Cdy", "kazdy"], normalized: "for" },
|
|
1020
|
+
while: { primary: "dop\xF3ki", alternatives: ["dopoki", "podczas"], normalized: "while" },
|
|
1021
|
+
continue: {
|
|
1022
|
+
primary: "kontynuuj",
|
|
1023
|
+
alternatives: ["dalej"],
|
|
1024
|
+
normalized: "continue",
|
|
1025
|
+
form: "imperative"
|
|
1026
|
+
},
|
|
1027
|
+
halt: {
|
|
1028
|
+
primary: "zatrzymaj",
|
|
1029
|
+
alternatives: ["przerwij", "stop"],
|
|
1030
|
+
normalized: "halt",
|
|
1031
|
+
form: "imperative"
|
|
1032
|
+
},
|
|
1033
|
+
throw: { primary: "rzu\u0107", alternatives: ["rzuc"], normalized: "throw", form: "imperative" },
|
|
1034
|
+
call: { primary: "wywo\u0142aj", alternatives: ["wywolaj"], normalized: "call", form: "imperative" },
|
|
1035
|
+
return: { primary: "zwr\xF3\u0107", alternatives: ["zwroc"], normalized: "return", form: "imperative" },
|
|
1036
|
+
then: {
|
|
1037
|
+
primary: "wtedy",
|
|
1038
|
+
alternatives: ["potem", "nast\u0119pnie", "nastepnie"],
|
|
1039
|
+
normalized: "then"
|
|
1040
|
+
},
|
|
1041
|
+
and: { primary: "i", alternatives: ["oraz"], normalized: "and" },
|
|
1042
|
+
end: { primary: "koniec", normalized: "end" },
|
|
1043
|
+
// Advanced
|
|
1044
|
+
js: { primary: "js", normalized: "js" },
|
|
1045
|
+
async: { primary: "async", alternatives: ["asynchronicznie"], normalized: "async" },
|
|
1046
|
+
tell: { primary: "powiedz", normalized: "tell", form: "imperative" },
|
|
1047
|
+
default: { primary: "domy\u015Blnie", alternatives: ["domyslnie"], normalized: "default" },
|
|
1048
|
+
init: { primary: "inicjuj", normalized: "init", form: "imperative" },
|
|
1049
|
+
behavior: { primary: "zachowanie", normalized: "behavior" },
|
|
1050
|
+
install: { primary: "zainstaluj", normalized: "install", form: "imperative" },
|
|
1051
|
+
measure: { primary: "zmierz", normalized: "measure", form: "imperative" },
|
|
1052
|
+
beep: { primary: "sygna\u0142", normalized: "beep" },
|
|
1053
|
+
break: { primary: "przerwij", normalized: "break" },
|
|
1054
|
+
copy: { primary: "kopiuj", normalized: "copy" },
|
|
1055
|
+
exit: { primary: "wyjd\u017A", normalized: "exit" },
|
|
1056
|
+
pick: { primary: "wybierz", normalized: "pick" },
|
|
1057
|
+
render: { primary: "renderuj", normalized: "render" },
|
|
1058
|
+
// Modifiers
|
|
1059
|
+
into: { primary: "do", alternatives: ["w"], normalized: "into" },
|
|
1060
|
+
before: { primary: "przed", normalized: "before" },
|
|
1061
|
+
after: { primary: "po", normalized: "after" },
|
|
1062
|
+
// Common event names (for event handler patterns)
|
|
1063
|
+
click: { primary: "klikni\u0119ciu", alternatives: ["klikniecie", "klik"], normalized: "click" },
|
|
1064
|
+
hover: { primary: "najechaniu", alternatives: ["hover"], normalized: "hover" },
|
|
1065
|
+
submit: { primary: "wys\u0142aniu", alternatives: ["wyslaniu", "submit"], normalized: "submit" },
|
|
1066
|
+
input: { primary: "wprowadzeniu", alternatives: ["input"], normalized: "input" },
|
|
1067
|
+
change: { primary: "zmianie", alternatives: ["zmiana"], normalized: "change" },
|
|
1068
|
+
// Event modifiers
|
|
1069
|
+
until: { primary: "a\u017C", alternatives: ["az", "do"], normalized: "until" },
|
|
1070
|
+
event: { primary: "zdarzenie", normalized: "event" },
|
|
1071
|
+
from: { primary: "z", alternatives: ["od", "ze"], normalized: "from" }
|
|
1072
|
+
},
|
|
1073
|
+
eventHandler: {
|
|
1074
|
+
keyword: { primary: "gdy", alternatives: ["kiedy", "przy", "na"], normalized: "on" },
|
|
1075
|
+
sourceMarker: { primary: "na", alternatives: ["w", "przy"], position: "before" },
|
|
1076
|
+
conditionalKeyword: { primary: "kiedy", alternatives: ["gdy", "je\u015Bli"] },
|
|
1077
|
+
// Event marker: przy (at/on), used in SVO pattern
|
|
1078
|
+
// Pattern: przy [event] [verb] [patient] na [destination?]
|
|
1079
|
+
// Example: przy kliknięciu przełącz .active na #button
|
|
1080
|
+
eventMarker: { primary: "przy", alternatives: ["na"], position: "before" },
|
|
1081
|
+
temporalMarkers: ["kiedy", "gdy", "przy"]
|
|
1082
|
+
// temporal conjunctions (when, at)
|
|
1083
|
+
}
|
|
1084
|
+
};
|
|
1085
|
+
|
|
1086
|
+
// src/tokenizers/morphology/types.ts
|
|
1087
|
+
function noChange(word) {
|
|
1088
|
+
return { stem: word, confidence: 1 };
|
|
1089
|
+
}
|
|
1090
|
+
function normalized(stem, confidence, metadata) {
|
|
1091
|
+
if (metadata) {
|
|
1092
|
+
return { stem, confidence, metadata };
|
|
1093
|
+
}
|
|
1094
|
+
return { stem, confidence };
|
|
1095
|
+
}
|
|
1096
|
+
|
|
1097
|
+
// src/tokenizers/morphology/polish-normalizer.ts
|
|
1098
|
+
var IMPERATIVE_TO_INFINITIVE = /* @__PURE__ */ new Map([
|
|
1099
|
+
// Core commands
|
|
1100
|
+
["prze\u0142\u0105cz", "prze\u0142\u0105cza\u0107"],
|
|
1101
|
+
["przelacz", "przelaczac"],
|
|
1102
|
+
["dodaj", "dodawa\u0107"],
|
|
1103
|
+
["usu\u0144", "usuwa\u0107"],
|
|
1104
|
+
["usun", "usuwac"],
|
|
1105
|
+
["umie\u015B\u0107", "umieszcza\u0107"],
|
|
1106
|
+
["umiesc", "umieszczac"],
|
|
1107
|
+
["wstaw", "wstawia\u0107"],
|
|
1108
|
+
["ustaw", "ustawia\u0107"],
|
|
1109
|
+
["pobierz", "pobiera\u0107"],
|
|
1110
|
+
["we\u017A", "bra\u0107"],
|
|
1111
|
+
["wez", "brac"],
|
|
1112
|
+
["zwi\u0119ksz", "zwi\u0119ksza\u0107"],
|
|
1113
|
+
["zwieksz", "zwiekszac"],
|
|
1114
|
+
["zmniejsz", "zmniejsza\u0107"],
|
|
1115
|
+
["poka\u017C", "pokazywa\u0107"],
|
|
1116
|
+
["pokaz", "pokazywac"],
|
|
1117
|
+
["ukryj", "ukrywa\u0107"],
|
|
1118
|
+
["schowaj", "schowywa\u0107"],
|
|
1119
|
+
["czekaj", "czeka\u0107"],
|
|
1120
|
+
["poczekaj", "poczeka\u0107"],
|
|
1121
|
+
["id\u017A", "i\u015B\u0107"],
|
|
1122
|
+
["idz", "isc"],
|
|
1123
|
+
["przejd\u017A", "przej\u015B\u0107"],
|
|
1124
|
+
["przejdz", "przejsc"],
|
|
1125
|
+
["wywo\u0142aj", "wywo\u0142ywa\u0107"],
|
|
1126
|
+
["wywolaj", "wywolywac"],
|
|
1127
|
+
["wy\u015Blij", "wysy\u0142a\u0107"],
|
|
1128
|
+
["wyslij", "wysylac"],
|
|
1129
|
+
["loguj", "logowa\u0107"],
|
|
1130
|
+
["wypisz", "wypisywa\u0107"],
|
|
1131
|
+
["sklonuj", "sklonowa\u0107"],
|
|
1132
|
+
["kopiuj", "kopiowa\u0107"],
|
|
1133
|
+
["zamie\u0144", "zamienia\u0107"],
|
|
1134
|
+
["zamien", "zamieniac"],
|
|
1135
|
+
["utw\xF3rz", "tworzy\u0107"],
|
|
1136
|
+
["utworz", "tworzyc"],
|
|
1137
|
+
["stw\xF3rz", "stwarza\u0107"],
|
|
1138
|
+
["stworz", "stwarzac"],
|
|
1139
|
+
["skup", "skupia\u0107"],
|
|
1140
|
+
["rozmyj", "rozmywa\u0107"],
|
|
1141
|
+
["nawiguj", "nawigowa\u0107"],
|
|
1142
|
+
["za\u0142aduj", "\u0142adowa\u0107"],
|
|
1143
|
+
["zaladuj", "ladowac"],
|
|
1144
|
+
["powt\xF3rz", "powtarza\u0107"],
|
|
1145
|
+
["powtorz", "powtarzac"],
|
|
1146
|
+
["kontynuuj", "kontynuowa\u0107"],
|
|
1147
|
+
["zatrzymaj", "zatrzymywa\u0107"],
|
|
1148
|
+
["przerwij", "przerywa\u0107"],
|
|
1149
|
+
["rzu\u0107", "rzuca\u0107"],
|
|
1150
|
+
["rzuc", "rzucac"],
|
|
1151
|
+
["zwr\xF3\u0107", "zwraca\u0107"],
|
|
1152
|
+
["zwroc", "zwracac"],
|
|
1153
|
+
["inicjuj", "inicjowa\u0107"],
|
|
1154
|
+
["zainstaluj", "instalowa\u0107"],
|
|
1155
|
+
["zmierz", "mierzy\u0107"]
|
|
1156
|
+
]);
|
|
1157
|
+
var PolishMorphologicalNormalizer = class {
|
|
1158
|
+
constructor() {
|
|
1159
|
+
this.language = "pl";
|
|
1160
|
+
}
|
|
1161
|
+
/**
|
|
1162
|
+
* Check if a word appears to be a Polish verb form that can be normalized.
|
|
1163
|
+
*/
|
|
1164
|
+
isNormalizable(word) {
|
|
1165
|
+
if (word.length < 3) return false;
|
|
1166
|
+
return /[a-zA-ZąęćńóśźżłĄĘĆŃÓŚŹŻŁ]/.test(word);
|
|
1167
|
+
}
|
|
1168
|
+
/**
|
|
1169
|
+
* Normalize a Polish verb to its base/infinitive form.
|
|
1170
|
+
*/
|
|
1171
|
+
normalize(word) {
|
|
1172
|
+
const lower = word.toLowerCase();
|
|
1173
|
+
if (this.isInfinitive(lower)) {
|
|
1174
|
+
return noChange(lower);
|
|
1175
|
+
}
|
|
1176
|
+
const imperativeResult = this.tryImperativeNormalization(lower);
|
|
1177
|
+
if (imperativeResult) return imperativeResult;
|
|
1178
|
+
const pastResult = this.tryPastTenseNormalization(lower);
|
|
1179
|
+
if (pastResult) return pastResult;
|
|
1180
|
+
const presentResult = this.tryPresentTenseNormalization(lower);
|
|
1181
|
+
if (presentResult) return presentResult;
|
|
1182
|
+
return noChange(lower);
|
|
1183
|
+
}
|
|
1184
|
+
/**
|
|
1185
|
+
* Check if word is already in infinitive form.
|
|
1186
|
+
*/
|
|
1187
|
+
isInfinitive(word) {
|
|
1188
|
+
const infinitiveEndings = ["a\u0107", "e\u0107", "i\u0107", "y\u0107", "\u0105\u0107", "owa\u0107", "iwa\u0107", "ywa\u0107"];
|
|
1189
|
+
return infinitiveEndings.some((ending) => word.endsWith(ending));
|
|
1190
|
+
}
|
|
1191
|
+
/**
|
|
1192
|
+
* Try to normalize imperative form to infinitive.
|
|
1193
|
+
*
|
|
1194
|
+
* Polish imperative (2nd person singular) patterns:
|
|
1195
|
+
* - pisać → pisz (write)
|
|
1196
|
+
* - czytać → czytaj (read)
|
|
1197
|
+
* - robić → rób (do)
|
|
1198
|
+
* - mówić → mów (speak)
|
|
1199
|
+
* - uczyć → ucz (teach)
|
|
1200
|
+
*/
|
|
1201
|
+
tryImperativeNormalization(word) {
|
|
1202
|
+
if (IMPERATIVE_TO_INFINITIVE.has(word)) {
|
|
1203
|
+
return normalized(IMPERATIVE_TO_INFINITIVE.get(word), 0.95, {
|
|
1204
|
+
removedSuffixes: ["imperative"],
|
|
1205
|
+
conjugationType: "imperative"
|
|
1206
|
+
});
|
|
1207
|
+
}
|
|
1208
|
+
if (word.endsWith("aj")) {
|
|
1209
|
+
return normalized(word.slice(0, -2) + "a\u0107", 0.8, {
|
|
1210
|
+
removedSuffixes: ["aj"],
|
|
1211
|
+
conjugationType: "imperative"
|
|
1212
|
+
});
|
|
1213
|
+
}
|
|
1214
|
+
if (word.endsWith("uj")) {
|
|
1215
|
+
return normalized(word.slice(0, -2) + "owa\u0107", 0.8, {
|
|
1216
|
+
removedSuffixes: ["uj"],
|
|
1217
|
+
conjugationType: "imperative"
|
|
1218
|
+
});
|
|
1219
|
+
}
|
|
1220
|
+
if (word.endsWith("ij")) {
|
|
1221
|
+
return normalized(word.slice(0, -2) + "i\u0107", 0.75, {
|
|
1222
|
+
removedSuffixes: ["ij"],
|
|
1223
|
+
conjugationType: "imperative"
|
|
1224
|
+
});
|
|
1225
|
+
}
|
|
1226
|
+
return null;
|
|
1227
|
+
}
|
|
1228
|
+
/**
|
|
1229
|
+
* Try to normalize present tense form to infinitive.
|
|
1230
|
+
*/
|
|
1231
|
+
tryPresentTenseNormalization(word) {
|
|
1232
|
+
if (word.endsWith("uj\u0119") || word.endsWith("uje")) {
|
|
1233
|
+
return normalized(word.slice(0, -3) + "owa\u0107", 0.85, {
|
|
1234
|
+
removedSuffixes: ["uj\u0119"],
|
|
1235
|
+
conjugationType: "present"
|
|
1236
|
+
});
|
|
1237
|
+
}
|
|
1238
|
+
if (word.endsWith("am") && word.length > 3) {
|
|
1239
|
+
return normalized(word.slice(0, -2) + "a\u0107", 0.8, {
|
|
1240
|
+
removedSuffixes: ["am"],
|
|
1241
|
+
conjugationType: "present"
|
|
1242
|
+
});
|
|
1243
|
+
}
|
|
1244
|
+
if (word.endsWith("em") && word.length > 3) {
|
|
1245
|
+
return normalized(word.slice(0, -2) + "e\u0107", 0.75, {
|
|
1246
|
+
removedSuffixes: ["em"],
|
|
1247
|
+
conjugationType: "present"
|
|
1248
|
+
});
|
|
1249
|
+
}
|
|
1250
|
+
if (word.endsWith("\u0119") && word.length > 2) {
|
|
1251
|
+
return normalized(word.slice(0, -1) + "a\u0107", 0.7, {
|
|
1252
|
+
removedSuffixes: ["\u0119"],
|
|
1253
|
+
conjugationType: "present"
|
|
1254
|
+
});
|
|
1255
|
+
}
|
|
1256
|
+
return null;
|
|
1257
|
+
}
|
|
1258
|
+
/**
|
|
1259
|
+
* Try to normalize past tense form to infinitive.
|
|
1260
|
+
*/
|
|
1261
|
+
tryPastTenseNormalization(word) {
|
|
1262
|
+
if (word.endsWith("a\u0142em") || word.endsWith("a\u0142am")) {
|
|
1263
|
+
return normalized(word.slice(0, -4) + "a\u0107", 0.85, {
|
|
1264
|
+
removedSuffixes: [word.slice(-4)],
|
|
1265
|
+
conjugationType: "past"
|
|
1266
|
+
});
|
|
1267
|
+
}
|
|
1268
|
+
if (word.endsWith("a\u0142") || word.endsWith("a\u0142a")) {
|
|
1269
|
+
const suffixLen = word.endsWith("a\u0142a") ? 3 : 2;
|
|
1270
|
+
return normalized(word.slice(0, -suffixLen) + "a\u0107", 0.8, {
|
|
1271
|
+
removedSuffixes: [word.slice(-suffixLen)],
|
|
1272
|
+
conjugationType: "past"
|
|
1273
|
+
});
|
|
1274
|
+
}
|
|
1275
|
+
if (word.endsWith("i\u0142em") || word.endsWith("i\u0142am") || word.endsWith("ilem") || word.endsWith("ilam")) {
|
|
1276
|
+
return normalized(word.slice(0, -4) + "i\u0107", 0.85, {
|
|
1277
|
+
removedSuffixes: [word.slice(-4)],
|
|
1278
|
+
conjugationType: "past"
|
|
1279
|
+
});
|
|
1280
|
+
}
|
|
1281
|
+
if (word.endsWith("i\u0142") || word.endsWith("i\u0142a") || word.endsWith("il") || word.endsWith("ila")) {
|
|
1282
|
+
const suffixLen = word.endsWith("i\u0142a") || word.endsWith("ila") ? 3 : 2;
|
|
1283
|
+
return normalized(word.slice(0, -suffixLen) + "i\u0107", 0.8, {
|
|
1284
|
+
removedSuffixes: [word.slice(-suffixLen)],
|
|
1285
|
+
conjugationType: "past"
|
|
1286
|
+
});
|
|
1287
|
+
}
|
|
1288
|
+
return null;
|
|
1289
|
+
}
|
|
1290
|
+
};
|
|
1291
|
+
var polishMorphologicalNormalizer = new PolishMorphologicalNormalizer();
|
|
1292
|
+
|
|
1293
|
+
// src/tokenizers/polish.ts
|
|
1294
|
+
var { isLetter: isPolishLetter, isIdentifierChar: isPolishIdentifierChar } = createLatinCharClassifiers(/[a-zA-ZąęćńóśźżłĄĘĆŃÓŚŹŻŁ]/);
|
|
1295
|
+
var PREPOSITIONS = /* @__PURE__ */ new Set([
|
|
1296
|
+
"do",
|
|
1297
|
+
// to, into
|
|
1298
|
+
"od",
|
|
1299
|
+
// from
|
|
1300
|
+
"z",
|
|
1301
|
+
// from, with
|
|
1302
|
+
"ze",
|
|
1303
|
+
// from, with (before consonant clusters)
|
|
1304
|
+
"w",
|
|
1305
|
+
// in
|
|
1306
|
+
"we",
|
|
1307
|
+
// in (before consonant clusters)
|
|
1308
|
+
"na",
|
|
1309
|
+
// on, for
|
|
1310
|
+
"po",
|
|
1311
|
+
// after, for
|
|
1312
|
+
"pod",
|
|
1313
|
+
// under
|
|
1314
|
+
"przed",
|
|
1315
|
+
// before, in front of
|
|
1316
|
+
"za",
|
|
1317
|
+
// behind, for
|
|
1318
|
+
"nad",
|
|
1319
|
+
// above
|
|
1320
|
+
"mi\u0119dzy",
|
|
1321
|
+
// between
|
|
1322
|
+
"miedzy",
|
|
1323
|
+
// between (no diacritic)
|
|
1324
|
+
"przez",
|
|
1325
|
+
// through, by
|
|
1326
|
+
"dla",
|
|
1327
|
+
// for
|
|
1328
|
+
"bez",
|
|
1329
|
+
// without
|
|
1330
|
+
"o",
|
|
1331
|
+
// about
|
|
1332
|
+
"przy",
|
|
1333
|
+
// at, by
|
|
1334
|
+
"u",
|
|
1335
|
+
// at (someone's place)
|
|
1336
|
+
"wed\u0142ug",
|
|
1337
|
+
// according to
|
|
1338
|
+
"wedlug",
|
|
1339
|
+
// according to (no diacritic)
|
|
1340
|
+
"mimo",
|
|
1341
|
+
// despite
|
|
1342
|
+
"w\u015Br\xF3d",
|
|
1343
|
+
// among
|
|
1344
|
+
"wsrod",
|
|
1345
|
+
// among (no diacritic)
|
|
1346
|
+
"obok",
|
|
1347
|
+
// beside
|
|
1348
|
+
"poza",
|
|
1349
|
+
// outside, beyond
|
|
1350
|
+
"wok\xF3\u0142",
|
|
1351
|
+
// around
|
|
1352
|
+
"wokol",
|
|
1353
|
+
// around (no diacritic)
|
|
1354
|
+
"przeciw",
|
|
1355
|
+
// against
|
|
1356
|
+
"ku"
|
|
1357
|
+
// towards
|
|
1358
|
+
]);
|
|
1359
|
+
var POLISH_EXTRAS = [
|
|
1360
|
+
// Values/Literals
|
|
1361
|
+
{ native: "prawda", normalized: "true" },
|
|
1362
|
+
{ native: "fa\u0142sz", normalized: "false" },
|
|
1363
|
+
{ native: "falsz", normalized: "false" },
|
|
1364
|
+
{ native: "null", normalized: "null" },
|
|
1365
|
+
{ native: "nieokre\u015Blony", normalized: "undefined" },
|
|
1366
|
+
{ native: "nieokreslony", normalized: "undefined" },
|
|
1367
|
+
// Positional
|
|
1368
|
+
{ native: "pierwszy", normalized: "first" },
|
|
1369
|
+
{ native: "pierwsza", normalized: "first" },
|
|
1370
|
+
{ native: "pierwsze", normalized: "first" },
|
|
1371
|
+
{ native: "ostatni", normalized: "last" },
|
|
1372
|
+
{ native: "ostatnia", normalized: "last" },
|
|
1373
|
+
{ native: "ostatnie", normalized: "last" },
|
|
1374
|
+
{ native: "nast\u0119pny", normalized: "next" },
|
|
1375
|
+
{ native: "nastepny", normalized: "next" },
|
|
1376
|
+
{ native: "poprzedni", normalized: "previous" },
|
|
1377
|
+
{ native: "najbli\u017Cszy", normalized: "closest" },
|
|
1378
|
+
{ native: "najblizszy", normalized: "closest" },
|
|
1379
|
+
{ native: "rodzic", normalized: "parent" },
|
|
1380
|
+
// Events
|
|
1381
|
+
{ native: "klikni\u0119cie", normalized: "click" },
|
|
1382
|
+
{ native: "klikniecie", normalized: "click" },
|
|
1383
|
+
{ native: "klik", normalized: "click" },
|
|
1384
|
+
{ native: "click", normalized: "click" },
|
|
1385
|
+
{ native: "zmiana", normalized: "change" },
|
|
1386
|
+
{ native: "wys\u0142anie", normalized: "submit" },
|
|
1387
|
+
{ native: "wyslanie", normalized: "submit" },
|
|
1388
|
+
{ native: "naci\u015Bni\u0119cie", normalized: "keydown" },
|
|
1389
|
+
{ native: "nacisniecie", normalized: "keydown" },
|
|
1390
|
+
{ native: "klawisz", normalized: "keydown" },
|
|
1391
|
+
{ native: "najechanie", normalized: "mouseover" },
|
|
1392
|
+
{ native: "zjechanie", normalized: "mouseout" },
|
|
1393
|
+
{ native: "rozmycie", normalized: "blur" },
|
|
1394
|
+
{ native: "za\u0142adowanie", normalized: "load" },
|
|
1395
|
+
{ native: "zaladowanie", normalized: "load" },
|
|
1396
|
+
{ native: "przewini\u0119cie", normalized: "scroll" },
|
|
1397
|
+
{ native: "przewiniecie", normalized: "scroll" },
|
|
1398
|
+
{ native: "input", normalized: "input" },
|
|
1399
|
+
// References
|
|
1400
|
+
{ native: "m\xF3j", normalized: "my" },
|
|
1401
|
+
{ native: "moj", normalized: "my" },
|
|
1402
|
+
// Time units
|
|
1403
|
+
{ native: "sekunda", normalized: "s" },
|
|
1404
|
+
{ native: "sekundy", normalized: "s" },
|
|
1405
|
+
{ native: "sekund", normalized: "s" },
|
|
1406
|
+
{ native: "milisekunda", normalized: "ms" },
|
|
1407
|
+
{ native: "milisekundy", normalized: "ms" },
|
|
1408
|
+
{ native: "milisekund", normalized: "ms" },
|
|
1409
|
+
{ native: "minuta", normalized: "m" },
|
|
1410
|
+
{ native: "minuty", normalized: "m" },
|
|
1411
|
+
{ native: "minut", normalized: "m" },
|
|
1412
|
+
{ native: "godzina", normalized: "h" },
|
|
1413
|
+
{ native: "godziny", normalized: "h" },
|
|
1414
|
+
{ native: "godzin", normalized: "h" },
|
|
1415
|
+
// Additional verb forms not in profile (lay/put variants)
|
|
1416
|
+
{ native: "po\u0142\xF3\u017C", normalized: "put" },
|
|
1417
|
+
{ native: "poloz", normalized: "put" },
|
|
1418
|
+
// Logical/conditional
|
|
1419
|
+
{ native: "lub", normalized: "or" },
|
|
1420
|
+
{ native: "nie", normalized: "not" },
|
|
1421
|
+
{ native: "jest", normalized: "is" },
|
|
1422
|
+
{ native: "istnieje", normalized: "exists" },
|
|
1423
|
+
{ native: "pusty", normalized: "empty" },
|
|
1424
|
+
{ native: "puste", normalized: "empty" }
|
|
1425
|
+
];
|
|
1426
|
+
var PolishTokenizer = class extends BaseTokenizer {
|
|
1427
|
+
constructor() {
|
|
1428
|
+
super();
|
|
1429
|
+
this.language = "pl";
|
|
1430
|
+
this.direction = "ltr";
|
|
1431
|
+
this.initializeKeywordsFromProfile(polishProfile, POLISH_EXTRAS);
|
|
1432
|
+
this.normalizer = new PolishMorphologicalNormalizer();
|
|
1433
|
+
}
|
|
1434
|
+
tokenize(input) {
|
|
1435
|
+
const tokens = [];
|
|
1436
|
+
let pos = 0;
|
|
1437
|
+
while (pos < input.length) {
|
|
1438
|
+
if (isWhitespace(input[pos])) {
|
|
1439
|
+
pos++;
|
|
1440
|
+
continue;
|
|
1441
|
+
}
|
|
1442
|
+
if (isSelectorStart(input[pos])) {
|
|
1443
|
+
const modifierToken = this.tryEventModifier(input, pos);
|
|
1444
|
+
if (modifierToken) {
|
|
1445
|
+
tokens.push(modifierToken);
|
|
1446
|
+
pos = modifierToken.position.end;
|
|
1447
|
+
continue;
|
|
1448
|
+
}
|
|
1449
|
+
if (this.tryPropertyAccess(input, pos, tokens)) {
|
|
1450
|
+
pos++;
|
|
1451
|
+
continue;
|
|
1452
|
+
}
|
|
1453
|
+
const selectorToken = this.trySelector(input, pos);
|
|
1454
|
+
if (selectorToken) {
|
|
1455
|
+
tokens.push(selectorToken);
|
|
1456
|
+
pos = selectorToken.position.end;
|
|
1457
|
+
continue;
|
|
1458
|
+
}
|
|
1459
|
+
}
|
|
1460
|
+
if (isQuote(input[pos])) {
|
|
1461
|
+
const stringToken = this.tryString(input, pos);
|
|
1462
|
+
if (stringToken) {
|
|
1463
|
+
tokens.push(stringToken);
|
|
1464
|
+
pos = stringToken.position.end;
|
|
1465
|
+
continue;
|
|
1466
|
+
}
|
|
1467
|
+
}
|
|
1468
|
+
if (isUrlStart(input, pos)) {
|
|
1469
|
+
const urlToken = this.tryUrl(input, pos);
|
|
1470
|
+
if (urlToken) {
|
|
1471
|
+
tokens.push(urlToken);
|
|
1472
|
+
pos = urlToken.position.end;
|
|
1473
|
+
continue;
|
|
1474
|
+
}
|
|
1475
|
+
}
|
|
1476
|
+
if (isDigit(input[pos]) || input[pos] === "-" && pos + 1 < input.length && isDigit(input[pos + 1])) {
|
|
1477
|
+
const numberToken = this.extractNumber(input, pos);
|
|
1478
|
+
if (numberToken) {
|
|
1479
|
+
tokens.push(numberToken);
|
|
1480
|
+
pos = numberToken.position.end;
|
|
1481
|
+
continue;
|
|
1482
|
+
}
|
|
1483
|
+
}
|
|
1484
|
+
const varToken = this.tryVariableRef(input, pos);
|
|
1485
|
+
if (varToken) {
|
|
1486
|
+
tokens.push(varToken);
|
|
1487
|
+
pos = varToken.position.end;
|
|
1488
|
+
continue;
|
|
1489
|
+
}
|
|
1490
|
+
if (isPolishLetter(input[pos])) {
|
|
1491
|
+
const wordToken = this.extractWord(input, pos);
|
|
1492
|
+
if (wordToken) {
|
|
1493
|
+
tokens.push(wordToken);
|
|
1494
|
+
pos = wordToken.position.end;
|
|
1495
|
+
continue;
|
|
1496
|
+
}
|
|
1497
|
+
}
|
|
1498
|
+
const operatorToken = this.tryOperator(input, pos);
|
|
1499
|
+
if (operatorToken) {
|
|
1500
|
+
tokens.push(operatorToken);
|
|
1501
|
+
pos = operatorToken.position.end;
|
|
1502
|
+
continue;
|
|
1503
|
+
}
|
|
1504
|
+
pos++;
|
|
1505
|
+
}
|
|
1506
|
+
return new TokenStreamImpl(tokens, "pl");
|
|
1507
|
+
}
|
|
1508
|
+
classifyToken(token) {
|
|
1509
|
+
const lower = token.toLowerCase();
|
|
1510
|
+
if (PREPOSITIONS.has(lower)) return "particle";
|
|
1511
|
+
if (this.isKeyword(lower)) return "keyword";
|
|
1512
|
+
if (token.startsWith("#") || token.startsWith(".") || token.startsWith("[") || token.startsWith("*") || token.startsWith("<"))
|
|
1513
|
+
return "selector";
|
|
1514
|
+
if (token.startsWith('"') || token.startsWith("'")) return "literal";
|
|
1515
|
+
if (/^\d/.test(token)) return "literal";
|
|
1516
|
+
return "identifier";
|
|
1517
|
+
}
|
|
1518
|
+
extractWord(input, startPos) {
|
|
1519
|
+
let pos = startPos;
|
|
1520
|
+
let word = "";
|
|
1521
|
+
while (pos < input.length && isPolishIdentifierChar(input[pos])) {
|
|
1522
|
+
word += input[pos++];
|
|
1523
|
+
}
|
|
1524
|
+
if (!word) return null;
|
|
1525
|
+
const lower = word.toLowerCase();
|
|
1526
|
+
if (PREPOSITIONS.has(lower)) {
|
|
1527
|
+
return createToken(word, "particle", createPosition(startPos, pos));
|
|
1528
|
+
}
|
|
1529
|
+
const keywordEntry = this.lookupKeyword(lower);
|
|
1530
|
+
if (keywordEntry) {
|
|
1531
|
+
return createToken(word, "keyword", createPosition(startPos, pos), keywordEntry.normalized);
|
|
1532
|
+
}
|
|
1533
|
+
return createToken(word, "identifier", createPosition(startPos, pos));
|
|
1534
|
+
}
|
|
1535
|
+
extractNumber(input, startPos) {
|
|
1536
|
+
let pos = startPos;
|
|
1537
|
+
let number = "";
|
|
1538
|
+
if (input[pos] === "-" || input[pos] === "+") {
|
|
1539
|
+
number += input[pos++];
|
|
1540
|
+
}
|
|
1541
|
+
while (pos < input.length && isDigit(input[pos])) {
|
|
1542
|
+
number += input[pos++];
|
|
1543
|
+
}
|
|
1544
|
+
if (pos < input.length && input[pos] === ".") {
|
|
1545
|
+
number += input[pos++];
|
|
1546
|
+
while (pos < input.length && isDigit(input[pos])) {
|
|
1547
|
+
number += input[pos++];
|
|
1548
|
+
}
|
|
1549
|
+
}
|
|
1550
|
+
let unitPos = pos;
|
|
1551
|
+
while (unitPos < input.length && isWhitespace(input[unitPos])) {
|
|
1552
|
+
unitPos++;
|
|
1553
|
+
}
|
|
1554
|
+
const remaining = input.slice(unitPos).toLowerCase();
|
|
1555
|
+
if (remaining.startsWith("milisekund") || remaining.startsWith("milisekunda")) {
|
|
1556
|
+
number += "ms";
|
|
1557
|
+
pos = unitPos + (remaining.startsWith("milisekundy") ? 11 : remaining.startsWith("milisekunda") ? 11 : 10);
|
|
1558
|
+
} else if (remaining.startsWith("sekund") || remaining.startsWith("sekunda")) {
|
|
1559
|
+
number += "s";
|
|
1560
|
+
pos = unitPos + (remaining.startsWith("sekundy") ? 7 : remaining.startsWith("sekunda") ? 7 : 6);
|
|
1561
|
+
} else if (remaining.startsWith("minut") || remaining.startsWith("minuta")) {
|
|
1562
|
+
number += "m";
|
|
1563
|
+
pos = unitPos + (remaining.startsWith("minuty") ? 6 : remaining.startsWith("minuta") ? 6 : 5);
|
|
1564
|
+
} else if (remaining.startsWith("godzin") || remaining.startsWith("godzina")) {
|
|
1565
|
+
number += "h";
|
|
1566
|
+
pos = unitPos + (remaining.startsWith("godziny") ? 7 : remaining.startsWith("godzina") ? 7 : 6);
|
|
1567
|
+
} else if (remaining.startsWith("ms")) {
|
|
1568
|
+
number += "ms";
|
|
1569
|
+
pos = unitPos + 2;
|
|
1570
|
+
} else if (remaining.startsWith("s") && !remaining.startsWith("se")) {
|
|
1571
|
+
number += "s";
|
|
1572
|
+
pos = unitPos + 1;
|
|
1573
|
+
}
|
|
1574
|
+
if (!number || number === "-" || number === "+") return null;
|
|
1575
|
+
return createToken(number, "literal", createPosition(startPos, pos));
|
|
1576
|
+
}
|
|
1577
|
+
};
|
|
1578
|
+
var polishTokenizer = new PolishTokenizer();
|
|
1579
|
+
|
|
1580
|
+
// src/languages/pl.ts
|
|
1581
|
+
registerLanguage("pl", polishTokenizer, polishProfile);
|
|
1582
|
+
export {
|
|
1583
|
+
polishProfile,
|
|
1584
|
+
polishTokenizer
|
|
1585
|
+
};
|
|
1586
|
+
//# sourceMappingURL=pl.js.map
|