@lokascript/semantic 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.
Files changed (162) hide show
  1. package/dist/browser-ar.ar.global.js +2 -2
  2. package/dist/browser-core.core.global.js +2 -2
  3. package/dist/browser-de.de.global.js +2 -2
  4. package/dist/browser-east-asian.east-asian.global.js +2 -2
  5. package/dist/browser-en-tr.en-tr.global.js +2 -2
  6. package/dist/browser-en.en.global.js +2 -2
  7. package/dist/browser-es-en.es-en.global.js +2 -2
  8. package/dist/browser-es.es.global.js +2 -2
  9. package/dist/browser-fr.fr.global.js +2 -2
  10. package/dist/browser-id.id.global.js +2 -2
  11. package/dist/browser-ja.ja.global.js +2 -2
  12. package/dist/browser-ko.ko.global.js +2 -2
  13. package/dist/browser-lazy.lazy.global.js +2 -2
  14. package/dist/browser-priority.priority.global.js +2 -2
  15. package/dist/browser-pt.pt.global.js +2 -2
  16. package/dist/browser-qu.qu.global.js +2 -2
  17. package/dist/browser-sw.sw.global.js +2 -2
  18. package/dist/browser-tr.tr.global.js +2 -2
  19. package/dist/browser-western.western.global.js +2 -2
  20. package/dist/browser-zh.zh.global.js +2 -2
  21. package/dist/browser.global.js +2 -2
  22. package/dist/browser.global.js.map +1 -1
  23. package/dist/index.cjs +13042 -17462
  24. package/dist/index.cjs.map +1 -1
  25. package/dist/index.d.cts +49 -5
  26. package/dist/index.d.ts +49 -5
  27. package/dist/index.js +14044 -18464
  28. package/dist/index.js.map +1 -1
  29. package/dist/languages/ar.d.ts +1 -1
  30. package/dist/languages/ar.js +31 -44
  31. package/dist/languages/ar.js.map +1 -1
  32. package/dist/languages/de.d.ts +1 -1
  33. package/dist/languages/de.js +14 -2
  34. package/dist/languages/de.js.map +1 -1
  35. package/dist/languages/en.d.ts +1 -1
  36. package/dist/languages/en.js +558 -12
  37. package/dist/languages/en.js.map +1 -1
  38. package/dist/languages/es.d.ts +1 -1
  39. package/dist/languages/es.js +16 -0
  40. package/dist/languages/es.js.map +1 -1
  41. package/dist/languages/fr.d.ts +1 -1
  42. package/dist/languages/fr.js +14 -2
  43. package/dist/languages/fr.js.map +1 -1
  44. package/dist/languages/id.d.ts +1 -1
  45. package/dist/languages/id.js +14 -2
  46. package/dist/languages/id.js.map +1 -1
  47. package/dist/languages/ja.d.ts +1 -1
  48. package/dist/languages/ja.js +18 -3
  49. package/dist/languages/ja.js.map +1 -1
  50. package/dist/languages/ko.d.ts +8 -1
  51. package/dist/languages/ko.js +75 -43
  52. package/dist/languages/ko.js.map +1 -1
  53. package/dist/languages/pt.d.ts +1 -1
  54. package/dist/languages/pt.js +17 -0
  55. package/dist/languages/pt.js.map +1 -1
  56. package/dist/languages/qu.d.ts +12 -1
  57. package/dist/languages/qu.js +77 -2
  58. package/dist/languages/qu.js.map +1 -1
  59. package/dist/languages/sw.d.ts +1 -1
  60. package/dist/languages/sw.js.map +1 -1
  61. package/dist/languages/tr.d.ts +9 -1
  62. package/dist/languages/tr.js +96 -72
  63. package/dist/languages/tr.js.map +1 -1
  64. package/dist/languages/zh.d.ts +1 -1
  65. package/dist/languages/zh.js +16 -0
  66. package/dist/languages/zh.js.map +1 -1
  67. package/dist/{types-C4dcj53L.d.ts → types-BY3Id07j.d.ts} +20 -5
  68. package/package.json +20 -29
  69. package/src/generators/command-schemas.ts +21 -10
  70. package/src/generators/event-handler-generator.ts +50 -44
  71. package/src/generators/language-profiles.ts +6 -0
  72. package/src/generators/pattern-generator.ts +883 -1
  73. package/src/generators/profiles/arabic.ts +19 -3
  74. package/src/generators/profiles/bengali.ts +12 -1
  75. package/src/generators/profiles/chinese.ts +15 -0
  76. package/src/generators/profiles/french.ts +12 -1
  77. package/src/generators/profiles/german.ts +12 -1
  78. package/src/generators/profiles/hebrew.ts +148 -0
  79. package/src/generators/profiles/hindi.ts +12 -1
  80. package/src/generators/profiles/index.ts +2 -0
  81. package/src/generators/profiles/indonesian.ts +12 -1
  82. package/src/generators/profiles/italian.ts +16 -0
  83. package/src/generators/profiles/japanese.ts +11 -2
  84. package/src/generators/profiles/korean.ts +15 -1
  85. package/src/generators/profiles/polish.ts +12 -0
  86. package/src/generators/profiles/portuguese.ts +16 -0
  87. package/src/generators/profiles/russian.ts +11 -0
  88. package/src/generators/profiles/spanish.ts +15 -0
  89. package/src/generators/profiles/spanishMexico.ts +176 -0
  90. package/src/generators/profiles/thai.ts +11 -0
  91. package/src/generators/profiles/turkish.ts +49 -7
  92. package/src/generators/profiles/types.ts +21 -5
  93. package/src/generators/profiles/ukrainian.ts +11 -0
  94. package/src/generators/profiles/vietnamese.ts +11 -0
  95. package/src/language-building-schema.ts +111 -0
  96. package/src/languages/_all.ts +5 -1
  97. package/src/languages/es-MX.ts +32 -0
  98. package/src/languages/he.ts +15 -0
  99. package/src/parser/pattern-matcher.ts +10 -1
  100. package/src/parser/semantic-parser.ts +3 -0
  101. package/src/patterns/add/ar.ts +3 -59
  102. package/src/patterns/add/index.ts +5 -1
  103. package/src/patterns/add/ja.ts +3 -81
  104. package/src/patterns/add/ko.ts +3 -62
  105. package/src/patterns/add/qu.ts +69 -0
  106. package/src/patterns/add/tr.ts +3 -59
  107. package/src/patterns/builders.ts +1 -0
  108. package/src/patterns/decrement/tr.ts +3 -36
  109. package/src/patterns/event-handler/ar.ts +3 -139
  110. package/src/patterns/event-handler/he.ts +15 -0
  111. package/src/patterns/event-handler/index.ts +5 -1
  112. package/src/patterns/event-handler/ja.ts +3 -106
  113. package/src/patterns/event-handler/ko.ts +3 -121
  114. package/src/patterns/event-handler/ms.ts +45 -20
  115. package/src/patterns/event-handler/tr.ts +3 -158
  116. package/src/patterns/get/ar.ts +3 -37
  117. package/src/patterns/get/ja.ts +3 -41
  118. package/src/patterns/get/ko.ts +3 -41
  119. package/src/patterns/grammar-transformed/ja.ts +3 -1701
  120. package/src/patterns/grammar-transformed/ko.ts +3 -1299
  121. package/src/patterns/grammar-transformed/tr.ts +3 -1055
  122. package/src/patterns/hide/ar.ts +3 -55
  123. package/src/patterns/hide/ja.ts +3 -57
  124. package/src/patterns/hide/ko.ts +3 -57
  125. package/src/patterns/hide/tr.ts +3 -53
  126. package/src/patterns/increment/tr.ts +3 -40
  127. package/src/patterns/put/ar.ts +3 -62
  128. package/src/patterns/put/ja.ts +3 -63
  129. package/src/patterns/put/ko.ts +3 -55
  130. package/src/patterns/put/tr.ts +3 -55
  131. package/src/patterns/remove/ar.ts +3 -59
  132. package/src/patterns/remove/index.ts +5 -1
  133. package/src/patterns/remove/ja.ts +3 -62
  134. package/src/patterns/remove/ko.ts +3 -66
  135. package/src/patterns/remove/qu.ts +69 -0
  136. package/src/patterns/remove/tr.ts +3 -66
  137. package/src/patterns/set/ar.ts +3 -72
  138. package/src/patterns/set/ja.ts +3 -74
  139. package/src/patterns/set/ko.ts +3 -73
  140. package/src/patterns/set/tr.ts +3 -95
  141. package/src/patterns/show/ar.ts +3 -55
  142. package/src/patterns/show/ja.ts +3 -57
  143. package/src/patterns/show/ko.ts +3 -61
  144. package/src/patterns/show/tr.ts +3 -53
  145. package/src/patterns/take/ar.ts +3 -39
  146. package/src/patterns/toggle/ar.ts +3 -49
  147. package/src/patterns/toggle/index.ts +5 -1
  148. package/src/patterns/toggle/ja.ts +3 -144
  149. package/src/patterns/toggle/ko.ts +3 -101
  150. package/src/patterns/toggle/qu.ts +90 -0
  151. package/src/patterns/toggle/tr.ts +3 -76
  152. package/src/registry.ts +179 -15
  153. package/src/tokenizers/arabic.ts +13 -46
  154. package/src/tokenizers/bengali.ts +2 -16
  155. package/src/tokenizers/he.ts +542 -0
  156. package/src/tokenizers/index.ts +1 -0
  157. package/src/tokenizers/japanese.ts +3 -1
  158. package/src/tokenizers/korean.ts +104 -48
  159. package/src/tokenizers/ms.ts +3 -0
  160. package/src/tokenizers/quechua.ts +101 -2
  161. package/src/tokenizers/turkish.ts +64 -69
  162. package/src/types.ts +13 -0
