@lokascript/i18n 1.0.0 → 1.1.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/browser.cjs +18 -13
- package/dist/browser.cjs.map +1 -1
- package/dist/browser.js +18 -13
- package/dist/browser.js.map +1 -1
- package/dist/index.cjs +19 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +19 -14
- package/dist/index.js.map +1 -1
- package/dist/lokascript-i18n.min.js +2 -0
- package/dist/lokascript-i18n.min.js.map +1 -0
- package/dist/{hyperfixi-i18n.mjs → lokascript-i18n.mjs} +19 -14
- package/dist/lokascript-i18n.mjs.map +1 -0
- package/package.json +20 -12
- package/src/grammar/grammar.test.ts +13 -12
- package/src/grammar/profiles/index.ts +18 -13
- package/dist/hyperfixi-i18n.min.js +0 -2
- package/dist/hyperfixi-i18n.min.js.map +0 -1
- package/dist/hyperfixi-i18n.mjs.map +0 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types.ts","../src/dictionaries/en.ts","../src/dictionaries/es.ts","../src/dictionaries/ko.ts","../src/dictionaries/zh.ts","../src/dictionaries/fr.ts","../src/dictionaries/de.ts","../src/dictionaries/ja.ts","../src/dictionaries/ar.ts","../src/dictionaries/tr.ts","../src/dictionaries/id.ts","../src/dictionaries/qu.ts","../src/dictionaries/sw.ts","../src/dictionaries/pt.ts","../src/dictionaries/it.ts","../src/dictionaries/vi.ts","../src/dictionaries/pl.ts","../src/dictionaries/ru.ts","../src/dictionaries/uk.ts","../src/dictionaries/hi.ts","../src/dictionaries/bn.ts","../src/dictionaries/th.ts","../src/dictionaries/ms.ts","../src/dictionaries/tl.ts","../src/dictionaries/index.ts","../src/utils/locale.ts","../src/utils/tokenizer-adapter.ts","../src/validators/schema.ts","../src/validators/index.ts","../src/translator.ts","../src/constants.ts","../src/parser/create-provider.ts","../src/parser/es.ts","../src/parser/ja.ts","../src/parser/fr.ts","../src/parser/de.ts","../src/parser/ar.ts","../src/parser/ko.ts","../src/parser/zh.ts","../src/parser/tr.ts","../src/parser/id.ts","../src/parser/qu.ts","../src/parser/sw.ts","../src/parser/pt.ts","../src/parser/locale-manager.ts","../src/plugins/vite.ts","../src/plugins/webpack.ts","../src/ssr-integration.ts","../src/pluralization.ts","../src/formatting.ts","../src/runtime.ts","../../../node_modules/zod/v3/external.js","../../../node_modules/zod/v3/helpers/util.js","../../../node_modules/zod/v3/ZodError.js","../../../node_modules/zod/v3/locales/en.js","../../../node_modules/zod/v3/errors.js","../../../node_modules/zod/v3/helpers/parseUtil.js","../../../node_modules/zod/v3/helpers/errorUtil.js","../../../node_modules/zod/v3/types.js","../src/enhanced-i18n.ts","../src/grammar/types.ts","../src/grammar/profiles/index.ts","../src/grammar/direct-mappings.ts","../src/grammar/transformer.ts","../src/index.ts"],"names":["en","es","ja","ko","zh","fr","de","ar","tr","id","pt","qu","sw","it","vi","pl","supportedLocales","toLocale","translator","parse","n","runtimeI18n","util","objectUtil","errorUtil","errorMap","ctx","result","issues","elements","processed","r","ZodFirstPartyTypeKind","dictionaries","normalizedIndents","tokenize","parts"],"mappings":"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","file":"index.cjs","sourcesContent":["// packages/i18n/src/types.ts\n\n/**\n * Dictionary category names as a union type for type-safe access.\n */\nexport type DictionaryCategory =\n | 'commands'\n | 'modifiers'\n | 'events'\n | 'logical'\n | 'temporal'\n | 'values'\n | 'attributes'\n | 'expressions';\n\n/**\n * All valid dictionary categories.\n */\nexport const DICTIONARY_CATEGORIES: readonly DictionaryCategory[] = [\n 'commands',\n 'modifiers',\n 'events',\n 'logical',\n 'temporal',\n 'values',\n 'attributes',\n 'expressions',\n] as const;\n\n/**\n * Dictionary structure for i18n translations.\n * Maps English canonical keywords to locale-specific translations.\n *\n * Note: Index signature removed for stricter type safety.\n * Use DICTIONARY_CATEGORIES to iterate over categories.\n */\nexport interface Dictionary {\n commands: Record<string, string>;\n modifiers: Record<string, string>;\n events: Record<string, string>;\n logical: Record<string, string>;\n temporal: Record<string, string>;\n values: Record<string, string>;\n attributes: Record<string, string>;\n expressions: Record<string, string>;\n}\n\n// =============================================================================\n// Type Guards\n// =============================================================================\n\n/**\n * Type guard to check if a string is a valid dictionary category.\n */\nexport function isDictionaryCategory(key: string): key is DictionaryCategory {\n return DICTIONARY_CATEGORIES.includes(key as DictionaryCategory);\n}\n\n/**\n * Safely get a category from a dictionary with type narrowing.\n * Returns undefined if the category doesn't exist.\n */\nexport function getDictionaryCategory(\n dict: Dictionary,\n category: string\n): Record<string, string> | undefined {\n if (isDictionaryCategory(category)) {\n return dict[category];\n }\n return undefined;\n}\n\n/**\n * Iterate over all categories in a dictionary with proper typing.\n */\nexport function forEachCategory(\n dict: Dictionary,\n callback: (category: DictionaryCategory, entries: Record<string, string>) => void\n): void {\n for (const category of DICTIONARY_CATEGORIES) {\n callback(category, dict[category]);\n }\n}\n\n/**\n * Find a translation in any category of a dictionary.\n * Returns the English key if found, undefined otherwise.\n */\nexport function findInDictionary(\n dict: Dictionary,\n localizedWord: string\n): { category: DictionaryCategory; englishKey: string } | undefined {\n const normalized = localizedWord.toLowerCase();\n for (const category of DICTIONARY_CATEGORIES) {\n const entries = dict[category];\n for (const [english, localized] of Object.entries(entries)) {\n if (localized.toLowerCase() === normalized) {\n return { category, englishKey: english };\n }\n }\n }\n return undefined;\n}\n\n/**\n * Find a translation for an English word in any category.\n * Returns the localized word if found, undefined otherwise.\n */\nexport function translateFromEnglish(dict: Dictionary, englishWord: string): string | undefined {\n const normalized = englishWord.toLowerCase();\n for (const category of DICTIONARY_CATEGORIES) {\n const entries = dict[category];\n const translated = entries[normalized];\n if (translated) {\n return translated;\n }\n }\n return undefined;\n}\n\nexport interface I18nConfig {\n locale: string;\n fallbackLocale?: string;\n dictionaries?: Record<string, Dictionary>;\n detectLocale?: boolean;\n rtlLocales?: string[];\n preserveOriginalAttribute?: string;\n}\n\nexport interface TranslationOptions {\n from?: string;\n to: string;\n preserveOriginal?: boolean;\n validate?: boolean;\n}\n\nexport interface ValidationResult {\n valid: boolean;\n errors: ValidationError[];\n warnings: ValidationWarning[];\n coverage: {\n total: number;\n translated: number;\n missing: string[];\n };\n}\n\nexport interface ValidationError {\n type: 'missing' | 'invalid' | 'duplicate';\n key: string;\n message: string;\n}\n\nexport interface ValidationWarning {\n type: 'unused' | 'deprecated' | 'inconsistent';\n key: string;\n message: string;\n}\n\nexport interface LocaleMetadata {\n code: string;\n name: string;\n nativeName: string;\n rtl: boolean;\n pluralRules?: (n: number) => string;\n}\n\nexport interface TranslationContext {\n locale: string;\n direction: 'ltr' | 'rtl';\n dictionary: Dictionary;\n metadata: LocaleMetadata;\n}\n\nexport type TokenType =\n | 'command'\n | 'modifier'\n | 'event'\n | 'logical'\n | 'temporal'\n | 'value'\n | 'attribute'\n | 'expression'\n | 'identifier'\n | 'operator'\n | 'literal';\n\nexport interface Token {\n type: TokenType;\n value: string;\n translated?: string;\n position: {\n start: number;\n end: number;\n line: number;\n column: number;\n };\n}\n\nexport interface TranslationResult {\n translated: string;\n original?: string;\n tokens: Token[];\n locale: {\n from: string;\n to: string;\n };\n warnings?: string[];\n}\n","// packages/i18n/src/dictionaries/en.ts\n\nimport { Dictionary } from '../types';\n\n/**\n * English dictionary - identity mapping since English is the canonical hyperscript language.\n * This exists primarily for symmetry in translation operations (e.g., en -> es).\n */\nexport const en: Dictionary = {\n commands: {\n // Event handling\n on: 'on',\n tell: 'tell',\n trigger: 'trigger',\n send: 'send',\n\n // DOM manipulation\n take: 'take',\n put: 'put',\n set: 'set',\n get: 'get',\n add: 'add',\n remove: 'remove',\n toggle: 'toggle',\n hide: 'hide',\n show: 'show',\n\n // Control flow\n if: 'if',\n unless: 'unless',\n repeat: 'repeat',\n for: 'for',\n while: 'while',\n until: 'until',\n continue: 'continue',\n break: 'break',\n halt: 'halt',\n\n // Async\n wait: 'wait',\n fetch: 'fetch',\n call: 'call',\n return: 'return',\n\n // Other commands\n make: 'make',\n log: 'log',\n throw: 'throw',\n catch: 'catch',\n measure: 'measure',\n transition: 'transition',\n\n // Data Commands\n increment: 'increment',\n decrement: 'decrement',\n bind: 'bind',\n default: 'default',\n persist: 'persist',\n\n // Navigation Commands\n go: 'go',\n pushUrl: 'pushUrl',\n replaceUrl: 'replaceUrl',\n\n // Utility Commands\n copy: 'copy',\n pick: 'pick',\n beep: 'beep',\n\n // Advanced Commands\n js: 'js',\n async: 'async',\n render: 'render',\n\n // Animation Commands\n swap: 'swap',\n morph: 'morph',\n settle: 'settle',\n\n // Content Commands\n append: 'append',\n\n // Control Flow\n exit: 'exit',\n\n // Behaviors\n install: 'install',\n },\n\n modifiers: {\n to: 'to',\n from: 'from',\n into: 'into',\n with: 'with',\n at: 'at',\n in: 'in',\n of: 'of',\n as: 'as',\n by: 'by',\n before: 'before',\n after: 'after',\n over: 'over',\n under: 'under',\n between: 'between',\n through: 'through',\n without: 'without',\n },\n\n events: {\n click: 'click',\n dblclick: 'dblclick',\n mousedown: 'mousedown',\n mouseup: 'mouseup',\n mouseenter: 'mouseenter',\n mouseleave: 'mouseleave',\n mouseover: 'mouseover',\n mouseout: 'mouseout',\n mousemove: 'mousemove',\n\n keydown: 'keydown',\n keyup: 'keyup',\n keypress: 'keypress',\n\n focus: 'focus',\n blur: 'blur',\n change: 'change',\n input: 'input',\n submit: 'submit',\n reset: 'reset',\n\n load: 'load',\n unload: 'unload',\n resize: 'resize',\n scroll: 'scroll',\n\n touchstart: 'touchstart',\n touchend: 'touchend',\n touchmove: 'touchmove',\n touchcancel: 'touchcancel',\n },\n\n logical: {\n when: 'when',\n where: 'where',\n and: 'and',\n or: 'or',\n not: 'not',\n is: 'is',\n exists: 'exists',\n matches: 'matches',\n contains: 'contains',\n includes: 'includes',\n equals: 'equals',\n has: 'has', // third-person: \"it has .class\", \"#element has .class\"\n have: 'have', // first-person: \"I have .class\"\n then: 'then',\n else: 'else',\n otherwise: 'otherwise',\n end: 'end',\n },\n\n temporal: {\n seconds: 'seconds',\n second: 'second',\n milliseconds: 'milliseconds',\n millisecond: 'millisecond',\n minutes: 'minutes',\n minute: 'minute',\n hours: 'hours',\n hour: 'hour',\n ms: 'ms',\n s: 's',\n min: 'min',\n h: 'h',\n },\n\n values: {\n true: 'true',\n false: 'false',\n null: 'null',\n undefined: 'undefined',\n it: 'it',\n its: 'its',\n me: 'me',\n my: 'my',\n myself: 'myself',\n you: 'you',\n your: 'your',\n yourself: 'yourself',\n element: 'element',\n target: 'target',\n detail: 'detail',\n event: 'event',\n window: 'window',\n document: 'document',\n body: 'body',\n result: 'result',\n value: 'value',\n },\n\n attributes: {\n class: 'class',\n classes: 'classes',\n style: 'style',\n styles: 'styles',\n attribute: 'attribute',\n attributes: 'attributes',\n property: 'property',\n properties: 'properties',\n },\n\n expressions: {\n // Positional\n first: 'first',\n last: 'last',\n next: 'next',\n previous: 'previous',\n prev: 'prev',\n at: 'at',\n random: 'random',\n\n // DOM Traversal\n closest: 'closest',\n parent: 'parent',\n children: 'children',\n within: 'within',\n\n // Emptiness/Existence\n no: 'no',\n empty: 'empty',\n some: 'some',\n\n // String operations\n 'starts with': 'starts with',\n 'ends with': 'ends with',\n },\n};\n","// packages/i18n/src/dictionaries/es.ts\n\nimport { Dictionary } from '../types';\n\nexport const es: Dictionary = {\n commands: {\n // Event handling\n on: 'en',\n tell: 'decir',\n trigger: 'disparar',\n send: 'enviar',\n\n // DOM manipulation\n take: 'tomar',\n put: 'poner',\n set: 'establecer',\n get: 'obtener',\n add: 'agregar',\n remove: 'quitar',\n toggle: 'alternar',\n hide: 'ocultar',\n show: 'mostrar',\n\n // Control flow\n if: 'si',\n unless: 'menos',\n repeat: 'repetir',\n for: 'para',\n while: 'mientras',\n until: 'hasta',\n continue: 'continuar',\n break: 'romper',\n halt: 'detener',\n\n // Async\n wait: 'esperar',\n fetch: 'buscar',\n call: 'llamar',\n return: 'retornar',\n\n // Other commands\n make: 'hacer',\n log: 'registrar',\n throw: 'lanzar',\n catch: 'atrapar',\n measure: 'medir',\n transition: 'transición',\n\n // Data Commands\n increment: 'incrementar',\n decrement: 'decrementar',\n bind: 'vincular',\n default: 'predeterminar',\n persist: 'persistir',\n\n // Navigation Commands\n go: 'ir',\n pushUrl: 'pushUrl',\n replaceUrl: 'reemplazarUrl',\n\n // Utility Commands\n copy: 'copiar',\n pick: 'escoger',\n beep: 'pitido',\n\n // Advanced Commands\n js: 'js',\n async: 'asíncrono',\n render: 'renderizar',\n\n // Animation Commands\n swap: 'intercambiar',\n morph: 'transformar',\n settle: 'estabilizar',\n\n // Content Commands\n append: 'añadir',\n\n // Control Flow\n exit: 'salir',\n\n // Behaviors\n install: 'instalar',\n },\n\n modifiers: {\n to: 'a',\n from: 'de',\n into: 'en',\n with: 'con',\n at: 'en',\n in: 'en',\n of: 'de',\n as: 'como',\n by: 'por',\n before: 'antes',\n after: 'después',\n over: 'sobre',\n under: 'bajo',\n between: 'entre',\n through: 'través',\n without: 'sin',\n },\n\n events: {\n click: 'clic',\n dblclick: 'dobleclic',\n mousedown: 'ratónabajo',\n mouseup: 'ratónarriba',\n mouseenter: 'ratónentrar',\n mouseleave: 'ratónsalir',\n mouseover: 'ratónencima',\n mouseout: 'ratónfuera',\n mousemove: 'ratónmover',\n\n keydown: 'teclaabajo',\n keyup: 'teclaarriba',\n keypress: 'teclapresar',\n\n focus: 'enfocar',\n blur: 'desenfocar',\n change: 'cambiar',\n input: 'entrada',\n submit: 'enviar',\n reset: 'reiniciar',\n\n load: 'cargar',\n unload: 'descargar',\n resize: 'redimensionar',\n scroll: 'desplazar',\n\n touchstart: 'toqueempezar',\n touchend: 'toqueterminar',\n touchmove: 'toquemover',\n touchcancel: 'toquecancelar',\n },\n\n logical: {\n when: 'cuando',\n where: 'donde',\n and: 'y',\n or: 'o',\n not: 'no',\n is: 'es',\n exists: 'existe',\n matches: 'coincide',\n contains: 'contiene',\n includes: 'incluye',\n equals: 'iguala',\n has: 'tiene', // third-person: él/ella tiene\n have: 'tengo', // first-person: yo tengo\n then: 'entonces',\n else: 'sino',\n otherwise: 'delocontrario',\n end: 'fin',\n },\n\n temporal: {\n seconds: 'segundos',\n second: 'segundo',\n milliseconds: 'milisegundos',\n millisecond: 'milisegundo',\n minutes: 'minutos',\n minute: 'minuto',\n hours: 'horas',\n hour: 'hora',\n ms: 'ms',\n s: 's',\n min: 'min',\n h: 'h',\n },\n\n values: {\n true: 'verdadero',\n false: 'falso',\n null: 'nulo',\n undefined: 'indefinido',\n it: 'ello',\n its: 'su',\n me: 'yo',\n my: 'mi',\n you: 'tu',\n your: 'tu',\n yourself: 'ti mismo', // REVIEW: native speaker\n myself: 'yo mismo',\n element: 'elemento',\n target: 'objetivo',\n detail: 'detalle',\n event: 'evento',\n window: 'ventana',\n document: 'documento',\n body: 'cuerpo',\n result: 'resultado',\n value: 'valor',\n },\n\n attributes: {\n class: 'clase',\n classes: 'clases',\n style: 'estilo',\n styles: 'estilos',\n attribute: 'atributo',\n attributes: 'atributos',\n property: 'propiedad',\n properties: 'propiedades',\n },\n\n expressions: {\n // Positional\n first: 'primero',\n last: 'último',\n next: 'siguiente',\n previous: 'anterior',\n prev: 'ant',\n at: 'en',\n random: 'aleatorio',\n\n // DOM Traversal\n closest: 'máscercano',\n parent: 'padre',\n children: 'hijos',\n within: 'dentro',\n\n // Emptiness/Existence\n no: 'ningún',\n empty: 'vacío',\n some: 'algún',\n\n // String operations\n 'starts with': 'empieza con',\n 'ends with': 'termina con',\n },\n};\n","// packages/i18n/src/dictionaries/ko.ts\n\nimport { Dictionary } from '../types';\n\nexport const ko: Dictionary = {\n commands: {\n // Event handling\n on: '에',\n tell: '말하다',\n trigger: '트리거',\n send: '보내다',\n\n // DOM manipulation\n take: '가져오다',\n put: '넣다',\n set: '설정',\n get: '얻다',\n add: '추가',\n remove: '제거',\n toggle: '토글',\n hide: '숨기다',\n show: '보이다',\n\n // Control flow\n if: '만약',\n unless: '아니면',\n repeat: '반복',\n for: '동안',\n while: '동안',\n until: '까지',\n continue: '계속',\n break: '중단',\n halt: '정지',\n\n // Async\n wait: '대기',\n fetch: '가져오기',\n call: '호출',\n return: '반환',\n\n // Other commands\n make: '만들다',\n log: '로그',\n throw: '던지다',\n catch: '잡다',\n measure: '측정',\n transition: '전환',\n\n // Data Commands\n increment: '증가',\n decrement: '감소',\n bind: '바인드',\n default: '기본값',\n persist: '유지',\n\n // Navigation Commands\n go: '이동',\n pushUrl: 'URL푸시',\n replaceUrl: 'URL교체',\n\n // Utility Commands\n copy: '복사',\n pick: '선택',\n beep: '비프',\n\n // Advanced Commands\n js: 'JS실행',\n async: '비동기',\n render: '렌더링',\n\n // Animation Commands\n swap: '교환',\n morph: '변형',\n settle: '안정',\n\n // Content Commands\n append: '추가',\n\n // Control Flow\n exit: '종료',\n\n // Behaviors\n install: '설치',\n },\n\n modifiers: {\n to: '에',\n from: '에서',\n into: '으로',\n with: '와',\n at: '에',\n in: '안에',\n of: '의',\n as: '로',\n by: '에의해',\n before: '전에',\n after: '후에',\n over: '위에',\n under: '아래',\n between: '사이',\n through: '통해',\n without: '없이',\n },\n\n events: {\n click: '클릭',\n dblclick: '더블클릭',\n mousedown: '마우스다운',\n mouseup: '마우스업',\n mouseenter: '마우스엔터',\n mouseleave: '마우스리브',\n mouseover: '마우스오버',\n mouseout: '마우스아웃',\n mousemove: '마우스무브',\n\n keydown: '키다운',\n keyup: '키업',\n keypress: '키프레스',\n\n focus: '포커스',\n blur: '블러',\n change: '변경',\n input: '입력',\n submit: '제출',\n reset: '리셋',\n\n load: '로드',\n unload: '언로드',\n resize: '리사이즈',\n scroll: '스크롤',\n\n touchstart: '터치시작',\n touchend: '터치종료',\n touchmove: '터치이동',\n touchcancel: '터치취소',\n },\n\n logical: {\n when: '때',\n where: '어디',\n and: '그리고',\n or: '또는',\n not: '아니',\n is: '이다',\n exists: '존재',\n matches: '일치',\n contains: '포함',\n includes: '포함하다',\n equals: '같다',\n has: '있다', // existence verb (context-based)\n have: '있다', // same verb for first/third person\n then: '그러면',\n else: '아니면',\n otherwise: '그렇지않으면',\n end: '끝',\n },\n\n temporal: {\n seconds: '초',\n second: '초',\n milliseconds: '밀리초',\n millisecond: '밀리초',\n minutes: '분',\n minute: '분',\n hours: '시간',\n hour: '시간',\n ms: 'ms',\n s: '초',\n min: '분',\n h: '시',\n },\n\n values: {\n true: '참',\n false: '거짓',\n null: '널',\n undefined: '정의안됨',\n it: '그것',\n its: '그것의', // REVIEW: native speaker\n me: '나',\n my: '내',\n myself: '나자신',\n you: '너', // REVIEW: native speaker - formal/informal\n your: '네', // REVIEW: native speaker - formal/informal\n yourself: '너자신', // REVIEW: native speaker\n element: '요소',\n target: '대상',\n detail: '세부',\n event: '이벤트',\n window: '창',\n document: '문서',\n body: '바디',\n result: '결과',\n value: '값',\n },\n\n attributes: {\n class: '클래스',\n classes: '클래스들',\n style: '스타일',\n styles: '스타일들',\n attribute: '속성',\n attributes: '속성들',\n property: '프로퍼티',\n properties: '프로퍼티들',\n },\n\n expressions: {\n // Positional\n first: '첫번째',\n last: '마지막',\n next: '다음',\n previous: '이전',\n prev: '이전',\n at: '에서',\n random: '무작위',\n\n // DOM Traversal\n closest: '가장가까운',\n parent: '부모',\n children: '자식',\n within: '이내',\n\n // Emptiness/Existence\n no: '없음',\n empty: '비어있는',\n some: '일부',\n\n // String operations\n 'starts with': '로시작',\n 'ends with': '로끝나는',\n },\n};\n","// packages/i18n/src/dictionaries/zh.ts\n\nimport { Dictionary } from '../types';\n\nexport const zh: Dictionary = {\n commands: {\n // Event handling\n on: '当',\n tell: '告诉',\n trigger: '触发',\n send: '发送',\n\n // DOM manipulation\n take: '获取',\n put: '放置',\n set: '设置',\n get: '获得',\n add: '添加',\n remove: '移除',\n toggle: '切换',\n hide: '隐藏',\n show: '显示',\n\n // Control flow\n if: '如果',\n unless: '除非',\n repeat: '重复',\n for: '为',\n while: '当',\n until: '直到',\n continue: '继续',\n break: '中断',\n halt: '停止',\n\n // Async\n wait: '等待',\n fetch: '获取',\n call: '调用',\n return: '返回',\n\n // Other commands\n make: '制作',\n log: '日志',\n throw: '抛出',\n catch: '捕获',\n measure: '测量',\n transition: '过渡',\n\n // Data Commands\n increment: '增加',\n decrement: '减少',\n bind: '绑定',\n default: '默认',\n persist: '持久化',\n\n // Navigation Commands\n go: '前往',\n pushUrl: '推送网址',\n replaceUrl: '替换网址',\n\n // Utility Commands\n copy: '复制',\n pick: '选取',\n beep: '蜂鸣',\n\n // Advanced Commands\n js: 'JS执行',\n async: '异步',\n render: '渲染',\n\n // Animation Commands\n swap: '交换',\n morph: '变形',\n settle: '稳定',\n\n // Content Commands\n append: '追加',\n\n // Control Flow\n exit: '退出',\n\n // Behaviors\n install: '安装',\n },\n\n modifiers: {\n to: '到',\n from: '从',\n into: '进入',\n with: '与',\n at: '在',\n in: '在',\n of: '的',\n as: '作为',\n by: '通过',\n before: '之前',\n after: '之后',\n over: '在上',\n under: '在下',\n between: '之间',\n through: '通过',\n without: '没有',\n },\n\n events: {\n click: '点击',\n dblclick: '双击',\n mousedown: '鼠标按下',\n mouseup: '鼠标抬起',\n mouseenter: '鼠标进入',\n mouseleave: '鼠标离开',\n mouseover: '鼠标悬停',\n mouseout: '鼠标移出',\n mousemove: '鼠标移动',\n\n keydown: '按键按下',\n keyup: '按键抬起',\n keypress: '按键',\n\n focus: '聚焦',\n blur: '失焦',\n change: '改变',\n input: '输入',\n submit: '提交',\n reset: '重置',\n\n load: '加载',\n unload: '卸载',\n resize: '调整大小',\n scroll: '滚动',\n\n touchstart: '触摸开始',\n touchend: '触摸结束',\n touchmove: '触摸移动',\n touchcancel: '触摸取消',\n },\n\n logical: {\n when: '当',\n where: '哪里',\n and: '和',\n or: '或',\n not: '非',\n is: '是',\n exists: '存在',\n matches: '匹配',\n contains: '包含',\n includes: '包括',\n equals: '等于',\n has: '有', // universal \"have\"\n have: '有', // same character for first/third person\n then: '那么',\n else: '否则',\n otherwise: '要不然',\n end: '结束',\n },\n\n temporal: {\n seconds: '秒',\n second: '秒',\n milliseconds: '毫秒',\n millisecond: '毫秒',\n minutes: '分钟',\n minute: '分钟',\n hours: '小时',\n hour: '小时',\n ms: '毫秒',\n s: '秒',\n min: '分',\n h: '时',\n },\n\n values: {\n true: '真',\n false: '假',\n null: '空',\n undefined: '未定义',\n it: '它',\n its: '它的', // REVIEW: native speaker\n me: '我',\n my: '我的',\n myself: '我自己',\n you: '你', // REVIEW: native speaker\n your: '你的', // REVIEW: native speaker\n yourself: '你自己', // REVIEW: native speaker\n element: '元素',\n target: '目标',\n detail: '详情',\n event: '事件',\n window: '窗口',\n document: '文档',\n body: '主体',\n result: '结果',\n value: '值',\n },\n\n attributes: {\n class: '类',\n classes: '类别',\n style: '样式',\n styles: '样式集',\n attribute: '属性',\n attributes: '属性集',\n property: '特性',\n properties: '特性集',\n },\n\n expressions: {\n // Positional\n first: '第一个',\n last: '最后一个',\n next: '下一个',\n previous: '上一个',\n prev: '上个',\n at: '在',\n random: '随机',\n\n // DOM Traversal\n closest: '最近的',\n parent: '父级',\n children: '子级',\n within: '之内',\n\n // Emptiness/Existence\n no: '没有',\n empty: '空的',\n some: '一些',\n\n // String operations\n 'starts with': '以开头',\n 'ends with': '以结尾',\n },\n};\n","// packages/i18n/src/dictionaries/fr.ts\n\nimport { Dictionary } from '../types';\n\nexport const fr: Dictionary = {\n commands: {\n // Event handling\n on: 'sur',\n tell: 'dire',\n trigger: 'déclencher',\n send: 'envoyer',\n\n // DOM manipulation\n take: 'prendre',\n put: 'mettre',\n set: 'définir',\n get: 'obtenir',\n add: 'ajouter',\n remove: 'supprimer',\n toggle: 'basculer',\n hide: 'cacher',\n show: 'montrer',\n\n // Control flow\n if: 'si',\n unless: 'saufsi',\n repeat: 'répéter',\n for: 'pour',\n while: 'tantque',\n until: 'jusquà',\n continue: 'continuer',\n break: 'arrêter',\n halt: 'stopper',\n\n // Async\n wait: 'attendre',\n fetch: 'récupérer',\n call: 'appeler',\n return: 'retourner',\n\n // Other commands\n make: 'créer',\n log: 'enregistrer',\n throw: 'lancer',\n catch: 'attraper',\n measure: 'mesurer',\n transition: 'transition',\n\n // Data Commands\n increment: 'incrémenter',\n decrement: 'décrémenter',\n bind: 'lier',\n default: 'défaut',\n persist: 'persister',\n\n // Navigation Commands\n go: 'aller',\n pushUrl: 'pousserUrl',\n replaceUrl: 'remplacerUrl',\n\n // Utility Commands\n copy: 'copier',\n pick: 'choisir',\n beep: 'bip',\n\n // Advanced Commands\n js: 'js',\n async: 'asynchrone',\n render: 'rendu',\n\n // Animation Commands\n swap: 'échanger',\n morph: 'transformer',\n settle: 'stabiliser',\n\n // Content Commands\n append: 'ajouter',\n\n // Control Flow\n exit: 'sortir',\n\n // Behaviors\n install: 'installer',\n },\n\n modifiers: {\n to: 'à',\n from: 'de',\n into: 'dans',\n with: 'avec',\n at: 'à',\n in: 'en',\n of: 'de',\n as: 'comme',\n by: 'par',\n before: 'avant',\n after: 'après',\n over: 'sur',\n under: 'sous',\n between: 'entre',\n through: 'à travers',\n without: 'sans',\n },\n\n events: {\n click: 'clic',\n dblclick: 'doubleclic',\n mousedown: 'sourisappuyée',\n mouseup: 'sourisrelâchée',\n mouseenter: 'sourisentrer',\n mouseleave: 'sourissortir',\n mouseover: 'sourissur',\n mouseout: 'sourisdehors',\n mousemove: 'sourisbouger',\n\n keydown: 'toucheappuyée',\n keyup: 'toucherelâchée',\n keypress: 'touchepressée',\n\n focus: 'focus',\n blur: 'flou',\n change: 'changer',\n input: 'saisie',\n submit: 'soumettre',\n reset: 'réinitialiser',\n\n load: 'charger',\n unload: 'décharger',\n resize: 'redimensionner',\n scroll: 'défiler',\n\n touchstart: 'touchercommencer',\n touchend: 'toucherfin',\n touchmove: 'toucherbouger',\n touchcancel: 'toucherannuler',\n },\n\n logical: {\n when: 'quand',\n where: 'où',\n and: 'et',\n or: 'ou',\n not: 'non',\n is: 'est',\n exists: 'existe',\n matches: 'correspond',\n contains: 'contient',\n includes: 'inclut',\n equals: 'égale',\n has: 'a', // third-person: il/elle a\n have: 'ai', // first-person: j'ai\n then: 'alors',\n else: 'sinon',\n otherwise: 'autrement',\n end: 'fin',\n },\n\n temporal: {\n seconds: 'secondes',\n second: 'seconde',\n milliseconds: 'millisecondes',\n millisecond: 'milliseconde',\n minutes: 'minutes',\n minute: 'minute',\n hours: 'heures',\n hour: 'heure',\n ms: 'ms',\n s: 's',\n min: 'min',\n h: 'h',\n },\n\n values: {\n true: 'vrai',\n false: 'faux',\n null: 'nul',\n undefined: 'indéfini',\n it: 'ça',\n its: 'son',\n me: 'moi',\n my: 'mon',\n you: 'tu',\n your: 'ton',\n yourself: 'toi-même', // REVIEW: native speaker\n myself: 'moi-même',\n element: 'élément',\n target: 'cible',\n detail: 'détail',\n event: 'événement',\n window: 'fenêtre',\n document: 'document',\n body: 'corps',\n result: 'résultat',\n value: 'valeur',\n },\n\n attributes: {\n class: 'classe',\n classes: 'classes',\n style: 'style',\n styles: 'styles',\n attribute: 'attribut',\n attributes: 'attributs',\n property: 'propriété',\n properties: 'propriétés',\n },\n\n expressions: {\n // Positional\n first: 'premier',\n last: 'dernier',\n next: 'suivant',\n previous: 'précédent',\n prev: 'préc',\n at: 'à',\n random: 'aléatoire',\n\n // DOM Traversal\n closest: 'plusproche',\n parent: 'parent',\n children: 'enfants',\n within: 'dans',\n\n // Emptiness/Existence\n no: 'aucun',\n empty: 'vide',\n some: 'quelques',\n\n // String operations\n 'starts with': 'commence par',\n 'ends with': 'finit par',\n },\n};\n","// packages/i18n/src/dictionaries/de.ts\n\nimport { Dictionary } from '../types';\n\nexport const de: Dictionary = {\n commands: {\n // Event handling\n on: 'bei',\n tell: 'sagen',\n trigger: 'auslösen',\n send: 'senden',\n\n // DOM manipulation\n take: 'nehmen',\n put: 'setzen',\n set: 'festlegen',\n get: 'erhalten',\n add: 'hinzufügen',\n remove: 'entfernen',\n toggle: 'umschalten',\n hide: 'verstecken',\n show: 'zeigen',\n\n // Control flow\n if: 'wenn',\n unless: 'wennnicht',\n repeat: 'wiederholen',\n for: 'für',\n while: 'während',\n until: 'bis',\n continue: 'weiter',\n break: 'unterbrechen',\n halt: 'anhalten',\n\n // Async\n wait: 'warten',\n fetch: 'holen',\n call: 'aufrufen',\n return: 'zurückgeben',\n\n // Other commands\n make: 'erstellen',\n log: 'protokollieren',\n throw: 'werfen',\n catch: 'fangen',\n measure: 'messen',\n transition: 'übergang',\n\n // Data Commands\n increment: 'erhöhen',\n decrement: 'verringern',\n bind: 'binden',\n default: 'standard',\n persist: 'speichern',\n\n // Navigation Commands\n go: 'gehen',\n pushUrl: 'urlHinzufügen',\n replaceUrl: 'urlErsetzen',\n\n // Utility Commands\n copy: 'kopieren',\n pick: 'auswählen',\n beep: 'piepton',\n\n // Advanced Commands\n js: 'js',\n async: 'asynchron',\n render: 'rendern',\n\n // Animation Commands\n swap: 'tauschen',\n morph: 'verwandeln',\n settle: 'stabilisieren',\n\n // Content Commands\n append: 'anhängen',\n\n // Control Flow\n exit: 'beenden',\n\n // Behaviors\n install: 'installieren',\n },\n\n modifiers: {\n to: 'zu',\n from: 'von',\n into: 'in',\n with: 'mit',\n at: 'bei',\n in: 'in',\n of: 'von',\n as: 'als',\n by: 'durch',\n before: 'vor',\n after: 'nach',\n over: 'über',\n under: 'unter',\n between: 'zwischen',\n through: 'durch',\n without: 'ohne',\n },\n\n events: {\n click: 'klick',\n dblclick: 'doppelklick',\n mousedown: 'mausunten',\n mouseup: 'mausoben',\n mouseenter: 'mauseintreten',\n mouseleave: 'mausverlassen',\n mouseover: 'mausüber',\n mouseout: 'maushinaus',\n mousemove: 'mausbewegen',\n\n keydown: 'tasteunten',\n keyup: 'tasteoben',\n keypress: 'tastedrücken',\n\n focus: 'fokus',\n blur: 'unscharf',\n change: 'ändern',\n input: 'eingabe',\n submit: 'absenden',\n reset: 'zurücksetzen',\n\n load: 'laden',\n unload: 'entladen',\n resize: 'größeändern',\n scroll: 'scrollen',\n\n touchstart: 'berührungstart',\n touchend: 'berührungend',\n touchmove: 'berührungbewegen',\n touchcancel: 'berührungabbrechen',\n },\n\n logical: {\n when: 'wenn',\n where: 'wo',\n and: 'und',\n or: 'oder',\n not: 'nicht',\n is: 'ist',\n exists: 'existiert',\n matches: 'passt',\n contains: 'enthält',\n includes: 'beinhaltet',\n equals: 'gleicht',\n has: 'hat', // third-person: es hat\n have: 'habe', // first-person: ich habe\n then: 'dann',\n else: 'sonst',\n otherwise: 'andernfalls',\n end: 'ende',\n },\n\n temporal: {\n seconds: 'sekunden',\n second: 'sekunde',\n milliseconds: 'millisekunden',\n millisecond: 'millisekunde',\n minutes: 'minuten',\n minute: 'minute',\n hours: 'stunden',\n hour: 'stunde',\n ms: 'ms',\n s: 's',\n min: 'min',\n h: 'std',\n },\n\n values: {\n true: 'wahr',\n false: 'falsch',\n null: 'null',\n undefined: 'undefiniert',\n it: 'es',\n its: 'sein',\n me: 'ich',\n my: 'mein',\n you: 'du',\n your: 'dein',\n yourself: 'dich selbst', // REVIEW: native speaker\n myself: 'ich selbst',\n element: 'element',\n target: 'ziel',\n detail: 'detail',\n event: 'ereignis',\n window: 'fenster',\n document: 'dokument',\n body: 'körper',\n result: 'ergebnis',\n value: 'wert',\n },\n\n attributes: {\n class: 'klasse',\n classes: 'klassen',\n style: 'stil',\n styles: 'stile',\n attribute: 'attribut',\n attributes: 'attribute',\n property: 'eigenschaft',\n properties: 'eigenschaften',\n },\n\n expressions: {\n // Positional\n first: 'erste',\n last: 'letzte',\n next: 'nächste',\n previous: 'vorherige',\n prev: 'vorh',\n at: 'bei',\n random: 'zufällig',\n\n // DOM Traversal\n closest: 'nächste',\n parent: 'elternteil',\n children: 'kinder',\n within: 'innerhalb',\n\n // Emptiness/Existence\n no: 'kein',\n empty: 'leer',\n some: 'einige',\n\n // String operations\n 'starts with': 'beginnt mit',\n 'ends with': 'endet mit',\n },\n};\n","// packages/i18n/src/dictionaries/ja.ts\n\nimport { Dictionary } from '../types';\n\nexport const ja: Dictionary = {\n commands: {\n // Event handling\n on: 'で',\n tell: '伝える',\n trigger: '引き金',\n send: '送る',\n\n // DOM manipulation\n take: '取る',\n put: '置く',\n set: '設定',\n get: '取得',\n add: '追加',\n remove: '削除',\n toggle: '切り替え',\n hide: '隠す',\n show: '表示',\n\n // Control flow\n if: 'もし',\n unless: 'でなければ',\n repeat: '繰り返し',\n for: 'ために',\n while: 'の間',\n until: 'まで',\n continue: '続ける',\n break: '中断',\n halt: '停止',\n\n // Async\n wait: '待つ',\n fetch: '取得',\n call: '呼び出し',\n return: '戻る',\n\n // Other commands\n make: '作る',\n log: '記録',\n throw: '投げる',\n catch: '捕まえる',\n measure: '測定',\n transition: '遷移',\n\n // Data Commands\n increment: '増加',\n decrement: '減少',\n bind: '結合',\n default: '既定',\n persist: '永続化',\n\n // Navigation Commands\n go: '移動',\n pushUrl: 'URLプッシュ',\n replaceUrl: 'URL置換',\n\n // Utility Commands\n copy: 'コピー',\n pick: '選択',\n beep: 'ビープ',\n\n // Advanced Commands\n js: 'JS実行',\n async: '非同期',\n render: '描画',\n\n // Animation Commands\n swap: '交換',\n morph: '変形',\n settle: '安定',\n\n // Content Commands\n append: '末尾追加',\n\n // Control Flow\n exit: '終了',\n\n // Behaviors\n install: 'インストール',\n },\n\n modifiers: {\n to: 'に',\n from: 'から',\n into: 'へ',\n with: 'と',\n at: 'で',\n in: 'の中',\n of: 'の',\n as: 'として',\n by: 'によって',\n before: '前に',\n after: '後に',\n over: '上に',\n under: '下に',\n between: '間に',\n through: '通して',\n without: 'なしで',\n },\n\n events: {\n click: 'クリック',\n dblclick: 'ダブルクリック',\n mousedown: 'マウス押下',\n mouseup: 'マウス解放',\n mouseenter: 'マウス入る',\n mouseleave: 'マウス離れる',\n mouseover: 'マウス上',\n mouseout: 'マウス外',\n mousemove: 'マウス移動',\n\n keydown: 'キー押下',\n keyup: 'キー解放',\n keypress: 'キー押す',\n\n focus: 'フォーカス',\n blur: 'ぼかし',\n change: '変更',\n input: '入力',\n submit: '送信',\n reset: 'リセット',\n\n load: '読み込み',\n unload: '読み込み解除',\n resize: 'サイズ変更',\n scroll: 'スクロール',\n\n touchstart: 'タッチ開始',\n touchend: 'タッチ終了',\n touchmove: 'タッチ移動',\n touchcancel: 'タッチキャンセル',\n },\n\n logical: {\n when: 'とき',\n where: 'どこ',\n and: 'そして',\n or: 'または',\n not: 'ではない',\n is: 'である',\n exists: '存在する',\n matches: '一致する',\n contains: '含む',\n includes: '含める',\n equals: '等しい',\n has: 'ある', // existence verb (context-based)\n have: 'ある', // same verb for first/third person\n then: 'それから',\n else: 'そうでなければ',\n otherwise: 'そうでなければ',\n end: '終わり',\n },\n\n temporal: {\n seconds: '秒',\n second: '秒',\n milliseconds: 'ミリ秒',\n millisecond: 'ミリ秒',\n minutes: '分',\n minute: '分',\n hours: '時間',\n hour: '時間',\n ms: 'ms',\n s: '秒',\n min: '分',\n h: '時',\n },\n\n values: {\n true: '真',\n false: '偽',\n null: 'null',\n undefined: '未定義',\n it: 'それ',\n its: 'その',\n me: '私',\n my: '私の',\n you: 'あなた',\n your: 'あなたの',\n yourself: 'あなた自身',\n myself: '私自身',\n element: '要素',\n target: '対象',\n detail: '詳細',\n event: 'イベント',\n window: 'ウィンドウ',\n document: 'ドキュメント',\n body: 'ボディ',\n result: '結果',\n value: '値',\n },\n\n attributes: {\n class: 'クラス',\n classes: 'クラス群',\n style: 'スタイル',\n styles: 'スタイル群',\n attribute: '属性',\n attributes: '属性群',\n property: 'プロパティ',\n properties: 'プロパティ群',\n },\n\n expressions: {\n // Positional\n first: '最初',\n last: '最後',\n next: '次',\n previous: '前',\n prev: '前',\n at: 'で',\n random: 'ランダム',\n\n // DOM Traversal\n closest: '最も近い',\n parent: '親',\n children: '子',\n within: '以内',\n\n // Emptiness/Existence\n no: 'ない',\n empty: '空',\n some: 'いくつか',\n\n // String operations\n 'starts with': 'で始まる',\n 'ends with': 'で終わる',\n },\n};\n","// packages/i18n/src/dictionaries/ar.ts\n\nimport { Dictionary } from '../types';\n\nexport const ar: Dictionary = {\n commands: {\n // Event handling\n on: 'على',\n tell: 'أخبر',\n trigger: 'تشغيل',\n send: 'أرسل',\n\n // DOM manipulation\n take: 'خذ',\n put: 'ضع',\n set: 'اضبط',\n get: 'احصل',\n add: 'أضف',\n remove: 'احذف',\n toggle: 'بدل',\n hide: 'اخف',\n show: 'اظهر',\n\n // Control flow\n if: 'إذا',\n unless: 'إلا إذا',\n repeat: 'كرر',\n for: 'لكل',\n while: 'بينما',\n until: 'حتى',\n continue: 'واصل',\n break: 'توقف',\n halt: 'أوقف',\n\n // Async\n wait: 'انتظر',\n fetch: 'احضر',\n call: 'استدع',\n return: 'ارجع',\n\n // Other commands\n make: 'اصنع',\n log: 'سجل',\n throw: 'ارم',\n catch: 'التقط',\n measure: 'قس',\n transition: 'انتقال',\n\n // Data Commands\n increment: 'زِد',\n decrement: 'أنقص',\n bind: 'اربط',\n default: 'افتراضي',\n persist: 'احفظ',\n\n // Navigation Commands\n go: 'اذهب',\n pushUrl: 'ادفع رابط',\n replaceUrl: 'استبدل رابط',\n\n // Utility Commands\n copy: 'انسخ',\n pick: 'اختر',\n beep: 'صفّر',\n\n // Advanced Commands\n js: 'جافاسكربت',\n async: 'متزامن',\n render: 'ارسم',\n\n // Animation Commands\n swap: 'بدّل',\n morph: 'حوّل',\n settle: 'استقر',\n\n // Content Commands\n append: 'ألحق',\n\n // Control Flow\n exit: 'اخرج',\n\n // Behaviors\n install: 'ثبّت',\n },\n\n modifiers: {\n to: 'إلى',\n from: 'من',\n into: 'في',\n with: 'مع',\n at: 'عند',\n in: 'في',\n of: 'من',\n as: 'كـ',\n by: 'بواسطة',\n before: 'قبل',\n after: 'بعد',\n over: 'فوق',\n under: 'تحت',\n between: 'بين',\n through: 'عبر',\n without: 'بدون',\n },\n\n events: {\n click: 'نقر',\n dblclick: 'نقر مزدوج',\n mousedown: 'فأرة أسفل',\n mouseup: 'فأرة أعلى',\n mouseenter: 'فأرة دخول',\n mouseleave: 'فأرة خروج',\n mouseover: 'فأرة فوق',\n mouseout: 'فأرة خارج',\n mousemove: 'فأرة تحرك',\n\n keydown: 'مفتاح أسفل',\n keyup: 'مفتاح أعلى',\n keypress: 'مفتاح ضغط',\n\n focus: 'تركيز',\n blur: 'ضبابية',\n change: 'تغيير',\n input: 'إدخال',\n submit: 'إرسال',\n reset: 'إعادة تعيين',\n\n load: 'تحميل',\n unload: 'إلغاء تحميل',\n resize: 'تغيير حجم',\n scroll: 'تمرير',\n\n touchstart: 'بداية لمس',\n touchend: 'نهاية لمس',\n touchmove: 'تحرك لمس',\n touchcancel: 'إلغاء لمس',\n },\n\n logical: {\n when: 'عندما',\n where: 'أين',\n and: 'و',\n or: 'أو',\n not: 'ليس',\n is: 'هو',\n exists: 'موجود',\n matches: 'يطابق',\n contains: 'يحتوي',\n includes: 'يشمل',\n equals: 'يساوي',\n has: 'لديه', // third-person: he/it has\n have: 'لدي', // first-person: I have\n then: 'ثم',\n else: 'وإلا',\n otherwise: 'خلاف ذلك',\n end: 'النهاية',\n },\n\n temporal: {\n seconds: 'ثوانِ',\n second: 'ثانية',\n milliseconds: 'ميلي ثانية',\n millisecond: 'ميلي ثانية',\n minutes: 'دقائق',\n minute: 'دقيقة',\n hours: 'ساعات',\n hour: 'ساعة',\n ms: 'م.ث',\n s: 'ث',\n min: 'د',\n h: 'س',\n },\n\n values: {\n true: 'صحيح',\n false: 'خطأ',\n null: 'فارغ',\n undefined: 'غير معرف',\n it: 'هو',\n its: 'له', // REVIEW: native speaker\n me: 'أنا',\n my: 'لي',\n myself: 'نفسي',\n you: 'أنت', // REVIEW: native speaker\n your: 'لك', // REVIEW: native speaker\n yourself: 'نفسك', // REVIEW: native speaker\n element: 'عنصر',\n target: 'هدف',\n detail: 'تفاصيل',\n event: 'حدث',\n window: 'نافذة',\n document: 'وثيقة',\n body: 'جسم',\n result: 'نتيجة',\n value: 'قيمة',\n },\n\n attributes: {\n class: 'فئة',\n classes: 'فئات',\n style: 'أسلوب',\n styles: 'أساليب',\n attribute: 'خاصية',\n attributes: 'خصائص',\n property: 'خاصية',\n properties: 'خصائص',\n },\n\n expressions: {\n // Positional\n first: 'أول',\n last: 'آخر',\n next: 'التالي',\n previous: 'السابق',\n prev: 'سابق',\n at: 'عند',\n random: 'عشوائي',\n\n // DOM Traversal\n closest: 'الأقرب',\n parent: 'والد',\n children: 'أطفال',\n within: 'داخل',\n\n // Emptiness/Existence\n no: 'لا يوجد',\n empty: 'فارغ',\n some: 'بعض',\n\n // String operations\n 'starts with': 'يبدأ بـ',\n 'ends with': 'ينتهي بـ',\n },\n};\n","// packages/i18n/src/dictionaries/tr.ts\n\nimport { Dictionary } from '../types';\n\nexport const tr: Dictionary = {\n commands: {\n // Event handling\n on: 'üzerinde',\n tell: 'söyle',\n trigger: 'tetikle',\n send: 'gönder',\n\n // DOM manipulation\n take: 'al',\n put: 'koy',\n set: 'ayarla',\n get: 'al',\n add: 'ekle',\n remove: 'kaldır',\n toggle: 'değiştir',\n hide: 'gizle',\n show: 'göster',\n\n // Control flow\n if: 'eğer',\n unless: 'değilse',\n repeat: 'tekrarla',\n for: 'için',\n while: 'iken',\n until: 'kadar',\n continue: 'devam',\n break: 'dur',\n halt: 'durdur',\n\n // Async\n wait: 'bekle',\n fetch: 'getir',\n call: 'çağır',\n return: 'dön',\n\n // Other commands\n make: 'yap',\n log: 'kaydet',\n throw: 'fırlat',\n catch: 'yakala',\n measure: 'ölç',\n transition: 'geçiş',\n\n // Data Commands\n increment: 'artır',\n decrement: 'azalt',\n bind: 'bağla',\n default: 'varsayılan',\n persist: 'kalıcı',\n\n // Navigation Commands\n go: 'git',\n pushUrl: 'urlEkle',\n replaceUrl: 'urlDeğiştir',\n\n // Utility Commands\n copy: 'kopyala',\n pick: 'seç',\n beep: 'bip',\n\n // Advanced Commands\n js: 'js',\n async: 'asenkron',\n render: 'render',\n\n // Animation Commands\n swap: 'takas',\n morph: 'dönüştür',\n settle: 'sabitlen',\n\n // Content Commands\n append: 'ekle',\n\n // Control Flow\n exit: 'çık',\n\n // Behaviors\n install: 'kur',\n },\n\n modifiers: {\n to: 'e',\n from: 'den',\n into: 'içine',\n with: 'ile',\n at: 'de',\n in: 'içinde',\n of: 'nin',\n as: 'olarak',\n by: 'tarafından',\n before: 'önce',\n after: 'sonra',\n over: 'üzerinde',\n under: 'altında',\n between: 'arasında',\n through: 'boyunca',\n without: 'olmadan',\n },\n\n events: {\n click: 'tıklama',\n dblclick: 'çift_tıklama',\n mousedown: 'fare_bas',\n mouseup: 'fare_bırak',\n mouseenter: 'fare_gir',\n mouseleave: 'fare_çık',\n mouseover: 'fare_üstü',\n mouseout: 'fare_dışı',\n mousemove: 'fare_hareket',\n\n keydown: 'tuş_bas',\n keyup: 'tuş_bırak',\n keypress: 'tuş_basım',\n\n focus: 'odak',\n blur: 'bulanık',\n change: 'değişim',\n input: 'giriş',\n submit: 'gönder',\n reset: 'sıfırla',\n\n load: 'yükle',\n unload: 'yükle_kaldır',\n resize: 'boyut_değiştir',\n scroll: 'kaydır',\n\n touchstart: 'dokunma_başla',\n touchend: 'dokunma_bitir',\n touchmove: 'dokunma_hareket',\n touchcancel: 'dokunma_iptal',\n },\n\n logical: {\n when: 'iken', // REVIEW: native speaker - could also be 'durumunda' (in case of) or 'olduğunda' (when it happens)\n where: 'nerede', // REVIEW: native speaker - element filter context\n and: 've',\n or: 'veya',\n not: 'değil',\n is: 'dir',\n exists: 'var',\n matches: 'eşleşir',\n contains: 'içerir',\n includes: 'dahil',\n equals: 'eşittir',\n has: 'var', // existence marker (context-based)\n have: 'var', // same for first/third person in Turkish\n then: 'sonra',\n else: 'yoksa',\n otherwise: 'aksi_halde',\n end: 'son',\n },\n\n temporal: {\n seconds: 'saniye',\n second: 'saniye',\n milliseconds: 'milisaniye',\n millisecond: 'milisaniye',\n minutes: 'dakika',\n minute: 'dakika',\n hours: 'saat',\n hour: 'saat',\n ms: 'ms',\n s: 's',\n min: 'dk',\n h: 'sa',\n },\n\n values: {\n true: 'doğru',\n false: 'yanlış',\n null: 'boş',\n undefined: 'tanımsız',\n it: 'o',\n its: 'onun', // REVIEW: native speaker\n me: 'ben',\n my: 'benim',\n myself: 'kendim',\n you: 'sen', // REVIEW: native speaker - formal/informal\n your: 'senin', // REVIEW: native speaker - formal/informal\n yourself: 'kendin', // REVIEW: native speaker\n element: 'öğe',\n target: 'hedef',\n detail: 'detay',\n event: 'olay',\n window: 'pencere',\n document: 'belge',\n body: 'gövde',\n result: 'sonuç',\n value: 'değer',\n },\n\n attributes: {\n class: 'sınıf',\n classes: 'sınıflar',\n style: 'stil',\n styles: 'stiller',\n attribute: 'özellik',\n attributes: 'özellikler',\n property: 'özellik',\n properties: 'özellikler',\n },\n\n expressions: {\n // Positional\n first: 'ilk',\n last: 'son',\n next: 'sonraki',\n previous: 'önceki',\n prev: 'önc',\n at: 'de',\n random: 'rastgele',\n\n // DOM Traversal\n closest: 'en_yakın',\n parent: 'ebeveyn',\n children: 'çocuklar',\n within: 'içinde',\n\n // Emptiness/Existence\n no: 'yok',\n empty: 'boş',\n some: 'bazı',\n\n // String operations\n 'starts with': 'ile başlar',\n 'ends with': 'ile biter',\n },\n};\n","// packages/i18n/src/dictionaries/id.ts\n\nimport { Dictionary } from '../types';\n\nexport const id: Dictionary = {\n commands: {\n // Event handling\n on: 'pada',\n tell: 'katakan',\n trigger: 'picu',\n send: 'kirim',\n\n // DOM manipulation\n take: 'ambil',\n put: 'taruh',\n set: 'atur',\n get: 'dapatkan',\n add: 'tambah',\n remove: 'hapus',\n toggle: 'ganti',\n hide: 'sembunyikan',\n show: 'tampilkan',\n\n // Control flow\n if: 'jika',\n unless: 'kecuali',\n repeat: 'ulangi',\n for: 'untuk',\n while: 'selama',\n until: 'sampai',\n continue: 'lanjutkan',\n break: 'hentikan',\n halt: 'berhenti',\n\n // Async\n wait: 'tunggu',\n fetch: 'ambil',\n call: 'panggil',\n return: 'kembali',\n\n // Other commands\n make: 'buat',\n log: 'catat',\n throw: 'lempar',\n catch: 'tangkap',\n measure: 'ukur',\n transition: 'transisi',\n\n // Data Commands\n increment: 'tambahkan',\n decrement: 'kurangi',\n bind: 'ikat',\n default: 'bawaan',\n persist: 'simpan',\n\n // Navigation Commands\n go: 'pergi',\n pushUrl: 'tambahUrl',\n replaceUrl: 'gantiUrl',\n\n // Utility Commands\n copy: 'salin',\n pick: 'pilih',\n beep: 'bunyi',\n\n // Advanced Commands\n js: 'js',\n async: 'asinkron',\n render: 'tampilkan',\n\n // Animation Commands\n swap: 'tukar',\n morph: 'ubah_bentuk',\n settle: 'stabil',\n\n // Content Commands\n append: 'tambah_akhir',\n\n // Control Flow\n exit: 'keluar',\n\n // Behaviors\n install: 'pasang',\n },\n\n modifiers: {\n to: 'ke',\n from: 'dari',\n into: 'ke_dalam',\n with: 'dengan',\n at: 'di',\n in: 'dalam',\n of: 'dari',\n as: 'sebagai',\n by: 'oleh',\n before: 'sebelum',\n after: 'setelah',\n over: 'di_atas',\n under: 'di_bawah',\n between: 'antara',\n through: 'melalui',\n without: 'tanpa',\n },\n\n events: {\n click: 'klik',\n dblclick: 'klik_ganda',\n mousedown: 'tekan_mouse',\n mouseup: 'lepas_mouse',\n mouseenter: 'mouse_masuk',\n mouseleave: 'mouse_keluar',\n mouseover: 'mouse_atas',\n mouseout: 'mouse_luar',\n mousemove: 'gerak_mouse',\n\n keydown: 'tekan_tombol',\n keyup: 'lepas_tombol',\n keypress: 'pencet_tombol',\n\n focus: 'fokus',\n blur: 'blur',\n change: 'ubah',\n input: 'masukan',\n submit: 'kirim',\n reset: 'reset',\n\n load: 'muat',\n unload: 'bongkar',\n resize: 'ubah_ukuran',\n scroll: 'gulir',\n\n touchstart: 'mulai_sentuh',\n touchend: 'akhir_sentuh',\n touchmove: 'gerak_sentuh',\n touchcancel: 'batal_sentuh',\n },\n\n logical: {\n when: 'ketika',\n where: 'di_mana',\n and: 'dan',\n or: 'atau',\n not: 'bukan',\n is: 'adalah',\n exists: 'ada',\n matches: 'cocok',\n contains: 'berisi',\n includes: 'termasuk',\n equals: 'sama',\n has: 'punya', // possession verb (context-based)\n have: 'punya', // same for first/third person\n then: 'lalu',\n else: 'lainnya',\n otherwise: 'sebaliknya',\n end: 'akhir',\n },\n\n temporal: {\n seconds: 'detik',\n second: 'detik',\n milliseconds: 'milidetik',\n millisecond: 'milidetik',\n minutes: 'menit',\n minute: 'menit',\n hours: 'jam',\n hour: 'jam',\n ms: 'ms',\n s: 'd',\n min: 'mnt',\n h: 'j',\n },\n\n values: {\n true: 'benar',\n false: 'salah',\n null: 'kosong',\n undefined: 'tidak_terdefinisi',\n it: 'itu',\n its: 'miliknya', // REVIEW: native speaker\n me: 'saya',\n my: 'saya punya',\n myself: 'saya sendiri',\n you: 'kamu', // REVIEW: native speaker - formal/informal\n your: 'kamu punya', // REVIEW: native speaker\n yourself: 'kamu sendiri', // REVIEW: native speaker\n element: 'elemen',\n target: 'target',\n detail: 'detail',\n event: 'peristiwa',\n window: 'jendela',\n document: 'dokumen',\n body: 'badan',\n result: 'hasil',\n value: 'nilai',\n },\n\n attributes: {\n class: 'kelas',\n classes: 'kelas_kelas',\n style: 'gaya',\n styles: 'gaya_gaya',\n attribute: 'atribut',\n attributes: 'atribut_atribut',\n property: 'properti',\n properties: 'properti_properti',\n },\n\n expressions: {\n // Positional\n first: 'pertama',\n last: 'terakhir',\n next: 'berikutnya',\n previous: 'sebelumnya',\n prev: 'sblm',\n at: 'di',\n random: 'acak',\n\n // DOM Traversal\n closest: 'terdekat',\n parent: 'induk',\n children: 'anak_anak',\n within: 'dalam',\n\n // Emptiness/Existence\n no: 'tidak_ada',\n empty: 'kosong',\n some: 'beberapa',\n\n // String operations\n 'starts with': 'dimulai dengan',\n 'ends with': 'diakhiri dengan',\n },\n};\n","// packages/i18n/src/dictionaries/qu.ts\n\nimport { Dictionary } from '../types';\n\nexport const qu: Dictionary = {\n commands: {\n // Event handling\n on: 'kaqpi',\n tell: 'niy',\n trigger: 'kichay',\n send: 'kachay',\n\n // DOM manipulation\n take: 'hurquy',\n put: 'churay',\n set: 'churay',\n get: 'chaskiy',\n add: 'yapay',\n remove: 'qichuy',\n toggle: 'tikray',\n hide: 'pakay',\n show: 'rikuchiy',\n\n // Control flow\n if: 'sichus',\n unless: 'mana_sichus',\n repeat: 'kutichiy',\n for: 'rayku',\n while: 'kay_kaq',\n until: 'hayk_akama',\n continue: 'purichiy',\n break: 'p_akiy',\n halt: 'sayay',\n\n // Async\n wait: 'suyay',\n fetch: 'apamuy',\n call: 'qayay',\n return: 'kutimuy',\n\n // Other commands\n make: 'ruray',\n log: 'qillqay',\n throw: 'wikchuy',\n catch: 'hapsiy',\n measure: 'tupuy',\n transition: 'tikray',\n\n // Data Commands\n increment: 'yapay',\n decrement: 'pisiyachiy',\n bind: 'watay',\n default: 'ñawpaq_kaq',\n persist: 'waqaychay',\n\n // Navigation Commands\n go: 'riy',\n pushUrl: 'url_tanqay',\n replaceUrl: 'url_tikray',\n\n // Utility Commands\n copy: 'qillqay',\n pick: 'akllay',\n beep: 'waqay',\n\n // Advanced Commands\n js: 'js',\n async: 'mana_suyaspa',\n render: 'rikuchiy',\n\n // Animation Commands\n swap: 'rantin_tikray',\n morph: 'tikrachiy',\n settle: 'tiyay',\n\n // Content Commands\n append: 'qhipaman_yapay',\n\n // Control Flow\n exit: 'lluqsiy',\n\n // Behaviors\n install: 'churay',\n },\n\n modifiers: {\n to: 'man',\n from: 'manta',\n into: 'ukupi',\n with: 'wan',\n at: 'pi',\n in: 'ukupi',\n of: 'pa',\n as: 'hina',\n by: 'rayku',\n before: 'ñawpaqpi',\n after: 'qhepapi',\n over: 'hawapi',\n under: 'urapi',\n between: 'chawpipi',\n through: 'pasaspa',\n without: 'mana',\n },\n\n events: {\n click: 'ñitiy',\n dblclick: 'iskay_ñitiy',\n mousedown: 'rat_ñitiy',\n mouseup: 'rat_huqariy',\n mouseenter: 'rat_yaykuy',\n mouseleave: 'rat_lluqsiy',\n mouseover: 'rat_hawapi',\n mouseout: 'rat_hawamanta',\n mousemove: 'rat_kuyuy',\n\n keydown: 'yupana_ñitiy',\n keyup: 'yupana_huqariy',\n keypress: 'yupana_ñitana',\n\n focus: 'qhaway',\n blur: 'paqariy',\n change: 'tikray',\n input: 'yaykuchiy',\n submit: 'kachay',\n reset: 'qallariy',\n\n load: 'apakuy',\n unload: 'urmay',\n resize: 'hatun_kay',\n scroll: 'kunray',\n\n touchstart: 'llamiy_qallay',\n touchend: 'llamiy_tukuy',\n touchmove: 'llamiy_kuyuy',\n touchcancel: 'llamiy_hark_ay',\n },\n\n logical: {\n when: 'maykama',\n where: 'maypi',\n and: 'chaymanta',\n or: 'utaq',\n not: 'mana',\n is: 'kanqa',\n exists: 'tiyan',\n matches: 'tupan',\n contains: 'ukupi_kan',\n includes: 'churasqa',\n equals: 'kikin',\n has: 'kachkan', // existence suffix (context-based)\n have: 'kachkani', // first-person with suffix\n then: 'chayqa',\n else: 'mana_chayqa',\n otherwise: 'huk_kaqpi',\n end: 'tukuy',\n },\n\n temporal: {\n seconds: 'sikundukuna',\n second: 'sikundu',\n milliseconds: 'iskay_paqta_sikundukuna',\n millisecond: 'iskay_paqta_sikundu',\n minutes: 'minutukuna',\n minute: 'minutu',\n hours: 'horakuna',\n hour: 'hora',\n ms: 'ms',\n s: 's',\n min: 'm',\n h: 'h',\n },\n\n values: {\n true: 'cheqaq',\n false: 'llulla',\n null: 'ch_usaq',\n undefined: 'mana_riqsisqa',\n it: 'chay',\n its: 'chaypaq', // REVIEW: native speaker\n me: 'noqa',\n my: 'noqaq',\n myself: 'noqa killa',\n you: 'qam', // REVIEW: native speaker\n your: 'qampaq', // REVIEW: native speaker\n yourself: 'qam killa', // REVIEW: native speaker\n element: 'raku',\n target: 'punta',\n detail: 'sut_iy',\n event: 'ruway',\n window: 'k_iri',\n document: 'qillqa',\n body: 'kurku',\n result: 'lluqsiy',\n value: 'chanin',\n },\n\n attributes: {\n class: 'ayllu',\n classes: 'ayllukuna',\n style: 'sami',\n styles: 'samikuna',\n attribute: 'kaq',\n attributes: 'kaqkuna',\n property: 'kanay',\n properties: 'kanaykuna',\n },\n\n expressions: {\n // Positional\n first: 'ñawpaq',\n last: 'qhipa',\n next: 'qhipantin',\n previous: 'ñawpaqnin',\n prev: 'ñawpaq',\n at: 'pi',\n random: 'imaymanata',\n\n // DOM Traversal\n closest: 'aswan_kaylla',\n parent: 'mama_tayta',\n children: 'wawakuna',\n within: 'ukupi',\n\n // Emptiness/Existence\n no: 'mana_kanchu',\n empty: 'ch_usaq',\n some: 'wakin',\n\n // String operations\n 'starts with': 'qallarisqa wan',\n 'ends with': 'tukusqa wan',\n },\n};\n","// packages/i18n/src/dictionaries/sw.ts\n\nimport { Dictionary } from '../types';\n\nexport const sw: Dictionary = {\n commands: {\n // Event handling\n on: 'kwenye',\n tell: 'ambia',\n trigger: 'chochea',\n send: 'tuma',\n\n // DOM manipulation\n take: 'chukua',\n put: 'weka',\n set: 'weka',\n get: 'pata',\n add: 'ongeza',\n remove: 'ondoa',\n toggle: 'badilisha',\n hide: 'ficha',\n show: 'onyesha',\n\n // Control flow\n if: 'kama',\n unless: 'isipokuwa',\n repeat: 'rudia',\n for: 'kwa',\n while: 'wakati',\n until: 'hadi',\n continue: 'endelea',\n break: 'vunja',\n halt: 'simama',\n\n // Async\n wait: 'ngoja',\n fetch: 'leta',\n call: 'ita',\n return: 'rudi',\n\n // Other commands\n make: 'fanya',\n log: 'andika',\n throw: 'tupa',\n catch: 'shika',\n measure: 'pima',\n transition: 'mpito',\n\n // Data Commands\n increment: 'ongeza',\n decrement: 'punguza',\n bind: 'funga',\n default: 'msingi',\n persist: 'hifadhi',\n\n // Navigation Commands\n go: 'nenda',\n pushUrl: 'sukumaUrl',\n replaceUrl: 'badilishaUrl',\n\n // Utility Commands\n copy: 'nakili',\n pick: 'chagua',\n beep: 'lia',\n\n // Advanced Commands\n js: 'js',\n async: 'sainkroni',\n render: 'chora',\n\n // Animation Commands\n swap: 'badilishana',\n morph: 'badilishaUmbo',\n settle: 'tulia',\n\n // Content Commands\n append: 'ongezaMwisho',\n\n // Control Flow\n exit: 'toka',\n\n // Behaviors\n install: 'sakinisha',\n },\n\n modifiers: {\n to: 'kwa',\n from: 'kutoka',\n into: 'ndani',\n with: 'na',\n at: 'katika',\n in: 'ndani',\n of: 'ya',\n as: 'kama',\n by: 'na',\n before: 'kabla',\n after: 'baada',\n over: 'juu',\n under: 'chini',\n between: 'kati',\n through: 'kupitia',\n without: 'bila',\n },\n\n events: {\n click: 'bonyeza',\n dblclick: 'bonyeza_mara_mbili',\n mousedown: 'panya_shuka',\n mouseup: 'panya_juu',\n mouseenter: 'panya_ingia',\n mouseleave: 'panya_toka',\n mouseover: 'panya_juu',\n mouseout: 'panya_nje',\n mousemove: 'panya_sogea',\n\n keydown: 'kitufe_shuka',\n keyup: 'kitufe_juu',\n keypress: 'kitufe_bonyeza',\n\n focus: 'zingatia',\n blur: 'poteza_macho',\n change: 'badilisha',\n input: 'ingizo',\n submit: 'wasilisha',\n reset: 'weka_upya',\n\n load: 'pakia',\n unload: 'shuka',\n resize: 'badilisha_ukubwa',\n scroll: 'sogeza',\n\n touchstart: 'gusa_anza',\n touchend: 'gusa_mwisho',\n touchmove: 'gusa_sogea',\n touchcancel: 'gusa_ghairi',\n },\n\n logical: {\n when: 'wakati',\n where: 'wapi',\n and: 'na',\n or: 'au',\n not: 'si',\n is: 'ni',\n exists: 'ipo',\n matches: 'inafanana',\n contains: 'ina',\n includes: 'pamoja',\n equals: 'sawa',\n has: 'ana', // third-person: yeye ana\n have: 'nina', // first-person: mimi nina\n then: 'kisha',\n else: 'sivyo',\n otherwise: 'vinginevyo',\n end: 'mwisho',\n },\n\n temporal: {\n seconds: 'sekunde',\n second: 'sekunde',\n milliseconds: 'millisekunde',\n millisecond: 'millisekunde',\n minutes: 'dakika',\n minute: 'dakika',\n hours: 'masaa',\n hour: 'saa',\n ms: 'ms',\n s: 's',\n min: 'dk',\n h: 'sa',\n },\n\n values: {\n true: 'kweli',\n false: 'uongo',\n null: 'tupu',\n undefined: 'haijafafanuliwa',\n it: 'hiyo',\n its: 'yake', // REVIEW: native speaker\n me: 'mimi',\n my: 'yangu',\n myself: 'mimi mwenyewe',\n you: 'wewe', // REVIEW: native speaker\n your: 'yako', // REVIEW: native speaker\n yourself: 'wewe mwenyewe', // REVIEW: native speaker\n element: 'kipengele',\n target: 'lengo',\n detail: 'maelezo',\n event: 'tukio',\n window: 'dirisha',\n document: 'hati',\n body: 'mwili',\n result: 'matokeo',\n value: 'thamani',\n },\n\n attributes: {\n class: 'darasa',\n classes: 'madarasa',\n style: 'mtindo',\n styles: 'mitindo',\n attribute: 'sifa',\n attributes: 'sifa',\n property: 'mali',\n properties: 'mali',\n },\n\n expressions: {\n // Positional\n first: 'kwanza',\n last: 'mwisho',\n next: 'ijayo',\n previous: 'iliyopita',\n prev: 'awali',\n at: 'katika',\n random: 'nasibu',\n\n // DOM Traversal\n closest: 'karibu_zaidi',\n parent: 'mzazi',\n children: 'watoto',\n within: 'ndani_ya',\n\n // Emptiness/Existence\n no: 'hakuna',\n empty: 'tupu',\n some: 'baadhi',\n\n // String operations\n 'starts with': 'huanza na',\n 'ends with': 'huisha na',\n },\n};\n","// packages/i18n/src/dictionaries/pt.ts\n\nimport { Dictionary } from '../types';\n\n/**\n * Portuguese (Português) dictionary for hyperscript keywords.\n * Brazilian Portuguese variant.\n */\nexport const pt: Dictionary = {\n commands: {\n // Event handling\n on: 'em',\n tell: 'dizer',\n trigger: 'disparar',\n send: 'enviar',\n\n // DOM manipulation\n take: 'pegar',\n put: 'colocar',\n set: 'definir',\n get: 'obter',\n add: 'adicionar',\n remove: 'remover',\n toggle: 'alternar',\n hide: 'esconder',\n show: 'mostrar',\n\n // Control flow\n if: 'se',\n unless: 'a_menos', // REVIEW: native speaker - multi-word\n repeat: 'repetir',\n for: 'para',\n while: 'enquanto',\n until: 'até',\n continue: 'continuar',\n break: 'parar',\n halt: 'interromper',\n\n // Async\n wait: 'esperar',\n fetch: 'buscar',\n call: 'chamar',\n return: 'retornar',\n\n // Other commands\n make: 'fazer',\n log: 'registrar',\n throw: 'lançar',\n catch: 'capturar',\n measure: 'medir',\n transition: 'transição',\n\n // Data Commands\n increment: 'incrementar',\n decrement: 'decrementar',\n bind: 'vincular',\n default: 'padrão',\n persist: 'persistir',\n\n // Navigation Commands\n go: 'ir',\n pushUrl: 'pushUrl',\n replaceUrl: 'substituirUrl',\n\n // Utility Commands\n copy: 'copiar',\n pick: 'escolher',\n beep: 'apitar',\n\n // Advanced Commands\n js: 'js',\n async: 'assíncrono',\n render: 'renderizar',\n\n // Animation Commands\n swap: 'trocar',\n morph: 'transformar',\n settle: 'estabilizar',\n\n // Content Commands\n append: 'anexar',\n\n // Control Flow\n exit: 'sair',\n\n // Behaviors\n install: 'instalar',\n },\n\n modifiers: {\n to: 'para',\n from: 'de',\n into: 'em',\n with: 'com',\n at: 'em',\n in: 'dentro',\n of: 'de',\n as: 'como',\n by: 'por',\n before: 'antes',\n after: 'depois',\n over: 'sobre',\n under: 'sob',\n between: 'entre',\n through: 'através',\n without: 'sem',\n },\n\n events: {\n click: 'clique',\n dblclick: 'duploClique',\n mousedown: 'mouseBaixo',\n mouseup: 'mouseCima',\n mouseenter: 'mouseEntrar',\n mouseleave: 'mouseSair',\n mouseover: 'mouseSobre',\n mouseout: 'mouseFora',\n mousemove: 'mouseMover',\n\n keydown: 'teclaBaixo',\n keyup: 'teclaCima',\n keypress: 'teclaPressionar',\n\n focus: 'foco',\n blur: 'desfoque',\n change: 'mudança',\n input: 'entrada',\n submit: 'envio',\n reset: 'reiniciar',\n\n load: 'carregar',\n unload: 'descarregar',\n resize: 'redimensionar',\n scroll: 'rolar',\n\n touchstart: 'toqueInício',\n touchend: 'toqueFim',\n touchmove: 'toqueMover',\n touchcancel: 'toqueCancelar',\n },\n\n logical: {\n when: 'quando',\n where: 'onde',\n and: 'e',\n or: 'ou',\n not: 'não',\n is: 'é',\n exists: 'existe',\n matches: 'corresponde',\n contains: 'contém',\n includes: 'inclui',\n equals: 'igual',\n has: 'tem', // third-person: ele/ela tem\n have: 'tenho', // first-person: eu tenho\n then: 'então',\n else: 'senão',\n otherwise: 'caso_contrário', // REVIEW: native speaker\n end: 'fim',\n },\n\n temporal: {\n seconds: 'segundos',\n second: 'segundo',\n milliseconds: 'milissegundos',\n millisecond: 'milissegundo',\n minutes: 'minutos',\n minute: 'minuto',\n hours: 'horas',\n hour: 'hora',\n ms: 'ms',\n s: 's',\n min: 'min',\n h: 'h',\n },\n\n values: {\n true: 'verdadeiro',\n false: 'falso',\n null: 'nulo',\n undefined: 'indefinido',\n it: 'isso',\n its: 'seu',\n me: 'eu',\n my: 'meu',\n myself: 'eu mesmo', // REVIEW: native speaker\n you: 'você',\n your: 'seu',\n yourself: 'você mesmo', // REVIEW: native speaker\n element: 'elemento',\n target: 'alvo',\n detail: 'detalhe',\n event: 'evento',\n window: 'janela',\n document: 'documento',\n body: 'corpo',\n result: 'resultado',\n value: 'valor',\n },\n\n attributes: {\n class: 'classe',\n classes: 'classes',\n style: 'estilo',\n styles: 'estilos',\n attribute: 'atributo',\n attributes: 'atributos',\n property: 'propriedade',\n properties: 'propriedades',\n },\n\n expressions: {\n // Positional\n first: 'primeiro',\n last: 'último',\n next: 'próximo',\n previous: 'anterior',\n prev: 'ant',\n at: 'em',\n random: 'aleatório',\n\n // DOM Traversal\n closest: 'mais_próximo', // REVIEW: native speaker - multi-word\n parent: 'pai',\n children: 'filhos',\n within: 'dentro',\n\n // Emptiness/Existence\n no: 'nenhum',\n empty: 'vazio',\n some: 'algum',\n\n // String operations\n 'starts with': 'começa com',\n 'ends with': 'termina com',\n },\n};\n","// packages/i18n/src/dictionaries/it.ts\n\nimport { Dictionary } from '../types';\n\nexport const it: Dictionary = {\n commands: {\n // Event handling\n on: 'su',\n tell: 'dire',\n trigger: 'scatenare',\n send: 'inviare',\n\n // DOM manipulation\n take: 'prendere',\n put: 'mettere',\n set: 'impostare',\n get: 'ottenere',\n add: 'aggiungere',\n remove: 'rimuovere',\n toggle: 'commutare',\n hide: 'nascondere',\n show: 'mostrare',\n\n // Control flow\n if: 'se',\n unless: 'a meno che',\n repeat: 'ripetere',\n for: 'per',\n while: 'mentre',\n until: 'fino',\n continue: 'continuare',\n break: 'interrompere',\n halt: 'fermare',\n\n // Async\n wait: 'aspettare',\n fetch: 'recuperare',\n call: 'chiamare',\n return: 'ritornare',\n\n // Other commands\n make: 'fare',\n log: 'registrare',\n throw: 'lanciare',\n catch: 'catturare',\n measure: 'misurare',\n transition: 'transizione',\n\n // Data Commands\n increment: 'incrementare',\n decrement: 'decrementare',\n bind: 'vincolare',\n default: 'predefinito',\n persist: 'persistere',\n\n // Navigation Commands\n go: 'andare',\n pushUrl: 'pushUrl',\n replaceUrl: 'sostituireUrl',\n\n // Utility Commands\n copy: 'copiare',\n pick: 'scegliere',\n beep: 'beep',\n\n // Advanced Commands\n js: 'js',\n async: 'asincrono',\n render: 'renderizzare',\n\n // Animation Commands\n swap: 'scambiare',\n morph: 'trasformare',\n settle: 'stabilizzare',\n\n // Content Commands\n append: 'aggiungere',\n\n // Control Flow\n exit: 'uscire',\n\n // Behaviors\n install: 'installare',\n },\n\n modifiers: {\n to: 'a',\n from: 'da',\n into: 'in',\n with: 'con',\n at: 'a',\n in: 'in',\n of: 'di',\n as: 'come',\n by: 'per',\n before: 'prima',\n after: 'dopo',\n over: 'sopra',\n under: 'sotto',\n between: 'tra',\n through: 'attraverso',\n without: 'senza',\n },\n\n events: {\n click: 'clic',\n dblclick: 'doppioclic',\n mousedown: 'mousegiù',\n mouseup: 'mousesu',\n mouseenter: 'mouseentra',\n mouseleave: 'mouseesce',\n mouseover: 'mousesopra',\n mouseout: 'mousefuori',\n mousemove: 'mousemuovi',\n\n keydown: 'tastogiù',\n keyup: 'tastosu',\n keypress: 'tastopremi',\n\n focus: 'fuoco',\n blur: 'sfuocatura',\n change: 'cambio',\n input: 'input',\n submit: 'invio',\n reset: 'reset',\n\n load: 'carica',\n unload: 'scarica',\n resize: 'ridimensiona',\n scroll: 'scorrimento',\n\n touchstart: 'toccoinizia',\n touchend: 'toccofine',\n touchmove: 'toccomuovi',\n touchcancel: 'toccoannulla',\n },\n\n logical: {\n when: 'quando',\n where: 'dove',\n and: 'e',\n or: 'o',\n not: 'non',\n is: 'è',\n exists: 'esiste',\n matches: 'corrisponde',\n contains: 'contiene',\n includes: 'include',\n equals: 'uguale',\n has: 'ha', // third-person: lui/lei ha\n have: 'ho', // first-person: io ho\n then: 'allora',\n else: 'altrimenti',\n otherwise: 'altrimenti',\n end: 'fine',\n },\n\n temporal: {\n seconds: 'secondi',\n second: 'secondo',\n milliseconds: 'millisecondi',\n millisecond: 'millisecondo',\n minutes: 'minuti',\n minute: 'minuto',\n hours: 'ore',\n hour: 'ora',\n ms: 'ms',\n s: 's',\n min: 'min',\n h: 'h',\n },\n\n values: {\n true: 'vero',\n false: 'falso',\n null: 'nullo',\n undefined: 'indefinito',\n it: 'esso',\n its: 'suo',\n me: 'io',\n my: 'mio',\n you: 'tu',\n your: 'tuo',\n yourself: 'te stesso',\n myself: 'me stesso',\n element: 'elemento',\n target: 'obiettivo',\n detail: 'dettaglio',\n event: 'evento',\n window: 'finestra',\n document: 'documento',\n body: 'corpo',\n result: 'risultato',\n value: 'valore',\n },\n\n attributes: {\n class: 'classe',\n classes: 'classi',\n style: 'stile',\n styles: 'stili',\n attribute: 'attributo',\n attributes: 'attributi',\n property: 'proprietà',\n properties: 'proprietà',\n },\n\n expressions: {\n // Positional\n first: 'primo',\n last: 'ultimo',\n next: 'prossimo',\n previous: 'precedente',\n prev: 'prec',\n at: 'a',\n random: 'casuale',\n\n // DOM Traversal\n closest: 'piùvicino',\n parent: 'genitore',\n children: 'figli',\n within: 'dentro',\n\n // Emptiness/Existence\n no: 'nessun',\n empty: 'vuoto',\n some: 'qualche',\n\n // String operations\n 'starts with': 'inizia con',\n 'ends with': 'finisce con',\n },\n};\n","// packages/i18n/src/dictionaries/vi.ts\n\nimport { Dictionary } from '../types';\n\nexport const vi: Dictionary = {\n commands: {\n // Event handling\n on: 'khi',\n tell: 'nói với',\n trigger: 'kích hoạt',\n send: 'gửi',\n\n // DOM manipulation\n take: 'lấy',\n put: 'đặt',\n set: 'gán',\n get: 'lấy giá trị',\n add: 'thêm',\n remove: 'xóa',\n toggle: 'chuyển đổi',\n hide: 'ẩn',\n show: 'hiển thị',\n\n // Control flow\n if: 'nếu',\n unless: 'trừ khi',\n repeat: 'lặp lại',\n for: 'với mỗi',\n while: 'trong khi',\n until: 'cho đến khi',\n continue: 'tiếp tục',\n break: 'dừng',\n halt: 'dừng lại',\n\n // Async\n wait: 'chờ',\n fetch: 'tải',\n call: 'gọi',\n return: 'trả về',\n\n // Other commands\n make: 'tạo',\n log: 'in ra',\n throw: 'ném',\n catch: 'bắt',\n measure: 'đo lường',\n transition: 'chuyển tiếp',\n\n // Data Commands\n increment: 'tăng',\n decrement: 'giảm',\n bind: 'ràng buộc',\n default: 'mặc định',\n persist: 'duy trì',\n\n // Navigation Commands\n go: 'đi đến',\n pushUrl: 'pushUrl',\n replaceUrl: 'thayThếUrl',\n\n // Utility Commands\n copy: 'sao chép',\n pick: 'chọn',\n beep: 'beep',\n\n // Advanced Commands\n js: 'js',\n async: 'bất đồng bộ',\n render: 'hiển thị',\n\n // Animation Commands\n swap: 'hoán đổi',\n morph: 'biến đổi',\n settle: 'ổn định',\n\n // Content Commands\n append: 'nối',\n\n // Control Flow\n exit: 'thoát',\n\n // Focus\n focus: 'tập trung',\n blur: 'mất tập trung',\n\n // Additional\n init: 'khởi tạo',\n behavior: 'hành vi',\n install: 'cài đặt',\n clone: 'sao chép',\n prepend: 'thêm đầu',\n else: 'không thì',\n },\n\n modifiers: {\n into: 'vào',\n before: 'trước',\n after: 'sau',\n then: 'rồi',\n end: 'kết thúc',\n from: 'từ',\n to: 'đến',\n with: 'với',\n as: 'như',\n by: 'bởi',\n on: 'trên',\n in: 'trong',\n at: 'tại',\n of: 'của',\n the: '',\n times: 'lần',\n },\n\n events: {\n click: 'nhấp',\n dblclick: 'nhấp đúp',\n input: 'nhập',\n change: 'thay đổi',\n submit: 'gửi',\n keydown: 'phím xuống',\n keyup: 'phím lên',\n keypress: 'nhấn phím',\n mouseover: 'chuột vào',\n mouseout: 'chuột ra',\n mouseenter: 'chuột vào',\n mouseleave: 'chuột rời',\n focus: 'tập trung',\n blur: 'mất tập trung',\n load: 'tải',\n scroll: 'cuộn',\n resize: 'đổi kích thước',\n },\n\n logical: {\n when: 'khi',\n where: 'ở_đâu',\n and: 'và',\n or: 'hoặc',\n not: 'không',\n is: 'là',\n equals: 'bằng',\n contains: 'chứa',\n matches: 'khớp',\n exists: 'tồn tại',\n has: 'có', // possession verb (context-based)\n have: 'có', // same for first/third person\n empty: 'trống',\n true: 'đúng',\n false: 'sai',\n null: 'rỗng',\n },\n\n temporal: {\n now: 'bây giờ',\n today: 'hôm nay',\n tomorrow: 'ngày mai',\n yesterday: 'hôm qua',\n always: 'luôn luôn',\n never: 'không bao giờ',\n sometimes: 'đôi khi',\n once: 'một lần',\n twice: 'hai lần',\n forever: 'mãi mãi',\n },\n\n values: {\n true: 'đúng',\n false: 'sai',\n null: 'rỗng',\n undefined: 'không xác định',\n none: 'không có',\n all: 'tất cả',\n any: 'bất kỳ',\n some: 'một số',\n each: 'mỗi',\n every: 'tất cả',\n },\n\n attributes: {\n id: 'id',\n class: 'lớp',\n style: 'kiểu',\n value: 'giá trị',\n text: 'văn bản',\n html: 'html',\n src: 'nguồn',\n href: 'liên kết',\n disabled: 'vô hiệu',\n hidden: 'ẩn',\n checked: 'được chọn',\n selected: 'được chọn',\n },\n\n expressions: {\n me: 'tôi',\n my: 'của tôi',\n it: 'nó',\n its: 'của nó',\n result: 'kết quả',\n event: 'sự kiện',\n target: 'mục tiêu',\n first: 'đầu tiên',\n last: 'cuối cùng',\n next: 'tiếp theo',\n previous: 'trước đó',\n parent: 'cha',\n children: 'con',\n closest: 'gần nhất',\n },\n};\n","// packages/i18n/src/dictionaries/pl.ts\n\nimport { Dictionary } from '../types';\n\n/**\n * Polish Dictionary\n *\n * Polish uses IMPERATIVE verb forms for software commands\n * (unlike most languages which use infinitive).\n */\nexport const pl: Dictionary = {\n commands: {\n // Event handling\n on: 'gdy',\n tell: 'powiedz',\n trigger: 'wywołaj',\n send: 'wyślij',\n\n // DOM manipulation\n take: 'weź',\n put: 'umieść',\n set: 'ustaw',\n get: 'pobierz',\n add: 'dodaj',\n remove: 'usuń',\n toggle: 'przełącz',\n hide: 'ukryj',\n show: 'pokaż',\n\n // Control flow\n if: 'jeśli',\n unless: 'chyba',\n repeat: 'powtórz',\n for: 'dla',\n while: 'dopóki',\n until: 'aż',\n continue: 'kontynuuj',\n break: 'przerwij',\n halt: 'zatrzymaj',\n\n // Async\n wait: 'czekaj',\n fetch: 'pobierz',\n call: 'wywołaj',\n return: 'zwróć',\n\n // Other commands\n make: 'utwórz',\n log: 'loguj',\n throw: 'rzuć',\n catch: 'złap',\n measure: 'zmierz',\n transition: 'animuj',\n\n // Data Commands\n increment: 'zwiększ',\n decrement: 'zmniejsz',\n bind: 'powiąż',\n default: 'domyślnie',\n persist: 'zachowaj',\n\n // Navigation Commands\n go: 'idź',\n pushUrl: 'dodajUrl',\n replaceUrl: 'zamieńUrl',\n\n // Utility Commands\n copy: 'kopiuj',\n pick: 'wybierz',\n beep: 'sygnał',\n\n // Advanced Commands\n js: 'js',\n async: 'async',\n render: 'renderuj',\n\n // Animation Commands\n swap: 'zamień',\n morph: 'przekształć',\n settle: 'ustabilizuj',\n\n // Content Commands\n append: 'dołącz',\n\n // Control Flow\n exit: 'wyjdź',\n\n // Behaviors\n install: 'zainstaluj',\n },\n\n modifiers: {\n to: 'do',\n from: 'z',\n into: 'do',\n with: 'z',\n at: 'przy',\n in: 'w',\n of: 'z',\n as: 'jako',\n by: 'przez',\n before: 'przed',\n after: 'po',\n over: 'nad',\n under: 'pod',\n between: 'między',\n through: 'przez',\n without: 'bez',\n },\n\n events: {\n click: 'kliknięcie',\n dblclick: 'podwójnekliknięcie',\n mousedown: 'myszdół',\n mouseup: 'myszgóra',\n mouseenter: 'myszwejście',\n mouseleave: 'myszwyjście',\n mouseover: 'mysznad',\n mouseout: 'myszpoza',\n mousemove: 'myszruch',\n\n keydown: 'klawiszdół',\n keyup: 'klawiszgóra',\n keypress: 'klawisznaciśnięcie',\n\n focus: 'fokus',\n blur: 'rozmycie',\n change: 'zmiana',\n input: 'wejście',\n submit: 'wyślij',\n reset: 'resetuj',\n\n load: 'załaduj',\n unload: 'wyładuj',\n resize: 'zmieńrozmiar',\n scroll: 'przewiń',\n\n touchstart: 'dotykstart',\n touchend: 'dotykkoniec',\n touchmove: 'dotykruch',\n touchcancel: 'dotykanuluj',\n },\n\n logical: {\n when: 'kiedy',\n where: 'gdzie',\n and: 'i',\n or: 'lub',\n not: 'nie',\n is: 'jest',\n exists: 'istnieje',\n matches: 'pasuje',\n contains: 'zawiera',\n includes: 'obejmuje',\n equals: 'równa się',\n has: 'ma', // third-person: on/ona ma\n have: 'mam', // first-person: ja mam\n then: 'wtedy',\n else: 'inaczej',\n otherwise: 'wpp',\n end: 'koniec',\n },\n\n temporal: {\n seconds: 'sekundy',\n second: 'sekunda',\n milliseconds: 'milisekundy',\n millisecond: 'milisekunda',\n minutes: 'minuty',\n minute: 'minuta',\n hours: 'godziny',\n hour: 'godzina',\n ms: 'ms',\n s: 's',\n min: 'min',\n h: 'godz',\n },\n\n values: {\n true: 'prawda',\n false: 'fałsz',\n null: 'null',\n undefined: 'niezdefiniowane',\n it: 'to',\n its: 'jego',\n me: 'ja',\n my: 'mój',\n you: 'ty',\n your: 'twój',\n yourself: 'ty sam',\n myself: 'ja sam',\n element: 'element',\n target: 'cel',\n detail: 'szczegół',\n event: 'zdarzenie',\n window: 'okno',\n document: 'dokument',\n body: 'body',\n result: 'wynik',\n value: 'wartość',\n },\n\n attributes: {\n class: 'klasa',\n classes: 'klasy',\n style: 'styl',\n styles: 'style',\n attribute: 'atrybut',\n attributes: 'atrybuty',\n property: 'właściwość',\n properties: 'właściwości',\n },\n\n expressions: {\n // Positional\n first: 'pierwszy',\n last: 'ostatni',\n next: 'następny',\n previous: 'poprzedni',\n prev: 'poprz',\n at: 'przy',\n random: 'losowy',\n\n // DOM Traversal\n closest: 'najbliższy',\n parent: 'rodzic',\n children: 'dzieci',\n within: 'wewnątrz',\n\n // Emptiness/Existence\n no: 'brak',\n empty: 'pusty',\n some: 'jakiś',\n\n // String operations\n 'starts with': 'zaczyna się od',\n 'ends with': 'kończy się na',\n },\n};\n","/**\n * Russian Dictionary\n *\n * Translations for Russian language support.\n * Uses infinitive verbs (common in software UIs).\n */\n\nimport { Dictionary } from '../types';\n\nexport const russianDictionary: Dictionary = {\n commands: {\n // Event handling\n on: 'при',\n tell: 'сказать',\n trigger: 'вызвать',\n send: 'отправить',\n\n // DOM manipulation\n take: 'взять',\n put: 'положить',\n set: 'установить',\n get: 'получить',\n add: 'добавить',\n remove: 'удалить',\n toggle: 'переключить',\n hide: 'скрыть',\n show: 'показать',\n\n // Control flow\n if: 'если',\n unless: 'если_не',\n repeat: 'повторить',\n for: 'для',\n while: 'пока',\n until: 'до',\n continue: 'продолжить',\n break: 'прервать',\n halt: 'остановить',\n\n // Async\n wait: 'ждать',\n fetch: 'загрузить',\n call: 'вызвать',\n return: 'вернуть',\n\n // Other commands\n make: 'создать',\n log: 'записать',\n throw: 'бросить',\n catch: 'поймать',\n measure: 'измерить',\n transition: 'анимировать',\n\n // Data Commands\n increment: 'увеличить',\n decrement: 'уменьшить',\n bind: 'связать',\n default: 'по_умолчанию',\n persist: 'сохранить',\n\n // Navigation Commands\n go: 'перейти',\n pushUrl: 'добавить_url',\n replaceUrl: 'заменить_url',\n\n // Utility Commands\n copy: 'копировать',\n pick: 'выбрать',\n beep: 'звук',\n\n // Advanced Commands\n js: 'js',\n async: 'асинхронно',\n render: 'отобразить',\n\n // Animation Commands\n swap: 'поменять',\n morph: 'трансформировать',\n settle: 'стабилизировать',\n\n // Content Commands\n append: 'добавить_в_конец',\n\n // Control Flow\n exit: 'выйти',\n else: 'иначе',\n\n // Behaviors\n install: 'установить',\n init: 'инициализировать',\n behavior: 'поведение',\n\n // Focus\n focus: 'сфокусировать',\n blur: 'размыть',\n\n // Clone\n clone: 'клонировать',\n prepend: 'добавить_в_начало',\n },\n\n modifiers: {\n to: 'к',\n from: 'из',\n into: 'в',\n with: 'с',\n at: 'у',\n in: 'в',\n of: 'из',\n as: 'как',\n by: 'на',\n before: 'до',\n after: 'после',\n over: 'над',\n under: 'под',\n between: 'между',\n through: 'через',\n without: 'без',\n on: 'на',\n },\n\n events: {\n click: 'клик',\n dblclick: 'двойной_клик',\n mousedown: 'мышь_вниз',\n mouseup: 'мышь_вверх',\n mouseenter: 'мышь_вход',\n mouseleave: 'мышь_выход',\n mouseover: 'наведение',\n mouseout: 'уход',\n mousemove: 'движение_мыши',\n\n keydown: 'клавиша_вниз',\n keyup: 'клавиша_вверх',\n keypress: 'нажатие_клавиши',\n\n focus: 'фокус',\n blur: 'потеря_фокуса',\n change: 'изменение',\n input: 'ввод',\n submit: 'отправка',\n reset: 'сброс',\n\n load: 'загрузка',\n unload: 'выгрузка',\n resize: 'изменение_размера',\n scroll: 'прокрутка',\n\n touchstart: 'касание_начало',\n touchend: 'касание_конец',\n touchmove: 'касание_движение',\n touchcancel: 'касание_отмена',\n },\n\n logical: {\n when: 'когда',\n where: 'где',\n and: 'и',\n or: 'или',\n not: 'не',\n is: 'есть',\n exists: 'существует',\n matches: 'соответствует',\n contains: 'содержит',\n includes: 'включает',\n equals: 'равно',\n then: 'затем',\n else: 'иначе',\n otherwise: 'в_противном_случае',\n end: 'конец',\n has: 'имеет', // third-person: он/она имеет\n have: 'имею', // first-person: я имею\n isNot: 'не_есть',\n empty: 'пустой',\n },\n\n temporal: {\n seconds: 'секунд',\n second: 'секунда',\n milliseconds: 'миллисекунд',\n millisecond: 'миллисекунда',\n minutes: 'минут',\n minute: 'минута',\n hours: 'часов',\n hour: 'час',\n ms: 'мс',\n s: 'с',\n min: 'мин',\n h: 'ч',\n forever: 'всегда',\n once: 'однажды',\n every: 'каждый',\n until: 'до',\n },\n\n values: {\n true: 'истина',\n false: 'ложь',\n null: 'ничего',\n undefined: 'неопределено',\n it: 'это',\n its: 'его',\n me: 'я',\n my: 'мой',\n you: 'ты',\n your: 'твой',\n yourself: 'сам',\n myself: 'я_сам',\n element: 'элемент',\n target: 'цель',\n detail: 'детали',\n event: 'событие',\n window: 'окно',\n document: 'документ',\n body: 'тело',\n result: 'результат',\n value: 'значение',\n first: 'первый',\n last: 'последний',\n next: 'следующий',\n previous: 'предыдущий',\n closest: 'ближайший',\n parent: 'родитель',\n },\n\n attributes: {\n class: 'класс',\n classes: 'классы',\n style: 'стиль',\n styles: 'стили',\n attribute: 'атрибут',\n attributes: 'атрибуты',\n property: 'свойство',\n properties: 'свойства',\n disabled: 'отключено',\n hidden: 'скрыто',\n checked: 'отмечено',\n selected: 'выбрано',\n readonly: 'только_чтение',\n required: 'обязательно',\n text: 'текст',\n html: 'html',\n },\n\n expressions: {\n // Positional\n first: 'первый',\n last: 'последний',\n next: 'следующий',\n previous: 'предыдущий',\n prev: 'пред',\n at: 'в',\n random: 'случайный',\n\n // DOM Traversal\n closest: 'ближайший',\n parent: 'родитель',\n children: 'дети',\n within: 'внутри',\n\n // Emptiness/Existence\n no: 'нет',\n empty: 'пустой',\n some: 'некоторые',\n\n // String operations\n 'starts with': 'начинается_с',\n 'ends with': 'заканчивается_на',\n },\n};\n","/**\n * Ukrainian Dictionary\n *\n * Translations for Ukrainian language support.\n * Uses infinitive verbs (common in software UIs).\n */\n\nimport { Dictionary } from '../types';\n\nexport const ukrainianDictionary: Dictionary = {\n commands: {\n // Event handling\n on: 'при',\n tell: 'сказати',\n trigger: 'викликати',\n send: 'надіслати',\n\n // DOM manipulation\n take: 'взяти',\n put: 'покласти',\n set: 'встановити',\n get: 'отримати',\n add: 'додати',\n remove: 'видалити',\n toggle: 'перемкнути',\n hide: 'сховати',\n show: 'показати',\n\n // Control flow\n if: 'якщо',\n unless: 'якщо_не',\n repeat: 'повторити',\n for: 'для',\n while: 'поки',\n until: 'до',\n continue: 'продовжити',\n break: 'перервати',\n halt: 'зупинити',\n\n // Async\n wait: 'чекати',\n fetch: 'завантажити',\n call: 'викликати',\n return: 'повернути',\n\n // Other commands\n make: 'створити',\n log: 'записати',\n throw: 'кинути',\n catch: 'зловити',\n measure: 'виміряти',\n transition: 'анімувати',\n\n // Data Commands\n increment: 'збільшити',\n decrement: 'зменшити',\n bind: \"прив'язати\",\n default: 'за_замовчуванням',\n persist: 'зберегти',\n\n // Navigation Commands\n go: 'перейти',\n pushUrl: 'додати_url',\n replaceUrl: 'замінити_url',\n\n // Utility Commands\n copy: 'копіювати',\n pick: 'вибрати',\n beep: 'звук',\n\n // Advanced Commands\n js: 'js',\n async: 'асинхронно',\n render: 'відобразити',\n\n // Animation Commands\n swap: 'поміняти',\n morph: 'трансформувати',\n settle: 'стабілізувати',\n\n // Content Commands\n append: 'додати_в_кінець',\n\n // Control Flow\n exit: 'вийти',\n else: 'інакше',\n\n // Behaviors\n install: 'встановити',\n init: 'ініціалізувати',\n behavior: 'поведінка',\n\n // Focus\n focus: 'сфокусувати',\n blur: 'розфокусувати',\n\n // Clone\n clone: 'клонувати',\n prepend: 'додати_на_початок',\n },\n\n modifiers: {\n to: 'до',\n from: 'з',\n into: 'в',\n with: 'з',\n at: 'в',\n in: 'у',\n of: 'з',\n as: 'як',\n by: 'на',\n before: 'до',\n after: 'після',\n over: 'над',\n under: 'під',\n between: 'між',\n through: 'через',\n without: 'без',\n on: 'на',\n },\n\n events: {\n click: 'клік',\n dblclick: 'подвійний_клік',\n mousedown: 'миша_вниз',\n mouseup: 'миша_вгору',\n mouseenter: 'миша_вхід',\n mouseleave: 'миша_вихід',\n mouseover: 'наведення',\n mouseout: 'відведення',\n mousemove: 'рух_миші',\n\n keydown: 'клавіша_вниз',\n keyup: 'клавіша_вгору',\n keypress: 'натискання_клавіші',\n\n focus: 'фокус',\n blur: 'розфокус',\n change: 'зміна',\n input: 'введення',\n submit: 'надсилання',\n reset: 'скидання',\n\n load: 'завантаження',\n unload: 'вивантаження',\n resize: 'зміна_розміру',\n scroll: 'прокрутка',\n\n touchstart: 'дотик_початок',\n touchend: 'дотик_кінець',\n touchmove: 'дотик_рух',\n touchcancel: 'дотик_скасування',\n },\n\n logical: {\n when: 'коли',\n where: 'де',\n and: 'і',\n or: 'або',\n not: 'не',\n is: 'є',\n exists: 'існує',\n matches: 'відповідає',\n contains: 'містить',\n includes: 'включає',\n equals: 'дорівнює',\n then: 'тоді',\n else: 'інакше',\n otherwise: 'в_іншому_випадку',\n end: 'кінець',\n has: 'має', // third-person: він/вона має\n have: 'маю', // first-person: я маю\n isNot: 'не_є',\n empty: 'порожній',\n },\n\n temporal: {\n seconds: 'секунд',\n second: 'секунда',\n milliseconds: 'мілісекунд',\n millisecond: 'мілісекунда',\n minutes: 'хвилин',\n minute: 'хвилина',\n hours: 'годин',\n hour: 'година',\n ms: 'мс',\n s: 'с',\n min: 'хв',\n h: 'год',\n forever: 'завжди',\n once: 'один_раз',\n every: 'кожний',\n until: 'до',\n },\n\n values: {\n true: 'істина',\n false: 'хибність',\n null: 'нічого',\n undefined: 'невизначено',\n it: 'це',\n its: 'його',\n me: 'я',\n my: 'мій',\n you: 'ти',\n your: 'твій',\n yourself: 'сам',\n myself: 'я_сам',\n element: 'елемент',\n target: 'ціль',\n detail: 'деталі',\n event: 'подія',\n window: 'вікно',\n document: 'документ',\n body: 'тіло',\n result: 'результат',\n value: 'значення',\n first: 'перший',\n last: 'останній',\n next: 'наступний',\n previous: 'попередній',\n closest: 'найближчий',\n parent: 'батьківський',\n },\n\n attributes: {\n class: 'клас',\n classes: 'класи',\n style: 'стиль',\n styles: 'стилі',\n attribute: 'атрибут',\n attributes: 'атрибути',\n property: 'властивість',\n properties: 'властивості',\n disabled: 'вимкнено',\n hidden: 'приховано',\n checked: 'позначено',\n selected: 'вибрано',\n readonly: 'лише_читання',\n required: \"обов'язково\",\n text: 'текст',\n html: 'html',\n },\n\n expressions: {\n // Positional\n first: 'перший',\n last: 'останній',\n next: 'наступний',\n previous: 'попередній',\n prev: 'попер',\n at: 'в',\n random: 'випадковий',\n\n // DOM Traversal\n closest: 'найближчий',\n parent: 'батьківський',\n children: 'діти',\n within: 'всередині',\n\n // Emptiness/Existence\n no: 'ні',\n empty: 'порожній',\n some: 'деякі',\n\n // String operations\n 'starts with': 'починається_з',\n 'ends with': 'закінчується_на',\n },\n};\n","/**\n * Hindi Dictionary\n *\n * Translations for Hindi language support.\n * Uses imperative verb forms (common in software UIs).\n */\n\nimport { Dictionary } from '../types';\n\nexport const hindiDictionary: Dictionary = {\n commands: {\n // Event handling\n on: 'पर',\n tell: 'बताएं',\n trigger: 'ट्रिगर',\n send: 'भेजें',\n\n // DOM manipulation\n take: 'लें',\n put: 'रखें',\n set: 'सेट',\n get: 'प्राप्त',\n add: 'जोड़ें',\n remove: 'हटाएं',\n toggle: 'टॉगल',\n hide: 'छिपाएं',\n show: 'दिखाएं',\n\n // Control flow\n if: 'अगर',\n unless: 'जब_तक_नहीं',\n repeat: 'दोहराएं',\n for: 'के_लिए',\n while: 'जब_तक',\n until: 'तक',\n continue: 'जारी',\n break: 'रोकें',\n halt: 'रोकें',\n\n // Async\n wait: 'प्रतीक्षा',\n fetch: 'लाएं',\n call: 'कॉल',\n return: 'लौटाएं',\n\n // Other commands\n make: 'बनाएं',\n log: 'लॉग',\n throw: 'फेंकें',\n catch: 'पकड़ें',\n measure: 'मापें',\n transition: 'संक्रमण',\n\n // Data Commands\n increment: 'बढ़ाएं',\n decrement: 'घटाएं',\n bind: 'बाँधें',\n default: 'डिफ़ॉल्ट',\n persist: 'सहेजें',\n\n // Navigation Commands\n go: 'जाएं',\n pushUrl: 'url_जोड़ें',\n replaceUrl: 'url_बदलें',\n\n // Utility Commands\n copy: 'कॉपी',\n pick: 'चुनें',\n beep: 'बीप',\n\n // Advanced Commands\n js: 'जेएस',\n async: 'असिंक',\n render: 'रेंडर',\n\n // Animation Commands\n swap: 'बदलें',\n morph: 'रूपांतर',\n settle: 'स्थिर',\n\n // Content Commands\n append: 'जोड़ें_अंत',\n\n // Control Flow\n exit: 'बाहर',\n else: 'वरना',\n\n // Behaviors\n install: 'इंस्टॉल',\n init: 'प्रारंभ',\n behavior: 'व्यवहार',\n\n // Focus\n focus: 'फोकस',\n blur: 'धुंधला',\n\n // Clone\n clone: 'कॉपी',\n prepend: 'जोड़ें_शुरू',\n },\n\n modifiers: {\n to: 'को',\n from: 'से',\n into: 'में',\n with: 'के_साथ',\n at: 'पर',\n in: 'में',\n of: 'का',\n as: 'के_रूप_में',\n by: 'द्वारा',\n before: 'से_पहले',\n after: 'के_बाद',\n over: 'के_ऊपर',\n under: 'के_नीचे',\n between: 'के_बीच',\n through: 'के_माध्यम_से',\n without: 'के_बिना',\n on: 'पर',\n },\n\n events: {\n click: 'क्लिक',\n dblclick: 'डबल_क्लिक',\n mousedown: 'माउस_नीचे',\n mouseup: 'माउस_ऊपर',\n mouseenter: 'माउस_प्रवेश',\n mouseleave: 'माउस_बाहर',\n mouseover: 'माउस_ओवर',\n mouseout: 'माउस_आउट',\n mousemove: 'माउस_मूव',\n\n keydown: 'की_नीचे',\n keyup: 'की_ऊपर',\n keypress: 'की_प्रेस',\n\n focus: 'फोकस',\n blur: 'धुंधला',\n change: 'परिवर्तन',\n input: 'इनपुट',\n submit: 'जमा',\n reset: 'रीसेट',\n\n load: 'लोड',\n unload: 'अनलोड',\n resize: 'आकार_बदलें',\n scroll: 'स्क्रॉल',\n\n touchstart: 'टच_शुरू',\n touchend: 'टच_समाप्त',\n touchmove: 'टच_मूव',\n touchcancel: 'टच_रद्द',\n },\n\n logical: {\n when: 'जब',\n where: 'कहाँ',\n and: 'और',\n or: 'या',\n not: 'नहीं',\n is: 'है',\n exists: 'मौजूद',\n matches: 'मेल_खाता',\n contains: 'शामिल',\n includes: 'में_है',\n equals: 'बराबर',\n then: 'फिर',\n else: 'वरना',\n otherwise: 'अन्यथा',\n end: 'समाप्त',\n has: 'है', // existence verb (context-based)\n have: 'है', // same verb for first/third person\n isNot: 'नहीं_है',\n empty: 'खाली',\n },\n\n temporal: {\n seconds: 'सेकंड',\n second: 'सेकंड',\n milliseconds: 'मिलीसेकंड',\n millisecond: 'मिलीसेकंड',\n minutes: 'मिनट',\n minute: 'मिनट',\n hours: 'घंटे',\n hour: 'घंटा',\n ms: 'मिसे',\n s: 'से',\n min: 'मि',\n h: 'घं',\n forever: 'हमेशा',\n once: 'एक_बार',\n every: 'हर',\n until: 'तक',\n },\n\n values: {\n true: 'सच',\n false: 'झूठ',\n null: 'खाली',\n undefined: 'अपरिभाषित',\n it: 'यह',\n its: 'इसका',\n me: 'मैं',\n my: 'मेरा',\n you: 'आप',\n your: 'आपका',\n yourself: 'स्वयं',\n myself: 'मैं_स्वयं',\n element: 'तत्व',\n target: 'लक्ष्य',\n detail: 'विवरण',\n event: 'घटना',\n window: 'विंडो',\n document: 'दस्तावेज़',\n body: 'बॉडी',\n result: 'परिणाम',\n value: 'मान',\n first: 'पहला',\n last: 'अंतिम',\n next: 'अगला',\n previous: 'पिछला',\n closest: 'निकटतम',\n parent: 'मूल',\n },\n\n attributes: {\n class: 'क्लास',\n classes: 'क्लासेस',\n style: 'स्टाइल',\n styles: 'स्टाइल्स',\n attribute: 'गुण',\n attributes: 'गुण',\n property: 'संपत्ति',\n properties: 'संपत्तियाँ',\n disabled: 'अक्षम',\n hidden: 'छिपा',\n checked: 'चेक',\n selected: 'चयनित',\n readonly: 'केवल_पढ़ने',\n required: 'आवश्यक',\n text: 'पाठ',\n html: 'html',\n },\n\n expressions: {\n // Positional\n first: 'पहला',\n last: 'अंतिम',\n next: 'अगला',\n previous: 'पिछला',\n prev: 'पिछ',\n at: 'पर',\n random: 'यादृच्छिक',\n\n // DOM Traversal\n closest: 'निकटतम',\n parent: 'मूल',\n children: 'बच्चे',\n within: 'के_अंदर',\n\n // Emptiness/Existence\n no: 'नहीं',\n empty: 'खाली',\n some: 'कुछ',\n\n // String operations\n 'starts with': 'से_शुरू',\n 'ends with': 'पर_समाप्त',\n },\n};\n","/**\n * Bengali Dictionary\n *\n * Bengali translations for hyperscript keywords.\n */\n\nimport { Dictionary } from '../types';\n\nexport const bengaliDictionary: Dictionary = {\n commands: {\n on: 'তে',\n toggle: 'টগল',\n add: 'যোগ',\n remove: 'সরান',\n set: 'সেট',\n get: 'পান',\n put: 'রাখুন',\n take: 'নিন',\n show: 'দেখান',\n hide: 'লুকান',\n increment: 'বৃদ্ধি',\n decrement: 'হ্রাস',\n if: 'যদি',\n else: 'নতুবা',\n repeat: 'পুনরাবৃত্তি',\n for: 'জন্য',\n while: 'যতক্ষণ',\n wait: 'অপেক্ষা',\n fetch: 'আনুন',\n call: 'কল',\n return: 'ফিরুন',\n log: 'লগ',\n trigger: 'ট্রিগার',\n send: 'পাঠান',\n go: 'যান',\n halt: 'থামুন',\n throw: 'নিক্ষেপ',\n continue: 'চালিয়ে যান',\n make: 'তৈরি করুন',\n append: 'শেষে যোগ',\n prepend: 'শুরুতে যোগ',\n focus: 'ফোকাস',\n blur: 'ঝাপসা',\n transition: 'সংক্রমণ',\n settle: 'স্থির',\n measure: 'মাপুন',\n async: 'অ্যাসিঙ্ক',\n tell: 'বলুন',\n default: 'ডিফল্ট',\n init: 'শুরু',\n behavior: 'আচরণ',\n install: 'ইনস্টল',\n clone: 'কপি',\n swap: 'বদল',\n morph: 'রূপান্তর',\n },\n modifiers: {\n to: 'কে',\n from: 'থেকে',\n into: 'তে',\n on: 'তে',\n with: 'সাথে',\n by: 'দ্বারা',\n as: 'হিসাবে',\n before: 'আগে',\n after: 'পরে',\n at: 'এ',\n in: 'এ',\n over: 'উপর',\n then: 'তারপর',\n and: 'এবং',\n end: 'শেষ',\n until: 'পর্যন্ত',\n of: 'র',\n },\n events: {\n click: 'ক্লিক',\n change: 'পরিবর্তন',\n input: 'ইনপুট',\n submit: 'জমা',\n load: 'লোড',\n focus: 'ফোকাস',\n blur: 'ঝাপসা',\n keydown: 'কি-ডাউন',\n keyup: 'কি-আপ',\n mouseover: 'মাউস-ওভার',\n mouseout: 'মাউস-আউট',\n scroll: 'স্ক্রোল',\n resize: 'রিসাইজ',\n every: 'প্রতি',\n },\n logical: {\n if: 'যদি',\n when: 'যখন',\n where: 'কোথায়',\n else: 'নতুবা',\n not: 'না',\n and: 'এবং',\n or: 'অথবা',\n is: 'হয়',\n exists: 'আছে',\n has: 'আছে', // possession verb (context-based)\n have: 'আছি', // first-person: আমার আছি\n empty: 'খালি',\n true: 'সত্য',\n false: 'মিথ্যা',\n null: 'শূন্য',\n undefined: 'অনির্ধারিত',\n },\n temporal: {\n now: 'এখন',\n seconds: 'সেকেন্ড',\n milliseconds: 'মিলিসেকেন্ড',\n minutes: 'মিনিট',\n hours: 'ঘণ্টা',\n forever: 'চিরকাল',\n times: 'বার',\n s: 'সে',\n ms: 'মিসে',\n },\n values: {\n me: 'আমি',\n my: 'আমার',\n it: 'এটি',\n its: 'এর',\n result: 'ফলাফল',\n event: 'ঘটনা',\n target: 'লক্ষ্য',\n body: 'বডি',\n },\n attributes: {\n class: 'শ্রেণি',\n id: 'আইডি',\n style: 'শৈলী',\n value: 'মান',\n text: 'পাঠ্য',\n html: 'এইচটিএমএল',\n disabled: 'অক্ষম',\n checked: 'চেক করা',\n },\n expressions: {\n first: 'প্রথম',\n last: 'শেষ',\n next: 'পরবর্তী',\n previous: 'আগের',\n closest: 'নিকটতম',\n parent: 'মূল',\n children: 'সন্তান',\n random: 'এলোমেলো',\n length: 'দৈর্ঘ্য',\n index: 'সূচক',\n },\n};\n\n// Default export alias\nexport const bn = bengaliDictionary;\n","/**\n * Thai Dictionary\n *\n * Thai translations for hyperscript keywords.\n */\n\nimport { Dictionary } from '../types';\n\nexport const thaiDictionary: Dictionary = {\n commands: {\n on: 'เมื่อ',\n toggle: 'สลับ',\n add: 'เพิ่ม',\n remove: 'ลบ',\n set: 'ตั้ง',\n get: 'รับค่า',\n put: 'ใส่',\n take: 'รับ',\n show: 'แสดง',\n hide: 'ซ่อน',\n increment: 'เพิ่มค่า',\n decrement: 'ลดค่า',\n if: 'ถ้า',\n else: 'ไม่งั้น',\n repeat: 'ทำซ้ำ',\n for: 'สำหรับ',\n while: 'ในขณะที่',\n wait: 'รอ',\n fetch: 'ดึงข้อมูล',\n call: 'เรียก',\n return: 'คืนค่า',\n log: 'บันทึก',\n trigger: 'ทริกเกอร์',\n send: 'ส่ง',\n go: 'ไป',\n halt: 'หยุด',\n throw: 'โยน',\n continue: 'ต่อไป',\n make: 'สร้าง',\n append: 'เพิ่มท้าย',\n prepend: 'เพิ่มหน้า',\n focus: 'โฟกัส',\n blur: 'เบลอ',\n transition: 'เปลี่ยน',\n settle: 'คงที่',\n measure: 'วัด',\n async: 'อะซิงค์',\n tell: 'บอก',\n default: 'ค่าเริ่มต้น',\n init: 'เริ่มต้น',\n behavior: 'พฤติกรรม',\n install: 'ติดตั้ง',\n clone: 'คัดลอก',\n swap: 'สลับที่',\n morph: 'แปลงร่าง',\n },\n modifiers: {\n to: 'ไปยัง',\n from: 'จาก',\n into: 'ใน',\n on: 'เมื่อ',\n with: 'ด้วย',\n by: 'โดย',\n as: 'เป็น',\n before: 'ก่อน',\n after: 'หลัง',\n at: 'ที่',\n in: 'ใน',\n over: 'เหนือ',\n then: 'แล้ว',\n and: 'และ',\n end: 'จบ',\n until: 'จนถึง',\n of: 'ของ',\n },\n events: {\n click: 'คลิก',\n change: 'เปลี่ยนแปลง',\n input: 'อินพุต',\n submit: 'ส่ง',\n load: 'โหลด',\n focus: 'โฟกัส',\n blur: 'เบลอ',\n keydown: 'กดคีย์',\n keyup: 'ปล่อยคีย์',\n mouseover: 'เมาส์เข้า',\n mouseout: 'เมาส์ออก',\n scroll: 'เลื่อน',\n resize: 'ปรับขนาด',\n every: 'ทุก',\n },\n logical: {\n if: 'ถ้า',\n when: 'เมื่อ',\n where: 'ที่ไหน',\n else: 'ไม่งั้น',\n not: 'ไม่',\n and: 'และ',\n or: 'หรือ',\n is: 'เป็น',\n exists: 'มีอยู่',\n has: 'มี', // possession verb (context-based)\n have: 'มี', // same for first/third person\n empty: 'ว่าง',\n true: 'จริง',\n false: 'เท็จ',\n null: 'ว่าง',\n undefined: 'ไม่กำหนด',\n },\n temporal: {\n now: 'ตอนนี้',\n seconds: 'วินาที',\n milliseconds: 'มิลลิวินาที',\n minutes: 'นาที',\n hours: 'ชั่วโมง',\n forever: 'ตลอดไป',\n times: 'ครั้ง',\n s: 'วิ',\n ms: 'มว',\n },\n values: {\n me: 'ฉัน',\n my: 'ของฉัน',\n it: 'มัน',\n its: 'ของมัน',\n result: 'ผลลัพธ์',\n event: 'เหตุการณ์',\n target: 'เป้าหมาย',\n body: 'บอดี้',\n },\n attributes: {\n class: 'คลาส',\n id: 'ไอดี',\n style: 'สไตล์',\n value: 'ค่า',\n text: 'ข้อความ',\n html: 'เอชทีเอ็มแอล',\n disabled: 'ปิดใช้งาน',\n checked: 'เลือกแล้ว',\n },\n expressions: {\n first: 'แรก',\n last: 'สุดท้าย',\n next: 'ถัดไป',\n previous: 'ก่อนหน้า',\n closest: 'ใกล้สุด',\n parent: 'ต้นทาง',\n children: 'ลูก',\n random: 'สุ่ม',\n length: 'ความยาว',\n index: 'ดัชนี',\n },\n};\n\n// Default export alias\nexport const th = thaiDictionary;\n","/**\n * Malay Dictionary\n *\n * Malay translations for hyperscript keywords.\n * Malay is an SVO (Subject-Verb-Object) language with prepositions.\n */\n\nimport { Dictionary } from '../types';\n\nexport const malayDictionary: Dictionary = {\n commands: {\n // Event handling\n on: 'apabila',\n tell: 'beritahu',\n trigger: 'cetuskan',\n send: 'hantar',\n\n // DOM manipulation\n take: 'ambil',\n put: 'letak',\n set: 'tetapkan',\n get: 'dapatkan',\n add: 'tambah',\n remove: 'buang',\n toggle: 'togol',\n hide: 'sembunyi',\n show: 'tunjuk',\n\n // Control flow\n if: 'jika',\n unless: 'kecuali',\n repeat: 'ulang',\n for: 'untuk',\n while: 'selagi',\n until: 'sehingga',\n continue: 'teruskan',\n break: 'henti',\n halt: 'henti',\n\n // Async\n wait: 'tunggu',\n fetch: 'ambil_dari',\n call: 'panggil',\n return: 'pulang',\n\n // Other commands\n make: 'buat',\n log: 'catat',\n throw: 'lempar',\n catch: 'tangkap',\n measure: 'ukur',\n transition: 'peralihan',\n\n // Data Commands\n increment: 'tambah_satu',\n decrement: 'kurang_satu',\n bind: 'ikat',\n default: 'lalai',\n persist: 'kekal',\n\n // Navigation Commands\n go: 'pergi',\n pushUrl: 'tolak_url',\n replaceUrl: 'ganti_url',\n\n // Utility Commands\n copy: 'salin',\n pick: 'pilih',\n beep: 'bunyi',\n\n // Advanced Commands\n js: 'js',\n async: 'tak_segerak',\n render: 'papar',\n\n // Animation Commands\n swap: 'tukar_tempat',\n morph: 'ubah_bentuk',\n settle: 'selesai',\n\n // Content Commands\n append: 'tambah_hujung',\n prepend: 'tambah_mula',\n\n // Control Flow\n exit: 'keluar',\n else: 'kalau_tidak',\n\n // Focus Commands\n focus: 'fokus',\n blur: 'kabur',\n\n // Behaviors\n install: 'pasang',\n behavior: 'kelakuan',\n init: 'mula',\n clone: 'klon',\n },\n\n modifiers: {\n to: 'ke',\n from: 'dari',\n into: 'ke_dalam',\n with: 'dengan',\n at: 'di',\n in: 'dalam',\n of: 'daripada',\n as: 'sebagai',\n by: 'oleh',\n before: 'sebelum',\n after: 'selepas',\n over: 'atas',\n under: 'bawah',\n between: 'antara',\n through: 'melalui',\n without: 'tanpa',\n on: 'pada',\n then: 'kemudian',\n and: 'dan',\n end: 'tamat',\n until: 'sehingga',\n },\n\n events: {\n click: 'click',\n dblclick: 'dblclick',\n mousedown: 'mousedown',\n mouseup: 'mouseup',\n mouseenter: 'mouseenter',\n mouseleave: 'mouseleave',\n mouseover: 'mouseover',\n mouseout: 'mouseout',\n mousemove: 'mousemove',\n\n keydown: 'keydown',\n keyup: 'keyup',\n keypress: 'keypress',\n\n focus: 'focus',\n blur: 'blur',\n change: 'change',\n input: 'input',\n submit: 'submit',\n reset: 'reset',\n\n load: 'load',\n unload: 'unload',\n resize: 'resize',\n scroll: 'scroll',\n\n touchstart: 'touchstart',\n touchend: 'touchend',\n touchmove: 'touchmove',\n touchcancel: 'touchcancel',\n\n every: 'setiap',\n },\n\n logical: {\n when: 'apabila',\n where: 'di_mana',\n and: 'dan',\n or: 'atau',\n not: 'bukan',\n is: 'adalah',\n exists: 'wujud',\n matches: 'sepadan',\n contains: 'mengandungi',\n includes: 'termasuk',\n equals: 'sama',\n has: 'ada', // possession verb (context-based)\n have: 'ada', // same for first/third person\n then: 'kemudian',\n else: 'kalau_tidak',\n otherwise: 'jika_tidak',\n end: 'tamat',\n if: 'jika',\n empty: 'kosong',\n true: 'benar',\n false: 'salah',\n null: 'null',\n undefined: 'tidak_ditakrifkan',\n },\n\n temporal: {\n seconds: 'saat',\n second: 'saat',\n milliseconds: 'milisaat',\n millisecond: 'milisaat',\n minutes: 'minit',\n minute: 'minit',\n hours: 'jam',\n hour: 'jam',\n ms: 'ms',\n s: 's',\n min: 'min',\n h: 'j',\n now: 'sekarang',\n forever: 'selamanya',\n times: 'kali',\n },\n\n values: {\n true: 'benar',\n false: 'salah',\n null: 'null',\n undefined: 'tidak_ditakrifkan',\n it: 'ia',\n its: 'nya',\n me: 'saya',\n my: 'saya_punya',\n myself: 'diri_saya',\n you: 'kamu',\n your: 'kamu_punya',\n yourself: 'diri_kamu',\n element: 'elemen',\n target: 'sasaran',\n detail: 'perincian',\n event: 'peristiwa',\n window: 'tetingkap',\n document: 'dokumen',\n body: 'badan',\n result: 'hasil',\n value: 'nilai',\n },\n\n attributes: {\n class: 'kelas',\n classes: 'kelas_kelas',\n style: 'gaya',\n styles: 'gaya_gaya',\n attribute: 'atribut',\n attributes: 'atribut_atribut',\n property: 'sifat',\n properties: 'sifat_sifat',\n id: 'id',\n value: 'nilai',\n text: 'teks',\n html: 'html',\n disabled: 'dilumpuhkan',\n checked: 'ditanda',\n },\n\n expressions: {\n // Positional\n first: 'pertama',\n last: 'terakhir',\n next: 'seterusnya',\n previous: 'sebelumnya',\n prev: 'sebelum',\n at: 'di',\n random: 'rawak',\n\n // DOM Traversal\n closest: 'terdekat',\n parent: 'induk',\n children: 'anak_anak',\n within: 'dalam',\n\n // Emptiness/Existence\n no: 'tiada',\n empty: 'kosong',\n some: 'beberapa',\n\n // String operations\n 'starts with': 'bermula_dengan',\n 'ends with': 'berakhir_dengan',\n\n // Additional\n length: 'panjang',\n index: 'indeks',\n },\n};\n\n// Default export alias\nexport const ms = malayDictionary;\n","/**\n * Tagalog Dictionary\n *\n * Tagalog translations for hyperscript keywords.\n * Tagalog is a VSO (Verb-Subject-Object) language with rich verbal morphology.\n */\n\nimport { Dictionary } from '../types';\n\nexport const tagalogDictionary: Dictionary = {\n commands: {\n // Event handling\n on: 'kapag',\n tell: 'sabihin',\n trigger: 'palitawin',\n send: 'ipadala',\n\n // DOM manipulation\n take: 'kunin',\n put: 'ilagay',\n set: 'itakda',\n get: 'kuhanin',\n add: 'idagdag',\n remove: 'alisin',\n toggle: 'palitan',\n hide: 'itago',\n show: 'ipakita',\n\n // Control flow\n if: 'kung',\n unless: 'maliban_kung',\n repeat: 'ulitin',\n for: 'para_sa',\n while: 'habang',\n until: 'hanggang',\n continue: 'magpatuloy',\n break: 'itigil',\n halt: 'huminto',\n\n // Async\n wait: 'maghintay',\n fetch: 'kuhanin_mula',\n call: 'tawagin',\n return: 'ibalik',\n\n // Other commands\n make: 'gumawa',\n log: 'itala',\n throw: 'ihagis',\n catch: 'hulihin',\n measure: 'sukatin',\n transition: 'baguhin',\n\n // Data Commands\n increment: 'dagdagan',\n decrement: 'bawasan',\n bind: 'itali',\n default: 'pamantayan',\n persist: 'panatilihin',\n\n // Navigation Commands\n go: 'pumunta',\n pushUrl: 'itulak_url',\n replaceUrl: 'palitan_url',\n\n // Utility Commands\n copy: 'kopyahin',\n pick: 'pumili',\n beep: 'tunog',\n\n // Advanced Commands\n js: 'js',\n async: 'sabay',\n render: 'ipakita',\n\n // Animation Commands\n swap: 'palitan_pwesto',\n morph: 'baguhin_hugis',\n settle: 'ayusin',\n\n // Content Commands\n append: 'idagdag_sa_dulo',\n prepend: 'idagdag_sa_simula',\n\n // Control Flow\n exit: 'lumabas',\n else: 'kung_hindi',\n\n // Focus Commands\n focus: 'ituon',\n blur: 'alisin_tuon',\n\n // Behaviors\n install: 'ikabit',\n behavior: 'ugali',\n init: 'simulan',\n clone: 'kopyahin',\n },\n\n modifiers: {\n to: 'sa',\n from: 'mula_sa',\n into: 'papasok_sa',\n with: 'kasama',\n at: 'sa',\n in: 'sa_loob',\n of: 'ng',\n as: 'bilang',\n by: 'sa_pamamagitan_ng',\n before: 'bago',\n after: 'pagkatapos',\n over: 'sa_ibabaw',\n under: 'sa_ilalim',\n between: 'sa_pagitan',\n through: 'sa_pamamagitan',\n without: 'walang',\n on: 'sa',\n then: 'pagkatapos',\n and: 'at',\n end: 'wakas',\n until: 'hanggang',\n },\n\n events: {\n click: 'click',\n dblclick: 'dblclick',\n mousedown: 'mousedown',\n mouseup: 'mouseup',\n mouseenter: 'mouseenter',\n mouseleave: 'mouseleave',\n mouseover: 'mouseover',\n mouseout: 'mouseout',\n mousemove: 'mousemove',\n\n keydown: 'keydown',\n keyup: 'keyup',\n keypress: 'keypress',\n\n focus: 'focus',\n blur: 'blur',\n change: 'change',\n input: 'input',\n submit: 'submit',\n reset: 'reset',\n\n load: 'load',\n unload: 'unload',\n resize: 'resize',\n scroll: 'scroll',\n\n touchstart: 'touchstart',\n touchend: 'touchend',\n touchmove: 'touchmove',\n touchcancel: 'touchcancel',\n\n every: 'bawat',\n },\n\n logical: {\n when: 'kapag',\n where: 'kung_saan',\n and: 'at',\n or: 'o',\n not: 'hindi',\n is: 'ay',\n exists: 'may',\n matches: 'tumutugma',\n contains: 'naglalaman',\n includes: 'kasama',\n equals: 'katumbas',\n has: 'may', // possession verb (context-based)\n have: 'may', // same for first/third person in Tagalog\n then: 'pagkatapos',\n else: 'kung_hindi',\n otherwise: 'kung_hindi_man',\n end: 'wakas',\n if: 'kung',\n empty: 'walang_laman',\n true: 'totoo',\n false: 'mali',\n null: 'wala',\n undefined: 'hindi_tinukoy',\n },\n\n temporal: {\n seconds: 'segundo',\n second: 'segundo',\n milliseconds: 'milisegundo',\n millisecond: 'milisegundo',\n minutes: 'minuto',\n minute: 'minuto',\n hours: 'oras',\n hour: 'oras',\n ms: 'ms',\n s: 's',\n min: 'min',\n h: 'h',\n now: 'ngayon',\n forever: 'magpakailanman',\n times: 'beses',\n },\n\n values: {\n true: 'totoo',\n false: 'mali',\n null: 'wala',\n undefined: 'hindi_tinukoy',\n it: 'ito',\n its: 'nito',\n me: 'ako',\n my: 'aking',\n myself: 'sarili_ko',\n you: 'ikaw',\n your: 'iyong',\n yourself: 'sarili_mo',\n element: 'elemento',\n target: 'target',\n detail: 'detalye',\n event: 'pangyayari',\n window: 'bintana',\n document: 'dokumento',\n body: 'katawan',\n result: 'resulta',\n value: 'halaga',\n },\n\n attributes: {\n class: 'klase',\n classes: 'mga_klase',\n style: 'estilo',\n styles: 'mga_estilo',\n attribute: 'katangian',\n attributes: 'mga_katangian',\n property: 'ari_arian',\n properties: 'mga_ari_arian',\n id: 'id',\n value: 'halaga',\n text: 'teksto',\n html: 'html',\n disabled: 'hindi_pinagana',\n checked: 'naka_tsek',\n },\n\n expressions: {\n // Positional\n first: 'una',\n last: 'huli',\n next: 'susunod',\n previous: 'nakaraan',\n prev: 'nakaraan',\n at: 'sa',\n random: 'random',\n\n // DOM Traversal\n closest: 'pinakamalapit',\n parent: 'magulang',\n children: 'mga_anak',\n within: 'sa_loob_ng',\n\n // Emptiness/Existence\n no: 'walang',\n empty: 'walang_laman',\n some: 'ilan',\n\n // String operations\n 'starts with': 'nagsisimula_sa',\n 'ends with': 'nagtatapos_sa',\n\n // Additional\n length: 'haba',\n index: 'indeks',\n },\n};\n\n// Default export alias\nexport const tl = tagalogDictionary;\n","/**\n * Dictionary Index\n *\n * Exports dictionaries for all supported languages.\n *\n * Strategy: Dictionaries are derived from semantic profiles where possible,\n * with fallbacks to manual definitions for categories not in profiles\n * (events, temporal, some values, attributes).\n *\n * The semantic package's language profiles are the single source of truth\n * for command/modifier/logical keyword translations.\n *\n * TRANSITION NOTE: Currently using full legacy overrides to preserve\n * backward compatibility. Once profiles and dictionaries are synchronized,\n * the legacy overrides can be reduced to only non-profile categories.\n */\n\nimport { Dictionary } from '../types';\n\n// NOTE: Derivation infrastructure is ready but not yet active.\n// The languageProfiles from @lokascript/semantic can be used with deriveFromProfile()\n// once we're ready to transition away from legacy dictionaries.\n// See ./derive.ts for the derivation utilities.\n\n// Import legacy dictionaries for overrides\n// These provide backward compatibility during the transition period\nimport { en as enLegacy } from './en';\nimport { es as esLegacy } from './es';\nimport { ko as koLegacy } from './ko';\nimport { zh as zhLegacy } from './zh';\nimport { fr as frLegacy } from './fr';\nimport { de as deLegacy } from './de';\nimport { ja as jaLegacy } from './ja';\nimport { ar as arLegacy } from './ar';\nimport { tr as trLegacy } from './tr';\nimport { id as idLegacy } from './id';\nimport { qu as quLegacy } from './qu';\nimport { sw as swLegacy } from './sw';\nimport { pt as ptLegacy } from './pt';\nimport { it as itLegacy } from './it';\nimport { vi as viLegacy } from './vi';\nimport { pl as plLegacy } from './pl';\nimport { russianDictionary as ruLegacy } from './ru';\nimport { ukrainianDictionary as ukLegacy } from './uk';\nimport { hindiDictionary as hiLegacy } from './hi';\nimport { bengaliDictionary as bnLegacy } from './bn';\nimport { thaiDictionary as thLegacy } from './th';\nimport { malayDictionary as msLegacy } from './ms';\nimport { tagalogDictionary as tlLegacy } from './tl';\n\n// =============================================================================\n// Derived Dictionaries with Legacy Overrides\n// =============================================================================\n\n// For backward compatibility, we use full legacy overrides.\n// This ensures no translation changes while establishing the derivation infrastructure.\n// Future: Reduce overrides to only non-profile categories as profiles are synchronized.\n\n/**\n * English dictionary - uses legacy values for full compatibility.\n */\nexport const en: Dictionary = enLegacy;\n\n/**\n * Spanish dictionary - legacy overrides for compatibility.\n */\nexport const es: Dictionary = esLegacy;\n\n/**\n * Japanese dictionary - legacy overrides for compatibility.\n */\nexport const ja: Dictionary = jaLegacy;\n\n/**\n * Korean dictionary - legacy overrides for compatibility.\n */\nexport const ko: Dictionary = koLegacy;\n\n/**\n * Chinese dictionary - legacy overrides for compatibility.\n */\nexport const zh: Dictionary = zhLegacy;\n\n/**\n * French dictionary - legacy overrides for compatibility.\n */\nexport const fr: Dictionary = frLegacy;\n\n/**\n * German dictionary - legacy overrides for compatibility.\n */\nexport const de: Dictionary = deLegacy;\n\n/**\n * Arabic dictionary - legacy overrides for compatibility.\n */\nexport const ar: Dictionary = arLegacy;\n\n/**\n * Turkish dictionary - legacy overrides for compatibility.\n */\nexport const tr: Dictionary = trLegacy;\n\n/**\n * Indonesian dictionary - legacy overrides for compatibility.\n */\nexport const id: Dictionary = idLegacy;\n\n/**\n * Portuguese dictionary - legacy overrides for compatibility.\n */\nexport const pt: Dictionary = ptLegacy;\n\n/**\n * Quechua dictionary - legacy overrides for compatibility.\n */\nexport const qu: Dictionary = quLegacy;\n\n/**\n * Swahili dictionary - legacy overrides for compatibility.\n */\nexport const sw: Dictionary = swLegacy;\n\n/**\n * Italian dictionary - legacy overrides for compatibility.\n */\nexport const it: Dictionary = itLegacy;\n\n/**\n * Vietnamese dictionary - legacy overrides for compatibility.\n */\nexport const vi: Dictionary = viLegacy;\n\n/**\n * Polish dictionary - legacy overrides for compatibility.\n */\nexport const pl: Dictionary = plLegacy;\n\n/**\n * Russian dictionary - legacy overrides for compatibility.\n */\nexport const ru: Dictionary = ruLegacy;\n\n/**\n * Ukrainian dictionary - legacy overrides for compatibility.\n */\nexport const uk: Dictionary = ukLegacy;\n\n/**\n * Hindi dictionary - legacy overrides for compatibility.\n */\nexport const hi: Dictionary = hiLegacy;\n\n/**\n * Bengali dictionary - legacy overrides for compatibility.\n */\nexport const bn: Dictionary = bnLegacy;\n\n/**\n * Thai dictionary - legacy overrides for compatibility.\n */\nexport const th: Dictionary = thLegacy;\n\n/**\n * Malay dictionary - legacy overrides for compatibility.\n */\nexport const ms: Dictionary = msLegacy;\n\n/**\n * Tagalog dictionary - legacy overrides for compatibility.\n */\nexport const tl: Dictionary = tlLegacy;\n\n// =============================================================================\n// Dictionary Registry\n// =============================================================================\n\n/**\n * All available dictionaries indexed by locale code.\n */\nexport const dictionaries: Record<string, Dictionary> = {\n en,\n es,\n ko,\n zh,\n fr,\n de,\n ja,\n ar,\n tr,\n id,\n qu,\n sw,\n pt,\n it,\n vi,\n pl,\n ru,\n uk,\n hi,\n bn,\n th,\n ms,\n tl,\n};\n\n// =============================================================================\n// Helper Functions\n// =============================================================================\n\n/**\n * Get all supported locale codes.\n */\nexport const supportedLocales = Object.keys(dictionaries);\n\n/**\n * Check if a locale is supported.\n */\nexport const isLocaleSupported = (locale: string): boolean => {\n return locale in dictionaries;\n};\n\n/**\n * Get dictionary with fallback to another locale.\n */\nexport const getDictionary = (locale: string, fallback: string = 'en'): Dictionary | null => {\n return dictionaries[locale] || dictionaries[fallback] || null;\n};\n\n// =============================================================================\n// Derivation Utilities (for future use)\n// =============================================================================\n\n/**\n * Re-export derivation utilities for external use.\n * These can be used to derive dictionaries from profiles when ready.\n */\nexport { deriveFromProfile, createEnglishDictionary, validateDictionary } from './derive';\n","// packages/i18n/src/utils/locale.ts\n\nimport { dictionaries } from '../dictionaries';\nimport { DICTIONARY_CATEGORIES } from '../types';\n\nexport interface LocaleInfo {\n code: string;\n language: string;\n region?: string;\n script?: string;\n}\n\n/**\n * Parse a locale string into its components\n * Examples: 'en-US', 'zh-Hans-CN', 'es-419'\n */\nexport function parseLocale(locale: string): LocaleInfo {\n const parts = locale.split('-');\n const info: LocaleInfo = {\n code: locale,\n language: parts[0].toLowerCase(),\n };\n\n if (parts.length > 1) {\n // Check if second part is a script (4 letters, first capitalized)\n if (parts[1].length === 4 && /^[A-Z][a-z]{3}$/.test(parts[1])) {\n info.script = parts[1];\n if (parts[2]) {\n info.region = parts[2].toUpperCase();\n }\n } else {\n info.region = parts[1].toUpperCase();\n }\n }\n\n return info;\n}\n\n/**\n * Detect the language of hyperscript text\n */\nexport function detectLocale(text: string, supportedLocales: string[]): string {\n const scores = new Map<string, number>();\n\n // Initialize scores\n supportedLocales.forEach(locale => scores.set(locale, 0));\n\n // Count keyword matches for each locale using type-safe iteration\n for (const [locale, dictionary] of Object.entries(dictionaries)) {\n if (!supportedLocales.includes(locale)) continue;\n\n let score = 0;\n\n // Check all categories\n for (const category of DICTIONARY_CATEGORIES) {\n const translations = dictionary[category];\n for (const keyword of Object.values(translations)) {\n // Skip empty or single-character keywords (too ambiguous for detection)\n if (!keyword || keyword.length < 2) continue;\n\n // Use word boundary matching for accuracy\n const regex = new RegExp(`\\\\b${escapeRegex(keyword)}\\\\b`, 'gi');\n const matches = text.match(regex);\n if (matches) {\n score += matches.length;\n }\n }\n }\n\n scores.set(locale, score);\n }\n\n // Find locale with highest score\n let maxScore = 0;\n let detectedLocale = 'en'; // Default to English\n\n scores.forEach((score, locale) => {\n if (score > maxScore) {\n maxScore = score;\n detectedLocale = locale;\n }\n });\n\n return detectedLocale;\n}\n\n/**\n * Get the best matching locale from available locales\n */\nexport function getBestMatchingLocale(\n requestedLocale: string,\n availableLocales: string[]\n): string | null {\n // Exact match\n if (availableLocales.includes(requestedLocale)) {\n return requestedLocale;\n }\n\n const requested = parseLocale(requestedLocale);\n\n // Try language-only match\n const languageMatch = availableLocales.find(locale => {\n const available = parseLocale(locale);\n return available.language === requested.language;\n });\n\n if (languageMatch) {\n return languageMatch;\n }\n\n // Try language-script match\n if (requested.script) {\n const scriptMatch = availableLocales.find(locale => {\n const available = parseLocale(locale);\n return available.language === requested.language && available.script === requested.script;\n });\n\n if (scriptMatch) {\n return scriptMatch;\n }\n }\n\n return null;\n}\n\n/**\n * Get user's preferred locales from browser\n */\nexport function getBrowserLocales(): string[] {\n if (typeof window === 'undefined') {\n return ['en'];\n }\n\n const locales: string[] = [];\n\n // Modern browser API\n if (navigator.languages && navigator.languages.length > 0) {\n locales.push(...navigator.languages);\n }\n\n // Fallback to single language\n if (navigator.language) {\n locales.push(navigator.language);\n }\n\n // Legacy IE\n if ((navigator as any).userLanguage) {\n locales.push((navigator as any).userLanguage);\n }\n\n // Remove duplicates and return\n return [...new Set(locales)];\n}\n\n/**\n * Escape special regex characters\n */\nfunction escapeRegex(str: string): string {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\n/**\n * Format a locale for display\n */\nexport function formatLocaleName(locale: string): string {\n const names: Record<string, string> = {\n en: 'English',\n es: 'Español',\n ko: '한국어',\n zh: '中文',\n 'zh-TW': '繁體中文',\n ja: '日本語',\n fr: 'Français',\n de: 'Deutsch',\n pt: 'Português',\n hi: 'हिन्दी',\n ar: 'العربية',\n };\n\n return names[locale] || locale;\n}\n\n/**\n * Check if a locale uses RTL writing\n */\nexport function isRTL(locale: string): boolean {\n const rtlLocales = ['ar', 'he', 'fa', 'ur', 'yi', 'ji', 'ku', 'dv'];\n const info = parseLocale(locale);\n return rtlLocales.includes(info.language);\n}\n","/**\n * Tokenizer Adapter\n *\n * Bridges the semantic package's sophisticated tokenizers to i18n's\n * dictionary-based token categorization system.\n *\n * The semantic tokenizers handle:\n * - Language-specific word boundaries\n * - CSS selectors, URLs, string literals\n * - Grammatical particles (を, に, من)\n * - Morphological normalization\n *\n * This adapter converts semantic tokens to i18n tokens by:\n * 1. Using semantic's tokenize() for sophisticated tokenization\n * 2. Mapping TokenKind to TokenType via dictionary lookup for keywords\n * 3. Preserving position information for round-trip support\n */\n\nimport type { Token, TokenType } from '../types';\nimport { dictionaries } from '../dictionaries';\n\n// =============================================================================\n// Semantic Tokenizer Integration\n// =============================================================================\n\n// Types from semantic package (inlined to avoid circular dependency issues)\ninterface SourcePosition {\n readonly start: number;\n readonly end: number;\n readonly line?: number;\n readonly column?: number;\n}\n\ntype TokenKind =\n | 'keyword'\n | 'selector'\n | 'literal'\n | 'particle'\n | 'conjunction' // Grammatical conjunction (Arabic و/ف proclitics)\n | 'event-modifier' // Event modifiers (.once, .prevent, etc.)\n | 'identifier'\n | 'operator'\n | 'punctuation'\n | 'url';\n\ninterface LanguageToken {\n readonly value: string;\n readonly kind: TokenKind;\n readonly position: SourcePosition;\n readonly normalized?: string;\n readonly stem?: string;\n readonly stemConfidence?: number;\n}\n\ninterface TokenStream {\n readonly tokens: readonly LanguageToken[];\n readonly language: string;\n}\n\n// Lazy load semantic tokenizers to avoid circular dependency at module load time\nlet _semanticTokenize: ((input: string, language: string) => TokenStream) | null = null;\nlet _isLanguageSupported: ((language: string) => boolean) | null = null;\nlet _semanticLoaded = false;\nlet _semanticLoadFailed = false;\n\nasync function loadSemantic(): Promise<boolean> {\n if (_semanticLoaded) return !_semanticLoadFailed;\n if (_semanticLoadFailed) return false;\n\n try {\n // Dynamic import to break circular dependency\n const semantic = await import('@lokascript/semantic');\n _semanticTokenize = semantic.tokenize;\n _isLanguageSupported = semantic.isLanguageSupported;\n _semanticLoaded = true;\n return true;\n } catch {\n _semanticLoadFailed = true;\n return false;\n }\n}\n\n// Synchronous check - only works after first async load\nfunction isSemanticAvailable(): boolean {\n return _semanticLoaded && !_semanticLoadFailed;\n}\n\nfunction semanticTokenize(input: string, language: string): TokenStream | null {\n if (!_semanticTokenize) return null;\n try {\n return _semanticTokenize(input, language);\n } catch {\n return null;\n }\n}\n\nfunction semanticIsLanguageSupported(language: string): boolean {\n if (!_isLanguageSupported) return false;\n return _isLanguageSupported(language);\n}\n\n// =============================================================================\n// Token Type Mapping\n// =============================================================================\n\n/**\n * Map semantic TokenKind to i18n TokenType.\n *\n * Semantic TokenKind → i18n TokenType:\n * - keyword: Use dictionary lookup to determine specific type\n * - selector: identifier (selectors don't get translated)\n * - literal: literal\n * - particle: modifier (grammatical particles)\n * - identifier: identifier\n * - operator: operator\n * - punctuation: operator\n * - url: literal\n */\nfunction mapTokenKind(kind: TokenKind): TokenType {\n switch (kind) {\n case 'keyword':\n // Will be refined by dictionary lookup\n return 'identifier';\n case 'selector':\n return 'identifier';\n case 'literal':\n return 'literal';\n case 'particle':\n return 'modifier';\n case 'conjunction':\n return 'modifier';\n case 'event-modifier':\n return 'modifier';\n case 'identifier':\n return 'identifier';\n case 'operator':\n return 'operator';\n case 'punctuation':\n return 'operator';\n case 'url':\n return 'literal';\n default:\n return 'identifier';\n }\n}\n\n/**\n * Determine the specific i18n TokenType for a word by looking up\n * in the locale's dictionary.\n *\n * Order matters: events before commands since many events (click, focus)\n * also appear in commands.\n */\nfunction categorizeWord(word: string, locale: string): TokenType {\n const lowerWord = word.toLowerCase();\n\n // Map dictionary categories to token types (events first to handle 'click' etc.)\n const categoryToType: Array<[string, TokenType]> = [\n ['events', 'event'],\n ['commands', 'command'],\n ['expressions', 'expression'],\n ['modifiers', 'modifier'],\n ['logical', 'logical'],\n ['temporal', 'temporal'],\n ['values', 'value'],\n ['attributes', 'attribute'],\n ];\n\n // Check all supported dictionaries (source locale + English)\n const localesToCheck = locale === 'en' ? ['en'] : [locale, 'en'];\n\n for (const loc of localesToCheck) {\n const dict = dictionaries[loc];\n if (!dict) continue;\n\n // Check categories in priority order (events before commands)\n for (const [category, tokenType] of categoryToType) {\n const translations = dict[category as keyof typeof dict];\n if (!translations || typeof translations !== 'object') continue;\n\n // Check if word matches a key (English) or value (translated)\n for (const [key, value] of Object.entries(translations)) {\n if (key.toLowerCase() === lowerWord || value.toLowerCase() === lowerWord) {\n return tokenType;\n }\n }\n }\n }\n\n // Default to identifier\n return 'identifier';\n}\n\n// =============================================================================\n// Token Conversion\n// =============================================================================\n\n/**\n * Convert a semantic LanguageToken to an i18n Token.\n */\nfunction convertToken(token: LanguageToken, locale: string): Token {\n let type: TokenType;\n\n if (token.kind === 'keyword') {\n // For keywords, use dictionary lookup to get specific type\n // Use normalized form if available (e.g., 切り替え → toggle)\n const lookupWord = token.normalized || token.value;\n type = categorizeWord(lookupWord, locale);\n } else {\n type = mapTokenKind(token.kind);\n }\n\n return {\n type,\n value: token.value,\n position: {\n start: token.position.start,\n end: token.position.end,\n line: token.position.line ?? 1,\n column: token.position.column ?? token.position.start + 1,\n },\n };\n}\n\n// =============================================================================\n// Public API\n// =============================================================================\n\n/**\n * Initialize the semantic tokenizer (call once at app startup for best performance).\n * This is optional - tokenize() will work without it, using fallback tokenization.\n */\nexport async function initSemanticTokenizer(): Promise<boolean> {\n return loadSemantic();\n}\n\n/**\n * Tokenize input using semantic package's sophisticated tokenizers,\n * converting to i18n-compatible tokens.\n *\n * Falls back to basic tokenization if:\n * - Semantic package not loaded yet\n * - Language not supported by semantic\n * - Any error occurs\n *\n * For best performance, call initSemanticTokenizer() at app startup.\n */\nexport function tokenize(text: string, locale: string): Token[] {\n // Try semantic tokenization if available\n if (isSemanticAvailable() && semanticIsLanguageSupported(locale)) {\n const stream = semanticTokenize(text, locale);\n if (stream) {\n const tokens: Token[] = [];\n for (const semanticToken of stream.tokens) {\n tokens.push(convertToken(semanticToken, locale));\n }\n return tokens;\n }\n }\n\n // Fall back to basic tokenization\n return tokenizeBasic(text, locale);\n}\n\n/**\n * Tokenize with async initialization of semantic tokenizers.\n * Useful when you want to ensure semantic tokenization is used.\n */\nexport async function tokenizeAsync(text: string, locale: string): Promise<Token[]> {\n await loadSemantic();\n return tokenize(text, locale);\n}\n\n/**\n * Basic tokenization fallback for unsupported languages.\n * This is a simplified version that handles common patterns.\n */\nfunction tokenizeBasic(text: string, locale: string): Token[] {\n const tokens: Token[] = [];\n let position = 0;\n let line = 1;\n let column = 1;\n\n while (position < text.length) {\n const start = position;\n const startLine = line;\n const startColumn = column;\n\n // Skip whitespace but track it\n if (isWhitespace(text[position])) {\n const whitespace = consumeWhitespace(text, position);\n tokens.push({\n type: 'literal',\n value: whitespace,\n position: {\n start,\n end: position + whitespace.length,\n line: startLine,\n column: startColumn,\n },\n });\n\n // Update position tracking\n for (let i = 0; i < whitespace.length; i++) {\n if (whitespace[i] === '\\n') {\n line++;\n column = 1;\n } else {\n column++;\n }\n }\n position += whitespace.length;\n continue;\n }\n\n // String literals\n if (text[position] === '\"' || text[position] === \"'\") {\n const quote = text[position];\n let value = quote;\n position++;\n column++;\n\n while (position < text.length && text[position] !== quote) {\n if (text[position] === '\\\\' && position + 1 < text.length) {\n value += text[position] + text[position + 1];\n position += 2;\n column += 2;\n } else {\n value += text[position];\n if (text[position] === '\\n') {\n line++;\n column = 1;\n } else {\n column++;\n }\n position++;\n }\n }\n\n if (position < text.length) {\n value += text[position];\n position++;\n column++;\n }\n\n tokens.push({\n type: 'literal',\n value,\n position: {\n start,\n end: position,\n line: startLine,\n column: startColumn,\n },\n });\n continue;\n }\n\n // Numbers\n if (isDigit(text[position])) {\n const number = consumeNumber(text, position);\n tokens.push({\n type: 'literal',\n value: number,\n position: {\n start,\n end: position + number.length,\n line: startLine,\n column: startColumn,\n },\n });\n position += number.length;\n column += number.length;\n continue;\n }\n\n // Identifiers and keywords\n if (isIdentifierStart(text[position])) {\n const word = consumeIdentifier(text, position);\n const tokenType = categorizeWord(word, locale);\n\n tokens.push({\n type: tokenType,\n value: word,\n position: {\n start,\n end: position + word.length,\n line: startLine,\n column: startColumn,\n },\n });\n position += word.length;\n column += word.length;\n continue;\n }\n\n // Operators and punctuation\n const operator = consumeOperator(text, position);\n tokens.push({\n type: 'operator',\n value: operator,\n position: {\n start,\n end: position + operator.length,\n line: startLine,\n column: startColumn,\n },\n });\n position += operator.length;\n column += operator.length;\n }\n\n return tokens;\n}\n\n// =============================================================================\n// Helper Functions\n// =============================================================================\n\nfunction isWhitespace(char: string): boolean {\n return /\\s/.test(char);\n}\n\nfunction isDigit(char: string): boolean {\n return /\\d/.test(char);\n}\n\nfunction isIdentifierStart(char: string): boolean {\n return /[a-zA-Z_$áéíóúñÑàèìòùÀÈÌÒÙ一-龯ㄱ-ㅎㅏ-ㅣ가-힣]/.test(char);\n}\n\nfunction isIdentifierPart(char: string): boolean {\n return /[a-zA-Z0-9_$áéíóúñÑàèìòùÀÈÌÒÙ一-龯ㄱ-ㅎㅏ-ㅣ가-힣-]/.test(char);\n}\n\nfunction consumeWhitespace(text: string, start: number): string {\n let end = start;\n while (end < text.length && isWhitespace(text[end])) {\n end++;\n }\n return text.substring(start, end);\n}\n\nfunction consumeNumber(text: string, start: number): string {\n let end = start;\n while (end < text.length && (isDigit(text[end]) || text[end] === '.')) {\n end++;\n }\n return text.substring(start, end);\n}\n\nfunction consumeIdentifier(text: string, start: number): string {\n let end = start;\n while (end < text.length && isIdentifierPart(text[end])) {\n end++;\n }\n return text.substring(start, end);\n}\n\nfunction consumeOperator(text: string, start: number): string {\n // Try to match multi-character operators first\n const twoChar = text.substring(start, start + 2);\n if (['==', '!=', '<=', '>=', '&&', '||', '..'].includes(twoChar)) {\n return twoChar;\n }\n\n // Single character operators\n return text[start];\n}\n","// packages/i18n/src/validators/schema.ts\n\nexport const RequiredCategories = [\n 'commands',\n 'modifiers',\n 'events',\n 'logical',\n 'temporal',\n 'values',\n 'attributes',\n] as const;\n\nexport const RequiredKeys = {\n commands: [\n 'on',\n 'tell',\n 'trigger',\n 'send',\n 'take',\n 'put',\n 'set',\n 'get',\n 'add',\n 'remove',\n 'toggle',\n 'hide',\n 'show',\n 'if',\n 'repeat',\n 'for',\n 'while',\n 'wait',\n 'fetch',\n 'call',\n 'return',\n 'make',\n 'log',\n 'throw',\n 'catch',\n ],\n\n modifiers: [\n 'to',\n 'from',\n 'into',\n 'with',\n 'at',\n 'in',\n 'of',\n 'as',\n 'by',\n 'before',\n 'after',\n 'over',\n 'under',\n 'between',\n ],\n\n events: [\n 'click',\n 'change',\n 'focus',\n 'blur',\n 'keydown',\n 'keyup',\n 'mouseenter',\n 'mouseleave',\n 'submit',\n 'load',\n 'scroll',\n ],\n\n logical: ['and', 'or', 'not', 'is', 'then', 'else', 'end'],\n\n temporal: ['seconds', 'milliseconds', 'minutes', 'hours'],\n\n values: ['true', 'false', 'null', 'it', 'me', 'my', 'element', 'window', 'document'],\n\n attributes: [\n 'class',\n 'style',\n 'attribute',\n 'first',\n 'last',\n 'next',\n 'previous',\n 'parent',\n 'children',\n ],\n} as const;\n\nexport interface DictionarySchema {\n readonly categories: ReadonlyArray<string>;\n readonly requiredKeys: Readonly<Record<string, ReadonlyArray<string>>>;\n}\n\nexport const schema: DictionarySchema = {\n categories: RequiredCategories,\n requiredKeys: RequiredKeys,\n};\n\n// Helper type for strict dictionary validation\nexport type StrictDictionary = {\n [K in (typeof RequiredCategories)[number]]: Record<string, string>;\n};\n\n// Validation helpers\nexport function isValidCategory(category: string): category is (typeof RequiredCategories)[number] {\n return RequiredCategories.includes(category as any);\n}\n\nexport function getRequiredKeysForCategory(category: string): ReadonlyArray<string> {\n return RequiredKeys[category as keyof typeof RequiredKeys] || [];\n}\n\nexport function getMissingKeys(\n dictionary: Record<string, string>,\n requiredKeys: ReadonlyArray<string>\n): string[] {\n return requiredKeys.filter(key => !(key in dictionary));\n}\n\nexport function getExtraKeys(\n dictionary: Record<string, string>,\n requiredKeys: ReadonlyArray<string>\n): string[] {\n const required = new Set(requiredKeys);\n return Object.keys(dictionary).filter(key => !required.has(key));\n}\n","// packages/i18n/src/validators/index.ts\n\nimport {\n Dictionary,\n DICTIONARY_CATEGORIES,\n ValidationResult,\n ValidationError,\n ValidationWarning,\n} from '../types';\nimport { RequiredCategories, RequiredKeys } from './schema';\n\nexport function validate(dictionary: Dictionary, locale: string): ValidationResult {\n const errors: ValidationError[] = [];\n const warnings: ValidationWarning[] = [];\n const coverage = {\n total: 0,\n translated: 0,\n missing: [] as string[],\n };\n\n // Check required categories\n for (const category of RequiredCategories) {\n if (!(category in dictionary)) {\n errors.push({\n type: 'missing',\n key: category,\n message: `Missing required category: ${category}`,\n });\n }\n }\n\n // Check required keys in each category\n for (const [category, requiredKeys] of Object.entries(RequiredKeys)) {\n const categoryDict = dictionary[category as keyof Dictionary];\n\n if (!categoryDict) continue;\n\n for (const key of requiredKeys) {\n coverage.total++;\n\n if (!(key in categoryDict)) {\n errors.push({\n type: 'missing',\n key: `${category}.${key}`,\n message: `Missing required key: ${key} in category ${category}`,\n });\n coverage.missing.push(`${category}.${key}`);\n } else if (!categoryDict[key] || categoryDict[key].trim() === '') {\n errors.push({\n type: 'invalid',\n key: `${category}.${key}`,\n message: `Empty translation for key: ${key} in category ${category}`,\n });\n } else {\n coverage.translated++;\n }\n }\n }\n\n // Check for duplicates using type-safe category iteration\n const seen = new Map<string, string>();\n\n for (const category of DICTIONARY_CATEGORIES) {\n const translations = dictionary[category];\n if (!translations) continue;\n\n for (const [key, value] of Object.entries(translations)) {\n if (seen.has(value)) {\n warnings.push({\n type: 'inconsistent',\n key: `${category}.${key}`,\n message: `Duplicate translation \"${value}\" also used for ${seen.get(value)}`,\n });\n } else {\n seen.set(value, `${category}.${key}`);\n }\n }\n }\n\n // Language-specific validations\n validateLocaleSpecific(dictionary, locale, errors, warnings);\n\n return {\n valid: errors.length === 0,\n errors,\n warnings,\n coverage,\n };\n}\n\nfunction validateLocaleSpecific(\n dictionary: Dictionary,\n locale: string,\n _errors: ValidationError[],\n warnings: ValidationWarning[]\n): void {\n // Spanish-specific validations\n if (locale === 'es') {\n // Check for gender consistency\n if (dictionary.values?.true === 'verdadero' && dictionary.values?.false === 'falso') {\n // Both masculine, good\n } else if (dictionary.values?.true === 'verdadera' && dictionary.values?.false === 'falsa') {\n // Both feminine, good\n } else if (dictionary.values?.true && dictionary.values?.false) {\n warnings.push({\n type: 'inconsistent',\n key: 'values.true/false',\n message: 'Gender inconsistency between true/false translations',\n });\n }\n }\n\n // Korean-specific validations\n if (locale === 'ko') {\n // Check for consistent honorific levels\n const formalEndings = ['습니다', '세요'];\n const informalEndings = ['다', '어', '아'];\n\n let formalCount = 0;\n let informalCount = 0;\n\n for (const category of DICTIONARY_CATEGORIES) {\n const translations = dictionary[category];\n if (!translations) continue;\n for (const value of Object.values(translations)) {\n if (formalEndings.some(ending => value.endsWith(ending))) {\n formalCount++;\n }\n if (informalEndings.some(ending => value.endsWith(ending))) {\n informalCount++;\n }\n }\n }\n\n if (formalCount > 0 && informalCount > 0) {\n warnings.push({\n type: 'inconsistent',\n key: 'global',\n message: 'Mixed formal and informal speech levels',\n });\n }\n }\n\n // Chinese-specific validations\n if (locale === 'zh' || locale === 'zh-TW') {\n // Check for simplified vs traditional consistency\n const simplified = ['设', '获', '显', '发'];\n const traditional = ['設', '獲', '顯', '發'];\n\n let hasSimplified = false;\n let hasTraditional = false;\n\n for (const category of DICTIONARY_CATEGORIES) {\n const translations = dictionary[category];\n if (!translations) continue;\n for (const value of Object.values(translations)) {\n if (simplified.some(char => value.includes(char))) {\n hasSimplified = true;\n }\n if (traditional.some(char => value.includes(char))) {\n hasTraditional = true;\n }\n }\n }\n\n if (hasSimplified && hasTraditional) {\n warnings.push({\n type: 'inconsistent',\n key: 'global',\n message: 'Mixed simplified and traditional Chinese characters',\n });\n }\n }\n}\n","// packages/i18n/src/translator.ts\n\nimport {\n Dictionary,\n DICTIONARY_CATEGORIES,\n I18nConfig,\n TranslationOptions,\n TranslationResult,\n Token,\n TokenType,\n ValidationResult,\n} from './types';\nimport { dictionaries } from './dictionaries';\nimport { detectLocale } from './utils/locale';\nimport { tokenize } from './utils/tokenizer';\nimport { validate } from './validators';\n\nexport class HyperscriptTranslator {\n private config: I18nConfig;\n private dictionaries: Map<string, Dictionary>;\n private reverseDictionaries: Map<string, Map<string, string>>;\n\n constructor(config: I18nConfig) {\n this.config = {\n fallbackLocale: 'en',\n preserveOriginalAttribute: 'data-i18n-original',\n detectLocale: true, // Enable language detection by default\n ...config,\n locale: config.locale || 'en', // Ensure locale has a default\n };\n\n this.dictionaries = new Map();\n this.reverseDictionaries = new Map();\n\n // Load built-in dictionaries\n Object.entries(dictionaries).forEach(([locale, dict]) => {\n this.addDictionary(locale, dict);\n });\n\n // Load custom dictionaries\n if (config.dictionaries) {\n Object.entries(config.dictionaries).forEach(([locale, dict]) => {\n this.addDictionary(locale, dict);\n });\n }\n }\n\n translate(text: string, options: TranslationOptions): string {\n const result = this.translateWithDetails(text, options);\n return result.translated;\n }\n\n translateWithDetails(text: string, options: TranslationOptions): TranslationResult {\n const fromLocale = options.from || this.detectLanguage(text);\n const toLocale = options.to;\n\n if (fromLocale === toLocale) {\n return {\n translated: text,\n original: text,\n tokens: [],\n locale: { from: fromLocale, to: toLocale },\n };\n }\n\n // Get dictionaries\n const fromDict = this.getDictionary(fromLocale);\n const toDict = this.getDictionary(toLocale);\n\n if (!fromDict || !toDict) {\n throw new Error(`Missing dictionary for locale: ${!fromDict ? fromLocale : toLocale}`);\n }\n\n // Tokenize the input\n const tokens = tokenize(text, fromLocale);\n\n // Translate tokens\n const translatedTokens = this.translateTokens(tokens, fromLocale, toLocale);\n\n // Reconstruct the text\n const translated = this.reconstructText(translatedTokens);\n\n // Validate target dictionary if requested\n if (options.validate && toDict) {\n const validation = validate(toDict, toLocale);\n if (!validation.valid) {\n console.warn('Translation validation warnings:', validation.warnings);\n }\n }\n\n const result: TranslationResult = {\n translated,\n tokens: translatedTokens,\n locale: { from: fromLocale, to: toLocale },\n warnings: [],\n };\n if (options.preserveOriginal) {\n result.original = text;\n }\n return result;\n }\n\n private translateTokens(tokens: Token[], fromLocale: string, toLocale: string): Token[] {\n const fromDict = this.getDictionary(fromLocale);\n const toDict = this.getDictionary(toLocale);\n const reverseFromDict = this.getReverseDictionary(fromLocale);\n const emptyDict: Dictionary = {\n commands: {},\n modifiers: {},\n events: {},\n logical: {},\n temporal: {},\n values: {},\n attributes: {},\n expressions: {},\n };\n\n return tokens.map(token => {\n let translated = token.value;\n\n // Only translate keywords, not identifiers or literals\n if (this.isTranslatableToken(token)) {\n // First, try direct translation from source to target\n if (fromLocale !== 'en' && toLocale !== 'en') {\n // Translate through English as intermediate\n const english = this.findTranslation(token.value, fromDict || emptyDict, reverseFromDict);\n if (english) {\n translated =\n this.findTranslation(english, toDict || emptyDict, new Map()) || token.value;\n }\n } else if (fromLocale === 'en') {\n // Direct translation from English\n translated =\n this.findTranslation(token.value, toDict || emptyDict, new Map()) || token.value;\n } else {\n // Translation to English\n translated =\n this.findTranslation(token.value, fromDict || emptyDict, reverseFromDict) ||\n token.value;\n }\n }\n\n return {\n ...token,\n translated,\n };\n });\n }\n\n private findTranslation(\n word: string,\n dict: Dictionary,\n reverseDict: Map<string, string>\n ): string | null {\n const lowerWord = word.toLowerCase();\n\n // Check if translating FROM this locale using reverse dictionary\n if (reverseDict.size > 0) {\n const english = reverseDict.get(lowerWord);\n if (english) return english;\n }\n\n // Check categories in priority order (events before commands to handle 'click' etc.)\n const categoryOrder = [\n 'events',\n 'commands',\n 'expressions',\n 'modifiers',\n 'logical',\n 'temporal',\n 'values',\n 'attributes',\n ];\n\n for (const category of categoryOrder) {\n const translations = dict[category as keyof Dictionary];\n if (translations && typeof translations === 'object') {\n for (const [key, value] of Object.entries(translations)) {\n if (key.toLowerCase() === lowerWord) return value;\n }\n }\n }\n\n return null;\n }\n\n private isTranslatableToken(token: Token): boolean {\n const translatableTypes: TokenType[] = [\n 'command',\n 'modifier',\n 'event',\n 'logical',\n 'temporal',\n 'value',\n 'attribute',\n 'expression',\n ];\n return translatableTypes.includes(token.type);\n }\n\n private reconstructText(tokens: Token[]): string {\n return tokens.map(token => token.translated || token.value).join('');\n }\n\n detectLanguage(text: string): string {\n if (!this.config.detectLocale) {\n return this.config.locale;\n }\n\n return detectLocale(text, Array.from(this.dictionaries.keys()));\n }\n\n addDictionary(locale: string, dictionary: Dictionary): void {\n this.dictionaries.set(locale, dictionary);\n\n // Build reverse dictionary for this locale using type-safe iteration\n const reverseDict = new Map<string, string>();\n\n for (const category of DICTIONARY_CATEGORIES) {\n const translations = dictionary[category];\n if (translations) {\n for (const [english, translated] of Object.entries(translations)) {\n reverseDict.set(translated.toLowerCase(), english);\n }\n }\n }\n\n this.reverseDictionaries.set(locale, reverseDict);\n }\n\n getDictionary(locale: string): Dictionary | undefined {\n return this.dictionaries.get(locale);\n }\n\n private getReverseDictionary(locale: string): Map<string, string> {\n return this.reverseDictionaries.get(locale) || new Map();\n }\n\n getSupportedLocales(): string[] {\n return Array.from(this.dictionaries.keys());\n }\n\n validateDictionary(locale: string): ValidationResult {\n const dict = this.getDictionary(locale);\n if (!dict) {\n return {\n valid: false,\n errors: [\n { type: 'missing', key: locale, message: `Dictionary not found for locale: ${locale}` },\n ],\n warnings: [],\n coverage: { total: 0, translated: 0, missing: [] },\n };\n }\n\n return validate(dict, locale);\n }\n\n isRTL(locale: string): boolean {\n const rtlLocales = this.config.rtlLocales || ['ar', 'he', 'fa', 'ur'];\n return rtlLocales.includes(locale);\n }\n\n getCompletions(context: { text: string; position: number; locale: string }): string[] {\n const dict = this.getDictionary(context.locale);\n if (!dict) return [];\n\n const completions: string[] = [];\n\n // Get the partial word at cursor\n const beforeCursor = context.text.substring(0, context.position);\n const partial = beforeCursor.match(/\\b(\\w+)$/)?.[1] || '';\n const lowerPartial = partial.toLowerCase();\n\n // Search all categories for matches using type-safe iteration\n // For non-English locales, search translated values; for English, search keys\n for (const category of DICTIONARY_CATEGORIES) {\n const translations = dict[category];\n if (translations) {\n for (const [key, value] of Object.entries(translations)) {\n // Search keys (English terms) and values (translated terms)\n if (key.toLowerCase().startsWith(lowerPartial)) {\n completions.push(key);\n }\n if (value.toLowerCase().startsWith(lowerPartial) && !completions.includes(value)) {\n completions.push(value);\n }\n }\n }\n }\n\n return completions;\n }\n}\n\n// Export a singleton instance for convenience\nexport const translator = new HyperscriptTranslator({ locale: 'en' });\n","// packages/i18n/src/constants.ts\n\n/**\n * Shared Constants for i18n Package\n *\n * Centralizes keyword definitions to eliminate duplication across\n * transformer.ts, create-provider.ts, and other modules.\n */\n\nimport type { SemanticRole } from './grammar/types';\n\n// =============================================================================\n// English Modifier → Semantic Role Mappings\n// =============================================================================\n\n/**\n * Maps English modifier keywords to their semantic roles.\n * Used by both the grammar transformer and keyword provider.\n */\nexport const ENGLISH_MODIFIER_ROLES: Readonly<Record<string, SemanticRole>> = {\n to: 'destination',\n into: 'destination',\n from: 'source',\n with: 'style',\n by: 'quantity',\n as: 'method',\n on: 'event',\n over: 'duration',\n for: 'duration',\n} as const;\n\n/**\n * English modifier keywords (derived from ENGLISH_MODIFIER_ROLES)\n */\nexport const ENGLISH_MODIFIERS: Set<string> = new Set([\n 'to',\n 'from',\n 'into',\n 'with',\n 'at',\n 'in',\n 'of',\n 'as',\n 'by',\n 'before',\n 'after',\n 'without',\n]);\n\n// =============================================================================\n// English Commands\n// =============================================================================\n\n/**\n * English commands - the canonical set that the runtime understands.\n */\nexport const ENGLISH_COMMANDS: Set<string> = new Set([\n 'add',\n 'append',\n 'async',\n 'beep',\n 'break',\n 'call',\n 'continue',\n 'decrement',\n 'default',\n 'exit',\n 'fetch',\n 'for',\n 'get',\n 'go',\n 'halt',\n 'hide',\n 'if',\n 'increment',\n 'install',\n 'js',\n 'log',\n 'make',\n 'measure',\n 'morph',\n 'pick',\n 'process',\n 'push',\n 'put',\n 'remove',\n 'render',\n 'repeat',\n 'replace',\n 'return',\n 'send',\n 'set',\n 'settle',\n 'show',\n 'swap',\n 'take',\n 'tell',\n 'throw',\n 'toggle',\n 'transition',\n 'trigger',\n 'unless',\n 'wait',\n]);\n\n// =============================================================================\n// English Keywords (Non-Commands)\n// =============================================================================\n\n/**\n * English keywords that are not commands.\n */\nexport const ENGLISH_KEYWORDS: Set<string> = new Set([\n // Flow control\n 'then',\n 'else',\n 'end',\n 'and',\n 'or',\n 'not',\n // Conditionals\n 'if',\n 'unless',\n // Loops\n 'for',\n 'while',\n 'until',\n 'forever',\n 'times',\n 'each',\n 'index',\n // Prepositions\n 'in',\n 'to',\n 'from',\n 'into',\n 'with',\n 'without',\n 'of',\n 'at',\n 'by',\n // Conversion\n 'as',\n // Comparison\n 'matches',\n 'contains',\n 'is',\n 'exists',\n // Events\n 'on',\n 'when',\n 'every',\n 'event',\n // Definitions\n 'init',\n 'def',\n 'behavior',\n // Scope\n 'global',\n 'local',\n // Articles\n 'the',\n 'a',\n 'an',\n 'first',\n 'last',\n // Position\n 'start',\n 'before',\n 'after',\n]);\n\n// =============================================================================\n// Universal English Keywords (DOM/HTML Standards)\n// =============================================================================\n\n/**\n * English keywords that should always be recognized, even in non-English locales.\n * These are HTML/DOM standard terms that developers worldwide use.\n */\nexport const UNIVERSAL_ENGLISH_KEYWORDS: Set<string> = new Set([\n // DOM events (HTML spec)\n 'click',\n 'dblclick',\n 'mousedown',\n 'mouseup',\n 'mouseenter',\n 'mouseleave',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'keydown',\n 'keyup',\n 'keypress',\n 'focus',\n 'blur',\n 'change',\n 'input',\n 'submit',\n 'reset',\n 'load',\n 'unload',\n 'resize',\n 'scroll',\n 'touchstart',\n 'touchend',\n 'touchmove',\n 'touchcancel',\n 'dragstart',\n 'dragend',\n 'dragenter',\n 'dragleave',\n 'dragover',\n 'drop',\n 'contextmenu',\n 'wheel',\n 'pointerdown',\n 'pointerup',\n 'pointermove',\n // Common abbreviations\n 'ms',\n 's',\n]);\n\n// =============================================================================\n// Logical Keywords\n// =============================================================================\n\n/**\n * English logical operator keywords.\n */\nexport const ENGLISH_LOGICAL_KEYWORDS: Set<string> = new Set([\n 'and',\n 'or',\n 'not',\n 'is',\n 'exists',\n 'matches',\n 'contains',\n 'then',\n 'else',\n]);\n\n// =============================================================================\n// Value Keywords\n// =============================================================================\n\n/**\n * English value keywords.\n */\nexport const ENGLISH_VALUE_KEYWORDS: Set<string> = new Set([\n 'true',\n 'false',\n 'null',\n 'undefined',\n 'it',\n 'me',\n 'my',\n 'result',\n]);\n\n// =============================================================================\n// Expression Keywords\n// =============================================================================\n\n/**\n * English expression keywords - positional, traversal, and string operations.\n */\nexport const ENGLISH_EXPRESSION_KEYWORDS: Set<string> = new Set([\n // Positional\n 'first',\n 'last',\n 'next',\n 'previous',\n 'prev',\n 'at',\n 'random',\n // DOM traversal\n 'closest',\n 'parent',\n 'children',\n 'within',\n // Emptiness/existence\n 'no',\n 'empty',\n 'some',\n // String operations (multi-word)\n 'starts with',\n 'ends with',\n]);\n\n// =============================================================================\n// Conditional Keywords\n// =============================================================================\n\n/**\n * Conditional keywords across languages (for statement type identification).\n * Includes 'when'/'where' conditional modifiers and their translations.\n */\nexport const CONDITIONAL_KEYWORDS: Set<string> = new Set([\n // English\n 'if',\n 'unless',\n 'when',\n 'where',\n // Japanese\n 'もし',\n '時に',\n 'ときに',\n 'どこで',\n // Chinese\n '如果',\n '当',\n // Arabic\n 'إذا',\n 'عندما',\n 'حيث',\n // Spanish\n 'si',\n 'cuando',\n 'donde',\n // German\n 'wenn',\n 'wann',\n 'wo',\n // French\n 'quand',\n 'lorsque',\n 'où',\n // Portuguese\n 'quando',\n 'onde',\n // Turkish\n 'eğer',\n 'zaman',\n 'nerede',\n // Indonesian\n 'ketika',\n 'saat',\n 'dimana',\n // Korean\n '때',\n '어디서',\n // Quechua\n 'maypi',\n // Swahili\n 'wakati',\n 'wapi',\n]);\n\n/**\n * \"Then\" keywords across languages (for conditional parsing).\n */\nexport const THEN_KEYWORDS: Set<string> = new Set([\n 'then',\n 'それから',\n '那么',\n 'ثم',\n 'entonces',\n 'alors',\n 'dann',\n 'sonra',\n 'lalu',\n 'chayqa',\n 'kisha',\n]);\n","// packages/i18n/src/parser/create-provider.ts\n\nimport type { Dictionary } from '../types';\nimport type { KeywordProvider, KeywordProviderOptions } from './types';\nimport {\n ENGLISH_COMMANDS,\n ENGLISH_KEYWORDS,\n ENGLISH_MODIFIERS,\n ENGLISH_LOGICAL_KEYWORDS,\n ENGLISH_VALUE_KEYWORDS,\n ENGLISH_EXPRESSION_KEYWORDS,\n UNIVERSAL_ENGLISH_KEYWORDS,\n} from '../constants';\n\n/**\n * Creates a KeywordProvider from a dictionary.\n *\n * The provider creates reverse mappings (locale → English) for fast\n * resolution during parsing.\n *\n * @example\n * ```typescript\n * import { es } from '../dictionaries/es';\n * export const esKeywords = createKeywordProvider(es, 'es');\n * ```\n */\nexport function createKeywordProvider(\n dictionary: Dictionary,\n locale: string,\n options: KeywordProviderOptions = {}\n): KeywordProvider {\n const { allowEnglishFallback = true } = options;\n\n // Build reverse maps: locale keyword → English canonical\n const reverseCommands = new Map<string, string>();\n const reverseModifiers = new Map<string, string>();\n const reverseEvents = new Map<string, string>();\n const reverseLogical = new Map<string, string>();\n const reverseTemporal = new Map<string, string>();\n const reverseValues = new Map<string, string>();\n const reverseAttributes = new Map<string, string>();\n const reverseExpressions = new Map<string, string>();\n const reverseAll = new Map<string, string>();\n\n // Forward maps: English → locale keyword\n const forwardAll = new Map<string, string>();\n\n // Build reverse mappings from dictionary\n // Note: reverseAll uses priority - first category to claim a locale word wins\n function buildReverseMap(\n category: Record<string, string>,\n reverseMap: Map<string, string>,\n priority: boolean = false\n ): void {\n for (const [english, localeWord] of Object.entries(category)) {\n const normalizedLocale = localeWord.toLowerCase();\n reverseMap.set(normalizedLocale, english.toLowerCase());\n // Only set in reverseAll if not already claimed (priority) or if this is a priority category\n if (priority || !reverseAll.has(normalizedLocale)) {\n reverseAll.set(normalizedLocale, english.toLowerCase());\n }\n forwardAll.set(english.toLowerCase(), localeWord.toLowerCase());\n }\n }\n\n // Build all reverse maps\n // Priority order: commands first (highest priority for parsing), then logical, events, values\n // This ensures 'en' (Spanish) → 'on' (command) rather than 'in' (modifier)\n if (dictionary.commands) {\n buildReverseMap(dictionary.commands, reverseCommands, true);\n }\n if (dictionary.logical) {\n buildReverseMap(dictionary.logical, reverseLogical, true);\n }\n if (dictionary.events) {\n buildReverseMap(dictionary.events, reverseEvents);\n }\n if (dictionary.values) {\n buildReverseMap(dictionary.values, reverseValues);\n }\n if (dictionary.temporal) {\n buildReverseMap(dictionary.temporal, reverseTemporal);\n }\n // Modifiers last (lowest priority) - they often conflict with commands\n if (dictionary.modifiers) {\n buildReverseMap(dictionary.modifiers, reverseModifiers);\n }\n if (dictionary.attributes) {\n buildReverseMap(dictionary.attributes, reverseAttributes);\n }\n if (dictionary.expressions) {\n buildReverseMap(dictionary.expressions, reverseExpressions);\n }\n\n // Collect all locale commands and keywords for completions\n const localeCommands = new Set(reverseCommands.keys());\n const allLocaleKeywords = new Set(reverseAll.keys());\n\n // Add English keywords/commands if fallback is enabled\n if (allowEnglishFallback) {\n for (const cmd of ENGLISH_COMMANDS) {\n localeCommands.add(cmd);\n }\n for (const kw of ENGLISH_KEYWORDS) {\n allLocaleKeywords.add(kw);\n }\n for (const kw of UNIVERSAL_ENGLISH_KEYWORDS) {\n allLocaleKeywords.add(kw);\n }\n }\n\n return {\n locale,\n\n resolve(token: string): string | undefined {\n const normalized = token.toLowerCase();\n\n // Check if it's a locale keyword\n const english = reverseAll.get(normalized);\n if (english !== undefined) {\n return english;\n }\n\n // If English fallback is enabled, check if it's already English\n if (allowEnglishFallback) {\n if (ENGLISH_COMMANDS.has(normalized) || ENGLISH_KEYWORDS.has(normalized)) {\n return normalized;\n }\n // Universal keywords (DOM events, etc.) pass through\n if (UNIVERSAL_ENGLISH_KEYWORDS.has(normalized)) {\n return normalized;\n }\n }\n\n return undefined;\n },\n\n isCommand(token: string): boolean {\n const normalized = token.toLowerCase();\n\n // Check locale commands\n if (reverseCommands.has(normalized)) {\n return true;\n }\n\n // Check English commands if fallback enabled\n if (allowEnglishFallback && ENGLISH_COMMANDS.has(normalized)) {\n return true;\n }\n\n return false;\n },\n\n isKeyword(token: string): boolean {\n const normalized = token.toLowerCase();\n\n // Check locale keywords (modifiers, logical, temporal, values)\n if (\n reverseModifiers.has(normalized) ||\n reverseLogical.has(normalized) ||\n reverseTemporal.has(normalized) ||\n reverseValues.has(normalized)\n ) {\n return true;\n }\n\n // Check English keywords if fallback enabled\n if (allowEnglishFallback && ENGLISH_KEYWORDS.has(normalized)) {\n return true;\n }\n\n return false;\n },\n\n isEvent(token: string): boolean {\n const normalized = token.toLowerCase();\n\n // Check locale events\n if (reverseEvents.has(normalized)) {\n return true;\n }\n\n // Universal English events always accepted\n if (UNIVERSAL_ENGLISH_KEYWORDS.has(normalized)) {\n return true;\n }\n\n return false;\n },\n\n isModifier(token: string): boolean {\n const normalized = token.toLowerCase();\n return (\n reverseModifiers.has(normalized) ||\n (allowEnglishFallback && ENGLISH_MODIFIERS.has(normalized))\n );\n },\n\n isLogical(token: string): boolean {\n const normalized = token.toLowerCase();\n return (\n reverseLogical.has(normalized) ||\n (allowEnglishFallback && ENGLISH_LOGICAL_KEYWORDS.has(normalized))\n );\n },\n\n isValue(token: string): boolean {\n const normalized = token.toLowerCase();\n return (\n reverseValues.has(normalized) ||\n (allowEnglishFallback && ENGLISH_VALUE_KEYWORDS.has(normalized))\n );\n },\n\n isExpression(token: string): boolean {\n const normalized = token.toLowerCase();\n return (\n reverseExpressions.has(normalized) ||\n (allowEnglishFallback && ENGLISH_EXPRESSION_KEYWORDS.has(normalized))\n );\n },\n\n getCommands(): string[] {\n return Array.from(localeCommands);\n },\n\n getKeywords(): string[] {\n return Array.from(allLocaleKeywords);\n },\n\n toLocale(englishKeyword: string): string | undefined {\n return forwardAll.get(englishKeyword.toLowerCase());\n },\n };\n}\n\n/**\n * Creates a default English-only keyword provider.\n * This is used when no locale is specified.\n */\nexport function createEnglishProvider(): KeywordProvider {\n return {\n locale: 'en',\n\n resolve(token: string): string | undefined {\n const normalized = token.toLowerCase();\n if (\n ENGLISH_COMMANDS.has(normalized) ||\n ENGLISH_KEYWORDS.has(normalized) ||\n UNIVERSAL_ENGLISH_KEYWORDS.has(normalized)\n ) {\n return normalized;\n }\n return undefined;\n },\n\n isCommand(token: string): boolean {\n return ENGLISH_COMMANDS.has(token.toLowerCase());\n },\n\n isKeyword(token: string): boolean {\n return ENGLISH_KEYWORDS.has(token.toLowerCase());\n },\n\n isEvent(token: string): boolean {\n return UNIVERSAL_ENGLISH_KEYWORDS.has(token.toLowerCase());\n },\n\n isModifier(token: string): boolean {\n return ENGLISH_MODIFIERS.has(token.toLowerCase());\n },\n\n isLogical(token: string): boolean {\n return ENGLISH_LOGICAL_KEYWORDS.has(token.toLowerCase());\n },\n\n isValue(token: string): boolean {\n return ENGLISH_VALUE_KEYWORDS.has(token.toLowerCase());\n },\n\n isExpression(token: string): boolean {\n return ENGLISH_EXPRESSION_KEYWORDS.has(token.toLowerCase());\n },\n\n getCommands(): string[] {\n return Array.from(ENGLISH_COMMANDS);\n },\n\n getKeywords(): string[] {\n return Array.from(ENGLISH_KEYWORDS);\n },\n\n toLocale(_englishKeyword: string): string | undefined {\n // English provider returns the keyword as-is\n return _englishKeyword.toLowerCase();\n },\n };\n}\n\n// Re-export the English keyword sets from constants for use in core\nexport {\n ENGLISH_COMMANDS,\n ENGLISH_KEYWORDS,\n ENGLISH_MODIFIERS,\n ENGLISH_LOGICAL_KEYWORDS,\n ENGLISH_VALUE_KEYWORDS,\n ENGLISH_EXPRESSION_KEYWORDS,\n UNIVERSAL_ENGLISH_KEYWORDS,\n} from '../constants';\n","// packages/i18n/src/parser/es.ts\n\nimport { es } from '../dictionaries/es';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Spanish keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Spanish:\n * - `en clic alternar .active` → parses as `on click toggle .active`\n * - `si verdadero entonces registrar \"hola\"` → parses as `if true then log \"hello\"`\n *\n * English keywords are also accepted (mixed mode), so:\n * - `en click alternar .active` also works (Spanish `en` + English `click`)\n *\n * @example\n * ```typescript\n * import { esKeywords } from '@lokascript/i18n/parser/es';\n * import { Parser } from '@lokascript/core';\n *\n * const parser = new Parser({ keywords: esKeywords });\n * parser.parse('en clic alternar .active');\n * ```\n */\nexport const esKeywords: KeywordProvider = createKeywordProvider(es, 'es', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { es as esDictionary } from '../dictionaries/es';\n","// packages/i18n/src/parser/ja.ts\n\nimport { ja } from '../dictionaries/ja';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Japanese keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Japanese:\n * - `クリック で 切り替え .active` → parses as `on click toggle .active`\n * - `もし 真 それから 記録 \"こんにちは\"` → parses as `if true then log \"hello\"`\n *\n * English keywords are also accepted (mixed mode), so:\n * - `click で 切り替え .active` also works (English `click` + Japanese `で`, `切り替え`)\n *\n * Japanese is a useful test case because:\n * - SOV word order (subject-object-verb) vs English SVO\n * - No articles (a, an, the)\n * - Unicode characters (tests tokenizer robustness)\n *\n * @example\n * ```typescript\n * import { jaKeywords } from '@lokascript/i18n/parser/ja';\n * import { Parser } from '@lokascript/core';\n *\n * const parser = new Parser({ keywords: jaKeywords });\n * parser.parse('クリック で 切り替え .active');\n * ```\n */\nexport const jaKeywords: KeywordProvider = createKeywordProvider(ja, 'ja', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { ja as jaDictionary } from '../dictionaries/ja';\n","// packages/i18n/src/parser/fr.ts\n\nimport { fr } from '../dictionaries/fr';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * French keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in French:\n * - `sur clic basculer .active` → parses as `on click toggle .active`\n * - `si vrai alors enregistrer \"bonjour\"` → parses as `if true then log \"hello\"`\n *\n * English keywords are also accepted (mixed mode), so:\n * - `sur click basculer .active` also works (French `sur` + English `click`)\n *\n * @example\n * ```typescript\n * import { frKeywords } from '@lokascript/i18n/parser/fr';\n * import { Parser } from '@lokascript/core';\n *\n * const parser = new Parser({ keywords: frKeywords });\n * parser.parse('sur clic basculer .active');\n * ```\n */\nexport const frKeywords: KeywordProvider = createKeywordProvider(fr, 'fr', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { fr as frDictionary } from '../dictionaries/fr';\n","// packages/i18n/src/parser/de.ts\n\nimport { de } from '../dictionaries/de';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * German keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in German:\n * - `bei klick umschalten .active` → parses as `on click toggle .active`\n * - `wenn wahr dann protokollieren \"hallo\"` → parses as `if true then log \"hello\"`\n *\n * English keywords are also accepted (mixed mode), so:\n * - `bei click umschalten .active` also works (German `bei` + English `click`)\n *\n * German is a useful test case because:\n * - Compound words (Zusammensetzungen) are common\n * - Different word order in clauses (V2 in main, V-final in subordinate)\n * - Case system (nominative, accusative, dative, genitive)\n *\n * @example\n * ```typescript\n * import { deKeywords } from '@lokascript/i18n/parser/de';\n * import { Parser } from '@lokascript/core';\n *\n * const parser = new Parser({ keywords: deKeywords });\n * parser.parse('bei klick umschalten .active');\n * ```\n */\nexport const deKeywords: KeywordProvider = createKeywordProvider(de, 'de', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { de as deDictionary } from '../dictionaries/de';\n","// packages/i18n/src/parser/ar.ts\n\nimport { ar } from '../dictionaries/ar';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Arabic keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Arabic:\n * - `على نقر بدل .active` → parses as `on click toggle .active`\n * - `إذا صحيح ثم سجل \"مرحبا\"` → parses as `if true then log \"hello\"`\n *\n * English keywords are also accepted (mixed mode), so:\n * - `على click بدل .active` also works (Arabic `على` + English `click`)\n *\n * Arabic is a crucial test case because:\n * - Right-to-left (RTL) script\n * - Different character set (Unicode Arabic block)\n * - Space-separated words with diacritics\n * - Tests parser's Unicode handling robustly\n *\n * Note: The parser handles RTL text correctly because tokenization\n * is based on whitespace/operator boundaries, not visual direction.\n *\n * @example\n * ```typescript\n * import { arKeywords } from '@lokascript/i18n/parser/ar';\n * import { Parser } from '@lokascript/core';\n *\n * const parser = new Parser({ keywords: arKeywords });\n * parser.parse('على نقر بدل .active');\n * ```\n */\nexport const arKeywords: KeywordProvider = createKeywordProvider(ar, 'ar', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { ar as arDictionary } from '../dictionaries/ar';\n","// packages/i18n/src/parser/ko.ts\n\nimport { ko } from '../dictionaries/ko';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Korean keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Korean:\n * - `에 클릭 토글 .active` → parses as `on click toggle .active`\n * - `만약 참 그러면 로그 \"안녕하세요\"` → parses as `if true then log \"hello\"`\n *\n * English keywords are also accepted (mixed mode), so:\n * - `에 click 토글 .active` also works (Korean `에` + English `click`)\n *\n * Korean is a useful test case because:\n * - SOV word order (Subject-Object-Verb)\n * - Hangul script (syllabic blocks)\n * - Agglutinative morphology with particles\n * - Tests parser's Unicode handling with Korean characters\n *\n * @example\n * ```typescript\n * import { koKeywords } from '@lokascript/i18n/parser/ko';\n * import { Parser } from '@lokascript/core';\n *\n * const parser = new Parser({ keywords: koKeywords });\n * parser.parse('에 클릭 토글 .active');\n * ```\n */\nexport const koKeywords: KeywordProvider = createKeywordProvider(ko, 'ko', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { ko as koDictionary } from '../dictionaries/ko';\n","// packages/i18n/src/parser/zh.ts\n\nimport { zh } from '../dictionaries/zh';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Chinese (Simplified) keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Chinese:\n * - `当 点击 切换 .active` → parses as `on click toggle .active`\n * - `如果 真 那么 日志 \"你好\"` → parses as `if true then log \"hello\"`\n *\n * English keywords are also accepted (mixed mode), so:\n * - `当 click 切换 .active` also works (Chinese `当` + English `click`)\n *\n * Chinese is a useful test case because:\n * - SVO word order (similar to English)\n * - Logographic script (Chinese characters)\n * - Isolating morphology (minimal inflection)\n * - Tests parser's Unicode handling with CJK characters\n * - Large developer population\n *\n * @example\n * ```typescript\n * import { zhKeywords } from '@lokascript/i18n/parser/zh';\n * import { Parser } from '@lokascript/core';\n *\n * const parser = new Parser({ keywords: zhKeywords });\n * parser.parse('当 点击 切换 .active');\n * ```\n */\nexport const zhKeywords: KeywordProvider = createKeywordProvider(zh, 'zh', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { zh as zhDictionary } from '../dictionaries/zh';\n","// packages/i18n/src/parser/tr.ts\n\nimport { tr } from '../dictionaries/tr';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Turkish keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Turkish:\n * - `üzerinde tıklama değiştir .active` → parses as `on click toggle .active`\n * - `eğer doğru ise kaydet \"merhaba\"` → parses as `if true then log \"hello\"`\n *\n * English keywords are also accepted (mixed mode), so:\n * - `üzerinde click değiştir .active` also works (Turkish `üzerinde` + English `click`)\n *\n * Turkish is a useful test case because:\n * - SOV word order (Subject-Object-Verb)\n * - Agglutinative morphology with suffixes\n * - Vowel harmony rules\n * - Latin script with special characters (ı, ğ, ş, ç, ö, ü)\n * - Tests parser's handling of extended Latin characters\n *\n * @example\n * ```typescript\n * import { trKeywords } from '@lokascript/i18n/parser/tr';\n * import { Parser } from '@lokascript/core';\n *\n * const parser = new Parser({ keywords: trKeywords });\n * parser.parse('üzerinde tıklama değiştir .active');\n * ```\n */\nexport const trKeywords: KeywordProvider = createKeywordProvider(tr, 'tr', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { tr as trDictionary } from '../dictionaries/tr';\n","// packages/i18n/src/parser/id.ts\n\nimport { id } from '../dictionaries/id';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Indonesian (Bahasa Indonesia) keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Indonesian:\n * - `pada klik ganti .active` → parses as `on click toggle .active`\n * - `jika benar lalu log \"Halo\"` → parses as `if true then log \"Hello\"`\n *\n * Indonesian is an SVO language with:\n * - Agglutinative morphology (prefixes/suffixes)\n * - No grammatical gender\n * - Prepositions (like English)\n * - Relatively simple syntax\n *\n * @example\n * ```typescript\n * import { idKeywords } from '@lokascript/i18n/parser/id';\n * import { Parser } from '@lokascript/core';\n *\n * const parser = new Parser({ keywords: idKeywords });\n * parser.parse('pada klik ganti .active');\n * ```\n */\nexport const idKeywords: KeywordProvider = createKeywordProvider(id, 'id', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { id as idDictionary } from '../dictionaries/id';\n","// packages/i18n/src/parser/qu.ts\n\nimport { qu } from '../dictionaries/qu';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Quechua (Runasimi) keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Quechua:\n * - `ñitiy-pi yapay #count-ta` → parses as `on click increment #count`\n *\n * Quechua is an SOV language with:\n * - Agglutinative/polysynthetic morphology\n * - Extensive suffix system (case markers: -ta, -man, -pi, -manta, -wan)\n * - Postpositions (unlike Spanish which uses prepositions)\n * - Object-Verb word order\n * - Evidentiality markers (not used in hyperscript)\n *\n * The grammar transformer handles suffix joining via hyphen notation\n * (e.g., \"#count-ta\" attaches the accusative marker).\n *\n * @example\n * ```typescript\n * import { quKeywords } from '@lokascript/i18n/parser/qu';\n * import { Parser } from '@lokascript/core';\n *\n * const parser = new Parser({ keywords: quKeywords });\n * parser.parse('ñitiy-pi yapay #count-ta');\n * ```\n */\nexport const quKeywords: KeywordProvider = createKeywordProvider(qu, 'qu', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { qu as quDictionary } from '../dictionaries/qu';\n","// packages/i18n/src/parser/sw.ts\n\nimport { sw } from '../dictionaries/sw';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Swahili (Kiswahili) keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Swahili:\n * - `kwenye bonyeza badilisha .active` → parses as `on click toggle .active`\n * - `kama kweli basi andika \"Habari\"` → parses as `if true then log \"Hello\"`\n *\n * Swahili is an SVO Bantu language with:\n * - Agglutinative verb morphology\n * - Noun class system (simplified for hyperscript keywords)\n * - Prepositions (unlike many other African languages)\n * - Subject-verb agreement (not relevant for hyperscript)\n *\n * Swahili is widely spoken in East Africa and serves as a lingua franca\n * for millions of speakers.\n *\n * @example\n * ```typescript\n * import { swKeywords } from '@lokascript/i18n/parser/sw';\n * import { Parser } from '@lokascript/core';\n *\n * const parser = new Parser({ keywords: swKeywords });\n * parser.parse('kwenye bonyeza badilisha .active');\n * ```\n */\nexport const swKeywords: KeywordProvider = createKeywordProvider(sw, 'sw', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { sw as swDictionary } from '../dictionaries/sw';\n","// packages/i18n/src/parser/pt.ts\n\nimport { pt } from '../dictionaries/pt';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Portuguese (Português) keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Portuguese:\n * - `em clique alternar .active` → parses as `on click toggle .active`\n * - `se verdadeiro então registrar \"Olá\"` → parses as `if true then log \"Hello\"`\n *\n * Portuguese is an SVO language with:\n * - High mutual intelligibility with Spanish\n * - Prepositions (like English and Spanish)\n * - Gender agreement (simplified for hyperscript)\n * - Fusional morphology\n *\n * Direct translation is supported between Portuguese and Spanish,\n * avoiding the English pivot for more natural translations.\n *\n * @example\n * ```typescript\n * import { ptKeywords } from '@lokascript/i18n/parser/pt';\n * import { Parser } from '@lokascript/core';\n *\n * const parser = new Parser({ keywords: ptKeywords });\n * parser.parse('em clique alternar .active');\n * ```\n */\nexport const ptKeywords: KeywordProvider = createKeywordProvider(pt, 'pt', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { pt as ptDictionary } from '../dictionaries/pt';\n","// packages/i18n/src/parser/locale-manager.ts\n\nimport type { KeywordProvider } from './types';\nimport { createEnglishProvider } from './create-provider';\n\n/**\n * LocaleManager - Centralized locale configuration for hyperscript parsing.\n *\n * Provides utilities for:\n * - Setting/getting the default locale\n * - Creating locale-aware parsers\n * - Runtime locale switching\n *\n * @example\n * ```typescript\n * import { LocaleManager } from '@lokascript/i18n/parser';\n * import { esKeywords, frKeywords } from '@lokascript/i18n/parser';\n *\n * // Register available locales\n * LocaleManager.register('es', esKeywords);\n * LocaleManager.register('fr', frKeywords);\n *\n * // Set default locale\n * LocaleManager.setDefault('es');\n *\n * // Get keyword provider for parsing\n * const provider = LocaleManager.get(); // Returns esKeywords\n * const frProvider = LocaleManager.get('fr'); // Returns frKeywords\n *\n * // Use with parser\n * const parser = new Parser({ keywords: LocaleManager.get() });\n * ```\n */\nexport class LocaleManager {\n private static providers = new Map<string, KeywordProvider>();\n private static defaultLocale: string = 'en';\n private static englishProvider: KeywordProvider = createEnglishProvider();\n\n /**\n * Register a locale provider.\n *\n * @param locale - The locale code (e.g., 'es', 'ja', 'fr')\n * @param provider - The KeywordProvider for this locale\n */\n static register(locale: string, provider: KeywordProvider): void {\n LocaleManager.providers.set(locale.toLowerCase(), provider);\n }\n\n /**\n * Unregister a locale provider.\n *\n * @param locale - The locale code to remove\n */\n static unregister(locale: string): void {\n LocaleManager.providers.delete(locale.toLowerCase());\n }\n\n /**\n * Set the default locale.\n *\n * @param locale - The locale code to use as default\n * @throws Error if the locale is not registered\n */\n static setDefault(locale: string): void {\n const normalizedLocale = locale.toLowerCase();\n if (normalizedLocale !== 'en' && !LocaleManager.providers.has(normalizedLocale)) {\n throw new Error(\n `Locale '${locale}' is not registered. ` +\n `Available locales: ${LocaleManager.getAvailable().join(', ')}`\n );\n }\n LocaleManager.defaultLocale = normalizedLocale;\n }\n\n /**\n * Get the current default locale.\n *\n * @returns The default locale code\n */\n static getDefault(): string {\n return LocaleManager.defaultLocale;\n }\n\n /**\n * Get a keyword provider for a locale.\n *\n * @param locale - The locale code (optional, defaults to the default locale)\n * @returns The KeywordProvider for the locale\n * @throws Error if the locale is not registered\n */\n static get(locale?: string): KeywordProvider {\n const targetLocale = (locale || LocaleManager.defaultLocale).toLowerCase();\n\n // English is always available\n if (targetLocale === 'en') {\n return LocaleManager.englishProvider;\n }\n\n const provider = LocaleManager.providers.get(targetLocale);\n if (!provider) {\n throw new Error(\n `Locale '${targetLocale}' is not registered. ` +\n `Available locales: ${LocaleManager.getAvailable().join(', ')}`\n );\n }\n\n return provider;\n }\n\n /**\n * Check if a locale is registered.\n *\n * @param locale - The locale code to check\n * @returns True if the locale is available\n */\n static has(locale: string): boolean {\n const normalizedLocale = locale.toLowerCase();\n return normalizedLocale === 'en' || LocaleManager.providers.has(normalizedLocale);\n }\n\n /**\n * Get all available locale codes.\n *\n * @returns Array of locale codes\n */\n static getAvailable(): string[] {\n return ['en', ...Array.from(LocaleManager.providers.keys())];\n }\n\n /**\n * Reset the LocaleManager to its initial state.\n * Useful for testing.\n */\n static reset(): void {\n LocaleManager.providers.clear();\n LocaleManager.defaultLocale = 'en';\n }\n\n /**\n * Register all built-in locales at once.\n *\n * @example\n * ```typescript\n * import { LocaleManager } from '@lokascript/i18n/parser';\n * import { esKeywords, jaKeywords, frKeywords, deKeywords, arKeywords } from '@lokascript/i18n/parser';\n *\n * LocaleManager.registerAll({\n * es: esKeywords,\n * ja: jaKeywords,\n * fr: frKeywords,\n * de: deKeywords,\n * ar: arKeywords,\n * });\n * ```\n */\n static registerAll(providers: Record<string, KeywordProvider>): void {\n for (const [locale, provider] of Object.entries(providers)) {\n LocaleManager.register(locale, provider);\n }\n }\n}\n\n/**\n * Quick utility to detect the browser's preferred locale and return\n * a matching provider, falling back to English.\n *\n * @returns The KeywordProvider for the browser's locale or English\n *\n * @example\n * ```typescript\n * import { detectBrowserLocale } from '@lokascript/i18n/parser';\n * import { Parser } from '@lokascript/core';\n *\n * // Auto-detect and use browser locale\n * const parser = new Parser({ keywords: detectBrowserLocale() });\n * ```\n */\nexport function detectBrowserLocale(): KeywordProvider {\n if (typeof navigator === 'undefined') {\n return LocaleManager.get('en');\n }\n\n // Get browser languages in order of preference\n const languages = navigator.languages || [navigator.language];\n\n for (const lang of languages) {\n // Extract the base language code (e.g., 'es-MX' -> 'es')\n const baseLocale = lang.split('-')[0].toLowerCase();\n\n if (LocaleManager.has(baseLocale)) {\n return LocaleManager.get(baseLocale);\n }\n }\n\n // Fallback to English\n return LocaleManager.get('en');\n}\n","// packages/i18n/src/plugins/vite.ts\n\nimport type { Plugin } from 'vite';\nimport { HyperscriptTranslator } from '../translator';\n\n// node-html-parser is an optional dependency\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nlet parse: any;\ntry {\n // Dynamic require for optional dependency\n parse = require('node-html-parser').parse;\n} catch {\n parse = null;\n}\n\nexport interface HyperscriptI18nViteOptions {\n sourceLocale?: string;\n targetLocale?: string;\n preserveOriginal?: boolean;\n attributes?: string[];\n include?: RegExp | string[];\n exclude?: RegExp | string[];\n}\n\nexport function hyperscriptI18nVitePlugin(options: HyperscriptI18nViteOptions = {}): Plugin {\n const {\n sourceLocale = 'en',\n targetLocale = 'en',\n preserveOriginal = false,\n attributes = ['_', 'script', 'data-script'],\n include = /\\.(html|vue|svelte)$/,\n exclude = /node_modules/,\n } = options;\n\n const translator = new HyperscriptTranslator({ locale: sourceLocale });\n\n return {\n name: 'vite-plugin-hyperscript-i18n',\n\n transform(code: string, id: string) {\n // Check if file should be processed\n if (!shouldProcess(id, include, exclude)) {\n return null;\n }\n\n // Skip if no translation needed\n if (sourceLocale === targetLocale) {\n return null;\n }\n\n try {\n // Process HTML files\n if (id.endsWith('.html')) {\n return transformHtml(code, translator, {\n sourceLocale,\n targetLocale,\n preserveOriginal,\n attributes,\n });\n }\n\n // Process Vue SFCs\n if (id.endsWith('.vue')) {\n return transformVue(code, translator, {\n sourceLocale,\n targetLocale,\n preserveOriginal,\n attributes,\n });\n }\n\n // Process Svelte components\n if (id.endsWith('.svelte')) {\n return transformSvelte(code, translator, {\n sourceLocale,\n targetLocale,\n preserveOriginal,\n attributes,\n });\n }\n\n return null;\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n this.error(`Failed to process ${id}: ${message}`);\n }\n },\n\n configureServer(server) {\n // Add middleware for development\n server.middlewares.use((_req, res, next) => {\n // Add i18n headers\n res.setHeader('X-Hyperscript-I18n-Source', sourceLocale);\n res.setHeader('X-Hyperscript-I18n-Target', targetLocale);\n next();\n });\n },\n };\n}\n\nfunction shouldProcess(\n id: string,\n include: RegExp | string[],\n exclude: RegExp | string[]\n): boolean {\n const includePattern = Array.isArray(include) ? new RegExp(include.join('|')) : include;\n\n const excludePattern = Array.isArray(exclude) ? new RegExp(exclude.join('|')) : exclude;\n\n return includePattern.test(id) && !excludePattern.test(id);\n}\n\nfunction transformHtml(\n html: string,\n translator: HyperscriptTranslator,\n options: {\n sourceLocale: string;\n targetLocale: string;\n preserveOriginal: boolean;\n attributes: string[];\n }\n): { code: string; map?: any } {\n const root = parse(html);\n let hasTransformations = false;\n\n // Find all elements with hyperscript attributes\n options.attributes.forEach(attr => {\n const elements = root.querySelectorAll(`[${attr}]`);\n\n elements.forEach((element: any) => {\n const original = element.getAttribute(attr);\n if (!original) return;\n\n const translated = translator.translate(original, {\n from: options.sourceLocale,\n to: options.targetLocale,\n });\n\n if (original !== translated) {\n hasTransformations = true;\n\n if (options.preserveOriginal) {\n element.setAttribute(`${attr}-${options.sourceLocale}`, original);\n }\n\n element.setAttribute(attr, translated);\n }\n });\n });\n\n if (!hasTransformations) {\n return { code: html };\n }\n\n return {\n code: root.toString(),\n map: null, // Source maps could be added here\n };\n}\n\nfunction transformVue(\n code: string,\n translator: HyperscriptTranslator,\n options: any\n): { code: string; map?: any } {\n // Extract template section\n const templateMatch = code.match(/<template[^>]*>([\\s\\S]*?)<\\/template>/);\n if (!templateMatch) {\n return { code };\n }\n\n const template = templateMatch[1];\n const transformed = transformHtml(template, translator, options);\n\n if (transformed.code === template) {\n return { code };\n }\n\n // Replace template content\n const newCode = code.replace(templateMatch[0], `<template>${transformed.code}</template>`);\n\n return { code: newCode };\n}\n\nfunction transformSvelte(\n code: string,\n translator: HyperscriptTranslator,\n options: any\n): { code: string; map?: any } {\n // Svelte components have HTML at the top level\n const scriptMatch = code.match(/<script[^>]*>[\\s\\S]*?<\\/script>/g);\n const styleMatch = code.match(/<style[^>]*>[\\s\\S]*?<\\/style>/g);\n\n // Extract HTML portion\n let html = code;\n if (scriptMatch) {\n scriptMatch.forEach(script => {\n html = html.replace(script, '');\n });\n }\n if (styleMatch) {\n styleMatch.forEach(style => {\n html = html.replace(style, '');\n });\n }\n\n const transformed = transformHtml(html, translator, options);\n\n if (transformed.code === html) {\n return { code };\n }\n\n // Reconstruct Svelte component\n let newCode = '';\n if (scriptMatch) {\n newCode += scriptMatch.join('\\n') + '\\n\\n';\n }\n newCode += transformed.code;\n if (styleMatch) {\n newCode += '\\n\\n' + styleMatch.join('\\n');\n }\n\n return { code: newCode };\n}\n","// packages/i18n/src/plugins/webpack.ts\n\nimport { HyperscriptTranslator } from '../translator';\n\n// node-html-parser is an optional dependency\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nlet parse: any;\ntry {\n parse = require('node-html-parser').parse;\n} catch {\n parse = null;\n}\n\n// Webpack types - optional peer dependency\ninterface Compiler {\n hooks: any;\n webpack: any;\n}\ninterface WebpackPluginInstance {\n apply(compiler: Compiler): void;\n}\n\nexport interface HyperscriptI18nWebpackOptions {\n sourceLocale?: string;\n targetLocale?: string;\n preserveOriginal?: boolean;\n attributes?: string[];\n test?: RegExp;\n}\n\nexport class HyperscriptI18nWebpackPlugin implements WebpackPluginInstance {\n private options: Required<HyperscriptI18nWebpackOptions>;\n private translator: HyperscriptTranslator;\n\n constructor(options: HyperscriptI18nWebpackOptions = {}) {\n this.options = {\n sourceLocale: options.sourceLocale || 'en',\n targetLocale: options.targetLocale || 'en',\n preserveOriginal: options.preserveOriginal ?? false,\n attributes: options.attributes || ['_', 'script', 'data-script'],\n test: options.test || /\\.(html)$/,\n };\n\n this.translator = new HyperscriptTranslator({\n locale: this.options.sourceLocale,\n });\n }\n\n apply(compiler: Compiler): void {\n const pluginName = 'HyperscriptI18nWebpackPlugin';\n\n // Skip if no translation needed\n if (this.options.sourceLocale === this.options.targetLocale) {\n return;\n }\n\n compiler.hooks.compilation.tap(pluginName, (compilation: any) => {\n // Hook into HTML processing\n compilation.hooks.processAssets.tapPromise(\n {\n name: pluginName,\n stage: compiler.webpack.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE_SIZE,\n },\n async (assets: any) => {\n const promises = Object.keys(assets)\n .filter(filename => this.options.test.test(filename))\n .map(filename => this.processAsset(compilation, filename));\n\n await Promise.all(promises);\n }\n );\n });\n }\n\n private async processAsset(compilation: any, filename: string): Promise<void> {\n const asset = compilation.assets[filename];\n const source = asset.source();\n\n try {\n const processed = this.processHtml(source);\n\n if (processed !== source) {\n compilation.assets[filename] = {\n source: () => processed,\n size: () => processed.length,\n };\n }\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n compilation.errors.push(new Error(`Failed to process ${filename}: ${message}`));\n }\n }\n\n private processHtml(html: string): string {\n const root = parse(html);\n let hasChanges = false;\n\n this.options.attributes.forEach(attr => {\n const elements = root.querySelectorAll(`[${attr}]`);\n\n elements.forEach((element: any) => {\n const original = element.getAttribute(attr);\n if (!original) return;\n\n const translated = this.translator.translate(original, {\n from: this.options.sourceLocale,\n to: this.options.targetLocale,\n });\n\n if (original !== translated) {\n hasChanges = true;\n\n if (this.options.preserveOriginal) {\n element.setAttribute(`${attr}-${this.options.sourceLocale}`, original);\n }\n\n element.setAttribute(attr, translated);\n }\n });\n });\n\n return hasChanges ? root.toString() : html;\n }\n}\n","// packages/i18n/src/ssr-integration.ts\n\nimport { HyperscriptTranslator } from './translator';\nimport type { TranslationOptions } from './types';\n\n/**\n * SSR integration for i18n support\n */\nexport interface SSRLocaleContext {\n locale: string;\n direction: 'ltr' | 'rtl';\n preferredLocales: string[];\n userAgent?: string;\n acceptLanguage?: string;\n}\n\nexport interface SSRLocaleOptions {\n detectFromHeaders?: boolean;\n detectFromUrl?: boolean;\n fallbackLocale?: string;\n supportedLocales?: string[];\n urlPattern?: RegExp;\n}\n\nexport class SSRLocaleManager {\n private translator: HyperscriptTranslator;\n private options: Required<SSRLocaleOptions>;\n\n constructor(translator: HyperscriptTranslator, options: SSRLocaleOptions = {}) {\n this.translator = translator;\n this.options = {\n detectFromHeaders: options.detectFromHeaders ?? true,\n detectFromUrl: options.detectFromUrl ?? true,\n fallbackLocale: options.fallbackLocale ?? 'en',\n supportedLocales: options.supportedLocales ?? translator.getSupportedLocales(),\n urlPattern: options.urlPattern ?? /^\\/([a-z]{2}(-[A-Z]{2})?)(\\/|$)/,\n };\n }\n\n /**\n * Extract locale from SSR request\n */\n extractLocale(request: {\n url?: string;\n headers?: Record<string, string>;\n userAgent?: string;\n }): SSRLocaleContext {\n let locale = this.options.fallbackLocale;\n const preferredLocales: string[] = [];\n\n // Extract from URL first (highest priority)\n if (this.options.detectFromUrl && request.url) {\n const urlLocale = this.extractLocaleFromUrl(request.url);\n if (urlLocale && this.options.supportedLocales.includes(urlLocale)) {\n locale = urlLocale;\n }\n }\n\n // Extract from Accept-Language header\n if (this.options.detectFromHeaders && request.headers?.['accept-language']) {\n const headerLocales = this.parseAcceptLanguage(request.headers['accept-language']);\n preferredLocales.push(...headerLocales);\n\n // Use first supported locale from header if URL didn't provide one\n if (locale === this.options.fallbackLocale) {\n const supportedHeaderLocale = headerLocales.find(loc =>\n this.options.supportedLocales.includes(loc)\n );\n if (supportedHeaderLocale) {\n locale = supportedHeaderLocale;\n }\n }\n }\n\n const context: SSRLocaleContext = {\n locale,\n direction: this.translator.isRTL(locale) ? 'rtl' : 'ltr',\n preferredLocales,\n };\n if (request.userAgent) {\n context.userAgent = request.userAgent;\n }\n if (request.headers?.['accept-language']) {\n context.acceptLanguage = request.headers['accept-language'];\n }\n return context;\n }\n\n /**\n * Generate HTML lang and dir attributes\n */\n generateHtmlAttributes(context: SSRLocaleContext): string {\n return `lang=\"${context.locale}\" dir=\"${context.direction}\"`;\n }\n\n /**\n * Generate meta tags for SEO\n */\n generateMetaTags(context: SSRLocaleContext, alternateUrls?: Record<string, string>): string[] {\n const tags: string[] = [];\n\n // Content language\n tags.push(`<meta http-equiv=\"content-language\" content=\"${context.locale}\" />`);\n\n // Alternate languages for SEO\n if (alternateUrls) {\n Object.entries(alternateUrls).forEach(([locale, url]) => {\n tags.push(`<link rel=\"alternate\" hreflang=\"${locale}\" href=\"${url}\" />`);\n });\n }\n\n return tags;\n }\n\n /**\n * Translate hyperscript code for SSR\n */\n translateForSSR(\n hyperscriptCode: string,\n targetLocale: string,\n options: Partial<Omit<TranslationOptions, 'to'>> = {}\n ): string {\n return this.translator.translate(hyperscriptCode, {\n from: 'en',\n ...options,\n to: targetLocale,\n });\n }\n\n /**\n * Generate client-side hydration data\n */\n generateHydrationData(context: SSRLocaleContext): object {\n return {\n __HYPERFIXI_I18N__: {\n locale: context.locale,\n direction: context.direction,\n preferredLocales: context.preferredLocales,\n supportedLocales: this.options.supportedLocales,\n fallbackLocale: this.options.fallbackLocale,\n },\n };\n }\n\n private extractLocaleFromUrl(url: string): string | null {\n const match = url.match(this.options.urlPattern);\n return match ? match[1] : null;\n }\n\n private parseAcceptLanguage(acceptLanguage: string): string[] {\n return acceptLanguage\n .split(',')\n .map(lang => {\n const [locale, q] = lang.trim().split(';q=');\n return {\n locale: locale.trim(),\n quality: q ? parseFloat(q) : 1.0,\n };\n })\n .sort((a, b) => b.quality - a.quality)\n .map(item => item.locale);\n }\n}\n\n/**\n * Express middleware for SSR i18n\n */\nexport function createExpressI18nMiddleware(\n translator: HyperscriptTranslator,\n options?: SSRLocaleOptions\n) {\n const localeManager = new SSRLocaleManager(translator, options);\n\n return (req: any, _res: any, next: any) => {\n const localeContext = localeManager.extractLocale({\n url: req.originalUrl || req.url,\n headers: req.headers,\n userAgent: req.get('User-Agent'),\n });\n\n // Add to request for later use\n req.localeContext = localeContext;\n req.i18n = {\n translate: (code: string, targetLocale?: string) =>\n localeManager.translateForSSR(code, targetLocale || localeContext.locale),\n generateHtmlAttributes: () => localeManager.generateHtmlAttributes(localeContext),\n generateMetaTags: (alternateUrls?: Record<string, string>) =>\n localeManager.generateMetaTags(localeContext, alternateUrls),\n generateHydrationData: () => localeManager.generateHydrationData(localeContext),\n };\n\n next();\n };\n}\n\n/**\n * Next.js API for SSR i18n\n */\nexport function withI18n(\n handler: any,\n translator: HyperscriptTranslator,\n options?: SSRLocaleOptions\n) {\n const localeManager = new SSRLocaleManager(translator, options);\n\n return async (req: any, res: any) => {\n const localeContext = localeManager.extractLocale({\n url: req.url,\n headers: req.headers,\n userAgent: req.headers['user-agent'],\n });\n\n req.localeContext = localeContext;\n req.i18n = {\n translate: (code: string, targetLocale?: string) =>\n localeManager.translateForSSR(code, targetLocale || localeContext.locale),\n generateHtmlAttributes: () => localeManager.generateHtmlAttributes(localeContext),\n generateMetaTags: (alternateUrls?: Record<string, string>) =>\n localeManager.generateMetaTags(localeContext, alternateUrls),\n generateHydrationData: () => localeManager.generateHydrationData(localeContext),\n };\n\n return handler(req, res);\n };\n}\n","// packages/i18n/src/pluralization.ts\n\n/**\n * Pluralization rules for different languages\n */\nexport type PluralRule = (n: number) => 'zero' | 'one' | 'two' | 'few' | 'many' | 'other';\n\n/**\n * Pluralization rules based on Unicode CLDR\n */\nexport const pluralRules: Record<string, PluralRule> = {\n // English, German, Dutch, Swedish, etc.\n en: n => (n === 1 ? 'one' : 'other'),\n de: n => (n === 1 ? 'one' : 'other'),\n nl: n => (n === 1 ? 'one' : 'other'),\n sv: n => (n === 1 ? 'one' : 'other'),\n\n // Spanish, Italian, Portuguese\n es: n => (n === 1 ? 'one' : 'other'),\n it: n => (n === 1 ? 'one' : 'other'),\n pt: n => (n === 1 ? 'one' : 'other'),\n\n // French\n fr: n => (n >= 0 && n < 2 ? 'one' : 'other'),\n\n // Russian, Polish\n ru: n => {\n if (n % 10 === 1 && n % 100 !== 11) return 'one';\n if (n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20)) return 'few';\n return 'many';\n },\n pl: n => {\n if (n === 1) return 'one';\n if (n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20)) return 'few';\n return 'many';\n },\n\n // Arabic\n ar: n => {\n if (n === 0) return 'zero';\n if (n === 1) return 'one';\n if (n === 2) return 'two';\n if (n % 100 >= 3 && n % 100 <= 10) return 'few';\n if (n % 100 >= 11 && n % 100 <= 99) return 'many';\n return 'other';\n },\n\n // Chinese, Japanese, Korean (no pluralization)\n zh: () => 'other',\n ja: () => 'other',\n ko: () => 'other',\n\n // Turkish\n tr: n => (n === 1 ? 'one' : 'other'),\n\n // Indonesian (no pluralization, but has different forms)\n id: () => 'other',\n\n // Quechua (simple plural rule)\n qu: n => (n === 1 ? 'one' : 'other'),\n\n // Swahili\n sw: n => (n === 1 ? 'one' : 'other'),\n\n // Czech\n cs: n => {\n if (n === 1) return 'one';\n if (n >= 2 && n <= 4) return 'few';\n return 'other';\n },\n\n // Lithuanian\n lt: n => {\n if (n % 10 === 1 && n % 100 !== 11) return 'one';\n if (n % 10 >= 2 && n % 10 <= 9 && (n % 100 < 11 || n % 100 > 19)) return 'few';\n return 'other';\n },\n};\n\n/**\n * Plural forms for hyperscript keywords\n */\nexport interface PluralForms {\n zero?: string;\n one?: string;\n two?: string;\n few?: string;\n many?: string;\n other: string;\n}\n\n/**\n * Get the appropriate plural form for a locale and count\n */\nexport function getPlural(locale: string, count: number, forms: PluralForms): string {\n const rule = pluralRules[locale] || pluralRules.en;\n const key = rule(count);\n\n return forms[key] || forms.other;\n}\n\n/**\n * Plural-aware translation for time expressions\n */\nexport const pluralTimeExpressions: Record<string, Record<string, PluralForms>> = {\n en: {\n second: {\n one: 'second',\n other: 'seconds',\n },\n minute: {\n one: 'minute',\n other: 'minutes',\n },\n hour: {\n one: 'hour',\n other: 'hours',\n },\n day: {\n one: 'day',\n other: 'days',\n },\n },\n\n es: {\n second: {\n one: 'segundo',\n other: 'segundos',\n },\n minute: {\n one: 'minuto',\n other: 'minutos',\n },\n hour: {\n one: 'hora',\n other: 'horas',\n },\n day: {\n one: 'día',\n other: 'días',\n },\n },\n\n fr: {\n second: {\n one: 'seconde',\n other: 'secondes',\n },\n minute: {\n one: 'minute',\n other: 'minutes',\n },\n hour: {\n one: 'heure',\n other: 'heures',\n },\n day: {\n one: 'jour',\n other: 'jours',\n },\n },\n\n de: {\n second: {\n one: 'Sekunde',\n other: 'Sekunden',\n },\n minute: {\n one: 'Minute',\n other: 'Minuten',\n },\n hour: {\n one: 'Stunde',\n other: 'Stunden',\n },\n day: {\n one: 'Tag',\n other: 'Tage',\n },\n },\n\n ru: {\n second: {\n one: 'секунда',\n few: 'секунды',\n many: 'секунд',\n other: 'секунд',\n },\n minute: {\n one: 'минута',\n few: 'минуты',\n many: 'минут',\n other: 'минут',\n },\n hour: {\n one: 'час',\n few: 'часа',\n many: 'часов',\n other: 'часов',\n },\n day: {\n one: 'день',\n few: 'дня',\n many: 'дней',\n other: 'дней',\n },\n },\n\n ar: {\n second: {\n zero: 'ثوانِ',\n one: 'ثانية',\n two: 'ثانيتان',\n few: 'ثوانِ',\n many: 'ثانية',\n other: 'ثانية',\n },\n minute: {\n zero: 'دقائق',\n one: 'دقيقة',\n two: 'دقيقتان',\n few: 'دقائق',\n many: 'دقيقة',\n other: 'دقيقة',\n },\n hour: {\n zero: 'ساعات',\n one: 'ساعة',\n two: 'ساعتان',\n few: 'ساعات',\n many: 'ساعة',\n other: 'ساعة',\n },\n day: {\n zero: 'أيام',\n one: 'يوم',\n two: 'يومان',\n few: 'أيام',\n many: 'يوماً',\n other: 'يوم',\n },\n },\n\n tr: {\n second: {\n one: 'saniye',\n other: 'saniye',\n },\n minute: {\n one: 'dakika',\n other: 'dakika',\n },\n hour: {\n one: 'saat',\n other: 'saat',\n },\n day: {\n one: 'gün',\n other: 'gün',\n },\n },\n\n id: {\n second: {\n other: 'detik',\n },\n minute: {\n other: 'menit',\n },\n hour: {\n other: 'jam',\n },\n day: {\n other: 'hari',\n },\n },\n\n qu: {\n second: {\n one: 'sikundu',\n other: 'sikundukuna',\n },\n minute: {\n one: 'minutu',\n other: 'minutukuna',\n },\n hour: {\n one: 'hora',\n other: 'horakuna',\n },\n day: {\n one: 'p_unchaw',\n other: 'p_unchawkuna',\n },\n },\n\n sw: {\n second: {\n one: 'sekunde',\n other: 'sekunde',\n },\n minute: {\n one: 'dakika',\n other: 'dakika',\n },\n hour: {\n one: 'saa',\n other: 'masaa',\n },\n day: {\n one: 'siku',\n other: 'siku',\n },\n },\n};\n\n/**\n * Enhanced translator with pluralization support\n */\nexport class PluralAwareTranslator {\n /**\n * Translate time expressions with proper pluralization\n */\n static translateTimeExpression(value: number, unit: string, locale: string): string {\n const expressions = pluralTimeExpressions[locale];\n if (!expressions || !expressions[unit]) {\n return `${value} ${unit}${value === 1 ? '' : 's'}`;\n }\n\n const pluralForm = getPlural(locale, value, expressions[unit]);\n return `${value} ${pluralForm}`;\n }\n\n /**\n * Parse and translate plural-aware hyperscript time expressions\n */\n static translateHyperscriptTime(text: string, locale: string): string {\n // Match patterns like \"wait 5 seconds\", \"in 1 minute\", etc.\n // Note: Longer alternatives must come first (milliseconds before millisecond, etc.)\n return text.replace(\n /(\\d+)\\s+(milliseconds|millisecond|seconds|second|minutes|minute|hours|hour|days|day|ms)/gi,\n (_match, value, unit) => {\n const numValue = parseInt(value);\n const lowerUnit = unit.toLowerCase();\n\n // Handle milliseconds/ms specially before normalizing\n if (lowerUnit === 'ms' || lowerUnit === 'millisecond' || lowerUnit === 'milliseconds') {\n return this.translateTimeExpression(numValue, 'millisecond', locale);\n }\n\n // Normalize by removing trailing 's' for other units\n const normalizedUnit = lowerUnit.replace(/s$/, '');\n return this.translateTimeExpression(numValue, normalizedUnit, locale);\n }\n );\n }\n\n /**\n * Get ordinal numbers (1st, 2nd, 3rd) in different languages\n */\n static getOrdinal(n: number, locale: string): string {\n const ordinals: Record<string, (n: number) => string> = {\n en: n => {\n if (n % 100 >= 11 && n % 100 <= 13) return `${n}th`;\n switch (n % 10) {\n case 1:\n return `${n}st`;\n case 2:\n return `${n}nd`;\n case 3:\n return `${n}rd`;\n default:\n return `${n}th`;\n }\n },\n es: n => `${n}º`,\n fr: n => (n === 1 ? `${n}er` : `${n}e`),\n de: n => `${n}.`,\n ru: n => `${n}-й`,\n ar: n => `${n}`,\n zh: n => `第${n}`,\n ja: n => `${n}番目`,\n ko: n => `${n}번째`,\n tr: n => `${n}.`,\n id: n => `ke-${n}`,\n qu: n => `${n}-ñiqin`,\n sw: n => `wa ${n}`,\n };\n\n const ordinalFn = ordinals[locale] || ordinals.en;\n return ordinalFn(n);\n }\n}\n","// packages/i18n/src/formatting.ts\n\n/**\n * Locale-aware formatting utilities for i18n\n */\n\nexport interface NumberFormatOptions {\n style?: 'decimal' | 'currency' | 'percent';\n currency?: string;\n minimumFractionDigits?: number;\n maximumFractionDigits?: number;\n useGrouping?: boolean;\n}\n\nexport interface DateFormatOptions {\n dateStyle?: 'full' | 'long' | 'medium' | 'short';\n timeStyle?: 'full' | 'long' | 'medium' | 'short';\n year?: 'numeric' | '2-digit';\n month?: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow';\n day?: 'numeric' | '2-digit';\n hour?: 'numeric' | '2-digit';\n minute?: 'numeric' | '2-digit';\n second?: 'numeric' | '2-digit';\n timeZone?: string;\n}\n\nexport interface RelativeTimeFormatOptions {\n style?: 'long' | 'short' | 'narrow';\n numeric?: 'always' | 'auto';\n}\n\n/**\n * Format numbers according to locale\n */\nexport class NumberFormatter {\n private locale: string;\n private defaultOptions: NumberFormatOptions;\n\n constructor(locale: string, defaultOptions: NumberFormatOptions = {}) {\n this.locale = locale;\n this.defaultOptions = defaultOptions;\n }\n\n format(value: number, options: NumberFormatOptions = {}): string {\n const mergedOptions = { ...this.defaultOptions, ...options };\n\n try {\n const result = new Intl.NumberFormat(this.locale, mergedOptions).format(value);\n // Validate result - if style is currency but no currency symbol, use fallback\n if (mergedOptions.style === 'currency' && !/[$€£¥₹₩₽฿₪₴₱₫₵₦]/.test(result)) {\n return this.fallbackFormat(value, mergedOptions);\n }\n // Validate result - if style is percent but no % symbol, use fallback\n if (mergedOptions.style === 'percent' && !result.includes('%')) {\n return this.fallbackFormat(value, mergedOptions);\n }\n // Validate result - if input has decimals but output lost them (broken Intl like jsdom)\n // Check by seeing if the result represents a rounded integer when it shouldn't\n const hasFractionalPart = value % 1 !== 0;\n if (hasFractionalPart && mergedOptions.style !== 'percent') {\n // Extract numeric value from result (remove thousand separators, keep decimal)\n // If the result only contains digits and thousand separators (no decimal), it's broken\n const digitsOnly = result.replace(/[^\\d.-]/g, '');\n const parsedValue = parseFloat(digitsOnly);\n // If parsed value is an integer but input had decimals, Intl rounded incorrectly\n if (!isNaN(parsedValue) && parsedValue % 1 === 0) {\n return this.fallbackFormat(value, mergedOptions);\n }\n }\n return result;\n } catch (error) {\n // Fallback for unsupported locales\n return this.fallbackFormat(value, mergedOptions);\n }\n }\n\n formatCurrency(\n value: number,\n currency: string,\n options: Omit<NumberFormatOptions, 'style' | 'currency'> = {}\n ): string {\n return this.format(value, {\n ...options,\n style: 'currency',\n currency,\n });\n }\n\n formatPercent(value: number, options: Omit<NumberFormatOptions, 'style'> = {}): string {\n // Note: Intl.NumberFormat with style: 'percent' multiplies by 100\n // So 0.25 becomes \"25%\"\n return this.format(value, {\n ...options,\n style: 'percent',\n });\n }\n\n private fallbackFormat(value: number, options: NumberFormatOptions): string {\n const { style, currency, useGrouping = true } = options;\n // Default fraction digits based on style\n const defaultMin = style === 'currency' ? 2 : 0;\n const defaultMax = style === 'currency' ? 2 : 3;\n const minimumFractionDigits = options.minimumFractionDigits ?? defaultMin;\n const maximumFractionDigits = options.maximumFractionDigits ?? defaultMax;\n\n let formatted = value.toFixed(\n Math.min(maximumFractionDigits, Math.max(minimumFractionDigits, 0))\n );\n\n // Remove trailing zeros after decimal point if not required\n if (minimumFractionDigits === 0 && formatted.includes('.')) {\n formatted = formatted.replace(/\\.?0+$/, '');\n }\n\n // Add thousand separators if grouping is enabled\n if (useGrouping !== false) {\n const parts = formatted.split('.');\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n formatted = parts.join('.');\n }\n\n if (style === 'currency' && currency) {\n // Map currency codes to symbols\n const currencySymbols: Record<string, string> = {\n USD: '$',\n EUR: '€',\n GBP: '£',\n JPY: '¥',\n CNY: '¥',\n KRW: '₩',\n RUB: '₽',\n INR: '₹',\n THB: '฿',\n ILS: '₪',\n UAH: '₴',\n PHP: '₱',\n VND: '₫',\n GHS: '₵',\n NGN: '₦',\n };\n const symbol = currencySymbols[currency] || currency;\n return `${symbol}${formatted}`;\n }\n\n if (style === 'percent') {\n // Multiply by 100 for percent display (matching Intl behavior)\n const percentValue = (value * 100).toFixed(\n Math.min(maximumFractionDigits, Math.max(minimumFractionDigits, 0))\n );\n const cleanPercent =\n minimumFractionDigits === 0 && percentValue.includes('.')\n ? percentValue.replace(/\\.?0+$/, '')\n : percentValue;\n return `${cleanPercent}%`;\n }\n\n return formatted;\n }\n}\n\n/**\n * Format dates according to locale\n */\nexport class DateFormatter {\n private locale: string;\n private defaultOptions: DateFormatOptions;\n\n constructor(locale: string, defaultOptions: DateFormatOptions = {}) {\n this.locale = locale;\n this.defaultOptions = defaultOptions;\n }\n\n format(date: Date | string | number, options: DateFormatOptions = {}): string {\n const dateObj = new Date(date);\n const mergedOptions = { ...this.defaultOptions, ...options };\n\n try {\n const result = new Intl.DateTimeFormat(this.locale, mergedOptions).format(dateObj);\n // Validate: if timeStyle was requested but no time in result, use fallback\n if (mergedOptions.timeStyle && !/\\d{1,2}:\\d{2}/.test(result)) {\n return this.fallbackFormat(dateObj, mergedOptions);\n }\n return result;\n } catch (error) {\n return this.fallbackFormat(dateObj, mergedOptions);\n }\n }\n\n formatRelative(date: Date | string | number, options: RelativeTimeFormatOptions = {}): string {\n const dateObj = new Date(date);\n const now = new Date();\n const diffMs = dateObj.getTime() - now.getTime();\n\n try {\n const rtf = new Intl.RelativeTimeFormat(this.locale, options);\n\n const diffSeconds = Math.round(diffMs / 1000);\n const diffMinutes = Math.round(diffMs / (1000 * 60));\n const diffHours = Math.round(diffMs / (1000 * 60 * 60));\n const diffDays = Math.round(diffMs / (1000 * 60 * 60 * 24));\n\n if (Math.abs(diffSeconds) < 60) {\n return rtf.format(diffSeconds, 'second');\n } else if (Math.abs(diffMinutes) < 60) {\n return rtf.format(diffMinutes, 'minute');\n } else if (Math.abs(diffHours) < 24) {\n return rtf.format(diffHours, 'hour');\n } else if (Math.abs(diffDays) < 30) {\n return rtf.format(diffDays, 'day');\n } else {\n return this.format(dateObj);\n }\n } catch (error) {\n return this.fallbackRelativeFormat(dateObj, now);\n }\n }\n\n private fallbackFormat(date: Date, options: DateFormatOptions): string {\n // Basic fallback formatting\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n const hour = String(date.getHours()).padStart(2, '0');\n const minute = String(date.getMinutes()).padStart(2, '0');\n\n const dateStr = `${month}/${day}/${year}`;\n const timeStr = `${hour}:${minute}`;\n\n // Include time if timeStyle is set\n if (options.timeStyle) {\n return options.dateStyle ? `${dateStr} ${timeStr}` : timeStr;\n }\n\n if (options.dateStyle || (!options.dateStyle && !options.timeStyle)) {\n return dateStr;\n }\n\n return date.toString();\n }\n\n private fallbackRelativeFormat(date: Date, now: Date): string {\n const diffMs = date.getTime() - now.getTime();\n const diffDays = Math.round(diffMs / (1000 * 60 * 60 * 24));\n\n if (diffDays === 0) return 'today';\n if (diffDays === 1) return 'tomorrow';\n if (diffDays === -1) return 'yesterday';\n if (diffDays > 0) return `in ${diffDays} days`;\n return `${Math.abs(diffDays)} days ago`;\n }\n}\n\n/**\n * Locale-aware formatting manager\n */\nexport class LocaleFormatter {\n private locale: string;\n private numberFormatter: NumberFormatter;\n private dateFormatter: DateFormatter;\n\n constructor(locale: string) {\n this.locale = locale;\n this.numberFormatter = new NumberFormatter(locale);\n this.dateFormatter = new DateFormatter(locale);\n }\n\n // Number formatting\n formatNumber(value: number, options?: NumberFormatOptions): string {\n return this.numberFormatter.format(value, options);\n }\n\n formatCurrency(\n value: number,\n currency: string,\n options?: Omit<NumberFormatOptions, 'style' | 'currency'>\n ): string {\n return this.numberFormatter.formatCurrency(value, currency, options);\n }\n\n formatPercent(value: number, options?: Omit<NumberFormatOptions, 'style'>): string {\n return this.numberFormatter.formatPercent(value, options);\n }\n\n // Date formatting\n formatDate(date: Date | string | number, options?: DateFormatOptions): string {\n return this.dateFormatter.format(date, options);\n }\n\n formatRelativeTime(date: Date | string | number, options?: RelativeTimeFormatOptions): string {\n return this.dateFormatter.formatRelative(date, options);\n }\n\n // Specialized hyperscript formatting\n formatHyperscriptValue(value: any, type?: string): string {\n if (typeof value === 'number') {\n if (type === 'currency') {\n return this.formatCurrency(value, 'USD');\n }\n if (type === 'percent') {\n return this.formatPercent(value);\n }\n return this.formatNumber(value);\n }\n\n if (value instanceof Date || (typeof value === 'string' && !isNaN(Date.parse(value)))) {\n if (type === 'relative') {\n return this.formatRelativeTime(value);\n }\n return this.formatDate(value);\n }\n\n return String(value);\n }\n\n // List formatting\n formatList(\n items: string[],\n options: {\n style?: 'long' | 'short' | 'narrow';\n type?: 'conjunction' | 'disjunction' | 'unit';\n } = {}\n ): string {\n if (items.length === 0) return '';\n if (items.length === 1) return items[0];\n\n try {\n // ListFormat may not be available in all environments\n const ListFormatCtor = (Intl as any).ListFormat;\n if (ListFormatCtor) {\n const listFormat = new ListFormatCtor(this.locale, options);\n return listFormat.format(items);\n }\n throw new Error('ListFormat not available');\n } catch (_error) {\n // Fallback for unsupported locales\n const { type = 'conjunction' } = options;\n const connector = type === 'disjunction' ? 'or' : 'and';\n\n if (items.length === 2) {\n return `${items[0]} ${connector} ${items[1]}`;\n }\n\n return `${items.slice(0, -1).join(', ')}, ${connector} ${items[items.length - 1]}`;\n }\n }\n\n // Unit formatting\n formatUnit(\n value: number,\n unit: string,\n options: { style?: 'long' | 'short' | 'narrow' } = {}\n ): string {\n try {\n // Map common hyperscript units to Intl units\n const unitMap: Record<string, string> = {\n second: 'second',\n seconds: 'second',\n minute: 'minute',\n minutes: 'minute',\n hour: 'hour',\n hours: 'hour',\n day: 'day',\n days: 'day',\n pixel: 'pixel',\n pixels: 'pixel',\n px: 'pixel',\n percent: 'percent',\n '%': 'percent',\n };\n\n const intlUnit = unitMap[unit.toLowerCase()] || unit;\n\n if (Intl.NumberFormat.prototype.constructor.name === 'NumberFormat') {\n // Check if environment supports unit formatting\n const testFormatter = new Intl.NumberFormat(this.locale, {\n style: 'unit',\n unit: intlUnit,\n unitDisplay: options.style || 'long',\n } as any);\n\n return testFormatter.format(value);\n }\n } catch (error) {\n // Fallback formatting\n }\n\n return `${value} ${unit}`;\n }\n\n // Change locale\n setLocale(locale: string): void {\n this.locale = locale;\n this.numberFormatter = new NumberFormatter(locale);\n this.dateFormatter = new DateFormatter(locale);\n }\n\n getLocale(): string {\n return this.locale;\n }\n}\n\n/**\n * Global formatting utilities\n */\nexport const formatters = new Map<string, LocaleFormatter>();\n\nexport function getFormatter(locale: string): LocaleFormatter {\n if (!formatters.has(locale)) {\n formatters.set(locale, new LocaleFormatter(locale));\n }\n return formatters.get(locale)!;\n}\n\nexport function formatForLocale(locale: string, value: any, type?: string): string {\n return getFormatter(locale).formatHyperscriptValue(value, type);\n}\n","// packages/i18n/src/runtime.ts\n\nimport { HyperscriptTranslator } from './translator';\nimport { Dictionary, I18nConfig, TranslationOptions } from './types';\nimport { getBrowserLocales, isRTL } from './utils/locale';\nimport { getFormatter } from './formatting';\n\n/**\n * Runtime i18n manager for client-side locale switching\n */\nexport interface RuntimeI18nOptions extends I18nConfig {\n autoDetect?: boolean;\n storageKey?: string;\n urlParam?: string;\n cookieName?: string;\n updateURL?: boolean;\n updateTitle?: boolean;\n updateLang?: boolean;\n updateDir?: boolean;\n}\n\nexport class RuntimeI18nManager {\n private translator: HyperscriptTranslator;\n private options: Required<RuntimeI18nOptions>;\n private currentLocale: string;\n private observers: Set<(locale: string) => void> = new Set();\n private initialized = false;\n\n constructor(options: Partial<RuntimeI18nOptions> = {}) {\n this.options = {\n locale: options.locale || 'en',\n fallbackLocale: options.fallbackLocale || 'en',\n dictionaries: options.dictionaries || {},\n detectLocale: options.detectLocale ?? true,\n rtlLocales: options.rtlLocales || ['ar', 'he', 'fa', 'ur'],\n preserveOriginalAttribute: options.preserveOriginalAttribute || 'data-i18n-original',\n autoDetect: options.autoDetect ?? true,\n storageKey: options.storageKey || 'hyperfixi-locale',\n urlParam: options.urlParam || 'lang',\n cookieName: options.cookieName || 'hyperfixi-locale',\n updateURL: options.updateURL ?? false,\n updateTitle: options.updateTitle ?? true,\n updateLang: options.updateLang ?? true,\n updateDir: options.updateDir ?? true,\n };\n\n this.translator = new HyperscriptTranslator(this.options);\n this.currentLocale = this.options.locale;\n }\n\n /**\n * Initialize the runtime i18n system\n */\n async initialize(): Promise<void> {\n if (this.initialized) return;\n\n if (typeof window !== 'undefined') {\n // Detect initial locale\n const detectedLocale = this.detectInitialLocale();\n if (detectedLocale !== this.currentLocale) {\n await this.setLocale(detectedLocale, false);\n }\n\n // Set up event listeners\n this.setupEventListeners();\n\n // Translate existing elements\n this.translatePage();\n\n // Update document attributes\n this.updateDocumentAttributes();\n }\n\n this.initialized = true;\n }\n\n /**\n * Set the current locale\n */\n async setLocale(locale: string, updateStorage = true): Promise<void> {\n if (locale === this.currentLocale) return;\n\n const oldLocale = this.currentLocale;\n this.currentLocale = locale;\n\n // Update storage if requested\n if (updateStorage && typeof window !== 'undefined') {\n this.saveLocaleToStorage(locale);\n }\n\n // Update URL if requested\n if (this.options.updateURL && typeof window !== 'undefined') {\n this.updateURL(locale);\n }\n\n // Update document attributes\n if (typeof document !== 'undefined') {\n this.updateDocumentAttributes();\n }\n\n // Translate the page\n if (typeof document !== 'undefined') {\n this.translatePage(oldLocale);\n }\n\n // Notify observers\n this.notifyObservers(locale);\n }\n\n /**\n * Get the current locale\n */\n getLocale(): string {\n return this.currentLocale;\n }\n\n /**\n * Get supported locales\n */\n getSupportedLocales(): string[] {\n return this.translator.getSupportedLocales();\n }\n\n /**\n * Check if a locale is RTL\n */\n isRTL(locale?: string): boolean {\n return isRTL(locale || this.currentLocale);\n }\n\n /**\n * Translate a hyperscript string\n */\n translate(text: string, options: Partial<TranslationOptions> = {}): string {\n return this.translator.translate(text, {\n from: options.from || 'en',\n to: options.to || this.currentLocale,\n ...options,\n });\n }\n\n /**\n * Format a value according to current locale\n */\n format(value: any, type?: string): string {\n return getFormatter(this.currentLocale).formatHyperscriptValue(value, type);\n }\n\n /**\n * Add dictionary for a locale\n */\n addDictionary(locale: string, dictionary: Dictionary): void {\n this.translator.addDictionary(locale, dictionary);\n }\n\n /**\n * Subscribe to locale changes\n */\n onLocaleChange(callback: (locale: string) => void): () => void {\n this.observers.add(callback);\n return () => this.observers.delete(callback);\n }\n\n /**\n * Create a locale switcher element\n */\n createLocaleSwitcher(\n options: {\n type?: 'dropdown' | 'buttons';\n className?: string;\n showNativeNames?: boolean;\n } = {}\n ): HTMLElement {\n const { type = 'dropdown', className = 'locale-switcher', showNativeNames = true } = options;\n const supportedLocales = this.getSupportedLocales();\n\n if (type === 'dropdown') {\n const select = document.createElement('select');\n select.className = className;\n\n supportedLocales.forEach(locale => {\n const option = document.createElement('option');\n option.value = locale;\n option.textContent = this.getLocaleDisplayName(locale, showNativeNames);\n option.selected = locale === this.currentLocale;\n select.appendChild(option);\n });\n\n select.addEventListener('change', e => {\n const target = e.target as HTMLSelectElement;\n this.setLocale(target.value);\n });\n\n return select;\n } else {\n const container = document.createElement('div');\n container.className = className;\n\n supportedLocales.forEach(locale => {\n const button = document.createElement('button');\n button.textContent = this.getLocaleDisplayName(locale, showNativeNames);\n button.dataset.locale = locale;\n button.className = locale === this.currentLocale ? 'active' : '';\n\n button.addEventListener('click', () => {\n this.setLocale(locale);\n });\n\n container.appendChild(button);\n });\n\n return container;\n }\n }\n\n /**\n * Detect initial locale from various sources\n */\n private detectInitialLocale(): string {\n if (!this.options.autoDetect || typeof window === 'undefined') {\n return this.options.locale;\n }\n\n // 1. URL parameter\n const urlParams = new URLSearchParams(window.location.search);\n const urlLocale = urlParams.get(this.options.urlParam);\n if (urlLocale && this.translator.getSupportedLocales().includes(urlLocale)) {\n return urlLocale;\n }\n\n // 2. Local storage\n const storageLocale = localStorage.getItem(this.options.storageKey);\n if (storageLocale && this.translator.getSupportedLocales().includes(storageLocale)) {\n return storageLocale;\n }\n\n // 3. Cookie\n const cookieLocale = this.getCookie(this.options.cookieName);\n if (cookieLocale && this.translator.getSupportedLocales().includes(cookieLocale)) {\n return cookieLocale;\n }\n\n // 4. Browser languages\n const browserLocales = getBrowserLocales();\n for (const locale of browserLocales) {\n if (this.translator.getSupportedLocales().includes(locale)) {\n return locale;\n }\n // Try language-only match\n const lang = locale.split('-')[0];\n if (this.translator.getSupportedLocales().includes(lang)) {\n return lang;\n }\n }\n\n return this.options.fallbackLocale;\n }\n\n /**\n * Save locale to storage\n */\n private saveLocaleToStorage(locale: string): void {\n try {\n localStorage.setItem(this.options.storageKey, locale);\n this.setCookie(this.options.cookieName, locale, 365);\n } catch (error) {\n console.warn('Failed to save locale to storage:', error);\n }\n }\n\n /**\n * Update URL with current locale\n */\n private updateURL(locale: string): void {\n const url = new URL(window.location.href);\n url.searchParams.set(this.options.urlParam, locale);\n window.history.replaceState({}, '', url.toString());\n }\n\n /**\n * Update document attributes\n */\n private updateDocumentAttributes(): void {\n if (typeof document === 'undefined') return;\n\n if (this.options.updateLang) {\n document.documentElement.lang = this.currentLocale;\n }\n\n if (this.options.updateDir) {\n document.documentElement.dir = this.isRTL() ? 'rtl' : 'ltr';\n }\n\n if (this.options.updateTitle && document.title) {\n // Optionally translate the title if it contains hyperscript-like content\n // This is a simple implementation - could be enhanced\n document.title = this.translate(document.title);\n }\n }\n\n /**\n * Translate the entire page\n */\n private translatePage(fromLocale?: string): void {\n if (typeof document === 'undefined') return;\n\n // Find all elements with hyperscript attributes\n const attributes = ['_', 'data-script', 'script'];\n\n attributes.forEach(attr => {\n const elements = document.querySelectorAll(`[${attr}]`);\n elements.forEach(element => {\n const original = element.getAttribute(attr);\n if (!original) return;\n\n try {\n const translated = this.translator.translate(original, {\n from: fromLocale || 'en',\n to: this.currentLocale,\n });\n\n if (translated !== original) {\n // Preserve original if configured\n if (this.options.preserveOriginalAttribute) {\n element.setAttribute(this.options.preserveOriginalAttribute, original);\n }\n\n element.setAttribute(attr, translated);\n }\n } catch (error) {\n console.warn(`Failed to translate ${attr} attribute:`, error);\n }\n });\n });\n }\n\n /**\n * Set up event listeners\n */\n private setupEventListeners(): void {\n // Listen for language change events\n window.addEventListener('languagechange', () => {\n if (this.options.autoDetect) {\n const newLocale = this.detectInitialLocale();\n if (newLocale !== this.currentLocale) {\n this.setLocale(newLocale);\n }\n }\n });\n\n // Listen for popstate events (back/forward navigation)\n window.addEventListener('popstate', () => {\n if (this.options.updateURL) {\n const urlParams = new URLSearchParams(window.location.search);\n const urlLocale = urlParams.get(this.options.urlParam);\n if (urlLocale && urlLocale !== this.currentLocale) {\n this.setLocale(urlLocale, false);\n }\n }\n });\n }\n\n /**\n * Notify observers of locale change\n */\n private notifyObservers(locale: string): void {\n this.observers.forEach(callback => {\n try {\n callback(locale);\n } catch (error) {\n console.warn('Locale change observer error:', error);\n }\n });\n }\n\n /**\n * Get locale display name\n */\n private getLocaleDisplayName(locale: string, showNative: boolean): string {\n const names: Record<string, { english: string; native: string }> = {\n en: { english: 'English', native: 'English' },\n es: { english: 'Spanish', native: 'Español' },\n fr: { english: 'French', native: 'Français' },\n de: { english: 'German', native: 'Deutsch' },\n ja: { english: 'Japanese', native: '日本語' },\n ko: { english: 'Korean', native: '한국어' },\n zh: { english: 'Chinese', native: '中文' },\n ar: { english: 'Arabic', native: 'العربية' },\n };\n\n const info = names[locale];\n if (!info) return locale;\n\n return showNative ? info.native : info.english;\n }\n\n /**\n * Cookie utilities\n */\n private getCookie(name: string): string | null {\n if (typeof document === 'undefined') return null;\n\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${name}=`);\n if (parts.length === 2) {\n return parts.pop()?.split(';').shift() || null;\n }\n return null;\n }\n\n private setCookie(name: string, value: string, days: number): void {\n if (typeof document === 'undefined') return;\n\n const expires = new Date();\n expires.setTime(expires.getTime() + days * 24 * 60 * 60 * 1000);\n document.cookie = `${name}=${value};expires=${expires.toUTCString()};path=/`;\n }\n}\n\n/**\n * Global runtime instance\n */\nexport let runtimeI18n: RuntimeI18nManager | null = null;\n\n/**\n * Initialize global runtime i18n\n */\nexport function initializeI18n(options?: RuntimeI18nOptions): RuntimeI18nManager {\n runtimeI18n = new RuntimeI18nManager(options);\n return runtimeI18n;\n}\n\n/**\n * Get global runtime i18n instance\n */\nexport function getI18n(): RuntimeI18nManager {\n if (!runtimeI18n) {\n throw new Error('I18n not initialized. Call initializeI18n() first.');\n }\n return runtimeI18n;\n}\n","export * from \"./errors.js\";\nexport * from \"./helpers/parseUtil.js\";\nexport * from \"./helpers/typeAliases.js\";\nexport * from \"./helpers/util.js\";\nexport * from \"./types.js\";\nexport * from \"./ZodError.js\";\n","export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n","import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n","import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"bigint\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\nexport default errorMap;\n","import defaultErrorMap from \"./locales/en.js\";\nlet overrideErrorMap = defaultErrorMap;\nexport { defaultErrorMap };\nexport function setErrorMap(map) {\n overrideErrorMap = map;\n}\nexport function getErrorMap() {\n return overrideErrorMap;\n}\n","import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nexport const INVALID = Object.freeze({\n status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n","export var errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n","import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nexport class ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header)\n return false;\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nexport class ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nexport class ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nexport class ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nexport class ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nexport class ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nexport class ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nexport class ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nexport class ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nexport class ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nexport class ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nexport class ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexport class ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nexport class ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nexport class ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexport class ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nexport class ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nexport class ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nexport class ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nexport class ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nexport class ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nexport class ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nexport class ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nexport class ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexport class ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexport class ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n","/**\n * Enhanced I18n Implementation\n * Type-safe internationalization following enhanced pattern\n */\n\nimport { z } from 'zod';\n// Note: Dictionary, I18nConfig, TranslationOptions, TranslationResult are defined in ./types.js\n// but may not be used directly in this file (used for documentation purposes)\n\n// ============================================================================\n// Local Type Definitions\n// These types were previously imported from core but are defined locally\n// to avoid cross-package dependencies and missing module errors.\n// ============================================================================\n\n/**\n * Validation result for i18n operations\n */\nexport interface ValidationResult {\n isValid: boolean;\n errors: Array<{ type: string; message: string; path?: string }>;\n suggestions?: string[];\n}\n\n/**\n * Evaluation result wrapper\n */\nexport interface EvaluationResult<T = unknown> {\n success: boolean;\n value?: T;\n type?: string;\n errors?: Array<{ type: string; message: string }>;\n suggestions?: string[];\n}\n\n/**\n * Context metadata for enhanced pattern\n */\nexport interface ContextMetadata {\n contextId?: string;\n timestamp?: number;\n category: string;\n capabilities?: string[];\n state?: string;\n // Extended metadata properties\n complexity?: string;\n sideEffects?: string[];\n dependencies?: string[];\n returnTypes?: string[];\n relatedContexts?: string[];\n examples?: Array<{\n input: string;\n description: string;\n expectedOutput: string;\n }>;\n // Additional extended properties\n frameworkDependencies?: string[];\n environmentRequirements?: {\n browser?: boolean;\n server?: boolean;\n nodejs?: boolean;\n };\n performance?: {\n averageTime?: number;\n complexity?: string;\n };\n}\n\n/**\n * LLM documentation interface for AI-friendly descriptions\n */\nexport interface LLMDocumentation {\n summary: string;\n description?: string;\n examples?: Array<\n | string\n | {\n title: string;\n code: string;\n explanation: string;\n output: string;\n }\n >;\n category?: string;\n parameters?: Array<{\n name: string;\n type: string;\n description: string;\n required?: boolean;\n default?: string;\n optional?: boolean;\n examples?: string[];\n }>;\n returns?: {\n type: string;\n description: string;\n examples?: string[];\n };\n tips?: string[];\n commonMistakes?: string[];\n seeAlso?: string[];\n tags?: string[];\n}\n\n/**\n * Evaluation type enumeration\n */\nexport type EvaluationType = 'sync' | 'async' | 'streaming' | 'Context';\n\n/**\n * Enhanced context base interface\n */\nexport interface EnhancedContextBase extends ContextMetadata {\n [key: string]: unknown;\n}\n\n/**\n * Typed context implementation interface\n */\nexport interface TypedContextImplementation<TInput, TOutput> {\n inputSchema: z.ZodType<TInput>;\n outputSchema: z.ZodType<TOutput>;\n evaluate(input: TInput): Promise<EvaluationResult<TOutput>>;\n validate(input: unknown): ValidationResult;\n metadata: ContextMetadata;\n documentation: LLMDocumentation;\n}\n\n// ============================================================================\n// Enhanced I18n Input/Output Schemas\n// ============================================================================\n\nexport const EnhancedI18nInputSchema = z.object({\n /** Locale configuration */\n locale: z.string().min(2, 'Locale must be at least 2 characters'),\n fallbackLocale: z.string().optional(),\n /** Dictionary data for translations */\n dictionaries: z\n .record(\n z.string(),\n z\n .object({\n commands: z.record(z.string(), z.string()),\n modifiers: z.record(z.string(), z.string()),\n events: z.record(z.string(), z.string()),\n logical: z.record(z.string(), z.string()),\n temporal: z.record(z.string(), z.string()),\n values: z.record(z.string(), z.string()),\n attributes: z.record(z.string(), z.string()),\n })\n .catchall(z.record(z.string(), z.string()))\n )\n .optional(),\n /** Translation options */\n options: z\n .object({\n detectLocale: z.boolean().default(true),\n rtlLocales: z.array(z.string()).default([]),\n preserveOriginalAttribute: z.string().optional(),\n validate: z.boolean().default(true),\n })\n .optional(),\n /** Context variables for translation */\n variables: z.record(z.string(), z.unknown()).optional(),\n /** Environment and debug settings */\n environment: z.enum(['frontend', 'backend', 'universal']).default('universal'),\n debug: z.boolean().default(false),\n});\n\n// Note: Using z.any() for function types because Zod's z.function() inference\n// produces (...args: unknown[]) => unknown which is incompatible with specific signatures\nexport const EnhancedI18nOutputSchema = z.object({\n /** Context identifier */\n contextId: z.string(),\n timestamp: z.number(),\n category: z.literal('Universal'),\n capabilities: z.array(z.string()),\n state: z.enum(['ready', 'loading', 'error']),\n\n /** I18n specific capabilities */\n translate: z.any(),\n translateHyperscript: z.any(),\n setLocale: z.any(),\n getLocale: z.any(),\n validateTranslation: z.any(),\n\n /** Locale management */\n locale: z.object({\n current: z.string(),\n fallback: z.string().optional(),\n direction: z.enum(['ltr', 'rtl']),\n available: z.array(z.string()),\n }),\n\n /** Dictionary access */\n dictionary: z.object({\n get: z.any(),\n set: z.any(),\n has: z.any(),\n keys: z.any(),\n }),\n\n /** Formatting utilities */\n format: z.object({\n number: z.any(),\n date: z.any(),\n currency: z.any(),\n relative: z.any(),\n }),\n});\n\nexport type EnhancedI18nInput = z.infer<typeof EnhancedI18nInputSchema>;\nexport type EnhancedI18nOutput = z.infer<typeof EnhancedI18nOutputSchema>;\n\n// ============================================================================\n// Enhanced I18n Context Implementation\n// ============================================================================\n\nexport class TypedI18nContextImplementation {\n public readonly name = 'i18nContext';\n public readonly category = 'Universal' as const;\n public readonly description =\n 'Type-safe internationalization context with enhanced validation and LLM integration';\n public readonly inputSchema = EnhancedI18nInputSchema;\n public readonly outputType: EvaluationType = 'Context';\n\n private evaluationHistory: Array<{\n input: EnhancedI18nInput;\n output: EnhancedI18nOutput | undefined;\n success: boolean;\n duration: number;\n timestamp: number;\n }> = [];\n\n public readonly metadata: ContextMetadata = {\n category: 'Universal',\n complexity: 'moderate',\n sideEffects: ['locale-detection', 'dictionary-loading', 'text-transformation'],\n dependencies: ['dictionaries', 'locale-detection', 'formatting-apis'],\n returnTypes: ['Context'],\n examples: [\n {\n input: '{ locale: \"es\", options: { detectLocale: true } }',\n description: 'Initialize Spanish locale with auto-detection',\n expectedOutput: 'TypedI18nContext with Spanish translations and RTL support',\n },\n {\n input:\n '{ locale: \"ar\", dictionaries: { ar: arabicDict }, options: { rtlLocales: [\"ar\"] } }',\n description: 'Arabic locale with custom dictionary and RTL configuration',\n expectedOutput: 'Arabic-aware context with right-to-left text direction',\n },\n {\n input: '{ locale: \"qu\", environment: \"frontend\" }',\n description: 'Quechua locale for frontend environment',\n expectedOutput: 'Indigenous language support with browser integration',\n },\n ],\n relatedContexts: ['frontendContext', 'backendContext', 'templateContext'],\n frameworkDependencies: ['intl-apis', 'locale-detection'],\n environmentRequirements: {\n browser: true,\n server: true,\n nodejs: true,\n },\n performance: {\n averageTime: 8.5,\n complexity: 'O(n)', // n = dictionary size\n },\n };\n\n public readonly documentation: LLMDocumentation = {\n summary:\n 'Creates type-safe internationalization context for multi-language hyperscript development with dictionary management, locale detection, and formatting utilities',\n parameters: [\n {\n name: 'i18nConfig',\n type: 'EnhancedI18nInput',\n description:\n 'Internationalization configuration including locale, dictionaries, and options',\n optional: false,\n examples: [\n '{ locale: \"fr\", options: { detectLocale: true } }',\n '{ locale: \"zh\", dictionaries: { zh: chineseDict } }',\n '{ locale: \"sw\", environment: \"backend\", options: { validate: true } }',\n ],\n },\n ],\n returns: {\n type: 'EnhancedI18nContext',\n description:\n 'Initialized internationalization context with translation capabilities and locale management',\n examples: [\n 'context.translate(\"commands.click\") → \"cliquer\"',\n 'context.translateHyperscript(\"on click\") → \"sur clic\"',\n 'context.setLocale(\"ja\") → switches to Japanese',\n 'context.format.number(1234.56) → \"1,234.56\" or \"1.234,56\" based on locale',\n ],\n },\n examples: [\n {\n title: 'Multi-language hyperscript development',\n code: 'const i18n = await createI18nContext({ locale: \"es\", options: { detectLocale: true } })',\n explanation: 'Create Spanish internationalization context with automatic locale detection',\n output: 'Spanish-aware hyperscript translation and formatting capabilities',\n },\n {\n title: 'Custom dictionary integration',\n code: 'await i18n.initialize({ locale: \"qu\", dictionaries: { qu: quechuaDict } })',\n explanation: 'Initialize Quechua language support with custom dictionary',\n output: 'Indigenous language hyperscript translation support',\n },\n {\n title: 'RTL language support',\n code: 'await i18n.initialize({ locale: \"ar\", options: { rtlLocales: [\"ar\", \"he\"] } })',\n explanation: 'Arabic locale with right-to-left text direction support',\n output: 'RTL-aware hyperscript with proper text direction and layout',\n },\n ],\n seeAlso: ['frontendContext', 'backendContext', 'templateIntegration', 'formatting'],\n tags: [\n 'i18n',\n 'internationalization',\n 'locale',\n 'translation',\n 'type-safe',\n 'enhanced-pattern',\n ],\n };\n\n async initialize(input: EnhancedI18nInput): Promise<EvaluationResult<EnhancedI18nOutput>> {\n const startTime = Date.now();\n\n try {\n // Validate input using enhanced pattern\n const validation = this.validate(input);\n if (!validation.isValid) {\n return {\n success: false,\n errors: validation.errors,\n suggestions: validation.suggestions || [],\n };\n }\n\n // Initialize locale and dictionaries\n const locale = await this.initializeLocale(input);\n const dictionaries = await this.loadDictionaries(input);\n\n // Create enhanced i18n context\n const context: EnhancedI18nOutput = {\n contextId: `i18n-${Date.now()}`,\n timestamp: startTime,\n category: 'Universal',\n capabilities: [\n 'translation',\n 'locale-management',\n 'formatting',\n 'validation',\n 'rtl-support',\n ],\n state: 'ready',\n\n // Enhanced translation functions\n translate: this.createTranslateFunction(dictionaries, locale),\n translateHyperscript: this.createHyperscriptTranslator(dictionaries, locale),\n setLocale: this.createLocaleChanger(dictionaries),\n getLocale: () => locale.current,\n validateTranslation: this.createValidationFunction(dictionaries),\n\n // Locale management\n locale: {\n current: locale.current,\n fallback: locale.fallback,\n direction: locale.direction,\n available: Object.keys(dictionaries),\n },\n\n // Dictionary access\n dictionary: {\n get: (key: string) => this.getDictionaryValue(dictionaries, locale.current, key),\n set: (key: string, value: string) =>\n this.setDictionaryValue(dictionaries, locale.current, key, value),\n has: (key: string) => this.hasDictionaryValue(dictionaries, locale.current, key),\n keys: () => this.getDictionaryKeys(dictionaries, locale.current),\n },\n\n // Enhanced formatting utilities\n format: {\n number: this.createNumberFormatter(locale.current),\n date: this.createDateFormatter(locale.current),\n currency: this.createCurrencyFormatter(locale.current),\n relative: this.createRelativeTimeFormatter(locale.current),\n },\n };\n\n // Track performance using enhanced pattern\n this.trackPerformance(startTime, true, context);\n\n return {\n success: true,\n value: context,\n type: 'Context',\n };\n } catch (error) {\n this.trackPerformance(startTime, false);\n\n return {\n success: false,\n errors: [\n {\n type: 'runtime-error',\n message: `I18n context initialization failed: ${error instanceof Error ? error.message : String(error)}`,\n },\n ],\n suggestions: [\n 'Verify locale code is valid (ISO 639-1 format)',\n 'Check dictionary structure matches expected format',\n 'Ensure dictionaries are properly loaded',\n 'Validate environment requirements are met',\n ],\n };\n }\n }\n\n validate(input: unknown): ValidationResult {\n try {\n const parsed = this.inputSchema.parse(input);\n const errors: Array<{ type: string; message: string; path?: string }> = [];\n const suggestions: string[] = [];\n\n // Enhanced validation logic\n const data = parsed as EnhancedI18nInput;\n\n // Validate locale format\n if (data.locale && !/^[a-z]{2}(-[A-Z]{2})?$/.test(data.locale)) {\n errors.push({\n type: 'invalid-locale',\n message: 'Locale must be in ISO 639-1 format (e.g., \"en\", \"es\", \"zh-CN\")',\n path: 'locale',\n });\n suggestions.push('Use standard locale codes like \"en\", \"es\", \"fr\", \"de\", \"ja\", \"zh\"');\n }\n\n // Validate fallback locale\n if (data.fallbackLocale && !/^[a-z]{2}(-[A-Z]{2})?$/.test(data.fallbackLocale)) {\n errors.push({\n type: 'invalid-fallback-locale',\n message: 'Fallback locale must be in ISO 639-1 format',\n path: 'fallbackLocale',\n });\n }\n\n // Validate dictionary structure\n if (data.dictionaries) {\n Object.entries(data.dictionaries).forEach(([locale, dict]) => {\n const requiredCategories = [\n 'commands',\n 'modifiers',\n 'events',\n 'logical',\n 'temporal',\n 'values',\n 'attributes',\n ];\n const missingCategories = requiredCategories.filter(cat => !dict[cat]);\n\n if (missingCategories.length > 0) {\n errors.push({\n type: 'incomplete-dictionary',\n message: `Dictionary for ${locale} is missing categories: ${missingCategories.join(', ')}`,\n path: `dictionaries.${locale}`,\n });\n suggestions.push(\n `Add missing categories to ${locale} dictionary for complete hyperscript translation`\n );\n }\n });\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n suggestions,\n };\n } catch (error) {\n return {\n isValid: false,\n errors: [\n {\n type: 'schema-validation',\n message: error instanceof Error ? error.message : 'Invalid input format',\n },\n ],\n suggestions: [\n 'Ensure input matches EnhancedI18nInput schema',\n 'Check locale is a valid string',\n 'Verify dictionaries follow the expected structure',\n ],\n };\n }\n }\n\n // ============================================================================\n // Enhanced Helper Methods\n // ============================================================================\n\n private async initializeLocale(input: EnhancedI18nInput) {\n const { locale, fallbackLocale = 'en', options } = input;\n\n // Detect RTL languages\n const rtlLocales = options?.rtlLocales || ['ar', 'he', 'fa', 'ur'];\n const direction = rtlLocales.includes(locale) ? 'rtl' : 'ltr';\n\n return {\n current: locale,\n fallback: fallbackLocale,\n direction: direction as 'ltr' | 'rtl',\n };\n }\n\n private async loadDictionaries(input: EnhancedI18nInput) {\n // Return provided dictionaries or load defaults\n return input.dictionaries || {};\n }\n\n private createTranslateFunction(dictionaries: Record<string, any>, locale: any) {\n return (key: string, category: string = 'commands') => {\n const dict = dictionaries[locale.current];\n if (!dict || !dict[category]) {\n return key; // Return original if no translation found\n }\n return dict[category][key] || key;\n };\n }\n\n private createHyperscriptTranslator(dictionaries: Record<string, any>, locale: any) {\n return (hyperscript: string) => {\n // Enhanced hyperscript translation logic\n const dict = dictionaries[locale.current];\n if (!dict) return hyperscript;\n\n let translated = hyperscript;\n\n // Translate commands, modifiers, events, etc.\n Object.entries(dict.commands || {}).forEach(([en, translated_word]) => {\n translated = translated.replace(new RegExp(`\\\\b${en}\\\\b`, 'g'), translated_word as string);\n });\n\n Object.entries(dict.modifiers || {}).forEach(([en, translated_word]) => {\n translated = translated.replace(new RegExp(`\\\\b${en}\\\\b`, 'g'), translated_word as string);\n });\n\n return translated;\n };\n }\n\n private createLocaleChanger(dictionaries: Record<string, any>) {\n return (newLocale: string) => {\n if (dictionaries[newLocale]) {\n // Logic to change locale\n return true;\n }\n return false;\n };\n }\n\n private createValidationFunction(dictionaries: Record<string, any>) {\n return (locale: string, _hyperscript: string) => {\n const dict = dictionaries[locale];\n if (!dict) {\n return {\n valid: false,\n errors: [`No dictionary found for locale: ${locale}`],\n coverage: 0,\n };\n }\n\n // Validation logic here\n return {\n valid: true,\n errors: [],\n coverage: 100,\n };\n };\n }\n\n private getDictionaryValue(dictionaries: Record<string, any>, locale: string, key: string) {\n const [category, ...keyParts] = key.split('.');\n const actualKey = keyParts.join('.');\n const dict = dictionaries[locale];\n return dict?.[category]?.[actualKey];\n }\n\n private setDictionaryValue(\n dictionaries: Record<string, any>,\n locale: string,\n key: string,\n value: string\n ) {\n const [category, ...keyParts] = key.split('.');\n const actualKey = keyParts.join('.');\n if (!dictionaries[locale]) dictionaries[locale] = {};\n if (!dictionaries[locale][category]) dictionaries[locale][category] = {};\n dictionaries[locale][category][actualKey] = value;\n }\n\n private hasDictionaryValue(\n dictionaries: Record<string, any>,\n locale: string,\n key: string\n ): boolean {\n return this.getDictionaryValue(dictionaries, locale, key) !== undefined;\n }\n\n private getDictionaryKeys(dictionaries: Record<string, any>, locale: string): string[] {\n const dict = dictionaries[locale];\n if (!dict) return [];\n\n const keys: string[] = [];\n Object.entries(dict).forEach(([category, categoryDict]) => {\n if (typeof categoryDict === 'object' && categoryDict !== null) {\n Object.keys(categoryDict as object).forEach(key => {\n keys.push(`${category}.${key}`);\n });\n }\n });\n return keys;\n }\n\n private createNumberFormatter(locale: string) {\n return (number: number, options?: Intl.NumberFormatOptions) => {\n return new Intl.NumberFormat(locale, options).format(number);\n };\n }\n\n private createDateFormatter(locale: string) {\n return (date: Date | number, options?: Intl.DateTimeFormatOptions) => {\n return new Intl.DateTimeFormat(locale, options).format(date);\n };\n }\n\n private createCurrencyFormatter(locale: string) {\n return (amount: number, currency: string = 'USD', options?: Intl.NumberFormatOptions) => {\n return new Intl.NumberFormat(locale, {\n style: 'currency',\n currency,\n ...options,\n }).format(amount);\n };\n }\n\n private createRelativeTimeFormatter(locale: string) {\n return (\n value: number,\n unit: Intl.RelativeTimeFormatUnit,\n options?: Intl.RelativeTimeFormatOptions\n ) => {\n return new Intl.RelativeTimeFormat(locale, options).format(value, unit);\n };\n }\n\n private trackPerformance(startTime: number, success: boolean, output?: EnhancedI18nOutput): void {\n const duration = Date.now() - startTime;\n this.evaluationHistory.push({\n input: {} as EnhancedI18nInput, // Would store actual input in real implementation\n output,\n success,\n duration,\n timestamp: startTime,\n });\n }\n\n getPerformanceMetrics() {\n return {\n totalInitializations: this.evaluationHistory.length,\n successRate:\n this.evaluationHistory.filter(h => h.success).length /\n Math.max(this.evaluationHistory.length, 1),\n averageDuration:\n this.evaluationHistory.reduce((sum, h) => sum + h.duration, 0) /\n Math.max(this.evaluationHistory.length, 1),\n lastEvaluationTime: this.evaluationHistory[this.evaluationHistory.length - 1]?.timestamp || 0,\n evaluationHistory: this.evaluationHistory.slice(-10), // Last 10 evaluations\n };\n }\n}\n\n// ============================================================================\n// Convenience Factory Functions\n// ============================================================================\n\nexport function createI18nContext(): TypedI18nContextImplementation {\n return new TypedI18nContextImplementation();\n}\n\nexport async function createEnhancedI18n(\n locale: string,\n options?: Partial<EnhancedI18nInput>\n): Promise<EvaluationResult<EnhancedI18nOutput>> {\n const i18n = new TypedI18nContextImplementation();\n return i18n.initialize({\n locale,\n environment: options?.environment || 'universal',\n debug: options?.debug || false,\n ...options,\n });\n}\n\n// ============================================================================\n// Export for Registry Registration\n// ============================================================================\n\nexport const enhancedI18nImplementation = new TypedI18nContextImplementation();\n","/**\n * Generalized Grammar System for Multilingual Hyperscript\n *\n * This system abstracts grammatical patterns across language families,\n * enabling deep multilingual support without per-language hardcoding.\n *\n * Key Linguistic Concepts:\n * - Word Order: SVO, SOV, VSO (and variations)\n * - Adposition Type: Preposition (English) vs Postposition (Japanese/Korean)\n * - Morphology: Isolating (Chinese) vs Agglutinative (Turkish) vs Fusional (Arabic)\n * - Text Direction: LTR vs RTL\n */\n\n// =============================================================================\n// Core Types\n// =============================================================================\n\n/**\n * Semantic roles in hyperscript commands.\n * These are universal across all 13 supported languages - only the surface form changes.\n *\n * ## Core Thematic Roles (from linguistic theory)\n * | Role | Usage | Purpose | Example |\n * |-------------|-------|-----------------------------|---------------------------|\n * | action | 100% | Command verb | toggle, put, fetch |\n * | patient | 90% | What is acted upon | .active, #count |\n * | destination | 40% | Where something goes | into #output, to .class |\n * | source | 13% | Where something comes from | from #input, from URL |\n * | event | 106% | Trigger events | click, keydown, submit |\n * | condition | 8% | Boolean expressions | if x > 5, when visible |\n * | agent | 0% | Who performs action | Reserved for future use |\n * | goal | 1% | Target value/state | to 'red' (in transition) |\n *\n * ## Quantitative Roles (answer \"how much/long\")\n * | Role | Usage | Purpose | Example |\n * |----------|-------|----------------|----------------------|\n * | quantity | 7% | Numeric amount | by 5, 3 times |\n * | duration | 1% | Time span | for 5 seconds, 500ms |\n *\n * ## Adverbial/Modifier Roles (answer \"how/by what means\")\n * | Role | Usage | Purpose | Example |\n * |--------------|-------|---------------------------|-------------------|\n * | style | 2% | Animation/behavior | with fade |\n * | manner | 2% | Insertion position | before, after |\n * | method | 1% | HTTP method/technique | via POST, as GET |\n * | responseType | 1% | Response format | as json, as html |\n *\n * ## Control Flow Roles\n * | Role | Usage | Purpose | Example |\n * |----------|-------|--------------|-----------------------|\n * | loopType | 6% | Loop variant | forever, until, times |\n *\n * ## Design Notes\n * - Low-usage roles (agent, goal, method, responseType) are intentionally kept for:\n * - Linguistic completeness across all 13 languages\n * - Future extensibility (AI agents, server-side execution)\n * - Command-specific semantics (fetch, transition)\n * - Each role has distinct grammatical markers per language (see profiles/index.ts)\n * - Usage percentages based on pattern database analysis\n */\nexport type SemanticRole =\n // Core thematic roles\n | 'action' // The command/verb (increment, put, toggle)\n | 'agent' // Who/what performs action (reserved for future: AI agents, server-side)\n | 'patient' // What is acted upon (the counter, .active)\n | 'source' // Origin (from #input, from URL)\n | 'destination' // Target location (into #output, to .class)\n | 'goal' // Target value/state (to 'red', to 100)\n | 'event' // Trigger (click, input, keydown)\n | 'condition' // Boolean expression (if x > 5)\n // Quantitative roles\n | 'quantity' // Numeric amount (by 5, 3 times)\n | 'duration' // Time span (for 5 seconds, over 500ms)\n // Adverbial roles\n | 'responseType' // Response format (as json, as text, as html)\n | 'method' // HTTP method/technique (via POST, using GET)\n | 'style' // Visual/behavioral manner (with fade, smoothly)\n | 'manner' // Insertion position (before, after)\n // Control flow roles\n | 'loopType' // Loop variant: forever, times, for, while, until, until-event\n // Structural roles (for parser control)\n | 'continues'; // Continuation marker (then-chains)\n\n/**\n * Word order patterns\n * These represent the major typological categories\n */\nexport type WordOrder = 'SVO' | 'SOV' | 'VSO' | 'VOS' | 'OVS' | 'OSV' | 'free';\n\n/**\n * Where grammatical markers appear relative to their noun/verb\n */\nexport type AdpositionType = 'preposition' | 'postposition' | 'circumposition' | 'none';\n\n/**\n * Morphological typology - how words are constructed\n */\nexport type MorphologyType =\n | 'isolating' // Chinese - no inflection, word order matters\n | 'agglutinative' // Turkish, Japanese - morphemes stack predictably\n | 'fusional' // Arabic, Spanish - morphemes blend together\n | 'polysynthetic'; // Quechua - complex words encode full sentences\n\n/**\n * A grammatical marker (particle, case ending, preposition)\n */\nexport interface GrammaticalMarker {\n form: string; // The actual text (を, に, to, 的)\n role: SemanticRole; // What semantic role it marks\n position: AdpositionType; // Where it appears\n required: boolean; // Is it mandatory?\n alternatives?: string[]; // Alternative forms (e.g., 을/를 in Korean)\n}\n\n/**\n * Metadata for preserving line structure during translation.\n * Tracks indentation and blank lines so output maintains the same format.\n */\nexport interface LineMetadata {\n /** Trimmed line content (empty string for blank lines) */\n content: string;\n /** Leading whitespace (tabs/spaces) from original line */\n originalIndent: string;\n /** True if the line was empty or whitespace-only */\n isBlank: boolean;\n}\n\n// =============================================================================\n// Language Profile\n// =============================================================================\n\n/**\n * Complete grammatical profile for a language\n * This captures the essential typological features needed for transformation\n */\nexport interface LanguageProfile {\n code: string; // ISO 639-1 code\n name: string; // Native name\n\n // Typological features\n wordOrder: WordOrder;\n adpositionType: AdpositionType;\n morphology: MorphologyType;\n direction: 'ltr' | 'rtl';\n\n // Grammatical markers for each semantic role\n markers: GrammaticalMarker[];\n\n // Role ordering - which semantic roles come in what order\n // E.g., Japanese: ['patient', 'source', 'destination', 'action']\n // E.g., English: ['action', 'patient', 'source', 'destination']\n canonicalOrder: SemanticRole[];\n\n // Special rules\n rules?: GrammarRule[];\n}\n\n/**\n * Pattern for transforming hyperscript structures\n */\nexport interface GrammarRule {\n name: string;\n description: string;\n\n // Pattern matching (in canonical English form)\n match: PatternMatcher;\n\n // How to transform for this language\n transform: PatternTransform;\n\n // Priority (higher = checked first)\n priority: number;\n}\n\n/**\n * Matches a hyperscript pattern\n */\nexport interface PatternMatcher {\n // Command type(s) this matches\n commands?: string[];\n\n // Required semantic roles\n requiredRoles: SemanticRole[];\n\n // Optional roles\n optionalRoles?: SemanticRole[];\n\n // Custom predicate for complex matching\n predicate?: (parsed: ParsedStatement) => boolean;\n}\n\n/**\n * Defines how to transform a matched pattern\n */\nexport interface PatternTransform {\n // Reorder roles for target language\n roleOrder: SemanticRole[];\n\n // Insert markers between roles\n insertMarkers?: boolean;\n\n // Custom transformation function\n custom?: (parsed: ParsedStatement, profile: LanguageProfile) => string;\n}\n\n// =============================================================================\n// Parsed Structures\n// =============================================================================\n\n/**\n * A parsed hyperscript statement broken into semantic components\n */\nexport interface ParsedStatement {\n type: 'event-handler' | 'command' | 'conditional' | 'loop';\n roles: Map<SemanticRole, ParsedElement>;\n original: string;\n}\n\n/**\n * A single element with its semantic role\n */\nexport interface ParsedElement {\n role: SemanticRole;\n value: string; // Original English value\n translated?: string; // Translated value\n isSelector?: boolean; // CSS selector (don't translate)\n isLiteral?: boolean; // Literal value (don't translate)\n}\n\n// =============================================================================\n// Universal Pattern Templates\n// =============================================================================\n\n/**\n * Universal templates for common hyperscript patterns\n * These define the semantic structure independent of surface form\n */\nexport const UNIVERSAL_PATTERNS = {\n // on click increment #count\n eventIncrement: {\n name: 'event-increment',\n roles: ['event', 'action', 'patient'] as SemanticRole[],\n english: 'on {event} {action} {patient}',\n },\n\n // put X into Y\n putInto: {\n name: 'put-into',\n roles: ['action', 'patient', 'destination'] as SemanticRole[],\n english: '{action} {patient} into {destination}',\n },\n\n // add .class to element\n addTo: {\n name: 'add-to',\n roles: ['action', 'patient', 'destination'] as SemanticRole[],\n english: '{action} {patient} to {destination}',\n },\n\n // toggle .class on element\n toggleOn: {\n name: 'toggle-on',\n roles: ['action', 'patient', 'destination'] as SemanticRole[],\n english: '{action} {patient} on {destination}',\n },\n\n // wait 2 seconds\n waitDuration: {\n name: 'wait-duration',\n roles: ['action', 'quantity'] as SemanticRole[],\n english: '{action} {quantity}',\n },\n\n // if condition then ... end\n conditional: {\n name: 'conditional',\n roles: ['action', 'condition'] as SemanticRole[],\n english: '{action} {condition} then ... end',\n },\n\n // fetch URL as type\n fetchAs: {\n name: 'fetch-as',\n roles: ['action', 'source', 'method'] as SemanticRole[],\n english: '{action} {source} as {method}',\n },\n\n // show element with animation\n showWith: {\n name: 'show-with',\n roles: ['action', 'patient', 'style'] as SemanticRole[],\n english: '{action} {patient} with {style}',\n },\n\n // transition property over duration\n transitionOver: {\n name: 'transition-over',\n roles: ['action', 'patient', 'duration'] as SemanticRole[],\n english: '{action} {patient} over {duration}',\n },\n} as const;\n\n// =============================================================================\n// Language Family Defaults\n// =============================================================================\n\n/**\n * Default profiles for major language families\n * Individual languages inherit and override these\n */\nexport const LANGUAGE_FAMILY_DEFAULTS: Record<string, Partial<LanguageProfile>> = {\n // Germanic (English, German, Dutch)\n germanic: {\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n canonicalOrder: [\n 'action',\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n ],\n },\n\n // Romance (Spanish, French, Italian, Portuguese)\n romance: {\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n canonicalOrder: [\n 'action',\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n ],\n },\n\n // Japonic (Japanese)\n japonic: {\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n canonicalOrder: [\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n 'action',\n ],\n },\n\n // Koreanic (Korean)\n koreanic: {\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n canonicalOrder: [\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n 'action',\n ],\n },\n\n // Turkic (Turkish, Azerbaijani)\n turkic: {\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n canonicalOrder: [\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n 'action',\n ],\n },\n\n // Sinitic (Chinese, Cantonese)\n sinitic: {\n wordOrder: 'SVO', // Topic-prominent, flexible\n adpositionType: 'preposition',\n morphology: 'isolating',\n direction: 'ltr',\n canonicalOrder: [\n 'action',\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n ],\n },\n\n // Semitic (Arabic, Hebrew)\n semitic: {\n wordOrder: 'VSO',\n adpositionType: 'preposition',\n morphology: 'fusional', // Root-pattern system\n direction: 'rtl',\n canonicalOrder: [\n 'action',\n 'agent',\n 'patient',\n 'destination',\n 'source',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n ],\n },\n\n // Austronesian (Indonesian, Tagalog)\n austronesian: {\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n canonicalOrder: [\n 'action',\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n ],\n },\n\n // Quechuan (Quechua)\n quechuan: {\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'agglutinative', // Actually polysynthetic but simplified\n direction: 'ltr',\n canonicalOrder: [\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n 'action',\n ],\n },\n\n // Bantu (Swahili)\n bantu: {\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n canonicalOrder: [\n 'action',\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n ],\n },\n};\n\n// =============================================================================\n// Transformation Utilities\n// =============================================================================\n\n/**\n * Reorder semantic roles according to target language.\n * Includes a safety net to append any roles present in input\n * but missing from the target order, preventing data loss.\n */\nexport function reorderRoles(\n roles: Map<SemanticRole, ParsedElement>,\n targetOrder: SemanticRole[]\n): ParsedElement[] {\n const result: ParsedElement[] = [];\n const usedRoles = new Set<SemanticRole>();\n\n // 1. Add roles that are explicitly in the canonical order\n for (const role of targetOrder) {\n const element = roles.get(role);\n if (element) {\n result.push(element);\n usedRoles.add(role);\n }\n }\n\n // 2. Safety Net: Append any roles present in input but missing from target order\n // This prevents data loss (e.g., if 'manner' or 'instrument' isn't in the profile)\n for (const [role, element] of roles) {\n if (!usedRoles.has(role)) {\n result.push(element);\n }\n }\n\n return result;\n}\n\n/**\n * Insert grammatical markers between elements\n */\nexport function insertMarkers(\n elements: ParsedElement[],\n markers: GrammaticalMarker[],\n adpositionType: AdpositionType\n): string[] {\n const result: string[] = [];\n\n for (const element of elements) {\n const marker = markers.find(m => m.role === element.role);\n\n if (marker) {\n if (adpositionType === 'preposition') {\n // Marker before element: \"to element\"\n if (marker.form) result.push(marker.form);\n result.push(element.translated || element.value);\n } else if (adpositionType === 'postposition') {\n // Marker after element: \"element を\"\n result.push(element.translated || element.value);\n if (marker.form) result.push(marker.form);\n } else {\n result.push(element.translated || element.value);\n }\n } else {\n result.push(element.translated || element.value);\n }\n }\n\n return result;\n}\n\n/**\n * Intelligently joins tokens, handling agglutinative suffixes and prefixes.\n *\n * Rules:\n * 1. If a token ends with '-' (prefix marker), no space after it\n * 2. If a token starts with '-' (suffix marker), no space before it\n * 3. Removes the hyphen indicators from the final output\n *\n * Examples:\n * - ['#count', '-ta'] → '#countta' (Quechua accusative suffix)\n * - ['بـ-', 'الماوس'] → 'بـالماوس' (Arabic prefix attachment)\n * - ['value', 'を'] → 'value を' (Japanese particle, normal spacing)\n */\nexport function joinTokens(tokens: string[]): string {\n if (tokens.length === 0) return '';\n\n let result = '';\n\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n const nextToken = tokens[i + 1];\n\n // Check if current token is a prefix (ends with -)\n const isPrefix = token.endsWith('-');\n // Check if current token is a suffix (starts with -)\n const isSuffix = token.startsWith('-');\n\n // Get the display form (strip hyphen markers)\n let displayToken = token;\n if (isPrefix) displayToken = token.slice(0, -1);\n if (isSuffix) displayToken = token.substring(1);\n\n result += displayToken;\n\n // Determine if we need a space before the next token\n if (nextToken) {\n const nextIsSuffix = nextToken.startsWith('-');\n\n // Don't add space if:\n // - Current token is a prefix (ends with -)\n // - Next token is a suffix (starts with -)\n if (!isPrefix && !nextIsSuffix) {\n result += ' ';\n }\n }\n }\n\n return result;\n}\n\n/**\n * Transform a parsed statement to target language\n */\nexport function transformStatement(\n parsed: ParsedStatement,\n _sourceProfile: LanguageProfile,\n targetProfile: LanguageProfile\n): string {\n // 1. Reorder roles for target language\n const reordered = reorderRoles(parsed.roles, targetProfile.canonicalOrder);\n\n // 2. Insert grammatical markers\n const withMarkers = insertMarkers(reordered, targetProfile.markers, targetProfile.adpositionType);\n\n // 3. Join with intelligent spacing for agglutinative languages\n // (handles suffixes like -ta, prefixes like بـ-, etc.)\n return joinTokens(withMarkers);\n}\n","/**\n * Language Profiles Index\n *\n * Concrete implementations of LanguageProfile for supported languages.\n * Each profile inherits from a language family default and adds\n * language-specific markers and rules.\n */\n\nimport type { LanguageProfile } from '../types';\n\n// =============================================================================\n// English (Reference Language)\n// =============================================================================\n\nexport const englishProfile: LanguageProfile = {\n code: 'en',\n name: 'English',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n canonicalOrder: [\n 'event',\n 'action',\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n ],\n\n markers: [\n { form: 'on', role: 'event', position: 'preposition', required: true },\n { form: 'to', role: 'destination', position: 'preposition', required: false },\n { form: 'into', role: 'destination', position: 'preposition', required: false },\n { form: 'from', role: 'source', position: 'preposition', required: false },\n { form: 'with', role: 'style', position: 'preposition', required: false },\n { form: 'by', role: 'quantity', position: 'preposition', required: false },\n { form: 'as', role: 'method', position: 'preposition', required: false },\n { form: 'over', role: 'duration', position: 'preposition', required: false },\n { form: 'for', role: 'duration', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Japanese (SOV, Postpositions)\n// =============================================================================\n\nexport const japaneseProfile: LanguageProfile = {\n code: 'ja',\n name: '日本語',\n\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n\n // Japanese: Object comes before verb, markers follow nouns\n // \"on click increment #count\" → \"#count を クリック で 増加\"\n canonicalOrder: ['patient', 'event', 'action'],\n\n markers: [\n // Particles (postpositions)\n { form: 'を', role: 'patient', position: 'postposition', required: true },\n { form: 'に', role: 'destination', position: 'postposition', required: true },\n { form: 'から', role: 'source', position: 'postposition', required: true },\n { form: 'で', role: 'event', position: 'postposition', required: true },\n { form: 'で', role: 'style', position: 'postposition', required: false },\n { form: 'と', role: 'style', position: 'postposition', required: false },\n { form: 'へ', role: 'destination', position: 'postposition', required: false },\n ],\n\n rules: [\n {\n name: 'event-handler',\n description: 'Transform event handlers to Japanese SOV order',\n priority: 100,\n match: {\n commands: ['on'],\n requiredRoles: ['event', 'action'],\n optionalRoles: ['patient'],\n },\n transform: {\n // #count を クリック で 増加\n roleOrder: ['patient', 'event', 'action'],\n insertMarkers: true,\n },\n },\n {\n name: 'put-into',\n description: 'Transform put X into Y to Japanese order',\n priority: 90,\n match: {\n commands: ['put', '置く'],\n requiredRoles: ['action', 'patient', 'destination'],\n },\n transform: {\n // X を Y に 置く\n roleOrder: ['patient', 'destination', 'action'],\n insertMarkers: true,\n },\n },\n ],\n};\n\n// =============================================================================\n// Korean (SOV, Postpositions - similar to Japanese)\n// =============================================================================\n\nexport const koreanProfile: LanguageProfile = {\n code: 'ko',\n name: '한국어',\n\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n\n canonicalOrder: ['patient', 'event', 'action'],\n\n markers: [\n // Korean particles (with vowel harmony variants)\n { form: '를', role: 'patient', position: 'postposition', required: true, alternatives: ['을'] },\n { form: '에', role: 'destination', position: 'postposition', required: true },\n { form: '에서', role: 'source', position: 'postposition', required: true },\n {\n form: '로',\n role: 'style',\n position: 'postposition',\n required: false,\n alternatives: ['으로'],\n },\n { form: '와', role: 'style', position: 'postposition', required: false, alternatives: ['과'] },\n {\n form: '로',\n role: 'method',\n position: 'postposition',\n required: false,\n alternatives: ['으로'],\n }, // \"as\" - same as instrument\n ],\n\n rules: [\n {\n name: 'event-handler',\n description: 'Transform event handlers to Korean SOV order',\n priority: 100,\n match: {\n commands: ['on'],\n requiredRoles: ['event', 'action'],\n },\n transform: {\n roleOrder: ['patient', 'event', 'action'],\n insertMarkers: true,\n },\n },\n ],\n};\n\n// =============================================================================\n// Chinese (SVO, Topic-Prominent)\n// =============================================================================\n\nexport const chineseProfile: LanguageProfile = {\n code: 'zh',\n name: '中文',\n\n wordOrder: 'SVO', // But topic-prominent allows flexibility\n adpositionType: 'preposition',\n morphology: 'isolating',\n direction: 'ltr',\n\n // Chinese typically uses topic-comment structure\n // Can front the object for emphasis: \"#count 在 点击时 增加\"\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: '当', role: 'event', position: 'preposition', required: true },\n { form: '时', role: 'event', position: 'postposition', required: true }, // Circumfix with 当\n { form: '把', role: 'patient', position: 'preposition', required: false }, // BA construction\n { form: '到', role: 'destination', position: 'preposition', required: false },\n { form: '从', role: 'source', position: 'preposition', required: false },\n { form: '用', role: 'style', position: 'preposition', required: false },\n { form: '的', role: 'method', position: 'postposition', required: false },\n ],\n\n rules: [\n {\n name: 'event-handler-standard',\n description: 'Standard event handler: 当 X 时 Y',\n priority: 100,\n match: {\n // Don't match commands - match by statement type having event role\n requiredRoles: ['event', 'action'],\n },\n transform: {\n // 当 点击 时 增加 #count\n roleOrder: ['event', 'action', 'patient'],\n insertMarkers: true,\n custom: (parsed, _profile) => {\n // Handle 当...时 circumfix\n const event = parsed.roles.get('event');\n const action = parsed.roles.get('action');\n const patient = parsed.roles.get('patient');\n\n const parts = ['当', event?.translated || event?.value, '时'];\n parts.push(action?.translated || action?.value || '');\n if (patient) {\n parts.push(patient.translated || patient.value);\n }\n\n return parts.filter(Boolean).join(' ');\n },\n },\n },\n {\n name: 'ba-construction',\n description: 'BA construction for object-fronting: 把 X Y',\n priority: 80,\n match: {\n commands: ['put', 'set', 'move'],\n requiredRoles: ['action', 'patient', 'destination'],\n },\n transform: {\n // 把 X 放 到 Y\n roleOrder: ['patient', 'action', 'destination'],\n insertMarkers: true,\n },\n },\n ],\n};\n\n// =============================================================================\n// Arabic (VSO, RTL)\n// =============================================================================\n\nexport const arabicProfile: LanguageProfile = {\n code: 'ar',\n name: 'العربية',\n\n wordOrder: 'VSO',\n adpositionType: 'preposition',\n morphology: 'fusional', // Root-pattern morphology\n direction: 'rtl',\n\n // Arabic VSO: Verb first, then subject, then object\n canonicalOrder: ['action', 'agent', 'patient', 'destination', 'source'],\n\n markers: [\n { form: 'عند', role: 'event', position: 'preposition', required: true },\n { form: 'إلى', role: 'destination', position: 'preposition', required: false },\n { form: 'في', role: 'destination', position: 'preposition', required: false },\n { form: 'من', role: 'source', position: 'preposition', required: false },\n // بـ- notation: trailing hyphen indicates prefix that attaches without space\n { form: 'بـ-', role: 'style', position: 'preposition', required: false },\n { form: 'مع', role: 'style', position: 'preposition', required: false },\n // كـ- notation: \"as/like\" prefix for manner\n { form: 'كـ-', role: 'method', position: 'preposition', required: false },\n ],\n\n rules: [\n {\n name: 'event-handler-vso',\n description: 'VSO event handler: VERB TARGET عند EVENT',\n priority: 100,\n match: {\n commands: ['on'],\n requiredRoles: ['event', 'action'],\n },\n transform: {\n // زِد #count عند النقر (increment #count on click)\n roleOrder: ['action', 'patient', 'event'],\n insertMarkers: true,\n },\n },\n ],\n};\n\n// =============================================================================\n// Turkish (SOV, Agglutinative)\n// =============================================================================\n\nexport const turkishProfile: LanguageProfile = {\n code: 'tr',\n name: 'Türkçe',\n\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n\n canonicalOrder: ['patient', 'event', 'action'],\n\n markers: [\n // Turkish case suffixes (simplified - real Turkish has vowel harmony)\n {\n form: '-i',\n role: 'patient',\n position: 'postposition',\n required: true,\n alternatives: ['-ı', '-u', '-ü'],\n },\n {\n form: '-e',\n role: 'destination',\n position: 'postposition',\n required: true,\n alternatives: ['-a'],\n },\n {\n form: '-den',\n role: 'source',\n position: 'postposition',\n required: true,\n alternatives: ['-dan'],\n },\n { form: '-de', role: 'event', position: 'postposition', required: true, alternatives: ['-da'] },\n { form: 'ile', role: 'style', position: 'postposition', required: false },\n { form: 'olarak', role: 'method', position: 'postposition', required: false },\n ],\n\n rules: [\n {\n name: 'event-handler-sov',\n description: 'SOV event handler',\n priority: 100,\n match: {\n commands: ['on'],\n requiredRoles: ['event', 'action'],\n },\n transform: {\n roleOrder: ['patient', 'event', 'action'],\n insertMarkers: true,\n },\n },\n ],\n};\n\n// =============================================================================\n// Spanish (SVO, Romance)\n// =============================================================================\n\nexport const spanishProfile: LanguageProfile = {\n code: 'es',\n name: 'Español',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n // Event: \"En hacer clic\" or \"Al hacer clic\"\n { form: 'en', role: 'event', position: 'preposition', required: true },\n // Destination: Prioritize 'a' over 'en' to avoid collision with event marker\n { form: 'a', role: 'destination', position: 'preposition', required: false },\n { form: 'hacia', role: 'destination', position: 'preposition', required: false }, // \"Towards\"\n { form: 'de', role: 'source', position: 'preposition', required: false },\n { form: 'con', role: 'style', position: 'preposition', required: false },\n { form: 'por', role: 'quantity', position: 'preposition', required: false },\n { form: 'como', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// German (SVO, Germanic)\n// =============================================================================\n\nexport const germanProfile: LanguageProfile = {\n code: 'de',\n name: 'Deutsch',\n\n wordOrder: 'SVO', // V2 in main clauses, but SVO for our purposes\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'bei', role: 'event', position: 'preposition', required: true },\n { form: 'zu', role: 'destination', position: 'preposition', required: false },\n { form: 'in', role: 'destination', position: 'preposition', required: false },\n { form: 'von', role: 'source', position: 'preposition', required: false },\n { form: 'aus', role: 'source', position: 'preposition', required: false },\n { form: 'mit', role: 'style', position: 'preposition', required: false },\n { form: 'um', role: 'quantity', position: 'preposition', required: false },\n { form: 'als', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// French (SVO, Romance)\n// =============================================================================\n\nexport const frenchProfile: LanguageProfile = {\n code: 'fr',\n name: 'Français',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'sur', role: 'event', position: 'preposition', required: true },\n { form: 'à', role: 'destination', position: 'preposition', required: false },\n { form: 'dans', role: 'destination', position: 'preposition', required: false },\n { form: 'de', role: 'source', position: 'preposition', required: false },\n { form: 'avec', role: 'style', position: 'preposition', required: false },\n { form: 'par', role: 'quantity', position: 'preposition', required: false },\n { form: 'comme', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Portuguese (SVO, Romance)\n// =============================================================================\n\nexport const portugueseProfile: LanguageProfile = {\n code: 'pt',\n name: 'Português',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'em', role: 'event', position: 'preposition', required: true },\n { form: 'para', role: 'destination', position: 'preposition', required: false },\n { form: 'em', role: 'destination', position: 'preposition', required: false },\n { form: 'de', role: 'source', position: 'preposition', required: false },\n { form: 'com', role: 'style', position: 'preposition', required: false },\n { form: 'por', role: 'quantity', position: 'preposition', required: false },\n { form: 'como', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Indonesian (SVO, Austronesian)\n// =============================================================================\n\nexport const indonesianProfile: LanguageProfile = {\n code: 'id',\n name: 'Bahasa Indonesia',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'pada', role: 'event', position: 'preposition', required: true },\n { form: 'ke', role: 'destination', position: 'preposition', required: false },\n { form: 'dari', role: 'source', position: 'preposition', required: false },\n { form: 'dengan', role: 'style', position: 'preposition', required: false },\n { form: 'sebagai', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Quechua (SOV, Quechuan)\n// =============================================================================\n\nexport const quechuaProfile: LanguageProfile = {\n code: 'qu',\n name: 'Runasimi',\n\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'agglutinative', // Actually polysynthetic\n direction: 'ltr',\n\n canonicalOrder: ['patient', 'source', 'destination', 'event', 'action'],\n\n markers: [\n { form: '-ta', role: 'patient', position: 'postposition', required: true },\n { form: '-man', role: 'destination', position: 'postposition', required: true },\n { form: '-manta', role: 'source', position: 'postposition', required: true },\n { form: '-pi', role: 'event', position: 'postposition', required: true },\n { form: '-wan', role: 'style', position: 'postposition', required: false },\n { form: 'hina', role: 'method', position: 'postposition', required: false }, // \"as/like\"\n ],\n};\n\n// =============================================================================\n// Swahili (SVO, Bantu)\n// =============================================================================\n\nexport const swahiliProfile: LanguageProfile = {\n code: 'sw',\n name: 'Kiswahili',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'kwenye', role: 'event', position: 'preposition', required: true },\n { form: 'kwa', role: 'destination', position: 'preposition', required: false },\n { form: 'kutoka', role: 'source', position: 'preposition', required: false },\n { form: 'na', role: 'style', position: 'preposition', required: false },\n { form: 'kama', role: 'method', position: 'preposition', required: false }, // \"as/like\"\n ],\n};\n\n// =============================================================================\n// Bengali (SOV, Postpositions - similar to Japanese/Korean)\n// =============================================================================\n\nexport const bengaliProfile: LanguageProfile = {\n code: 'bn',\n name: 'বাংলা',\n\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n\n // Bengali: Object comes before verb, postpositions follow nouns\n // \"on click increment #count\" → \"#count কে ক্লিক এ বৃদ্ধি\"\n canonicalOrder: ['patient', 'event', 'action'],\n\n markers: [\n // Postpositions\n { form: 'কে', role: 'patient', position: 'postposition', required: true },\n { form: 'তে', role: 'destination', position: 'postposition', required: true },\n { form: 'এ', role: 'event', position: 'postposition', required: true },\n { form: 'থেকে', role: 'source', position: 'postposition', required: true },\n { form: 'দিয়ে', role: 'style', position: 'postposition', required: false },\n { form: 'জন্য', role: 'duration', position: 'postposition', required: false },\n ],\n\n rules: [\n {\n name: 'event-handler',\n description: 'Transform event handlers to Bengali SOV order',\n priority: 100,\n match: {\n commands: ['on'],\n requiredRoles: ['event', 'action'],\n optionalRoles: ['patient'],\n },\n transform: {\n // #count কে ক্লিক এ বৃদ্ধি\n roleOrder: ['patient', 'event', 'action'],\n insertMarkers: true,\n },\n },\n ],\n};\n\n// =============================================================================\n// Italian (SVO, Romance)\n// =============================================================================\n\nexport const italianProfile: LanguageProfile = {\n code: 'it',\n name: 'Italiano',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'su', role: 'event', position: 'preposition', required: true },\n { form: 'in', role: 'destination', position: 'preposition', required: false },\n { form: 'a', role: 'destination', position: 'preposition', required: false },\n { form: 'da', role: 'source', position: 'preposition', required: false },\n { form: 'di', role: 'source', position: 'preposition', required: false },\n { form: 'con', role: 'style', position: 'preposition', required: false },\n { form: 'come', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Russian (SVO, Slavic)\n// =============================================================================\n\nexport const russianProfile: LanguageProfile = {\n code: 'ru',\n name: 'Русский',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'при', role: 'event', position: 'preposition', required: true },\n { form: 'в', role: 'destination', position: 'preposition', required: false },\n { form: 'на', role: 'destination', position: 'preposition', required: false },\n { form: 'к', role: 'destination', position: 'preposition', required: false },\n { form: 'из', role: 'source', position: 'preposition', required: false },\n { form: 'от', role: 'source', position: 'preposition', required: false },\n { form: 'с', role: 'source', position: 'preposition', required: false },\n { form: 'с', role: 'style', position: 'preposition', required: false },\n { form: 'со', role: 'style', position: 'preposition', required: false },\n { form: 'как', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Ukrainian (SVO, Slavic)\n// =============================================================================\n\nexport const ukrainianProfile: LanguageProfile = {\n code: 'uk',\n name: 'Українська',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'при', role: 'event', position: 'preposition', required: true },\n { form: 'в', role: 'destination', position: 'preposition', required: false },\n { form: 'на', role: 'destination', position: 'preposition', required: false },\n { form: 'до', role: 'destination', position: 'preposition', required: false },\n { form: 'з', role: 'source', position: 'preposition', required: false },\n { form: 'від', role: 'source', position: 'preposition', required: false },\n { form: 'із', role: 'source', position: 'preposition', required: false },\n { form: 'з', role: 'style', position: 'preposition', required: false },\n { form: 'із', role: 'style', position: 'preposition', required: false },\n { form: 'як', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Vietnamese (SVO, Isolating)\n// =============================================================================\n\nexport const vietnameseProfile: LanguageProfile = {\n code: 'vi',\n name: 'Tiếng Việt',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'isolating',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'khi', role: 'event', position: 'preposition', required: true },\n { form: 'vào', role: 'destination', position: 'preposition', required: false },\n { form: 'cho', role: 'destination', position: 'preposition', required: false },\n { form: 'đến', role: 'destination', position: 'preposition', required: false },\n { form: 'từ', role: 'source', position: 'preposition', required: false },\n { form: 'khỏi', role: 'source', position: 'preposition', required: false },\n { form: 'với', role: 'style', position: 'preposition', required: false },\n { form: 'như', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Hindi (SOV, Postpositions)\n// =============================================================================\n\nexport const hindiProfile: LanguageProfile = {\n code: 'hi',\n name: 'हिन्दी',\n\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n // Hindi: Object comes before verb, postpositions follow nouns\n // \"on click increment #count\" → \"#count को क्लिक पर बढ़ाएं\"\n canonicalOrder: ['patient', 'event', 'action'],\n\n markers: [\n { form: 'को', role: 'patient', position: 'postposition', required: true },\n { form: 'में', role: 'destination', position: 'postposition', required: true },\n { form: 'पर', role: 'destination', position: 'postposition', required: false },\n { form: 'पर', role: 'event', position: 'postposition', required: true },\n { form: 'से', role: 'source', position: 'postposition', required: true },\n { form: 'से', role: 'style', position: 'postposition', required: false },\n { form: 'साथ', role: 'style', position: 'postposition', required: false },\n { form: 'के रूप में', role: 'method', position: 'postposition', required: false },\n ],\n\n rules: [\n {\n name: 'event-handler',\n description: 'Transform event handlers to Hindi SOV order',\n priority: 100,\n match: {\n commands: ['on'],\n requiredRoles: ['event', 'action'],\n optionalRoles: ['patient'],\n },\n transform: {\n // #count को क्लिक पर बढ़ाएं\n roleOrder: ['patient', 'event', 'action'],\n insertMarkers: true,\n },\n },\n ],\n};\n\n// =============================================================================\n// Tagalog (VSO, Prepositions)\n// =============================================================================\n\nexport const tagalogProfile: LanguageProfile = {\n code: 'tl',\n name: 'Tagalog',\n\n wordOrder: 'VSO',\n adpositionType: 'preposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n\n // Tagalog VSO: Verb first, then subject, then object\n canonicalOrder: ['action', 'agent', 'patient', 'destination', 'source'],\n\n markers: [\n { form: 'kapag', role: 'event', position: 'preposition', required: true },\n { form: 'sa', role: 'destination', position: 'preposition', required: false },\n { form: 'mula sa', role: 'source', position: 'preposition', required: false },\n { form: 'nang', role: 'style', position: 'preposition', required: false },\n { form: 'bilang', role: 'method', position: 'preposition', required: false },\n ],\n\n rules: [\n {\n name: 'event-handler-vso',\n description: 'VSO event handler: VERB TARGET kapag EVENT',\n priority: 100,\n match: {\n commands: ['on'],\n requiredRoles: ['event', 'action'],\n },\n transform: {\n // palitan #count kapag click (toggle #count on click)\n roleOrder: ['action', 'patient', 'event'],\n insertMarkers: true,\n },\n },\n ],\n};\n\n// =============================================================================\n// Thai (SVO, Isolating, No Spaces)\n// =============================================================================\n\nexport const thaiProfile: LanguageProfile = {\n code: 'th',\n name: 'ไทย',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'isolating',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'เมื่อ', role: 'event', position: 'preposition', required: true },\n { form: 'ใน', role: 'destination', position: 'preposition', required: false },\n { form: 'ไปยัง', role: 'destination', position: 'preposition', required: false },\n { form: 'จาก', role: 'source', position: 'preposition', required: false },\n { form: 'ด้วย', role: 'style', position: 'preposition', required: false },\n { form: 'เป็น', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Polish (SVO, Fusional, Imperative)\n// =============================================================================\n\nexport const polishProfile: LanguageProfile = {\n code: 'pl',\n name: 'Polski',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'gdy', role: 'event', position: 'preposition', required: true },\n { form: 'przy', role: 'event', position: 'preposition', required: false },\n { form: 'do', role: 'destination', position: 'preposition', required: false },\n { form: 'w', role: 'destination', position: 'preposition', required: false },\n { form: 'na', role: 'destination', position: 'preposition', required: false },\n { form: 'z', role: 'source', position: 'preposition', required: false },\n { form: 'od', role: 'source', position: 'preposition', required: false },\n { form: 'ze', role: 'source', position: 'preposition', required: false },\n { form: 'z', role: 'style', position: 'preposition', required: false },\n { form: 'ze', role: 'style', position: 'preposition', required: false },\n { form: 'jako', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Profile Registry\n// =============================================================================\n\nexport const profiles: Record<string, LanguageProfile> = {\n en: englishProfile,\n ja: japaneseProfile,\n ko: koreanProfile,\n zh: chineseProfile,\n ar: arabicProfile,\n tr: turkishProfile,\n es: spanishProfile,\n de: germanProfile,\n fr: frenchProfile,\n pt: portugueseProfile,\n id: indonesianProfile,\n qu: quechuaProfile,\n sw: swahiliProfile,\n bn: bengaliProfile,\n // New profiles\n it: italianProfile,\n ru: russianProfile,\n uk: ukrainianProfile,\n vi: vietnameseProfile,\n hi: hindiProfile,\n tl: tagalogProfile,\n th: thaiProfile,\n pl: polishProfile,\n};\n\nexport function getProfile(locale: string): LanguageProfile | undefined {\n return profiles[locale];\n}\n\nexport function getSupportedLocales(): string[] {\n return Object.keys(profiles);\n}\n","/**\n * Direct Language-Pair Mappings\n *\n * Enables translation between language pairs without English pivot.\n * This reduces error compounding and provides more natural translations\n * for closely related languages or those with shared vocabulary.\n *\n * Currently supported pairs:\n * - Japanese ↔ Chinese (shared Kanji concepts)\n * - Spanish ↔ Portuguese (Romance language mutual intelligibility)\n * - Korean ↔ Japanese (SOV grammar similarity)\n */\n\nimport type { Dictionary } from '../types';\nimport { ja } from '../dictionaries/ja';\nimport { zh } from '../dictionaries/zh';\nimport { ko } from '../dictionaries/ko';\n// Note: es and pt use hand-crafted mappings for better quality\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport interface DirectMapping {\n /** Source language code */\n source: string;\n /** Target language code */\n target: string;\n /** Word mappings: source word -> target word */\n words: Record<string, string>;\n /** Category mappings for structured translation */\n categories?: Record<string, Record<string, string>>;\n}\n\n// =============================================================================\n// Utility Functions\n// =============================================================================\n\n/**\n * Create reverse mapping from an existing mapping\n */\nfunction reverseMapping(mapping: DirectMapping): DirectMapping {\n const reversedWords: Record<string, string> = {};\n for (const [source, target] of Object.entries(mapping.words)) {\n reversedWords[target] = source;\n }\n\n const reversedCategories: Record<string, Record<string, string>> = {};\n if (mapping.categories) {\n for (const [category, words] of Object.entries(mapping.categories)) {\n reversedCategories[category] = {};\n for (const [source, target] of Object.entries(words)) {\n reversedCategories[category][target] = source;\n }\n }\n }\n\n const result: DirectMapping = {\n source: mapping.target,\n target: mapping.source,\n words: reversedWords,\n };\n\n if (Object.keys(reversedCategories).length > 0) {\n result.categories = reversedCategories;\n }\n\n return result;\n}\n\n/**\n * Build direct mapping from two dictionaries via English keys\n */\nfunction buildMappingFromDictionaries(\n sourceDict: Dictionary,\n targetDict: Dictionary,\n sourceCode: string,\n targetCode: string\n): DirectMapping {\n const words: Record<string, string> = {};\n const categories: Record<string, Record<string, string>> = {};\n\n // Map each category\n for (const category of [\n 'commands',\n 'modifiers',\n 'events',\n 'logical',\n 'temporal',\n 'values',\n 'attributes',\n ] as const) {\n const sourceCategory = sourceDict[category] as Record<string, string> | undefined;\n const targetCategory = targetDict[category] as Record<string, string> | undefined;\n\n if (sourceCategory && targetCategory) {\n categories[category] = {};\n\n for (const [englishKey, sourceWord] of Object.entries(sourceCategory)) {\n const targetWord = targetCategory[englishKey];\n if (targetWord && sourceWord !== targetWord) {\n words[sourceWord] = targetWord;\n categories[category][sourceWord] = targetWord;\n }\n }\n }\n }\n\n return {\n source: sourceCode,\n target: targetCode,\n words,\n categories,\n };\n}\n\n// =============================================================================\n// Japanese ↔ Chinese Direct Mapping\n// =============================================================================\n\n/**\n * Japanese to Chinese mapping\n *\n * These languages share many concepts through Kanji/Hanzi,\n * making direct translation more accurate than pivot translation.\n */\nexport const jaZhMapping: DirectMapping = buildMappingFromDictionaries(ja, zh, 'ja', 'zh');\n\n/**\n * Chinese to Japanese mapping (reverse of jaZh)\n */\nexport const zhJaMapping: DirectMapping = reverseMapping(jaZhMapping);\n\n// =============================================================================\n// Korean ↔ Japanese Direct Mapping\n// =============================================================================\n\n/**\n * Korean to Japanese mapping\n *\n * Both are SOV languages with postposition particles,\n * sharing grammatical structure that enables more natural translation.\n */\nexport const koJaMapping: DirectMapping = buildMappingFromDictionaries(ko, ja, 'ko', 'ja');\n\n/**\n * Japanese to Korean mapping (reverse of koJa)\n */\nexport const jaKoMapping: DirectMapping = reverseMapping(koJaMapping);\n\n// =============================================================================\n// Spanish ↔ Portuguese Direct Mapping\n// =============================================================================\n\n/**\n * Spanish to Portuguese mapping\n *\n * These Romance languages have high mutual intelligibility,\n * with many cognates that translate directly.\n */\nexport const esPtMapping: DirectMapping = {\n source: 'es',\n target: 'pt',\n words: {\n // Commands - many are cognates\n en: 'em', // on (event)\n decir: 'dizer', // tell\n disparar: 'disparar', // trigger\n enviar: 'enviar', // send\n tomar: 'pegar', // take\n poner: 'colocar', // put\n establecer: 'definir', // set\n obtener: 'obter', // get\n agregar: 'adicionar', // add\n quitar: 'remover', // remove\n alternar: 'alternar', // toggle\n ocultar: 'esconder', // hide\n mostrar: 'mostrar', // show\n si: 'se', // if\n menos: 'a menos', // unless\n repetir: 'repetir', // repeat\n para: 'para', // for\n mientras: 'enquanto', // while\n hasta: 'até', // until\n continuar: 'continuar', // continue\n romper: 'parar', // break\n detener: 'parar', // halt\n esperar: 'esperar', // wait\n buscar: 'buscar', // fetch\n llamar: 'chamar', // call\n retornar: 'retornar', // return\n hacer: 'fazer', // make\n registrar: 'registrar', // log\n lanzar: 'lançar', // throw\n atrapar: 'capturar', // catch\n medir: 'medir', // measure\n transición: 'transição', // transition\n incrementar: 'incrementar', // increment\n decrementar: 'decrementar', // decrement\n vincular: 'vincular', // bind\n predeterminar: 'padrão', // default\n persistir: 'persistir', // persist\n ir: 'ir', // go\n copiar: 'copiar', // copy\n escoger: 'escolher', // pick\n intercambiar: 'trocar', // swap\n transformar: 'transformar', // morph\n añadir: 'anexar', // append\n salir: 'sair', // exit\n\n // Modifiers\n a: 'para', // to\n de: 'de', // from\n dentro: 'em', // into\n con: 'com', // with\n como: 'como', // as\n por: 'por', // by\n\n // Events\n clic: 'clique', // click\n cambio: 'mudança', // change\n entrada: 'entrada', // input\n envío: 'envio', // submit\n carga: 'carregar', // load\n enfoque: 'foco', // focus\n desenfoque: 'desfoque', // blur\n\n // Logical\n verdadero: 'verdadeiro', // true\n falso: 'falso', // false\n y: 'e', // and\n o: 'ou', // or\n no: 'não', // not\n es: 'é', // is\n\n // Temporal\n segundos: 'segundos', // seconds\n milisegundos: 'milissegundos', // milliseconds\n\n // Values\n nulo: 'nulo', // null\n indefinido: 'indefinido', // undefined\n vacío: 'vazio', // empty\n },\n categories: {\n commands: {\n en: 'em',\n decir: 'dizer',\n tomar: 'pegar',\n poner: 'colocar',\n establecer: 'definir',\n obtener: 'obter',\n agregar: 'adicionar',\n quitar: 'remover',\n ocultar: 'esconder',\n si: 'se',\n mientras: 'enquanto',\n hasta: 'até',\n romper: 'parar',\n detener: 'parar',\n llamar: 'chamar',\n hacer: 'fazer',\n lanzar: 'lançar',\n atrapar: 'capturar',\n escoger: 'escolher',\n intercambiar: 'trocar',\n añadir: 'anexar',\n salir: 'sair',\n },\n events: {\n clic: 'clique',\n cambio: 'mudança',\n carga: 'carregar',\n enfoque: 'foco',\n desenfoque: 'desfoque',\n },\n logical: {\n verdadero: 'verdadeiro',\n y: 'e',\n o: 'ou',\n no: 'não',\n es: 'é',\n },\n },\n};\n\n/**\n * Portuguese to Spanish mapping (reverse of esPt)\n */\nexport const ptEsMapping: DirectMapping = reverseMapping(esPtMapping);\n\n// =============================================================================\n// Mapping Registry\n// =============================================================================\n\n/**\n * Registry of direct translation pairs.\n * Key format: \"source->target\" (e.g., \"ja->zh\")\n */\nexport const directMappings: Map<string, DirectMapping> = new Map([\n // Japanese ↔ Chinese\n ['ja->zh', jaZhMapping],\n ['zh->ja', zhJaMapping],\n\n // Korean ↔ Japanese\n ['ko->ja', koJaMapping],\n ['ja->ko', jaKoMapping],\n\n // Spanish ↔ Portuguese\n ['es->pt', esPtMapping],\n ['pt->es', ptEsMapping],\n]);\n\n// =============================================================================\n// Public API\n// =============================================================================\n\n/**\n * Check if direct mapping exists for a language pair\n */\nexport function hasDirectMapping(source: string, target: string): boolean {\n return directMappings.has(`${source}->${target}`);\n}\n\n/**\n * Get direct mapping for a language pair\n */\nexport function getDirectMapping(source: string, target: string): DirectMapping | undefined {\n return directMappings.get(`${source}->${target}`);\n}\n\n/**\n * Translate a single word using direct mapping\n */\nexport function translateWordDirect(\n word: string,\n source: string,\n target: string\n): string | undefined {\n const mapping = getDirectMapping(source, target);\n if (!mapping) return undefined;\n return mapping.words[word];\n}\n\n/**\n * Get all supported direct translation pairs\n */\nexport function getSupportedDirectPairs(): Array<{ source: string; target: string }> {\n return Array.from(directMappings.keys()).map(key => {\n const [source, target] = key.split('->');\n return { source, target };\n });\n}\n","/**\n * Grammar-Aware Transformer\n *\n * Transforms hyperscript statements between languages using the\n * generalized grammar system. The key insight is that semantic\n * roles are universal - only their surface realization differs.\n */\n\nimport type {\n LanguageProfile,\n ParsedStatement,\n ParsedElement,\n SemanticRole,\n GrammarRule,\n LineMetadata,\n} from './types';\nimport { reorderRoles, insertMarkers, joinTokens } from './types';\nimport { getProfile, profiles } from './profiles';\nimport { hasDirectMapping, getDirectMapping } from './direct-mappings';\nimport { dictionaries } from '../dictionaries';\nimport { findInDictionary, translateFromEnglish } from '../types';\nimport { ENGLISH_MODIFIER_ROLES, CONDITIONAL_KEYWORDS, THEN_KEYWORDS } from '../constants';\n\n// =============================================================================\n// Compound Statement Handling\n// =============================================================================\n\n/**\n * English commands that can start a new statement.\n * Used to detect command boundaries in space-chained statements.\n */\nconst COMMAND_KEYWORDS = new Set([\n 'add',\n 'append',\n 'async',\n 'beep',\n 'break',\n 'call',\n 'continue',\n 'decrement',\n 'default',\n 'exit',\n 'fetch',\n 'for',\n 'get',\n 'go',\n 'halt',\n 'hide',\n 'if',\n 'increment',\n 'install',\n 'js',\n 'log',\n 'make',\n 'measure',\n 'morph',\n 'pick',\n 'process',\n 'push',\n 'put',\n 'remove',\n 'render',\n 'repeat',\n 'replace',\n 'return',\n 'send',\n 'set',\n 'settle',\n 'show',\n 'swap',\n 'take',\n 'tell',\n 'throw',\n 'toggle',\n 'transition',\n 'trigger',\n 'unless',\n 'wait',\n]);\n\n/**\n * Get all command keywords including translated ones for a locale.\n */\nfunction getCommandKeywordsForLocale(locale: string): Set<string> {\n const keywords = new Set(COMMAND_KEYWORDS);\n\n // Add translated command keywords from dictionaries\n const dict = dictionaries[locale];\n if (dict?.commands) {\n Object.values(dict.commands).forEach(cmd => {\n if (typeof cmd === 'string') {\n keywords.add(cmd.toLowerCase());\n }\n });\n }\n\n return keywords;\n}\n\n/**\n * Split a compound statement into parts at \"then\" boundaries, newlines,\n * AND command keyword boundaries.\n *\n * Example: \"on click wait 1s then increment #count then toggle .active\"\n * Returns: [\"on click wait 1s\", \"increment #count\", \"toggle .active\"]\n *\n * Example: \"on click\\n increment #count\\n toggle .highlight\"\n * Returns: [\"on click\", \"increment #count\", \"toggle .highlight\"]\n *\n * Example: \"wait 2s toggle .highlight\"\n * Returns: [\"wait 2s\", \"toggle .highlight\"]\n */\nfunction splitCompoundStatement(input: string, sourceLocale: string): string[] {\n // First, split on newlines (preserving non-empty lines)\n const lines = input\n .split(/\\n/)\n .map(line => line.trim())\n .filter(line => line.length > 0);\n\n // If we have multiple lines, treat each as a separate part\n // (but still need to handle \"then\" within each line)\n let parts: string[] = [];\n\n for (const line of lines) {\n const lineParts = splitOnThen(line, sourceLocale);\n // Further split each part on command boundaries\n for (const part of lineParts) {\n const commandParts = splitOnCommandBoundaries(part, sourceLocale);\n parts.push(...commandParts);\n }\n }\n\n return parts;\n}\n\n// =============================================================================\n// Line Structure Preservation\n// =============================================================================\n\n/**\n * Result of splitting with preserved line metadata.\n */\ninterface SplitWithMetadataResult {\n /** The processed parts (commands/statements) */\n parts: string[];\n /** Metadata for each original line (for reconstruction) */\n lineMetadata: LineMetadata[];\n /** Mapping from parts back to their original line indices */\n partToLineIndex: number[];\n}\n\n/**\n * Split a compound statement while preserving line structure metadata.\n * This tracks indentation and blank lines for reconstruction.\n */\nfunction splitCompoundStatementWithMetadata(\n input: string,\n sourceLocale: string\n): SplitWithMetadataResult {\n const rawLines = input.split('\\n');\n const lineMetadata: LineMetadata[] = [];\n const parts: string[] = [];\n const partToLineIndex: number[] = [];\n\n for (let lineIndex = 0; lineIndex < rawLines.length; lineIndex++) {\n const rawLine = rawLines[lineIndex];\n\n // Capture leading whitespace\n const indentMatch = rawLine.match(/^(\\s*)/);\n const originalIndent = indentMatch ? indentMatch[1] : '';\n const trimmed = rawLine.trim();\n\n lineMetadata.push({\n content: trimmed,\n originalIndent,\n isBlank: trimmed.length === 0,\n });\n\n if (trimmed.length > 0) {\n // Process non-empty lines for \"then\" and command boundaries\n const lineParts = splitOnThen(trimmed, sourceLocale);\n for (const part of lineParts) {\n const commandParts = splitOnCommandBoundaries(part, sourceLocale);\n for (const cmdPart of commandParts) {\n parts.push(cmdPart);\n partToLineIndex.push(lineIndex);\n }\n }\n }\n }\n\n return { parts, lineMetadata, partToLineIndex };\n}\n\n/**\n * Normalize indentation to consistent 4-space levels.\n * Preserves relative indentation structure while standardizing spacing.\n */\nfunction normalizeIndentation(lineMetadata: LineMetadata[]): string[] {\n // Find non-blank lines with indentation\n const indentedLines = lineMetadata.filter(m => !m.isBlank && m.originalIndent.length > 0);\n\n if (indentedLines.length === 0) {\n // No indented lines, return empty strings\n return lineMetadata.map(() => '');\n }\n\n // Find minimum non-zero indent (the base unit)\n const indentLengths = indentedLines.map(m => {\n // Convert tabs to 4 spaces for consistent measurement\n const normalized = m.originalIndent.replace(/\\t/g, ' ');\n return normalized.length;\n });\n const minIndent = Math.min(...indentLengths);\n const baseUnit = minIndent > 0 ? minIndent : 4;\n\n // Normalize each line's indentation\n return lineMetadata.map(meta => {\n if (meta.isBlank) {\n return ''; // Blank lines get no indentation\n }\n if (meta.originalIndent.length === 0) {\n return ''; // No original indent\n }\n\n // Convert tabs and calculate level\n const normalized = meta.originalIndent.replace(/\\t/g, ' ');\n const level = Math.round(normalized.length / baseUnit);\n return ' '.repeat(level); // 4 spaces per level\n });\n}\n\n/**\n * Reconstruct output with preserved line structure.\n * Maps transformed parts back to their original lines with proper indentation.\n */\nfunction reconstructWithLineStructure(\n transformedParts: string[],\n lineMetadata: LineMetadata[],\n partToLineIndex: number[],\n targetThen: string\n): string {\n // If there's only one non-blank line, simple case\n const nonBlankCount = lineMetadata.filter(m => !m.isBlank).length;\n if (nonBlankCount <= 1 && transformedParts.length <= 1) {\n const normalizedIndents = normalizeIndentation(lineMetadata);\n const result: string[] = [];\n\n for (let i = 0; i < lineMetadata.length; i++) {\n if (lineMetadata[i].isBlank) {\n result.push('');\n } else if (transformedParts.length > 0) {\n result.push(normalizedIndents[i] + transformedParts[0]);\n }\n }\n return result.join('\\n');\n }\n\n // Normalize indentation\n const normalizedIndents = normalizeIndentation(lineMetadata);\n\n // Group transformed parts by their original line\n const partsPerLine: Map<number, string[]> = new Map();\n for (let i = 0; i < transformedParts.length; i++) {\n const lineIdx = partToLineIndex[i];\n if (!partsPerLine.has(lineIdx)) {\n partsPerLine.set(lineIdx, []);\n }\n partsPerLine.get(lineIdx)!.push(transformedParts[i]);\n }\n\n // Build result lines\n const result: string[] = [];\n for (let i = 0; i < lineMetadata.length; i++) {\n const meta = lineMetadata[i];\n const indent = normalizedIndents[i];\n\n if (meta.isBlank) {\n result.push('');\n } else {\n const lineParts = partsPerLine.get(i) || [];\n if (lineParts.length > 0) {\n // Join multiple parts on same line with \"then\"\n const lineContent = lineParts.join(` ${targetThen} `);\n result.push(indent + lineContent);\n }\n }\n }\n\n return result.join('\\n');\n}\n\n/**\n * Split a statement on command keyword boundaries.\n * E.g., \"wait 2s toggle .highlight\" → [\"wait 2s\", \"toggle .highlight\"]\n *\n * Special cases:\n * - \"on <event> <command>\" stays together (event handler with first command)\n * - Modifiers like \"to\", \"from\" don't trigger splits\n */\nfunction splitOnCommandBoundaries(input: string, sourceLocale: string): string[] {\n const commandKeywords = getCommandKeywordsForLocale(sourceLocale);\n const tokens = input.split(/\\s+/);\n\n if (tokens.length === 0) return [input];\n\n const parts: string[] = [];\n let currentPart: string[] = [];\n\n // Check if this starts with an event handler pattern (on/em/en/bei/で + event)\n const firstTokenLower = tokens[0]?.toLowerCase();\n const isEventHandler = EVENT_KEYWORDS.has(firstTokenLower);\n\n // If it's an event handler, the first command after the event is part of the handler\n // So we need to track whether we've seen the first command yet\n let seenFirstCommand = !isEventHandler; // If not event handler, we're already past the \"first command\" phase\n\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n const lowerToken = token.toLowerCase();\n\n // If this is a command keyword and we already have tokens in current part\n if (commandKeywords.has(lowerToken) && currentPart.length > 0) {\n // Check if the previous token looks like it could end a command\n const prevToken = currentPart[currentPart.length - 1];\n const prevLower = prevToken.toLowerCase();\n\n // Don't split if the previous token is a modifier like \"to\", \"from\", \"by\", etc.\n const modifiers = new Set([\n 'to',\n 'into',\n 'from',\n 'with',\n 'by',\n 'as',\n 'at',\n 'in',\n 'on',\n 'of',\n 'over',\n ]);\n\n // For event handlers: don't split before the first command\n // E.g., \"on click wait 1s\" should stay together\n if (!seenFirstCommand) {\n // Mark that we've now seen the first command\n seenFirstCommand = true;\n currentPart.push(token);\n continue;\n }\n\n if (!modifiers.has(prevLower) && !commandKeywords.has(prevLower)) {\n // This looks like a command boundary - save current part and start new one\n parts.push(currentPart.join(' '));\n currentPart = [token];\n continue;\n }\n }\n\n currentPart.push(token);\n }\n\n // Add the last part\n if (currentPart.length > 0) {\n parts.push(currentPart.join(' '));\n }\n\n return parts.filter(p => p.length > 0);\n}\n\n/**\n * Split a single line on \"then\" keywords.\n */\nfunction splitOnThen(input: string, sourceLocale: string): string[] {\n // Build regex pattern from all known \"then\" keywords\n const thenKeywords = Array.from(THEN_KEYWORDS);\n\n // Add any dictionary-specific \"then\" keyword for the source locale\n const sourceDict = sourceLocale === 'en' ? null : dictionaries[sourceLocale];\n if (sourceDict?.modifiers?.then) {\n thenKeywords.push(sourceDict.modifiers.then);\n }\n // Also check logical.then since some dictionaries put it there\n if ((sourceDict?.logical as Record<string, string>)?.then) {\n thenKeywords.push((sourceDict?.logical as Record<string, string>).then);\n }\n\n // Create a regex that matches any \"then\" keyword as a whole word\n // Use word boundaries to avoid matching \"then\" inside other words\n const escapedKeywords = thenKeywords.map(k => k.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'));\n const pattern = new RegExp(`\\\\s+(${escapedKeywords.join('|')})\\\\s+`, 'gi');\n\n // Split on \"then\" keywords\n const parts = input.split(pattern).filter(part => {\n // Filter out the \"then\" keywords themselves (captured by the group)\n const lowerPart = part.toLowerCase().trim();\n return lowerPart && !thenKeywords.some(k => k.toLowerCase() === lowerPart);\n });\n\n return parts.map(p => p.trim()).filter(p => p.length > 0);\n}\n\n/**\n * Get the \"then\" keyword in the target language.\n * Checks both modifiers and logical sections since dictionaries vary.\n */\nfunction getTargetThenKeyword(targetLocale: string): string {\n if (targetLocale === 'en') return 'then';\n\n const targetDict = dictionaries[targetLocale];\n if (!targetDict) return 'then';\n\n // Check modifiers first, then logical (dictionaries vary)\n return (\n targetDict.modifiers?.then || (targetDict.logical as Record<string, string>)?.then || 'then'\n );\n}\n\n// =============================================================================\n// Derived Constants from Profiles\n// =============================================================================\n\n/**\n * Derive event keywords from all language profiles.\n * This replaces the hardcoded eventKeywords array.\n */\nfunction deriveEventKeywordsFromProfiles(): Set<string> {\n const keywords = new Set<string>();\n\n // Add 'on' as the English default\n keywords.add('on');\n\n // Extract event markers from all profiles\n for (const profile of Object.values(profiles)) {\n for (const marker of profile.markers) {\n if (marker.role === 'event') {\n // Strip hyphen notation and add\n const form = marker.form.replace(/^-|-$/g, '').toLowerCase();\n if (form) keywords.add(form);\n\n // Add alternatives\n marker.alternatives?.forEach(alt => {\n const altForm = alt.replace(/^-|-$/g, '').toLowerCase();\n if (altForm) keywords.add(altForm);\n });\n }\n }\n }\n\n return keywords;\n}\n\n/** Event keywords derived from language profiles */\nconst EVENT_KEYWORDS = deriveEventKeywordsFromProfiles();\n\n// =============================================================================\n// Helper: Dynamic Modifier Map\n// =============================================================================\n\n/**\n * Generates a lookup map for semantic roles based on the language profile.\n * Maps markers (e.g., 'to', 'に', 'into', 'إلى') to their semantic roles.\n * This enables parsing non-English input by using the profile's markers.\n */\nfunction generateModifierMap(profile: LanguageProfile): Record<string, SemanticRole> {\n const map: Record<string, SemanticRole> = {};\n\n // Map markers to roles from the profile\n profile.markers.forEach(marker => {\n // Strip hyphen notation for suffix/prefix markers\n const form = marker.form.replace(/^-|-$/g, '').toLowerCase();\n if (form) {\n map[form] = marker.role;\n }\n\n // Map alternatives if they exist (e.g., Korean vowel harmony variants)\n marker.alternatives?.forEach(alt => {\n const altForm = alt.replace(/^-|-$/g, '').toLowerCase();\n if (altForm) {\n map[altForm] = marker.role;\n }\n });\n });\n\n // Add English modifiers as fallback (don't override profile-specific markers)\n for (const [key, role] of Object.entries(ENGLISH_MODIFIER_ROLES)) {\n if (!(key in map)) {\n map[key] = role;\n }\n }\n\n return map;\n}\n\n// =============================================================================\n// Statement Parser\n// =============================================================================\n\n/**\n * Parse a hyperscript statement into semantic roles\n * This is the core analysis step that identifies WHAT each part means\n */\nexport function parseStatement(input: string, sourceLocale: string = 'en'): ParsedStatement | null {\n const profile = getProfile(sourceLocale);\n if (!profile) return null;\n\n const tokens = tokenize(input, profile);\n\n // Identify statement type and extract roles\n const statementType = identifyStatementType(tokens, profile);\n\n switch (statementType) {\n case 'event-handler':\n return parseEventHandler(tokens, profile);\n case 'command':\n return parseCommand(tokens, profile);\n case 'conditional':\n return parseConditional(tokens, profile);\n default:\n return null;\n }\n}\n\n/**\n * Known suffixes that may attach to words without spaces.\n * These are split off during tokenization for proper parsing.\n */\nconst ATTACHED_SUFFIXES: Record<string, string[]> = {\n // Chinese: 时 (time/when) often attaches to events like 点击时 (when clicking)\n zh: ['时', '的', '地', '得'],\n // Japanese: Some particles may attach in casual writing\n ja: [],\n // Korean: Particles sometimes written without spaces\n ko: [],\n};\n\n/**\n * Known prefixes that may attach to words without spaces.\n */\nconst ATTACHED_PREFIXES: Record<string, string[]> = {\n // Chinese: 当 (when) sometimes written attached\n zh: ['当'],\n // Arabic: Prepositions that attach\n ar: ['بـ', 'كـ', 'و'],\n};\n\n/**\n * Post-process tokens to split attached suffixes/prefixes.\n * E.g., \"点击时\" → [\"点击\", \"时\"]\n */\nfunction splitAttachedAffixes(tokens: string[], locale: string): string[] {\n const suffixes = ATTACHED_SUFFIXES[locale] || [];\n const prefixes = ATTACHED_PREFIXES[locale] || [];\n\n if (suffixes.length === 0 && prefixes.length === 0) {\n return tokens;\n }\n\n const result: string[] = [];\n\n for (const token of tokens) {\n // Skip CSS selectors and numbers\n if (/^[#.<@]/.test(token) || /^\\d+/.test(token)) {\n result.push(token);\n continue;\n }\n\n let processed = token;\n let prefix = '';\n let suffix = '';\n\n // Check for attached prefixes\n for (const p of prefixes) {\n if (processed.startsWith(p) && processed.length > p.length) {\n prefix = p;\n processed = processed.slice(p.length);\n break;\n }\n }\n\n // Check for attached suffixes\n for (const s of suffixes) {\n if (processed.endsWith(s) && processed.length > s.length) {\n suffix = s;\n processed = processed.slice(0, -s.length);\n break;\n }\n }\n\n // Add tokens in order: prefix, main, suffix\n if (prefix) result.push(prefix);\n if (processed) result.push(processed);\n if (suffix) result.push(suffix);\n }\n\n return result;\n}\n\n/**\n * Simple tokenizer that handles:\n * - Keywords (from dictionary)\n * - CSS selectors (#id, .class, <tag/>)\n * - String literals\n * - Numbers\n * - Attached suffixes/prefixes (language-specific)\n */\nfunction tokenize(input: string, profile: LanguageProfile): string[] {\n // Split on whitespace, preserving selectors and strings\n const tokens: string[] = [];\n let current = '';\n let inSelector = false;\n let selectorDepth = 0;\n\n for (let i = 0; i < input.length; i++) {\n const char = input[i];\n\n // Track CSS selector context\n if (char === '<') {\n inSelector = true;\n selectorDepth++;\n } else if (char === '>' && inSelector) {\n selectorDepth--;\n if (selectorDepth === 0) inSelector = false;\n }\n\n // Split on whitespace unless in selector\n if (/\\s/.test(char) && !inSelector) {\n if (current) {\n tokens.push(current);\n current = '';\n }\n } else {\n current += char;\n }\n }\n\n if (current) {\n tokens.push(current);\n }\n\n // Post-process to split attached affixes for languages that need it\n return splitAttachedAffixes(tokens, profile.code);\n}\n\n/**\n * Identify what type of statement this is\n */\nfunction identifyStatementType(\n tokens: string[],\n profile: LanguageProfile\n): 'event-handler' | 'command' | 'conditional' | 'unknown' {\n if (tokens.length === 0) return 'unknown';\n\n const firstToken = tokens[0].toLowerCase();\n\n // Check for event handler\n const eventMarker = profile.markers.find(m => m.role === 'event' && m.position === 'preposition');\n if (eventMarker && firstToken === eventMarker.form.toLowerCase()) {\n return 'event-handler';\n }\n\n // Check if first token is a known event keyword (derived from profiles)\n if (EVENT_KEYWORDS.has(firstToken)) {\n return 'event-handler';\n }\n\n // Check for conditional using shared constants\n if (CONDITIONAL_KEYWORDS.has(firstToken)) {\n return 'conditional';\n }\n\n return 'command';\n}\n\n/**\n * Parse an event handler statement\n * Pattern: on {event} {command} {target?} {modifiers?}\n *\n * Now handles modifiers like \"by 3\" in \"on click increment #count by 3\"\n */\nfunction parseEventHandler(tokens: string[], profile: LanguageProfile): ParsedStatement {\n const roles = new Map<SemanticRole, ParsedElement>();\n\n // Skip the event keyword (e.g., 'on', 'で', '当', etc.) - derived from profiles\n let startIndex = EVENT_KEYWORDS.has(tokens[0]?.toLowerCase()) ? 1 : 0;\n\n // Next token is the event\n if (tokens[startIndex]) {\n roles.set('event', {\n role: 'event',\n value: tokens[startIndex],\n });\n startIndex++;\n }\n\n // Next token is typically the action\n if (tokens[startIndex]) {\n roles.set('action', {\n role: 'action',\n value: tokens[startIndex],\n });\n startIndex++;\n }\n\n // Parse remaining tokens with modifier awareness (like parseCommand does)\n // This handles \"by 3\" in \"on click increment #count by 3\"\n if (tokens[startIndex]) {\n const modifierMap = generateModifierMap(profile);\n let currentRole: SemanticRole = 'patient';\n let currentValue: string[] = [];\n\n for (let i = startIndex; i < tokens.length; i++) {\n const token = tokens[i];\n const mappedRole = modifierMap[token.toLowerCase()];\n\n if (mappedRole) {\n // Save previous role\n if (currentValue.length > 0) {\n const value = currentValue.join(' ');\n roles.set(currentRole, {\n role: currentRole,\n value,\n isSelector: /^[#.<@]/.test(value),\n });\n }\n currentRole = mappedRole;\n currentValue = [];\n } else {\n currentValue.push(token);\n }\n }\n\n // Save final role\n if (currentValue.length > 0) {\n const value = currentValue.join(' ');\n roles.set(currentRole, {\n role: currentRole,\n value,\n isSelector: /^[#.<@]/.test(value),\n });\n }\n }\n\n return {\n type: 'event-handler',\n roles,\n original: tokens.join(' '),\n };\n}\n\n/**\n * Parse a command statement\n * Pattern: {command} {args...}\n */\nfunction parseCommand(tokens: string[], profile: LanguageProfile): ParsedStatement {\n const roles = new Map<SemanticRole, ParsedElement>();\n\n if (tokens.length === 0) {\n return { type: 'command', roles, original: '' };\n }\n\n // First token is the command\n roles.set('action', {\n role: 'action',\n value: tokens[0],\n });\n\n // Generate dynamic modifier map from language profile\n // This enables parsing non-English input (e.g., Japanese に, Korean 에, Arabic إلى)\n const modifierMap = generateModifierMap(profile);\n\n let currentRole: SemanticRole = 'patient';\n let currentValue: string[] = [];\n\n for (let i = 1; i < tokens.length; i++) {\n const token = tokens[i];\n const mappedRole = modifierMap[token.toLowerCase()];\n\n if (mappedRole) {\n // Save previous role\n if (currentValue.length > 0) {\n const value = currentValue.join(' ');\n roles.set(currentRole, {\n role: currentRole,\n value,\n isSelector: /^[#.<@]/.test(value),\n });\n }\n currentRole = mappedRole;\n currentValue = [];\n } else {\n currentValue.push(token);\n }\n }\n\n // Save final role\n if (currentValue.length > 0) {\n const value = currentValue.join(' ');\n roles.set(currentRole, {\n role: currentRole,\n value,\n isSelector: /^[#.<@]/.test(value),\n });\n }\n\n return {\n type: 'command',\n roles,\n original: tokens.join(' '),\n };\n}\n\n/**\n * Parse a conditional statement\n */\nfunction parseConditional(tokens: string[], _profile: LanguageProfile): ParsedStatement {\n const roles = new Map<SemanticRole, ParsedElement>();\n\n // First token is the 'if' keyword\n roles.set('action', {\n role: 'action',\n value: tokens[0],\n });\n\n // Find 'then' to split condition from body - using shared constants\n const thenIndex = tokens.findIndex(t => THEN_KEYWORDS.has(t.toLowerCase()));\n\n if (thenIndex > 1) {\n const conditionValue = tokens.slice(1, thenIndex).join(' ');\n roles.set('condition', {\n role: 'condition',\n value: conditionValue,\n });\n }\n\n return {\n type: 'conditional',\n roles,\n original: tokens.join(' '),\n };\n}\n\n// =============================================================================\n// Translation\n// =============================================================================\n\n/**\n * Translate words using dictionary with type-safe access.\n */\nfunction translateWord(word: string, sourceLocale: string, targetLocale: string): string {\n // Don't translate CSS selectors\n if (/^[#.<@]/.test(word)) {\n return word;\n }\n\n // Don't translate numbers\n if (/^\\d+/.test(word)) {\n return word;\n }\n\n const sourceDict = sourceLocale === 'en' ? null : dictionaries[sourceLocale];\n const targetDict = dictionaries[targetLocale];\n\n if (!targetDict) return word;\n\n // If source is not English, first map to English using type-safe lookup\n let englishWord = word;\n if (sourceDict) {\n const found = findInDictionary(sourceDict, word);\n if (found) {\n englishWord = found.englishKey;\n }\n }\n\n // Now map English to target locale using type-safe lookup\n const translated = translateFromEnglish(targetDict, englishWord);\n return translated ?? word;\n}\n\n/**\n * Possessive markers for each language.\n * Used to transform \"X's Y\" patterns to target language structure.\n */\nconst POSSESSIVE_MARKERS: Record<\n string,\n { type: 'prefix' | 'suffix' | 'preposition'; marker: string }\n> = {\n en: { type: 'suffix', marker: \"'s\" },\n es: { type: 'preposition', marker: 'de' },\n pt: { type: 'preposition', marker: 'de' },\n fr: { type: 'preposition', marker: 'de' },\n de: { type: 'preposition', marker: 'von' },\n ja: { type: 'suffix', marker: 'の' },\n ko: { type: 'suffix', marker: '의' },\n zh: { type: 'suffix', marker: '的' },\n ar: { type: 'preposition', marker: 'لـ' },\n tr: { type: 'suffix', marker: \"'ın\" },\n id: { type: 'preposition', marker: 'dari' },\n qu: { type: 'suffix', marker: '-pa' },\n sw: { type: 'preposition', marker: 'ya' },\n};\n\n/**\n * Transform possessive 's syntax to target language.\n *\n * Examples:\n * me's value → mi valor (Spanish - pronoun becomes possessive adjective)\n * #button's textContent → textContent de #button (Spanish - prepositional)\n * me's value → 私の値 (Japanese - の particle)\n */\nfunction translatePossessive(token: string, sourceLocale: string, targetLocale: string): string {\n // Check for 's possessive pattern\n const possessiveMatch = token.match(/^(.+)'s$/i);\n if (!possessiveMatch) {\n return token;\n }\n\n const owner = possessiveMatch[1];\n const targetMarker = POSSESSIVE_MARKERS[targetLocale] || POSSESSIVE_MARKERS.en;\n\n // Check if owner is a pronoun that has a possessive form\n const pronounPossessives: Record<string, string> = {\n me: 'my',\n it: 'its',\n you: 'your',\n };\n\n const lowerOwner = owner.toLowerCase();\n if (pronounPossessives[lowerOwner]) {\n // Convert \"me's\" to \"my\" then translate\n const possessiveForm = pronounPossessives[lowerOwner];\n return translateWord(possessiveForm, 'en', targetLocale);\n }\n\n // For selectors and other owners, translate owner and apply target possessive marker\n const translatedOwner = translateWord(owner, sourceLocale, targetLocale);\n\n switch (targetMarker.type) {\n case 'suffix':\n // Japanese/Korean/Chinese: owner + marker (e.g., #buttonの, #button의)\n return `${translatedOwner}${targetMarker.marker}`;\n case 'preposition':\n // Will be handled by caller - return marker + owner format\n // Store as special format to be processed later\n return `__POSS__${targetMarker.marker}__${translatedOwner}__POSS__`;\n default:\n return `${translatedOwner}'s`;\n }\n}\n\n/**\n * Translate a multi-word value, translating each word individually.\n * Handles possessives like \"my value\" → \"mi valor\" in Spanish.\n * Also handles 's possessive syntax like \"me's value\" → \"mi valor\".\n */\nfunction translateMultiWordValue(\n value: string,\n sourceLocale: string,\n targetLocale: string\n): string {\n // If it's a single word, check for possessive then translate\n if (!value.includes(' ')) {\n // Check for possessive 's\n if (value.includes(\"'s\")) {\n return translatePossessive(value, sourceLocale, targetLocale);\n }\n return translateWord(value, sourceLocale, targetLocale);\n }\n\n // Split into words and translate each\n const words = value.split(/\\s+/);\n const translated: string[] = [];\n let i = 0;\n\n while (i < words.length) {\n const word = words[i];\n\n // Check for possessive 's pattern FIRST (e.g., \"me's value\", \"#button's textContent\")\n // This must come before selector check because \"#button's\" starts with #\n if (word.includes(\"'s\")) {\n const possessiveResult = translatePossessive(word, sourceLocale, targetLocale);\n\n // Check if it's a prepositional possessive that needs reordering\n const prepMatch = possessiveResult.match(/^__POSS__(.+)__(.+)__POSS__$/);\n if (prepMatch && i + 1 < words.length) {\n // Prepositional: \"X's Y\" → \"Y marker X\" (e.g., \"textContent de #button\")\n const marker = prepMatch[1];\n const owner = prepMatch[2];\n const property = words[i + 1];\n const translatedProperty = translateWord(property, sourceLocale, targetLocale);\n translated.push(`${translatedProperty} ${marker} ${owner}`);\n i += 2; // Skip property since we consumed it\n continue;\n } else if (prepMatch) {\n // No property following - just output owner with marker prefix\n const marker = prepMatch[1];\n const owner = prepMatch[2];\n translated.push(`${marker} ${owner}`);\n i++;\n continue;\n }\n\n // Suffix-style possessive (Japanese, Korean, etc.) or pronoun\n translated.push(possessiveResult);\n i++;\n continue;\n }\n\n // Skip pure CSS selectors and numbers (but NOT possessives which were handled above)\n if (/^[#.<@]/.test(word) || /^\\d+/.test(word)) {\n translated.push(word);\n i++;\n continue;\n }\n\n // Skip quoted strings\n if (/^[\"'].*[\"']$/.test(word)) {\n translated.push(word);\n i++;\n continue;\n }\n\n translated.push(translateWord(word, sourceLocale, targetLocale));\n i++;\n }\n\n return translated.join(' ');\n}\n\n/**\n * Translate all elements in a parsed statement\n */\nfunction translateElements(\n parsed: ParsedStatement,\n sourceLocale: string,\n targetLocale: string\n): void {\n for (const [_role, element] of parsed.roles) {\n // Always process possessive 's syntax, even for selectors\n // E.g., \"#button's textContent\" should translate the possessive\n if (element.value.includes(\"'s\")) {\n element.translated = translateMultiWordValue(element.value, sourceLocale, targetLocale);\n } else if (!element.isSelector && !element.isLiteral) {\n element.translated = translateMultiWordValue(element.value, sourceLocale, targetLocale);\n } else {\n element.translated = element.value;\n }\n }\n}\n\n// =============================================================================\n// Main Transformer\n// =============================================================================\n\nexport class GrammarTransformer {\n private sourceProfile: LanguageProfile;\n private targetProfile: LanguageProfile;\n\n constructor(sourceLocale: string = 'en', targetLocale: string) {\n const source = getProfile(sourceLocale);\n const target = getProfile(targetLocale);\n\n if (!source) throw new Error(`Unknown source locale: ${sourceLocale}`);\n if (!target) throw new Error(`Unknown target locale: ${targetLocale}`);\n\n this.sourceProfile = source;\n this.targetProfile = target;\n }\n\n /**\n * Transform a hyperscript statement from source to target language.\n * Handles compound statements with \"then\" by splitting, transforming each part,\n * and rejoining with the target language's \"then\" keyword.\n *\n * For multi-line input, preserves line structure (indentation, blank lines).\n */\n transform(input: string): string {\n const targetThen = getTargetThenKeyword(this.targetProfile.code);\n\n // Check if input has multi-line structure worth preserving\n const hasMultiLineStructure = input.includes('\\n');\n\n if (hasMultiLineStructure) {\n // Multi-line case - preserve structure (indentation, blank lines)\n const { parts, lineMetadata, partToLineIndex } = splitCompoundStatementWithMetadata(\n input,\n this.sourceProfile.code\n );\n\n const transformedParts = parts.map(part => this.transformSingle(part));\n\n return reconstructWithLineStructure(\n transformedParts,\n lineMetadata,\n partToLineIndex,\n targetThen\n );\n }\n\n // Single-line case - use existing logic\n const parts = splitCompoundStatement(input, this.sourceProfile.code);\n\n if (parts.length > 1) {\n const transformedParts = parts.map(part => this.transformSingle(part));\n return transformedParts.join(` ${targetThen} `);\n }\n\n // Single statement (no \"then\" splitting needed)\n return this.transformSingle(input);\n }\n\n /**\n * Transform a single hyperscript statement (no compound \"then\" chains).\n */\n private transformSingle(input: string): string {\n // 1. Parse into semantic roles\n const parsed = parseStatement(input, this.sourceProfile.code);\n if (!parsed) {\n return input; // Return unchanged if parsing fails\n }\n\n // 2. Translate individual words\n translateElements(parsed, this.sourceProfile.code, this.targetProfile.code);\n\n // 3. Find applicable rule\n const rule = this.findRule(parsed);\n\n // 4. Apply transformation\n if (rule?.transform.custom) {\n return rule.transform.custom(parsed, this.targetProfile);\n }\n\n // 5. Reorder according to target language's canonical order\n const roleOrder = rule?.transform.roleOrder || this.targetProfile.canonicalOrder;\n const reordered = reorderRoles(parsed.roles, roleOrder);\n\n // 6. Insert grammatical markers\n const shouldInsertMarkers = rule?.transform.insertMarkers ?? true;\n if (shouldInsertMarkers) {\n const result = insertMarkers(\n reordered,\n this.targetProfile.markers,\n this.targetProfile.adpositionType\n );\n // Use joinTokens for proper suffix/prefix attachment (Turkish -i, Quechua -ta, etc.)\n return joinTokens(result);\n }\n\n // 7. Join without markers (still use joinTokens for consistency)\n return joinTokens(reordered.map(e => e.translated || e.value));\n }\n\n /**\n * Find the best matching rule for this statement\n */\n private findRule(parsed: ParsedStatement): GrammarRule | undefined {\n if (!this.targetProfile.rules) return undefined;\n\n const matchingRules = this.targetProfile.rules\n .filter(rule => this.matchesRule(parsed, rule))\n .sort((a, b) => b.priority - a.priority);\n\n return matchingRules[0];\n }\n\n /**\n * Check if a parsed statement matches a rule\n */\n private matchesRule(parsed: ParsedStatement, rule: GrammarRule): boolean {\n const { match } = rule;\n\n // Check required roles\n for (const role of match.requiredRoles) {\n if (!parsed.roles.has(role)) {\n return false;\n }\n }\n\n // Check command match if specified\n if (match.commands && match.commands.length > 0) {\n const action = parsed.roles.get('action');\n if (!action) return false;\n\n const actionValue = action.value.toLowerCase();\n if (!match.commands.some(cmd => cmd.toLowerCase() === actionValue)) {\n return false;\n }\n }\n\n // Check custom predicate\n if (match.predicate && !match.predicate(parsed)) {\n return false;\n }\n\n return true;\n }\n}\n\n// =============================================================================\n// Convenience Functions\n// =============================================================================\n\n/**\n * Transform hyperscript from English to target language\n */\nexport function toLocale(input: string, targetLocale: string): string {\n const transformer = new GrammarTransformer('en', targetLocale);\n return transformer.transform(input);\n}\n\n/**\n * Transform hyperscript from source language to English\n */\nexport function toEnglish(input: string, sourceLocale: string): string {\n const transformer = new GrammarTransformer(sourceLocale, 'en');\n return transformer.transform(input);\n}\n\n/**\n * Transform between any two languages.\n *\n * Uses direct translation for supported language pairs (ja↔zh, es↔pt, ko↔ja),\n * falling back to English pivot for other pairs.\n */\nexport function translate(input: string, sourceLocale: string, targetLocale: string): string {\n if (sourceLocale === targetLocale) return input;\n if (sourceLocale === 'en') return toLocale(input, targetLocale);\n if (targetLocale === 'en') return toEnglish(input, sourceLocale);\n\n // Try direct translation for supported pairs\n if (hasDirectMapping(sourceLocale, targetLocale)) {\n return translateDirect(input, sourceLocale, targetLocale);\n }\n\n // Fallback: Via English pivot\n const english = toEnglish(input, sourceLocale);\n return toLocale(english, targetLocale);\n}\n\n/**\n * Direct translation between language pairs without English pivot.\n * More accurate for closely related languages (ja↔zh, es↔pt).\n */\nfunction translateDirect(input: string, sourceLocale: string, targetLocale: string): string {\n const mapping = getDirectMapping(sourceLocale, targetLocale);\n if (!mapping) {\n // Fallback to pivot translation\n return toLocale(toEnglish(input, sourceLocale), targetLocale);\n }\n\n // Tokenize input\n const tokens = input.split(/\\s+/);\n\n // Translate each token using direct mapping\n const translated = tokens.map(token => {\n // Preserve CSS selectors and literals\n if (token.startsWith('#') || token.startsWith('.') || token.startsWith('@')) {\n return token;\n }\n if (token.startsWith('\"') || token.startsWith(\"'\")) {\n return token;\n }\n\n // Look up in direct mapping\n const directTranslation = mapping.words[token];\n if (directTranslation) {\n return directTranslation;\n }\n\n // Check for suffix-attached tokens (e.g., \"#count-ta\" in Quechua)\n const suffixMatch = token.match(/^(.+?)(-.+)$/);\n if (suffixMatch) {\n const [, base, suffix] = suffixMatch;\n const translatedBase = mapping.words[base] || base;\n return translatedBase + suffix;\n }\n\n // Return unchanged if no mapping found\n return token;\n });\n\n return translated.join(' ');\n}\n\n// =============================================================================\n// Examples (for testing)\n// =============================================================================\n\nexport const examples = {\n english: {\n eventHandler: 'on click increment #count',\n putInto: 'put my value into #output',\n toggle: 'toggle .active',\n wait: 'wait 2 seconds',\n },\n\n // Expected outputs (approximate, for reference)\n japanese: {\n eventHandler: '#count を クリック で 増加',\n putInto: '私の 値 を #output に 置く',\n toggle: '.active を 切り替え',\n wait: '2秒 待つ',\n },\n\n chinese: {\n eventHandler: '当 点击 时 增加 #count',\n putInto: '把 我的值 放 到 #output',\n toggle: '切换 .active',\n wait: '等待 2秒',\n },\n\n arabic: {\n eventHandler: 'زِد #count عند النقر',\n putInto: 'ضع قيمتي في #output',\n toggle: 'بدّل .active',\n wait: 'انتظر ثانيتين',\n },\n};\n","// packages/i18n/src/index.ts\n\n// =============================================================================\n// Type Exports\n// =============================================================================\n\nexport type {\n DictionaryCategory,\n Dictionary,\n I18nConfig,\n TranslationOptions,\n ValidationResult,\n ValidationError,\n ValidationWarning,\n LocaleMetadata,\n TranslationContext,\n TokenType,\n Token,\n TranslationResult,\n} from './types';\n\nexport {\n DICTIONARY_CATEGORIES,\n isDictionaryCategory,\n getDictionaryCategory,\n forEachCategory,\n findInDictionary,\n translateFromEnglish,\n} from './types';\n\n// =============================================================================\n// Translator Exports\n// =============================================================================\n\nexport { HyperscriptTranslator } from './translator';\n\n// =============================================================================\n// Dictionary Exports\n// =============================================================================\n\nexport {\n dictionaries,\n en,\n es,\n ko,\n zh,\n fr,\n de,\n ja,\n ar,\n tr,\n id,\n qu,\n sw,\n pt,\n supportedLocales,\n isLocaleSupported,\n getDictionary,\n} from './dictionaries';\n\n// =============================================================================\n// Parser Integration Exports\n// =============================================================================\n\nexport type { KeywordProvider, KeywordProviderOptions } from './parser';\n\nexport {\n createKeywordProvider,\n createEnglishProvider,\n ENGLISH_COMMANDS,\n ENGLISH_KEYWORDS,\n UNIVERSAL_ENGLISH_KEYWORDS,\n // Locale packs\n esKeywords,\n esDictionary,\n jaKeywords,\n jaDictionary,\n frKeywords,\n frDictionary,\n deKeywords,\n deDictionary,\n arKeywords,\n arDictionary,\n koKeywords,\n koDictionary,\n zhKeywords,\n zhDictionary,\n trKeywords,\n trDictionary,\n idKeywords,\n idDictionary,\n quKeywords,\n quDictionary,\n swKeywords,\n swDictionary,\n ptKeywords,\n ptDictionary,\n // Locale management\n LocaleManager,\n detectBrowserLocale,\n} from './parser';\n\n// Re-export key utilities\nexport { detectLocale, getBrowserLocales, isRTL } from './utils/locale';\nexport { tokenize } from './utils/tokenizer';\nexport { validate } from './validators';\n\n// Plugin exports\nexport { hyperscriptI18nVitePlugin } from './plugins/vite';\nexport { HyperscriptI18nWebpackPlugin } from './plugins/webpack';\n\n// SSR integration\nexport { SSRLocaleManager, createExpressI18nMiddleware, withI18n } from './ssr-integration';\nexport type { SSRLocaleContext, SSRLocaleOptions } from './ssr-integration';\n\n// Pluralization\nexport {\n pluralRules,\n getPlural,\n PluralAwareTranslator,\n pluralTimeExpressions,\n} from './pluralization';\nexport type { PluralRule, PluralForms } from './pluralization';\n\n// Formatting\nexport {\n NumberFormatter,\n DateFormatter,\n LocaleFormatter,\n getFormatter,\n formatForLocale,\n} from './formatting';\nexport type {\n NumberFormatOptions,\n DateFormatOptions,\n RelativeTimeFormatOptions,\n} from './formatting';\n\n// Runtime i18n\nexport { RuntimeI18nManager, initializeI18n, getI18n, runtimeI18n } from './runtime';\nexport type { RuntimeI18nOptions } from './runtime';\n\n// Create and export default translator instance\nimport { HyperscriptTranslator } from './translator';\nexport const defaultTranslator = new HyperscriptTranslator({ locale: 'en' });\n\n// Create and export default runtime instance for browser usage\nimport { RuntimeI18nManager } from './runtime';\nexport const defaultRuntime = new RuntimeI18nManager({ locale: 'en' });\n\n// Enhanced I18n Implementation (following enhanced pattern)\nexport {\n TypedI18nContextImplementation,\n createI18nContext,\n createEnhancedI18n,\n enhancedI18nImplementation,\n EnhancedI18nInputSchema,\n EnhancedI18nOutputSchema,\n} from './enhanced-i18n';\nexport type { EnhancedI18nInput, EnhancedI18nOutput } from './enhanced-i18n';\n\n// Grammar-aware transformation system (Phase 2)\nexport {\n // Types\n type SemanticRole,\n type WordOrder,\n type AdpositionType,\n type MorphologyType,\n type GrammaticalMarker,\n type LanguageProfile,\n type GrammarRule,\n type PatternMatcher,\n type PatternTransform,\n type ParsedStatement,\n type ParsedElement,\n UNIVERSAL_PATTERNS,\n LANGUAGE_FAMILY_DEFAULTS,\n reorderRoles,\n insertMarkers,\n transformStatement,\n // Profiles\n profiles,\n getProfile,\n getSupportedLocales,\n englishProfile,\n japaneseProfile,\n koreanProfile,\n chineseProfile,\n arabicProfile,\n turkishProfile,\n spanishProfile,\n indonesianProfile,\n quechuaProfile,\n swahiliProfile,\n // Transformer\n GrammarTransformer,\n parseStatement,\n toLocale,\n toEnglish,\n translate,\n examples as grammarExamples,\n} from './grammar';\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/types.ts","../src/dictionaries/en.ts","../src/dictionaries/es.ts","../src/dictionaries/ko.ts","../src/dictionaries/zh.ts","../src/dictionaries/fr.ts","../src/dictionaries/de.ts","../src/dictionaries/ja.ts","../src/dictionaries/ar.ts","../src/dictionaries/tr.ts","../src/dictionaries/id.ts","../src/dictionaries/qu.ts","../src/dictionaries/sw.ts","../src/dictionaries/pt.ts","../src/dictionaries/it.ts","../src/dictionaries/vi.ts","../src/dictionaries/pl.ts","../src/dictionaries/ru.ts","../src/dictionaries/uk.ts","../src/dictionaries/hi.ts","../src/dictionaries/bn.ts","../src/dictionaries/th.ts","../src/dictionaries/ms.ts","../src/dictionaries/tl.ts","../src/dictionaries/index.ts","../src/utils/locale.ts","../src/utils/tokenizer-adapter.ts","../src/validators/schema.ts","../src/validators/index.ts","../src/translator.ts","../src/constants.ts","../src/parser/create-provider.ts","../src/parser/es.ts","../src/parser/ja.ts","../src/parser/fr.ts","../src/parser/de.ts","../src/parser/ar.ts","../src/parser/ko.ts","../src/parser/zh.ts","../src/parser/tr.ts","../src/parser/id.ts","../src/parser/qu.ts","../src/parser/sw.ts","../src/parser/pt.ts","../src/parser/locale-manager.ts","../src/plugins/vite.ts","../src/plugins/webpack.ts","../src/ssr-integration.ts","../src/pluralization.ts","../src/formatting.ts","../src/runtime.ts","../../../node_modules/zod/v3/external.js","../../../node_modules/zod/v3/helpers/util.js","../../../node_modules/zod/v3/ZodError.js","../../../node_modules/zod/v3/locales/en.js","../../../node_modules/zod/v3/errors.js","../../../node_modules/zod/v3/helpers/parseUtil.js","../../../node_modules/zod/v3/helpers/errorUtil.js","../../../node_modules/zod/v3/types.js","../src/enhanced-i18n.ts","../src/grammar/types.ts","../src/grammar/profiles/index.ts","../src/grammar/direct-mappings.ts","../src/grammar/transformer.ts","../src/index.ts"],"names":["en","es","ja","ko","zh","fr","de","ar","tr","id","pt","qu","sw","it","vi","pl","supportedLocales","toLocale","translator","parse","n","runtimeI18n","util","objectUtil","errorUtil","errorMap","ctx","result","issues","elements","processed","r","ZodFirstPartyTypeKind","dictionaries","normalizedIndents","tokenize","parts"],"mappings":"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","file":"index.cjs","sourcesContent":["// packages/i18n/src/types.ts\n\n/**\n * Dictionary category names as a union type for type-safe access.\n */\nexport type DictionaryCategory =\n | 'commands'\n | 'modifiers'\n | 'events'\n | 'logical'\n | 'temporal'\n | 'values'\n | 'attributes'\n | 'expressions';\n\n/**\n * All valid dictionary categories.\n */\nexport const DICTIONARY_CATEGORIES: readonly DictionaryCategory[] = [\n 'commands',\n 'modifiers',\n 'events',\n 'logical',\n 'temporal',\n 'values',\n 'attributes',\n 'expressions',\n] as const;\n\n/**\n * Dictionary structure for i18n translations.\n * Maps English canonical keywords to locale-specific translations.\n *\n * Note: Index signature removed for stricter type safety.\n * Use DICTIONARY_CATEGORIES to iterate over categories.\n */\nexport interface Dictionary {\n commands: Record<string, string>;\n modifiers: Record<string, string>;\n events: Record<string, string>;\n logical: Record<string, string>;\n temporal: Record<string, string>;\n values: Record<string, string>;\n attributes: Record<string, string>;\n expressions: Record<string, string>;\n}\n\n// =============================================================================\n// Type Guards\n// =============================================================================\n\n/**\n * Type guard to check if a string is a valid dictionary category.\n */\nexport function isDictionaryCategory(key: string): key is DictionaryCategory {\n return DICTIONARY_CATEGORIES.includes(key as DictionaryCategory);\n}\n\n/**\n * Safely get a category from a dictionary with type narrowing.\n * Returns undefined if the category doesn't exist.\n */\nexport function getDictionaryCategory(\n dict: Dictionary,\n category: string\n): Record<string, string> | undefined {\n if (isDictionaryCategory(category)) {\n return dict[category];\n }\n return undefined;\n}\n\n/**\n * Iterate over all categories in a dictionary with proper typing.\n */\nexport function forEachCategory(\n dict: Dictionary,\n callback: (category: DictionaryCategory, entries: Record<string, string>) => void\n): void {\n for (const category of DICTIONARY_CATEGORIES) {\n callback(category, dict[category]);\n }\n}\n\n/**\n * Find a translation in any category of a dictionary.\n * Returns the English key if found, undefined otherwise.\n */\nexport function findInDictionary(\n dict: Dictionary,\n localizedWord: string\n): { category: DictionaryCategory; englishKey: string } | undefined {\n const normalized = localizedWord.toLowerCase();\n for (const category of DICTIONARY_CATEGORIES) {\n const entries = dict[category];\n for (const [english, localized] of Object.entries(entries)) {\n if (localized.toLowerCase() === normalized) {\n return { category, englishKey: english };\n }\n }\n }\n return undefined;\n}\n\n/**\n * Find a translation for an English word in any category.\n * Returns the localized word if found, undefined otherwise.\n */\nexport function translateFromEnglish(dict: Dictionary, englishWord: string): string | undefined {\n const normalized = englishWord.toLowerCase();\n for (const category of DICTIONARY_CATEGORIES) {\n const entries = dict[category];\n const translated = entries[normalized];\n if (translated) {\n return translated;\n }\n }\n return undefined;\n}\n\nexport interface I18nConfig {\n locale: string;\n fallbackLocale?: string;\n dictionaries?: Record<string, Dictionary>;\n detectLocale?: boolean;\n rtlLocales?: string[];\n preserveOriginalAttribute?: string;\n}\n\nexport interface TranslationOptions {\n from?: string;\n to: string;\n preserveOriginal?: boolean;\n validate?: boolean;\n}\n\nexport interface ValidationResult {\n valid: boolean;\n errors: ValidationError[];\n warnings: ValidationWarning[];\n coverage: {\n total: number;\n translated: number;\n missing: string[];\n };\n}\n\nexport interface ValidationError {\n type: 'missing' | 'invalid' | 'duplicate';\n key: string;\n message: string;\n}\n\nexport interface ValidationWarning {\n type: 'unused' | 'deprecated' | 'inconsistent';\n key: string;\n message: string;\n}\n\nexport interface LocaleMetadata {\n code: string;\n name: string;\n nativeName: string;\n rtl: boolean;\n pluralRules?: (n: number) => string;\n}\n\nexport interface TranslationContext {\n locale: string;\n direction: 'ltr' | 'rtl';\n dictionary: Dictionary;\n metadata: LocaleMetadata;\n}\n\nexport type TokenType =\n | 'command'\n | 'modifier'\n | 'event'\n | 'logical'\n | 'temporal'\n | 'value'\n | 'attribute'\n | 'expression'\n | 'identifier'\n | 'operator'\n | 'literal';\n\nexport interface Token {\n type: TokenType;\n value: string;\n translated?: string;\n position: {\n start: number;\n end: number;\n line: number;\n column: number;\n };\n}\n\nexport interface TranslationResult {\n translated: string;\n original?: string;\n tokens: Token[];\n locale: {\n from: string;\n to: string;\n };\n warnings?: string[];\n}\n","// packages/i18n/src/dictionaries/en.ts\n\nimport { Dictionary } from '../types';\n\n/**\n * English dictionary - identity mapping since English is the canonical hyperscript language.\n * This exists primarily for symmetry in translation operations (e.g., en -> es).\n */\nexport const en: Dictionary = {\n commands: {\n // Event handling\n on: 'on',\n tell: 'tell',\n trigger: 'trigger',\n send: 'send',\n\n // DOM manipulation\n take: 'take',\n put: 'put',\n set: 'set',\n get: 'get',\n add: 'add',\n remove: 'remove',\n toggle: 'toggle',\n hide: 'hide',\n show: 'show',\n\n // Control flow\n if: 'if',\n unless: 'unless',\n repeat: 'repeat',\n for: 'for',\n while: 'while',\n until: 'until',\n continue: 'continue',\n break: 'break',\n halt: 'halt',\n\n // Async\n wait: 'wait',\n fetch: 'fetch',\n call: 'call',\n return: 'return',\n\n // Other commands\n make: 'make',\n log: 'log',\n throw: 'throw',\n catch: 'catch',\n measure: 'measure',\n transition: 'transition',\n\n // Data Commands\n increment: 'increment',\n decrement: 'decrement',\n bind: 'bind',\n default: 'default',\n persist: 'persist',\n\n // Navigation Commands\n go: 'go',\n pushUrl: 'pushUrl',\n replaceUrl: 'replaceUrl',\n\n // Utility Commands\n copy: 'copy',\n pick: 'pick',\n beep: 'beep',\n\n // Advanced Commands\n js: 'js',\n async: 'async',\n render: 'render',\n\n // Animation Commands\n swap: 'swap',\n morph: 'morph',\n settle: 'settle',\n\n // Content Commands\n append: 'append',\n\n // Control Flow\n exit: 'exit',\n\n // Behaviors\n install: 'install',\n },\n\n modifiers: {\n to: 'to',\n from: 'from',\n into: 'into',\n with: 'with',\n at: 'at',\n in: 'in',\n of: 'of',\n as: 'as',\n by: 'by',\n before: 'before',\n after: 'after',\n over: 'over',\n under: 'under',\n between: 'between',\n through: 'through',\n without: 'without',\n },\n\n events: {\n click: 'click',\n dblclick: 'dblclick',\n mousedown: 'mousedown',\n mouseup: 'mouseup',\n mouseenter: 'mouseenter',\n mouseleave: 'mouseleave',\n mouseover: 'mouseover',\n mouseout: 'mouseout',\n mousemove: 'mousemove',\n\n keydown: 'keydown',\n keyup: 'keyup',\n keypress: 'keypress',\n\n focus: 'focus',\n blur: 'blur',\n change: 'change',\n input: 'input',\n submit: 'submit',\n reset: 'reset',\n\n load: 'load',\n unload: 'unload',\n resize: 'resize',\n scroll: 'scroll',\n\n touchstart: 'touchstart',\n touchend: 'touchend',\n touchmove: 'touchmove',\n touchcancel: 'touchcancel',\n },\n\n logical: {\n when: 'when',\n where: 'where',\n and: 'and',\n or: 'or',\n not: 'not',\n is: 'is',\n exists: 'exists',\n matches: 'matches',\n contains: 'contains',\n includes: 'includes',\n equals: 'equals',\n has: 'has', // third-person: \"it has .class\", \"#element has .class\"\n have: 'have', // first-person: \"I have .class\"\n then: 'then',\n else: 'else',\n otherwise: 'otherwise',\n end: 'end',\n },\n\n temporal: {\n seconds: 'seconds',\n second: 'second',\n milliseconds: 'milliseconds',\n millisecond: 'millisecond',\n minutes: 'minutes',\n minute: 'minute',\n hours: 'hours',\n hour: 'hour',\n ms: 'ms',\n s: 's',\n min: 'min',\n h: 'h',\n },\n\n values: {\n true: 'true',\n false: 'false',\n null: 'null',\n undefined: 'undefined',\n it: 'it',\n its: 'its',\n me: 'me',\n my: 'my',\n myself: 'myself',\n you: 'you',\n your: 'your',\n yourself: 'yourself',\n element: 'element',\n target: 'target',\n detail: 'detail',\n event: 'event',\n window: 'window',\n document: 'document',\n body: 'body',\n result: 'result',\n value: 'value',\n },\n\n attributes: {\n class: 'class',\n classes: 'classes',\n style: 'style',\n styles: 'styles',\n attribute: 'attribute',\n attributes: 'attributes',\n property: 'property',\n properties: 'properties',\n },\n\n expressions: {\n // Positional\n first: 'first',\n last: 'last',\n next: 'next',\n previous: 'previous',\n prev: 'prev',\n at: 'at',\n random: 'random',\n\n // DOM Traversal\n closest: 'closest',\n parent: 'parent',\n children: 'children',\n within: 'within',\n\n // Emptiness/Existence\n no: 'no',\n empty: 'empty',\n some: 'some',\n\n // String operations\n 'starts with': 'starts with',\n 'ends with': 'ends with',\n },\n};\n","// packages/i18n/src/dictionaries/es.ts\n\nimport { Dictionary } from '../types';\n\nexport const es: Dictionary = {\n commands: {\n // Event handling\n on: 'en',\n tell: 'decir',\n trigger: 'disparar',\n send: 'enviar',\n\n // DOM manipulation\n take: 'tomar',\n put: 'poner',\n set: 'establecer',\n get: 'obtener',\n add: 'agregar',\n remove: 'quitar',\n toggle: 'alternar',\n hide: 'ocultar',\n show: 'mostrar',\n\n // Control flow\n if: 'si',\n unless: 'menos',\n repeat: 'repetir',\n for: 'para',\n while: 'mientras',\n until: 'hasta',\n continue: 'continuar',\n break: 'romper',\n halt: 'detener',\n\n // Async\n wait: 'esperar',\n fetch: 'buscar',\n call: 'llamar',\n return: 'retornar',\n\n // Other commands\n make: 'hacer',\n log: 'registrar',\n throw: 'lanzar',\n catch: 'atrapar',\n measure: 'medir',\n transition: 'transición',\n\n // Data Commands\n increment: 'incrementar',\n decrement: 'decrementar',\n bind: 'vincular',\n default: 'predeterminar',\n persist: 'persistir',\n\n // Navigation Commands\n go: 'ir',\n pushUrl: 'pushUrl',\n replaceUrl: 'reemplazarUrl',\n\n // Utility Commands\n copy: 'copiar',\n pick: 'escoger',\n beep: 'pitido',\n\n // Advanced Commands\n js: 'js',\n async: 'asíncrono',\n render: 'renderizar',\n\n // Animation Commands\n swap: 'intercambiar',\n morph: 'transformar',\n settle: 'estabilizar',\n\n // Content Commands\n append: 'añadir',\n\n // Control Flow\n exit: 'salir',\n\n // Behaviors\n install: 'instalar',\n },\n\n modifiers: {\n to: 'a',\n from: 'de',\n into: 'en',\n with: 'con',\n at: 'en',\n in: 'en',\n of: 'de',\n as: 'como',\n by: 'por',\n before: 'antes',\n after: 'después',\n over: 'sobre',\n under: 'bajo',\n between: 'entre',\n through: 'través',\n without: 'sin',\n },\n\n events: {\n click: 'clic',\n dblclick: 'dobleclic',\n mousedown: 'ratónabajo',\n mouseup: 'ratónarriba',\n mouseenter: 'ratónentrar',\n mouseleave: 'ratónsalir',\n mouseover: 'ratónencima',\n mouseout: 'ratónfuera',\n mousemove: 'ratónmover',\n\n keydown: 'teclaabajo',\n keyup: 'teclaarriba',\n keypress: 'teclapresar',\n\n focus: 'enfocar',\n blur: 'desenfocar',\n change: 'cambiar',\n input: 'entrada',\n submit: 'enviar',\n reset: 'reiniciar',\n\n load: 'cargar',\n unload: 'descargar',\n resize: 'redimensionar',\n scroll: 'desplazar',\n\n touchstart: 'toqueempezar',\n touchend: 'toqueterminar',\n touchmove: 'toquemover',\n touchcancel: 'toquecancelar',\n },\n\n logical: {\n when: 'cuando',\n where: 'donde',\n and: 'y',\n or: 'o',\n not: 'no',\n is: 'es',\n exists: 'existe',\n matches: 'coincide',\n contains: 'contiene',\n includes: 'incluye',\n equals: 'iguala',\n has: 'tiene', // third-person: él/ella tiene\n have: 'tengo', // first-person: yo tengo\n then: 'entonces',\n else: 'sino',\n otherwise: 'delocontrario',\n end: 'fin',\n },\n\n temporal: {\n seconds: 'segundos',\n second: 'segundo',\n milliseconds: 'milisegundos',\n millisecond: 'milisegundo',\n minutes: 'minutos',\n minute: 'minuto',\n hours: 'horas',\n hour: 'hora',\n ms: 'ms',\n s: 's',\n min: 'min',\n h: 'h',\n },\n\n values: {\n true: 'verdadero',\n false: 'falso',\n null: 'nulo',\n undefined: 'indefinido',\n it: 'ello',\n its: 'su',\n me: 'yo',\n my: 'mi',\n you: 'tu',\n your: 'tu',\n yourself: 'ti mismo', // REVIEW: native speaker\n myself: 'yo mismo',\n element: 'elemento',\n target: 'objetivo',\n detail: 'detalle',\n event: 'evento',\n window: 'ventana',\n document: 'documento',\n body: 'cuerpo',\n result: 'resultado',\n value: 'valor',\n },\n\n attributes: {\n class: 'clase',\n classes: 'clases',\n style: 'estilo',\n styles: 'estilos',\n attribute: 'atributo',\n attributes: 'atributos',\n property: 'propiedad',\n properties: 'propiedades',\n },\n\n expressions: {\n // Positional\n first: 'primero',\n last: 'último',\n next: 'siguiente',\n previous: 'anterior',\n prev: 'ant',\n at: 'en',\n random: 'aleatorio',\n\n // DOM Traversal\n closest: 'máscercano',\n parent: 'padre',\n children: 'hijos',\n within: 'dentro',\n\n // Emptiness/Existence\n no: 'ningún',\n empty: 'vacío',\n some: 'algún',\n\n // String operations\n 'starts with': 'empieza con',\n 'ends with': 'termina con',\n },\n};\n","// packages/i18n/src/dictionaries/ko.ts\n\nimport { Dictionary } from '../types';\n\nexport const ko: Dictionary = {\n commands: {\n // Event handling\n on: '에',\n tell: '말하다',\n trigger: '트리거',\n send: '보내다',\n\n // DOM manipulation\n take: '가져오다',\n put: '넣다',\n set: '설정',\n get: '얻다',\n add: '추가',\n remove: '제거',\n toggle: '토글',\n hide: '숨기다',\n show: '보이다',\n\n // Control flow\n if: '만약',\n unless: '아니면',\n repeat: '반복',\n for: '동안',\n while: '동안',\n until: '까지',\n continue: '계속',\n break: '중단',\n halt: '정지',\n\n // Async\n wait: '대기',\n fetch: '가져오기',\n call: '호출',\n return: '반환',\n\n // Other commands\n make: '만들다',\n log: '로그',\n throw: '던지다',\n catch: '잡다',\n measure: '측정',\n transition: '전환',\n\n // Data Commands\n increment: '증가',\n decrement: '감소',\n bind: '바인드',\n default: '기본값',\n persist: '유지',\n\n // Navigation Commands\n go: '이동',\n pushUrl: 'URL푸시',\n replaceUrl: 'URL교체',\n\n // Utility Commands\n copy: '복사',\n pick: '선택',\n beep: '비프',\n\n // Advanced Commands\n js: 'JS실행',\n async: '비동기',\n render: '렌더링',\n\n // Animation Commands\n swap: '교환',\n morph: '변형',\n settle: '안정',\n\n // Content Commands\n append: '추가',\n\n // Control Flow\n exit: '종료',\n\n // Behaviors\n install: '설치',\n },\n\n modifiers: {\n to: '에',\n from: '에서',\n into: '으로',\n with: '와',\n at: '에',\n in: '안에',\n of: '의',\n as: '로',\n by: '에의해',\n before: '전에',\n after: '후에',\n over: '위에',\n under: '아래',\n between: '사이',\n through: '통해',\n without: '없이',\n },\n\n events: {\n click: '클릭',\n dblclick: '더블클릭',\n mousedown: '마우스다운',\n mouseup: '마우스업',\n mouseenter: '마우스엔터',\n mouseleave: '마우스리브',\n mouseover: '마우스오버',\n mouseout: '마우스아웃',\n mousemove: '마우스무브',\n\n keydown: '키다운',\n keyup: '키업',\n keypress: '키프레스',\n\n focus: '포커스',\n blur: '블러',\n change: '변경',\n input: '입력',\n submit: '제출',\n reset: '리셋',\n\n load: '로드',\n unload: '언로드',\n resize: '리사이즈',\n scroll: '스크롤',\n\n touchstart: '터치시작',\n touchend: '터치종료',\n touchmove: '터치이동',\n touchcancel: '터치취소',\n },\n\n logical: {\n when: '때',\n where: '어디',\n and: '그리고',\n or: '또는',\n not: '아니',\n is: '이다',\n exists: '존재',\n matches: '일치',\n contains: '포함',\n includes: '포함하다',\n equals: '같다',\n has: '있다', // existence verb (context-based)\n have: '있다', // same verb for first/third person\n then: '그러면',\n else: '아니면',\n otherwise: '그렇지않으면',\n end: '끝',\n },\n\n temporal: {\n seconds: '초',\n second: '초',\n milliseconds: '밀리초',\n millisecond: '밀리초',\n minutes: '분',\n minute: '분',\n hours: '시간',\n hour: '시간',\n ms: 'ms',\n s: '초',\n min: '분',\n h: '시',\n },\n\n values: {\n true: '참',\n false: '거짓',\n null: '널',\n undefined: '정의안됨',\n it: '그것',\n its: '그것의', // REVIEW: native speaker\n me: '나',\n my: '내',\n myself: '나자신',\n you: '너', // REVIEW: native speaker - formal/informal\n your: '네', // REVIEW: native speaker - formal/informal\n yourself: '너자신', // REVIEW: native speaker\n element: '요소',\n target: '대상',\n detail: '세부',\n event: '이벤트',\n window: '창',\n document: '문서',\n body: '바디',\n result: '결과',\n value: '값',\n },\n\n attributes: {\n class: '클래스',\n classes: '클래스들',\n style: '스타일',\n styles: '스타일들',\n attribute: '속성',\n attributes: '속성들',\n property: '프로퍼티',\n properties: '프로퍼티들',\n },\n\n expressions: {\n // Positional\n first: '첫번째',\n last: '마지막',\n next: '다음',\n previous: '이전',\n prev: '이전',\n at: '에서',\n random: '무작위',\n\n // DOM Traversal\n closest: '가장가까운',\n parent: '부모',\n children: '자식',\n within: '이내',\n\n // Emptiness/Existence\n no: '없음',\n empty: '비어있는',\n some: '일부',\n\n // String operations\n 'starts with': '로시작',\n 'ends with': '로끝나는',\n },\n};\n","// packages/i18n/src/dictionaries/zh.ts\n\nimport { Dictionary } from '../types';\n\nexport const zh: Dictionary = {\n commands: {\n // Event handling\n on: '当',\n tell: '告诉',\n trigger: '触发',\n send: '发送',\n\n // DOM manipulation\n take: '获取',\n put: '放置',\n set: '设置',\n get: '获得',\n add: '添加',\n remove: '移除',\n toggle: '切换',\n hide: '隐藏',\n show: '显示',\n\n // Control flow\n if: '如果',\n unless: '除非',\n repeat: '重复',\n for: '为',\n while: '当',\n until: '直到',\n continue: '继续',\n break: '中断',\n halt: '停止',\n\n // Async\n wait: '等待',\n fetch: '获取',\n call: '调用',\n return: '返回',\n\n // Other commands\n make: '制作',\n log: '日志',\n throw: '抛出',\n catch: '捕获',\n measure: '测量',\n transition: '过渡',\n\n // Data Commands\n increment: '增加',\n decrement: '减少',\n bind: '绑定',\n default: '默认',\n persist: '持久化',\n\n // Navigation Commands\n go: '前往',\n pushUrl: '推送网址',\n replaceUrl: '替换网址',\n\n // Utility Commands\n copy: '复制',\n pick: '选取',\n beep: '蜂鸣',\n\n // Advanced Commands\n js: 'JS执行',\n async: '异步',\n render: '渲染',\n\n // Animation Commands\n swap: '交换',\n morph: '变形',\n settle: '稳定',\n\n // Content Commands\n append: '追加',\n\n // Control Flow\n exit: '退出',\n\n // Behaviors\n install: '安装',\n },\n\n modifiers: {\n to: '到',\n from: '从',\n into: '进入',\n with: '与',\n at: '在',\n in: '在',\n of: '的',\n as: '作为',\n by: '通过',\n before: '之前',\n after: '之后',\n over: '在上',\n under: '在下',\n between: '之间',\n through: '通过',\n without: '没有',\n },\n\n events: {\n click: '点击',\n dblclick: '双击',\n mousedown: '鼠标按下',\n mouseup: '鼠标抬起',\n mouseenter: '鼠标进入',\n mouseleave: '鼠标离开',\n mouseover: '鼠标悬停',\n mouseout: '鼠标移出',\n mousemove: '鼠标移动',\n\n keydown: '按键按下',\n keyup: '按键抬起',\n keypress: '按键',\n\n focus: '聚焦',\n blur: '失焦',\n change: '改变',\n input: '输入',\n submit: '提交',\n reset: '重置',\n\n load: '加载',\n unload: '卸载',\n resize: '调整大小',\n scroll: '滚动',\n\n touchstart: '触摸开始',\n touchend: '触摸结束',\n touchmove: '触摸移动',\n touchcancel: '触摸取消',\n },\n\n logical: {\n when: '当',\n where: '哪里',\n and: '和',\n or: '或',\n not: '非',\n is: '是',\n exists: '存在',\n matches: '匹配',\n contains: '包含',\n includes: '包括',\n equals: '等于',\n has: '有', // universal \"have\"\n have: '有', // same character for first/third person\n then: '那么',\n else: '否则',\n otherwise: '要不然',\n end: '结束',\n },\n\n temporal: {\n seconds: '秒',\n second: '秒',\n milliseconds: '毫秒',\n millisecond: '毫秒',\n minutes: '分钟',\n minute: '分钟',\n hours: '小时',\n hour: '小时',\n ms: '毫秒',\n s: '秒',\n min: '分',\n h: '时',\n },\n\n values: {\n true: '真',\n false: '假',\n null: '空',\n undefined: '未定义',\n it: '它',\n its: '它的', // REVIEW: native speaker\n me: '我',\n my: '我的',\n myself: '我自己',\n you: '你', // REVIEW: native speaker\n your: '你的', // REVIEW: native speaker\n yourself: '你自己', // REVIEW: native speaker\n element: '元素',\n target: '目标',\n detail: '详情',\n event: '事件',\n window: '窗口',\n document: '文档',\n body: '主体',\n result: '结果',\n value: '值',\n },\n\n attributes: {\n class: '类',\n classes: '类别',\n style: '样式',\n styles: '样式集',\n attribute: '属性',\n attributes: '属性集',\n property: '特性',\n properties: '特性集',\n },\n\n expressions: {\n // Positional\n first: '第一个',\n last: '最后一个',\n next: '下一个',\n previous: '上一个',\n prev: '上个',\n at: '在',\n random: '随机',\n\n // DOM Traversal\n closest: '最近的',\n parent: '父级',\n children: '子级',\n within: '之内',\n\n // Emptiness/Existence\n no: '没有',\n empty: '空的',\n some: '一些',\n\n // String operations\n 'starts with': '以开头',\n 'ends with': '以结尾',\n },\n};\n","// packages/i18n/src/dictionaries/fr.ts\n\nimport { Dictionary } from '../types';\n\nexport const fr: Dictionary = {\n commands: {\n // Event handling\n on: 'sur',\n tell: 'dire',\n trigger: 'déclencher',\n send: 'envoyer',\n\n // DOM manipulation\n take: 'prendre',\n put: 'mettre',\n set: 'définir',\n get: 'obtenir',\n add: 'ajouter',\n remove: 'supprimer',\n toggle: 'basculer',\n hide: 'cacher',\n show: 'montrer',\n\n // Control flow\n if: 'si',\n unless: 'saufsi',\n repeat: 'répéter',\n for: 'pour',\n while: 'tantque',\n until: 'jusquà',\n continue: 'continuer',\n break: 'arrêter',\n halt: 'stopper',\n\n // Async\n wait: 'attendre',\n fetch: 'récupérer',\n call: 'appeler',\n return: 'retourner',\n\n // Other commands\n make: 'créer',\n log: 'enregistrer',\n throw: 'lancer',\n catch: 'attraper',\n measure: 'mesurer',\n transition: 'transition',\n\n // Data Commands\n increment: 'incrémenter',\n decrement: 'décrémenter',\n bind: 'lier',\n default: 'défaut',\n persist: 'persister',\n\n // Navigation Commands\n go: 'aller',\n pushUrl: 'pousserUrl',\n replaceUrl: 'remplacerUrl',\n\n // Utility Commands\n copy: 'copier',\n pick: 'choisir',\n beep: 'bip',\n\n // Advanced Commands\n js: 'js',\n async: 'asynchrone',\n render: 'rendu',\n\n // Animation Commands\n swap: 'échanger',\n morph: 'transformer',\n settle: 'stabiliser',\n\n // Content Commands\n append: 'ajouter',\n\n // Control Flow\n exit: 'sortir',\n\n // Behaviors\n install: 'installer',\n },\n\n modifiers: {\n to: 'à',\n from: 'de',\n into: 'dans',\n with: 'avec',\n at: 'à',\n in: 'en',\n of: 'de',\n as: 'comme',\n by: 'par',\n before: 'avant',\n after: 'après',\n over: 'sur',\n under: 'sous',\n between: 'entre',\n through: 'à travers',\n without: 'sans',\n },\n\n events: {\n click: 'clic',\n dblclick: 'doubleclic',\n mousedown: 'sourisappuyée',\n mouseup: 'sourisrelâchée',\n mouseenter: 'sourisentrer',\n mouseleave: 'sourissortir',\n mouseover: 'sourissur',\n mouseout: 'sourisdehors',\n mousemove: 'sourisbouger',\n\n keydown: 'toucheappuyée',\n keyup: 'toucherelâchée',\n keypress: 'touchepressée',\n\n focus: 'focus',\n blur: 'flou',\n change: 'changer',\n input: 'saisie',\n submit: 'soumettre',\n reset: 'réinitialiser',\n\n load: 'charger',\n unload: 'décharger',\n resize: 'redimensionner',\n scroll: 'défiler',\n\n touchstart: 'touchercommencer',\n touchend: 'toucherfin',\n touchmove: 'toucherbouger',\n touchcancel: 'toucherannuler',\n },\n\n logical: {\n when: 'quand',\n where: 'où',\n and: 'et',\n or: 'ou',\n not: 'non',\n is: 'est',\n exists: 'existe',\n matches: 'correspond',\n contains: 'contient',\n includes: 'inclut',\n equals: 'égale',\n has: 'a', // third-person: il/elle a\n have: 'ai', // first-person: j'ai\n then: 'alors',\n else: 'sinon',\n otherwise: 'autrement',\n end: 'fin',\n },\n\n temporal: {\n seconds: 'secondes',\n second: 'seconde',\n milliseconds: 'millisecondes',\n millisecond: 'milliseconde',\n minutes: 'minutes',\n minute: 'minute',\n hours: 'heures',\n hour: 'heure',\n ms: 'ms',\n s: 's',\n min: 'min',\n h: 'h',\n },\n\n values: {\n true: 'vrai',\n false: 'faux',\n null: 'nul',\n undefined: 'indéfini',\n it: 'ça',\n its: 'son',\n me: 'moi',\n my: 'mon',\n you: 'tu',\n your: 'ton',\n yourself: 'toi-même', // REVIEW: native speaker\n myself: 'moi-même',\n element: 'élément',\n target: 'cible',\n detail: 'détail',\n event: 'événement',\n window: 'fenêtre',\n document: 'document',\n body: 'corps',\n result: 'résultat',\n value: 'valeur',\n },\n\n attributes: {\n class: 'classe',\n classes: 'classes',\n style: 'style',\n styles: 'styles',\n attribute: 'attribut',\n attributes: 'attributs',\n property: 'propriété',\n properties: 'propriétés',\n },\n\n expressions: {\n // Positional\n first: 'premier',\n last: 'dernier',\n next: 'suivant',\n previous: 'précédent',\n prev: 'préc',\n at: 'à',\n random: 'aléatoire',\n\n // DOM Traversal\n closest: 'plusproche',\n parent: 'parent',\n children: 'enfants',\n within: 'dans',\n\n // Emptiness/Existence\n no: 'aucun',\n empty: 'vide',\n some: 'quelques',\n\n // String operations\n 'starts with': 'commence par',\n 'ends with': 'finit par',\n },\n};\n","// packages/i18n/src/dictionaries/de.ts\n\nimport { Dictionary } from '../types';\n\nexport const de: Dictionary = {\n commands: {\n // Event handling\n on: 'bei',\n tell: 'sagen',\n trigger: 'auslösen',\n send: 'senden',\n\n // DOM manipulation\n take: 'nehmen',\n put: 'setzen',\n set: 'festlegen',\n get: 'erhalten',\n add: 'hinzufügen',\n remove: 'entfernen',\n toggle: 'umschalten',\n hide: 'verstecken',\n show: 'zeigen',\n\n // Control flow\n if: 'wenn',\n unless: 'wennnicht',\n repeat: 'wiederholen',\n for: 'für',\n while: 'während',\n until: 'bis',\n continue: 'weiter',\n break: 'unterbrechen',\n halt: 'anhalten',\n\n // Async\n wait: 'warten',\n fetch: 'holen',\n call: 'aufrufen',\n return: 'zurückgeben',\n\n // Other commands\n make: 'erstellen',\n log: 'protokollieren',\n throw: 'werfen',\n catch: 'fangen',\n measure: 'messen',\n transition: 'übergang',\n\n // Data Commands\n increment: 'erhöhen',\n decrement: 'verringern',\n bind: 'binden',\n default: 'standard',\n persist: 'speichern',\n\n // Navigation Commands\n go: 'gehen',\n pushUrl: 'urlHinzufügen',\n replaceUrl: 'urlErsetzen',\n\n // Utility Commands\n copy: 'kopieren',\n pick: 'auswählen',\n beep: 'piepton',\n\n // Advanced Commands\n js: 'js',\n async: 'asynchron',\n render: 'rendern',\n\n // Animation Commands\n swap: 'tauschen',\n morph: 'verwandeln',\n settle: 'stabilisieren',\n\n // Content Commands\n append: 'anhängen',\n\n // Control Flow\n exit: 'beenden',\n\n // Behaviors\n install: 'installieren',\n },\n\n modifiers: {\n to: 'zu',\n from: 'von',\n into: 'in',\n with: 'mit',\n at: 'bei',\n in: 'in',\n of: 'von',\n as: 'als',\n by: 'durch',\n before: 'vor',\n after: 'nach',\n over: 'über',\n under: 'unter',\n between: 'zwischen',\n through: 'durch',\n without: 'ohne',\n },\n\n events: {\n click: 'klick',\n dblclick: 'doppelklick',\n mousedown: 'mausunten',\n mouseup: 'mausoben',\n mouseenter: 'mauseintreten',\n mouseleave: 'mausverlassen',\n mouseover: 'mausüber',\n mouseout: 'maushinaus',\n mousemove: 'mausbewegen',\n\n keydown: 'tasteunten',\n keyup: 'tasteoben',\n keypress: 'tastedrücken',\n\n focus: 'fokus',\n blur: 'unscharf',\n change: 'ändern',\n input: 'eingabe',\n submit: 'absenden',\n reset: 'zurücksetzen',\n\n load: 'laden',\n unload: 'entladen',\n resize: 'größeändern',\n scroll: 'scrollen',\n\n touchstart: 'berührungstart',\n touchend: 'berührungend',\n touchmove: 'berührungbewegen',\n touchcancel: 'berührungabbrechen',\n },\n\n logical: {\n when: 'wenn',\n where: 'wo',\n and: 'und',\n or: 'oder',\n not: 'nicht',\n is: 'ist',\n exists: 'existiert',\n matches: 'passt',\n contains: 'enthält',\n includes: 'beinhaltet',\n equals: 'gleicht',\n has: 'hat', // third-person: es hat\n have: 'habe', // first-person: ich habe\n then: 'dann',\n else: 'sonst',\n otherwise: 'andernfalls',\n end: 'ende',\n },\n\n temporal: {\n seconds: 'sekunden',\n second: 'sekunde',\n milliseconds: 'millisekunden',\n millisecond: 'millisekunde',\n minutes: 'minuten',\n minute: 'minute',\n hours: 'stunden',\n hour: 'stunde',\n ms: 'ms',\n s: 's',\n min: 'min',\n h: 'std',\n },\n\n values: {\n true: 'wahr',\n false: 'falsch',\n null: 'null',\n undefined: 'undefiniert',\n it: 'es',\n its: 'sein',\n me: 'ich',\n my: 'mein',\n you: 'du',\n your: 'dein',\n yourself: 'dich selbst', // REVIEW: native speaker\n myself: 'ich selbst',\n element: 'element',\n target: 'ziel',\n detail: 'detail',\n event: 'ereignis',\n window: 'fenster',\n document: 'dokument',\n body: 'körper',\n result: 'ergebnis',\n value: 'wert',\n },\n\n attributes: {\n class: 'klasse',\n classes: 'klassen',\n style: 'stil',\n styles: 'stile',\n attribute: 'attribut',\n attributes: 'attribute',\n property: 'eigenschaft',\n properties: 'eigenschaften',\n },\n\n expressions: {\n // Positional\n first: 'erste',\n last: 'letzte',\n next: 'nächste',\n previous: 'vorherige',\n prev: 'vorh',\n at: 'bei',\n random: 'zufällig',\n\n // DOM Traversal\n closest: 'nächste',\n parent: 'elternteil',\n children: 'kinder',\n within: 'innerhalb',\n\n // Emptiness/Existence\n no: 'kein',\n empty: 'leer',\n some: 'einige',\n\n // String operations\n 'starts with': 'beginnt mit',\n 'ends with': 'endet mit',\n },\n};\n","// packages/i18n/src/dictionaries/ja.ts\n\nimport { Dictionary } from '../types';\n\nexport const ja: Dictionary = {\n commands: {\n // Event handling\n on: 'で',\n tell: '伝える',\n trigger: '引き金',\n send: '送る',\n\n // DOM manipulation\n take: '取る',\n put: '置く',\n set: '設定',\n get: '取得',\n add: '追加',\n remove: '削除',\n toggle: '切り替え',\n hide: '隠す',\n show: '表示',\n\n // Control flow\n if: 'もし',\n unless: 'でなければ',\n repeat: '繰り返し',\n for: 'ために',\n while: 'の間',\n until: 'まで',\n continue: '続ける',\n break: '中断',\n halt: '停止',\n\n // Async\n wait: '待つ',\n fetch: '取得',\n call: '呼び出し',\n return: '戻る',\n\n // Other commands\n make: '作る',\n log: '記録',\n throw: '投げる',\n catch: '捕まえる',\n measure: '測定',\n transition: '遷移',\n\n // Data Commands\n increment: '増加',\n decrement: '減少',\n bind: '結合',\n default: '既定',\n persist: '永続化',\n\n // Navigation Commands\n go: '移動',\n pushUrl: 'URLプッシュ',\n replaceUrl: 'URL置換',\n\n // Utility Commands\n copy: 'コピー',\n pick: '選択',\n beep: 'ビープ',\n\n // Advanced Commands\n js: 'JS実行',\n async: '非同期',\n render: '描画',\n\n // Animation Commands\n swap: '交換',\n morph: '変形',\n settle: '安定',\n\n // Content Commands\n append: '末尾追加',\n\n // Control Flow\n exit: '終了',\n\n // Behaviors\n install: 'インストール',\n },\n\n modifiers: {\n to: 'に',\n from: 'から',\n into: 'へ',\n with: 'と',\n at: 'で',\n in: 'の中',\n of: 'の',\n as: 'として',\n by: 'によって',\n before: '前に',\n after: '後に',\n over: '上に',\n under: '下に',\n between: '間に',\n through: '通して',\n without: 'なしで',\n },\n\n events: {\n click: 'クリック',\n dblclick: 'ダブルクリック',\n mousedown: 'マウス押下',\n mouseup: 'マウス解放',\n mouseenter: 'マウス入る',\n mouseleave: 'マウス離れる',\n mouseover: 'マウス上',\n mouseout: 'マウス外',\n mousemove: 'マウス移動',\n\n keydown: 'キー押下',\n keyup: 'キー解放',\n keypress: 'キー押す',\n\n focus: 'フォーカス',\n blur: 'ぼかし',\n change: '変更',\n input: '入力',\n submit: '送信',\n reset: 'リセット',\n\n load: '読み込み',\n unload: '読み込み解除',\n resize: 'サイズ変更',\n scroll: 'スクロール',\n\n touchstart: 'タッチ開始',\n touchend: 'タッチ終了',\n touchmove: 'タッチ移動',\n touchcancel: 'タッチキャンセル',\n },\n\n logical: {\n when: 'とき',\n where: 'どこ',\n and: 'そして',\n or: 'または',\n not: 'ではない',\n is: 'である',\n exists: '存在する',\n matches: '一致する',\n contains: '含む',\n includes: '含める',\n equals: '等しい',\n has: 'ある', // existence verb (context-based)\n have: 'ある', // same verb for first/third person\n then: 'それから',\n else: 'そうでなければ',\n otherwise: 'そうでなければ',\n end: '終わり',\n },\n\n temporal: {\n seconds: '秒',\n second: '秒',\n milliseconds: 'ミリ秒',\n millisecond: 'ミリ秒',\n minutes: '分',\n minute: '分',\n hours: '時間',\n hour: '時間',\n ms: 'ms',\n s: '秒',\n min: '分',\n h: '時',\n },\n\n values: {\n true: '真',\n false: '偽',\n null: 'null',\n undefined: '未定義',\n it: 'それ',\n its: 'その',\n me: '私',\n my: '私の',\n you: 'あなた',\n your: 'あなたの',\n yourself: 'あなた自身',\n myself: '私自身',\n element: '要素',\n target: '対象',\n detail: '詳細',\n event: 'イベント',\n window: 'ウィンドウ',\n document: 'ドキュメント',\n body: 'ボディ',\n result: '結果',\n value: '値',\n },\n\n attributes: {\n class: 'クラス',\n classes: 'クラス群',\n style: 'スタイル',\n styles: 'スタイル群',\n attribute: '属性',\n attributes: '属性群',\n property: 'プロパティ',\n properties: 'プロパティ群',\n },\n\n expressions: {\n // Positional\n first: '最初',\n last: '最後',\n next: '次',\n previous: '前',\n prev: '前',\n at: 'で',\n random: 'ランダム',\n\n // DOM Traversal\n closest: '最も近い',\n parent: '親',\n children: '子',\n within: '以内',\n\n // Emptiness/Existence\n no: 'ない',\n empty: '空',\n some: 'いくつか',\n\n // String operations\n 'starts with': 'で始まる',\n 'ends with': 'で終わる',\n },\n};\n","// packages/i18n/src/dictionaries/ar.ts\n\nimport { Dictionary } from '../types';\n\nexport const ar: Dictionary = {\n commands: {\n // Event handling\n on: 'على',\n tell: 'أخبر',\n trigger: 'تشغيل',\n send: 'أرسل',\n\n // DOM manipulation\n take: 'خذ',\n put: 'ضع',\n set: 'اضبط',\n get: 'احصل',\n add: 'أضف',\n remove: 'احذف',\n toggle: 'بدل',\n hide: 'اخف',\n show: 'اظهر',\n\n // Control flow\n if: 'إذا',\n unless: 'إلا إذا',\n repeat: 'كرر',\n for: 'لكل',\n while: 'بينما',\n until: 'حتى',\n continue: 'واصل',\n break: 'توقف',\n halt: 'أوقف',\n\n // Async\n wait: 'انتظر',\n fetch: 'احضر',\n call: 'استدع',\n return: 'ارجع',\n\n // Other commands\n make: 'اصنع',\n log: 'سجل',\n throw: 'ارم',\n catch: 'التقط',\n measure: 'قس',\n transition: 'انتقال',\n\n // Data Commands\n increment: 'زِد',\n decrement: 'أنقص',\n bind: 'اربط',\n default: 'افتراضي',\n persist: 'احفظ',\n\n // Navigation Commands\n go: 'اذهب',\n pushUrl: 'ادفع رابط',\n replaceUrl: 'استبدل رابط',\n\n // Utility Commands\n copy: 'انسخ',\n pick: 'اختر',\n beep: 'صفّر',\n\n // Advanced Commands\n js: 'جافاسكربت',\n async: 'متزامن',\n render: 'ارسم',\n\n // Animation Commands\n swap: 'بدّل',\n morph: 'حوّل',\n settle: 'استقر',\n\n // Content Commands\n append: 'ألحق',\n\n // Control Flow\n exit: 'اخرج',\n\n // Behaviors\n install: 'ثبّت',\n },\n\n modifiers: {\n to: 'إلى',\n from: 'من',\n into: 'في',\n with: 'مع',\n at: 'عند',\n in: 'في',\n of: 'من',\n as: 'كـ',\n by: 'بواسطة',\n before: 'قبل',\n after: 'بعد',\n over: 'فوق',\n under: 'تحت',\n between: 'بين',\n through: 'عبر',\n without: 'بدون',\n },\n\n events: {\n click: 'نقر',\n dblclick: 'نقر مزدوج',\n mousedown: 'فأرة أسفل',\n mouseup: 'فأرة أعلى',\n mouseenter: 'فأرة دخول',\n mouseleave: 'فأرة خروج',\n mouseover: 'فأرة فوق',\n mouseout: 'فأرة خارج',\n mousemove: 'فأرة تحرك',\n\n keydown: 'مفتاح أسفل',\n keyup: 'مفتاح أعلى',\n keypress: 'مفتاح ضغط',\n\n focus: 'تركيز',\n blur: 'ضبابية',\n change: 'تغيير',\n input: 'إدخال',\n submit: 'إرسال',\n reset: 'إعادة تعيين',\n\n load: 'تحميل',\n unload: 'إلغاء تحميل',\n resize: 'تغيير حجم',\n scroll: 'تمرير',\n\n touchstart: 'بداية لمس',\n touchend: 'نهاية لمس',\n touchmove: 'تحرك لمس',\n touchcancel: 'إلغاء لمس',\n },\n\n logical: {\n when: 'عندما',\n where: 'أين',\n and: 'و',\n or: 'أو',\n not: 'ليس',\n is: 'هو',\n exists: 'موجود',\n matches: 'يطابق',\n contains: 'يحتوي',\n includes: 'يشمل',\n equals: 'يساوي',\n has: 'لديه', // third-person: he/it has\n have: 'لدي', // first-person: I have\n then: 'ثم',\n else: 'وإلا',\n otherwise: 'خلاف ذلك',\n end: 'النهاية',\n },\n\n temporal: {\n seconds: 'ثوانِ',\n second: 'ثانية',\n milliseconds: 'ميلي ثانية',\n millisecond: 'ميلي ثانية',\n minutes: 'دقائق',\n minute: 'دقيقة',\n hours: 'ساعات',\n hour: 'ساعة',\n ms: 'م.ث',\n s: 'ث',\n min: 'د',\n h: 'س',\n },\n\n values: {\n true: 'صحيح',\n false: 'خطأ',\n null: 'فارغ',\n undefined: 'غير معرف',\n it: 'هو',\n its: 'له', // REVIEW: native speaker\n me: 'أنا',\n my: 'لي',\n myself: 'نفسي',\n you: 'أنت', // REVIEW: native speaker\n your: 'لك', // REVIEW: native speaker\n yourself: 'نفسك', // REVIEW: native speaker\n element: 'عنصر',\n target: 'هدف',\n detail: 'تفاصيل',\n event: 'حدث',\n window: 'نافذة',\n document: 'وثيقة',\n body: 'جسم',\n result: 'نتيجة',\n value: 'قيمة',\n },\n\n attributes: {\n class: 'فئة',\n classes: 'فئات',\n style: 'أسلوب',\n styles: 'أساليب',\n attribute: 'خاصية',\n attributes: 'خصائص',\n property: 'خاصية',\n properties: 'خصائص',\n },\n\n expressions: {\n // Positional\n first: 'أول',\n last: 'آخر',\n next: 'التالي',\n previous: 'السابق',\n prev: 'سابق',\n at: 'عند',\n random: 'عشوائي',\n\n // DOM Traversal\n closest: 'الأقرب',\n parent: 'والد',\n children: 'أطفال',\n within: 'داخل',\n\n // Emptiness/Existence\n no: 'لا يوجد',\n empty: 'فارغ',\n some: 'بعض',\n\n // String operations\n 'starts with': 'يبدأ بـ',\n 'ends with': 'ينتهي بـ',\n },\n};\n","// packages/i18n/src/dictionaries/tr.ts\n\nimport { Dictionary } from '../types';\n\nexport const tr: Dictionary = {\n commands: {\n // Event handling\n on: 'üzerinde',\n tell: 'söyle',\n trigger: 'tetikle',\n send: 'gönder',\n\n // DOM manipulation\n take: 'al',\n put: 'koy',\n set: 'ayarla',\n get: 'al',\n add: 'ekle',\n remove: 'kaldır',\n toggle: 'değiştir',\n hide: 'gizle',\n show: 'göster',\n\n // Control flow\n if: 'eğer',\n unless: 'değilse',\n repeat: 'tekrarla',\n for: 'için',\n while: 'iken',\n until: 'kadar',\n continue: 'devam',\n break: 'dur',\n halt: 'durdur',\n\n // Async\n wait: 'bekle',\n fetch: 'getir',\n call: 'çağır',\n return: 'dön',\n\n // Other commands\n make: 'yap',\n log: 'kaydet',\n throw: 'fırlat',\n catch: 'yakala',\n measure: 'ölç',\n transition: 'geçiş',\n\n // Data Commands\n increment: 'artır',\n decrement: 'azalt',\n bind: 'bağla',\n default: 'varsayılan',\n persist: 'kalıcı',\n\n // Navigation Commands\n go: 'git',\n pushUrl: 'urlEkle',\n replaceUrl: 'urlDeğiştir',\n\n // Utility Commands\n copy: 'kopyala',\n pick: 'seç',\n beep: 'bip',\n\n // Advanced Commands\n js: 'js',\n async: 'asenkron',\n render: 'render',\n\n // Animation Commands\n swap: 'takas',\n morph: 'dönüştür',\n settle: 'sabitlen',\n\n // Content Commands\n append: 'ekle',\n\n // Control Flow\n exit: 'çık',\n\n // Behaviors\n install: 'kur',\n },\n\n modifiers: {\n to: 'e',\n from: 'den',\n into: 'içine',\n with: 'ile',\n at: 'de',\n in: 'içinde',\n of: 'nin',\n as: 'olarak',\n by: 'tarafından',\n before: 'önce',\n after: 'sonra',\n over: 'üzerinde',\n under: 'altında',\n between: 'arasında',\n through: 'boyunca',\n without: 'olmadan',\n },\n\n events: {\n click: 'tıklama',\n dblclick: 'çift_tıklama',\n mousedown: 'fare_bas',\n mouseup: 'fare_bırak',\n mouseenter: 'fare_gir',\n mouseleave: 'fare_çık',\n mouseover: 'fare_üstü',\n mouseout: 'fare_dışı',\n mousemove: 'fare_hareket',\n\n keydown: 'tuş_bas',\n keyup: 'tuş_bırak',\n keypress: 'tuş_basım',\n\n focus: 'odak',\n blur: 'bulanık',\n change: 'değişim',\n input: 'giriş',\n submit: 'gönder',\n reset: 'sıfırla',\n\n load: 'yükle',\n unload: 'yükle_kaldır',\n resize: 'boyut_değiştir',\n scroll: 'kaydır',\n\n touchstart: 'dokunma_başla',\n touchend: 'dokunma_bitir',\n touchmove: 'dokunma_hareket',\n touchcancel: 'dokunma_iptal',\n },\n\n logical: {\n when: 'iken', // REVIEW: native speaker - could also be 'durumunda' (in case of) or 'olduğunda' (when it happens)\n where: 'nerede', // REVIEW: native speaker - element filter context\n and: 've',\n or: 'veya',\n not: 'değil',\n is: 'dir',\n exists: 'var',\n matches: 'eşleşir',\n contains: 'içerir',\n includes: 'dahil',\n equals: 'eşittir',\n has: 'var', // existence marker (context-based)\n have: 'var', // same for first/third person in Turkish\n then: 'sonra',\n else: 'yoksa',\n otherwise: 'aksi_halde',\n end: 'son',\n },\n\n temporal: {\n seconds: 'saniye',\n second: 'saniye',\n milliseconds: 'milisaniye',\n millisecond: 'milisaniye',\n minutes: 'dakika',\n minute: 'dakika',\n hours: 'saat',\n hour: 'saat',\n ms: 'ms',\n s: 's',\n min: 'dk',\n h: 'sa',\n },\n\n values: {\n true: 'doğru',\n false: 'yanlış',\n null: 'boş',\n undefined: 'tanımsız',\n it: 'o',\n its: 'onun', // REVIEW: native speaker\n me: 'ben',\n my: 'benim',\n myself: 'kendim',\n you: 'sen', // REVIEW: native speaker - formal/informal\n your: 'senin', // REVIEW: native speaker - formal/informal\n yourself: 'kendin', // REVIEW: native speaker\n element: 'öğe',\n target: 'hedef',\n detail: 'detay',\n event: 'olay',\n window: 'pencere',\n document: 'belge',\n body: 'gövde',\n result: 'sonuç',\n value: 'değer',\n },\n\n attributes: {\n class: 'sınıf',\n classes: 'sınıflar',\n style: 'stil',\n styles: 'stiller',\n attribute: 'özellik',\n attributes: 'özellikler',\n property: 'özellik',\n properties: 'özellikler',\n },\n\n expressions: {\n // Positional\n first: 'ilk',\n last: 'son',\n next: 'sonraki',\n previous: 'önceki',\n prev: 'önc',\n at: 'de',\n random: 'rastgele',\n\n // DOM Traversal\n closest: 'en_yakın',\n parent: 'ebeveyn',\n children: 'çocuklar',\n within: 'içinde',\n\n // Emptiness/Existence\n no: 'yok',\n empty: 'boş',\n some: 'bazı',\n\n // String operations\n 'starts with': 'ile başlar',\n 'ends with': 'ile biter',\n },\n};\n","// packages/i18n/src/dictionaries/id.ts\n\nimport { Dictionary } from '../types';\n\nexport const id: Dictionary = {\n commands: {\n // Event handling\n on: 'pada',\n tell: 'katakan',\n trigger: 'picu',\n send: 'kirim',\n\n // DOM manipulation\n take: 'ambil',\n put: 'taruh',\n set: 'atur',\n get: 'dapatkan',\n add: 'tambah',\n remove: 'hapus',\n toggle: 'ganti',\n hide: 'sembunyikan',\n show: 'tampilkan',\n\n // Control flow\n if: 'jika',\n unless: 'kecuali',\n repeat: 'ulangi',\n for: 'untuk',\n while: 'selama',\n until: 'sampai',\n continue: 'lanjutkan',\n break: 'hentikan',\n halt: 'berhenti',\n\n // Async\n wait: 'tunggu',\n fetch: 'ambil',\n call: 'panggil',\n return: 'kembali',\n\n // Other commands\n make: 'buat',\n log: 'catat',\n throw: 'lempar',\n catch: 'tangkap',\n measure: 'ukur',\n transition: 'transisi',\n\n // Data Commands\n increment: 'tambahkan',\n decrement: 'kurangi',\n bind: 'ikat',\n default: 'bawaan',\n persist: 'simpan',\n\n // Navigation Commands\n go: 'pergi',\n pushUrl: 'tambahUrl',\n replaceUrl: 'gantiUrl',\n\n // Utility Commands\n copy: 'salin',\n pick: 'pilih',\n beep: 'bunyi',\n\n // Advanced Commands\n js: 'js',\n async: 'asinkron',\n render: 'tampilkan',\n\n // Animation Commands\n swap: 'tukar',\n morph: 'ubah_bentuk',\n settle: 'stabil',\n\n // Content Commands\n append: 'tambah_akhir',\n\n // Control Flow\n exit: 'keluar',\n\n // Behaviors\n install: 'pasang',\n },\n\n modifiers: {\n to: 'ke',\n from: 'dari',\n into: 'ke_dalam',\n with: 'dengan',\n at: 'di',\n in: 'dalam',\n of: 'dari',\n as: 'sebagai',\n by: 'oleh',\n before: 'sebelum',\n after: 'setelah',\n over: 'di_atas',\n under: 'di_bawah',\n between: 'antara',\n through: 'melalui',\n without: 'tanpa',\n },\n\n events: {\n click: 'klik',\n dblclick: 'klik_ganda',\n mousedown: 'tekan_mouse',\n mouseup: 'lepas_mouse',\n mouseenter: 'mouse_masuk',\n mouseleave: 'mouse_keluar',\n mouseover: 'mouse_atas',\n mouseout: 'mouse_luar',\n mousemove: 'gerak_mouse',\n\n keydown: 'tekan_tombol',\n keyup: 'lepas_tombol',\n keypress: 'pencet_tombol',\n\n focus: 'fokus',\n blur: 'blur',\n change: 'ubah',\n input: 'masukan',\n submit: 'kirim',\n reset: 'reset',\n\n load: 'muat',\n unload: 'bongkar',\n resize: 'ubah_ukuran',\n scroll: 'gulir',\n\n touchstart: 'mulai_sentuh',\n touchend: 'akhir_sentuh',\n touchmove: 'gerak_sentuh',\n touchcancel: 'batal_sentuh',\n },\n\n logical: {\n when: 'ketika',\n where: 'di_mana',\n and: 'dan',\n or: 'atau',\n not: 'bukan',\n is: 'adalah',\n exists: 'ada',\n matches: 'cocok',\n contains: 'berisi',\n includes: 'termasuk',\n equals: 'sama',\n has: 'punya', // possession verb (context-based)\n have: 'punya', // same for first/third person\n then: 'lalu',\n else: 'lainnya',\n otherwise: 'sebaliknya',\n end: 'akhir',\n },\n\n temporal: {\n seconds: 'detik',\n second: 'detik',\n milliseconds: 'milidetik',\n millisecond: 'milidetik',\n minutes: 'menit',\n minute: 'menit',\n hours: 'jam',\n hour: 'jam',\n ms: 'ms',\n s: 'd',\n min: 'mnt',\n h: 'j',\n },\n\n values: {\n true: 'benar',\n false: 'salah',\n null: 'kosong',\n undefined: 'tidak_terdefinisi',\n it: 'itu',\n its: 'miliknya', // REVIEW: native speaker\n me: 'saya',\n my: 'saya punya',\n myself: 'saya sendiri',\n you: 'kamu', // REVIEW: native speaker - formal/informal\n your: 'kamu punya', // REVIEW: native speaker\n yourself: 'kamu sendiri', // REVIEW: native speaker\n element: 'elemen',\n target: 'target',\n detail: 'detail',\n event: 'peristiwa',\n window: 'jendela',\n document: 'dokumen',\n body: 'badan',\n result: 'hasil',\n value: 'nilai',\n },\n\n attributes: {\n class: 'kelas',\n classes: 'kelas_kelas',\n style: 'gaya',\n styles: 'gaya_gaya',\n attribute: 'atribut',\n attributes: 'atribut_atribut',\n property: 'properti',\n properties: 'properti_properti',\n },\n\n expressions: {\n // Positional\n first: 'pertama',\n last: 'terakhir',\n next: 'berikutnya',\n previous: 'sebelumnya',\n prev: 'sblm',\n at: 'di',\n random: 'acak',\n\n // DOM Traversal\n closest: 'terdekat',\n parent: 'induk',\n children: 'anak_anak',\n within: 'dalam',\n\n // Emptiness/Existence\n no: 'tidak_ada',\n empty: 'kosong',\n some: 'beberapa',\n\n // String operations\n 'starts with': 'dimulai dengan',\n 'ends with': 'diakhiri dengan',\n },\n};\n","// packages/i18n/src/dictionaries/qu.ts\n\nimport { Dictionary } from '../types';\n\nexport const qu: Dictionary = {\n commands: {\n // Event handling\n on: 'kaqpi',\n tell: 'niy',\n trigger: 'kichay',\n send: 'kachay',\n\n // DOM manipulation\n take: 'hurquy',\n put: 'churay',\n set: 'churay',\n get: 'chaskiy',\n add: 'yapay',\n remove: 'qichuy',\n toggle: 'tikray',\n hide: 'pakay',\n show: 'rikuchiy',\n\n // Control flow\n if: 'sichus',\n unless: 'mana_sichus',\n repeat: 'kutichiy',\n for: 'rayku',\n while: 'kay_kaq',\n until: 'hayk_akama',\n continue: 'purichiy',\n break: 'p_akiy',\n halt: 'sayay',\n\n // Async\n wait: 'suyay',\n fetch: 'apamuy',\n call: 'qayay',\n return: 'kutimuy',\n\n // Other commands\n make: 'ruray',\n log: 'qillqay',\n throw: 'wikchuy',\n catch: 'hapsiy',\n measure: 'tupuy',\n transition: 'tikray',\n\n // Data Commands\n increment: 'yapay',\n decrement: 'pisiyachiy',\n bind: 'watay',\n default: 'ñawpaq_kaq',\n persist: 'waqaychay',\n\n // Navigation Commands\n go: 'riy',\n pushUrl: 'url_tanqay',\n replaceUrl: 'url_tikray',\n\n // Utility Commands\n copy: 'qillqay',\n pick: 'akllay',\n beep: 'waqay',\n\n // Advanced Commands\n js: 'js',\n async: 'mana_suyaspa',\n render: 'rikuchiy',\n\n // Animation Commands\n swap: 'rantin_tikray',\n morph: 'tikrachiy',\n settle: 'tiyay',\n\n // Content Commands\n append: 'qhipaman_yapay',\n\n // Control Flow\n exit: 'lluqsiy',\n\n // Behaviors\n install: 'churay',\n },\n\n modifiers: {\n to: 'man',\n from: 'manta',\n into: 'ukupi',\n with: 'wan',\n at: 'pi',\n in: 'ukupi',\n of: 'pa',\n as: 'hina',\n by: 'rayku',\n before: 'ñawpaqpi',\n after: 'qhepapi',\n over: 'hawapi',\n under: 'urapi',\n between: 'chawpipi',\n through: 'pasaspa',\n without: 'mana',\n },\n\n events: {\n click: 'ñitiy',\n dblclick: 'iskay_ñitiy',\n mousedown: 'rat_ñitiy',\n mouseup: 'rat_huqariy',\n mouseenter: 'rat_yaykuy',\n mouseleave: 'rat_lluqsiy',\n mouseover: 'rat_hawapi',\n mouseout: 'rat_hawamanta',\n mousemove: 'rat_kuyuy',\n\n keydown: 'yupana_ñitiy',\n keyup: 'yupana_huqariy',\n keypress: 'yupana_ñitana',\n\n focus: 'qhaway',\n blur: 'paqariy',\n change: 'tikray',\n input: 'yaykuchiy',\n submit: 'kachay',\n reset: 'qallariy',\n\n load: 'apakuy',\n unload: 'urmay',\n resize: 'hatun_kay',\n scroll: 'kunray',\n\n touchstart: 'llamiy_qallay',\n touchend: 'llamiy_tukuy',\n touchmove: 'llamiy_kuyuy',\n touchcancel: 'llamiy_hark_ay',\n },\n\n logical: {\n when: 'maykama',\n where: 'maypi',\n and: 'chaymanta',\n or: 'utaq',\n not: 'mana',\n is: 'kanqa',\n exists: 'tiyan',\n matches: 'tupan',\n contains: 'ukupi_kan',\n includes: 'churasqa',\n equals: 'kikin',\n has: 'kachkan', // existence suffix (context-based)\n have: 'kachkani', // first-person with suffix\n then: 'chayqa',\n else: 'mana_chayqa',\n otherwise: 'huk_kaqpi',\n end: 'tukuy',\n },\n\n temporal: {\n seconds: 'sikundukuna',\n second: 'sikundu',\n milliseconds: 'iskay_paqta_sikundukuna',\n millisecond: 'iskay_paqta_sikundu',\n minutes: 'minutukuna',\n minute: 'minutu',\n hours: 'horakuna',\n hour: 'hora',\n ms: 'ms',\n s: 's',\n min: 'm',\n h: 'h',\n },\n\n values: {\n true: 'cheqaq',\n false: 'llulla',\n null: 'ch_usaq',\n undefined: 'mana_riqsisqa',\n it: 'chay',\n its: 'chaypaq', // REVIEW: native speaker\n me: 'noqa',\n my: 'noqaq',\n myself: 'noqa killa',\n you: 'qam', // REVIEW: native speaker\n your: 'qampaq', // REVIEW: native speaker\n yourself: 'qam killa', // REVIEW: native speaker\n element: 'raku',\n target: 'punta',\n detail: 'sut_iy',\n event: 'ruway',\n window: 'k_iri',\n document: 'qillqa',\n body: 'kurku',\n result: 'lluqsiy',\n value: 'chanin',\n },\n\n attributes: {\n class: 'ayllu',\n classes: 'ayllukuna',\n style: 'sami',\n styles: 'samikuna',\n attribute: 'kaq',\n attributes: 'kaqkuna',\n property: 'kanay',\n properties: 'kanaykuna',\n },\n\n expressions: {\n // Positional\n first: 'ñawpaq',\n last: 'qhipa',\n next: 'qhipantin',\n previous: 'ñawpaqnin',\n prev: 'ñawpaq',\n at: 'pi',\n random: 'imaymanata',\n\n // DOM Traversal\n closest: 'aswan_kaylla',\n parent: 'mama_tayta',\n children: 'wawakuna',\n within: 'ukupi',\n\n // Emptiness/Existence\n no: 'mana_kanchu',\n empty: 'ch_usaq',\n some: 'wakin',\n\n // String operations\n 'starts with': 'qallarisqa wan',\n 'ends with': 'tukusqa wan',\n },\n};\n","// packages/i18n/src/dictionaries/sw.ts\n\nimport { Dictionary } from '../types';\n\nexport const sw: Dictionary = {\n commands: {\n // Event handling\n on: 'kwenye',\n tell: 'ambia',\n trigger: 'chochea',\n send: 'tuma',\n\n // DOM manipulation\n take: 'chukua',\n put: 'weka',\n set: 'weka',\n get: 'pata',\n add: 'ongeza',\n remove: 'ondoa',\n toggle: 'badilisha',\n hide: 'ficha',\n show: 'onyesha',\n\n // Control flow\n if: 'kama',\n unless: 'isipokuwa',\n repeat: 'rudia',\n for: 'kwa',\n while: 'wakati',\n until: 'hadi',\n continue: 'endelea',\n break: 'vunja',\n halt: 'simama',\n\n // Async\n wait: 'ngoja',\n fetch: 'leta',\n call: 'ita',\n return: 'rudi',\n\n // Other commands\n make: 'fanya',\n log: 'andika',\n throw: 'tupa',\n catch: 'shika',\n measure: 'pima',\n transition: 'mpito',\n\n // Data Commands\n increment: 'ongeza',\n decrement: 'punguza',\n bind: 'funga',\n default: 'msingi',\n persist: 'hifadhi',\n\n // Navigation Commands\n go: 'nenda',\n pushUrl: 'sukumaUrl',\n replaceUrl: 'badilishaUrl',\n\n // Utility Commands\n copy: 'nakili',\n pick: 'chagua',\n beep: 'lia',\n\n // Advanced Commands\n js: 'js',\n async: 'sainkroni',\n render: 'chora',\n\n // Animation Commands\n swap: 'badilishana',\n morph: 'badilishaUmbo',\n settle: 'tulia',\n\n // Content Commands\n append: 'ongezaMwisho',\n\n // Control Flow\n exit: 'toka',\n\n // Behaviors\n install: 'sakinisha',\n },\n\n modifiers: {\n to: 'kwa',\n from: 'kutoka',\n into: 'ndani',\n with: 'na',\n at: 'katika',\n in: 'ndani',\n of: 'ya',\n as: 'kama',\n by: 'na',\n before: 'kabla',\n after: 'baada',\n over: 'juu',\n under: 'chini',\n between: 'kati',\n through: 'kupitia',\n without: 'bila',\n },\n\n events: {\n click: 'bonyeza',\n dblclick: 'bonyeza_mara_mbili',\n mousedown: 'panya_shuka',\n mouseup: 'panya_juu',\n mouseenter: 'panya_ingia',\n mouseleave: 'panya_toka',\n mouseover: 'panya_juu',\n mouseout: 'panya_nje',\n mousemove: 'panya_sogea',\n\n keydown: 'kitufe_shuka',\n keyup: 'kitufe_juu',\n keypress: 'kitufe_bonyeza',\n\n focus: 'zingatia',\n blur: 'poteza_macho',\n change: 'badilisha',\n input: 'ingizo',\n submit: 'wasilisha',\n reset: 'weka_upya',\n\n load: 'pakia',\n unload: 'shuka',\n resize: 'badilisha_ukubwa',\n scroll: 'sogeza',\n\n touchstart: 'gusa_anza',\n touchend: 'gusa_mwisho',\n touchmove: 'gusa_sogea',\n touchcancel: 'gusa_ghairi',\n },\n\n logical: {\n when: 'wakati',\n where: 'wapi',\n and: 'na',\n or: 'au',\n not: 'si',\n is: 'ni',\n exists: 'ipo',\n matches: 'inafanana',\n contains: 'ina',\n includes: 'pamoja',\n equals: 'sawa',\n has: 'ana', // third-person: yeye ana\n have: 'nina', // first-person: mimi nina\n then: 'kisha',\n else: 'sivyo',\n otherwise: 'vinginevyo',\n end: 'mwisho',\n },\n\n temporal: {\n seconds: 'sekunde',\n second: 'sekunde',\n milliseconds: 'millisekunde',\n millisecond: 'millisekunde',\n minutes: 'dakika',\n minute: 'dakika',\n hours: 'masaa',\n hour: 'saa',\n ms: 'ms',\n s: 's',\n min: 'dk',\n h: 'sa',\n },\n\n values: {\n true: 'kweli',\n false: 'uongo',\n null: 'tupu',\n undefined: 'haijafafanuliwa',\n it: 'hiyo',\n its: 'yake', // REVIEW: native speaker\n me: 'mimi',\n my: 'yangu',\n myself: 'mimi mwenyewe',\n you: 'wewe', // REVIEW: native speaker\n your: 'yako', // REVIEW: native speaker\n yourself: 'wewe mwenyewe', // REVIEW: native speaker\n element: 'kipengele',\n target: 'lengo',\n detail: 'maelezo',\n event: 'tukio',\n window: 'dirisha',\n document: 'hati',\n body: 'mwili',\n result: 'matokeo',\n value: 'thamani',\n },\n\n attributes: {\n class: 'darasa',\n classes: 'madarasa',\n style: 'mtindo',\n styles: 'mitindo',\n attribute: 'sifa',\n attributes: 'sifa',\n property: 'mali',\n properties: 'mali',\n },\n\n expressions: {\n // Positional\n first: 'kwanza',\n last: 'mwisho',\n next: 'ijayo',\n previous: 'iliyopita',\n prev: 'awali',\n at: 'katika',\n random: 'nasibu',\n\n // DOM Traversal\n closest: 'karibu_zaidi',\n parent: 'mzazi',\n children: 'watoto',\n within: 'ndani_ya',\n\n // Emptiness/Existence\n no: 'hakuna',\n empty: 'tupu',\n some: 'baadhi',\n\n // String operations\n 'starts with': 'huanza na',\n 'ends with': 'huisha na',\n },\n};\n","// packages/i18n/src/dictionaries/pt.ts\n\nimport { Dictionary } from '../types';\n\n/**\n * Portuguese (Português) dictionary for hyperscript keywords.\n * Brazilian Portuguese variant.\n */\nexport const pt: Dictionary = {\n commands: {\n // Event handling\n on: 'em',\n tell: 'dizer',\n trigger: 'disparar',\n send: 'enviar',\n\n // DOM manipulation\n take: 'pegar',\n put: 'colocar',\n set: 'definir',\n get: 'obter',\n add: 'adicionar',\n remove: 'remover',\n toggle: 'alternar',\n hide: 'esconder',\n show: 'mostrar',\n\n // Control flow\n if: 'se',\n unless: 'a_menos', // REVIEW: native speaker - multi-word\n repeat: 'repetir',\n for: 'para',\n while: 'enquanto',\n until: 'até',\n continue: 'continuar',\n break: 'parar',\n halt: 'interromper',\n\n // Async\n wait: 'esperar',\n fetch: 'buscar',\n call: 'chamar',\n return: 'retornar',\n\n // Other commands\n make: 'fazer',\n log: 'registrar',\n throw: 'lançar',\n catch: 'capturar',\n measure: 'medir',\n transition: 'transição',\n\n // Data Commands\n increment: 'incrementar',\n decrement: 'decrementar',\n bind: 'vincular',\n default: 'padrão',\n persist: 'persistir',\n\n // Navigation Commands\n go: 'ir',\n pushUrl: 'pushUrl',\n replaceUrl: 'substituirUrl',\n\n // Utility Commands\n copy: 'copiar',\n pick: 'escolher',\n beep: 'apitar',\n\n // Advanced Commands\n js: 'js',\n async: 'assíncrono',\n render: 'renderizar',\n\n // Animation Commands\n swap: 'trocar',\n morph: 'transformar',\n settle: 'estabilizar',\n\n // Content Commands\n append: 'anexar',\n\n // Control Flow\n exit: 'sair',\n\n // Behaviors\n install: 'instalar',\n },\n\n modifiers: {\n to: 'para',\n from: 'de',\n into: 'em',\n with: 'com',\n at: 'em',\n in: 'dentro',\n of: 'de',\n as: 'como',\n by: 'por',\n before: 'antes',\n after: 'depois',\n over: 'sobre',\n under: 'sob',\n between: 'entre',\n through: 'através',\n without: 'sem',\n },\n\n events: {\n click: 'clique',\n dblclick: 'duploClique',\n mousedown: 'mouseBaixo',\n mouseup: 'mouseCima',\n mouseenter: 'mouseEntrar',\n mouseleave: 'mouseSair',\n mouseover: 'mouseSobre',\n mouseout: 'mouseFora',\n mousemove: 'mouseMover',\n\n keydown: 'teclaBaixo',\n keyup: 'teclaCima',\n keypress: 'teclaPressionar',\n\n focus: 'foco',\n blur: 'desfoque',\n change: 'mudança',\n input: 'entrada',\n submit: 'envio',\n reset: 'reiniciar',\n\n load: 'carregar',\n unload: 'descarregar',\n resize: 'redimensionar',\n scroll: 'rolar',\n\n touchstart: 'toqueInício',\n touchend: 'toqueFim',\n touchmove: 'toqueMover',\n touchcancel: 'toqueCancelar',\n },\n\n logical: {\n when: 'quando',\n where: 'onde',\n and: 'e',\n or: 'ou',\n not: 'não',\n is: 'é',\n exists: 'existe',\n matches: 'corresponde',\n contains: 'contém',\n includes: 'inclui',\n equals: 'igual',\n has: 'tem', // third-person: ele/ela tem\n have: 'tenho', // first-person: eu tenho\n then: 'então',\n else: 'senão',\n otherwise: 'caso_contrário', // REVIEW: native speaker\n end: 'fim',\n },\n\n temporal: {\n seconds: 'segundos',\n second: 'segundo',\n milliseconds: 'milissegundos',\n millisecond: 'milissegundo',\n minutes: 'minutos',\n minute: 'minuto',\n hours: 'horas',\n hour: 'hora',\n ms: 'ms',\n s: 's',\n min: 'min',\n h: 'h',\n },\n\n values: {\n true: 'verdadeiro',\n false: 'falso',\n null: 'nulo',\n undefined: 'indefinido',\n it: 'isso',\n its: 'seu',\n me: 'eu',\n my: 'meu',\n myself: 'eu mesmo', // REVIEW: native speaker\n you: 'você',\n your: 'seu',\n yourself: 'você mesmo', // REVIEW: native speaker\n element: 'elemento',\n target: 'alvo',\n detail: 'detalhe',\n event: 'evento',\n window: 'janela',\n document: 'documento',\n body: 'corpo',\n result: 'resultado',\n value: 'valor',\n },\n\n attributes: {\n class: 'classe',\n classes: 'classes',\n style: 'estilo',\n styles: 'estilos',\n attribute: 'atributo',\n attributes: 'atributos',\n property: 'propriedade',\n properties: 'propriedades',\n },\n\n expressions: {\n // Positional\n first: 'primeiro',\n last: 'último',\n next: 'próximo',\n previous: 'anterior',\n prev: 'ant',\n at: 'em',\n random: 'aleatório',\n\n // DOM Traversal\n closest: 'mais_próximo', // REVIEW: native speaker - multi-word\n parent: 'pai',\n children: 'filhos',\n within: 'dentro',\n\n // Emptiness/Existence\n no: 'nenhum',\n empty: 'vazio',\n some: 'algum',\n\n // String operations\n 'starts with': 'começa com',\n 'ends with': 'termina com',\n },\n};\n","// packages/i18n/src/dictionaries/it.ts\n\nimport { Dictionary } from '../types';\n\nexport const it: Dictionary = {\n commands: {\n // Event handling\n on: 'su',\n tell: 'dire',\n trigger: 'scatenare',\n send: 'inviare',\n\n // DOM manipulation\n take: 'prendere',\n put: 'mettere',\n set: 'impostare',\n get: 'ottenere',\n add: 'aggiungere',\n remove: 'rimuovere',\n toggle: 'commutare',\n hide: 'nascondere',\n show: 'mostrare',\n\n // Control flow\n if: 'se',\n unless: 'a meno che',\n repeat: 'ripetere',\n for: 'per',\n while: 'mentre',\n until: 'fino',\n continue: 'continuare',\n break: 'interrompere',\n halt: 'fermare',\n\n // Async\n wait: 'aspettare',\n fetch: 'recuperare',\n call: 'chiamare',\n return: 'ritornare',\n\n // Other commands\n make: 'fare',\n log: 'registrare',\n throw: 'lanciare',\n catch: 'catturare',\n measure: 'misurare',\n transition: 'transizione',\n\n // Data Commands\n increment: 'incrementare',\n decrement: 'decrementare',\n bind: 'vincolare',\n default: 'predefinito',\n persist: 'persistere',\n\n // Navigation Commands\n go: 'andare',\n pushUrl: 'pushUrl',\n replaceUrl: 'sostituireUrl',\n\n // Utility Commands\n copy: 'copiare',\n pick: 'scegliere',\n beep: 'beep',\n\n // Advanced Commands\n js: 'js',\n async: 'asincrono',\n render: 'renderizzare',\n\n // Animation Commands\n swap: 'scambiare',\n morph: 'trasformare',\n settle: 'stabilizzare',\n\n // Content Commands\n append: 'aggiungere',\n\n // Control Flow\n exit: 'uscire',\n\n // Behaviors\n install: 'installare',\n },\n\n modifiers: {\n to: 'a',\n from: 'da',\n into: 'in',\n with: 'con',\n at: 'a',\n in: 'in',\n of: 'di',\n as: 'come',\n by: 'per',\n before: 'prima',\n after: 'dopo',\n over: 'sopra',\n under: 'sotto',\n between: 'tra',\n through: 'attraverso',\n without: 'senza',\n },\n\n events: {\n click: 'clic',\n dblclick: 'doppioclic',\n mousedown: 'mousegiù',\n mouseup: 'mousesu',\n mouseenter: 'mouseentra',\n mouseleave: 'mouseesce',\n mouseover: 'mousesopra',\n mouseout: 'mousefuori',\n mousemove: 'mousemuovi',\n\n keydown: 'tastogiù',\n keyup: 'tastosu',\n keypress: 'tastopremi',\n\n focus: 'fuoco',\n blur: 'sfuocatura',\n change: 'cambio',\n input: 'input',\n submit: 'invio',\n reset: 'reset',\n\n load: 'carica',\n unload: 'scarica',\n resize: 'ridimensiona',\n scroll: 'scorrimento',\n\n touchstart: 'toccoinizia',\n touchend: 'toccofine',\n touchmove: 'toccomuovi',\n touchcancel: 'toccoannulla',\n },\n\n logical: {\n when: 'quando',\n where: 'dove',\n and: 'e',\n or: 'o',\n not: 'non',\n is: 'è',\n exists: 'esiste',\n matches: 'corrisponde',\n contains: 'contiene',\n includes: 'include',\n equals: 'uguale',\n has: 'ha', // third-person: lui/lei ha\n have: 'ho', // first-person: io ho\n then: 'allora',\n else: 'altrimenti',\n otherwise: 'altrimenti',\n end: 'fine',\n },\n\n temporal: {\n seconds: 'secondi',\n second: 'secondo',\n milliseconds: 'millisecondi',\n millisecond: 'millisecondo',\n minutes: 'minuti',\n minute: 'minuto',\n hours: 'ore',\n hour: 'ora',\n ms: 'ms',\n s: 's',\n min: 'min',\n h: 'h',\n },\n\n values: {\n true: 'vero',\n false: 'falso',\n null: 'nullo',\n undefined: 'indefinito',\n it: 'esso',\n its: 'suo',\n me: 'io',\n my: 'mio',\n you: 'tu',\n your: 'tuo',\n yourself: 'te stesso',\n myself: 'me stesso',\n element: 'elemento',\n target: 'obiettivo',\n detail: 'dettaglio',\n event: 'evento',\n window: 'finestra',\n document: 'documento',\n body: 'corpo',\n result: 'risultato',\n value: 'valore',\n },\n\n attributes: {\n class: 'classe',\n classes: 'classi',\n style: 'stile',\n styles: 'stili',\n attribute: 'attributo',\n attributes: 'attributi',\n property: 'proprietà',\n properties: 'proprietà',\n },\n\n expressions: {\n // Positional\n first: 'primo',\n last: 'ultimo',\n next: 'prossimo',\n previous: 'precedente',\n prev: 'prec',\n at: 'a',\n random: 'casuale',\n\n // DOM Traversal\n closest: 'piùvicino',\n parent: 'genitore',\n children: 'figli',\n within: 'dentro',\n\n // Emptiness/Existence\n no: 'nessun',\n empty: 'vuoto',\n some: 'qualche',\n\n // String operations\n 'starts with': 'inizia con',\n 'ends with': 'finisce con',\n },\n};\n","// packages/i18n/src/dictionaries/vi.ts\n\nimport { Dictionary } from '../types';\n\nexport const vi: Dictionary = {\n commands: {\n // Event handling\n on: 'khi',\n tell: 'nói với',\n trigger: 'kích hoạt',\n send: 'gửi',\n\n // DOM manipulation\n take: 'lấy',\n put: 'đặt',\n set: 'gán',\n get: 'lấy giá trị',\n add: 'thêm',\n remove: 'xóa',\n toggle: 'chuyển đổi',\n hide: 'ẩn',\n show: 'hiển thị',\n\n // Control flow\n if: 'nếu',\n unless: 'trừ khi',\n repeat: 'lặp lại',\n for: 'với mỗi',\n while: 'trong khi',\n until: 'cho đến khi',\n continue: 'tiếp tục',\n break: 'dừng',\n halt: 'dừng lại',\n\n // Async\n wait: 'chờ',\n fetch: 'tải',\n call: 'gọi',\n return: 'trả về',\n\n // Other commands\n make: 'tạo',\n log: 'in ra',\n throw: 'ném',\n catch: 'bắt',\n measure: 'đo lường',\n transition: 'chuyển tiếp',\n\n // Data Commands\n increment: 'tăng',\n decrement: 'giảm',\n bind: 'ràng buộc',\n default: 'mặc định',\n persist: 'duy trì',\n\n // Navigation Commands\n go: 'đi đến',\n pushUrl: 'pushUrl',\n replaceUrl: 'thayThếUrl',\n\n // Utility Commands\n copy: 'sao chép',\n pick: 'chọn',\n beep: 'beep',\n\n // Advanced Commands\n js: 'js',\n async: 'bất đồng bộ',\n render: 'hiển thị',\n\n // Animation Commands\n swap: 'hoán đổi',\n morph: 'biến đổi',\n settle: 'ổn định',\n\n // Content Commands\n append: 'nối',\n\n // Control Flow\n exit: 'thoát',\n\n // Focus\n focus: 'tập trung',\n blur: 'mất tập trung',\n\n // Additional\n init: 'khởi tạo',\n behavior: 'hành vi',\n install: 'cài đặt',\n clone: 'sao chép',\n prepend: 'thêm đầu',\n else: 'không thì',\n },\n\n modifiers: {\n into: 'vào',\n before: 'trước',\n after: 'sau',\n then: 'rồi',\n end: 'kết thúc',\n from: 'từ',\n to: 'đến',\n with: 'với',\n as: 'như',\n by: 'bởi',\n on: 'trên',\n in: 'trong',\n at: 'tại',\n of: 'của',\n the: '',\n times: 'lần',\n },\n\n events: {\n click: 'nhấp',\n dblclick: 'nhấp đúp',\n input: 'nhập',\n change: 'thay đổi',\n submit: 'gửi',\n keydown: 'phím xuống',\n keyup: 'phím lên',\n keypress: 'nhấn phím',\n mouseover: 'chuột vào',\n mouseout: 'chuột ra',\n mouseenter: 'chuột vào',\n mouseleave: 'chuột rời',\n focus: 'tập trung',\n blur: 'mất tập trung',\n load: 'tải',\n scroll: 'cuộn',\n resize: 'đổi kích thước',\n },\n\n logical: {\n when: 'khi',\n where: 'ở_đâu',\n and: 'và',\n or: 'hoặc',\n not: 'không',\n is: 'là',\n equals: 'bằng',\n contains: 'chứa',\n matches: 'khớp',\n exists: 'tồn tại',\n has: 'có', // possession verb (context-based)\n have: 'có', // same for first/third person\n empty: 'trống',\n true: 'đúng',\n false: 'sai',\n null: 'rỗng',\n },\n\n temporal: {\n now: 'bây giờ',\n today: 'hôm nay',\n tomorrow: 'ngày mai',\n yesterday: 'hôm qua',\n always: 'luôn luôn',\n never: 'không bao giờ',\n sometimes: 'đôi khi',\n once: 'một lần',\n twice: 'hai lần',\n forever: 'mãi mãi',\n },\n\n values: {\n true: 'đúng',\n false: 'sai',\n null: 'rỗng',\n undefined: 'không xác định',\n none: 'không có',\n all: 'tất cả',\n any: 'bất kỳ',\n some: 'một số',\n each: 'mỗi',\n every: 'tất cả',\n },\n\n attributes: {\n id: 'id',\n class: 'lớp',\n style: 'kiểu',\n value: 'giá trị',\n text: 'văn bản',\n html: 'html',\n src: 'nguồn',\n href: 'liên kết',\n disabled: 'vô hiệu',\n hidden: 'ẩn',\n checked: 'được chọn',\n selected: 'được chọn',\n },\n\n expressions: {\n me: 'tôi',\n my: 'của tôi',\n it: 'nó',\n its: 'của nó',\n result: 'kết quả',\n event: 'sự kiện',\n target: 'mục tiêu',\n first: 'đầu tiên',\n last: 'cuối cùng',\n next: 'tiếp theo',\n previous: 'trước đó',\n parent: 'cha',\n children: 'con',\n closest: 'gần nhất',\n },\n};\n","// packages/i18n/src/dictionaries/pl.ts\n\nimport { Dictionary } from '../types';\n\n/**\n * Polish Dictionary\n *\n * Polish uses IMPERATIVE verb forms for software commands\n * (unlike most languages which use infinitive).\n */\nexport const pl: Dictionary = {\n commands: {\n // Event handling\n on: 'gdy',\n tell: 'powiedz',\n trigger: 'wywołaj',\n send: 'wyślij',\n\n // DOM manipulation\n take: 'weź',\n put: 'umieść',\n set: 'ustaw',\n get: 'pobierz',\n add: 'dodaj',\n remove: 'usuń',\n toggle: 'przełącz',\n hide: 'ukryj',\n show: 'pokaż',\n\n // Control flow\n if: 'jeśli',\n unless: 'chyba',\n repeat: 'powtórz',\n for: 'dla',\n while: 'dopóki',\n until: 'aż',\n continue: 'kontynuuj',\n break: 'przerwij',\n halt: 'zatrzymaj',\n\n // Async\n wait: 'czekaj',\n fetch: 'pobierz',\n call: 'wywołaj',\n return: 'zwróć',\n\n // Other commands\n make: 'utwórz',\n log: 'loguj',\n throw: 'rzuć',\n catch: 'złap',\n measure: 'zmierz',\n transition: 'animuj',\n\n // Data Commands\n increment: 'zwiększ',\n decrement: 'zmniejsz',\n bind: 'powiąż',\n default: 'domyślnie',\n persist: 'zachowaj',\n\n // Navigation Commands\n go: 'idź',\n pushUrl: 'dodajUrl',\n replaceUrl: 'zamieńUrl',\n\n // Utility Commands\n copy: 'kopiuj',\n pick: 'wybierz',\n beep: 'sygnał',\n\n // Advanced Commands\n js: 'js',\n async: 'async',\n render: 'renderuj',\n\n // Animation Commands\n swap: 'zamień',\n morph: 'przekształć',\n settle: 'ustabilizuj',\n\n // Content Commands\n append: 'dołącz',\n\n // Control Flow\n exit: 'wyjdź',\n\n // Behaviors\n install: 'zainstaluj',\n },\n\n modifiers: {\n to: 'do',\n from: 'z',\n into: 'do',\n with: 'z',\n at: 'przy',\n in: 'w',\n of: 'z',\n as: 'jako',\n by: 'przez',\n before: 'przed',\n after: 'po',\n over: 'nad',\n under: 'pod',\n between: 'między',\n through: 'przez',\n without: 'bez',\n },\n\n events: {\n click: 'kliknięcie',\n dblclick: 'podwójnekliknięcie',\n mousedown: 'myszdół',\n mouseup: 'myszgóra',\n mouseenter: 'myszwejście',\n mouseleave: 'myszwyjście',\n mouseover: 'mysznad',\n mouseout: 'myszpoza',\n mousemove: 'myszruch',\n\n keydown: 'klawiszdół',\n keyup: 'klawiszgóra',\n keypress: 'klawisznaciśnięcie',\n\n focus: 'fokus',\n blur: 'rozmycie',\n change: 'zmiana',\n input: 'wejście',\n submit: 'wyślij',\n reset: 'resetuj',\n\n load: 'załaduj',\n unload: 'wyładuj',\n resize: 'zmieńrozmiar',\n scroll: 'przewiń',\n\n touchstart: 'dotykstart',\n touchend: 'dotykkoniec',\n touchmove: 'dotykruch',\n touchcancel: 'dotykanuluj',\n },\n\n logical: {\n when: 'kiedy',\n where: 'gdzie',\n and: 'i',\n or: 'lub',\n not: 'nie',\n is: 'jest',\n exists: 'istnieje',\n matches: 'pasuje',\n contains: 'zawiera',\n includes: 'obejmuje',\n equals: 'równa się',\n has: 'ma', // third-person: on/ona ma\n have: 'mam', // first-person: ja mam\n then: 'wtedy',\n else: 'inaczej',\n otherwise: 'wpp',\n end: 'koniec',\n },\n\n temporal: {\n seconds: 'sekundy',\n second: 'sekunda',\n milliseconds: 'milisekundy',\n millisecond: 'milisekunda',\n minutes: 'minuty',\n minute: 'minuta',\n hours: 'godziny',\n hour: 'godzina',\n ms: 'ms',\n s: 's',\n min: 'min',\n h: 'godz',\n },\n\n values: {\n true: 'prawda',\n false: 'fałsz',\n null: 'null',\n undefined: 'niezdefiniowane',\n it: 'to',\n its: 'jego',\n me: 'ja',\n my: 'mój',\n you: 'ty',\n your: 'twój',\n yourself: 'ty sam',\n myself: 'ja sam',\n element: 'element',\n target: 'cel',\n detail: 'szczegół',\n event: 'zdarzenie',\n window: 'okno',\n document: 'dokument',\n body: 'body',\n result: 'wynik',\n value: 'wartość',\n },\n\n attributes: {\n class: 'klasa',\n classes: 'klasy',\n style: 'styl',\n styles: 'style',\n attribute: 'atrybut',\n attributes: 'atrybuty',\n property: 'właściwość',\n properties: 'właściwości',\n },\n\n expressions: {\n // Positional\n first: 'pierwszy',\n last: 'ostatni',\n next: 'następny',\n previous: 'poprzedni',\n prev: 'poprz',\n at: 'przy',\n random: 'losowy',\n\n // DOM Traversal\n closest: 'najbliższy',\n parent: 'rodzic',\n children: 'dzieci',\n within: 'wewnątrz',\n\n // Emptiness/Existence\n no: 'brak',\n empty: 'pusty',\n some: 'jakiś',\n\n // String operations\n 'starts with': 'zaczyna się od',\n 'ends with': 'kończy się na',\n },\n};\n","/**\n * Russian Dictionary\n *\n * Translations for Russian language support.\n * Uses infinitive verbs (common in software UIs).\n */\n\nimport { Dictionary } from '../types';\n\nexport const russianDictionary: Dictionary = {\n commands: {\n // Event handling\n on: 'при',\n tell: 'сказать',\n trigger: 'вызвать',\n send: 'отправить',\n\n // DOM manipulation\n take: 'взять',\n put: 'положить',\n set: 'установить',\n get: 'получить',\n add: 'добавить',\n remove: 'удалить',\n toggle: 'переключить',\n hide: 'скрыть',\n show: 'показать',\n\n // Control flow\n if: 'если',\n unless: 'если_не',\n repeat: 'повторить',\n for: 'для',\n while: 'пока',\n until: 'до',\n continue: 'продолжить',\n break: 'прервать',\n halt: 'остановить',\n\n // Async\n wait: 'ждать',\n fetch: 'загрузить',\n call: 'вызвать',\n return: 'вернуть',\n\n // Other commands\n make: 'создать',\n log: 'записать',\n throw: 'бросить',\n catch: 'поймать',\n measure: 'измерить',\n transition: 'анимировать',\n\n // Data Commands\n increment: 'увеличить',\n decrement: 'уменьшить',\n bind: 'связать',\n default: 'по_умолчанию',\n persist: 'сохранить',\n\n // Navigation Commands\n go: 'перейти',\n pushUrl: 'добавить_url',\n replaceUrl: 'заменить_url',\n\n // Utility Commands\n copy: 'копировать',\n pick: 'выбрать',\n beep: 'звук',\n\n // Advanced Commands\n js: 'js',\n async: 'асинхронно',\n render: 'отобразить',\n\n // Animation Commands\n swap: 'поменять',\n morph: 'трансформировать',\n settle: 'стабилизировать',\n\n // Content Commands\n append: 'добавить_в_конец',\n\n // Control Flow\n exit: 'выйти',\n else: 'иначе',\n\n // Behaviors\n install: 'установить',\n init: 'инициализировать',\n behavior: 'поведение',\n\n // Focus\n focus: 'сфокусировать',\n blur: 'размыть',\n\n // Clone\n clone: 'клонировать',\n prepend: 'добавить_в_начало',\n },\n\n modifiers: {\n to: 'к',\n from: 'из',\n into: 'в',\n with: 'с',\n at: 'у',\n in: 'в',\n of: 'из',\n as: 'как',\n by: 'на',\n before: 'до',\n after: 'после',\n over: 'над',\n under: 'под',\n between: 'между',\n through: 'через',\n without: 'без',\n on: 'на',\n },\n\n events: {\n click: 'клик',\n dblclick: 'двойной_клик',\n mousedown: 'мышь_вниз',\n mouseup: 'мышь_вверх',\n mouseenter: 'мышь_вход',\n mouseleave: 'мышь_выход',\n mouseover: 'наведение',\n mouseout: 'уход',\n mousemove: 'движение_мыши',\n\n keydown: 'клавиша_вниз',\n keyup: 'клавиша_вверх',\n keypress: 'нажатие_клавиши',\n\n focus: 'фокус',\n blur: 'потеря_фокуса',\n change: 'изменение',\n input: 'ввод',\n submit: 'отправка',\n reset: 'сброс',\n\n load: 'загрузка',\n unload: 'выгрузка',\n resize: 'изменение_размера',\n scroll: 'прокрутка',\n\n touchstart: 'касание_начало',\n touchend: 'касание_конец',\n touchmove: 'касание_движение',\n touchcancel: 'касание_отмена',\n },\n\n logical: {\n when: 'когда',\n where: 'где',\n and: 'и',\n or: 'или',\n not: 'не',\n is: 'есть',\n exists: 'существует',\n matches: 'соответствует',\n contains: 'содержит',\n includes: 'включает',\n equals: 'равно',\n then: 'затем',\n else: 'иначе',\n otherwise: 'в_противном_случае',\n end: 'конец',\n has: 'имеет', // third-person: он/она имеет\n have: 'имею', // first-person: я имею\n isNot: 'не_есть',\n empty: 'пустой',\n },\n\n temporal: {\n seconds: 'секунд',\n second: 'секунда',\n milliseconds: 'миллисекунд',\n millisecond: 'миллисекунда',\n minutes: 'минут',\n minute: 'минута',\n hours: 'часов',\n hour: 'час',\n ms: 'мс',\n s: 'с',\n min: 'мин',\n h: 'ч',\n forever: 'всегда',\n once: 'однажды',\n every: 'каждый',\n until: 'до',\n },\n\n values: {\n true: 'истина',\n false: 'ложь',\n null: 'ничего',\n undefined: 'неопределено',\n it: 'это',\n its: 'его',\n me: 'я',\n my: 'мой',\n you: 'ты',\n your: 'твой',\n yourself: 'сам',\n myself: 'я_сам',\n element: 'элемент',\n target: 'цель',\n detail: 'детали',\n event: 'событие',\n window: 'окно',\n document: 'документ',\n body: 'тело',\n result: 'результат',\n value: 'значение',\n first: 'первый',\n last: 'последний',\n next: 'следующий',\n previous: 'предыдущий',\n closest: 'ближайший',\n parent: 'родитель',\n },\n\n attributes: {\n class: 'класс',\n classes: 'классы',\n style: 'стиль',\n styles: 'стили',\n attribute: 'атрибут',\n attributes: 'атрибуты',\n property: 'свойство',\n properties: 'свойства',\n disabled: 'отключено',\n hidden: 'скрыто',\n checked: 'отмечено',\n selected: 'выбрано',\n readonly: 'только_чтение',\n required: 'обязательно',\n text: 'текст',\n html: 'html',\n },\n\n expressions: {\n // Positional\n first: 'первый',\n last: 'последний',\n next: 'следующий',\n previous: 'предыдущий',\n prev: 'пред',\n at: 'в',\n random: 'случайный',\n\n // DOM Traversal\n closest: 'ближайший',\n parent: 'родитель',\n children: 'дети',\n within: 'внутри',\n\n // Emptiness/Existence\n no: 'нет',\n empty: 'пустой',\n some: 'некоторые',\n\n // String operations\n 'starts with': 'начинается_с',\n 'ends with': 'заканчивается_на',\n },\n};\n","/**\n * Ukrainian Dictionary\n *\n * Translations for Ukrainian language support.\n * Uses infinitive verbs (common in software UIs).\n */\n\nimport { Dictionary } from '../types';\n\nexport const ukrainianDictionary: Dictionary = {\n commands: {\n // Event handling\n on: 'при',\n tell: 'сказати',\n trigger: 'викликати',\n send: 'надіслати',\n\n // DOM manipulation\n take: 'взяти',\n put: 'покласти',\n set: 'встановити',\n get: 'отримати',\n add: 'додати',\n remove: 'видалити',\n toggle: 'перемкнути',\n hide: 'сховати',\n show: 'показати',\n\n // Control flow\n if: 'якщо',\n unless: 'якщо_не',\n repeat: 'повторити',\n for: 'для',\n while: 'поки',\n until: 'до',\n continue: 'продовжити',\n break: 'перервати',\n halt: 'зупинити',\n\n // Async\n wait: 'чекати',\n fetch: 'завантажити',\n call: 'викликати',\n return: 'повернути',\n\n // Other commands\n make: 'створити',\n log: 'записати',\n throw: 'кинути',\n catch: 'зловити',\n measure: 'виміряти',\n transition: 'анімувати',\n\n // Data Commands\n increment: 'збільшити',\n decrement: 'зменшити',\n bind: \"прив'язати\",\n default: 'за_замовчуванням',\n persist: 'зберегти',\n\n // Navigation Commands\n go: 'перейти',\n pushUrl: 'додати_url',\n replaceUrl: 'замінити_url',\n\n // Utility Commands\n copy: 'копіювати',\n pick: 'вибрати',\n beep: 'звук',\n\n // Advanced Commands\n js: 'js',\n async: 'асинхронно',\n render: 'відобразити',\n\n // Animation Commands\n swap: 'поміняти',\n morph: 'трансформувати',\n settle: 'стабілізувати',\n\n // Content Commands\n append: 'додати_в_кінець',\n\n // Control Flow\n exit: 'вийти',\n else: 'інакше',\n\n // Behaviors\n install: 'встановити',\n init: 'ініціалізувати',\n behavior: 'поведінка',\n\n // Focus\n focus: 'сфокусувати',\n blur: 'розфокусувати',\n\n // Clone\n clone: 'клонувати',\n prepend: 'додати_на_початок',\n },\n\n modifiers: {\n to: 'до',\n from: 'з',\n into: 'в',\n with: 'з',\n at: 'в',\n in: 'у',\n of: 'з',\n as: 'як',\n by: 'на',\n before: 'до',\n after: 'після',\n over: 'над',\n under: 'під',\n between: 'між',\n through: 'через',\n without: 'без',\n on: 'на',\n },\n\n events: {\n click: 'клік',\n dblclick: 'подвійний_клік',\n mousedown: 'миша_вниз',\n mouseup: 'миша_вгору',\n mouseenter: 'миша_вхід',\n mouseleave: 'миша_вихід',\n mouseover: 'наведення',\n mouseout: 'відведення',\n mousemove: 'рух_миші',\n\n keydown: 'клавіша_вниз',\n keyup: 'клавіша_вгору',\n keypress: 'натискання_клавіші',\n\n focus: 'фокус',\n blur: 'розфокус',\n change: 'зміна',\n input: 'введення',\n submit: 'надсилання',\n reset: 'скидання',\n\n load: 'завантаження',\n unload: 'вивантаження',\n resize: 'зміна_розміру',\n scroll: 'прокрутка',\n\n touchstart: 'дотик_початок',\n touchend: 'дотик_кінець',\n touchmove: 'дотик_рух',\n touchcancel: 'дотик_скасування',\n },\n\n logical: {\n when: 'коли',\n where: 'де',\n and: 'і',\n or: 'або',\n not: 'не',\n is: 'є',\n exists: 'існує',\n matches: 'відповідає',\n contains: 'містить',\n includes: 'включає',\n equals: 'дорівнює',\n then: 'тоді',\n else: 'інакше',\n otherwise: 'в_іншому_випадку',\n end: 'кінець',\n has: 'має', // third-person: він/вона має\n have: 'маю', // first-person: я маю\n isNot: 'не_є',\n empty: 'порожній',\n },\n\n temporal: {\n seconds: 'секунд',\n second: 'секунда',\n milliseconds: 'мілісекунд',\n millisecond: 'мілісекунда',\n minutes: 'хвилин',\n minute: 'хвилина',\n hours: 'годин',\n hour: 'година',\n ms: 'мс',\n s: 'с',\n min: 'хв',\n h: 'год',\n forever: 'завжди',\n once: 'один_раз',\n every: 'кожний',\n until: 'до',\n },\n\n values: {\n true: 'істина',\n false: 'хибність',\n null: 'нічого',\n undefined: 'невизначено',\n it: 'це',\n its: 'його',\n me: 'я',\n my: 'мій',\n you: 'ти',\n your: 'твій',\n yourself: 'сам',\n myself: 'я_сам',\n element: 'елемент',\n target: 'ціль',\n detail: 'деталі',\n event: 'подія',\n window: 'вікно',\n document: 'документ',\n body: 'тіло',\n result: 'результат',\n value: 'значення',\n first: 'перший',\n last: 'останній',\n next: 'наступний',\n previous: 'попередній',\n closest: 'найближчий',\n parent: 'батьківський',\n },\n\n attributes: {\n class: 'клас',\n classes: 'класи',\n style: 'стиль',\n styles: 'стилі',\n attribute: 'атрибут',\n attributes: 'атрибути',\n property: 'властивість',\n properties: 'властивості',\n disabled: 'вимкнено',\n hidden: 'приховано',\n checked: 'позначено',\n selected: 'вибрано',\n readonly: 'лише_читання',\n required: \"обов'язково\",\n text: 'текст',\n html: 'html',\n },\n\n expressions: {\n // Positional\n first: 'перший',\n last: 'останній',\n next: 'наступний',\n previous: 'попередній',\n prev: 'попер',\n at: 'в',\n random: 'випадковий',\n\n // DOM Traversal\n closest: 'найближчий',\n parent: 'батьківський',\n children: 'діти',\n within: 'всередині',\n\n // Emptiness/Existence\n no: 'ні',\n empty: 'порожній',\n some: 'деякі',\n\n // String operations\n 'starts with': 'починається_з',\n 'ends with': 'закінчується_на',\n },\n};\n","/**\n * Hindi Dictionary\n *\n * Translations for Hindi language support.\n * Uses imperative verb forms (common in software UIs).\n */\n\nimport { Dictionary } from '../types';\n\nexport const hindiDictionary: Dictionary = {\n commands: {\n // Event handling\n on: 'पर',\n tell: 'बताएं',\n trigger: 'ट्रिगर',\n send: 'भेजें',\n\n // DOM manipulation\n take: 'लें',\n put: 'रखें',\n set: 'सेट',\n get: 'प्राप्त',\n add: 'जोड़ें',\n remove: 'हटाएं',\n toggle: 'टॉगल',\n hide: 'छिपाएं',\n show: 'दिखाएं',\n\n // Control flow\n if: 'अगर',\n unless: 'जब_तक_नहीं',\n repeat: 'दोहराएं',\n for: 'के_लिए',\n while: 'जब_तक',\n until: 'तक',\n continue: 'जारी',\n break: 'रोकें',\n halt: 'रोकें',\n\n // Async\n wait: 'प्रतीक्षा',\n fetch: 'लाएं',\n call: 'कॉल',\n return: 'लौटाएं',\n\n // Other commands\n make: 'बनाएं',\n log: 'लॉग',\n throw: 'फेंकें',\n catch: 'पकड़ें',\n measure: 'मापें',\n transition: 'संक्रमण',\n\n // Data Commands\n increment: 'बढ़ाएं',\n decrement: 'घटाएं',\n bind: 'बाँधें',\n default: 'डिफ़ॉल्ट',\n persist: 'सहेजें',\n\n // Navigation Commands\n go: 'जाएं',\n pushUrl: 'url_जोड़ें',\n replaceUrl: 'url_बदलें',\n\n // Utility Commands\n copy: 'कॉपी',\n pick: 'चुनें',\n beep: 'बीप',\n\n // Advanced Commands\n js: 'जेएस',\n async: 'असिंक',\n render: 'रेंडर',\n\n // Animation Commands\n swap: 'बदलें',\n morph: 'रूपांतर',\n settle: 'स्थिर',\n\n // Content Commands\n append: 'जोड़ें_अंत',\n\n // Control Flow\n exit: 'बाहर',\n else: 'वरना',\n\n // Behaviors\n install: 'इंस्टॉल',\n init: 'प्रारंभ',\n behavior: 'व्यवहार',\n\n // Focus\n focus: 'फोकस',\n blur: 'धुंधला',\n\n // Clone\n clone: 'कॉपी',\n prepend: 'जोड़ें_शुरू',\n },\n\n modifiers: {\n to: 'को',\n from: 'से',\n into: 'में',\n with: 'के_साथ',\n at: 'पर',\n in: 'में',\n of: 'का',\n as: 'के_रूप_में',\n by: 'द्वारा',\n before: 'से_पहले',\n after: 'के_बाद',\n over: 'के_ऊपर',\n under: 'के_नीचे',\n between: 'के_बीच',\n through: 'के_माध्यम_से',\n without: 'के_बिना',\n on: 'पर',\n },\n\n events: {\n click: 'क्लिक',\n dblclick: 'डबल_क्लिक',\n mousedown: 'माउस_नीचे',\n mouseup: 'माउस_ऊपर',\n mouseenter: 'माउस_प्रवेश',\n mouseleave: 'माउस_बाहर',\n mouseover: 'माउस_ओवर',\n mouseout: 'माउस_आउट',\n mousemove: 'माउस_मूव',\n\n keydown: 'की_नीचे',\n keyup: 'की_ऊपर',\n keypress: 'की_प्रेस',\n\n focus: 'फोकस',\n blur: 'धुंधला',\n change: 'परिवर्तन',\n input: 'इनपुट',\n submit: 'जमा',\n reset: 'रीसेट',\n\n load: 'लोड',\n unload: 'अनलोड',\n resize: 'आकार_बदलें',\n scroll: 'स्क्रॉल',\n\n touchstart: 'टच_शुरू',\n touchend: 'टच_समाप्त',\n touchmove: 'टच_मूव',\n touchcancel: 'टच_रद्द',\n },\n\n logical: {\n when: 'जब',\n where: 'कहाँ',\n and: 'और',\n or: 'या',\n not: 'नहीं',\n is: 'है',\n exists: 'मौजूद',\n matches: 'मेल_खाता',\n contains: 'शामिल',\n includes: 'में_है',\n equals: 'बराबर',\n then: 'फिर',\n else: 'वरना',\n otherwise: 'अन्यथा',\n end: 'समाप्त',\n has: 'है', // existence verb (context-based)\n have: 'है', // same verb for first/third person\n isNot: 'नहीं_है',\n empty: 'खाली',\n },\n\n temporal: {\n seconds: 'सेकंड',\n second: 'सेकंड',\n milliseconds: 'मिलीसेकंड',\n millisecond: 'मिलीसेकंड',\n minutes: 'मिनट',\n minute: 'मिनट',\n hours: 'घंटे',\n hour: 'घंटा',\n ms: 'मिसे',\n s: 'से',\n min: 'मि',\n h: 'घं',\n forever: 'हमेशा',\n once: 'एक_बार',\n every: 'हर',\n until: 'तक',\n },\n\n values: {\n true: 'सच',\n false: 'झूठ',\n null: 'खाली',\n undefined: 'अपरिभाषित',\n it: 'यह',\n its: 'इसका',\n me: 'मैं',\n my: 'मेरा',\n you: 'आप',\n your: 'आपका',\n yourself: 'स्वयं',\n myself: 'मैं_स्वयं',\n element: 'तत्व',\n target: 'लक्ष्य',\n detail: 'विवरण',\n event: 'घटना',\n window: 'विंडो',\n document: 'दस्तावेज़',\n body: 'बॉडी',\n result: 'परिणाम',\n value: 'मान',\n first: 'पहला',\n last: 'अंतिम',\n next: 'अगला',\n previous: 'पिछला',\n closest: 'निकटतम',\n parent: 'मूल',\n },\n\n attributes: {\n class: 'क्लास',\n classes: 'क्लासेस',\n style: 'स्टाइल',\n styles: 'स्टाइल्स',\n attribute: 'गुण',\n attributes: 'गुण',\n property: 'संपत्ति',\n properties: 'संपत्तियाँ',\n disabled: 'अक्षम',\n hidden: 'छिपा',\n checked: 'चेक',\n selected: 'चयनित',\n readonly: 'केवल_पढ़ने',\n required: 'आवश्यक',\n text: 'पाठ',\n html: 'html',\n },\n\n expressions: {\n // Positional\n first: 'पहला',\n last: 'अंतिम',\n next: 'अगला',\n previous: 'पिछला',\n prev: 'पिछ',\n at: 'पर',\n random: 'यादृच्छिक',\n\n // DOM Traversal\n closest: 'निकटतम',\n parent: 'मूल',\n children: 'बच्चे',\n within: 'के_अंदर',\n\n // Emptiness/Existence\n no: 'नहीं',\n empty: 'खाली',\n some: 'कुछ',\n\n // String operations\n 'starts with': 'से_शुरू',\n 'ends with': 'पर_समाप्त',\n },\n};\n","/**\n * Bengali Dictionary\n *\n * Bengali translations for hyperscript keywords.\n */\n\nimport { Dictionary } from '../types';\n\nexport const bengaliDictionary: Dictionary = {\n commands: {\n on: 'তে',\n toggle: 'টগল',\n add: 'যোগ',\n remove: 'সরান',\n set: 'সেট',\n get: 'পান',\n put: 'রাখুন',\n take: 'নিন',\n show: 'দেখান',\n hide: 'লুকান',\n increment: 'বৃদ্ধি',\n decrement: 'হ্রাস',\n if: 'যদি',\n else: 'নতুবা',\n repeat: 'পুনরাবৃত্তি',\n for: 'জন্য',\n while: 'যতক্ষণ',\n wait: 'অপেক্ষা',\n fetch: 'আনুন',\n call: 'কল',\n return: 'ফিরুন',\n log: 'লগ',\n trigger: 'ট্রিগার',\n send: 'পাঠান',\n go: 'যান',\n halt: 'থামুন',\n throw: 'নিক্ষেপ',\n continue: 'চালিয়ে যান',\n make: 'তৈরি করুন',\n append: 'শেষে যোগ',\n prepend: 'শুরুতে যোগ',\n focus: 'ফোকাস',\n blur: 'ঝাপসা',\n transition: 'সংক্রমণ',\n settle: 'স্থির',\n measure: 'মাপুন',\n async: 'অ্যাসিঙ্ক',\n tell: 'বলুন',\n default: 'ডিফল্ট',\n init: 'শুরু',\n behavior: 'আচরণ',\n install: 'ইনস্টল',\n clone: 'কপি',\n swap: 'বদল',\n morph: 'রূপান্তর',\n },\n modifiers: {\n to: 'কে',\n from: 'থেকে',\n into: 'তে',\n on: 'তে',\n with: 'সাথে',\n by: 'দ্বারা',\n as: 'হিসাবে',\n before: 'আগে',\n after: 'পরে',\n at: 'এ',\n in: 'এ',\n over: 'উপর',\n then: 'তারপর',\n and: 'এবং',\n end: 'শেষ',\n until: 'পর্যন্ত',\n of: 'র',\n },\n events: {\n click: 'ক্লিক',\n change: 'পরিবর্তন',\n input: 'ইনপুট',\n submit: 'জমা',\n load: 'লোড',\n focus: 'ফোকাস',\n blur: 'ঝাপসা',\n keydown: 'কি-ডাউন',\n keyup: 'কি-আপ',\n mouseover: 'মাউস-ওভার',\n mouseout: 'মাউস-আউট',\n scroll: 'স্ক্রোল',\n resize: 'রিসাইজ',\n every: 'প্রতি',\n },\n logical: {\n if: 'যদি',\n when: 'যখন',\n where: 'কোথায়',\n else: 'নতুবা',\n not: 'না',\n and: 'এবং',\n or: 'অথবা',\n is: 'হয়',\n exists: 'আছে',\n has: 'আছে', // possession verb (context-based)\n have: 'আছি', // first-person: আমার আছি\n empty: 'খালি',\n true: 'সত্য',\n false: 'মিথ্যা',\n null: 'শূন্য',\n undefined: 'অনির্ধারিত',\n },\n temporal: {\n now: 'এখন',\n seconds: 'সেকেন্ড',\n milliseconds: 'মিলিসেকেন্ড',\n minutes: 'মিনিট',\n hours: 'ঘণ্টা',\n forever: 'চিরকাল',\n times: 'বার',\n s: 'সে',\n ms: 'মিসে',\n },\n values: {\n me: 'আমি',\n my: 'আমার',\n it: 'এটি',\n its: 'এর',\n result: 'ফলাফল',\n event: 'ঘটনা',\n target: 'লক্ষ্য',\n body: 'বডি',\n },\n attributes: {\n class: 'শ্রেণি',\n id: 'আইডি',\n style: 'শৈলী',\n value: 'মান',\n text: 'পাঠ্য',\n html: 'এইচটিএমএল',\n disabled: 'অক্ষম',\n checked: 'চেক করা',\n },\n expressions: {\n first: 'প্রথম',\n last: 'শেষ',\n next: 'পরবর্তী',\n previous: 'আগের',\n closest: 'নিকটতম',\n parent: 'মূল',\n children: 'সন্তান',\n random: 'এলোমেলো',\n length: 'দৈর্ঘ্য',\n index: 'সূচক',\n },\n};\n\n// Default export alias\nexport const bn = bengaliDictionary;\n","/**\n * Thai Dictionary\n *\n * Thai translations for hyperscript keywords.\n */\n\nimport { Dictionary } from '../types';\n\nexport const thaiDictionary: Dictionary = {\n commands: {\n on: 'เมื่อ',\n toggle: 'สลับ',\n add: 'เพิ่ม',\n remove: 'ลบ',\n set: 'ตั้ง',\n get: 'รับค่า',\n put: 'ใส่',\n take: 'รับ',\n show: 'แสดง',\n hide: 'ซ่อน',\n increment: 'เพิ่มค่า',\n decrement: 'ลดค่า',\n if: 'ถ้า',\n else: 'ไม่งั้น',\n repeat: 'ทำซ้ำ',\n for: 'สำหรับ',\n while: 'ในขณะที่',\n wait: 'รอ',\n fetch: 'ดึงข้อมูล',\n call: 'เรียก',\n return: 'คืนค่า',\n log: 'บันทึก',\n trigger: 'ทริกเกอร์',\n send: 'ส่ง',\n go: 'ไป',\n halt: 'หยุด',\n throw: 'โยน',\n continue: 'ต่อไป',\n make: 'สร้าง',\n append: 'เพิ่มท้าย',\n prepend: 'เพิ่มหน้า',\n focus: 'โฟกัส',\n blur: 'เบลอ',\n transition: 'เปลี่ยน',\n settle: 'คงที่',\n measure: 'วัด',\n async: 'อะซิงค์',\n tell: 'บอก',\n default: 'ค่าเริ่มต้น',\n init: 'เริ่มต้น',\n behavior: 'พฤติกรรม',\n install: 'ติดตั้ง',\n clone: 'คัดลอก',\n swap: 'สลับที่',\n morph: 'แปลงร่าง',\n },\n modifiers: {\n to: 'ไปยัง',\n from: 'จาก',\n into: 'ใน',\n on: 'เมื่อ',\n with: 'ด้วย',\n by: 'โดย',\n as: 'เป็น',\n before: 'ก่อน',\n after: 'หลัง',\n at: 'ที่',\n in: 'ใน',\n over: 'เหนือ',\n then: 'แล้ว',\n and: 'และ',\n end: 'จบ',\n until: 'จนถึง',\n of: 'ของ',\n },\n events: {\n click: 'คลิก',\n change: 'เปลี่ยนแปลง',\n input: 'อินพุต',\n submit: 'ส่ง',\n load: 'โหลด',\n focus: 'โฟกัส',\n blur: 'เบลอ',\n keydown: 'กดคีย์',\n keyup: 'ปล่อยคีย์',\n mouseover: 'เมาส์เข้า',\n mouseout: 'เมาส์ออก',\n scroll: 'เลื่อน',\n resize: 'ปรับขนาด',\n every: 'ทุก',\n },\n logical: {\n if: 'ถ้า',\n when: 'เมื่อ',\n where: 'ที่ไหน',\n else: 'ไม่งั้น',\n not: 'ไม่',\n and: 'และ',\n or: 'หรือ',\n is: 'เป็น',\n exists: 'มีอยู่',\n has: 'มี', // possession verb (context-based)\n have: 'มี', // same for first/third person\n empty: 'ว่าง',\n true: 'จริง',\n false: 'เท็จ',\n null: 'ว่าง',\n undefined: 'ไม่กำหนด',\n },\n temporal: {\n now: 'ตอนนี้',\n seconds: 'วินาที',\n milliseconds: 'มิลลิวินาที',\n minutes: 'นาที',\n hours: 'ชั่วโมง',\n forever: 'ตลอดไป',\n times: 'ครั้ง',\n s: 'วิ',\n ms: 'มว',\n },\n values: {\n me: 'ฉัน',\n my: 'ของฉัน',\n it: 'มัน',\n its: 'ของมัน',\n result: 'ผลลัพธ์',\n event: 'เหตุการณ์',\n target: 'เป้าหมาย',\n body: 'บอดี้',\n },\n attributes: {\n class: 'คลาส',\n id: 'ไอดี',\n style: 'สไตล์',\n value: 'ค่า',\n text: 'ข้อความ',\n html: 'เอชทีเอ็มแอล',\n disabled: 'ปิดใช้งาน',\n checked: 'เลือกแล้ว',\n },\n expressions: {\n first: 'แรก',\n last: 'สุดท้าย',\n next: 'ถัดไป',\n previous: 'ก่อนหน้า',\n closest: 'ใกล้สุด',\n parent: 'ต้นทาง',\n children: 'ลูก',\n random: 'สุ่ม',\n length: 'ความยาว',\n index: 'ดัชนี',\n },\n};\n\n// Default export alias\nexport const th = thaiDictionary;\n","/**\n * Malay Dictionary\n *\n * Malay translations for hyperscript keywords.\n * Malay is an SVO (Subject-Verb-Object) language with prepositions.\n */\n\nimport { Dictionary } from '../types';\n\nexport const malayDictionary: Dictionary = {\n commands: {\n // Event handling\n on: 'apabila',\n tell: 'beritahu',\n trigger: 'cetuskan',\n send: 'hantar',\n\n // DOM manipulation\n take: 'ambil',\n put: 'letak',\n set: 'tetapkan',\n get: 'dapatkan',\n add: 'tambah',\n remove: 'buang',\n toggle: 'togol',\n hide: 'sembunyi',\n show: 'tunjuk',\n\n // Control flow\n if: 'jika',\n unless: 'kecuali',\n repeat: 'ulang',\n for: 'untuk',\n while: 'selagi',\n until: 'sehingga',\n continue: 'teruskan',\n break: 'henti',\n halt: 'henti',\n\n // Async\n wait: 'tunggu',\n fetch: 'ambil_dari',\n call: 'panggil',\n return: 'pulang',\n\n // Other commands\n make: 'buat',\n log: 'catat',\n throw: 'lempar',\n catch: 'tangkap',\n measure: 'ukur',\n transition: 'peralihan',\n\n // Data Commands\n increment: 'tambah_satu',\n decrement: 'kurang_satu',\n bind: 'ikat',\n default: 'lalai',\n persist: 'kekal',\n\n // Navigation Commands\n go: 'pergi',\n pushUrl: 'tolak_url',\n replaceUrl: 'ganti_url',\n\n // Utility Commands\n copy: 'salin',\n pick: 'pilih',\n beep: 'bunyi',\n\n // Advanced Commands\n js: 'js',\n async: 'tak_segerak',\n render: 'papar',\n\n // Animation Commands\n swap: 'tukar_tempat',\n morph: 'ubah_bentuk',\n settle: 'selesai',\n\n // Content Commands\n append: 'tambah_hujung',\n prepend: 'tambah_mula',\n\n // Control Flow\n exit: 'keluar',\n else: 'kalau_tidak',\n\n // Focus Commands\n focus: 'fokus',\n blur: 'kabur',\n\n // Behaviors\n install: 'pasang',\n behavior: 'kelakuan',\n init: 'mula',\n clone: 'klon',\n },\n\n modifiers: {\n to: 'ke',\n from: 'dari',\n into: 'ke_dalam',\n with: 'dengan',\n at: 'di',\n in: 'dalam',\n of: 'daripada',\n as: 'sebagai',\n by: 'oleh',\n before: 'sebelum',\n after: 'selepas',\n over: 'atas',\n under: 'bawah',\n between: 'antara',\n through: 'melalui',\n without: 'tanpa',\n on: 'pada',\n then: 'kemudian',\n and: 'dan',\n end: 'tamat',\n until: 'sehingga',\n },\n\n events: {\n click: 'click',\n dblclick: 'dblclick',\n mousedown: 'mousedown',\n mouseup: 'mouseup',\n mouseenter: 'mouseenter',\n mouseleave: 'mouseleave',\n mouseover: 'mouseover',\n mouseout: 'mouseout',\n mousemove: 'mousemove',\n\n keydown: 'keydown',\n keyup: 'keyup',\n keypress: 'keypress',\n\n focus: 'focus',\n blur: 'blur',\n change: 'change',\n input: 'input',\n submit: 'submit',\n reset: 'reset',\n\n load: 'load',\n unload: 'unload',\n resize: 'resize',\n scroll: 'scroll',\n\n touchstart: 'touchstart',\n touchend: 'touchend',\n touchmove: 'touchmove',\n touchcancel: 'touchcancel',\n\n every: 'setiap',\n },\n\n logical: {\n when: 'apabila',\n where: 'di_mana',\n and: 'dan',\n or: 'atau',\n not: 'bukan',\n is: 'adalah',\n exists: 'wujud',\n matches: 'sepadan',\n contains: 'mengandungi',\n includes: 'termasuk',\n equals: 'sama',\n has: 'ada', // possession verb (context-based)\n have: 'ada', // same for first/third person\n then: 'kemudian',\n else: 'kalau_tidak',\n otherwise: 'jika_tidak',\n end: 'tamat',\n if: 'jika',\n empty: 'kosong',\n true: 'benar',\n false: 'salah',\n null: 'null',\n undefined: 'tidak_ditakrifkan',\n },\n\n temporal: {\n seconds: 'saat',\n second: 'saat',\n milliseconds: 'milisaat',\n millisecond: 'milisaat',\n minutes: 'minit',\n minute: 'minit',\n hours: 'jam',\n hour: 'jam',\n ms: 'ms',\n s: 's',\n min: 'min',\n h: 'j',\n now: 'sekarang',\n forever: 'selamanya',\n times: 'kali',\n },\n\n values: {\n true: 'benar',\n false: 'salah',\n null: 'null',\n undefined: 'tidak_ditakrifkan',\n it: 'ia',\n its: 'nya',\n me: 'saya',\n my: 'saya_punya',\n myself: 'diri_saya',\n you: 'kamu',\n your: 'kamu_punya',\n yourself: 'diri_kamu',\n element: 'elemen',\n target: 'sasaran',\n detail: 'perincian',\n event: 'peristiwa',\n window: 'tetingkap',\n document: 'dokumen',\n body: 'badan',\n result: 'hasil',\n value: 'nilai',\n },\n\n attributes: {\n class: 'kelas',\n classes: 'kelas_kelas',\n style: 'gaya',\n styles: 'gaya_gaya',\n attribute: 'atribut',\n attributes: 'atribut_atribut',\n property: 'sifat',\n properties: 'sifat_sifat',\n id: 'id',\n value: 'nilai',\n text: 'teks',\n html: 'html',\n disabled: 'dilumpuhkan',\n checked: 'ditanda',\n },\n\n expressions: {\n // Positional\n first: 'pertama',\n last: 'terakhir',\n next: 'seterusnya',\n previous: 'sebelumnya',\n prev: 'sebelum',\n at: 'di',\n random: 'rawak',\n\n // DOM Traversal\n closest: 'terdekat',\n parent: 'induk',\n children: 'anak_anak',\n within: 'dalam',\n\n // Emptiness/Existence\n no: 'tiada',\n empty: 'kosong',\n some: 'beberapa',\n\n // String operations\n 'starts with': 'bermula_dengan',\n 'ends with': 'berakhir_dengan',\n\n // Additional\n length: 'panjang',\n index: 'indeks',\n },\n};\n\n// Default export alias\nexport const ms = malayDictionary;\n","/**\n * Tagalog Dictionary\n *\n * Tagalog translations for hyperscript keywords.\n * Tagalog is a VSO (Verb-Subject-Object) language with rich verbal morphology.\n */\n\nimport { Dictionary } from '../types';\n\nexport const tagalogDictionary: Dictionary = {\n commands: {\n // Event handling\n on: 'kapag',\n tell: 'sabihin',\n trigger: 'palitawin',\n send: 'ipadala',\n\n // DOM manipulation\n take: 'kunin',\n put: 'ilagay',\n set: 'itakda',\n get: 'kuhanin',\n add: 'idagdag',\n remove: 'alisin',\n toggle: 'palitan',\n hide: 'itago',\n show: 'ipakita',\n\n // Control flow\n if: 'kung',\n unless: 'maliban_kung',\n repeat: 'ulitin',\n for: 'para_sa',\n while: 'habang',\n until: 'hanggang',\n continue: 'magpatuloy',\n break: 'itigil',\n halt: 'huminto',\n\n // Async\n wait: 'maghintay',\n fetch: 'kuhanin_mula',\n call: 'tawagin',\n return: 'ibalik',\n\n // Other commands\n make: 'gumawa',\n log: 'itala',\n throw: 'ihagis',\n catch: 'hulihin',\n measure: 'sukatin',\n transition: 'baguhin',\n\n // Data Commands\n increment: 'dagdagan',\n decrement: 'bawasan',\n bind: 'itali',\n default: 'pamantayan',\n persist: 'panatilihin',\n\n // Navigation Commands\n go: 'pumunta',\n pushUrl: 'itulak_url',\n replaceUrl: 'palitan_url',\n\n // Utility Commands\n copy: 'kopyahin',\n pick: 'pumili',\n beep: 'tunog',\n\n // Advanced Commands\n js: 'js',\n async: 'sabay',\n render: 'ipakita',\n\n // Animation Commands\n swap: 'palitan_pwesto',\n morph: 'baguhin_hugis',\n settle: 'ayusin',\n\n // Content Commands\n append: 'idagdag_sa_dulo',\n prepend: 'idagdag_sa_simula',\n\n // Control Flow\n exit: 'lumabas',\n else: 'kung_hindi',\n\n // Focus Commands\n focus: 'ituon',\n blur: 'alisin_tuon',\n\n // Behaviors\n install: 'ikabit',\n behavior: 'ugali',\n init: 'simulan',\n clone: 'kopyahin',\n },\n\n modifiers: {\n to: 'sa',\n from: 'mula_sa',\n into: 'papasok_sa',\n with: 'kasama',\n at: 'sa',\n in: 'sa_loob',\n of: 'ng',\n as: 'bilang',\n by: 'sa_pamamagitan_ng',\n before: 'bago',\n after: 'pagkatapos',\n over: 'sa_ibabaw',\n under: 'sa_ilalim',\n between: 'sa_pagitan',\n through: 'sa_pamamagitan',\n without: 'walang',\n on: 'sa',\n then: 'pagkatapos',\n and: 'at',\n end: 'wakas',\n until: 'hanggang',\n },\n\n events: {\n click: 'click',\n dblclick: 'dblclick',\n mousedown: 'mousedown',\n mouseup: 'mouseup',\n mouseenter: 'mouseenter',\n mouseleave: 'mouseleave',\n mouseover: 'mouseover',\n mouseout: 'mouseout',\n mousemove: 'mousemove',\n\n keydown: 'keydown',\n keyup: 'keyup',\n keypress: 'keypress',\n\n focus: 'focus',\n blur: 'blur',\n change: 'change',\n input: 'input',\n submit: 'submit',\n reset: 'reset',\n\n load: 'load',\n unload: 'unload',\n resize: 'resize',\n scroll: 'scroll',\n\n touchstart: 'touchstart',\n touchend: 'touchend',\n touchmove: 'touchmove',\n touchcancel: 'touchcancel',\n\n every: 'bawat',\n },\n\n logical: {\n when: 'kapag',\n where: 'kung_saan',\n and: 'at',\n or: 'o',\n not: 'hindi',\n is: 'ay',\n exists: 'may',\n matches: 'tumutugma',\n contains: 'naglalaman',\n includes: 'kasama',\n equals: 'katumbas',\n has: 'may', // possession verb (context-based)\n have: 'may', // same for first/third person in Tagalog\n then: 'pagkatapos',\n else: 'kung_hindi',\n otherwise: 'kung_hindi_man',\n end: 'wakas',\n if: 'kung',\n empty: 'walang_laman',\n true: 'totoo',\n false: 'mali',\n null: 'wala',\n undefined: 'hindi_tinukoy',\n },\n\n temporal: {\n seconds: 'segundo',\n second: 'segundo',\n milliseconds: 'milisegundo',\n millisecond: 'milisegundo',\n minutes: 'minuto',\n minute: 'minuto',\n hours: 'oras',\n hour: 'oras',\n ms: 'ms',\n s: 's',\n min: 'min',\n h: 'h',\n now: 'ngayon',\n forever: 'magpakailanman',\n times: 'beses',\n },\n\n values: {\n true: 'totoo',\n false: 'mali',\n null: 'wala',\n undefined: 'hindi_tinukoy',\n it: 'ito',\n its: 'nito',\n me: 'ako',\n my: 'aking',\n myself: 'sarili_ko',\n you: 'ikaw',\n your: 'iyong',\n yourself: 'sarili_mo',\n element: 'elemento',\n target: 'target',\n detail: 'detalye',\n event: 'pangyayari',\n window: 'bintana',\n document: 'dokumento',\n body: 'katawan',\n result: 'resulta',\n value: 'halaga',\n },\n\n attributes: {\n class: 'klase',\n classes: 'mga_klase',\n style: 'estilo',\n styles: 'mga_estilo',\n attribute: 'katangian',\n attributes: 'mga_katangian',\n property: 'ari_arian',\n properties: 'mga_ari_arian',\n id: 'id',\n value: 'halaga',\n text: 'teksto',\n html: 'html',\n disabled: 'hindi_pinagana',\n checked: 'naka_tsek',\n },\n\n expressions: {\n // Positional\n first: 'una',\n last: 'huli',\n next: 'susunod',\n previous: 'nakaraan',\n prev: 'nakaraan',\n at: 'sa',\n random: 'random',\n\n // DOM Traversal\n closest: 'pinakamalapit',\n parent: 'magulang',\n children: 'mga_anak',\n within: 'sa_loob_ng',\n\n // Emptiness/Existence\n no: 'walang',\n empty: 'walang_laman',\n some: 'ilan',\n\n // String operations\n 'starts with': 'nagsisimula_sa',\n 'ends with': 'nagtatapos_sa',\n\n // Additional\n length: 'haba',\n index: 'indeks',\n },\n};\n\n// Default export alias\nexport const tl = tagalogDictionary;\n","/**\n * Dictionary Index\n *\n * Exports dictionaries for all supported languages.\n *\n * Strategy: Dictionaries are derived from semantic profiles where possible,\n * with fallbacks to manual definitions for categories not in profiles\n * (events, temporal, some values, attributes).\n *\n * The semantic package's language profiles are the single source of truth\n * for command/modifier/logical keyword translations.\n *\n * TRANSITION NOTE: Currently using full legacy overrides to preserve\n * backward compatibility. Once profiles and dictionaries are synchronized,\n * the legacy overrides can be reduced to only non-profile categories.\n */\n\nimport { Dictionary } from '../types';\n\n// NOTE: Derivation infrastructure is ready but not yet active.\n// The languageProfiles from @lokascript/semantic can be used with deriveFromProfile()\n// once we're ready to transition away from legacy dictionaries.\n// See ./derive.ts for the derivation utilities.\n\n// Import legacy dictionaries for overrides\n// These provide backward compatibility during the transition period\nimport { en as enLegacy } from './en';\nimport { es as esLegacy } from './es';\nimport { ko as koLegacy } from './ko';\nimport { zh as zhLegacy } from './zh';\nimport { fr as frLegacy } from './fr';\nimport { de as deLegacy } from './de';\nimport { ja as jaLegacy } from './ja';\nimport { ar as arLegacy } from './ar';\nimport { tr as trLegacy } from './tr';\nimport { id as idLegacy } from './id';\nimport { qu as quLegacy } from './qu';\nimport { sw as swLegacy } from './sw';\nimport { pt as ptLegacy } from './pt';\nimport { it as itLegacy } from './it';\nimport { vi as viLegacy } from './vi';\nimport { pl as plLegacy } from './pl';\nimport { russianDictionary as ruLegacy } from './ru';\nimport { ukrainianDictionary as ukLegacy } from './uk';\nimport { hindiDictionary as hiLegacy } from './hi';\nimport { bengaliDictionary as bnLegacy } from './bn';\nimport { thaiDictionary as thLegacy } from './th';\nimport { malayDictionary as msLegacy } from './ms';\nimport { tagalogDictionary as tlLegacy } from './tl';\n\n// =============================================================================\n// Derived Dictionaries with Legacy Overrides\n// =============================================================================\n\n// For backward compatibility, we use full legacy overrides.\n// This ensures no translation changes while establishing the derivation infrastructure.\n// Future: Reduce overrides to only non-profile categories as profiles are synchronized.\n\n/**\n * English dictionary - uses legacy values for full compatibility.\n */\nexport const en: Dictionary = enLegacy;\n\n/**\n * Spanish dictionary - legacy overrides for compatibility.\n */\nexport const es: Dictionary = esLegacy;\n\n/**\n * Japanese dictionary - legacy overrides for compatibility.\n */\nexport const ja: Dictionary = jaLegacy;\n\n/**\n * Korean dictionary - legacy overrides for compatibility.\n */\nexport const ko: Dictionary = koLegacy;\n\n/**\n * Chinese dictionary - legacy overrides for compatibility.\n */\nexport const zh: Dictionary = zhLegacy;\n\n/**\n * French dictionary - legacy overrides for compatibility.\n */\nexport const fr: Dictionary = frLegacy;\n\n/**\n * German dictionary - legacy overrides for compatibility.\n */\nexport const de: Dictionary = deLegacy;\n\n/**\n * Arabic dictionary - legacy overrides for compatibility.\n */\nexport const ar: Dictionary = arLegacy;\n\n/**\n * Turkish dictionary - legacy overrides for compatibility.\n */\nexport const tr: Dictionary = trLegacy;\n\n/**\n * Indonesian dictionary - legacy overrides for compatibility.\n */\nexport const id: Dictionary = idLegacy;\n\n/**\n * Portuguese dictionary - legacy overrides for compatibility.\n */\nexport const pt: Dictionary = ptLegacy;\n\n/**\n * Quechua dictionary - legacy overrides for compatibility.\n */\nexport const qu: Dictionary = quLegacy;\n\n/**\n * Swahili dictionary - legacy overrides for compatibility.\n */\nexport const sw: Dictionary = swLegacy;\n\n/**\n * Italian dictionary - legacy overrides for compatibility.\n */\nexport const it: Dictionary = itLegacy;\n\n/**\n * Vietnamese dictionary - legacy overrides for compatibility.\n */\nexport const vi: Dictionary = viLegacy;\n\n/**\n * Polish dictionary - legacy overrides for compatibility.\n */\nexport const pl: Dictionary = plLegacy;\n\n/**\n * Russian dictionary - legacy overrides for compatibility.\n */\nexport const ru: Dictionary = ruLegacy;\n\n/**\n * Ukrainian dictionary - legacy overrides for compatibility.\n */\nexport const uk: Dictionary = ukLegacy;\n\n/**\n * Hindi dictionary - legacy overrides for compatibility.\n */\nexport const hi: Dictionary = hiLegacy;\n\n/**\n * Bengali dictionary - legacy overrides for compatibility.\n */\nexport const bn: Dictionary = bnLegacy;\n\n/**\n * Thai dictionary - legacy overrides for compatibility.\n */\nexport const th: Dictionary = thLegacy;\n\n/**\n * Malay dictionary - legacy overrides for compatibility.\n */\nexport const ms: Dictionary = msLegacy;\n\n/**\n * Tagalog dictionary - legacy overrides for compatibility.\n */\nexport const tl: Dictionary = tlLegacy;\n\n// =============================================================================\n// Dictionary Registry\n// =============================================================================\n\n/**\n * All available dictionaries indexed by locale code.\n */\nexport const dictionaries: Record<string, Dictionary> = {\n en,\n es,\n ko,\n zh,\n fr,\n de,\n ja,\n ar,\n tr,\n id,\n qu,\n sw,\n pt,\n it,\n vi,\n pl,\n ru,\n uk,\n hi,\n bn,\n th,\n ms,\n tl,\n};\n\n// =============================================================================\n// Helper Functions\n// =============================================================================\n\n/**\n * Get all supported locale codes.\n */\nexport const supportedLocales = Object.keys(dictionaries);\n\n/**\n * Check if a locale is supported.\n */\nexport const isLocaleSupported = (locale: string): boolean => {\n return locale in dictionaries;\n};\n\n/**\n * Get dictionary with fallback to another locale.\n */\nexport const getDictionary = (locale: string, fallback: string = 'en'): Dictionary | null => {\n return dictionaries[locale] || dictionaries[fallback] || null;\n};\n\n// =============================================================================\n// Derivation Utilities (for future use)\n// =============================================================================\n\n/**\n * Re-export derivation utilities for external use.\n * These can be used to derive dictionaries from profiles when ready.\n */\nexport { deriveFromProfile, createEnglishDictionary, validateDictionary } from './derive';\n","// packages/i18n/src/utils/locale.ts\n\nimport { dictionaries } from '../dictionaries';\nimport { DICTIONARY_CATEGORIES } from '../types';\n\nexport interface LocaleInfo {\n code: string;\n language: string;\n region?: string;\n script?: string;\n}\n\n/**\n * Parse a locale string into its components\n * Examples: 'en-US', 'zh-Hans-CN', 'es-419'\n */\nexport function parseLocale(locale: string): LocaleInfo {\n const parts = locale.split('-');\n const info: LocaleInfo = {\n code: locale,\n language: parts[0].toLowerCase(),\n };\n\n if (parts.length > 1) {\n // Check if second part is a script (4 letters, first capitalized)\n if (parts[1].length === 4 && /^[A-Z][a-z]{3}$/.test(parts[1])) {\n info.script = parts[1];\n if (parts[2]) {\n info.region = parts[2].toUpperCase();\n }\n } else {\n info.region = parts[1].toUpperCase();\n }\n }\n\n return info;\n}\n\n/**\n * Detect the language of hyperscript text\n */\nexport function detectLocale(text: string, supportedLocales: string[]): string {\n const scores = new Map<string, number>();\n\n // Initialize scores\n supportedLocales.forEach(locale => scores.set(locale, 0));\n\n // Count keyword matches for each locale using type-safe iteration\n for (const [locale, dictionary] of Object.entries(dictionaries)) {\n if (!supportedLocales.includes(locale)) continue;\n\n let score = 0;\n\n // Check all categories\n for (const category of DICTIONARY_CATEGORIES) {\n const translations = dictionary[category];\n for (const keyword of Object.values(translations)) {\n // Skip empty or single-character keywords (too ambiguous for detection)\n if (!keyword || keyword.length < 2) continue;\n\n // Use word boundary matching for accuracy\n const regex = new RegExp(`\\\\b${escapeRegex(keyword)}\\\\b`, 'gi');\n const matches = text.match(regex);\n if (matches) {\n score += matches.length;\n }\n }\n }\n\n scores.set(locale, score);\n }\n\n // Find locale with highest score\n let maxScore = 0;\n let detectedLocale = 'en'; // Default to English\n\n scores.forEach((score, locale) => {\n if (score > maxScore) {\n maxScore = score;\n detectedLocale = locale;\n }\n });\n\n return detectedLocale;\n}\n\n/**\n * Get the best matching locale from available locales\n */\nexport function getBestMatchingLocale(\n requestedLocale: string,\n availableLocales: string[]\n): string | null {\n // Exact match\n if (availableLocales.includes(requestedLocale)) {\n return requestedLocale;\n }\n\n const requested = parseLocale(requestedLocale);\n\n // Try language-only match\n const languageMatch = availableLocales.find(locale => {\n const available = parseLocale(locale);\n return available.language === requested.language;\n });\n\n if (languageMatch) {\n return languageMatch;\n }\n\n // Try language-script match\n if (requested.script) {\n const scriptMatch = availableLocales.find(locale => {\n const available = parseLocale(locale);\n return available.language === requested.language && available.script === requested.script;\n });\n\n if (scriptMatch) {\n return scriptMatch;\n }\n }\n\n return null;\n}\n\n/**\n * Get user's preferred locales from browser\n */\nexport function getBrowserLocales(): string[] {\n if (typeof window === 'undefined') {\n return ['en'];\n }\n\n const locales: string[] = [];\n\n // Modern browser API\n if (navigator.languages && navigator.languages.length > 0) {\n locales.push(...navigator.languages);\n }\n\n // Fallback to single language\n if (navigator.language) {\n locales.push(navigator.language);\n }\n\n // Legacy IE\n if ((navigator as any).userLanguage) {\n locales.push((navigator as any).userLanguage);\n }\n\n // Remove duplicates and return\n return [...new Set(locales)];\n}\n\n/**\n * Escape special regex characters\n */\nfunction escapeRegex(str: string): string {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\n/**\n * Format a locale for display\n */\nexport function formatLocaleName(locale: string): string {\n const names: Record<string, string> = {\n en: 'English',\n es: 'Español',\n ko: '한국어',\n zh: '中文',\n 'zh-TW': '繁體中文',\n ja: '日本語',\n fr: 'Français',\n de: 'Deutsch',\n pt: 'Português',\n hi: 'हिन्दी',\n ar: 'العربية',\n };\n\n return names[locale] || locale;\n}\n\n/**\n * Check if a locale uses RTL writing\n */\nexport function isRTL(locale: string): boolean {\n const rtlLocales = ['ar', 'he', 'fa', 'ur', 'yi', 'ji', 'ku', 'dv'];\n const info = parseLocale(locale);\n return rtlLocales.includes(info.language);\n}\n","/**\n * Tokenizer Adapter\n *\n * Bridges the semantic package's sophisticated tokenizers to i18n's\n * dictionary-based token categorization system.\n *\n * The semantic tokenizers handle:\n * - Language-specific word boundaries\n * - CSS selectors, URLs, string literals\n * - Grammatical particles (を, に, من)\n * - Morphological normalization\n *\n * This adapter converts semantic tokens to i18n tokens by:\n * 1. Using semantic's tokenize() for sophisticated tokenization\n * 2. Mapping TokenKind to TokenType via dictionary lookup for keywords\n * 3. Preserving position information for round-trip support\n */\n\nimport type { Token, TokenType } from '../types';\nimport { dictionaries } from '../dictionaries';\n\n// =============================================================================\n// Semantic Tokenizer Integration\n// =============================================================================\n\n// Types from semantic package (inlined to avoid circular dependency issues)\ninterface SourcePosition {\n readonly start: number;\n readonly end: number;\n readonly line?: number;\n readonly column?: number;\n}\n\ntype TokenKind =\n | 'keyword'\n | 'selector'\n | 'literal'\n | 'particle'\n | 'conjunction' // Grammatical conjunction (Arabic و/ف proclitics)\n | 'event-modifier' // Event modifiers (.once, .prevent, etc.)\n | 'identifier'\n | 'operator'\n | 'punctuation'\n | 'url';\n\ninterface LanguageToken {\n readonly value: string;\n readonly kind: TokenKind;\n readonly position: SourcePosition;\n readonly normalized?: string;\n readonly stem?: string;\n readonly stemConfidence?: number;\n}\n\ninterface TokenStream {\n readonly tokens: readonly LanguageToken[];\n readonly language: string;\n}\n\n// Lazy load semantic tokenizers to avoid circular dependency at module load time\nlet _semanticTokenize: ((input: string, language: string) => TokenStream) | null = null;\nlet _isLanguageSupported: ((language: string) => boolean) | null = null;\nlet _semanticLoaded = false;\nlet _semanticLoadFailed = false;\n\nasync function loadSemantic(): Promise<boolean> {\n if (_semanticLoaded) return !_semanticLoadFailed;\n if (_semanticLoadFailed) return false;\n\n try {\n // Dynamic import to break circular dependency\n const semantic = await import('@lokascript/semantic');\n _semanticTokenize = semantic.tokenize;\n _isLanguageSupported = semantic.isLanguageSupported;\n _semanticLoaded = true;\n return true;\n } catch {\n _semanticLoadFailed = true;\n return false;\n }\n}\n\n// Synchronous check - only works after first async load\nfunction isSemanticAvailable(): boolean {\n return _semanticLoaded && !_semanticLoadFailed;\n}\n\nfunction semanticTokenize(input: string, language: string): TokenStream | null {\n if (!_semanticTokenize) return null;\n try {\n return _semanticTokenize(input, language);\n } catch {\n return null;\n }\n}\n\nfunction semanticIsLanguageSupported(language: string): boolean {\n if (!_isLanguageSupported) return false;\n return _isLanguageSupported(language);\n}\n\n// =============================================================================\n// Token Type Mapping\n// =============================================================================\n\n/**\n * Map semantic TokenKind to i18n TokenType.\n *\n * Semantic TokenKind → i18n TokenType:\n * - keyword: Use dictionary lookup to determine specific type\n * - selector: identifier (selectors don't get translated)\n * - literal: literal\n * - particle: modifier (grammatical particles)\n * - identifier: identifier\n * - operator: operator\n * - punctuation: operator\n * - url: literal\n */\nfunction mapTokenKind(kind: TokenKind): TokenType {\n switch (kind) {\n case 'keyword':\n // Will be refined by dictionary lookup\n return 'identifier';\n case 'selector':\n return 'identifier';\n case 'literal':\n return 'literal';\n case 'particle':\n return 'modifier';\n case 'conjunction':\n return 'modifier';\n case 'event-modifier':\n return 'modifier';\n case 'identifier':\n return 'identifier';\n case 'operator':\n return 'operator';\n case 'punctuation':\n return 'operator';\n case 'url':\n return 'literal';\n default:\n return 'identifier';\n }\n}\n\n/**\n * Determine the specific i18n TokenType for a word by looking up\n * in the locale's dictionary.\n *\n * Order matters: events before commands since many events (click, focus)\n * also appear in commands.\n */\nfunction categorizeWord(word: string, locale: string): TokenType {\n const lowerWord = word.toLowerCase();\n\n // Map dictionary categories to token types (events first to handle 'click' etc.)\n const categoryToType: Array<[string, TokenType]> = [\n ['events', 'event'],\n ['commands', 'command'],\n ['expressions', 'expression'],\n ['modifiers', 'modifier'],\n ['logical', 'logical'],\n ['temporal', 'temporal'],\n ['values', 'value'],\n ['attributes', 'attribute'],\n ];\n\n // Check all supported dictionaries (source locale + English)\n const localesToCheck = locale === 'en' ? ['en'] : [locale, 'en'];\n\n for (const loc of localesToCheck) {\n const dict = dictionaries[loc];\n if (!dict) continue;\n\n // Check categories in priority order (events before commands)\n for (const [category, tokenType] of categoryToType) {\n const translations = dict[category as keyof typeof dict];\n if (!translations || typeof translations !== 'object') continue;\n\n // Check if word matches a key (English) or value (translated)\n for (const [key, value] of Object.entries(translations)) {\n if (key.toLowerCase() === lowerWord || value.toLowerCase() === lowerWord) {\n return tokenType;\n }\n }\n }\n }\n\n // Default to identifier\n return 'identifier';\n}\n\n// =============================================================================\n// Token Conversion\n// =============================================================================\n\n/**\n * Convert a semantic LanguageToken to an i18n Token.\n */\nfunction convertToken(token: LanguageToken, locale: string): Token {\n let type: TokenType;\n\n if (token.kind === 'keyword') {\n // For keywords, use dictionary lookup to get specific type\n // Use normalized form if available (e.g., 切り替え → toggle)\n const lookupWord = token.normalized || token.value;\n type = categorizeWord(lookupWord, locale);\n } else {\n type = mapTokenKind(token.kind);\n }\n\n return {\n type,\n value: token.value,\n position: {\n start: token.position.start,\n end: token.position.end,\n line: token.position.line ?? 1,\n column: token.position.column ?? token.position.start + 1,\n },\n };\n}\n\n// =============================================================================\n// Public API\n// =============================================================================\n\n/**\n * Initialize the semantic tokenizer (call once at app startup for best performance).\n * This is optional - tokenize() will work without it, using fallback tokenization.\n */\nexport async function initSemanticTokenizer(): Promise<boolean> {\n return loadSemantic();\n}\n\n/**\n * Tokenize input using semantic package's sophisticated tokenizers,\n * converting to i18n-compatible tokens.\n *\n * Falls back to basic tokenization if:\n * - Semantic package not loaded yet\n * - Language not supported by semantic\n * - Any error occurs\n *\n * For best performance, call initSemanticTokenizer() at app startup.\n */\nexport function tokenize(text: string, locale: string): Token[] {\n // Try semantic tokenization if available\n if (isSemanticAvailable() && semanticIsLanguageSupported(locale)) {\n const stream = semanticTokenize(text, locale);\n if (stream) {\n const tokens: Token[] = [];\n for (const semanticToken of stream.tokens) {\n tokens.push(convertToken(semanticToken, locale));\n }\n return tokens;\n }\n }\n\n // Fall back to basic tokenization\n return tokenizeBasic(text, locale);\n}\n\n/**\n * Tokenize with async initialization of semantic tokenizers.\n * Useful when you want to ensure semantic tokenization is used.\n */\nexport async function tokenizeAsync(text: string, locale: string): Promise<Token[]> {\n await loadSemantic();\n return tokenize(text, locale);\n}\n\n/**\n * Basic tokenization fallback for unsupported languages.\n * This is a simplified version that handles common patterns.\n */\nfunction tokenizeBasic(text: string, locale: string): Token[] {\n const tokens: Token[] = [];\n let position = 0;\n let line = 1;\n let column = 1;\n\n while (position < text.length) {\n const start = position;\n const startLine = line;\n const startColumn = column;\n\n // Skip whitespace but track it\n if (isWhitespace(text[position])) {\n const whitespace = consumeWhitespace(text, position);\n tokens.push({\n type: 'literal',\n value: whitespace,\n position: {\n start,\n end: position + whitespace.length,\n line: startLine,\n column: startColumn,\n },\n });\n\n // Update position tracking\n for (let i = 0; i < whitespace.length; i++) {\n if (whitespace[i] === '\\n') {\n line++;\n column = 1;\n } else {\n column++;\n }\n }\n position += whitespace.length;\n continue;\n }\n\n // String literals\n if (text[position] === '\"' || text[position] === \"'\") {\n const quote = text[position];\n let value = quote;\n position++;\n column++;\n\n while (position < text.length && text[position] !== quote) {\n if (text[position] === '\\\\' && position + 1 < text.length) {\n value += text[position] + text[position + 1];\n position += 2;\n column += 2;\n } else {\n value += text[position];\n if (text[position] === '\\n') {\n line++;\n column = 1;\n } else {\n column++;\n }\n position++;\n }\n }\n\n if (position < text.length) {\n value += text[position];\n position++;\n column++;\n }\n\n tokens.push({\n type: 'literal',\n value,\n position: {\n start,\n end: position,\n line: startLine,\n column: startColumn,\n },\n });\n continue;\n }\n\n // Numbers\n if (isDigit(text[position])) {\n const number = consumeNumber(text, position);\n tokens.push({\n type: 'literal',\n value: number,\n position: {\n start,\n end: position + number.length,\n line: startLine,\n column: startColumn,\n },\n });\n position += number.length;\n column += number.length;\n continue;\n }\n\n // Identifiers and keywords\n if (isIdentifierStart(text[position])) {\n const word = consumeIdentifier(text, position);\n const tokenType = categorizeWord(word, locale);\n\n tokens.push({\n type: tokenType,\n value: word,\n position: {\n start,\n end: position + word.length,\n line: startLine,\n column: startColumn,\n },\n });\n position += word.length;\n column += word.length;\n continue;\n }\n\n // Operators and punctuation\n const operator = consumeOperator(text, position);\n tokens.push({\n type: 'operator',\n value: operator,\n position: {\n start,\n end: position + operator.length,\n line: startLine,\n column: startColumn,\n },\n });\n position += operator.length;\n column += operator.length;\n }\n\n return tokens;\n}\n\n// =============================================================================\n// Helper Functions\n// =============================================================================\n\nfunction isWhitespace(char: string): boolean {\n return /\\s/.test(char);\n}\n\nfunction isDigit(char: string): boolean {\n return /\\d/.test(char);\n}\n\nfunction isIdentifierStart(char: string): boolean {\n return /[a-zA-Z_$áéíóúñÑàèìòùÀÈÌÒÙ一-龯ㄱ-ㅎㅏ-ㅣ가-힣]/.test(char);\n}\n\nfunction isIdentifierPart(char: string): boolean {\n return /[a-zA-Z0-9_$áéíóúñÑàèìòùÀÈÌÒÙ一-龯ㄱ-ㅎㅏ-ㅣ가-힣-]/.test(char);\n}\n\nfunction consumeWhitespace(text: string, start: number): string {\n let end = start;\n while (end < text.length && isWhitespace(text[end])) {\n end++;\n }\n return text.substring(start, end);\n}\n\nfunction consumeNumber(text: string, start: number): string {\n let end = start;\n while (end < text.length && (isDigit(text[end]) || text[end] === '.')) {\n end++;\n }\n return text.substring(start, end);\n}\n\nfunction consumeIdentifier(text: string, start: number): string {\n let end = start;\n while (end < text.length && isIdentifierPart(text[end])) {\n end++;\n }\n return text.substring(start, end);\n}\n\nfunction consumeOperator(text: string, start: number): string {\n // Try to match multi-character operators first\n const twoChar = text.substring(start, start + 2);\n if (['==', '!=', '<=', '>=', '&&', '||', '..'].includes(twoChar)) {\n return twoChar;\n }\n\n // Single character operators\n return text[start];\n}\n","// packages/i18n/src/validators/schema.ts\n\nexport const RequiredCategories = [\n 'commands',\n 'modifiers',\n 'events',\n 'logical',\n 'temporal',\n 'values',\n 'attributes',\n] as const;\n\nexport const RequiredKeys = {\n commands: [\n 'on',\n 'tell',\n 'trigger',\n 'send',\n 'take',\n 'put',\n 'set',\n 'get',\n 'add',\n 'remove',\n 'toggle',\n 'hide',\n 'show',\n 'if',\n 'repeat',\n 'for',\n 'while',\n 'wait',\n 'fetch',\n 'call',\n 'return',\n 'make',\n 'log',\n 'throw',\n 'catch',\n ],\n\n modifiers: [\n 'to',\n 'from',\n 'into',\n 'with',\n 'at',\n 'in',\n 'of',\n 'as',\n 'by',\n 'before',\n 'after',\n 'over',\n 'under',\n 'between',\n ],\n\n events: [\n 'click',\n 'change',\n 'focus',\n 'blur',\n 'keydown',\n 'keyup',\n 'mouseenter',\n 'mouseleave',\n 'submit',\n 'load',\n 'scroll',\n ],\n\n logical: ['and', 'or', 'not', 'is', 'then', 'else', 'end'],\n\n temporal: ['seconds', 'milliseconds', 'minutes', 'hours'],\n\n values: ['true', 'false', 'null', 'it', 'me', 'my', 'element', 'window', 'document'],\n\n attributes: [\n 'class',\n 'style',\n 'attribute',\n 'first',\n 'last',\n 'next',\n 'previous',\n 'parent',\n 'children',\n ],\n} as const;\n\nexport interface DictionarySchema {\n readonly categories: ReadonlyArray<string>;\n readonly requiredKeys: Readonly<Record<string, ReadonlyArray<string>>>;\n}\n\nexport const schema: DictionarySchema = {\n categories: RequiredCategories,\n requiredKeys: RequiredKeys,\n};\n\n// Helper type for strict dictionary validation\nexport type StrictDictionary = {\n [K in (typeof RequiredCategories)[number]]: Record<string, string>;\n};\n\n// Validation helpers\nexport function isValidCategory(category: string): category is (typeof RequiredCategories)[number] {\n return RequiredCategories.includes(category as any);\n}\n\nexport function getRequiredKeysForCategory(category: string): ReadonlyArray<string> {\n return RequiredKeys[category as keyof typeof RequiredKeys] || [];\n}\n\nexport function getMissingKeys(\n dictionary: Record<string, string>,\n requiredKeys: ReadonlyArray<string>\n): string[] {\n return requiredKeys.filter(key => !(key in dictionary));\n}\n\nexport function getExtraKeys(\n dictionary: Record<string, string>,\n requiredKeys: ReadonlyArray<string>\n): string[] {\n const required = new Set(requiredKeys);\n return Object.keys(dictionary).filter(key => !required.has(key));\n}\n","// packages/i18n/src/validators/index.ts\n\nimport {\n Dictionary,\n DICTIONARY_CATEGORIES,\n ValidationResult,\n ValidationError,\n ValidationWarning,\n} from '../types';\nimport { RequiredCategories, RequiredKeys } from './schema';\n\nexport function validate(dictionary: Dictionary, locale: string): ValidationResult {\n const errors: ValidationError[] = [];\n const warnings: ValidationWarning[] = [];\n const coverage = {\n total: 0,\n translated: 0,\n missing: [] as string[],\n };\n\n // Check required categories\n for (const category of RequiredCategories) {\n if (!(category in dictionary)) {\n errors.push({\n type: 'missing',\n key: category,\n message: `Missing required category: ${category}`,\n });\n }\n }\n\n // Check required keys in each category\n for (const [category, requiredKeys] of Object.entries(RequiredKeys)) {\n const categoryDict = dictionary[category as keyof Dictionary];\n\n if (!categoryDict) continue;\n\n for (const key of requiredKeys) {\n coverage.total++;\n\n if (!(key in categoryDict)) {\n errors.push({\n type: 'missing',\n key: `${category}.${key}`,\n message: `Missing required key: ${key} in category ${category}`,\n });\n coverage.missing.push(`${category}.${key}`);\n } else if (!categoryDict[key] || categoryDict[key].trim() === '') {\n errors.push({\n type: 'invalid',\n key: `${category}.${key}`,\n message: `Empty translation for key: ${key} in category ${category}`,\n });\n } else {\n coverage.translated++;\n }\n }\n }\n\n // Check for duplicates using type-safe category iteration\n const seen = new Map<string, string>();\n\n for (const category of DICTIONARY_CATEGORIES) {\n const translations = dictionary[category];\n if (!translations) continue;\n\n for (const [key, value] of Object.entries(translations)) {\n if (seen.has(value)) {\n warnings.push({\n type: 'inconsistent',\n key: `${category}.${key}`,\n message: `Duplicate translation \"${value}\" also used for ${seen.get(value)}`,\n });\n } else {\n seen.set(value, `${category}.${key}`);\n }\n }\n }\n\n // Language-specific validations\n validateLocaleSpecific(dictionary, locale, errors, warnings);\n\n return {\n valid: errors.length === 0,\n errors,\n warnings,\n coverage,\n };\n}\n\nfunction validateLocaleSpecific(\n dictionary: Dictionary,\n locale: string,\n _errors: ValidationError[],\n warnings: ValidationWarning[]\n): void {\n // Spanish-specific validations\n if (locale === 'es') {\n // Check for gender consistency\n if (dictionary.values?.true === 'verdadero' && dictionary.values?.false === 'falso') {\n // Both masculine, good\n } else if (dictionary.values?.true === 'verdadera' && dictionary.values?.false === 'falsa') {\n // Both feminine, good\n } else if (dictionary.values?.true && dictionary.values?.false) {\n warnings.push({\n type: 'inconsistent',\n key: 'values.true/false',\n message: 'Gender inconsistency between true/false translations',\n });\n }\n }\n\n // Korean-specific validations\n if (locale === 'ko') {\n // Check for consistent honorific levels\n const formalEndings = ['습니다', '세요'];\n const informalEndings = ['다', '어', '아'];\n\n let formalCount = 0;\n let informalCount = 0;\n\n for (const category of DICTIONARY_CATEGORIES) {\n const translations = dictionary[category];\n if (!translations) continue;\n for (const value of Object.values(translations)) {\n if (formalEndings.some(ending => value.endsWith(ending))) {\n formalCount++;\n }\n if (informalEndings.some(ending => value.endsWith(ending))) {\n informalCount++;\n }\n }\n }\n\n if (formalCount > 0 && informalCount > 0) {\n warnings.push({\n type: 'inconsistent',\n key: 'global',\n message: 'Mixed formal and informal speech levels',\n });\n }\n }\n\n // Chinese-specific validations\n if (locale === 'zh' || locale === 'zh-TW') {\n // Check for simplified vs traditional consistency\n const simplified = ['设', '获', '显', '发'];\n const traditional = ['設', '獲', '顯', '發'];\n\n let hasSimplified = false;\n let hasTraditional = false;\n\n for (const category of DICTIONARY_CATEGORIES) {\n const translations = dictionary[category];\n if (!translations) continue;\n for (const value of Object.values(translations)) {\n if (simplified.some(char => value.includes(char))) {\n hasSimplified = true;\n }\n if (traditional.some(char => value.includes(char))) {\n hasTraditional = true;\n }\n }\n }\n\n if (hasSimplified && hasTraditional) {\n warnings.push({\n type: 'inconsistent',\n key: 'global',\n message: 'Mixed simplified and traditional Chinese characters',\n });\n }\n }\n}\n","// packages/i18n/src/translator.ts\n\nimport {\n Dictionary,\n DICTIONARY_CATEGORIES,\n I18nConfig,\n TranslationOptions,\n TranslationResult,\n Token,\n TokenType,\n ValidationResult,\n} from './types';\nimport { dictionaries } from './dictionaries';\nimport { detectLocale } from './utils/locale';\nimport { tokenize } from './utils/tokenizer';\nimport { validate } from './validators';\n\nexport class HyperscriptTranslator {\n private config: I18nConfig;\n private dictionaries: Map<string, Dictionary>;\n private reverseDictionaries: Map<string, Map<string, string>>;\n\n constructor(config: I18nConfig) {\n this.config = {\n fallbackLocale: 'en',\n preserveOriginalAttribute: 'data-i18n-original',\n detectLocale: true, // Enable language detection by default\n ...config,\n locale: config.locale || 'en', // Ensure locale has a default\n };\n\n this.dictionaries = new Map();\n this.reverseDictionaries = new Map();\n\n // Load built-in dictionaries\n Object.entries(dictionaries).forEach(([locale, dict]) => {\n this.addDictionary(locale, dict);\n });\n\n // Load custom dictionaries\n if (config.dictionaries) {\n Object.entries(config.dictionaries).forEach(([locale, dict]) => {\n this.addDictionary(locale, dict);\n });\n }\n }\n\n translate(text: string, options: TranslationOptions): string {\n const result = this.translateWithDetails(text, options);\n return result.translated;\n }\n\n translateWithDetails(text: string, options: TranslationOptions): TranslationResult {\n const fromLocale = options.from || this.detectLanguage(text);\n const toLocale = options.to;\n\n if (fromLocale === toLocale) {\n return {\n translated: text,\n original: text,\n tokens: [],\n locale: { from: fromLocale, to: toLocale },\n };\n }\n\n // Get dictionaries\n const fromDict = this.getDictionary(fromLocale);\n const toDict = this.getDictionary(toLocale);\n\n if (!fromDict || !toDict) {\n throw new Error(`Missing dictionary for locale: ${!fromDict ? fromLocale : toLocale}`);\n }\n\n // Tokenize the input\n const tokens = tokenize(text, fromLocale);\n\n // Translate tokens\n const translatedTokens = this.translateTokens(tokens, fromLocale, toLocale);\n\n // Reconstruct the text\n const translated = this.reconstructText(translatedTokens);\n\n // Validate target dictionary if requested\n if (options.validate && toDict) {\n const validation = validate(toDict, toLocale);\n if (!validation.valid) {\n console.warn('Translation validation warnings:', validation.warnings);\n }\n }\n\n const result: TranslationResult = {\n translated,\n tokens: translatedTokens,\n locale: { from: fromLocale, to: toLocale },\n warnings: [],\n };\n if (options.preserveOriginal) {\n result.original = text;\n }\n return result;\n }\n\n private translateTokens(tokens: Token[], fromLocale: string, toLocale: string): Token[] {\n const fromDict = this.getDictionary(fromLocale);\n const toDict = this.getDictionary(toLocale);\n const reverseFromDict = this.getReverseDictionary(fromLocale);\n const emptyDict: Dictionary = {\n commands: {},\n modifiers: {},\n events: {},\n logical: {},\n temporal: {},\n values: {},\n attributes: {},\n expressions: {},\n };\n\n return tokens.map(token => {\n let translated = token.value;\n\n // Only translate keywords, not identifiers or literals\n if (this.isTranslatableToken(token)) {\n // First, try direct translation from source to target\n if (fromLocale !== 'en' && toLocale !== 'en') {\n // Translate through English as intermediate\n const english = this.findTranslation(token.value, fromDict || emptyDict, reverseFromDict);\n if (english) {\n translated =\n this.findTranslation(english, toDict || emptyDict, new Map()) || token.value;\n }\n } else if (fromLocale === 'en') {\n // Direct translation from English\n translated =\n this.findTranslation(token.value, toDict || emptyDict, new Map()) || token.value;\n } else {\n // Translation to English\n translated =\n this.findTranslation(token.value, fromDict || emptyDict, reverseFromDict) ||\n token.value;\n }\n }\n\n return {\n ...token,\n translated,\n };\n });\n }\n\n private findTranslation(\n word: string,\n dict: Dictionary,\n reverseDict: Map<string, string>\n ): string | null {\n const lowerWord = word.toLowerCase();\n\n // Check if translating FROM this locale using reverse dictionary\n if (reverseDict.size > 0) {\n const english = reverseDict.get(lowerWord);\n if (english) return english;\n }\n\n // Check categories in priority order (events before commands to handle 'click' etc.)\n const categoryOrder = [\n 'events',\n 'commands',\n 'expressions',\n 'modifiers',\n 'logical',\n 'temporal',\n 'values',\n 'attributes',\n ];\n\n for (const category of categoryOrder) {\n const translations = dict[category as keyof Dictionary];\n if (translations && typeof translations === 'object') {\n for (const [key, value] of Object.entries(translations)) {\n if (key.toLowerCase() === lowerWord) return value;\n }\n }\n }\n\n return null;\n }\n\n private isTranslatableToken(token: Token): boolean {\n const translatableTypes: TokenType[] = [\n 'command',\n 'modifier',\n 'event',\n 'logical',\n 'temporal',\n 'value',\n 'attribute',\n 'expression',\n ];\n return translatableTypes.includes(token.type);\n }\n\n private reconstructText(tokens: Token[]): string {\n return tokens.map(token => token.translated || token.value).join('');\n }\n\n detectLanguage(text: string): string {\n if (!this.config.detectLocale) {\n return this.config.locale;\n }\n\n return detectLocale(text, Array.from(this.dictionaries.keys()));\n }\n\n addDictionary(locale: string, dictionary: Dictionary): void {\n this.dictionaries.set(locale, dictionary);\n\n // Build reverse dictionary for this locale using type-safe iteration\n const reverseDict = new Map<string, string>();\n\n for (const category of DICTIONARY_CATEGORIES) {\n const translations = dictionary[category];\n if (translations) {\n for (const [english, translated] of Object.entries(translations)) {\n reverseDict.set(translated.toLowerCase(), english);\n }\n }\n }\n\n this.reverseDictionaries.set(locale, reverseDict);\n }\n\n getDictionary(locale: string): Dictionary | undefined {\n return this.dictionaries.get(locale);\n }\n\n private getReverseDictionary(locale: string): Map<string, string> {\n return this.reverseDictionaries.get(locale) || new Map();\n }\n\n getSupportedLocales(): string[] {\n return Array.from(this.dictionaries.keys());\n }\n\n validateDictionary(locale: string): ValidationResult {\n const dict = this.getDictionary(locale);\n if (!dict) {\n return {\n valid: false,\n errors: [\n { type: 'missing', key: locale, message: `Dictionary not found for locale: ${locale}` },\n ],\n warnings: [],\n coverage: { total: 0, translated: 0, missing: [] },\n };\n }\n\n return validate(dict, locale);\n }\n\n isRTL(locale: string): boolean {\n const rtlLocales = this.config.rtlLocales || ['ar', 'he', 'fa', 'ur'];\n return rtlLocales.includes(locale);\n }\n\n getCompletions(context: { text: string; position: number; locale: string }): string[] {\n const dict = this.getDictionary(context.locale);\n if (!dict) return [];\n\n const completions: string[] = [];\n\n // Get the partial word at cursor\n const beforeCursor = context.text.substring(0, context.position);\n const partial = beforeCursor.match(/\\b(\\w+)$/)?.[1] || '';\n const lowerPartial = partial.toLowerCase();\n\n // Search all categories for matches using type-safe iteration\n // For non-English locales, search translated values; for English, search keys\n for (const category of DICTIONARY_CATEGORIES) {\n const translations = dict[category];\n if (translations) {\n for (const [key, value] of Object.entries(translations)) {\n // Search keys (English terms) and values (translated terms)\n if (key.toLowerCase().startsWith(lowerPartial)) {\n completions.push(key);\n }\n if (value.toLowerCase().startsWith(lowerPartial) && !completions.includes(value)) {\n completions.push(value);\n }\n }\n }\n }\n\n return completions;\n }\n}\n\n// Export a singleton instance for convenience\nexport const translator = new HyperscriptTranslator({ locale: 'en' });\n","// packages/i18n/src/constants.ts\n\n/**\n * Shared Constants for i18n Package\n *\n * Centralizes keyword definitions to eliminate duplication across\n * transformer.ts, create-provider.ts, and other modules.\n */\n\nimport type { SemanticRole } from './grammar/types';\n\n// =============================================================================\n// English Modifier → Semantic Role Mappings\n// =============================================================================\n\n/**\n * Maps English modifier keywords to their semantic roles.\n * Used by both the grammar transformer and keyword provider.\n */\nexport const ENGLISH_MODIFIER_ROLES: Readonly<Record<string, SemanticRole>> = {\n to: 'destination',\n into: 'destination',\n from: 'source',\n with: 'style',\n by: 'quantity',\n as: 'method',\n on: 'event',\n over: 'duration',\n for: 'duration',\n} as const;\n\n/**\n * English modifier keywords (derived from ENGLISH_MODIFIER_ROLES)\n */\nexport const ENGLISH_MODIFIERS: Set<string> = new Set([\n 'to',\n 'from',\n 'into',\n 'with',\n 'at',\n 'in',\n 'of',\n 'as',\n 'by',\n 'before',\n 'after',\n 'without',\n]);\n\n// =============================================================================\n// English Commands\n// =============================================================================\n\n/**\n * English commands - the canonical set that the runtime understands.\n */\nexport const ENGLISH_COMMANDS: Set<string> = new Set([\n 'add',\n 'append',\n 'async',\n 'beep',\n 'break',\n 'call',\n 'continue',\n 'decrement',\n 'default',\n 'exit',\n 'fetch',\n 'for',\n 'get',\n 'go',\n 'halt',\n 'hide',\n 'if',\n 'increment',\n 'install',\n 'js',\n 'log',\n 'make',\n 'measure',\n 'morph',\n 'pick',\n 'process',\n 'push',\n 'put',\n 'remove',\n 'render',\n 'repeat',\n 'replace',\n 'return',\n 'send',\n 'set',\n 'settle',\n 'show',\n 'swap',\n 'take',\n 'tell',\n 'throw',\n 'toggle',\n 'transition',\n 'trigger',\n 'unless',\n 'wait',\n]);\n\n// =============================================================================\n// English Keywords (Non-Commands)\n// =============================================================================\n\n/**\n * English keywords that are not commands.\n */\nexport const ENGLISH_KEYWORDS: Set<string> = new Set([\n // Flow control\n 'then',\n 'else',\n 'end',\n 'and',\n 'or',\n 'not',\n // Conditionals\n 'if',\n 'unless',\n // Loops\n 'for',\n 'while',\n 'until',\n 'forever',\n 'times',\n 'each',\n 'index',\n // Prepositions\n 'in',\n 'to',\n 'from',\n 'into',\n 'with',\n 'without',\n 'of',\n 'at',\n 'by',\n // Conversion\n 'as',\n // Comparison\n 'matches',\n 'contains',\n 'is',\n 'exists',\n // Events\n 'on',\n 'when',\n 'every',\n 'event',\n // Definitions\n 'init',\n 'def',\n 'behavior',\n // Scope\n 'global',\n 'local',\n // Articles\n 'the',\n 'a',\n 'an',\n 'first',\n 'last',\n // Position\n 'start',\n 'before',\n 'after',\n]);\n\n// =============================================================================\n// Universal English Keywords (DOM/HTML Standards)\n// =============================================================================\n\n/**\n * English keywords that should always be recognized, even in non-English locales.\n * These are HTML/DOM standard terms that developers worldwide use.\n */\nexport const UNIVERSAL_ENGLISH_KEYWORDS: Set<string> = new Set([\n // DOM events (HTML spec)\n 'click',\n 'dblclick',\n 'mousedown',\n 'mouseup',\n 'mouseenter',\n 'mouseleave',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'keydown',\n 'keyup',\n 'keypress',\n 'focus',\n 'blur',\n 'change',\n 'input',\n 'submit',\n 'reset',\n 'load',\n 'unload',\n 'resize',\n 'scroll',\n 'touchstart',\n 'touchend',\n 'touchmove',\n 'touchcancel',\n 'dragstart',\n 'dragend',\n 'dragenter',\n 'dragleave',\n 'dragover',\n 'drop',\n 'contextmenu',\n 'wheel',\n 'pointerdown',\n 'pointerup',\n 'pointermove',\n // Common abbreviations\n 'ms',\n 's',\n]);\n\n// =============================================================================\n// Logical Keywords\n// =============================================================================\n\n/**\n * English logical operator keywords.\n */\nexport const ENGLISH_LOGICAL_KEYWORDS: Set<string> = new Set([\n 'and',\n 'or',\n 'not',\n 'is',\n 'exists',\n 'matches',\n 'contains',\n 'then',\n 'else',\n]);\n\n// =============================================================================\n// Value Keywords\n// =============================================================================\n\n/**\n * English value keywords.\n */\nexport const ENGLISH_VALUE_KEYWORDS: Set<string> = new Set([\n 'true',\n 'false',\n 'null',\n 'undefined',\n 'it',\n 'me',\n 'my',\n 'result',\n]);\n\n// =============================================================================\n// Expression Keywords\n// =============================================================================\n\n/**\n * English expression keywords - positional, traversal, and string operations.\n */\nexport const ENGLISH_EXPRESSION_KEYWORDS: Set<string> = new Set([\n // Positional\n 'first',\n 'last',\n 'next',\n 'previous',\n 'prev',\n 'at',\n 'random',\n // DOM traversal\n 'closest',\n 'parent',\n 'children',\n 'within',\n // Emptiness/existence\n 'no',\n 'empty',\n 'some',\n // String operations (multi-word)\n 'starts with',\n 'ends with',\n]);\n\n// =============================================================================\n// Conditional Keywords\n// =============================================================================\n\n/**\n * Conditional keywords across languages (for statement type identification).\n * Includes 'when'/'where' conditional modifiers and their translations.\n */\nexport const CONDITIONAL_KEYWORDS: Set<string> = new Set([\n // English\n 'if',\n 'unless',\n 'when',\n 'where',\n // Japanese\n 'もし',\n '時に',\n 'ときに',\n 'どこで',\n // Chinese\n '如果',\n '当',\n // Arabic\n 'إذا',\n 'عندما',\n 'حيث',\n // Spanish\n 'si',\n 'cuando',\n 'donde',\n // German\n 'wenn',\n 'wann',\n 'wo',\n // French\n 'quand',\n 'lorsque',\n 'où',\n // Portuguese\n 'quando',\n 'onde',\n // Turkish\n 'eğer',\n 'zaman',\n 'nerede',\n // Indonesian\n 'ketika',\n 'saat',\n 'dimana',\n // Korean\n '때',\n '어디서',\n // Quechua\n 'maypi',\n // Swahili\n 'wakati',\n 'wapi',\n]);\n\n/**\n * \"Then\" keywords across languages (for conditional parsing).\n */\nexport const THEN_KEYWORDS: Set<string> = new Set([\n 'then',\n 'それから',\n '那么',\n 'ثم',\n 'entonces',\n 'alors',\n 'dann',\n 'sonra',\n 'lalu',\n 'chayqa',\n 'kisha',\n]);\n","// packages/i18n/src/parser/create-provider.ts\n\nimport type { Dictionary } from '../types';\nimport type { KeywordProvider, KeywordProviderOptions } from './types';\nimport {\n ENGLISH_COMMANDS,\n ENGLISH_KEYWORDS,\n ENGLISH_MODIFIERS,\n ENGLISH_LOGICAL_KEYWORDS,\n ENGLISH_VALUE_KEYWORDS,\n ENGLISH_EXPRESSION_KEYWORDS,\n UNIVERSAL_ENGLISH_KEYWORDS,\n} from '../constants';\n\n/**\n * Creates a KeywordProvider from a dictionary.\n *\n * The provider creates reverse mappings (locale → English) for fast\n * resolution during parsing.\n *\n * @example\n * ```typescript\n * import { es } from '../dictionaries/es';\n * export const esKeywords = createKeywordProvider(es, 'es');\n * ```\n */\nexport function createKeywordProvider(\n dictionary: Dictionary,\n locale: string,\n options: KeywordProviderOptions = {}\n): KeywordProvider {\n const { allowEnglishFallback = true } = options;\n\n // Build reverse maps: locale keyword → English canonical\n const reverseCommands = new Map<string, string>();\n const reverseModifiers = new Map<string, string>();\n const reverseEvents = new Map<string, string>();\n const reverseLogical = new Map<string, string>();\n const reverseTemporal = new Map<string, string>();\n const reverseValues = new Map<string, string>();\n const reverseAttributes = new Map<string, string>();\n const reverseExpressions = new Map<string, string>();\n const reverseAll = new Map<string, string>();\n\n // Forward maps: English → locale keyword\n const forwardAll = new Map<string, string>();\n\n // Build reverse mappings from dictionary\n // Note: reverseAll uses priority - first category to claim a locale word wins\n function buildReverseMap(\n category: Record<string, string>,\n reverseMap: Map<string, string>,\n priority: boolean = false\n ): void {\n for (const [english, localeWord] of Object.entries(category)) {\n const normalizedLocale = localeWord.toLowerCase();\n reverseMap.set(normalizedLocale, english.toLowerCase());\n // Only set in reverseAll if not already claimed (priority) or if this is a priority category\n if (priority || !reverseAll.has(normalizedLocale)) {\n reverseAll.set(normalizedLocale, english.toLowerCase());\n }\n forwardAll.set(english.toLowerCase(), localeWord.toLowerCase());\n }\n }\n\n // Build all reverse maps\n // Priority order: commands first (highest priority for parsing), then logical, events, values\n // This ensures 'en' (Spanish) → 'on' (command) rather than 'in' (modifier)\n if (dictionary.commands) {\n buildReverseMap(dictionary.commands, reverseCommands, true);\n }\n if (dictionary.logical) {\n buildReverseMap(dictionary.logical, reverseLogical, true);\n }\n if (dictionary.events) {\n buildReverseMap(dictionary.events, reverseEvents);\n }\n if (dictionary.values) {\n buildReverseMap(dictionary.values, reverseValues);\n }\n if (dictionary.temporal) {\n buildReverseMap(dictionary.temporal, reverseTemporal);\n }\n // Modifiers last (lowest priority) - they often conflict with commands\n if (dictionary.modifiers) {\n buildReverseMap(dictionary.modifiers, reverseModifiers);\n }\n if (dictionary.attributes) {\n buildReverseMap(dictionary.attributes, reverseAttributes);\n }\n if (dictionary.expressions) {\n buildReverseMap(dictionary.expressions, reverseExpressions);\n }\n\n // Collect all locale commands and keywords for completions\n const localeCommands = new Set(reverseCommands.keys());\n const allLocaleKeywords = new Set(reverseAll.keys());\n\n // Add English keywords/commands if fallback is enabled\n if (allowEnglishFallback) {\n for (const cmd of ENGLISH_COMMANDS) {\n localeCommands.add(cmd);\n }\n for (const kw of ENGLISH_KEYWORDS) {\n allLocaleKeywords.add(kw);\n }\n for (const kw of UNIVERSAL_ENGLISH_KEYWORDS) {\n allLocaleKeywords.add(kw);\n }\n }\n\n return {\n locale,\n\n resolve(token: string): string | undefined {\n const normalized = token.toLowerCase();\n\n // Check if it's a locale keyword\n const english = reverseAll.get(normalized);\n if (english !== undefined) {\n return english;\n }\n\n // If English fallback is enabled, check if it's already English\n if (allowEnglishFallback) {\n if (ENGLISH_COMMANDS.has(normalized) || ENGLISH_KEYWORDS.has(normalized)) {\n return normalized;\n }\n // Universal keywords (DOM events, etc.) pass through\n if (UNIVERSAL_ENGLISH_KEYWORDS.has(normalized)) {\n return normalized;\n }\n }\n\n return undefined;\n },\n\n isCommand(token: string): boolean {\n const normalized = token.toLowerCase();\n\n // Check locale commands\n if (reverseCommands.has(normalized)) {\n return true;\n }\n\n // Check English commands if fallback enabled\n if (allowEnglishFallback && ENGLISH_COMMANDS.has(normalized)) {\n return true;\n }\n\n return false;\n },\n\n isKeyword(token: string): boolean {\n const normalized = token.toLowerCase();\n\n // Check locale keywords (modifiers, logical, temporal, values)\n if (\n reverseModifiers.has(normalized) ||\n reverseLogical.has(normalized) ||\n reverseTemporal.has(normalized) ||\n reverseValues.has(normalized)\n ) {\n return true;\n }\n\n // Check English keywords if fallback enabled\n if (allowEnglishFallback && ENGLISH_KEYWORDS.has(normalized)) {\n return true;\n }\n\n return false;\n },\n\n isEvent(token: string): boolean {\n const normalized = token.toLowerCase();\n\n // Check locale events\n if (reverseEvents.has(normalized)) {\n return true;\n }\n\n // Universal English events always accepted\n if (UNIVERSAL_ENGLISH_KEYWORDS.has(normalized)) {\n return true;\n }\n\n return false;\n },\n\n isModifier(token: string): boolean {\n const normalized = token.toLowerCase();\n return (\n reverseModifiers.has(normalized) ||\n (allowEnglishFallback && ENGLISH_MODIFIERS.has(normalized))\n );\n },\n\n isLogical(token: string): boolean {\n const normalized = token.toLowerCase();\n return (\n reverseLogical.has(normalized) ||\n (allowEnglishFallback && ENGLISH_LOGICAL_KEYWORDS.has(normalized))\n );\n },\n\n isValue(token: string): boolean {\n const normalized = token.toLowerCase();\n return (\n reverseValues.has(normalized) ||\n (allowEnglishFallback && ENGLISH_VALUE_KEYWORDS.has(normalized))\n );\n },\n\n isExpression(token: string): boolean {\n const normalized = token.toLowerCase();\n return (\n reverseExpressions.has(normalized) ||\n (allowEnglishFallback && ENGLISH_EXPRESSION_KEYWORDS.has(normalized))\n );\n },\n\n getCommands(): string[] {\n return Array.from(localeCommands);\n },\n\n getKeywords(): string[] {\n return Array.from(allLocaleKeywords);\n },\n\n toLocale(englishKeyword: string): string | undefined {\n return forwardAll.get(englishKeyword.toLowerCase());\n },\n };\n}\n\n/**\n * Creates a default English-only keyword provider.\n * This is used when no locale is specified.\n */\nexport function createEnglishProvider(): KeywordProvider {\n return {\n locale: 'en',\n\n resolve(token: string): string | undefined {\n const normalized = token.toLowerCase();\n if (\n ENGLISH_COMMANDS.has(normalized) ||\n ENGLISH_KEYWORDS.has(normalized) ||\n UNIVERSAL_ENGLISH_KEYWORDS.has(normalized)\n ) {\n return normalized;\n }\n return undefined;\n },\n\n isCommand(token: string): boolean {\n return ENGLISH_COMMANDS.has(token.toLowerCase());\n },\n\n isKeyword(token: string): boolean {\n return ENGLISH_KEYWORDS.has(token.toLowerCase());\n },\n\n isEvent(token: string): boolean {\n return UNIVERSAL_ENGLISH_KEYWORDS.has(token.toLowerCase());\n },\n\n isModifier(token: string): boolean {\n return ENGLISH_MODIFIERS.has(token.toLowerCase());\n },\n\n isLogical(token: string): boolean {\n return ENGLISH_LOGICAL_KEYWORDS.has(token.toLowerCase());\n },\n\n isValue(token: string): boolean {\n return ENGLISH_VALUE_KEYWORDS.has(token.toLowerCase());\n },\n\n isExpression(token: string): boolean {\n return ENGLISH_EXPRESSION_KEYWORDS.has(token.toLowerCase());\n },\n\n getCommands(): string[] {\n return Array.from(ENGLISH_COMMANDS);\n },\n\n getKeywords(): string[] {\n return Array.from(ENGLISH_KEYWORDS);\n },\n\n toLocale(_englishKeyword: string): string | undefined {\n // English provider returns the keyword as-is\n return _englishKeyword.toLowerCase();\n },\n };\n}\n\n// Re-export the English keyword sets from constants for use in core\nexport {\n ENGLISH_COMMANDS,\n ENGLISH_KEYWORDS,\n ENGLISH_MODIFIERS,\n ENGLISH_LOGICAL_KEYWORDS,\n ENGLISH_VALUE_KEYWORDS,\n ENGLISH_EXPRESSION_KEYWORDS,\n UNIVERSAL_ENGLISH_KEYWORDS,\n} from '../constants';\n","// packages/i18n/src/parser/es.ts\n\nimport { es } from '../dictionaries/es';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Spanish keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Spanish:\n * - `en clic alternar .active` → parses as `on click toggle .active`\n * - `si verdadero entonces registrar \"hola\"` → parses as `if true then log \"hello\"`\n *\n * English keywords are also accepted (mixed mode), so:\n * - `en click alternar .active` also works (Spanish `en` + English `click`)\n *\n * @example\n * ```typescript\n * import { esKeywords } from '@lokascript/i18n/parser/es';\n * import { Parser } from '@lokascript/core';\n *\n * const parser = new Parser({ keywords: esKeywords });\n * parser.parse('en clic alternar .active');\n * ```\n */\nexport const esKeywords: KeywordProvider = createKeywordProvider(es, 'es', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { es as esDictionary } from '../dictionaries/es';\n","// packages/i18n/src/parser/ja.ts\n\nimport { ja } from '../dictionaries/ja';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Japanese keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Japanese:\n * - `クリック で 切り替え .active` → parses as `on click toggle .active`\n * - `もし 真 それから 記録 \"こんにちは\"` → parses as `if true then log \"hello\"`\n *\n * English keywords are also accepted (mixed mode), so:\n * - `click で 切り替え .active` also works (English `click` + Japanese `で`, `切り替え`)\n *\n * Japanese is a useful test case because:\n * - SOV word order (subject-object-verb) vs English SVO\n * - No articles (a, an, the)\n * - Unicode characters (tests tokenizer robustness)\n *\n * @example\n * ```typescript\n * import { jaKeywords } from '@lokascript/i18n/parser/ja';\n * import { Parser } from '@lokascript/core';\n *\n * const parser = new Parser({ keywords: jaKeywords });\n * parser.parse('クリック で 切り替え .active');\n * ```\n */\nexport const jaKeywords: KeywordProvider = createKeywordProvider(ja, 'ja', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { ja as jaDictionary } from '../dictionaries/ja';\n","// packages/i18n/src/parser/fr.ts\n\nimport { fr } from '../dictionaries/fr';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * French keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in French:\n * - `sur clic basculer .active` → parses as `on click toggle .active`\n * - `si vrai alors enregistrer \"bonjour\"` → parses as `if true then log \"hello\"`\n *\n * English keywords are also accepted (mixed mode), so:\n * - `sur click basculer .active` also works (French `sur` + English `click`)\n *\n * @example\n * ```typescript\n * import { frKeywords } from '@lokascript/i18n/parser/fr';\n * import { Parser } from '@lokascript/core';\n *\n * const parser = new Parser({ keywords: frKeywords });\n * parser.parse('sur clic basculer .active');\n * ```\n */\nexport const frKeywords: KeywordProvider = createKeywordProvider(fr, 'fr', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { fr as frDictionary } from '../dictionaries/fr';\n","// packages/i18n/src/parser/de.ts\n\nimport { de } from '../dictionaries/de';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * German keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in German:\n * - `bei klick umschalten .active` → parses as `on click toggle .active`\n * - `wenn wahr dann protokollieren \"hallo\"` → parses as `if true then log \"hello\"`\n *\n * English keywords are also accepted (mixed mode), so:\n * - `bei click umschalten .active` also works (German `bei` + English `click`)\n *\n * German is a useful test case because:\n * - Compound words (Zusammensetzungen) are common\n * - Different word order in clauses (V2 in main, V-final in subordinate)\n * - Case system (nominative, accusative, dative, genitive)\n *\n * @example\n * ```typescript\n * import { deKeywords } from '@lokascript/i18n/parser/de';\n * import { Parser } from '@lokascript/core';\n *\n * const parser = new Parser({ keywords: deKeywords });\n * parser.parse('bei klick umschalten .active');\n * ```\n */\nexport const deKeywords: KeywordProvider = createKeywordProvider(de, 'de', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { de as deDictionary } from '../dictionaries/de';\n","// packages/i18n/src/parser/ar.ts\n\nimport { ar } from '../dictionaries/ar';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Arabic keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Arabic:\n * - `على نقر بدل .active` → parses as `on click toggle .active`\n * - `إذا صحيح ثم سجل \"مرحبا\"` → parses as `if true then log \"hello\"`\n *\n * English keywords are also accepted (mixed mode), so:\n * - `على click بدل .active` also works (Arabic `على` + English `click`)\n *\n * Arabic is a crucial test case because:\n * - Right-to-left (RTL) script\n * - Different character set (Unicode Arabic block)\n * - Space-separated words with diacritics\n * - Tests parser's Unicode handling robustly\n *\n * Note: The parser handles RTL text correctly because tokenization\n * is based on whitespace/operator boundaries, not visual direction.\n *\n * @example\n * ```typescript\n * import { arKeywords } from '@lokascript/i18n/parser/ar';\n * import { Parser } from '@lokascript/core';\n *\n * const parser = new Parser({ keywords: arKeywords });\n * parser.parse('على نقر بدل .active');\n * ```\n */\nexport const arKeywords: KeywordProvider = createKeywordProvider(ar, 'ar', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { ar as arDictionary } from '../dictionaries/ar';\n","// packages/i18n/src/parser/ko.ts\n\nimport { ko } from '../dictionaries/ko';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Korean keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Korean:\n * - `에 클릭 토글 .active` → parses as `on click toggle .active`\n * - `만약 참 그러면 로그 \"안녕하세요\"` → parses as `if true then log \"hello\"`\n *\n * English keywords are also accepted (mixed mode), so:\n * - `에 click 토글 .active` also works (Korean `에` + English `click`)\n *\n * Korean is a useful test case because:\n * - SOV word order (Subject-Object-Verb)\n * - Hangul script (syllabic blocks)\n * - Agglutinative morphology with particles\n * - Tests parser's Unicode handling with Korean characters\n *\n * @example\n * ```typescript\n * import { koKeywords } from '@lokascript/i18n/parser/ko';\n * import { Parser } from '@lokascript/core';\n *\n * const parser = new Parser({ keywords: koKeywords });\n * parser.parse('에 클릭 토글 .active');\n * ```\n */\nexport const koKeywords: KeywordProvider = createKeywordProvider(ko, 'ko', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { ko as koDictionary } from '../dictionaries/ko';\n","// packages/i18n/src/parser/zh.ts\n\nimport { zh } from '../dictionaries/zh';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Chinese (Simplified) keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Chinese:\n * - `当 点击 切换 .active` → parses as `on click toggle .active`\n * - `如果 真 那么 日志 \"你好\"` → parses as `if true then log \"hello\"`\n *\n * English keywords are also accepted (mixed mode), so:\n * - `当 click 切换 .active` also works (Chinese `当` + English `click`)\n *\n * Chinese is a useful test case because:\n * - SVO word order (similar to English)\n * - Logographic script (Chinese characters)\n * - Isolating morphology (minimal inflection)\n * - Tests parser's Unicode handling with CJK characters\n * - Large developer population\n *\n * @example\n * ```typescript\n * import { zhKeywords } from '@lokascript/i18n/parser/zh';\n * import { Parser } from '@lokascript/core';\n *\n * const parser = new Parser({ keywords: zhKeywords });\n * parser.parse('当 点击 切换 .active');\n * ```\n */\nexport const zhKeywords: KeywordProvider = createKeywordProvider(zh, 'zh', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { zh as zhDictionary } from '../dictionaries/zh';\n","// packages/i18n/src/parser/tr.ts\n\nimport { tr } from '../dictionaries/tr';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Turkish keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Turkish:\n * - `üzerinde tıklama değiştir .active` → parses as `on click toggle .active`\n * - `eğer doğru ise kaydet \"merhaba\"` → parses as `if true then log \"hello\"`\n *\n * English keywords are also accepted (mixed mode), so:\n * - `üzerinde click değiştir .active` also works (Turkish `üzerinde` + English `click`)\n *\n * Turkish is a useful test case because:\n * - SOV word order (Subject-Object-Verb)\n * - Agglutinative morphology with suffixes\n * - Vowel harmony rules\n * - Latin script with special characters (ı, ğ, ş, ç, ö, ü)\n * - Tests parser's handling of extended Latin characters\n *\n * @example\n * ```typescript\n * import { trKeywords } from '@lokascript/i18n/parser/tr';\n * import { Parser } from '@lokascript/core';\n *\n * const parser = new Parser({ keywords: trKeywords });\n * parser.parse('üzerinde tıklama değiştir .active');\n * ```\n */\nexport const trKeywords: KeywordProvider = createKeywordProvider(tr, 'tr', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { tr as trDictionary } from '../dictionaries/tr';\n","// packages/i18n/src/parser/id.ts\n\nimport { id } from '../dictionaries/id';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Indonesian (Bahasa Indonesia) keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Indonesian:\n * - `pada klik ganti .active` → parses as `on click toggle .active`\n * - `jika benar lalu log \"Halo\"` → parses as `if true then log \"Hello\"`\n *\n * Indonesian is an SVO language with:\n * - Agglutinative morphology (prefixes/suffixes)\n * - No grammatical gender\n * - Prepositions (like English)\n * - Relatively simple syntax\n *\n * @example\n * ```typescript\n * import { idKeywords } from '@lokascript/i18n/parser/id';\n * import { Parser } from '@lokascript/core';\n *\n * const parser = new Parser({ keywords: idKeywords });\n * parser.parse('pada klik ganti .active');\n * ```\n */\nexport const idKeywords: KeywordProvider = createKeywordProvider(id, 'id', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { id as idDictionary } from '../dictionaries/id';\n","// packages/i18n/src/parser/qu.ts\n\nimport { qu } from '../dictionaries/qu';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Quechua (Runasimi) keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Quechua:\n * - `ñitiy-pi yapay #count-ta` → parses as `on click increment #count`\n *\n * Quechua is an SOV language with:\n * - Agglutinative/polysynthetic morphology\n * - Extensive suffix system (case markers: -ta, -man, -pi, -manta, -wan)\n * - Postpositions (unlike Spanish which uses prepositions)\n * - Object-Verb word order\n * - Evidentiality markers (not used in hyperscript)\n *\n * The grammar transformer handles suffix joining via hyphen notation\n * (e.g., \"#count-ta\" attaches the accusative marker).\n *\n * @example\n * ```typescript\n * import { quKeywords } from '@lokascript/i18n/parser/qu';\n * import { Parser } from '@lokascript/core';\n *\n * const parser = new Parser({ keywords: quKeywords });\n * parser.parse('ñitiy-pi yapay #count-ta');\n * ```\n */\nexport const quKeywords: KeywordProvider = createKeywordProvider(qu, 'qu', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { qu as quDictionary } from '../dictionaries/qu';\n","// packages/i18n/src/parser/sw.ts\n\nimport { sw } from '../dictionaries/sw';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Swahili (Kiswahili) keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Swahili:\n * - `kwenye bonyeza badilisha .active` → parses as `on click toggle .active`\n * - `kama kweli basi andika \"Habari\"` → parses as `if true then log \"Hello\"`\n *\n * Swahili is an SVO Bantu language with:\n * - Agglutinative verb morphology\n * - Noun class system (simplified for hyperscript keywords)\n * - Prepositions (unlike many other African languages)\n * - Subject-verb agreement (not relevant for hyperscript)\n *\n * Swahili is widely spoken in East Africa and serves as a lingua franca\n * for millions of speakers.\n *\n * @example\n * ```typescript\n * import { swKeywords } from '@lokascript/i18n/parser/sw';\n * import { Parser } from '@lokascript/core';\n *\n * const parser = new Parser({ keywords: swKeywords });\n * parser.parse('kwenye bonyeza badilisha .active');\n * ```\n */\nexport const swKeywords: KeywordProvider = createKeywordProvider(sw, 'sw', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { sw as swDictionary } from '../dictionaries/sw';\n","// packages/i18n/src/parser/pt.ts\n\nimport { pt } from '../dictionaries/pt';\nimport { createKeywordProvider } from './create-provider';\nimport type { KeywordProvider } from './types';\n\n/**\n * Portuguese (Português) keyword provider for the hyperscript parser.\n *\n * Enables parsing hyperscript written in Portuguese:\n * - `em clique alternar .active` → parses as `on click toggle .active`\n * - `se verdadeiro então registrar \"Olá\"` → parses as `if true then log \"Hello\"`\n *\n * Portuguese is an SVO language with:\n * - High mutual intelligibility with Spanish\n * - Prepositions (like English and Spanish)\n * - Gender agreement (simplified for hyperscript)\n * - Fusional morphology\n *\n * Direct translation is supported between Portuguese and Spanish,\n * avoiding the English pivot for more natural translations.\n *\n * @example\n * ```typescript\n * import { ptKeywords } from '@lokascript/i18n/parser/pt';\n * import { Parser } from '@lokascript/core';\n *\n * const parser = new Parser({ keywords: ptKeywords });\n * parser.parse('em clique alternar .active');\n * ```\n */\nexport const ptKeywords: KeywordProvider = createKeywordProvider(pt, 'pt', {\n allowEnglishFallback: true,\n});\n\n// Re-export for convenience\nexport { pt as ptDictionary } from '../dictionaries/pt';\n","// packages/i18n/src/parser/locale-manager.ts\n\nimport type { KeywordProvider } from './types';\nimport { createEnglishProvider } from './create-provider';\n\n/**\n * LocaleManager - Centralized locale configuration for hyperscript parsing.\n *\n * Provides utilities for:\n * - Setting/getting the default locale\n * - Creating locale-aware parsers\n * - Runtime locale switching\n *\n * @example\n * ```typescript\n * import { LocaleManager } from '@lokascript/i18n/parser';\n * import { esKeywords, frKeywords } from '@lokascript/i18n/parser';\n *\n * // Register available locales\n * LocaleManager.register('es', esKeywords);\n * LocaleManager.register('fr', frKeywords);\n *\n * // Set default locale\n * LocaleManager.setDefault('es');\n *\n * // Get keyword provider for parsing\n * const provider = LocaleManager.get(); // Returns esKeywords\n * const frProvider = LocaleManager.get('fr'); // Returns frKeywords\n *\n * // Use with parser\n * const parser = new Parser({ keywords: LocaleManager.get() });\n * ```\n */\nexport class LocaleManager {\n private static providers = new Map<string, KeywordProvider>();\n private static defaultLocale: string = 'en';\n private static englishProvider: KeywordProvider = createEnglishProvider();\n\n /**\n * Register a locale provider.\n *\n * @param locale - The locale code (e.g., 'es', 'ja', 'fr')\n * @param provider - The KeywordProvider for this locale\n */\n static register(locale: string, provider: KeywordProvider): void {\n LocaleManager.providers.set(locale.toLowerCase(), provider);\n }\n\n /**\n * Unregister a locale provider.\n *\n * @param locale - The locale code to remove\n */\n static unregister(locale: string): void {\n LocaleManager.providers.delete(locale.toLowerCase());\n }\n\n /**\n * Set the default locale.\n *\n * @param locale - The locale code to use as default\n * @throws Error if the locale is not registered\n */\n static setDefault(locale: string): void {\n const normalizedLocale = locale.toLowerCase();\n if (normalizedLocale !== 'en' && !LocaleManager.providers.has(normalizedLocale)) {\n throw new Error(\n `Locale '${locale}' is not registered. ` +\n `Available locales: ${LocaleManager.getAvailable().join(', ')}`\n );\n }\n LocaleManager.defaultLocale = normalizedLocale;\n }\n\n /**\n * Get the current default locale.\n *\n * @returns The default locale code\n */\n static getDefault(): string {\n return LocaleManager.defaultLocale;\n }\n\n /**\n * Get a keyword provider for a locale.\n *\n * @param locale - The locale code (optional, defaults to the default locale)\n * @returns The KeywordProvider for the locale\n * @throws Error if the locale is not registered\n */\n static get(locale?: string): KeywordProvider {\n const targetLocale = (locale || LocaleManager.defaultLocale).toLowerCase();\n\n // English is always available\n if (targetLocale === 'en') {\n return LocaleManager.englishProvider;\n }\n\n const provider = LocaleManager.providers.get(targetLocale);\n if (!provider) {\n throw new Error(\n `Locale '${targetLocale}' is not registered. ` +\n `Available locales: ${LocaleManager.getAvailable().join(', ')}`\n );\n }\n\n return provider;\n }\n\n /**\n * Check if a locale is registered.\n *\n * @param locale - The locale code to check\n * @returns True if the locale is available\n */\n static has(locale: string): boolean {\n const normalizedLocale = locale.toLowerCase();\n return normalizedLocale === 'en' || LocaleManager.providers.has(normalizedLocale);\n }\n\n /**\n * Get all available locale codes.\n *\n * @returns Array of locale codes\n */\n static getAvailable(): string[] {\n return ['en', ...Array.from(LocaleManager.providers.keys())];\n }\n\n /**\n * Reset the LocaleManager to its initial state.\n * Useful for testing.\n */\n static reset(): void {\n LocaleManager.providers.clear();\n LocaleManager.defaultLocale = 'en';\n }\n\n /**\n * Register all built-in locales at once.\n *\n * @example\n * ```typescript\n * import { LocaleManager } from '@lokascript/i18n/parser';\n * import { esKeywords, jaKeywords, frKeywords, deKeywords, arKeywords } from '@lokascript/i18n/parser';\n *\n * LocaleManager.registerAll({\n * es: esKeywords,\n * ja: jaKeywords,\n * fr: frKeywords,\n * de: deKeywords,\n * ar: arKeywords,\n * });\n * ```\n */\n static registerAll(providers: Record<string, KeywordProvider>): void {\n for (const [locale, provider] of Object.entries(providers)) {\n LocaleManager.register(locale, provider);\n }\n }\n}\n\n/**\n * Quick utility to detect the browser's preferred locale and return\n * a matching provider, falling back to English.\n *\n * @returns The KeywordProvider for the browser's locale or English\n *\n * @example\n * ```typescript\n * import { detectBrowserLocale } from '@lokascript/i18n/parser';\n * import { Parser } from '@lokascript/core';\n *\n * // Auto-detect and use browser locale\n * const parser = new Parser({ keywords: detectBrowserLocale() });\n * ```\n */\nexport function detectBrowserLocale(): KeywordProvider {\n if (typeof navigator === 'undefined') {\n return LocaleManager.get('en');\n }\n\n // Get browser languages in order of preference\n const languages = navigator.languages || [navigator.language];\n\n for (const lang of languages) {\n // Extract the base language code (e.g., 'es-MX' -> 'es')\n const baseLocale = lang.split('-')[0].toLowerCase();\n\n if (LocaleManager.has(baseLocale)) {\n return LocaleManager.get(baseLocale);\n }\n }\n\n // Fallback to English\n return LocaleManager.get('en');\n}\n","// packages/i18n/src/plugins/vite.ts\n\nimport type { Plugin } from 'vite';\nimport { HyperscriptTranslator } from '../translator';\n\n// node-html-parser is an optional dependency\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nlet parse: any;\ntry {\n // Dynamic require for optional dependency\n parse = require('node-html-parser').parse;\n} catch {\n parse = null;\n}\n\nexport interface HyperscriptI18nViteOptions {\n sourceLocale?: string;\n targetLocale?: string;\n preserveOriginal?: boolean;\n attributes?: string[];\n include?: RegExp | string[];\n exclude?: RegExp | string[];\n}\n\nexport function hyperscriptI18nVitePlugin(options: HyperscriptI18nViteOptions = {}): Plugin {\n const {\n sourceLocale = 'en',\n targetLocale = 'en',\n preserveOriginal = false,\n attributes = ['_', 'script', 'data-script'],\n include = /\\.(html|vue|svelte)$/,\n exclude = /node_modules/,\n } = options;\n\n const translator = new HyperscriptTranslator({ locale: sourceLocale });\n\n return {\n name: 'vite-plugin-hyperscript-i18n',\n\n transform(code: string, id: string) {\n // Check if file should be processed\n if (!shouldProcess(id, include, exclude)) {\n return null;\n }\n\n // Skip if no translation needed\n if (sourceLocale === targetLocale) {\n return null;\n }\n\n try {\n // Process HTML files\n if (id.endsWith('.html')) {\n return transformHtml(code, translator, {\n sourceLocale,\n targetLocale,\n preserveOriginal,\n attributes,\n });\n }\n\n // Process Vue SFCs\n if (id.endsWith('.vue')) {\n return transformVue(code, translator, {\n sourceLocale,\n targetLocale,\n preserveOriginal,\n attributes,\n });\n }\n\n // Process Svelte components\n if (id.endsWith('.svelte')) {\n return transformSvelte(code, translator, {\n sourceLocale,\n targetLocale,\n preserveOriginal,\n attributes,\n });\n }\n\n return null;\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n this.error(`Failed to process ${id}: ${message}`);\n }\n },\n\n configureServer(server) {\n // Add middleware for development\n server.middlewares.use((_req, res, next) => {\n // Add i18n headers\n res.setHeader('X-Hyperscript-I18n-Source', sourceLocale);\n res.setHeader('X-Hyperscript-I18n-Target', targetLocale);\n next();\n });\n },\n };\n}\n\nfunction shouldProcess(\n id: string,\n include: RegExp | string[],\n exclude: RegExp | string[]\n): boolean {\n const includePattern = Array.isArray(include) ? new RegExp(include.join('|')) : include;\n\n const excludePattern = Array.isArray(exclude) ? new RegExp(exclude.join('|')) : exclude;\n\n return includePattern.test(id) && !excludePattern.test(id);\n}\n\nfunction transformHtml(\n html: string,\n translator: HyperscriptTranslator,\n options: {\n sourceLocale: string;\n targetLocale: string;\n preserveOriginal: boolean;\n attributes: string[];\n }\n): { code: string; map?: any } {\n const root = parse(html);\n let hasTransformations = false;\n\n // Find all elements with hyperscript attributes\n options.attributes.forEach(attr => {\n const elements = root.querySelectorAll(`[${attr}]`);\n\n elements.forEach((element: any) => {\n const original = element.getAttribute(attr);\n if (!original) return;\n\n const translated = translator.translate(original, {\n from: options.sourceLocale,\n to: options.targetLocale,\n });\n\n if (original !== translated) {\n hasTransformations = true;\n\n if (options.preserveOriginal) {\n element.setAttribute(`${attr}-${options.sourceLocale}`, original);\n }\n\n element.setAttribute(attr, translated);\n }\n });\n });\n\n if (!hasTransformations) {\n return { code: html };\n }\n\n return {\n code: root.toString(),\n map: null, // Source maps could be added here\n };\n}\n\nfunction transformVue(\n code: string,\n translator: HyperscriptTranslator,\n options: any\n): { code: string; map?: any } {\n // Extract template section\n const templateMatch = code.match(/<template[^>]*>([\\s\\S]*?)<\\/template>/);\n if (!templateMatch) {\n return { code };\n }\n\n const template = templateMatch[1];\n const transformed = transformHtml(template, translator, options);\n\n if (transformed.code === template) {\n return { code };\n }\n\n // Replace template content\n const newCode = code.replace(templateMatch[0], `<template>${transformed.code}</template>`);\n\n return { code: newCode };\n}\n\nfunction transformSvelte(\n code: string,\n translator: HyperscriptTranslator,\n options: any\n): { code: string; map?: any } {\n // Svelte components have HTML at the top level\n const scriptMatch = code.match(/<script[^>]*>[\\s\\S]*?<\\/script>/g);\n const styleMatch = code.match(/<style[^>]*>[\\s\\S]*?<\\/style>/g);\n\n // Extract HTML portion\n let html = code;\n if (scriptMatch) {\n scriptMatch.forEach(script => {\n html = html.replace(script, '');\n });\n }\n if (styleMatch) {\n styleMatch.forEach(style => {\n html = html.replace(style, '');\n });\n }\n\n const transformed = transformHtml(html, translator, options);\n\n if (transformed.code === html) {\n return { code };\n }\n\n // Reconstruct Svelte component\n let newCode = '';\n if (scriptMatch) {\n newCode += scriptMatch.join('\\n') + '\\n\\n';\n }\n newCode += transformed.code;\n if (styleMatch) {\n newCode += '\\n\\n' + styleMatch.join('\\n');\n }\n\n return { code: newCode };\n}\n","// packages/i18n/src/plugins/webpack.ts\n\nimport { HyperscriptTranslator } from '../translator';\n\n// node-html-parser is an optional dependency\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nlet parse: any;\ntry {\n parse = require('node-html-parser').parse;\n} catch {\n parse = null;\n}\n\n// Webpack types - optional peer dependency\ninterface Compiler {\n hooks: any;\n webpack: any;\n}\ninterface WebpackPluginInstance {\n apply(compiler: Compiler): void;\n}\n\nexport interface HyperscriptI18nWebpackOptions {\n sourceLocale?: string;\n targetLocale?: string;\n preserveOriginal?: boolean;\n attributes?: string[];\n test?: RegExp;\n}\n\nexport class HyperscriptI18nWebpackPlugin implements WebpackPluginInstance {\n private options: Required<HyperscriptI18nWebpackOptions>;\n private translator: HyperscriptTranslator;\n\n constructor(options: HyperscriptI18nWebpackOptions = {}) {\n this.options = {\n sourceLocale: options.sourceLocale || 'en',\n targetLocale: options.targetLocale || 'en',\n preserveOriginal: options.preserveOriginal ?? false,\n attributes: options.attributes || ['_', 'script', 'data-script'],\n test: options.test || /\\.(html)$/,\n };\n\n this.translator = new HyperscriptTranslator({\n locale: this.options.sourceLocale,\n });\n }\n\n apply(compiler: Compiler): void {\n const pluginName = 'HyperscriptI18nWebpackPlugin';\n\n // Skip if no translation needed\n if (this.options.sourceLocale === this.options.targetLocale) {\n return;\n }\n\n compiler.hooks.compilation.tap(pluginName, (compilation: any) => {\n // Hook into HTML processing\n compilation.hooks.processAssets.tapPromise(\n {\n name: pluginName,\n stage: compiler.webpack.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE_SIZE,\n },\n async (assets: any) => {\n const promises = Object.keys(assets)\n .filter(filename => this.options.test.test(filename))\n .map(filename => this.processAsset(compilation, filename));\n\n await Promise.all(promises);\n }\n );\n });\n }\n\n private async processAsset(compilation: any, filename: string): Promise<void> {\n const asset = compilation.assets[filename];\n const source = asset.source();\n\n try {\n const processed = this.processHtml(source);\n\n if (processed !== source) {\n compilation.assets[filename] = {\n source: () => processed,\n size: () => processed.length,\n };\n }\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n compilation.errors.push(new Error(`Failed to process ${filename}: ${message}`));\n }\n }\n\n private processHtml(html: string): string {\n const root = parse(html);\n let hasChanges = false;\n\n this.options.attributes.forEach(attr => {\n const elements = root.querySelectorAll(`[${attr}]`);\n\n elements.forEach((element: any) => {\n const original = element.getAttribute(attr);\n if (!original) return;\n\n const translated = this.translator.translate(original, {\n from: this.options.sourceLocale,\n to: this.options.targetLocale,\n });\n\n if (original !== translated) {\n hasChanges = true;\n\n if (this.options.preserveOriginal) {\n element.setAttribute(`${attr}-${this.options.sourceLocale}`, original);\n }\n\n element.setAttribute(attr, translated);\n }\n });\n });\n\n return hasChanges ? root.toString() : html;\n }\n}\n","// packages/i18n/src/ssr-integration.ts\n\nimport { HyperscriptTranslator } from './translator';\nimport type { TranslationOptions } from './types';\n\n/**\n * SSR integration for i18n support\n */\nexport interface SSRLocaleContext {\n locale: string;\n direction: 'ltr' | 'rtl';\n preferredLocales: string[];\n userAgent?: string;\n acceptLanguage?: string;\n}\n\nexport interface SSRLocaleOptions {\n detectFromHeaders?: boolean;\n detectFromUrl?: boolean;\n fallbackLocale?: string;\n supportedLocales?: string[];\n urlPattern?: RegExp;\n}\n\nexport class SSRLocaleManager {\n private translator: HyperscriptTranslator;\n private options: Required<SSRLocaleOptions>;\n\n constructor(translator: HyperscriptTranslator, options: SSRLocaleOptions = {}) {\n this.translator = translator;\n this.options = {\n detectFromHeaders: options.detectFromHeaders ?? true,\n detectFromUrl: options.detectFromUrl ?? true,\n fallbackLocale: options.fallbackLocale ?? 'en',\n supportedLocales: options.supportedLocales ?? translator.getSupportedLocales(),\n urlPattern: options.urlPattern ?? /^\\/([a-z]{2}(-[A-Z]{2})?)(\\/|$)/,\n };\n }\n\n /**\n * Extract locale from SSR request\n */\n extractLocale(request: {\n url?: string;\n headers?: Record<string, string>;\n userAgent?: string;\n }): SSRLocaleContext {\n let locale = this.options.fallbackLocale;\n const preferredLocales: string[] = [];\n\n // Extract from URL first (highest priority)\n if (this.options.detectFromUrl && request.url) {\n const urlLocale = this.extractLocaleFromUrl(request.url);\n if (urlLocale && this.options.supportedLocales.includes(urlLocale)) {\n locale = urlLocale;\n }\n }\n\n // Extract from Accept-Language header\n if (this.options.detectFromHeaders && request.headers?.['accept-language']) {\n const headerLocales = this.parseAcceptLanguage(request.headers['accept-language']);\n preferredLocales.push(...headerLocales);\n\n // Use first supported locale from header if URL didn't provide one\n if (locale === this.options.fallbackLocale) {\n const supportedHeaderLocale = headerLocales.find(loc =>\n this.options.supportedLocales.includes(loc)\n );\n if (supportedHeaderLocale) {\n locale = supportedHeaderLocale;\n }\n }\n }\n\n const context: SSRLocaleContext = {\n locale,\n direction: this.translator.isRTL(locale) ? 'rtl' : 'ltr',\n preferredLocales,\n };\n if (request.userAgent) {\n context.userAgent = request.userAgent;\n }\n if (request.headers?.['accept-language']) {\n context.acceptLanguage = request.headers['accept-language'];\n }\n return context;\n }\n\n /**\n * Generate HTML lang and dir attributes\n */\n generateHtmlAttributes(context: SSRLocaleContext): string {\n return `lang=\"${context.locale}\" dir=\"${context.direction}\"`;\n }\n\n /**\n * Generate meta tags for SEO\n */\n generateMetaTags(context: SSRLocaleContext, alternateUrls?: Record<string, string>): string[] {\n const tags: string[] = [];\n\n // Content language\n tags.push(`<meta http-equiv=\"content-language\" content=\"${context.locale}\" />`);\n\n // Alternate languages for SEO\n if (alternateUrls) {\n Object.entries(alternateUrls).forEach(([locale, url]) => {\n tags.push(`<link rel=\"alternate\" hreflang=\"${locale}\" href=\"${url}\" />`);\n });\n }\n\n return tags;\n }\n\n /**\n * Translate hyperscript code for SSR\n */\n translateForSSR(\n hyperscriptCode: string,\n targetLocale: string,\n options: Partial<Omit<TranslationOptions, 'to'>> = {}\n ): string {\n return this.translator.translate(hyperscriptCode, {\n from: 'en',\n ...options,\n to: targetLocale,\n });\n }\n\n /**\n * Generate client-side hydration data\n */\n generateHydrationData(context: SSRLocaleContext): object {\n return {\n __HYPERFIXI_I18N__: {\n locale: context.locale,\n direction: context.direction,\n preferredLocales: context.preferredLocales,\n supportedLocales: this.options.supportedLocales,\n fallbackLocale: this.options.fallbackLocale,\n },\n };\n }\n\n private extractLocaleFromUrl(url: string): string | null {\n const match = url.match(this.options.urlPattern);\n return match ? match[1] : null;\n }\n\n private parseAcceptLanguage(acceptLanguage: string): string[] {\n return acceptLanguage\n .split(',')\n .map(lang => {\n const [locale, q] = lang.trim().split(';q=');\n return {\n locale: locale.trim(),\n quality: q ? parseFloat(q) : 1.0,\n };\n })\n .sort((a, b) => b.quality - a.quality)\n .map(item => item.locale);\n }\n}\n\n/**\n * Express middleware for SSR i18n\n */\nexport function createExpressI18nMiddleware(\n translator: HyperscriptTranslator,\n options?: SSRLocaleOptions\n) {\n const localeManager = new SSRLocaleManager(translator, options);\n\n return (req: any, _res: any, next: any) => {\n const localeContext = localeManager.extractLocale({\n url: req.originalUrl || req.url,\n headers: req.headers,\n userAgent: req.get('User-Agent'),\n });\n\n // Add to request for later use\n req.localeContext = localeContext;\n req.i18n = {\n translate: (code: string, targetLocale?: string) =>\n localeManager.translateForSSR(code, targetLocale || localeContext.locale),\n generateHtmlAttributes: () => localeManager.generateHtmlAttributes(localeContext),\n generateMetaTags: (alternateUrls?: Record<string, string>) =>\n localeManager.generateMetaTags(localeContext, alternateUrls),\n generateHydrationData: () => localeManager.generateHydrationData(localeContext),\n };\n\n next();\n };\n}\n\n/**\n * Next.js API for SSR i18n\n */\nexport function withI18n(\n handler: any,\n translator: HyperscriptTranslator,\n options?: SSRLocaleOptions\n) {\n const localeManager = new SSRLocaleManager(translator, options);\n\n return async (req: any, res: any) => {\n const localeContext = localeManager.extractLocale({\n url: req.url,\n headers: req.headers,\n userAgent: req.headers['user-agent'],\n });\n\n req.localeContext = localeContext;\n req.i18n = {\n translate: (code: string, targetLocale?: string) =>\n localeManager.translateForSSR(code, targetLocale || localeContext.locale),\n generateHtmlAttributes: () => localeManager.generateHtmlAttributes(localeContext),\n generateMetaTags: (alternateUrls?: Record<string, string>) =>\n localeManager.generateMetaTags(localeContext, alternateUrls),\n generateHydrationData: () => localeManager.generateHydrationData(localeContext),\n };\n\n return handler(req, res);\n };\n}\n","// packages/i18n/src/pluralization.ts\n\n/**\n * Pluralization rules for different languages\n */\nexport type PluralRule = (n: number) => 'zero' | 'one' | 'two' | 'few' | 'many' | 'other';\n\n/**\n * Pluralization rules based on Unicode CLDR\n */\nexport const pluralRules: Record<string, PluralRule> = {\n // English, German, Dutch, Swedish, etc.\n en: n => (n === 1 ? 'one' : 'other'),\n de: n => (n === 1 ? 'one' : 'other'),\n nl: n => (n === 1 ? 'one' : 'other'),\n sv: n => (n === 1 ? 'one' : 'other'),\n\n // Spanish, Italian, Portuguese\n es: n => (n === 1 ? 'one' : 'other'),\n it: n => (n === 1 ? 'one' : 'other'),\n pt: n => (n === 1 ? 'one' : 'other'),\n\n // French\n fr: n => (n >= 0 && n < 2 ? 'one' : 'other'),\n\n // Russian, Polish\n ru: n => {\n if (n % 10 === 1 && n % 100 !== 11) return 'one';\n if (n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20)) return 'few';\n return 'many';\n },\n pl: n => {\n if (n === 1) return 'one';\n if (n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20)) return 'few';\n return 'many';\n },\n\n // Arabic\n ar: n => {\n if (n === 0) return 'zero';\n if (n === 1) return 'one';\n if (n === 2) return 'two';\n if (n % 100 >= 3 && n % 100 <= 10) return 'few';\n if (n % 100 >= 11 && n % 100 <= 99) return 'many';\n return 'other';\n },\n\n // Chinese, Japanese, Korean (no pluralization)\n zh: () => 'other',\n ja: () => 'other',\n ko: () => 'other',\n\n // Turkish\n tr: n => (n === 1 ? 'one' : 'other'),\n\n // Indonesian (no pluralization, but has different forms)\n id: () => 'other',\n\n // Quechua (simple plural rule)\n qu: n => (n === 1 ? 'one' : 'other'),\n\n // Swahili\n sw: n => (n === 1 ? 'one' : 'other'),\n\n // Czech\n cs: n => {\n if (n === 1) return 'one';\n if (n >= 2 && n <= 4) return 'few';\n return 'other';\n },\n\n // Lithuanian\n lt: n => {\n if (n % 10 === 1 && n % 100 !== 11) return 'one';\n if (n % 10 >= 2 && n % 10 <= 9 && (n % 100 < 11 || n % 100 > 19)) return 'few';\n return 'other';\n },\n};\n\n/**\n * Plural forms for hyperscript keywords\n */\nexport interface PluralForms {\n zero?: string;\n one?: string;\n two?: string;\n few?: string;\n many?: string;\n other: string;\n}\n\n/**\n * Get the appropriate plural form for a locale and count\n */\nexport function getPlural(locale: string, count: number, forms: PluralForms): string {\n const rule = pluralRules[locale] || pluralRules.en;\n const key = rule(count);\n\n return forms[key] || forms.other;\n}\n\n/**\n * Plural-aware translation for time expressions\n */\nexport const pluralTimeExpressions: Record<string, Record<string, PluralForms>> = {\n en: {\n second: {\n one: 'second',\n other: 'seconds',\n },\n minute: {\n one: 'minute',\n other: 'minutes',\n },\n hour: {\n one: 'hour',\n other: 'hours',\n },\n day: {\n one: 'day',\n other: 'days',\n },\n },\n\n es: {\n second: {\n one: 'segundo',\n other: 'segundos',\n },\n minute: {\n one: 'minuto',\n other: 'minutos',\n },\n hour: {\n one: 'hora',\n other: 'horas',\n },\n day: {\n one: 'día',\n other: 'días',\n },\n },\n\n fr: {\n second: {\n one: 'seconde',\n other: 'secondes',\n },\n minute: {\n one: 'minute',\n other: 'minutes',\n },\n hour: {\n one: 'heure',\n other: 'heures',\n },\n day: {\n one: 'jour',\n other: 'jours',\n },\n },\n\n de: {\n second: {\n one: 'Sekunde',\n other: 'Sekunden',\n },\n minute: {\n one: 'Minute',\n other: 'Minuten',\n },\n hour: {\n one: 'Stunde',\n other: 'Stunden',\n },\n day: {\n one: 'Tag',\n other: 'Tage',\n },\n },\n\n ru: {\n second: {\n one: 'секунда',\n few: 'секунды',\n many: 'секунд',\n other: 'секунд',\n },\n minute: {\n one: 'минута',\n few: 'минуты',\n many: 'минут',\n other: 'минут',\n },\n hour: {\n one: 'час',\n few: 'часа',\n many: 'часов',\n other: 'часов',\n },\n day: {\n one: 'день',\n few: 'дня',\n many: 'дней',\n other: 'дней',\n },\n },\n\n ar: {\n second: {\n zero: 'ثوانِ',\n one: 'ثانية',\n two: 'ثانيتان',\n few: 'ثوانِ',\n many: 'ثانية',\n other: 'ثانية',\n },\n minute: {\n zero: 'دقائق',\n one: 'دقيقة',\n two: 'دقيقتان',\n few: 'دقائق',\n many: 'دقيقة',\n other: 'دقيقة',\n },\n hour: {\n zero: 'ساعات',\n one: 'ساعة',\n two: 'ساعتان',\n few: 'ساعات',\n many: 'ساعة',\n other: 'ساعة',\n },\n day: {\n zero: 'أيام',\n one: 'يوم',\n two: 'يومان',\n few: 'أيام',\n many: 'يوماً',\n other: 'يوم',\n },\n },\n\n tr: {\n second: {\n one: 'saniye',\n other: 'saniye',\n },\n minute: {\n one: 'dakika',\n other: 'dakika',\n },\n hour: {\n one: 'saat',\n other: 'saat',\n },\n day: {\n one: 'gün',\n other: 'gün',\n },\n },\n\n id: {\n second: {\n other: 'detik',\n },\n minute: {\n other: 'menit',\n },\n hour: {\n other: 'jam',\n },\n day: {\n other: 'hari',\n },\n },\n\n qu: {\n second: {\n one: 'sikundu',\n other: 'sikundukuna',\n },\n minute: {\n one: 'minutu',\n other: 'minutukuna',\n },\n hour: {\n one: 'hora',\n other: 'horakuna',\n },\n day: {\n one: 'p_unchaw',\n other: 'p_unchawkuna',\n },\n },\n\n sw: {\n second: {\n one: 'sekunde',\n other: 'sekunde',\n },\n minute: {\n one: 'dakika',\n other: 'dakika',\n },\n hour: {\n one: 'saa',\n other: 'masaa',\n },\n day: {\n one: 'siku',\n other: 'siku',\n },\n },\n};\n\n/**\n * Enhanced translator with pluralization support\n */\nexport class PluralAwareTranslator {\n /**\n * Translate time expressions with proper pluralization\n */\n static translateTimeExpression(value: number, unit: string, locale: string): string {\n const expressions = pluralTimeExpressions[locale];\n if (!expressions || !expressions[unit]) {\n return `${value} ${unit}${value === 1 ? '' : 's'}`;\n }\n\n const pluralForm = getPlural(locale, value, expressions[unit]);\n return `${value} ${pluralForm}`;\n }\n\n /**\n * Parse and translate plural-aware hyperscript time expressions\n */\n static translateHyperscriptTime(text: string, locale: string): string {\n // Match patterns like \"wait 5 seconds\", \"in 1 minute\", etc.\n // Note: Longer alternatives must come first (milliseconds before millisecond, etc.)\n return text.replace(\n /(\\d+)\\s+(milliseconds|millisecond|seconds|second|minutes|minute|hours|hour|days|day|ms)/gi,\n (_match, value, unit) => {\n const numValue = parseInt(value);\n const lowerUnit = unit.toLowerCase();\n\n // Handle milliseconds/ms specially before normalizing\n if (lowerUnit === 'ms' || lowerUnit === 'millisecond' || lowerUnit === 'milliseconds') {\n return this.translateTimeExpression(numValue, 'millisecond', locale);\n }\n\n // Normalize by removing trailing 's' for other units\n const normalizedUnit = lowerUnit.replace(/s$/, '');\n return this.translateTimeExpression(numValue, normalizedUnit, locale);\n }\n );\n }\n\n /**\n * Get ordinal numbers (1st, 2nd, 3rd) in different languages\n */\n static getOrdinal(n: number, locale: string): string {\n const ordinals: Record<string, (n: number) => string> = {\n en: n => {\n if (n % 100 >= 11 && n % 100 <= 13) return `${n}th`;\n switch (n % 10) {\n case 1:\n return `${n}st`;\n case 2:\n return `${n}nd`;\n case 3:\n return `${n}rd`;\n default:\n return `${n}th`;\n }\n },\n es: n => `${n}º`,\n fr: n => (n === 1 ? `${n}er` : `${n}e`),\n de: n => `${n}.`,\n ru: n => `${n}-й`,\n ar: n => `${n}`,\n zh: n => `第${n}`,\n ja: n => `${n}番目`,\n ko: n => `${n}번째`,\n tr: n => `${n}.`,\n id: n => `ke-${n}`,\n qu: n => `${n}-ñiqin`,\n sw: n => `wa ${n}`,\n };\n\n const ordinalFn = ordinals[locale] || ordinals.en;\n return ordinalFn(n);\n }\n}\n","// packages/i18n/src/formatting.ts\n\n/**\n * Locale-aware formatting utilities for i18n\n */\n\nexport interface NumberFormatOptions {\n style?: 'decimal' | 'currency' | 'percent';\n currency?: string;\n minimumFractionDigits?: number;\n maximumFractionDigits?: number;\n useGrouping?: boolean;\n}\n\nexport interface DateFormatOptions {\n dateStyle?: 'full' | 'long' | 'medium' | 'short';\n timeStyle?: 'full' | 'long' | 'medium' | 'short';\n year?: 'numeric' | '2-digit';\n month?: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow';\n day?: 'numeric' | '2-digit';\n hour?: 'numeric' | '2-digit';\n minute?: 'numeric' | '2-digit';\n second?: 'numeric' | '2-digit';\n timeZone?: string;\n}\n\nexport interface RelativeTimeFormatOptions {\n style?: 'long' | 'short' | 'narrow';\n numeric?: 'always' | 'auto';\n}\n\n/**\n * Format numbers according to locale\n */\nexport class NumberFormatter {\n private locale: string;\n private defaultOptions: NumberFormatOptions;\n\n constructor(locale: string, defaultOptions: NumberFormatOptions = {}) {\n this.locale = locale;\n this.defaultOptions = defaultOptions;\n }\n\n format(value: number, options: NumberFormatOptions = {}): string {\n const mergedOptions = { ...this.defaultOptions, ...options };\n\n try {\n const result = new Intl.NumberFormat(this.locale, mergedOptions).format(value);\n // Validate result - if style is currency but no currency symbol, use fallback\n if (mergedOptions.style === 'currency' && !/[$€£¥₹₩₽฿₪₴₱₫₵₦]/.test(result)) {\n return this.fallbackFormat(value, mergedOptions);\n }\n // Validate result - if style is percent but no % symbol, use fallback\n if (mergedOptions.style === 'percent' && !result.includes('%')) {\n return this.fallbackFormat(value, mergedOptions);\n }\n // Validate result - if input has decimals but output lost them (broken Intl like jsdom)\n // Check by seeing if the result represents a rounded integer when it shouldn't\n const hasFractionalPart = value % 1 !== 0;\n if (hasFractionalPart && mergedOptions.style !== 'percent') {\n // Extract numeric value from result (remove thousand separators, keep decimal)\n // If the result only contains digits and thousand separators (no decimal), it's broken\n const digitsOnly = result.replace(/[^\\d.-]/g, '');\n const parsedValue = parseFloat(digitsOnly);\n // If parsed value is an integer but input had decimals, Intl rounded incorrectly\n if (!isNaN(parsedValue) && parsedValue % 1 === 0) {\n return this.fallbackFormat(value, mergedOptions);\n }\n }\n return result;\n } catch (error) {\n // Fallback for unsupported locales\n return this.fallbackFormat(value, mergedOptions);\n }\n }\n\n formatCurrency(\n value: number,\n currency: string,\n options: Omit<NumberFormatOptions, 'style' | 'currency'> = {}\n ): string {\n return this.format(value, {\n ...options,\n style: 'currency',\n currency,\n });\n }\n\n formatPercent(value: number, options: Omit<NumberFormatOptions, 'style'> = {}): string {\n // Note: Intl.NumberFormat with style: 'percent' multiplies by 100\n // So 0.25 becomes \"25%\"\n return this.format(value, {\n ...options,\n style: 'percent',\n });\n }\n\n private fallbackFormat(value: number, options: NumberFormatOptions): string {\n const { style, currency, useGrouping = true } = options;\n // Default fraction digits based on style\n const defaultMin = style === 'currency' ? 2 : 0;\n const defaultMax = style === 'currency' ? 2 : 3;\n const minimumFractionDigits = options.minimumFractionDigits ?? defaultMin;\n const maximumFractionDigits = options.maximumFractionDigits ?? defaultMax;\n\n let formatted = value.toFixed(\n Math.min(maximumFractionDigits, Math.max(minimumFractionDigits, 0))\n );\n\n // Remove trailing zeros after decimal point if not required\n if (minimumFractionDigits === 0 && formatted.includes('.')) {\n formatted = formatted.replace(/\\.?0+$/, '');\n }\n\n // Add thousand separators if grouping is enabled\n if (useGrouping !== false) {\n const parts = formatted.split('.');\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n formatted = parts.join('.');\n }\n\n if (style === 'currency' && currency) {\n // Map currency codes to symbols\n const currencySymbols: Record<string, string> = {\n USD: '$',\n EUR: '€',\n GBP: '£',\n JPY: '¥',\n CNY: '¥',\n KRW: '₩',\n RUB: '₽',\n INR: '₹',\n THB: '฿',\n ILS: '₪',\n UAH: '₴',\n PHP: '₱',\n VND: '₫',\n GHS: '₵',\n NGN: '₦',\n };\n const symbol = currencySymbols[currency] || currency;\n return `${symbol}${formatted}`;\n }\n\n if (style === 'percent') {\n // Multiply by 100 for percent display (matching Intl behavior)\n const percentValue = (value * 100).toFixed(\n Math.min(maximumFractionDigits, Math.max(minimumFractionDigits, 0))\n );\n const cleanPercent =\n minimumFractionDigits === 0 && percentValue.includes('.')\n ? percentValue.replace(/\\.?0+$/, '')\n : percentValue;\n return `${cleanPercent}%`;\n }\n\n return formatted;\n }\n}\n\n/**\n * Format dates according to locale\n */\nexport class DateFormatter {\n private locale: string;\n private defaultOptions: DateFormatOptions;\n\n constructor(locale: string, defaultOptions: DateFormatOptions = {}) {\n this.locale = locale;\n this.defaultOptions = defaultOptions;\n }\n\n format(date: Date | string | number, options: DateFormatOptions = {}): string {\n const dateObj = new Date(date);\n const mergedOptions = { ...this.defaultOptions, ...options };\n\n try {\n const result = new Intl.DateTimeFormat(this.locale, mergedOptions).format(dateObj);\n // Validate: if timeStyle was requested but no time in result, use fallback\n if (mergedOptions.timeStyle && !/\\d{1,2}:\\d{2}/.test(result)) {\n return this.fallbackFormat(dateObj, mergedOptions);\n }\n return result;\n } catch (error) {\n return this.fallbackFormat(dateObj, mergedOptions);\n }\n }\n\n formatRelative(date: Date | string | number, options: RelativeTimeFormatOptions = {}): string {\n const dateObj = new Date(date);\n const now = new Date();\n const diffMs = dateObj.getTime() - now.getTime();\n\n try {\n const rtf = new Intl.RelativeTimeFormat(this.locale, options);\n\n const diffSeconds = Math.round(diffMs / 1000);\n const diffMinutes = Math.round(diffMs / (1000 * 60));\n const diffHours = Math.round(diffMs / (1000 * 60 * 60));\n const diffDays = Math.round(diffMs / (1000 * 60 * 60 * 24));\n\n if (Math.abs(diffSeconds) < 60) {\n return rtf.format(diffSeconds, 'second');\n } else if (Math.abs(diffMinutes) < 60) {\n return rtf.format(diffMinutes, 'minute');\n } else if (Math.abs(diffHours) < 24) {\n return rtf.format(diffHours, 'hour');\n } else if (Math.abs(diffDays) < 30) {\n return rtf.format(diffDays, 'day');\n } else {\n return this.format(dateObj);\n }\n } catch (error) {\n return this.fallbackRelativeFormat(dateObj, now);\n }\n }\n\n private fallbackFormat(date: Date, options: DateFormatOptions): string {\n // Basic fallback formatting\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n const hour = String(date.getHours()).padStart(2, '0');\n const minute = String(date.getMinutes()).padStart(2, '0');\n\n const dateStr = `${month}/${day}/${year}`;\n const timeStr = `${hour}:${minute}`;\n\n // Include time if timeStyle is set\n if (options.timeStyle) {\n return options.dateStyle ? `${dateStr} ${timeStr}` : timeStr;\n }\n\n if (options.dateStyle || (!options.dateStyle && !options.timeStyle)) {\n return dateStr;\n }\n\n return date.toString();\n }\n\n private fallbackRelativeFormat(date: Date, now: Date): string {\n const diffMs = date.getTime() - now.getTime();\n const diffDays = Math.round(diffMs / (1000 * 60 * 60 * 24));\n\n if (diffDays === 0) return 'today';\n if (diffDays === 1) return 'tomorrow';\n if (diffDays === -1) return 'yesterday';\n if (diffDays > 0) return `in ${diffDays} days`;\n return `${Math.abs(diffDays)} days ago`;\n }\n}\n\n/**\n * Locale-aware formatting manager\n */\nexport class LocaleFormatter {\n private locale: string;\n private numberFormatter: NumberFormatter;\n private dateFormatter: DateFormatter;\n\n constructor(locale: string) {\n this.locale = locale;\n this.numberFormatter = new NumberFormatter(locale);\n this.dateFormatter = new DateFormatter(locale);\n }\n\n // Number formatting\n formatNumber(value: number, options?: NumberFormatOptions): string {\n return this.numberFormatter.format(value, options);\n }\n\n formatCurrency(\n value: number,\n currency: string,\n options?: Omit<NumberFormatOptions, 'style' | 'currency'>\n ): string {\n return this.numberFormatter.formatCurrency(value, currency, options);\n }\n\n formatPercent(value: number, options?: Omit<NumberFormatOptions, 'style'>): string {\n return this.numberFormatter.formatPercent(value, options);\n }\n\n // Date formatting\n formatDate(date: Date | string | number, options?: DateFormatOptions): string {\n return this.dateFormatter.format(date, options);\n }\n\n formatRelativeTime(date: Date | string | number, options?: RelativeTimeFormatOptions): string {\n return this.dateFormatter.formatRelative(date, options);\n }\n\n // Specialized hyperscript formatting\n formatHyperscriptValue(value: any, type?: string): string {\n if (typeof value === 'number') {\n if (type === 'currency') {\n return this.formatCurrency(value, 'USD');\n }\n if (type === 'percent') {\n return this.formatPercent(value);\n }\n return this.formatNumber(value);\n }\n\n if (value instanceof Date || (typeof value === 'string' && !isNaN(Date.parse(value)))) {\n if (type === 'relative') {\n return this.formatRelativeTime(value);\n }\n return this.formatDate(value);\n }\n\n return String(value);\n }\n\n // List formatting\n formatList(\n items: string[],\n options: {\n style?: 'long' | 'short' | 'narrow';\n type?: 'conjunction' | 'disjunction' | 'unit';\n } = {}\n ): string {\n if (items.length === 0) return '';\n if (items.length === 1) return items[0];\n\n try {\n // ListFormat may not be available in all environments\n const ListFormatCtor = (Intl as any).ListFormat;\n if (ListFormatCtor) {\n const listFormat = new ListFormatCtor(this.locale, options);\n return listFormat.format(items);\n }\n throw new Error('ListFormat not available');\n } catch (_error) {\n // Fallback for unsupported locales\n const { type = 'conjunction' } = options;\n const connector = type === 'disjunction' ? 'or' : 'and';\n\n if (items.length === 2) {\n return `${items[0]} ${connector} ${items[1]}`;\n }\n\n return `${items.slice(0, -1).join(', ')}, ${connector} ${items[items.length - 1]}`;\n }\n }\n\n // Unit formatting\n formatUnit(\n value: number,\n unit: string,\n options: { style?: 'long' | 'short' | 'narrow' } = {}\n ): string {\n try {\n // Map common hyperscript units to Intl units\n const unitMap: Record<string, string> = {\n second: 'second',\n seconds: 'second',\n minute: 'minute',\n minutes: 'minute',\n hour: 'hour',\n hours: 'hour',\n day: 'day',\n days: 'day',\n pixel: 'pixel',\n pixels: 'pixel',\n px: 'pixel',\n percent: 'percent',\n '%': 'percent',\n };\n\n const intlUnit = unitMap[unit.toLowerCase()] || unit;\n\n if (Intl.NumberFormat.prototype.constructor.name === 'NumberFormat') {\n // Check if environment supports unit formatting\n const testFormatter = new Intl.NumberFormat(this.locale, {\n style: 'unit',\n unit: intlUnit,\n unitDisplay: options.style || 'long',\n } as any);\n\n return testFormatter.format(value);\n }\n } catch (error) {\n // Fallback formatting\n }\n\n return `${value} ${unit}`;\n }\n\n // Change locale\n setLocale(locale: string): void {\n this.locale = locale;\n this.numberFormatter = new NumberFormatter(locale);\n this.dateFormatter = new DateFormatter(locale);\n }\n\n getLocale(): string {\n return this.locale;\n }\n}\n\n/**\n * Global formatting utilities\n */\nexport const formatters = new Map<string, LocaleFormatter>();\n\nexport function getFormatter(locale: string): LocaleFormatter {\n if (!formatters.has(locale)) {\n formatters.set(locale, new LocaleFormatter(locale));\n }\n return formatters.get(locale)!;\n}\n\nexport function formatForLocale(locale: string, value: any, type?: string): string {\n return getFormatter(locale).formatHyperscriptValue(value, type);\n}\n","// packages/i18n/src/runtime.ts\n\nimport { HyperscriptTranslator } from './translator';\nimport { Dictionary, I18nConfig, TranslationOptions } from './types';\nimport { getBrowserLocales, isRTL } from './utils/locale';\nimport { getFormatter } from './formatting';\n\n/**\n * Runtime i18n manager for client-side locale switching\n */\nexport interface RuntimeI18nOptions extends I18nConfig {\n autoDetect?: boolean;\n storageKey?: string;\n urlParam?: string;\n cookieName?: string;\n updateURL?: boolean;\n updateTitle?: boolean;\n updateLang?: boolean;\n updateDir?: boolean;\n}\n\nexport class RuntimeI18nManager {\n private translator: HyperscriptTranslator;\n private options: Required<RuntimeI18nOptions>;\n private currentLocale: string;\n private observers: Set<(locale: string) => void> = new Set();\n private initialized = false;\n\n constructor(options: Partial<RuntimeI18nOptions> = {}) {\n this.options = {\n locale: options.locale || 'en',\n fallbackLocale: options.fallbackLocale || 'en',\n dictionaries: options.dictionaries || {},\n detectLocale: options.detectLocale ?? true,\n rtlLocales: options.rtlLocales || ['ar', 'he', 'fa', 'ur'],\n preserveOriginalAttribute: options.preserveOriginalAttribute || 'data-i18n-original',\n autoDetect: options.autoDetect ?? true,\n storageKey: options.storageKey || 'hyperfixi-locale',\n urlParam: options.urlParam || 'lang',\n cookieName: options.cookieName || 'hyperfixi-locale',\n updateURL: options.updateURL ?? false,\n updateTitle: options.updateTitle ?? true,\n updateLang: options.updateLang ?? true,\n updateDir: options.updateDir ?? true,\n };\n\n this.translator = new HyperscriptTranslator(this.options);\n this.currentLocale = this.options.locale;\n }\n\n /**\n * Initialize the runtime i18n system\n */\n async initialize(): Promise<void> {\n if (this.initialized) return;\n\n if (typeof window !== 'undefined') {\n // Detect initial locale\n const detectedLocale = this.detectInitialLocale();\n if (detectedLocale !== this.currentLocale) {\n await this.setLocale(detectedLocale, false);\n }\n\n // Set up event listeners\n this.setupEventListeners();\n\n // Translate existing elements\n this.translatePage();\n\n // Update document attributes\n this.updateDocumentAttributes();\n }\n\n this.initialized = true;\n }\n\n /**\n * Set the current locale\n */\n async setLocale(locale: string, updateStorage = true): Promise<void> {\n if (locale === this.currentLocale) return;\n\n const oldLocale = this.currentLocale;\n this.currentLocale = locale;\n\n // Update storage if requested\n if (updateStorage && typeof window !== 'undefined') {\n this.saveLocaleToStorage(locale);\n }\n\n // Update URL if requested\n if (this.options.updateURL && typeof window !== 'undefined') {\n this.updateURL(locale);\n }\n\n // Update document attributes\n if (typeof document !== 'undefined') {\n this.updateDocumentAttributes();\n }\n\n // Translate the page\n if (typeof document !== 'undefined') {\n this.translatePage(oldLocale);\n }\n\n // Notify observers\n this.notifyObservers(locale);\n }\n\n /**\n * Get the current locale\n */\n getLocale(): string {\n return this.currentLocale;\n }\n\n /**\n * Get supported locales\n */\n getSupportedLocales(): string[] {\n return this.translator.getSupportedLocales();\n }\n\n /**\n * Check if a locale is RTL\n */\n isRTL(locale?: string): boolean {\n return isRTL(locale || this.currentLocale);\n }\n\n /**\n * Translate a hyperscript string\n */\n translate(text: string, options: Partial<TranslationOptions> = {}): string {\n return this.translator.translate(text, {\n from: options.from || 'en',\n to: options.to || this.currentLocale,\n ...options,\n });\n }\n\n /**\n * Format a value according to current locale\n */\n format(value: any, type?: string): string {\n return getFormatter(this.currentLocale).formatHyperscriptValue(value, type);\n }\n\n /**\n * Add dictionary for a locale\n */\n addDictionary(locale: string, dictionary: Dictionary): void {\n this.translator.addDictionary(locale, dictionary);\n }\n\n /**\n * Subscribe to locale changes\n */\n onLocaleChange(callback: (locale: string) => void): () => void {\n this.observers.add(callback);\n return () => this.observers.delete(callback);\n }\n\n /**\n * Create a locale switcher element\n */\n createLocaleSwitcher(\n options: {\n type?: 'dropdown' | 'buttons';\n className?: string;\n showNativeNames?: boolean;\n } = {}\n ): HTMLElement {\n const { type = 'dropdown', className = 'locale-switcher', showNativeNames = true } = options;\n const supportedLocales = this.getSupportedLocales();\n\n if (type === 'dropdown') {\n const select = document.createElement('select');\n select.className = className;\n\n supportedLocales.forEach(locale => {\n const option = document.createElement('option');\n option.value = locale;\n option.textContent = this.getLocaleDisplayName(locale, showNativeNames);\n option.selected = locale === this.currentLocale;\n select.appendChild(option);\n });\n\n select.addEventListener('change', e => {\n const target = e.target as HTMLSelectElement;\n this.setLocale(target.value);\n });\n\n return select;\n } else {\n const container = document.createElement('div');\n container.className = className;\n\n supportedLocales.forEach(locale => {\n const button = document.createElement('button');\n button.textContent = this.getLocaleDisplayName(locale, showNativeNames);\n button.dataset.locale = locale;\n button.className = locale === this.currentLocale ? 'active' : '';\n\n button.addEventListener('click', () => {\n this.setLocale(locale);\n });\n\n container.appendChild(button);\n });\n\n return container;\n }\n }\n\n /**\n * Detect initial locale from various sources\n */\n private detectInitialLocale(): string {\n if (!this.options.autoDetect || typeof window === 'undefined') {\n return this.options.locale;\n }\n\n // 1. URL parameter\n const urlParams = new URLSearchParams(window.location.search);\n const urlLocale = urlParams.get(this.options.urlParam);\n if (urlLocale && this.translator.getSupportedLocales().includes(urlLocale)) {\n return urlLocale;\n }\n\n // 2. Local storage\n const storageLocale = localStorage.getItem(this.options.storageKey);\n if (storageLocale && this.translator.getSupportedLocales().includes(storageLocale)) {\n return storageLocale;\n }\n\n // 3. Cookie\n const cookieLocale = this.getCookie(this.options.cookieName);\n if (cookieLocale && this.translator.getSupportedLocales().includes(cookieLocale)) {\n return cookieLocale;\n }\n\n // 4. Browser languages\n const browserLocales = getBrowserLocales();\n for (const locale of browserLocales) {\n if (this.translator.getSupportedLocales().includes(locale)) {\n return locale;\n }\n // Try language-only match\n const lang = locale.split('-')[0];\n if (this.translator.getSupportedLocales().includes(lang)) {\n return lang;\n }\n }\n\n return this.options.fallbackLocale;\n }\n\n /**\n * Save locale to storage\n */\n private saveLocaleToStorage(locale: string): void {\n try {\n localStorage.setItem(this.options.storageKey, locale);\n this.setCookie(this.options.cookieName, locale, 365);\n } catch (error) {\n console.warn('Failed to save locale to storage:', error);\n }\n }\n\n /**\n * Update URL with current locale\n */\n private updateURL(locale: string): void {\n const url = new URL(window.location.href);\n url.searchParams.set(this.options.urlParam, locale);\n window.history.replaceState({}, '', url.toString());\n }\n\n /**\n * Update document attributes\n */\n private updateDocumentAttributes(): void {\n if (typeof document === 'undefined') return;\n\n if (this.options.updateLang) {\n document.documentElement.lang = this.currentLocale;\n }\n\n if (this.options.updateDir) {\n document.documentElement.dir = this.isRTL() ? 'rtl' : 'ltr';\n }\n\n if (this.options.updateTitle && document.title) {\n // Optionally translate the title if it contains hyperscript-like content\n // This is a simple implementation - could be enhanced\n document.title = this.translate(document.title);\n }\n }\n\n /**\n * Translate the entire page\n */\n private translatePage(fromLocale?: string): void {\n if (typeof document === 'undefined') return;\n\n // Find all elements with hyperscript attributes\n const attributes = ['_', 'data-script', 'script'];\n\n attributes.forEach(attr => {\n const elements = document.querySelectorAll(`[${attr}]`);\n elements.forEach(element => {\n const original = element.getAttribute(attr);\n if (!original) return;\n\n try {\n const translated = this.translator.translate(original, {\n from: fromLocale || 'en',\n to: this.currentLocale,\n });\n\n if (translated !== original) {\n // Preserve original if configured\n if (this.options.preserveOriginalAttribute) {\n element.setAttribute(this.options.preserveOriginalAttribute, original);\n }\n\n element.setAttribute(attr, translated);\n }\n } catch (error) {\n console.warn(`Failed to translate ${attr} attribute:`, error);\n }\n });\n });\n }\n\n /**\n * Set up event listeners\n */\n private setupEventListeners(): void {\n // Listen for language change events\n window.addEventListener('languagechange', () => {\n if (this.options.autoDetect) {\n const newLocale = this.detectInitialLocale();\n if (newLocale !== this.currentLocale) {\n this.setLocale(newLocale);\n }\n }\n });\n\n // Listen for popstate events (back/forward navigation)\n window.addEventListener('popstate', () => {\n if (this.options.updateURL) {\n const urlParams = new URLSearchParams(window.location.search);\n const urlLocale = urlParams.get(this.options.urlParam);\n if (urlLocale && urlLocale !== this.currentLocale) {\n this.setLocale(urlLocale, false);\n }\n }\n });\n }\n\n /**\n * Notify observers of locale change\n */\n private notifyObservers(locale: string): void {\n this.observers.forEach(callback => {\n try {\n callback(locale);\n } catch (error) {\n console.warn('Locale change observer error:', error);\n }\n });\n }\n\n /**\n * Get locale display name\n */\n private getLocaleDisplayName(locale: string, showNative: boolean): string {\n const names: Record<string, { english: string; native: string }> = {\n en: { english: 'English', native: 'English' },\n es: { english: 'Spanish', native: 'Español' },\n fr: { english: 'French', native: 'Français' },\n de: { english: 'German', native: 'Deutsch' },\n ja: { english: 'Japanese', native: '日本語' },\n ko: { english: 'Korean', native: '한국어' },\n zh: { english: 'Chinese', native: '中文' },\n ar: { english: 'Arabic', native: 'العربية' },\n };\n\n const info = names[locale];\n if (!info) return locale;\n\n return showNative ? info.native : info.english;\n }\n\n /**\n * Cookie utilities\n */\n private getCookie(name: string): string | null {\n if (typeof document === 'undefined') return null;\n\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${name}=`);\n if (parts.length === 2) {\n return parts.pop()?.split(';').shift() || null;\n }\n return null;\n }\n\n private setCookie(name: string, value: string, days: number): void {\n if (typeof document === 'undefined') return;\n\n const expires = new Date();\n expires.setTime(expires.getTime() + days * 24 * 60 * 60 * 1000);\n document.cookie = `${name}=${value};expires=${expires.toUTCString()};path=/`;\n }\n}\n\n/**\n * Global runtime instance\n */\nexport let runtimeI18n: RuntimeI18nManager | null = null;\n\n/**\n * Initialize global runtime i18n\n */\nexport function initializeI18n(options?: RuntimeI18nOptions): RuntimeI18nManager {\n runtimeI18n = new RuntimeI18nManager(options);\n return runtimeI18n;\n}\n\n/**\n * Get global runtime i18n instance\n */\nexport function getI18n(): RuntimeI18nManager {\n if (!runtimeI18n) {\n throw new Error('I18n not initialized. Call initializeI18n() first.');\n }\n return runtimeI18n;\n}\n","export * from \"./errors.js\";\nexport * from \"./helpers/parseUtil.js\";\nexport * from \"./helpers/typeAliases.js\";\nexport * from \"./helpers/util.js\";\nexport * from \"./types.js\";\nexport * from \"./ZodError.js\";\n","export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n","import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n","import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"bigint\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\nexport default errorMap;\n","import defaultErrorMap from \"./locales/en.js\";\nlet overrideErrorMap = defaultErrorMap;\nexport { defaultErrorMap };\nexport function setErrorMap(map) {\n overrideErrorMap = map;\n}\nexport function getErrorMap() {\n return overrideErrorMap;\n}\n","import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nexport const INVALID = Object.freeze({\n status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n","export var errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n","import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nexport class ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header)\n return false;\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nexport class ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nexport class ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nexport class ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nexport class ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nexport class ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nexport class ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nexport class ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nexport class ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nexport class ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nexport class ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nexport class ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexport class ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nexport class ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nexport class ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexport class ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nexport class ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nexport class ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nexport class ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nexport class ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nexport class ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nexport class ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nexport class ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nexport class ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexport class ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexport class ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n","/**\n * Enhanced I18n Implementation\n * Type-safe internationalization following enhanced pattern\n */\n\nimport { z } from 'zod';\n// Note: Dictionary, I18nConfig, TranslationOptions, TranslationResult are defined in ./types.js\n// but may not be used directly in this file (used for documentation purposes)\n\n// ============================================================================\n// Local Type Definitions\n// These types were previously imported from core but are defined locally\n// to avoid cross-package dependencies and missing module errors.\n// ============================================================================\n\n/**\n * Validation result for i18n operations\n */\nexport interface ValidationResult {\n isValid: boolean;\n errors: Array<{ type: string; message: string; path?: string }>;\n suggestions?: string[];\n}\n\n/**\n * Evaluation result wrapper\n */\nexport interface EvaluationResult<T = unknown> {\n success: boolean;\n value?: T;\n type?: string;\n errors?: Array<{ type: string; message: string }>;\n suggestions?: string[];\n}\n\n/**\n * Context metadata for enhanced pattern\n */\nexport interface ContextMetadata {\n contextId?: string;\n timestamp?: number;\n category: string;\n capabilities?: string[];\n state?: string;\n // Extended metadata properties\n complexity?: string;\n sideEffects?: string[];\n dependencies?: string[];\n returnTypes?: string[];\n relatedContexts?: string[];\n examples?: Array<{\n input: string;\n description: string;\n expectedOutput: string;\n }>;\n // Additional extended properties\n frameworkDependencies?: string[];\n environmentRequirements?: {\n browser?: boolean;\n server?: boolean;\n nodejs?: boolean;\n };\n performance?: {\n averageTime?: number;\n complexity?: string;\n };\n}\n\n/**\n * LLM documentation interface for AI-friendly descriptions\n */\nexport interface LLMDocumentation {\n summary: string;\n description?: string;\n examples?: Array<\n | string\n | {\n title: string;\n code: string;\n explanation: string;\n output: string;\n }\n >;\n category?: string;\n parameters?: Array<{\n name: string;\n type: string;\n description: string;\n required?: boolean;\n default?: string;\n optional?: boolean;\n examples?: string[];\n }>;\n returns?: {\n type: string;\n description: string;\n examples?: string[];\n };\n tips?: string[];\n commonMistakes?: string[];\n seeAlso?: string[];\n tags?: string[];\n}\n\n/**\n * Evaluation type enumeration\n */\nexport type EvaluationType = 'sync' | 'async' | 'streaming' | 'Context';\n\n/**\n * Enhanced context base interface\n */\nexport interface EnhancedContextBase extends ContextMetadata {\n [key: string]: unknown;\n}\n\n/**\n * Typed context implementation interface\n */\nexport interface TypedContextImplementation<TInput, TOutput> {\n inputSchema: z.ZodType<TInput>;\n outputSchema: z.ZodType<TOutput>;\n evaluate(input: TInput): Promise<EvaluationResult<TOutput>>;\n validate(input: unknown): ValidationResult;\n metadata: ContextMetadata;\n documentation: LLMDocumentation;\n}\n\n// ============================================================================\n// Enhanced I18n Input/Output Schemas\n// ============================================================================\n\nexport const EnhancedI18nInputSchema = z.object({\n /** Locale configuration */\n locale: z.string().min(2, 'Locale must be at least 2 characters'),\n fallbackLocale: z.string().optional(),\n /** Dictionary data for translations */\n dictionaries: z\n .record(\n z.string(),\n z\n .object({\n commands: z.record(z.string(), z.string()),\n modifiers: z.record(z.string(), z.string()),\n events: z.record(z.string(), z.string()),\n logical: z.record(z.string(), z.string()),\n temporal: z.record(z.string(), z.string()),\n values: z.record(z.string(), z.string()),\n attributes: z.record(z.string(), z.string()),\n })\n .catchall(z.record(z.string(), z.string()))\n )\n .optional(),\n /** Translation options */\n options: z\n .object({\n detectLocale: z.boolean().default(true),\n rtlLocales: z.array(z.string()).default([]),\n preserveOriginalAttribute: z.string().optional(),\n validate: z.boolean().default(true),\n })\n .optional(),\n /** Context variables for translation */\n variables: z.record(z.string(), z.unknown()).optional(),\n /** Environment and debug settings */\n environment: z.enum(['frontend', 'backend', 'universal']).default('universal'),\n debug: z.boolean().default(false),\n});\n\n// Note: Using z.any() for function types because Zod's z.function() inference\n// produces (...args: unknown[]) => unknown which is incompatible with specific signatures\nexport const EnhancedI18nOutputSchema = z.object({\n /** Context identifier */\n contextId: z.string(),\n timestamp: z.number(),\n category: z.literal('Universal'),\n capabilities: z.array(z.string()),\n state: z.enum(['ready', 'loading', 'error']),\n\n /** I18n specific capabilities */\n translate: z.any(),\n translateHyperscript: z.any(),\n setLocale: z.any(),\n getLocale: z.any(),\n validateTranslation: z.any(),\n\n /** Locale management */\n locale: z.object({\n current: z.string(),\n fallback: z.string().optional(),\n direction: z.enum(['ltr', 'rtl']),\n available: z.array(z.string()),\n }),\n\n /** Dictionary access */\n dictionary: z.object({\n get: z.any(),\n set: z.any(),\n has: z.any(),\n keys: z.any(),\n }),\n\n /** Formatting utilities */\n format: z.object({\n number: z.any(),\n date: z.any(),\n currency: z.any(),\n relative: z.any(),\n }),\n});\n\nexport type EnhancedI18nInput = z.infer<typeof EnhancedI18nInputSchema>;\nexport type EnhancedI18nOutput = z.infer<typeof EnhancedI18nOutputSchema>;\n\n// ============================================================================\n// Enhanced I18n Context Implementation\n// ============================================================================\n\nexport class TypedI18nContextImplementation {\n public readonly name = 'i18nContext';\n public readonly category = 'Universal' as const;\n public readonly description =\n 'Type-safe internationalization context with enhanced validation and LLM integration';\n public readonly inputSchema = EnhancedI18nInputSchema;\n public readonly outputType: EvaluationType = 'Context';\n\n private evaluationHistory: Array<{\n input: EnhancedI18nInput;\n output: EnhancedI18nOutput | undefined;\n success: boolean;\n duration: number;\n timestamp: number;\n }> = [];\n\n public readonly metadata: ContextMetadata = {\n category: 'Universal',\n complexity: 'moderate',\n sideEffects: ['locale-detection', 'dictionary-loading', 'text-transformation'],\n dependencies: ['dictionaries', 'locale-detection', 'formatting-apis'],\n returnTypes: ['Context'],\n examples: [\n {\n input: '{ locale: \"es\", options: { detectLocale: true } }',\n description: 'Initialize Spanish locale with auto-detection',\n expectedOutput: 'TypedI18nContext with Spanish translations and RTL support',\n },\n {\n input:\n '{ locale: \"ar\", dictionaries: { ar: arabicDict }, options: { rtlLocales: [\"ar\"] } }',\n description: 'Arabic locale with custom dictionary and RTL configuration',\n expectedOutput: 'Arabic-aware context with right-to-left text direction',\n },\n {\n input: '{ locale: \"qu\", environment: \"frontend\" }',\n description: 'Quechua locale for frontend environment',\n expectedOutput: 'Indigenous language support with browser integration',\n },\n ],\n relatedContexts: ['frontendContext', 'backendContext', 'templateContext'],\n frameworkDependencies: ['intl-apis', 'locale-detection'],\n environmentRequirements: {\n browser: true,\n server: true,\n nodejs: true,\n },\n performance: {\n averageTime: 8.5,\n complexity: 'O(n)', // n = dictionary size\n },\n };\n\n public readonly documentation: LLMDocumentation = {\n summary:\n 'Creates type-safe internationalization context for multi-language hyperscript development with dictionary management, locale detection, and formatting utilities',\n parameters: [\n {\n name: 'i18nConfig',\n type: 'EnhancedI18nInput',\n description:\n 'Internationalization configuration including locale, dictionaries, and options',\n optional: false,\n examples: [\n '{ locale: \"fr\", options: { detectLocale: true } }',\n '{ locale: \"zh\", dictionaries: { zh: chineseDict } }',\n '{ locale: \"sw\", environment: \"backend\", options: { validate: true } }',\n ],\n },\n ],\n returns: {\n type: 'EnhancedI18nContext',\n description:\n 'Initialized internationalization context with translation capabilities and locale management',\n examples: [\n 'context.translate(\"commands.click\") → \"cliquer\"',\n 'context.translateHyperscript(\"on click\") → \"sur clic\"',\n 'context.setLocale(\"ja\") → switches to Japanese',\n 'context.format.number(1234.56) → \"1,234.56\" or \"1.234,56\" based on locale',\n ],\n },\n examples: [\n {\n title: 'Multi-language hyperscript development',\n code: 'const i18n = await createI18nContext({ locale: \"es\", options: { detectLocale: true } })',\n explanation: 'Create Spanish internationalization context with automatic locale detection',\n output: 'Spanish-aware hyperscript translation and formatting capabilities',\n },\n {\n title: 'Custom dictionary integration',\n code: 'await i18n.initialize({ locale: \"qu\", dictionaries: { qu: quechuaDict } })',\n explanation: 'Initialize Quechua language support with custom dictionary',\n output: 'Indigenous language hyperscript translation support',\n },\n {\n title: 'RTL language support',\n code: 'await i18n.initialize({ locale: \"ar\", options: { rtlLocales: [\"ar\", \"he\"] } })',\n explanation: 'Arabic locale with right-to-left text direction support',\n output: 'RTL-aware hyperscript with proper text direction and layout',\n },\n ],\n seeAlso: ['frontendContext', 'backendContext', 'templateIntegration', 'formatting'],\n tags: [\n 'i18n',\n 'internationalization',\n 'locale',\n 'translation',\n 'type-safe',\n 'enhanced-pattern',\n ],\n };\n\n async initialize(input: EnhancedI18nInput): Promise<EvaluationResult<EnhancedI18nOutput>> {\n const startTime = Date.now();\n\n try {\n // Validate input using enhanced pattern\n const validation = this.validate(input);\n if (!validation.isValid) {\n return {\n success: false,\n errors: validation.errors,\n suggestions: validation.suggestions || [],\n };\n }\n\n // Initialize locale and dictionaries\n const locale = await this.initializeLocale(input);\n const dictionaries = await this.loadDictionaries(input);\n\n // Create enhanced i18n context\n const context: EnhancedI18nOutput = {\n contextId: `i18n-${Date.now()}`,\n timestamp: startTime,\n category: 'Universal',\n capabilities: [\n 'translation',\n 'locale-management',\n 'formatting',\n 'validation',\n 'rtl-support',\n ],\n state: 'ready',\n\n // Enhanced translation functions\n translate: this.createTranslateFunction(dictionaries, locale),\n translateHyperscript: this.createHyperscriptTranslator(dictionaries, locale),\n setLocale: this.createLocaleChanger(dictionaries),\n getLocale: () => locale.current,\n validateTranslation: this.createValidationFunction(dictionaries),\n\n // Locale management\n locale: {\n current: locale.current,\n fallback: locale.fallback,\n direction: locale.direction,\n available: Object.keys(dictionaries),\n },\n\n // Dictionary access\n dictionary: {\n get: (key: string) => this.getDictionaryValue(dictionaries, locale.current, key),\n set: (key: string, value: string) =>\n this.setDictionaryValue(dictionaries, locale.current, key, value),\n has: (key: string) => this.hasDictionaryValue(dictionaries, locale.current, key),\n keys: () => this.getDictionaryKeys(dictionaries, locale.current),\n },\n\n // Enhanced formatting utilities\n format: {\n number: this.createNumberFormatter(locale.current),\n date: this.createDateFormatter(locale.current),\n currency: this.createCurrencyFormatter(locale.current),\n relative: this.createRelativeTimeFormatter(locale.current),\n },\n };\n\n // Track performance using enhanced pattern\n this.trackPerformance(startTime, true, context);\n\n return {\n success: true,\n value: context,\n type: 'Context',\n };\n } catch (error) {\n this.trackPerformance(startTime, false);\n\n return {\n success: false,\n errors: [\n {\n type: 'runtime-error',\n message: `I18n context initialization failed: ${error instanceof Error ? error.message : String(error)}`,\n },\n ],\n suggestions: [\n 'Verify locale code is valid (ISO 639-1 format)',\n 'Check dictionary structure matches expected format',\n 'Ensure dictionaries are properly loaded',\n 'Validate environment requirements are met',\n ],\n };\n }\n }\n\n validate(input: unknown): ValidationResult {\n try {\n const parsed = this.inputSchema.parse(input);\n const errors: Array<{ type: string; message: string; path?: string }> = [];\n const suggestions: string[] = [];\n\n // Enhanced validation logic\n const data = parsed as EnhancedI18nInput;\n\n // Validate locale format\n if (data.locale && !/^[a-z]{2}(-[A-Z]{2})?$/.test(data.locale)) {\n errors.push({\n type: 'invalid-locale',\n message: 'Locale must be in ISO 639-1 format (e.g., \"en\", \"es\", \"zh-CN\")',\n path: 'locale',\n });\n suggestions.push('Use standard locale codes like \"en\", \"es\", \"fr\", \"de\", \"ja\", \"zh\"');\n }\n\n // Validate fallback locale\n if (data.fallbackLocale && !/^[a-z]{2}(-[A-Z]{2})?$/.test(data.fallbackLocale)) {\n errors.push({\n type: 'invalid-fallback-locale',\n message: 'Fallback locale must be in ISO 639-1 format',\n path: 'fallbackLocale',\n });\n }\n\n // Validate dictionary structure\n if (data.dictionaries) {\n Object.entries(data.dictionaries).forEach(([locale, dict]) => {\n const requiredCategories = [\n 'commands',\n 'modifiers',\n 'events',\n 'logical',\n 'temporal',\n 'values',\n 'attributes',\n ];\n const missingCategories = requiredCategories.filter(cat => !dict[cat]);\n\n if (missingCategories.length > 0) {\n errors.push({\n type: 'incomplete-dictionary',\n message: `Dictionary for ${locale} is missing categories: ${missingCategories.join(', ')}`,\n path: `dictionaries.${locale}`,\n });\n suggestions.push(\n `Add missing categories to ${locale} dictionary for complete hyperscript translation`\n );\n }\n });\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n suggestions,\n };\n } catch (error) {\n return {\n isValid: false,\n errors: [\n {\n type: 'schema-validation',\n message: error instanceof Error ? error.message : 'Invalid input format',\n },\n ],\n suggestions: [\n 'Ensure input matches EnhancedI18nInput schema',\n 'Check locale is a valid string',\n 'Verify dictionaries follow the expected structure',\n ],\n };\n }\n }\n\n // ============================================================================\n // Enhanced Helper Methods\n // ============================================================================\n\n private async initializeLocale(input: EnhancedI18nInput) {\n const { locale, fallbackLocale = 'en', options } = input;\n\n // Detect RTL languages\n const rtlLocales = options?.rtlLocales || ['ar', 'he', 'fa', 'ur'];\n const direction = rtlLocales.includes(locale) ? 'rtl' : 'ltr';\n\n return {\n current: locale,\n fallback: fallbackLocale,\n direction: direction as 'ltr' | 'rtl',\n };\n }\n\n private async loadDictionaries(input: EnhancedI18nInput) {\n // Return provided dictionaries or load defaults\n return input.dictionaries || {};\n }\n\n private createTranslateFunction(dictionaries: Record<string, any>, locale: any) {\n return (key: string, category: string = 'commands') => {\n const dict = dictionaries[locale.current];\n if (!dict || !dict[category]) {\n return key; // Return original if no translation found\n }\n return dict[category][key] || key;\n };\n }\n\n private createHyperscriptTranslator(dictionaries: Record<string, any>, locale: any) {\n return (hyperscript: string) => {\n // Enhanced hyperscript translation logic\n const dict = dictionaries[locale.current];\n if (!dict) return hyperscript;\n\n let translated = hyperscript;\n\n // Translate commands, modifiers, events, etc.\n Object.entries(dict.commands || {}).forEach(([en, translated_word]) => {\n translated = translated.replace(new RegExp(`\\\\b${en}\\\\b`, 'g'), translated_word as string);\n });\n\n Object.entries(dict.modifiers || {}).forEach(([en, translated_word]) => {\n translated = translated.replace(new RegExp(`\\\\b${en}\\\\b`, 'g'), translated_word as string);\n });\n\n return translated;\n };\n }\n\n private createLocaleChanger(dictionaries: Record<string, any>) {\n return (newLocale: string) => {\n if (dictionaries[newLocale]) {\n // Logic to change locale\n return true;\n }\n return false;\n };\n }\n\n private createValidationFunction(dictionaries: Record<string, any>) {\n return (locale: string, _hyperscript: string) => {\n const dict = dictionaries[locale];\n if (!dict) {\n return {\n valid: false,\n errors: [`No dictionary found for locale: ${locale}`],\n coverage: 0,\n };\n }\n\n // Validation logic here\n return {\n valid: true,\n errors: [],\n coverage: 100,\n };\n };\n }\n\n private getDictionaryValue(dictionaries: Record<string, any>, locale: string, key: string) {\n const [category, ...keyParts] = key.split('.');\n const actualKey = keyParts.join('.');\n const dict = dictionaries[locale];\n return dict?.[category]?.[actualKey];\n }\n\n private setDictionaryValue(\n dictionaries: Record<string, any>,\n locale: string,\n key: string,\n value: string\n ) {\n const [category, ...keyParts] = key.split('.');\n const actualKey = keyParts.join('.');\n if (!dictionaries[locale]) dictionaries[locale] = {};\n if (!dictionaries[locale][category]) dictionaries[locale][category] = {};\n dictionaries[locale][category][actualKey] = value;\n }\n\n private hasDictionaryValue(\n dictionaries: Record<string, any>,\n locale: string,\n key: string\n ): boolean {\n return this.getDictionaryValue(dictionaries, locale, key) !== undefined;\n }\n\n private getDictionaryKeys(dictionaries: Record<string, any>, locale: string): string[] {\n const dict = dictionaries[locale];\n if (!dict) return [];\n\n const keys: string[] = [];\n Object.entries(dict).forEach(([category, categoryDict]) => {\n if (typeof categoryDict === 'object' && categoryDict !== null) {\n Object.keys(categoryDict as object).forEach(key => {\n keys.push(`${category}.${key}`);\n });\n }\n });\n return keys;\n }\n\n private createNumberFormatter(locale: string) {\n return (number: number, options?: Intl.NumberFormatOptions) => {\n return new Intl.NumberFormat(locale, options).format(number);\n };\n }\n\n private createDateFormatter(locale: string) {\n return (date: Date | number, options?: Intl.DateTimeFormatOptions) => {\n return new Intl.DateTimeFormat(locale, options).format(date);\n };\n }\n\n private createCurrencyFormatter(locale: string) {\n return (amount: number, currency: string = 'USD', options?: Intl.NumberFormatOptions) => {\n return new Intl.NumberFormat(locale, {\n style: 'currency',\n currency,\n ...options,\n }).format(amount);\n };\n }\n\n private createRelativeTimeFormatter(locale: string) {\n return (\n value: number,\n unit: Intl.RelativeTimeFormatUnit,\n options?: Intl.RelativeTimeFormatOptions\n ) => {\n return new Intl.RelativeTimeFormat(locale, options).format(value, unit);\n };\n }\n\n private trackPerformance(startTime: number, success: boolean, output?: EnhancedI18nOutput): void {\n const duration = Date.now() - startTime;\n this.evaluationHistory.push({\n input: {} as EnhancedI18nInput, // Would store actual input in real implementation\n output,\n success,\n duration,\n timestamp: startTime,\n });\n }\n\n getPerformanceMetrics() {\n return {\n totalInitializations: this.evaluationHistory.length,\n successRate:\n this.evaluationHistory.filter(h => h.success).length /\n Math.max(this.evaluationHistory.length, 1),\n averageDuration:\n this.evaluationHistory.reduce((sum, h) => sum + h.duration, 0) /\n Math.max(this.evaluationHistory.length, 1),\n lastEvaluationTime: this.evaluationHistory[this.evaluationHistory.length - 1]?.timestamp || 0,\n evaluationHistory: this.evaluationHistory.slice(-10), // Last 10 evaluations\n };\n }\n}\n\n// ============================================================================\n// Convenience Factory Functions\n// ============================================================================\n\nexport function createI18nContext(): TypedI18nContextImplementation {\n return new TypedI18nContextImplementation();\n}\n\nexport async function createEnhancedI18n(\n locale: string,\n options?: Partial<EnhancedI18nInput>\n): Promise<EvaluationResult<EnhancedI18nOutput>> {\n const i18n = new TypedI18nContextImplementation();\n return i18n.initialize({\n locale,\n environment: options?.environment || 'universal',\n debug: options?.debug || false,\n ...options,\n });\n}\n\n// ============================================================================\n// Export for Registry Registration\n// ============================================================================\n\nexport const enhancedI18nImplementation = new TypedI18nContextImplementation();\n","/**\n * Generalized Grammar System for Multilingual Hyperscript\n *\n * This system abstracts grammatical patterns across language families,\n * enabling deep multilingual support without per-language hardcoding.\n *\n * Key Linguistic Concepts:\n * - Word Order: SVO, SOV, VSO (and variations)\n * - Adposition Type: Preposition (English) vs Postposition (Japanese/Korean)\n * - Morphology: Isolating (Chinese) vs Agglutinative (Turkish) vs Fusional (Arabic)\n * - Text Direction: LTR vs RTL\n */\n\n// =============================================================================\n// Core Types\n// =============================================================================\n\n/**\n * Semantic roles in hyperscript commands.\n * These are universal across all 13 supported languages - only the surface form changes.\n *\n * ## Core Thematic Roles (from linguistic theory)\n * | Role | Usage | Purpose | Example |\n * |-------------|-------|-----------------------------|---------------------------|\n * | action | 100% | Command verb | toggle, put, fetch |\n * | patient | 90% | What is acted upon | .active, #count |\n * | destination | 40% | Where something goes | into #output, to .class |\n * | source | 13% | Where something comes from | from #input, from URL |\n * | event | 106% | Trigger events | click, keydown, submit |\n * | condition | 8% | Boolean expressions | if x > 5, when visible |\n * | agent | 0% | Who performs action | Reserved for future use |\n * | goal | 1% | Target value/state | to 'red' (in transition) |\n *\n * ## Quantitative Roles (answer \"how much/long\")\n * | Role | Usage | Purpose | Example |\n * |----------|-------|----------------|----------------------|\n * | quantity | 7% | Numeric amount | by 5, 3 times |\n * | duration | 1% | Time span | for 5 seconds, 500ms |\n *\n * ## Adverbial/Modifier Roles (answer \"how/by what means\")\n * | Role | Usage | Purpose | Example |\n * |--------------|-------|---------------------------|-------------------|\n * | style | 2% | Animation/behavior | with fade |\n * | manner | 2% | Insertion position | before, after |\n * | method | 1% | HTTP method/technique | via POST, as GET |\n * | responseType | 1% | Response format | as json, as html |\n *\n * ## Control Flow Roles\n * | Role | Usage | Purpose | Example |\n * |----------|-------|--------------|-----------------------|\n * | loopType | 6% | Loop variant | forever, until, times |\n *\n * ## Design Notes\n * - Low-usage roles (agent, goal, method, responseType) are intentionally kept for:\n * - Linguistic completeness across all 13 languages\n * - Future extensibility (AI agents, server-side execution)\n * - Command-specific semantics (fetch, transition)\n * - Each role has distinct grammatical markers per language (see profiles/index.ts)\n * - Usage percentages based on pattern database analysis\n */\nexport type SemanticRole =\n // Core thematic roles\n | 'action' // The command/verb (increment, put, toggle)\n | 'agent' // Who/what performs action (reserved for future: AI agents, server-side)\n | 'patient' // What is acted upon (the counter, .active)\n | 'source' // Origin (from #input, from URL)\n | 'destination' // Target location (into #output, to .class)\n | 'goal' // Target value/state (to 'red', to 100)\n | 'event' // Trigger (click, input, keydown)\n | 'condition' // Boolean expression (if x > 5)\n // Quantitative roles\n | 'quantity' // Numeric amount (by 5, 3 times)\n | 'duration' // Time span (for 5 seconds, over 500ms)\n // Adverbial roles\n | 'responseType' // Response format (as json, as text, as html)\n | 'method' // HTTP method/technique (via POST, using GET)\n | 'style' // Visual/behavioral manner (with fade, smoothly)\n | 'manner' // Insertion position (before, after)\n // Control flow roles\n | 'loopType' // Loop variant: forever, times, for, while, until, until-event\n // Structural roles (for parser control)\n | 'continues'; // Continuation marker (then-chains)\n\n/**\n * Word order patterns\n * These represent the major typological categories\n */\nexport type WordOrder = 'SVO' | 'SOV' | 'VSO' | 'VOS' | 'OVS' | 'OSV' | 'free';\n\n/**\n * Where grammatical markers appear relative to their noun/verb\n */\nexport type AdpositionType = 'preposition' | 'postposition' | 'circumposition' | 'none';\n\n/**\n * Morphological typology - how words are constructed\n */\nexport type MorphologyType =\n | 'isolating' // Chinese - no inflection, word order matters\n | 'agglutinative' // Turkish, Japanese - morphemes stack predictably\n | 'fusional' // Arabic, Spanish - morphemes blend together\n | 'polysynthetic'; // Quechua - complex words encode full sentences\n\n/**\n * A grammatical marker (particle, case ending, preposition)\n */\nexport interface GrammaticalMarker {\n form: string; // The actual text (を, に, to, 的)\n role: SemanticRole; // What semantic role it marks\n position: AdpositionType; // Where it appears\n required: boolean; // Is it mandatory?\n alternatives?: string[]; // Alternative forms (e.g., 을/를 in Korean)\n}\n\n/**\n * Metadata for preserving line structure during translation.\n * Tracks indentation and blank lines so output maintains the same format.\n */\nexport interface LineMetadata {\n /** Trimmed line content (empty string for blank lines) */\n content: string;\n /** Leading whitespace (tabs/spaces) from original line */\n originalIndent: string;\n /** True if the line was empty or whitespace-only */\n isBlank: boolean;\n}\n\n// =============================================================================\n// Language Profile\n// =============================================================================\n\n/**\n * Complete grammatical profile for a language\n * This captures the essential typological features needed for transformation\n */\nexport interface LanguageProfile {\n code: string; // ISO 639-1 code\n name: string; // Native name\n\n // Typological features\n wordOrder: WordOrder;\n adpositionType: AdpositionType;\n morphology: MorphologyType;\n direction: 'ltr' | 'rtl';\n\n // Grammatical markers for each semantic role\n markers: GrammaticalMarker[];\n\n // Role ordering - which semantic roles come in what order\n // E.g., Japanese: ['patient', 'source', 'destination', 'action']\n // E.g., English: ['action', 'patient', 'source', 'destination']\n canonicalOrder: SemanticRole[];\n\n // Special rules\n rules?: GrammarRule[];\n}\n\n/**\n * Pattern for transforming hyperscript structures\n */\nexport interface GrammarRule {\n name: string;\n description: string;\n\n // Pattern matching (in canonical English form)\n match: PatternMatcher;\n\n // How to transform for this language\n transform: PatternTransform;\n\n // Priority (higher = checked first)\n priority: number;\n}\n\n/**\n * Matches a hyperscript pattern\n */\nexport interface PatternMatcher {\n // Command type(s) this matches\n commands?: string[];\n\n // Required semantic roles\n requiredRoles: SemanticRole[];\n\n // Optional roles\n optionalRoles?: SemanticRole[];\n\n // Custom predicate for complex matching\n predicate?: (parsed: ParsedStatement) => boolean;\n}\n\n/**\n * Defines how to transform a matched pattern\n */\nexport interface PatternTransform {\n // Reorder roles for target language\n roleOrder: SemanticRole[];\n\n // Insert markers between roles\n insertMarkers?: boolean;\n\n // Custom transformation function\n custom?: (parsed: ParsedStatement, profile: LanguageProfile) => string;\n}\n\n// =============================================================================\n// Parsed Structures\n// =============================================================================\n\n/**\n * A parsed hyperscript statement broken into semantic components\n */\nexport interface ParsedStatement {\n type: 'event-handler' | 'command' | 'conditional' | 'loop';\n roles: Map<SemanticRole, ParsedElement>;\n original: string;\n}\n\n/**\n * A single element with its semantic role\n */\nexport interface ParsedElement {\n role: SemanticRole;\n value: string; // Original English value\n translated?: string; // Translated value\n isSelector?: boolean; // CSS selector (don't translate)\n isLiteral?: boolean; // Literal value (don't translate)\n}\n\n// =============================================================================\n// Universal Pattern Templates\n// =============================================================================\n\n/**\n * Universal templates for common hyperscript patterns\n * These define the semantic structure independent of surface form\n */\nexport const UNIVERSAL_PATTERNS = {\n // on click increment #count\n eventIncrement: {\n name: 'event-increment',\n roles: ['event', 'action', 'patient'] as SemanticRole[],\n english: 'on {event} {action} {patient}',\n },\n\n // put X into Y\n putInto: {\n name: 'put-into',\n roles: ['action', 'patient', 'destination'] as SemanticRole[],\n english: '{action} {patient} into {destination}',\n },\n\n // add .class to element\n addTo: {\n name: 'add-to',\n roles: ['action', 'patient', 'destination'] as SemanticRole[],\n english: '{action} {patient} to {destination}',\n },\n\n // toggle .class on element\n toggleOn: {\n name: 'toggle-on',\n roles: ['action', 'patient', 'destination'] as SemanticRole[],\n english: '{action} {patient} on {destination}',\n },\n\n // wait 2 seconds\n waitDuration: {\n name: 'wait-duration',\n roles: ['action', 'quantity'] as SemanticRole[],\n english: '{action} {quantity}',\n },\n\n // if condition then ... end\n conditional: {\n name: 'conditional',\n roles: ['action', 'condition'] as SemanticRole[],\n english: '{action} {condition} then ... end',\n },\n\n // fetch URL as type\n fetchAs: {\n name: 'fetch-as',\n roles: ['action', 'source', 'method'] as SemanticRole[],\n english: '{action} {source} as {method}',\n },\n\n // show element with animation\n showWith: {\n name: 'show-with',\n roles: ['action', 'patient', 'style'] as SemanticRole[],\n english: '{action} {patient} with {style}',\n },\n\n // transition property over duration\n transitionOver: {\n name: 'transition-over',\n roles: ['action', 'patient', 'duration'] as SemanticRole[],\n english: '{action} {patient} over {duration}',\n },\n} as const;\n\n// =============================================================================\n// Language Family Defaults\n// =============================================================================\n\n/**\n * Default profiles for major language families\n * Individual languages inherit and override these\n */\nexport const LANGUAGE_FAMILY_DEFAULTS: Record<string, Partial<LanguageProfile>> = {\n // Germanic (English, German, Dutch)\n germanic: {\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n canonicalOrder: [\n 'action',\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n ],\n },\n\n // Romance (Spanish, French, Italian, Portuguese)\n romance: {\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n canonicalOrder: [\n 'action',\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n ],\n },\n\n // Japonic (Japanese)\n japonic: {\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n canonicalOrder: [\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n 'action',\n ],\n },\n\n // Koreanic (Korean)\n koreanic: {\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n canonicalOrder: [\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n 'action',\n ],\n },\n\n // Turkic (Turkish, Azerbaijani)\n turkic: {\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n canonicalOrder: [\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n 'action',\n ],\n },\n\n // Sinitic (Chinese, Cantonese)\n sinitic: {\n wordOrder: 'SVO', // Topic-prominent, flexible\n adpositionType: 'preposition',\n morphology: 'isolating',\n direction: 'ltr',\n canonicalOrder: [\n 'action',\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n ],\n },\n\n // Semitic (Arabic, Hebrew)\n semitic: {\n wordOrder: 'VSO',\n adpositionType: 'preposition',\n morphology: 'fusional', // Root-pattern system\n direction: 'rtl',\n canonicalOrder: [\n 'action',\n 'agent',\n 'patient',\n 'destination',\n 'source',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n ],\n },\n\n // Austronesian (Indonesian, Tagalog)\n austronesian: {\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n canonicalOrder: [\n 'action',\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n ],\n },\n\n // Quechuan (Quechua)\n quechuan: {\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'agglutinative', // Actually polysynthetic but simplified\n direction: 'ltr',\n canonicalOrder: [\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n 'action',\n ],\n },\n\n // Bantu (Swahili)\n bantu: {\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n canonicalOrder: [\n 'action',\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n ],\n },\n};\n\n// =============================================================================\n// Transformation Utilities\n// =============================================================================\n\n/**\n * Reorder semantic roles according to target language.\n * Includes a safety net to append any roles present in input\n * but missing from the target order, preventing data loss.\n */\nexport function reorderRoles(\n roles: Map<SemanticRole, ParsedElement>,\n targetOrder: SemanticRole[]\n): ParsedElement[] {\n const result: ParsedElement[] = [];\n const usedRoles = new Set<SemanticRole>();\n\n // 1. Add roles that are explicitly in the canonical order\n for (const role of targetOrder) {\n const element = roles.get(role);\n if (element) {\n result.push(element);\n usedRoles.add(role);\n }\n }\n\n // 2. Safety Net: Append any roles present in input but missing from target order\n // This prevents data loss (e.g., if 'manner' or 'instrument' isn't in the profile)\n for (const [role, element] of roles) {\n if (!usedRoles.has(role)) {\n result.push(element);\n }\n }\n\n return result;\n}\n\n/**\n * Insert grammatical markers between elements\n */\nexport function insertMarkers(\n elements: ParsedElement[],\n markers: GrammaticalMarker[],\n adpositionType: AdpositionType\n): string[] {\n const result: string[] = [];\n\n for (const element of elements) {\n const marker = markers.find(m => m.role === element.role);\n\n if (marker) {\n if (adpositionType === 'preposition') {\n // Marker before element: \"to element\"\n if (marker.form) result.push(marker.form);\n result.push(element.translated || element.value);\n } else if (adpositionType === 'postposition') {\n // Marker after element: \"element を\"\n result.push(element.translated || element.value);\n if (marker.form) result.push(marker.form);\n } else {\n result.push(element.translated || element.value);\n }\n } else {\n result.push(element.translated || element.value);\n }\n }\n\n return result;\n}\n\n/**\n * Intelligently joins tokens, handling agglutinative suffixes and prefixes.\n *\n * Rules:\n * 1. If a token ends with '-' (prefix marker), no space after it\n * 2. If a token starts with '-' (suffix marker), no space before it\n * 3. Removes the hyphen indicators from the final output\n *\n * Examples:\n * - ['#count', '-ta'] → '#countta' (Quechua accusative suffix)\n * - ['بـ-', 'الماوس'] → 'بـالماوس' (Arabic prefix attachment)\n * - ['value', 'を'] → 'value を' (Japanese particle, normal spacing)\n */\nexport function joinTokens(tokens: string[]): string {\n if (tokens.length === 0) return '';\n\n let result = '';\n\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n const nextToken = tokens[i + 1];\n\n // Check if current token is a prefix (ends with -)\n const isPrefix = token.endsWith('-');\n // Check if current token is a suffix (starts with -)\n const isSuffix = token.startsWith('-');\n\n // Get the display form (strip hyphen markers)\n let displayToken = token;\n if (isPrefix) displayToken = token.slice(0, -1);\n if (isSuffix) displayToken = token.substring(1);\n\n result += displayToken;\n\n // Determine if we need a space before the next token\n if (nextToken) {\n const nextIsSuffix = nextToken.startsWith('-');\n\n // Don't add space if:\n // - Current token is a prefix (ends with -)\n // - Next token is a suffix (starts with -)\n if (!isPrefix && !nextIsSuffix) {\n result += ' ';\n }\n }\n }\n\n return result;\n}\n\n/**\n * Transform a parsed statement to target language\n */\nexport function transformStatement(\n parsed: ParsedStatement,\n _sourceProfile: LanguageProfile,\n targetProfile: LanguageProfile\n): string {\n // 1. Reorder roles for target language\n const reordered = reorderRoles(parsed.roles, targetProfile.canonicalOrder);\n\n // 2. Insert grammatical markers\n const withMarkers = insertMarkers(reordered, targetProfile.markers, targetProfile.adpositionType);\n\n // 3. Join with intelligent spacing for agglutinative languages\n // (handles suffixes like -ta, prefixes like بـ-, etc.)\n return joinTokens(withMarkers);\n}\n","/**\n * Language Profiles Index\n *\n * Concrete implementations of LanguageProfile for supported languages.\n * Each profile inherits from a language family default and adds\n * language-specific markers and rules.\n */\n\nimport type { LanguageProfile } from '../types';\n\n// =============================================================================\n// English (Reference Language)\n// =============================================================================\n\nexport const englishProfile: LanguageProfile = {\n code: 'en',\n name: 'English',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n canonicalOrder: [\n 'event',\n 'action',\n 'patient',\n 'source',\n 'destination',\n 'quantity',\n 'duration',\n 'method',\n 'style',\n ],\n\n markers: [\n { form: 'on', role: 'event', position: 'preposition', required: true },\n { form: 'to', role: 'destination', position: 'preposition', required: false },\n { form: 'into', role: 'destination', position: 'preposition', required: false },\n { form: 'from', role: 'source', position: 'preposition', required: false },\n { form: 'with', role: 'style', position: 'preposition', required: false },\n { form: 'by', role: 'quantity', position: 'preposition', required: false },\n { form: 'as', role: 'method', position: 'preposition', required: false },\n { form: 'over', role: 'duration', position: 'preposition', required: false },\n { form: 'for', role: 'duration', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Japanese (SOV, Postpositions)\n// =============================================================================\n\nexport const japaneseProfile: LanguageProfile = {\n code: 'ja',\n name: '日本語',\n\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n\n // Japanese: Object comes before verb, markers follow nouns\n // \"on click increment #count\" → \"#count を クリック で 増加\"\n canonicalOrder: ['patient', 'event', 'action'],\n\n markers: [\n // Particles (postpositions)\n { form: 'を', role: 'patient', position: 'postposition', required: true },\n { form: 'に', role: 'destination', position: 'postposition', required: true },\n { form: 'から', role: 'source', position: 'postposition', required: true },\n { form: 'で', role: 'event', position: 'postposition', required: true },\n { form: 'で', role: 'style', position: 'postposition', required: false },\n { form: 'と', role: 'style', position: 'postposition', required: false },\n { form: 'へ', role: 'destination', position: 'postposition', required: false },\n ],\n\n rules: [\n {\n name: 'event-handler',\n description: 'Transform event handlers to Japanese SOV order',\n priority: 100,\n match: {\n commands: ['on'],\n requiredRoles: ['event', 'action'],\n optionalRoles: ['patient'],\n },\n transform: {\n // #count を クリック で 増加\n roleOrder: ['patient', 'event', 'action'],\n insertMarkers: true,\n },\n },\n {\n name: 'put-into',\n description: 'Transform put X into Y to Japanese order',\n priority: 90,\n match: {\n commands: ['put', '置く'],\n requiredRoles: ['action', 'patient', 'destination'],\n },\n transform: {\n // X を Y に 置く\n roleOrder: ['patient', 'destination', 'action'],\n insertMarkers: true,\n },\n },\n ],\n};\n\n// =============================================================================\n// Korean (SOV, Postpositions - similar to Japanese)\n// =============================================================================\n\nexport const koreanProfile: LanguageProfile = {\n code: 'ko',\n name: '한국어',\n\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n\n canonicalOrder: ['patient', 'event', 'action'],\n\n markers: [\n // Korean particles (with vowel harmony variants)\n { form: '를', role: 'patient', position: 'postposition', required: true, alternatives: ['을'] },\n { form: '에', role: 'destination', position: 'postposition', required: true },\n { form: '에서', role: 'source', position: 'postposition', required: true },\n {\n form: '로',\n role: 'style',\n position: 'postposition',\n required: false,\n alternatives: ['으로'],\n },\n { form: '와', role: 'style', position: 'postposition', required: false, alternatives: ['과'] },\n {\n form: '로',\n role: 'method',\n position: 'postposition',\n required: false,\n alternatives: ['으로'],\n }, // \"as\" - same as instrument\n ],\n\n rules: [\n {\n name: 'event-handler',\n description: 'Transform event handlers to Korean SOV order',\n priority: 100,\n match: {\n commands: ['on'],\n requiredRoles: ['event', 'action'],\n },\n transform: {\n roleOrder: ['patient', 'event', 'action'],\n insertMarkers: true,\n },\n },\n ],\n};\n\n// =============================================================================\n// Chinese (SVO, Topic-Prominent)\n// =============================================================================\n\nexport const chineseProfile: LanguageProfile = {\n code: 'zh',\n name: '中文',\n\n wordOrder: 'SVO', // But topic-prominent allows flexibility\n adpositionType: 'preposition',\n morphology: 'isolating',\n direction: 'ltr',\n\n // Chinese typically uses topic-comment structure\n // Can front the object for emphasis: \"#count 在 点击时 增加\"\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: '当', role: 'event', position: 'preposition', required: true },\n { form: '时', role: 'event', position: 'postposition', required: true }, // Circumfix with 当\n { form: '把', role: 'patient', position: 'preposition', required: false }, // BA construction\n { form: '到', role: 'destination', position: 'preposition', required: false },\n { form: '从', role: 'source', position: 'preposition', required: false },\n { form: '用', role: 'style', position: 'preposition', required: false },\n { form: '的', role: 'method', position: 'postposition', required: false },\n ],\n\n rules: [\n {\n name: 'event-handler-standard',\n description: 'Standard event handler: 当 X 时 Y',\n priority: 100,\n match: {\n // Don't match commands - match by statement type having event role\n requiredRoles: ['event', 'action'],\n },\n transform: {\n // 当 点击 时 增加 #count\n roleOrder: ['event', 'action', 'patient'],\n insertMarkers: true,\n custom: (parsed, _profile) => {\n // Handle 当...时 circumfix\n const event = parsed.roles.get('event');\n const action = parsed.roles.get('action');\n const patient = parsed.roles.get('patient');\n\n const parts = ['当', event?.translated || event?.value, '时'];\n parts.push(action?.translated || action?.value || '');\n if (patient) {\n parts.push(patient.translated || patient.value);\n }\n\n return parts.filter(Boolean).join(' ');\n },\n },\n },\n {\n name: 'ba-construction',\n description: 'BA construction for object-fronting: 把 X Y',\n priority: 80,\n match: {\n commands: ['put', 'set', 'move'],\n requiredRoles: ['action', 'patient', 'destination'],\n },\n transform: {\n // 把 X 放 到 Y\n roleOrder: ['patient', 'action', 'destination'],\n insertMarkers: true,\n },\n },\n ],\n};\n\n// =============================================================================\n// Arabic (VSO, RTL)\n// =============================================================================\n\nexport const arabicProfile: LanguageProfile = {\n code: 'ar',\n name: 'العربية',\n\n wordOrder: 'VSO',\n adpositionType: 'preposition',\n morphology: 'fusional', // Root-pattern morphology\n direction: 'rtl',\n\n // Arabic VSO: Verb first, then subject, then object\n canonicalOrder: ['action', 'agent', 'patient', 'destination', 'source'],\n\n markers: [\n { form: 'عند', role: 'event', position: 'preposition', required: true },\n { form: 'إلى', role: 'destination', position: 'preposition', required: false },\n { form: 'في', role: 'destination', position: 'preposition', required: false },\n { form: 'من', role: 'source', position: 'preposition', required: false },\n // بـ- notation: trailing hyphen indicates prefix that attaches without space\n { form: 'بـ-', role: 'style', position: 'preposition', required: false },\n { form: 'مع', role: 'style', position: 'preposition', required: false },\n // كـ- notation: \"as/like\" prefix for manner\n { form: 'كـ-', role: 'method', position: 'preposition', required: false },\n ],\n\n rules: [\n {\n name: 'event-handler-vso',\n description: 'VSO event handler: VERB TARGET عند EVENT',\n priority: 100,\n match: {\n commands: ['on'],\n requiredRoles: ['event', 'action'],\n },\n transform: {\n // زِد #count عند النقر (increment #count on click)\n roleOrder: ['action', 'patient', 'event'],\n insertMarkers: true,\n },\n },\n ],\n};\n\n// =============================================================================\n// Turkish (SOV, Agglutinative)\n// =============================================================================\n\nexport const turkishProfile: LanguageProfile = {\n code: 'tr',\n name: 'Türkçe',\n\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n\n canonicalOrder: ['patient', 'event', 'action'],\n\n markers: [\n // Turkish case suffixes - using spaced form for tokenization\n // Note: Real Turkish attaches these as suffixes, but we use spaces\n // so the semantic tokenizer can properly parse them\n {\n form: 'i',\n role: 'patient',\n position: 'postposition',\n required: true,\n alternatives: ['ı', 'u', 'ü'],\n },\n {\n form: 'e',\n role: 'destination',\n position: 'postposition',\n required: true,\n alternatives: ['a'],\n },\n {\n form: 'den',\n role: 'source',\n position: 'postposition',\n required: true,\n alternatives: ['dan'],\n },\n { form: 'de', role: 'event', position: 'postposition', required: true, alternatives: ['da'] },\n { form: 'ile', role: 'style', position: 'postposition', required: false },\n { form: 'olarak', role: 'method', position: 'postposition', required: false },\n ],\n\n rules: [\n {\n name: 'event-handler-sov',\n description: 'SOV event handler',\n priority: 100,\n match: {\n commands: ['on'],\n requiredRoles: ['event', 'action'],\n },\n transform: {\n roleOrder: ['patient', 'event', 'action'],\n insertMarkers: true,\n },\n },\n ],\n};\n\n// =============================================================================\n// Spanish (SVO, Romance)\n// =============================================================================\n\nexport const spanishProfile: LanguageProfile = {\n code: 'es',\n name: 'Español',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n // Event: \"En hacer clic\" or \"Al hacer clic\"\n { form: 'en', role: 'event', position: 'preposition', required: true },\n // Destination: Prioritize 'a' over 'en' to avoid collision with event marker\n { form: 'a', role: 'destination', position: 'preposition', required: false },\n { form: 'hacia', role: 'destination', position: 'preposition', required: false }, // \"Towards\"\n { form: 'de', role: 'source', position: 'preposition', required: false },\n { form: 'con', role: 'style', position: 'preposition', required: false },\n { form: 'por', role: 'quantity', position: 'preposition', required: false },\n { form: 'como', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// German (SVO, Germanic)\n// =============================================================================\n\nexport const germanProfile: LanguageProfile = {\n code: 'de',\n name: 'Deutsch',\n\n wordOrder: 'SVO', // V2 in main clauses, but SVO for our purposes\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'bei', role: 'event', position: 'preposition', required: true },\n { form: 'zu', role: 'destination', position: 'preposition', required: false },\n { form: 'in', role: 'destination', position: 'preposition', required: false },\n { form: 'von', role: 'source', position: 'preposition', required: false },\n { form: 'aus', role: 'source', position: 'preposition', required: false },\n { form: 'mit', role: 'style', position: 'preposition', required: false },\n { form: 'um', role: 'quantity', position: 'preposition', required: false },\n { form: 'als', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// French (SVO, Romance)\n// =============================================================================\n\nexport const frenchProfile: LanguageProfile = {\n code: 'fr',\n name: 'Français',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'sur', role: 'event', position: 'preposition', required: true },\n { form: 'à', role: 'destination', position: 'preposition', required: false },\n { form: 'dans', role: 'destination', position: 'preposition', required: false },\n { form: 'de', role: 'source', position: 'preposition', required: false },\n { form: 'avec', role: 'style', position: 'preposition', required: false },\n { form: 'par', role: 'quantity', position: 'preposition', required: false },\n { form: 'comme', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Portuguese (SVO, Romance)\n// =============================================================================\n\nexport const portugueseProfile: LanguageProfile = {\n code: 'pt',\n name: 'Português',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'em', role: 'event', position: 'preposition', required: true },\n { form: 'para', role: 'destination', position: 'preposition', required: false },\n { form: 'em', role: 'destination', position: 'preposition', required: false },\n { form: 'de', role: 'source', position: 'preposition', required: false },\n { form: 'com', role: 'style', position: 'preposition', required: false },\n { form: 'por', role: 'quantity', position: 'preposition', required: false },\n { form: 'como', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Indonesian (SVO, Austronesian)\n// =============================================================================\n\nexport const indonesianProfile: LanguageProfile = {\n code: 'id',\n name: 'Bahasa Indonesia',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'pada', role: 'event', position: 'preposition', required: true },\n { form: 'ke', role: 'destination', position: 'preposition', required: false },\n { form: 'dari', role: 'source', position: 'preposition', required: false },\n { form: 'dengan', role: 'style', position: 'preposition', required: false },\n { form: 'sebagai', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Quechua (SOV, Quechuan)\n// =============================================================================\n\nexport const quechuaProfile: LanguageProfile = {\n code: 'qu',\n name: 'Runasimi',\n\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'agglutinative', // Actually polysynthetic\n direction: 'ltr',\n\n canonicalOrder: ['patient', 'source', 'destination', 'event', 'action'],\n\n markers: [\n // Quechua case suffixes - using spaced form for tokenization\n // Note: Real Quechua attaches these as suffixes, but we use spaces\n // so the semantic tokenizer can properly parse them\n { form: 'ta', role: 'patient', position: 'postposition', required: true },\n { form: 'man', role: 'destination', position: 'postposition', required: true },\n { form: 'manta', role: 'source', position: 'postposition', required: true },\n { form: 'pi', role: 'event', position: 'postposition', required: true },\n { form: 'wan', role: 'style', position: 'postposition', required: false },\n { form: 'hina', role: 'method', position: 'postposition', required: false }, // \"as/like\"\n ],\n};\n\n// =============================================================================\n// Swahili (SVO, Bantu)\n// =============================================================================\n\nexport const swahiliProfile: LanguageProfile = {\n code: 'sw',\n name: 'Kiswahili',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'kwenye', role: 'event', position: 'preposition', required: true },\n { form: 'kwa', role: 'destination', position: 'preposition', required: false },\n { form: 'kutoka', role: 'source', position: 'preposition', required: false },\n { form: 'na', role: 'style', position: 'preposition', required: false },\n { form: 'kama', role: 'method', position: 'preposition', required: false }, // \"as/like\"\n ],\n};\n\n// =============================================================================\n// Bengali (SOV, Postpositions - similar to Japanese/Korean)\n// =============================================================================\n\nexport const bengaliProfile: LanguageProfile = {\n code: 'bn',\n name: 'বাংলা',\n\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n\n // Bengali: Object comes before verb, postpositions follow nouns\n // \"on click increment #count\" → \"#count কে ক্লিক এ বৃদ্ধি\"\n canonicalOrder: ['patient', 'event', 'action'],\n\n markers: [\n // Postpositions\n { form: 'কে', role: 'patient', position: 'postposition', required: true },\n { form: 'তে', role: 'destination', position: 'postposition', required: true },\n { form: 'এ', role: 'event', position: 'postposition', required: true },\n { form: 'থেকে', role: 'source', position: 'postposition', required: true },\n { form: 'দিয়ে', role: 'style', position: 'postposition', required: false },\n { form: 'জন্য', role: 'duration', position: 'postposition', required: false },\n ],\n\n rules: [\n {\n name: 'event-handler',\n description: 'Transform event handlers to Bengali SOV order',\n priority: 100,\n match: {\n commands: ['on'],\n requiredRoles: ['event', 'action'],\n optionalRoles: ['patient'],\n },\n transform: {\n // #count কে ক্লিক এ বৃদ্ধি\n roleOrder: ['patient', 'event', 'action'],\n insertMarkers: true,\n },\n },\n ],\n};\n\n// =============================================================================\n// Italian (SVO, Romance)\n// =============================================================================\n\nexport const italianProfile: LanguageProfile = {\n code: 'it',\n name: 'Italiano',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'su', role: 'event', position: 'preposition', required: true },\n { form: 'in', role: 'destination', position: 'preposition', required: false },\n { form: 'a', role: 'destination', position: 'preposition', required: false },\n { form: 'da', role: 'source', position: 'preposition', required: false },\n { form: 'di', role: 'source', position: 'preposition', required: false },\n { form: 'con', role: 'style', position: 'preposition', required: false },\n { form: 'come', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Russian (SVO, Slavic)\n// =============================================================================\n\nexport const russianProfile: LanguageProfile = {\n code: 'ru',\n name: 'Русский',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'при', role: 'event', position: 'preposition', required: true },\n { form: 'в', role: 'destination', position: 'preposition', required: false },\n { form: 'на', role: 'destination', position: 'preposition', required: false },\n { form: 'к', role: 'destination', position: 'preposition', required: false },\n { form: 'из', role: 'source', position: 'preposition', required: false },\n { form: 'от', role: 'source', position: 'preposition', required: false },\n { form: 'с', role: 'source', position: 'preposition', required: false },\n { form: 'с', role: 'style', position: 'preposition', required: false },\n { form: 'со', role: 'style', position: 'preposition', required: false },\n { form: 'как', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Ukrainian (SVO, Slavic)\n// =============================================================================\n\nexport const ukrainianProfile: LanguageProfile = {\n code: 'uk',\n name: 'Українська',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'при', role: 'event', position: 'preposition', required: true },\n { form: 'в', role: 'destination', position: 'preposition', required: false },\n { form: 'на', role: 'destination', position: 'preposition', required: false },\n { form: 'до', role: 'destination', position: 'preposition', required: false },\n { form: 'з', role: 'source', position: 'preposition', required: false },\n { form: 'від', role: 'source', position: 'preposition', required: false },\n { form: 'із', role: 'source', position: 'preposition', required: false },\n { form: 'з', role: 'style', position: 'preposition', required: false },\n { form: 'із', role: 'style', position: 'preposition', required: false },\n { form: 'як', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Vietnamese (SVO, Isolating)\n// =============================================================================\n\nexport const vietnameseProfile: LanguageProfile = {\n code: 'vi',\n name: 'Tiếng Việt',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'isolating',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'khi', role: 'event', position: 'preposition', required: true },\n { form: 'vào', role: 'destination', position: 'preposition', required: false },\n { form: 'cho', role: 'destination', position: 'preposition', required: false },\n { form: 'đến', role: 'destination', position: 'preposition', required: false },\n { form: 'từ', role: 'source', position: 'preposition', required: false },\n { form: 'khỏi', role: 'source', position: 'preposition', required: false },\n { form: 'với', role: 'style', position: 'preposition', required: false },\n { form: 'như', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Hindi (SOV, Postpositions)\n// =============================================================================\n\nexport const hindiProfile: LanguageProfile = {\n code: 'hi',\n name: 'हिन्दी',\n\n wordOrder: 'SOV',\n adpositionType: 'postposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n // Hindi: Object comes before verb, postpositions follow nouns\n // \"on click increment #count\" → \"#count को क्लिक पर बढ़ाएं\"\n canonicalOrder: ['patient', 'event', 'action'],\n\n markers: [\n { form: 'को', role: 'patient', position: 'postposition', required: true },\n { form: 'में', role: 'destination', position: 'postposition', required: true },\n { form: 'पर', role: 'destination', position: 'postposition', required: false },\n { form: 'पर', role: 'event', position: 'postposition', required: true },\n { form: 'से', role: 'source', position: 'postposition', required: true },\n { form: 'से', role: 'style', position: 'postposition', required: false },\n { form: 'साथ', role: 'style', position: 'postposition', required: false },\n { form: 'के रूप में', role: 'method', position: 'postposition', required: false },\n ],\n\n rules: [\n {\n name: 'event-handler',\n description: 'Transform event handlers to Hindi SOV order',\n priority: 100,\n match: {\n commands: ['on'],\n requiredRoles: ['event', 'action'],\n optionalRoles: ['patient'],\n },\n transform: {\n // #count को क्लिक पर बढ़ाएं\n roleOrder: ['patient', 'event', 'action'],\n insertMarkers: true,\n },\n },\n ],\n};\n\n// =============================================================================\n// Tagalog (VSO, Prepositions)\n// =============================================================================\n\nexport const tagalogProfile: LanguageProfile = {\n code: 'tl',\n name: 'Tagalog',\n\n wordOrder: 'VSO',\n adpositionType: 'preposition',\n morphology: 'agglutinative',\n direction: 'ltr',\n\n // Tagalog VSO: Verb first, then subject, then object\n canonicalOrder: ['action', 'agent', 'patient', 'destination', 'source'],\n\n markers: [\n { form: 'kapag', role: 'event', position: 'preposition', required: true },\n { form: 'sa', role: 'destination', position: 'preposition', required: false },\n { form: 'mula sa', role: 'source', position: 'preposition', required: false },\n { form: 'nang', role: 'style', position: 'preposition', required: false },\n { form: 'bilang', role: 'method', position: 'preposition', required: false },\n ],\n\n rules: [\n {\n name: 'event-handler-vso',\n description: 'VSO event handler: VERB TARGET kapag EVENT',\n priority: 100,\n match: {\n commands: ['on'],\n requiredRoles: ['event', 'action'],\n },\n transform: {\n // palitan #count kapag click (toggle #count on click)\n roleOrder: ['action', 'patient', 'event'],\n insertMarkers: true,\n },\n },\n ],\n};\n\n// =============================================================================\n// Thai (SVO, Isolating, No Spaces)\n// =============================================================================\n\nexport const thaiProfile: LanguageProfile = {\n code: 'th',\n name: 'ไทย',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'isolating',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'เมื่อ', role: 'event', position: 'preposition', required: true },\n { form: 'ใน', role: 'destination', position: 'preposition', required: false },\n { form: 'ไปยัง', role: 'destination', position: 'preposition', required: false },\n { form: 'จาก', role: 'source', position: 'preposition', required: false },\n { form: 'ด้วย', role: 'style', position: 'preposition', required: false },\n { form: 'เป็น', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Polish (SVO, Fusional, Imperative)\n// =============================================================================\n\nexport const polishProfile: LanguageProfile = {\n code: 'pl',\n name: 'Polski',\n\n wordOrder: 'SVO',\n adpositionType: 'preposition',\n morphology: 'fusional',\n direction: 'ltr',\n\n canonicalOrder: ['event', 'action', 'patient', 'destination'],\n\n markers: [\n { form: 'gdy', role: 'event', position: 'preposition', required: true },\n { form: 'przy', role: 'event', position: 'preposition', required: false },\n { form: 'do', role: 'destination', position: 'preposition', required: false },\n { form: 'w', role: 'destination', position: 'preposition', required: false },\n { form: 'na', role: 'destination', position: 'preposition', required: false },\n { form: 'z', role: 'source', position: 'preposition', required: false },\n { form: 'od', role: 'source', position: 'preposition', required: false },\n { form: 'ze', role: 'source', position: 'preposition', required: false },\n { form: 'z', role: 'style', position: 'preposition', required: false },\n { form: 'ze', role: 'style', position: 'preposition', required: false },\n { form: 'jako', role: 'method', position: 'preposition', required: false },\n ],\n};\n\n// =============================================================================\n// Profile Registry\n// =============================================================================\n\nexport const profiles: Record<string, LanguageProfile> = {\n en: englishProfile,\n ja: japaneseProfile,\n ko: koreanProfile,\n zh: chineseProfile,\n ar: arabicProfile,\n tr: turkishProfile,\n es: spanishProfile,\n de: germanProfile,\n fr: frenchProfile,\n pt: portugueseProfile,\n id: indonesianProfile,\n qu: quechuaProfile,\n sw: swahiliProfile,\n bn: bengaliProfile,\n // New profiles\n it: italianProfile,\n ru: russianProfile,\n uk: ukrainianProfile,\n vi: vietnameseProfile,\n hi: hindiProfile,\n tl: tagalogProfile,\n th: thaiProfile,\n pl: polishProfile,\n};\n\nexport function getProfile(locale: string): LanguageProfile | undefined {\n return profiles[locale];\n}\n\nexport function getSupportedLocales(): string[] {\n return Object.keys(profiles);\n}\n","/**\n * Direct Language-Pair Mappings\n *\n * Enables translation between language pairs without English pivot.\n * This reduces error compounding and provides more natural translations\n * for closely related languages or those with shared vocabulary.\n *\n * Currently supported pairs:\n * - Japanese ↔ Chinese (shared Kanji concepts)\n * - Spanish ↔ Portuguese (Romance language mutual intelligibility)\n * - Korean ↔ Japanese (SOV grammar similarity)\n */\n\nimport type { Dictionary } from '../types';\nimport { ja } from '../dictionaries/ja';\nimport { zh } from '../dictionaries/zh';\nimport { ko } from '../dictionaries/ko';\n// Note: es and pt use hand-crafted mappings for better quality\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport interface DirectMapping {\n /** Source language code */\n source: string;\n /** Target language code */\n target: string;\n /** Word mappings: source word -> target word */\n words: Record<string, string>;\n /** Category mappings for structured translation */\n categories?: Record<string, Record<string, string>>;\n}\n\n// =============================================================================\n// Utility Functions\n// =============================================================================\n\n/**\n * Create reverse mapping from an existing mapping\n */\nfunction reverseMapping(mapping: DirectMapping): DirectMapping {\n const reversedWords: Record<string, string> = {};\n for (const [source, target] of Object.entries(mapping.words)) {\n reversedWords[target] = source;\n }\n\n const reversedCategories: Record<string, Record<string, string>> = {};\n if (mapping.categories) {\n for (const [category, words] of Object.entries(mapping.categories)) {\n reversedCategories[category] = {};\n for (const [source, target] of Object.entries(words)) {\n reversedCategories[category][target] = source;\n }\n }\n }\n\n const result: DirectMapping = {\n source: mapping.target,\n target: mapping.source,\n words: reversedWords,\n };\n\n if (Object.keys(reversedCategories).length > 0) {\n result.categories = reversedCategories;\n }\n\n return result;\n}\n\n/**\n * Build direct mapping from two dictionaries via English keys\n */\nfunction buildMappingFromDictionaries(\n sourceDict: Dictionary,\n targetDict: Dictionary,\n sourceCode: string,\n targetCode: string\n): DirectMapping {\n const words: Record<string, string> = {};\n const categories: Record<string, Record<string, string>> = {};\n\n // Map each category\n for (const category of [\n 'commands',\n 'modifiers',\n 'events',\n 'logical',\n 'temporal',\n 'values',\n 'attributes',\n ] as const) {\n const sourceCategory = sourceDict[category] as Record<string, string> | undefined;\n const targetCategory = targetDict[category] as Record<string, string> | undefined;\n\n if (sourceCategory && targetCategory) {\n categories[category] = {};\n\n for (const [englishKey, sourceWord] of Object.entries(sourceCategory)) {\n const targetWord = targetCategory[englishKey];\n if (targetWord && sourceWord !== targetWord) {\n words[sourceWord] = targetWord;\n categories[category][sourceWord] = targetWord;\n }\n }\n }\n }\n\n return {\n source: sourceCode,\n target: targetCode,\n words,\n categories,\n };\n}\n\n// =============================================================================\n// Japanese ↔ Chinese Direct Mapping\n// =============================================================================\n\n/**\n * Japanese to Chinese mapping\n *\n * These languages share many concepts through Kanji/Hanzi,\n * making direct translation more accurate than pivot translation.\n */\nexport const jaZhMapping: DirectMapping = buildMappingFromDictionaries(ja, zh, 'ja', 'zh');\n\n/**\n * Chinese to Japanese mapping (reverse of jaZh)\n */\nexport const zhJaMapping: DirectMapping = reverseMapping(jaZhMapping);\n\n// =============================================================================\n// Korean ↔ Japanese Direct Mapping\n// =============================================================================\n\n/**\n * Korean to Japanese mapping\n *\n * Both are SOV languages with postposition particles,\n * sharing grammatical structure that enables more natural translation.\n */\nexport const koJaMapping: DirectMapping = buildMappingFromDictionaries(ko, ja, 'ko', 'ja');\n\n/**\n * Japanese to Korean mapping (reverse of koJa)\n */\nexport const jaKoMapping: DirectMapping = reverseMapping(koJaMapping);\n\n// =============================================================================\n// Spanish ↔ Portuguese Direct Mapping\n// =============================================================================\n\n/**\n * Spanish to Portuguese mapping\n *\n * These Romance languages have high mutual intelligibility,\n * with many cognates that translate directly.\n */\nexport const esPtMapping: DirectMapping = {\n source: 'es',\n target: 'pt',\n words: {\n // Commands - many are cognates\n en: 'em', // on (event)\n decir: 'dizer', // tell\n disparar: 'disparar', // trigger\n enviar: 'enviar', // send\n tomar: 'pegar', // take\n poner: 'colocar', // put\n establecer: 'definir', // set\n obtener: 'obter', // get\n agregar: 'adicionar', // add\n quitar: 'remover', // remove\n alternar: 'alternar', // toggle\n ocultar: 'esconder', // hide\n mostrar: 'mostrar', // show\n si: 'se', // if\n menos: 'a menos', // unless\n repetir: 'repetir', // repeat\n para: 'para', // for\n mientras: 'enquanto', // while\n hasta: 'até', // until\n continuar: 'continuar', // continue\n romper: 'parar', // break\n detener: 'parar', // halt\n esperar: 'esperar', // wait\n buscar: 'buscar', // fetch\n llamar: 'chamar', // call\n retornar: 'retornar', // return\n hacer: 'fazer', // make\n registrar: 'registrar', // log\n lanzar: 'lançar', // throw\n atrapar: 'capturar', // catch\n medir: 'medir', // measure\n transición: 'transição', // transition\n incrementar: 'incrementar', // increment\n decrementar: 'decrementar', // decrement\n vincular: 'vincular', // bind\n predeterminar: 'padrão', // default\n persistir: 'persistir', // persist\n ir: 'ir', // go\n copiar: 'copiar', // copy\n escoger: 'escolher', // pick\n intercambiar: 'trocar', // swap\n transformar: 'transformar', // morph\n añadir: 'anexar', // append\n salir: 'sair', // exit\n\n // Modifiers\n a: 'para', // to\n de: 'de', // from\n dentro: 'em', // into\n con: 'com', // with\n como: 'como', // as\n por: 'por', // by\n\n // Events\n clic: 'clique', // click\n cambio: 'mudança', // change\n entrada: 'entrada', // input\n envío: 'envio', // submit\n carga: 'carregar', // load\n enfoque: 'foco', // focus\n desenfoque: 'desfoque', // blur\n\n // Logical\n verdadero: 'verdadeiro', // true\n falso: 'falso', // false\n y: 'e', // and\n o: 'ou', // or\n no: 'não', // not\n es: 'é', // is\n\n // Temporal\n segundos: 'segundos', // seconds\n milisegundos: 'milissegundos', // milliseconds\n\n // Values\n nulo: 'nulo', // null\n indefinido: 'indefinido', // undefined\n vacío: 'vazio', // empty\n },\n categories: {\n commands: {\n en: 'em',\n decir: 'dizer',\n tomar: 'pegar',\n poner: 'colocar',\n establecer: 'definir',\n obtener: 'obter',\n agregar: 'adicionar',\n quitar: 'remover',\n ocultar: 'esconder',\n si: 'se',\n mientras: 'enquanto',\n hasta: 'até',\n romper: 'parar',\n detener: 'parar',\n llamar: 'chamar',\n hacer: 'fazer',\n lanzar: 'lançar',\n atrapar: 'capturar',\n escoger: 'escolher',\n intercambiar: 'trocar',\n añadir: 'anexar',\n salir: 'sair',\n },\n events: {\n clic: 'clique',\n cambio: 'mudança',\n carga: 'carregar',\n enfoque: 'foco',\n desenfoque: 'desfoque',\n },\n logical: {\n verdadero: 'verdadeiro',\n y: 'e',\n o: 'ou',\n no: 'não',\n es: 'é',\n },\n },\n};\n\n/**\n * Portuguese to Spanish mapping (reverse of esPt)\n */\nexport const ptEsMapping: DirectMapping = reverseMapping(esPtMapping);\n\n// =============================================================================\n// Mapping Registry\n// =============================================================================\n\n/**\n * Registry of direct translation pairs.\n * Key format: \"source->target\" (e.g., \"ja->zh\")\n */\nexport const directMappings: Map<string, DirectMapping> = new Map([\n // Japanese ↔ Chinese\n ['ja->zh', jaZhMapping],\n ['zh->ja', zhJaMapping],\n\n // Korean ↔ Japanese\n ['ko->ja', koJaMapping],\n ['ja->ko', jaKoMapping],\n\n // Spanish ↔ Portuguese\n ['es->pt', esPtMapping],\n ['pt->es', ptEsMapping],\n]);\n\n// =============================================================================\n// Public API\n// =============================================================================\n\n/**\n * Check if direct mapping exists for a language pair\n */\nexport function hasDirectMapping(source: string, target: string): boolean {\n return directMappings.has(`${source}->${target}`);\n}\n\n/**\n * Get direct mapping for a language pair\n */\nexport function getDirectMapping(source: string, target: string): DirectMapping | undefined {\n return directMappings.get(`${source}->${target}`);\n}\n\n/**\n * Translate a single word using direct mapping\n */\nexport function translateWordDirect(\n word: string,\n source: string,\n target: string\n): string | undefined {\n const mapping = getDirectMapping(source, target);\n if (!mapping) return undefined;\n return mapping.words[word];\n}\n\n/**\n * Get all supported direct translation pairs\n */\nexport function getSupportedDirectPairs(): Array<{ source: string; target: string }> {\n return Array.from(directMappings.keys()).map(key => {\n const [source, target] = key.split('->');\n return { source, target };\n });\n}\n","/**\n * Grammar-Aware Transformer\n *\n * Transforms hyperscript statements between languages using the\n * generalized grammar system. The key insight is that semantic\n * roles are universal - only their surface realization differs.\n */\n\nimport type {\n LanguageProfile,\n ParsedStatement,\n ParsedElement,\n SemanticRole,\n GrammarRule,\n LineMetadata,\n} from './types';\nimport { reorderRoles, insertMarkers, joinTokens } from './types';\nimport { getProfile, profiles } from './profiles';\nimport { hasDirectMapping, getDirectMapping } from './direct-mappings';\nimport { dictionaries } from '../dictionaries';\nimport { findInDictionary, translateFromEnglish } from '../types';\nimport { ENGLISH_MODIFIER_ROLES, CONDITIONAL_KEYWORDS, THEN_KEYWORDS } from '../constants';\n\n// =============================================================================\n// Compound Statement Handling\n// =============================================================================\n\n/**\n * English commands that can start a new statement.\n * Used to detect command boundaries in space-chained statements.\n */\nconst COMMAND_KEYWORDS = new Set([\n 'add',\n 'append',\n 'async',\n 'beep',\n 'break',\n 'call',\n 'continue',\n 'decrement',\n 'default',\n 'exit',\n 'fetch',\n 'for',\n 'get',\n 'go',\n 'halt',\n 'hide',\n 'if',\n 'increment',\n 'install',\n 'js',\n 'log',\n 'make',\n 'measure',\n 'morph',\n 'pick',\n 'process',\n 'push',\n 'put',\n 'remove',\n 'render',\n 'repeat',\n 'replace',\n 'return',\n 'send',\n 'set',\n 'settle',\n 'show',\n 'swap',\n 'take',\n 'tell',\n 'throw',\n 'toggle',\n 'transition',\n 'trigger',\n 'unless',\n 'wait',\n]);\n\n/**\n * Get all command keywords including translated ones for a locale.\n */\nfunction getCommandKeywordsForLocale(locale: string): Set<string> {\n const keywords = new Set(COMMAND_KEYWORDS);\n\n // Add translated command keywords from dictionaries\n const dict = dictionaries[locale];\n if (dict?.commands) {\n Object.values(dict.commands).forEach(cmd => {\n if (typeof cmd === 'string') {\n keywords.add(cmd.toLowerCase());\n }\n });\n }\n\n return keywords;\n}\n\n/**\n * Split a compound statement into parts at \"then\" boundaries, newlines,\n * AND command keyword boundaries.\n *\n * Example: \"on click wait 1s then increment #count then toggle .active\"\n * Returns: [\"on click wait 1s\", \"increment #count\", \"toggle .active\"]\n *\n * Example: \"on click\\n increment #count\\n toggle .highlight\"\n * Returns: [\"on click\", \"increment #count\", \"toggle .highlight\"]\n *\n * Example: \"wait 2s toggle .highlight\"\n * Returns: [\"wait 2s\", \"toggle .highlight\"]\n */\nfunction splitCompoundStatement(input: string, sourceLocale: string): string[] {\n // First, split on newlines (preserving non-empty lines)\n const lines = input\n .split(/\\n/)\n .map(line => line.trim())\n .filter(line => line.length > 0);\n\n // If we have multiple lines, treat each as a separate part\n // (but still need to handle \"then\" within each line)\n let parts: string[] = [];\n\n for (const line of lines) {\n const lineParts = splitOnThen(line, sourceLocale);\n // Further split each part on command boundaries\n for (const part of lineParts) {\n const commandParts = splitOnCommandBoundaries(part, sourceLocale);\n parts.push(...commandParts);\n }\n }\n\n return parts;\n}\n\n// =============================================================================\n// Line Structure Preservation\n// =============================================================================\n\n/**\n * Result of splitting with preserved line metadata.\n */\ninterface SplitWithMetadataResult {\n /** The processed parts (commands/statements) */\n parts: string[];\n /** Metadata for each original line (for reconstruction) */\n lineMetadata: LineMetadata[];\n /** Mapping from parts back to their original line indices */\n partToLineIndex: number[];\n}\n\n/**\n * Split a compound statement while preserving line structure metadata.\n * This tracks indentation and blank lines for reconstruction.\n */\nfunction splitCompoundStatementWithMetadata(\n input: string,\n sourceLocale: string\n): SplitWithMetadataResult {\n const rawLines = input.split('\\n');\n const lineMetadata: LineMetadata[] = [];\n const parts: string[] = [];\n const partToLineIndex: number[] = [];\n\n for (let lineIndex = 0; lineIndex < rawLines.length; lineIndex++) {\n const rawLine = rawLines[lineIndex];\n\n // Capture leading whitespace\n const indentMatch = rawLine.match(/^(\\s*)/);\n const originalIndent = indentMatch ? indentMatch[1] : '';\n const trimmed = rawLine.trim();\n\n lineMetadata.push({\n content: trimmed,\n originalIndent,\n isBlank: trimmed.length === 0,\n });\n\n if (trimmed.length > 0) {\n // Process non-empty lines for \"then\" and command boundaries\n const lineParts = splitOnThen(trimmed, sourceLocale);\n for (const part of lineParts) {\n const commandParts = splitOnCommandBoundaries(part, sourceLocale);\n for (const cmdPart of commandParts) {\n parts.push(cmdPart);\n partToLineIndex.push(lineIndex);\n }\n }\n }\n }\n\n return { parts, lineMetadata, partToLineIndex };\n}\n\n/**\n * Normalize indentation to consistent 4-space levels.\n * Preserves relative indentation structure while standardizing spacing.\n */\nfunction normalizeIndentation(lineMetadata: LineMetadata[]): string[] {\n // Find non-blank lines with indentation\n const indentedLines = lineMetadata.filter(m => !m.isBlank && m.originalIndent.length > 0);\n\n if (indentedLines.length === 0) {\n // No indented lines, return empty strings\n return lineMetadata.map(() => '');\n }\n\n // Find minimum non-zero indent (the base unit)\n const indentLengths = indentedLines.map(m => {\n // Convert tabs to 4 spaces for consistent measurement\n const normalized = m.originalIndent.replace(/\\t/g, ' ');\n return normalized.length;\n });\n const minIndent = Math.min(...indentLengths);\n const baseUnit = minIndent > 0 ? minIndent : 4;\n\n // Normalize each line's indentation\n return lineMetadata.map(meta => {\n if (meta.isBlank) {\n return ''; // Blank lines get no indentation\n }\n if (meta.originalIndent.length === 0) {\n return ''; // No original indent\n }\n\n // Convert tabs and calculate level\n const normalized = meta.originalIndent.replace(/\\t/g, ' ');\n const level = Math.round(normalized.length / baseUnit);\n return ' '.repeat(level); // 4 spaces per level\n });\n}\n\n/**\n * Reconstruct output with preserved line structure.\n * Maps transformed parts back to their original lines with proper indentation.\n */\nfunction reconstructWithLineStructure(\n transformedParts: string[],\n lineMetadata: LineMetadata[],\n partToLineIndex: number[],\n targetThen: string\n): string {\n // If there's only one non-blank line, simple case\n const nonBlankCount = lineMetadata.filter(m => !m.isBlank).length;\n if (nonBlankCount <= 1 && transformedParts.length <= 1) {\n const normalizedIndents = normalizeIndentation(lineMetadata);\n const result: string[] = [];\n\n for (let i = 0; i < lineMetadata.length; i++) {\n if (lineMetadata[i].isBlank) {\n result.push('');\n } else if (transformedParts.length > 0) {\n result.push(normalizedIndents[i] + transformedParts[0]);\n }\n }\n return result.join('\\n');\n }\n\n // Normalize indentation\n const normalizedIndents = normalizeIndentation(lineMetadata);\n\n // Group transformed parts by their original line\n const partsPerLine: Map<number, string[]> = new Map();\n for (let i = 0; i < transformedParts.length; i++) {\n const lineIdx = partToLineIndex[i];\n if (!partsPerLine.has(lineIdx)) {\n partsPerLine.set(lineIdx, []);\n }\n partsPerLine.get(lineIdx)!.push(transformedParts[i]);\n }\n\n // Build result lines\n const result: string[] = [];\n for (let i = 0; i < lineMetadata.length; i++) {\n const meta = lineMetadata[i];\n const indent = normalizedIndents[i];\n\n if (meta.isBlank) {\n result.push('');\n } else {\n const lineParts = partsPerLine.get(i) || [];\n if (lineParts.length > 0) {\n // Join multiple parts on same line with \"then\"\n const lineContent = lineParts.join(` ${targetThen} `);\n result.push(indent + lineContent);\n }\n }\n }\n\n return result.join('\\n');\n}\n\n/**\n * Split a statement on command keyword boundaries.\n * E.g., \"wait 2s toggle .highlight\" → [\"wait 2s\", \"toggle .highlight\"]\n *\n * Special cases:\n * - \"on <event> <command>\" stays together (event handler with first command)\n * - Modifiers like \"to\", \"from\" don't trigger splits\n */\nfunction splitOnCommandBoundaries(input: string, sourceLocale: string): string[] {\n const commandKeywords = getCommandKeywordsForLocale(sourceLocale);\n const tokens = input.split(/\\s+/);\n\n if (tokens.length === 0) return [input];\n\n const parts: string[] = [];\n let currentPart: string[] = [];\n\n // Check if this starts with an event handler pattern (on/em/en/bei/で + event)\n const firstTokenLower = tokens[0]?.toLowerCase();\n const isEventHandler = EVENT_KEYWORDS.has(firstTokenLower);\n\n // If it's an event handler, the first command after the event is part of the handler\n // So we need to track whether we've seen the first command yet\n let seenFirstCommand = !isEventHandler; // If not event handler, we're already past the \"first command\" phase\n\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n const lowerToken = token.toLowerCase();\n\n // If this is a command keyword and we already have tokens in current part\n if (commandKeywords.has(lowerToken) && currentPart.length > 0) {\n // Check if the previous token looks like it could end a command\n const prevToken = currentPart[currentPart.length - 1];\n const prevLower = prevToken.toLowerCase();\n\n // Don't split if the previous token is a modifier like \"to\", \"from\", \"by\", etc.\n const modifiers = new Set([\n 'to',\n 'into',\n 'from',\n 'with',\n 'by',\n 'as',\n 'at',\n 'in',\n 'on',\n 'of',\n 'over',\n ]);\n\n // For event handlers: don't split before the first command\n // E.g., \"on click wait 1s\" should stay together\n if (!seenFirstCommand) {\n // Mark that we've now seen the first command\n seenFirstCommand = true;\n currentPart.push(token);\n continue;\n }\n\n if (!modifiers.has(prevLower) && !commandKeywords.has(prevLower)) {\n // This looks like a command boundary - save current part and start new one\n parts.push(currentPart.join(' '));\n currentPart = [token];\n continue;\n }\n }\n\n currentPart.push(token);\n }\n\n // Add the last part\n if (currentPart.length > 0) {\n parts.push(currentPart.join(' '));\n }\n\n return parts.filter(p => p.length > 0);\n}\n\n/**\n * Split a single line on \"then\" keywords.\n */\nfunction splitOnThen(input: string, sourceLocale: string): string[] {\n // Build regex pattern from all known \"then\" keywords\n const thenKeywords = Array.from(THEN_KEYWORDS);\n\n // Add any dictionary-specific \"then\" keyword for the source locale\n const sourceDict = sourceLocale === 'en' ? null : dictionaries[sourceLocale];\n if (sourceDict?.modifiers?.then) {\n thenKeywords.push(sourceDict.modifiers.then);\n }\n // Also check logical.then since some dictionaries put it there\n if ((sourceDict?.logical as Record<string, string>)?.then) {\n thenKeywords.push((sourceDict?.logical as Record<string, string>).then);\n }\n\n // Create a regex that matches any \"then\" keyword as a whole word\n // Use word boundaries to avoid matching \"then\" inside other words\n const escapedKeywords = thenKeywords.map(k => k.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'));\n const pattern = new RegExp(`\\\\s+(${escapedKeywords.join('|')})\\\\s+`, 'gi');\n\n // Split on \"then\" keywords\n const parts = input.split(pattern).filter(part => {\n // Filter out the \"then\" keywords themselves (captured by the group)\n const lowerPart = part.toLowerCase().trim();\n return lowerPart && !thenKeywords.some(k => k.toLowerCase() === lowerPart);\n });\n\n return parts.map(p => p.trim()).filter(p => p.length > 0);\n}\n\n/**\n * Get the \"then\" keyword in the target language.\n * Checks both modifiers and logical sections since dictionaries vary.\n */\nfunction getTargetThenKeyword(targetLocale: string): string {\n if (targetLocale === 'en') return 'then';\n\n const targetDict = dictionaries[targetLocale];\n if (!targetDict) return 'then';\n\n // Check modifiers first, then logical (dictionaries vary)\n return (\n targetDict.modifiers?.then || (targetDict.logical as Record<string, string>)?.then || 'then'\n );\n}\n\n// =============================================================================\n// Derived Constants from Profiles\n// =============================================================================\n\n/**\n * Derive event keywords from all language profiles.\n * This replaces the hardcoded eventKeywords array.\n */\nfunction deriveEventKeywordsFromProfiles(): Set<string> {\n const keywords = new Set<string>();\n\n // Add 'on' as the English default\n keywords.add('on');\n\n // Extract event markers from all profiles\n for (const profile of Object.values(profiles)) {\n for (const marker of profile.markers) {\n if (marker.role === 'event') {\n // Strip hyphen notation and add\n const form = marker.form.replace(/^-|-$/g, '').toLowerCase();\n if (form) keywords.add(form);\n\n // Add alternatives\n marker.alternatives?.forEach(alt => {\n const altForm = alt.replace(/^-|-$/g, '').toLowerCase();\n if (altForm) keywords.add(altForm);\n });\n }\n }\n }\n\n return keywords;\n}\n\n/** Event keywords derived from language profiles */\nconst EVENT_KEYWORDS = deriveEventKeywordsFromProfiles();\n\n// =============================================================================\n// Helper: Dynamic Modifier Map\n// =============================================================================\n\n/**\n * Generates a lookup map for semantic roles based on the language profile.\n * Maps markers (e.g., 'to', 'に', 'into', 'إلى') to their semantic roles.\n * This enables parsing non-English input by using the profile's markers.\n */\nfunction generateModifierMap(profile: LanguageProfile): Record<string, SemanticRole> {\n const map: Record<string, SemanticRole> = {};\n\n // Map markers to roles from the profile\n profile.markers.forEach(marker => {\n // Strip hyphen notation for suffix/prefix markers\n const form = marker.form.replace(/^-|-$/g, '').toLowerCase();\n if (form) {\n map[form] = marker.role;\n }\n\n // Map alternatives if they exist (e.g., Korean vowel harmony variants)\n marker.alternatives?.forEach(alt => {\n const altForm = alt.replace(/^-|-$/g, '').toLowerCase();\n if (altForm) {\n map[altForm] = marker.role;\n }\n });\n });\n\n // Add English modifiers as fallback (don't override profile-specific markers)\n for (const [key, role] of Object.entries(ENGLISH_MODIFIER_ROLES)) {\n if (!(key in map)) {\n map[key] = role;\n }\n }\n\n return map;\n}\n\n// =============================================================================\n// Statement Parser\n// =============================================================================\n\n/**\n * Parse a hyperscript statement into semantic roles\n * This is the core analysis step that identifies WHAT each part means\n */\nexport function parseStatement(input: string, sourceLocale: string = 'en'): ParsedStatement | null {\n const profile = getProfile(sourceLocale);\n if (!profile) return null;\n\n const tokens = tokenize(input, profile);\n\n // Identify statement type and extract roles\n const statementType = identifyStatementType(tokens, profile);\n\n switch (statementType) {\n case 'event-handler':\n return parseEventHandler(tokens, profile);\n case 'command':\n return parseCommand(tokens, profile);\n case 'conditional':\n return parseConditional(tokens, profile);\n default:\n return null;\n }\n}\n\n/**\n * Known suffixes that may attach to words without spaces.\n * These are split off during tokenization for proper parsing.\n */\nconst ATTACHED_SUFFIXES: Record<string, string[]> = {\n // Chinese: 时 (time/when) often attaches to events like 点击时 (when clicking)\n zh: ['时', '的', '地', '得'],\n // Japanese: Some particles may attach in casual writing\n ja: [],\n // Korean: Particles sometimes written without spaces\n ko: [],\n};\n\n/**\n * Known prefixes that may attach to words without spaces.\n */\nconst ATTACHED_PREFIXES: Record<string, string[]> = {\n // Chinese: 当 (when) sometimes written attached\n zh: ['当'],\n // Arabic: Prepositions that attach\n ar: ['بـ', 'كـ', 'و'],\n};\n\n/**\n * Post-process tokens to split attached suffixes/prefixes.\n * E.g., \"点击时\" → [\"点击\", \"时\"]\n */\nfunction splitAttachedAffixes(tokens: string[], locale: string): string[] {\n const suffixes = ATTACHED_SUFFIXES[locale] || [];\n const prefixes = ATTACHED_PREFIXES[locale] || [];\n\n if (suffixes.length === 0 && prefixes.length === 0) {\n return tokens;\n }\n\n const result: string[] = [];\n\n for (const token of tokens) {\n // Skip CSS selectors and numbers\n if (/^[#.<@]/.test(token) || /^\\d+/.test(token)) {\n result.push(token);\n continue;\n }\n\n let processed = token;\n let prefix = '';\n let suffix = '';\n\n // Check for attached prefixes\n for (const p of prefixes) {\n if (processed.startsWith(p) && processed.length > p.length) {\n prefix = p;\n processed = processed.slice(p.length);\n break;\n }\n }\n\n // Check for attached suffixes\n for (const s of suffixes) {\n if (processed.endsWith(s) && processed.length > s.length) {\n suffix = s;\n processed = processed.slice(0, -s.length);\n break;\n }\n }\n\n // Add tokens in order: prefix, main, suffix\n if (prefix) result.push(prefix);\n if (processed) result.push(processed);\n if (suffix) result.push(suffix);\n }\n\n return result;\n}\n\n/**\n * Simple tokenizer that handles:\n * - Keywords (from dictionary)\n * - CSS selectors (#id, .class, <tag/>)\n * - String literals\n * - Numbers\n * - Attached suffixes/prefixes (language-specific)\n */\nfunction tokenize(input: string, profile: LanguageProfile): string[] {\n // Split on whitespace, preserving selectors and strings\n const tokens: string[] = [];\n let current = '';\n let inSelector = false;\n let selectorDepth = 0;\n\n for (let i = 0; i < input.length; i++) {\n const char = input[i];\n\n // Track CSS selector context\n if (char === '<') {\n inSelector = true;\n selectorDepth++;\n } else if (char === '>' && inSelector) {\n selectorDepth--;\n if (selectorDepth === 0) inSelector = false;\n }\n\n // Split on whitespace unless in selector\n if (/\\s/.test(char) && !inSelector) {\n if (current) {\n tokens.push(current);\n current = '';\n }\n } else {\n current += char;\n }\n }\n\n if (current) {\n tokens.push(current);\n }\n\n // Post-process to split attached affixes for languages that need it\n return splitAttachedAffixes(tokens, profile.code);\n}\n\n/**\n * Identify what type of statement this is\n */\nfunction identifyStatementType(\n tokens: string[],\n profile: LanguageProfile\n): 'event-handler' | 'command' | 'conditional' | 'unknown' {\n if (tokens.length === 0) return 'unknown';\n\n const firstToken = tokens[0].toLowerCase();\n\n // Check for event handler\n const eventMarker = profile.markers.find(m => m.role === 'event' && m.position === 'preposition');\n if (eventMarker && firstToken === eventMarker.form.toLowerCase()) {\n return 'event-handler';\n }\n\n // Check if first token is a known event keyword (derived from profiles)\n if (EVENT_KEYWORDS.has(firstToken)) {\n return 'event-handler';\n }\n\n // Check for conditional using shared constants\n if (CONDITIONAL_KEYWORDS.has(firstToken)) {\n return 'conditional';\n }\n\n return 'command';\n}\n\n/**\n * Parse an event handler statement\n * Pattern: on {event} {command} {target?} {modifiers?}\n *\n * Now handles modifiers like \"by 3\" in \"on click increment #count by 3\"\n */\nfunction parseEventHandler(tokens: string[], profile: LanguageProfile): ParsedStatement {\n const roles = new Map<SemanticRole, ParsedElement>();\n\n // Skip the event keyword (e.g., 'on', 'で', '当', etc.) - derived from profiles\n let startIndex = EVENT_KEYWORDS.has(tokens[0]?.toLowerCase()) ? 1 : 0;\n\n // Next token is the event\n if (tokens[startIndex]) {\n roles.set('event', {\n role: 'event',\n value: tokens[startIndex],\n });\n startIndex++;\n }\n\n // Next token is typically the action\n if (tokens[startIndex]) {\n roles.set('action', {\n role: 'action',\n value: tokens[startIndex],\n });\n startIndex++;\n }\n\n // Parse remaining tokens with modifier awareness (like parseCommand does)\n // This handles \"by 3\" in \"on click increment #count by 3\"\n if (tokens[startIndex]) {\n const modifierMap = generateModifierMap(profile);\n let currentRole: SemanticRole = 'patient';\n let currentValue: string[] = [];\n\n for (let i = startIndex; i < tokens.length; i++) {\n const token = tokens[i];\n const mappedRole = modifierMap[token.toLowerCase()];\n\n if (mappedRole) {\n // Save previous role\n if (currentValue.length > 0) {\n const value = currentValue.join(' ');\n roles.set(currentRole, {\n role: currentRole,\n value,\n isSelector: /^[#.<@]/.test(value),\n });\n }\n currentRole = mappedRole;\n currentValue = [];\n } else {\n currentValue.push(token);\n }\n }\n\n // Save final role\n if (currentValue.length > 0) {\n const value = currentValue.join(' ');\n roles.set(currentRole, {\n role: currentRole,\n value,\n isSelector: /^[#.<@]/.test(value),\n });\n }\n }\n\n return {\n type: 'event-handler',\n roles,\n original: tokens.join(' '),\n };\n}\n\n/**\n * Parse a command statement\n * Pattern: {command} {args...}\n */\nfunction parseCommand(tokens: string[], profile: LanguageProfile): ParsedStatement {\n const roles = new Map<SemanticRole, ParsedElement>();\n\n if (tokens.length === 0) {\n return { type: 'command', roles, original: '' };\n }\n\n // First token is the command\n roles.set('action', {\n role: 'action',\n value: tokens[0],\n });\n\n // Generate dynamic modifier map from language profile\n // This enables parsing non-English input (e.g., Japanese に, Korean 에, Arabic إلى)\n const modifierMap = generateModifierMap(profile);\n\n let currentRole: SemanticRole = 'patient';\n let currentValue: string[] = [];\n\n for (let i = 1; i < tokens.length; i++) {\n const token = tokens[i];\n const mappedRole = modifierMap[token.toLowerCase()];\n\n if (mappedRole) {\n // Save previous role\n if (currentValue.length > 0) {\n const value = currentValue.join(' ');\n roles.set(currentRole, {\n role: currentRole,\n value,\n isSelector: /^[#.<@]/.test(value),\n });\n }\n currentRole = mappedRole;\n currentValue = [];\n } else {\n currentValue.push(token);\n }\n }\n\n // Save final role\n if (currentValue.length > 0) {\n const value = currentValue.join(' ');\n roles.set(currentRole, {\n role: currentRole,\n value,\n isSelector: /^[#.<@]/.test(value),\n });\n }\n\n return {\n type: 'command',\n roles,\n original: tokens.join(' '),\n };\n}\n\n/**\n * Parse a conditional statement\n */\nfunction parseConditional(tokens: string[], _profile: LanguageProfile): ParsedStatement {\n const roles = new Map<SemanticRole, ParsedElement>();\n\n // First token is the 'if' keyword\n roles.set('action', {\n role: 'action',\n value: tokens[0],\n });\n\n // Find 'then' to split condition from body - using shared constants\n const thenIndex = tokens.findIndex(t => THEN_KEYWORDS.has(t.toLowerCase()));\n\n if (thenIndex > 1) {\n const conditionValue = tokens.slice(1, thenIndex).join(' ');\n roles.set('condition', {\n role: 'condition',\n value: conditionValue,\n });\n }\n\n return {\n type: 'conditional',\n roles,\n original: tokens.join(' '),\n };\n}\n\n// =============================================================================\n// Translation\n// =============================================================================\n\n/**\n * Translate words using dictionary with type-safe access.\n */\nfunction translateWord(word: string, sourceLocale: string, targetLocale: string): string {\n // Don't translate CSS selectors\n if (/^[#.<@]/.test(word)) {\n return word;\n }\n\n // Don't translate numbers\n if (/^\\d+/.test(word)) {\n return word;\n }\n\n const sourceDict = sourceLocale === 'en' ? null : dictionaries[sourceLocale];\n const targetDict = dictionaries[targetLocale];\n\n if (!targetDict) return word;\n\n // If source is not English, first map to English using type-safe lookup\n let englishWord = word;\n if (sourceDict) {\n const found = findInDictionary(sourceDict, word);\n if (found) {\n englishWord = found.englishKey;\n }\n }\n\n // Now map English to target locale using type-safe lookup\n const translated = translateFromEnglish(targetDict, englishWord);\n return translated ?? word;\n}\n\n/**\n * Possessive markers for each language.\n * Used to transform \"X's Y\" patterns to target language structure.\n */\nconst POSSESSIVE_MARKERS: Record<\n string,\n { type: 'prefix' | 'suffix' | 'preposition'; marker: string }\n> = {\n en: { type: 'suffix', marker: \"'s\" },\n es: { type: 'preposition', marker: 'de' },\n pt: { type: 'preposition', marker: 'de' },\n fr: { type: 'preposition', marker: 'de' },\n de: { type: 'preposition', marker: 'von' },\n ja: { type: 'suffix', marker: 'の' },\n ko: { type: 'suffix', marker: '의' },\n zh: { type: 'suffix', marker: '的' },\n ar: { type: 'preposition', marker: 'لـ' },\n tr: { type: 'suffix', marker: \"'ın\" },\n id: { type: 'preposition', marker: 'dari' },\n qu: { type: 'suffix', marker: '-pa' },\n sw: { type: 'preposition', marker: 'ya' },\n};\n\n/**\n * Transform possessive 's syntax to target language.\n *\n * Examples:\n * me's value → mi valor (Spanish - pronoun becomes possessive adjective)\n * #button's textContent → textContent de #button (Spanish - prepositional)\n * me's value → 私の値 (Japanese - の particle)\n */\nfunction translatePossessive(token: string, sourceLocale: string, targetLocale: string): string {\n // Check for 's possessive pattern\n const possessiveMatch = token.match(/^(.+)'s$/i);\n if (!possessiveMatch) {\n return token;\n }\n\n const owner = possessiveMatch[1];\n const targetMarker = POSSESSIVE_MARKERS[targetLocale] || POSSESSIVE_MARKERS.en;\n\n // Check if owner is a pronoun that has a possessive form\n const pronounPossessives: Record<string, string> = {\n me: 'my',\n it: 'its',\n you: 'your',\n };\n\n const lowerOwner = owner.toLowerCase();\n if (pronounPossessives[lowerOwner]) {\n // Convert \"me's\" to \"my\" then translate\n const possessiveForm = pronounPossessives[lowerOwner];\n return translateWord(possessiveForm, 'en', targetLocale);\n }\n\n // For selectors and other owners, translate owner and apply target possessive marker\n const translatedOwner = translateWord(owner, sourceLocale, targetLocale);\n\n switch (targetMarker.type) {\n case 'suffix':\n // Japanese/Korean/Chinese: owner + marker (e.g., #buttonの, #button의)\n return `${translatedOwner}${targetMarker.marker}`;\n case 'preposition':\n // Will be handled by caller - return marker + owner format\n // Store as special format to be processed later\n return `__POSS__${targetMarker.marker}__${translatedOwner}__POSS__`;\n default:\n return `${translatedOwner}'s`;\n }\n}\n\n/**\n * Translate a multi-word value, translating each word individually.\n * Handles possessives like \"my value\" → \"mi valor\" in Spanish.\n * Also handles 's possessive syntax like \"me's value\" → \"mi valor\".\n */\nfunction translateMultiWordValue(\n value: string,\n sourceLocale: string,\n targetLocale: string\n): string {\n // If it's a single word, check for possessive then translate\n if (!value.includes(' ')) {\n // Check for possessive 's\n if (value.includes(\"'s\")) {\n return translatePossessive(value, sourceLocale, targetLocale);\n }\n return translateWord(value, sourceLocale, targetLocale);\n }\n\n // Split into words and translate each\n const words = value.split(/\\s+/);\n const translated: string[] = [];\n let i = 0;\n\n while (i < words.length) {\n const word = words[i];\n\n // Check for possessive 's pattern FIRST (e.g., \"me's value\", \"#button's textContent\")\n // This must come before selector check because \"#button's\" starts with #\n if (word.includes(\"'s\")) {\n const possessiveResult = translatePossessive(word, sourceLocale, targetLocale);\n\n // Check if it's a prepositional possessive that needs reordering\n const prepMatch = possessiveResult.match(/^__POSS__(.+)__(.+)__POSS__$/);\n if (prepMatch && i + 1 < words.length) {\n // Prepositional: \"X's Y\" → \"Y marker X\" (e.g., \"textContent de #button\")\n const marker = prepMatch[1];\n const owner = prepMatch[2];\n const property = words[i + 1];\n const translatedProperty = translateWord(property, sourceLocale, targetLocale);\n translated.push(`${translatedProperty} ${marker} ${owner}`);\n i += 2; // Skip property since we consumed it\n continue;\n } else if (prepMatch) {\n // No property following - just output owner with marker prefix\n const marker = prepMatch[1];\n const owner = prepMatch[2];\n translated.push(`${marker} ${owner}`);\n i++;\n continue;\n }\n\n // Suffix-style possessive (Japanese, Korean, etc.) or pronoun\n translated.push(possessiveResult);\n i++;\n continue;\n }\n\n // Skip pure CSS selectors and numbers (but NOT possessives which were handled above)\n if (/^[#.<@]/.test(word) || /^\\d+/.test(word)) {\n translated.push(word);\n i++;\n continue;\n }\n\n // Skip quoted strings\n if (/^[\"'].*[\"']$/.test(word)) {\n translated.push(word);\n i++;\n continue;\n }\n\n translated.push(translateWord(word, sourceLocale, targetLocale));\n i++;\n }\n\n return translated.join(' ');\n}\n\n/**\n * Translate all elements in a parsed statement\n */\nfunction translateElements(\n parsed: ParsedStatement,\n sourceLocale: string,\n targetLocale: string\n): void {\n for (const [_role, element] of parsed.roles) {\n // Always process possessive 's syntax, even for selectors\n // E.g., \"#button's textContent\" should translate the possessive\n if (element.value.includes(\"'s\")) {\n element.translated = translateMultiWordValue(element.value, sourceLocale, targetLocale);\n } else if (!element.isSelector && !element.isLiteral) {\n element.translated = translateMultiWordValue(element.value, sourceLocale, targetLocale);\n } else {\n element.translated = element.value;\n }\n }\n}\n\n// =============================================================================\n// Main Transformer\n// =============================================================================\n\nexport class GrammarTransformer {\n private sourceProfile: LanguageProfile;\n private targetProfile: LanguageProfile;\n\n constructor(sourceLocale: string = 'en', targetLocale: string) {\n const source = getProfile(sourceLocale);\n const target = getProfile(targetLocale);\n\n if (!source) throw new Error(`Unknown source locale: ${sourceLocale}`);\n if (!target) throw new Error(`Unknown target locale: ${targetLocale}`);\n\n this.sourceProfile = source;\n this.targetProfile = target;\n }\n\n /**\n * Transform a hyperscript statement from source to target language.\n * Handles compound statements with \"then\" by splitting, transforming each part,\n * and rejoining with the target language's \"then\" keyword.\n *\n * For multi-line input, preserves line structure (indentation, blank lines).\n */\n transform(input: string): string {\n const targetThen = getTargetThenKeyword(this.targetProfile.code);\n\n // Check if input has multi-line structure worth preserving\n const hasMultiLineStructure = input.includes('\\n');\n\n if (hasMultiLineStructure) {\n // Multi-line case - preserve structure (indentation, blank lines)\n const { parts, lineMetadata, partToLineIndex } = splitCompoundStatementWithMetadata(\n input,\n this.sourceProfile.code\n );\n\n const transformedParts = parts.map(part => this.transformSingle(part));\n\n return reconstructWithLineStructure(\n transformedParts,\n lineMetadata,\n partToLineIndex,\n targetThen\n );\n }\n\n // Single-line case - use existing logic\n const parts = splitCompoundStatement(input, this.sourceProfile.code);\n\n if (parts.length > 1) {\n const transformedParts = parts.map(part => this.transformSingle(part));\n return transformedParts.join(` ${targetThen} `);\n }\n\n // Single statement (no \"then\" splitting needed)\n return this.transformSingle(input);\n }\n\n /**\n * Transform a single hyperscript statement (no compound \"then\" chains).\n */\n private transformSingle(input: string): string {\n // 1. Parse into semantic roles\n const parsed = parseStatement(input, this.sourceProfile.code);\n if (!parsed) {\n return input; // Return unchanged if parsing fails\n }\n\n // 2. Translate individual words\n translateElements(parsed, this.sourceProfile.code, this.targetProfile.code);\n\n // 3. Find applicable rule\n const rule = this.findRule(parsed);\n\n // 4. Apply transformation\n if (rule?.transform.custom) {\n return rule.transform.custom(parsed, this.targetProfile);\n }\n\n // 5. Reorder according to target language's canonical order\n const roleOrder = rule?.transform.roleOrder || this.targetProfile.canonicalOrder;\n const reordered = reorderRoles(parsed.roles, roleOrder);\n\n // 6. Insert grammatical markers\n const shouldInsertMarkers = rule?.transform.insertMarkers ?? true;\n if (shouldInsertMarkers) {\n const result = insertMarkers(\n reordered,\n this.targetProfile.markers,\n this.targetProfile.adpositionType\n );\n // Use joinTokens for proper suffix/prefix attachment (Turkish -i, Quechua -ta, etc.)\n return joinTokens(result);\n }\n\n // 7. Join without markers (still use joinTokens for consistency)\n return joinTokens(reordered.map(e => e.translated || e.value));\n }\n\n /**\n * Find the best matching rule for this statement\n */\n private findRule(parsed: ParsedStatement): GrammarRule | undefined {\n if (!this.targetProfile.rules) return undefined;\n\n const matchingRules = this.targetProfile.rules\n .filter(rule => this.matchesRule(parsed, rule))\n .sort((a, b) => b.priority - a.priority);\n\n return matchingRules[0];\n }\n\n /**\n * Check if a parsed statement matches a rule\n */\n private matchesRule(parsed: ParsedStatement, rule: GrammarRule): boolean {\n const { match } = rule;\n\n // Check required roles\n for (const role of match.requiredRoles) {\n if (!parsed.roles.has(role)) {\n return false;\n }\n }\n\n // Check command match if specified\n if (match.commands && match.commands.length > 0) {\n const action = parsed.roles.get('action');\n if (!action) return false;\n\n const actionValue = action.value.toLowerCase();\n if (!match.commands.some(cmd => cmd.toLowerCase() === actionValue)) {\n return false;\n }\n }\n\n // Check custom predicate\n if (match.predicate && !match.predicate(parsed)) {\n return false;\n }\n\n return true;\n }\n}\n\n// =============================================================================\n// Convenience Functions\n// =============================================================================\n\n/**\n * Transform hyperscript from English to target language\n */\nexport function toLocale(input: string, targetLocale: string): string {\n const transformer = new GrammarTransformer('en', targetLocale);\n return transformer.transform(input);\n}\n\n/**\n * Transform hyperscript from source language to English\n */\nexport function toEnglish(input: string, sourceLocale: string): string {\n const transformer = new GrammarTransformer(sourceLocale, 'en');\n return transformer.transform(input);\n}\n\n/**\n * Transform between any two languages.\n *\n * Uses direct translation for supported language pairs (ja↔zh, es↔pt, ko↔ja),\n * falling back to English pivot for other pairs.\n */\nexport function translate(input: string, sourceLocale: string, targetLocale: string): string {\n if (sourceLocale === targetLocale) return input;\n if (sourceLocale === 'en') return toLocale(input, targetLocale);\n if (targetLocale === 'en') return toEnglish(input, sourceLocale);\n\n // Try direct translation for supported pairs\n if (hasDirectMapping(sourceLocale, targetLocale)) {\n return translateDirect(input, sourceLocale, targetLocale);\n }\n\n // Fallback: Via English pivot\n const english = toEnglish(input, sourceLocale);\n return toLocale(english, targetLocale);\n}\n\n/**\n * Direct translation between language pairs without English pivot.\n * More accurate for closely related languages (ja↔zh, es↔pt).\n */\nfunction translateDirect(input: string, sourceLocale: string, targetLocale: string): string {\n const mapping = getDirectMapping(sourceLocale, targetLocale);\n if (!mapping) {\n // Fallback to pivot translation\n return toLocale(toEnglish(input, sourceLocale), targetLocale);\n }\n\n // Tokenize input\n const tokens = input.split(/\\s+/);\n\n // Translate each token using direct mapping\n const translated = tokens.map(token => {\n // Preserve CSS selectors and literals\n if (token.startsWith('#') || token.startsWith('.') || token.startsWith('@')) {\n return token;\n }\n if (token.startsWith('\"') || token.startsWith(\"'\")) {\n return token;\n }\n\n // Look up in direct mapping\n const directTranslation = mapping.words[token];\n if (directTranslation) {\n return directTranslation;\n }\n\n // Check for suffix-attached tokens (e.g., \"#count-ta\" in Quechua)\n const suffixMatch = token.match(/^(.+?)(-.+)$/);\n if (suffixMatch) {\n const [, base, suffix] = suffixMatch;\n const translatedBase = mapping.words[base] || base;\n return translatedBase + suffix;\n }\n\n // Return unchanged if no mapping found\n return token;\n });\n\n return translated.join(' ');\n}\n\n// =============================================================================\n// Examples (for testing)\n// =============================================================================\n\nexport const examples = {\n english: {\n eventHandler: 'on click increment #count',\n putInto: 'put my value into #output',\n toggle: 'toggle .active',\n wait: 'wait 2 seconds',\n },\n\n // Expected outputs (approximate, for reference)\n japanese: {\n eventHandler: '#count を クリック で 増加',\n putInto: '私の 値 を #output に 置く',\n toggle: '.active を 切り替え',\n wait: '2秒 待つ',\n },\n\n chinese: {\n eventHandler: '当 点击 时 增加 #count',\n putInto: '把 我的值 放 到 #output',\n toggle: '切换 .active',\n wait: '等待 2秒',\n },\n\n arabic: {\n eventHandler: 'زِد #count عند النقر',\n putInto: 'ضع قيمتي في #output',\n toggle: 'بدّل .active',\n wait: 'انتظر ثانيتين',\n },\n};\n","// packages/i18n/src/index.ts\n\n// =============================================================================\n// Type Exports\n// =============================================================================\n\nexport type {\n DictionaryCategory,\n Dictionary,\n I18nConfig,\n TranslationOptions,\n ValidationResult,\n ValidationError,\n ValidationWarning,\n LocaleMetadata,\n TranslationContext,\n TokenType,\n Token,\n TranslationResult,\n} from './types';\n\nexport {\n DICTIONARY_CATEGORIES,\n isDictionaryCategory,\n getDictionaryCategory,\n forEachCategory,\n findInDictionary,\n translateFromEnglish,\n} from './types';\n\n// =============================================================================\n// Translator Exports\n// =============================================================================\n\nexport { HyperscriptTranslator } from './translator';\n\n// =============================================================================\n// Dictionary Exports\n// =============================================================================\n\nexport {\n dictionaries,\n en,\n es,\n ko,\n zh,\n fr,\n de,\n ja,\n ar,\n tr,\n id,\n qu,\n sw,\n pt,\n supportedLocales,\n isLocaleSupported,\n getDictionary,\n} from './dictionaries';\n\n// =============================================================================\n// Parser Integration Exports\n// =============================================================================\n\nexport type { KeywordProvider, KeywordProviderOptions } from './parser';\n\nexport {\n createKeywordProvider,\n createEnglishProvider,\n ENGLISH_COMMANDS,\n ENGLISH_KEYWORDS,\n UNIVERSAL_ENGLISH_KEYWORDS,\n // Locale packs\n esKeywords,\n esDictionary,\n jaKeywords,\n jaDictionary,\n frKeywords,\n frDictionary,\n deKeywords,\n deDictionary,\n arKeywords,\n arDictionary,\n koKeywords,\n koDictionary,\n zhKeywords,\n zhDictionary,\n trKeywords,\n trDictionary,\n idKeywords,\n idDictionary,\n quKeywords,\n quDictionary,\n swKeywords,\n swDictionary,\n ptKeywords,\n ptDictionary,\n // Locale management\n LocaleManager,\n detectBrowserLocale,\n} from './parser';\n\n// Re-export key utilities\nexport { detectLocale, getBrowserLocales, isRTL } from './utils/locale';\nexport { tokenize } from './utils/tokenizer';\nexport { validate } from './validators';\n\n// Plugin exports\nexport { hyperscriptI18nVitePlugin } from './plugins/vite';\nexport { HyperscriptI18nWebpackPlugin } from './plugins/webpack';\n\n// SSR integration\nexport { SSRLocaleManager, createExpressI18nMiddleware, withI18n } from './ssr-integration';\nexport type { SSRLocaleContext, SSRLocaleOptions } from './ssr-integration';\n\n// Pluralization\nexport {\n pluralRules,\n getPlural,\n PluralAwareTranslator,\n pluralTimeExpressions,\n} from './pluralization';\nexport type { PluralRule, PluralForms } from './pluralization';\n\n// Formatting\nexport {\n NumberFormatter,\n DateFormatter,\n LocaleFormatter,\n getFormatter,\n formatForLocale,\n} from './formatting';\nexport type {\n NumberFormatOptions,\n DateFormatOptions,\n RelativeTimeFormatOptions,\n} from './formatting';\n\n// Runtime i18n\nexport { RuntimeI18nManager, initializeI18n, getI18n, runtimeI18n } from './runtime';\nexport type { RuntimeI18nOptions } from './runtime';\n\n// Create and export default translator instance\nimport { HyperscriptTranslator } from './translator';\nexport const defaultTranslator = new HyperscriptTranslator({ locale: 'en' });\n\n// Create and export default runtime instance for browser usage\nimport { RuntimeI18nManager } from './runtime';\nexport const defaultRuntime = new RuntimeI18nManager({ locale: 'en' });\n\n// Enhanced I18n Implementation (following enhanced pattern)\nexport {\n TypedI18nContextImplementation,\n createI18nContext,\n createEnhancedI18n,\n enhancedI18nImplementation,\n EnhancedI18nInputSchema,\n EnhancedI18nOutputSchema,\n} from './enhanced-i18n';\nexport type { EnhancedI18nInput, EnhancedI18nOutput } from './enhanced-i18n';\n\n// Grammar-aware transformation system (Phase 2)\nexport {\n // Types\n type SemanticRole,\n type WordOrder,\n type AdpositionType,\n type MorphologyType,\n type GrammaticalMarker,\n type LanguageProfile,\n type GrammarRule,\n type PatternMatcher,\n type PatternTransform,\n type ParsedStatement,\n type ParsedElement,\n UNIVERSAL_PATTERNS,\n LANGUAGE_FAMILY_DEFAULTS,\n reorderRoles,\n insertMarkers,\n transformStatement,\n // Profiles\n profiles,\n getProfile,\n getSupportedLocales,\n englishProfile,\n japaneseProfile,\n koreanProfile,\n chineseProfile,\n arabicProfile,\n turkishProfile,\n spanishProfile,\n indonesianProfile,\n quechuaProfile,\n swahiliProfile,\n // Transformer\n GrammarTransformer,\n parseStatement,\n toLocale,\n toEnglish,\n translate,\n examples as grammarExamples,\n} from './grammar';\n"]}
|