@@ -929,6 +929,7 @@ var QUECHUA_EXTRAS = [
929
929
  { native: "tayta", normalized: "parent" },
930
930
  // Events
931
931
  { native: "llikllay", normalized: "click" },
932
+ { native: "\xF1itiy", normalized: "click" },
932
933
  { native: "click", normalized: "click" },
933
934
  { native: "yaykuy", normalized: "input" },
934
935
  { native: "llave uray", normalized: "keydown" },
@@ -1002,8 +1003,15 @@ var QuechuaTokenizer = class extends BaseTokenizer {
1002
1003
  }
1003
1004
  const selectorToken = this.trySelector(input, pos);
1004
1005
  if (selectorToken) {
1005
- tokens.push(selectorToken);
1006
- pos = selectorToken.position.end;
1006
+ const selectorWithSuffix = this.splitSelectorSuffix(selectorToken);
1007
+ if (selectorWithSuffix.length === 2) {
1008
+ tokens.push(selectorWithSuffix[0]);
1009
+ tokens.push(selectorWithSuffix[1]);
1010
+ pos = selectorWithSuffix[1].position.end;
1011
+ } else {
1012
+ tokens.push(selectorToken);
1013
+ pos = selectorToken.position.end;
1014
+ }
1007
1015
  continue;
1008
1016
  }
1009
1017
  }
@@ -1046,6 +1054,12 @@ var QuechuaTokenizer = class extends BaseTokenizer {
1046
1054
  }
1047
1055
  }
1048
1056
  if (isQuechuaLetter(input[pos])) {
1057
+ const multiWordToken = this.tryMultiWordKeyword(input, pos);
1058
+ if (multiWordToken) {
1059
+ tokens.push(multiWordToken);
1060
+ pos = multiWordToken.position.end;
1061
+ continue;
1062
+ }
1049
1063
  const wordToken = this.extractWord(input, pos);
1050
1064
  if (wordToken) {
1051
1065
  tokens.push(wordToken);
@@ -1084,6 +1098,67 @@ var QuechuaTokenizer = class extends BaseTokenizer {
1084
1098
  }
1085
1099
  return null;
1086
1100
  }
1101
+ /**
1102
+ * Split a selector token if it has a Quechua suffix attached.
1103
+ * E.g., ".openta" -> [".open", "-ta"]
1104
+ * Returns array with 1 token (no suffix) or 2 tokens (selector + suffix)
1105
+ */
1106
+ splitSelectorSuffix(selectorToken) {
1107
+ const text = selectorToken.value;
1108
+ for (const suffix of SUFFIXES) {
1109
+ if (text.toLowerCase().endsWith(suffix)) {
1110
+ const baseEnd = text.length - suffix.length;
1111
+ const base = text.slice(0, baseEnd);
1112
+ const suffixPart = text.slice(baseEnd);
1113
+ const baseToken = createToken(
1114
+ base,
1115
+ "selector",
1116
+ createPosition(selectorToken.position.start, selectorToken.position.start + baseEnd)
1117
+ );
1118
+ const suffixToken = createToken(
1119
+ suffixPart,
1120
+ "particle",
1121
+ createPosition(selectorToken.position.start + baseEnd, selectorToken.position.end)
1122
+ );
1123
+ return [baseToken, suffixToken];
1124
+ }
1125
+ }
1126
+ return [selectorToken];
1127
+ }
1128
+ /**
1129
+ * Try to match multi-word keywords that should be treated as a single unit.
1130
+ * E.g., "mana qhawachiy" (not focus = blur)
1131
+ */
1132
+ tryMultiWordKeyword(input, pos) {
1133
+ const multiWordKeywords = [
1134
+ { pattern: "mana qhawachiy", normalized: "blur" },
1135
+ { pattern: "mana qhaway", normalized: "blur" },
1136
+ { pattern: "mana riqsisqa", normalized: "undefined" },
1137
+ { pattern: "mana waqtalla", normalized: "async" },
1138
+ { pattern: "\xF1awpaq kaq", normalized: "previous" },
1139
+ { pattern: "aswan qayllaqa", normalized: "closest" },
1140
+ { pattern: "llave uray", normalized: "keydown" },
1141
+ { pattern: "llave hawa", normalized: "keyup" },
1142
+ { pattern: "mausiri yayku", normalized: "mouseover" },
1143
+ { pattern: "mausiri lluqsi", normalized: "mouseout" },
1144
+ { pattern: "waranqa sikundu", normalized: "ms" }
1145
+ ];
1146
+ const inputLower = input.toLowerCase();
1147
+ for (const { pattern, normalized } of multiWordKeywords) {
1148
+ if (inputLower.slice(pos, pos + pattern.length) === pattern) {
1149
+ const endPos = pos + pattern.length;
1150
+ if (endPos >= input.length || isWhitespace(input[endPos]) || !isQuechuaLetter(input[endPos])) {
1151
+ return createToken(
1152
+ input.slice(pos, endPos),
1153
+ "keyword",
1154
+ createPosition(pos, endPos),
1155
+ normalized
1156
+ );
1157
+ }
1158
+ }
1159
+ }
1160
+ return null;
1161
+ }
1087
1162
  extractWord(input, startPos) {
1088
1163
  let pos = startPos;
1089
1164
  let word = "";