@keymanapp/developer-utils 18.0.41-alpha → 18.0.119-alpha

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 (238) hide show
  1. package/build/src/common-messages.d.ts +49 -0
  2. package/build/src/common-messages.d.ts.map +1 -0
  3. package/build/src/common-messages.js +35 -0
  4. package/build/src/common-messages.js.map +1 -0
  5. package/build/src/compiler-interfaces.d.ts +372 -0
  6. package/build/src/compiler-interfaces.d.ts.map +1 -0
  7. package/build/src/compiler-interfaces.js +382 -0
  8. package/build/src/compiler-interfaces.js.map +1 -0
  9. package/build/src/deps/xml2js/bom.d.ts +2 -0
  10. package/build/src/deps/xml2js/bom.d.ts.map +1 -0
  11. package/build/src/deps/xml2js/bom.js +14 -0
  12. package/build/src/deps/xml2js/bom.js.map +1 -0
  13. package/build/src/deps/xml2js/builder.d.ts +6 -0
  14. package/build/src/deps/xml2js/builder.d.ts.map +1 -0
  15. package/build/src/deps/xml2js/builder.js +133 -0
  16. package/build/src/deps/xml2js/builder.js.map +1 -0
  17. package/build/src/deps/xml2js/defaults.d.ts +69 -0
  18. package/build/src/deps/xml2js/defaults.d.ts.map +1 -0
  19. package/build/src/deps/xml2js/defaults.js +73 -0
  20. package/build/src/deps/xml2js/defaults.js.map +1 -0
  21. package/build/src/deps/xml2js/parser.d.ts +18 -0
  22. package/build/src/deps/xml2js/parser.d.ts.map +1 -0
  23. package/build/src/deps/xml2js/parser.js +395 -0
  24. package/build/src/deps/xml2js/parser.js.map +1 -0
  25. package/build/src/deps/xml2js/processors.d.ts +6 -0
  26. package/build/src/deps/xml2js/processors.d.ts.map +1 -0
  27. package/build/src/deps/xml2js/processors.js +28 -0
  28. package/build/src/deps/xml2js/processors.js.map +1 -0
  29. package/build/src/deps/xml2js/xml2js.d.ts +12 -0
  30. package/build/src/deps/xml2js/xml2js.d.ts.map +1 -0
  31. package/build/src/deps/xml2js/xml2js.js +26 -0
  32. package/build/src/deps/xml2js/xml2js.js.map +1 -0
  33. package/build/src/index.d.ts +24 -0
  34. package/build/src/index.d.ts.map +1 -0
  35. package/build/src/index.js +26 -0
  36. package/build/src/index.js.map +1 -0
  37. package/build/src/is-valid-email.d.ts +2 -0
  38. package/build/src/is-valid-email.d.ts.map +1 -0
  39. package/build/src/is-valid-email.js +20 -0
  40. package/build/src/is-valid-email.js.map +1 -0
  41. package/build/src/types/import/45/cldr_info.json +5 -0
  42. package/build/src/types/import/45/keys-Latn-implied.xml +80 -0
  43. package/build/src/types/import/45/keys-Zyyy-currency.xml +15 -0
  44. package/build/src/types/import/45/keys-Zyyy-punctuation.xml +45 -0
  45. package/build/src/types/import/45/scanCodes-implied.xml +53 -0
  46. package/build/src/types/keyman-touch-layout/keyman-touch-layout-file-reader.d.ts +7 -0
  47. package/build/src/types/keyman-touch-layout/keyman-touch-layout-file-reader.d.ts.map +1 -0
  48. package/build/src/types/keyman-touch-layout/keyman-touch-layout-file-reader.js +74 -0
  49. package/build/src/types/keyman-touch-layout/keyman-touch-layout-file-reader.js.map +1 -0
  50. package/build/src/types/keyman-touch-layout/keyman-touch-layout-file-writer.d.ts +30 -0
  51. package/build/src/types/keyman-touch-layout/keyman-touch-layout-file-writer.d.ts.map +1 -0
  52. package/build/src/types/keyman-touch-layout/keyman-touch-layout-file-writer.js +123 -0
  53. package/build/src/types/keyman-touch-layout/keyman-touch-layout-file-writer.js.map +1 -0
  54. package/build/src/types/kmx/kmx-builder.d.ts +42 -0
  55. package/build/src/types/kmx/kmx-builder.d.ts.map +1 -0
  56. package/build/src/types/kmx/kmx-builder.js +192 -0
  57. package/build/src/types/kmx/kmx-builder.js.map +1 -0
  58. package/build/src/types/kmx/kmx-plus-builder/build-disp.d.ts +20 -0
  59. package/build/src/types/kmx/kmx-plus-builder/build-disp.d.ts.map +1 -0
  60. package/build/src/types/kmx/kmx-plus-builder/build-disp.js +29 -0
  61. package/build/src/types/kmx/kmx-plus-builder/build-disp.js.map +1 -0
  62. package/build/src/types/kmx/kmx-plus-builder/build-elem.d.ts +29 -0
  63. package/build/src/types/kmx/kmx-plus-builder/build-elem.d.ts.map +1 -0
  64. package/build/src/types/kmx/kmx-plus-builder/build-elem.js +91 -0
  65. package/build/src/types/kmx/kmx-plus-builder/build-elem.js.map +1 -0
  66. package/build/src/types/kmx/kmx-plus-builder/build-keys.d.ts +59 -0
  67. package/build/src/types/kmx/kmx-plus-builder/build-keys.d.ts.map +1 -0
  68. package/build/src/types/kmx/kmx-plus-builder/build-keys.js +110 -0
  69. package/build/src/types/kmx/kmx-plus-builder/build-keys.js.map +1 -0
  70. package/build/src/types/kmx/kmx-plus-builder/build-layr.d.ts +57 -0
  71. package/build/src/types/kmx/kmx-plus-builder/build-layr.d.ts.map +1 -0
  72. package/build/src/types/kmx/kmx-plus-builder/build-layr.js +104 -0
  73. package/build/src/types/kmx/kmx-plus-builder/build-layr.js.map +1 -0
  74. package/build/src/types/kmx/kmx-plus-builder/build-list.d.ts +38 -0
  75. package/build/src/types/kmx/kmx-plus-builder/build-list.d.ts.map +1 -0
  76. package/build/src/types/kmx/kmx-plus-builder/build-list.js +69 -0
  77. package/build/src/types/kmx/kmx-plus-builder/build-list.js.map +1 -0
  78. package/build/src/types/kmx/kmx-plus-builder/build-loca.d.ts +13 -0
  79. package/build/src/types/kmx/kmx-plus-builder/build-loca.d.ts.map +1 -0
  80. package/build/src/types/kmx/kmx-plus-builder/build-loca.js +23 -0
  81. package/build/src/types/kmx/kmx-plus-builder/build-loca.js.map +1 -0
  82. package/build/src/types/kmx/kmx-plus-builder/build-meta.d.ts +18 -0
  83. package/build/src/types/kmx/kmx-plus-builder/build-meta.d.ts.map +1 -0
  84. package/build/src/types/kmx/kmx-plus-builder/build-meta.js +24 -0
  85. package/build/src/types/kmx/kmx-plus-builder/build-meta.js.map +1 -0
  86. package/build/src/types/kmx/kmx-plus-builder/build-sect.d.ts +16 -0
  87. package/build/src/types/kmx/kmx-plus-builder/build-sect.d.ts.map +1 -0
  88. package/build/src/types/kmx/kmx-plus-builder/build-sect.js +17 -0
  89. package/build/src/types/kmx/kmx-plus-builder/build-sect.js.map +1 -0
  90. package/build/src/types/kmx/kmx-plus-builder/build-strs.d.ts +25 -0
  91. package/build/src/types/kmx/kmx-plus-builder/build-strs.d.ts.map +1 -0
  92. package/build/src/types/kmx/kmx-plus-builder/build-strs.js +49 -0
  93. package/build/src/types/kmx/kmx-plus-builder/build-strs.js.map +1 -0
  94. package/build/src/types/kmx/kmx-plus-builder/build-tran.d.ts +35 -0
  95. package/build/src/types/kmx/kmx-plus-builder/build-tran.d.ts.map +1 -0
  96. package/build/src/types/kmx/kmx-plus-builder/build-tran.js +71 -0
  97. package/build/src/types/kmx/kmx-plus-builder/build-tran.js.map +1 -0
  98. package/build/src/types/kmx/kmx-plus-builder/build-uset.d.ts +34 -0
  99. package/build/src/types/kmx/kmx-plus-builder/build-uset.d.ts.map +1 -0
  100. package/build/src/types/kmx/kmx-plus-builder/build-uset.js +63 -0
  101. package/build/src/types/kmx/kmx-plus-builder/build-uset.js.map +1 -0
  102. package/build/src/types/kmx/kmx-plus-builder/build-vars.d.ts +23 -0
  103. package/build/src/types/kmx/kmx-plus-builder/build-vars.d.ts.map +1 -0
  104. package/build/src/types/kmx/kmx-plus-builder/build-vars.js +50 -0
  105. package/build/src/types/kmx/kmx-plus-builder/build-vars.js.map +1 -0
  106. package/build/src/types/kmx/kmx-plus-builder/builder-section.d.ts +10 -0
  107. package/build/src/types/kmx/kmx-plus-builder/builder-section.d.ts.map +1 -0
  108. package/build/src/types/kmx/kmx-plus-builder/builder-section.js +6 -0
  109. package/build/src/types/kmx/kmx-plus-builder/builder-section.js.map +1 -0
  110. package/build/src/types/kmx/kmx-plus-builder/kmx-plus-builder.d.ts +44 -0
  111. package/build/src/types/kmx/kmx-plus-builder/kmx-plus-builder.d.ts.map +1 -0
  112. package/build/src/types/kmx/kmx-plus-builder/kmx-plus-builder.js +139 -0
  113. package/build/src/types/kmx/kmx-plus-builder/kmx-plus-builder.js.map +1 -0
  114. package/build/src/types/kpj/keyman-developer-project.d.ts +79 -0
  115. package/build/src/types/kpj/keyman-developer-project.d.ts.map +1 -0
  116. package/build/src/types/kpj/keyman-developer-project.js +197 -0
  117. package/build/src/types/kpj/keyman-developer-project.js.map +1 -0
  118. package/build/src/types/kpj/kpj-file-reader.d.ts +19 -0
  119. package/build/src/types/kpj/kpj-file-reader.d.ts.map +1 -0
  120. package/build/src/types/kpj/kpj-file-reader.js +121 -0
  121. package/build/src/types/kpj/kpj-file-reader.js.map +1 -0
  122. package/build/src/types/kpj/kpj-file.d.ts +40 -0
  123. package/build/src/types/kpj/kpj-file.d.ts.map +1 -0
  124. package/build/src/types/kpj/kpj-file.js +14 -0
  125. package/build/src/types/kpj/kpj-file.js.map +1 -0
  126. package/build/src/types/kps/kps-file.d.ts +176 -0
  127. package/build/src/types/kps/kps-file.d.ts.map +1 -0
  128. package/build/src/types/kps/kps-file.js +19 -0
  129. package/build/src/types/kps/kps-file.js.map +1 -0
  130. package/build/src/types/kvks/kvks-file-reader.d.ts +26 -0
  131. package/build/src/types/kvks/kvks-file-reader.d.ts.map +1 -0
  132. package/build/src/types/kvks/kvks-file-reader.js +181 -0
  133. package/build/src/types/kvks/kvks-file-reader.js.map +1 -0
  134. package/build/src/types/kvks/kvks-file-writer.d.ts +9 -0
  135. package/build/src/types/kvks/kvks-file-writer.d.ts.map +1 -0
  136. package/build/src/types/kvks/kvks-file-writer.js +109 -0
  137. package/build/src/types/kvks/kvks-file-writer.js.map +1 -0
  138. package/build/src/types/kvks/kvks-file.d.ts +44 -0
  139. package/build/src/types/kvks/kvks-file.d.ts.map +1 -0
  140. package/build/src/types/kvks/kvks-file.js +13 -0
  141. package/build/src/types/kvks/kvks-file.js.map +1 -0
  142. package/build/src/types/ldml-keyboard/ldml-keyboard-testdata-xml.d.ts +61 -0
  143. package/build/src/types/ldml-keyboard/ldml-keyboard-testdata-xml.d.ts.map +1 -0
  144. package/build/src/types/ldml-keyboard/ldml-keyboard-testdata-xml.js +23 -0
  145. package/build/src/types/ldml-keyboard/ldml-keyboard-testdata-xml.js.map +1 -0
  146. package/build/src/types/ldml-keyboard/ldml-keyboard-xml-reader.d.ts +96 -0
  147. package/build/src/types/ldml-keyboard/ldml-keyboard-xml-reader.d.ts.map +1 -0
  148. package/build/src/types/ldml-keyboard/ldml-keyboard-xml-reader.js +430 -0
  149. package/build/src/types/ldml-keyboard/ldml-keyboard-xml-reader.js.map +1 -0
  150. package/build/src/types/ldml-keyboard/ldml-keyboard-xml.d.ts +171 -0
  151. package/build/src/types/ldml-keyboard/ldml-keyboard-xml.d.ts.map +1 -0
  152. package/build/src/types/ldml-keyboard/ldml-keyboard-xml.js +59 -0
  153. package/build/src/types/ldml-keyboard/ldml-keyboard-xml.js.map +1 -0
  154. package/build/src/{KeymanSentry.d.ts → utils/KeymanSentry.d.ts} +11 -11
  155. package/build/src/utils/KeymanSentry.d.ts.map +1 -0
  156. package/build/src/{KeymanSentry.js → utils/KeymanSentry.js} +75 -75
  157. package/build/src/utils/KeymanSentry.js.map +1 -0
  158. package/build/src/{keyman-urls.d.ts → utils/keyman-urls.d.ts} +14 -14
  159. package/build/src/utils/keyman-urls.d.ts.map +1 -0
  160. package/build/src/{keyman-urls.js → utils/keyman-urls.js} +20 -20
  161. package/build/src/utils/keyman-urls.js.map +1 -0
  162. package/build/src/{markdown.d.ts → utils/markdown.d.ts} +1 -1
  163. package/build/src/utils/markdown.d.ts.map +1 -0
  164. package/build/src/{markdown.js → utils/markdown.js} +22 -22
  165. package/build/src/utils/markdown.js.map +1 -0
  166. package/build/src/{options.d.ts → utils/options.d.ts} +43 -43
  167. package/build/src/utils/options.d.ts.map +1 -0
  168. package/build/src/{options.js → utils/options.js} +57 -57
  169. package/build/src/utils/options.js.map +1 -0
  170. package/build/src/{validate-mit-license.d.ts → utils/validate-mit-license.d.ts} +6 -6
  171. package/build/src/utils/validate-mit-license.d.ts.map +1 -0
  172. package/build/src/{validate-mit-license.js → utils/validate-mit-license.js} +50 -50
  173. package/build/src/utils/validate-mit-license.js.map +1 -0
  174. package/build/test/helpers/index.d.ts +13 -0
  175. package/build/test/helpers/index.d.ts.map +1 -0
  176. package/build/test/helpers/index.js +42 -0
  177. package/build/test/helpers/index.js.map +1 -0
  178. package/build/test/helpers/reader-callback-test.d.ts +73 -0
  179. package/build/test/helpers/reader-callback-test.d.ts.map +1 -0
  180. package/build/test/helpers/reader-callback-test.js +108 -0
  181. package/build/test/helpers/reader-callback-test.js.map +1 -0
  182. package/build/test/keyman-touch-layout/test-keyman-touch-layout-file-reader.d.ts +2 -0
  183. package/build/test/keyman-touch-layout/test-keyman-touch-layout-file-reader.d.ts.map +1 -0
  184. package/build/test/keyman-touch-layout/test-keyman-touch-layout-file-reader.js +64 -0
  185. package/build/test/keyman-touch-layout/test-keyman-touch-layout-file-reader.js.map +1 -0
  186. package/build/test/keyman-touch-layout/test-keyman-touch-layout-round-trip.d.ts +2 -0
  187. package/build/test/keyman-touch-layout/test-keyman-touch-layout-round-trip.d.ts.map +1 -0
  188. package/build/test/keyman-touch-layout/test-keyman-touch-layout-round-trip.js +34 -0
  189. package/build/test/keyman-touch-layout/test-keyman-touch-layout-round-trip.js.map +1 -0
  190. package/build/test/kmx/test-ldml-keyboard-testdata-reader.d.ts +2 -0
  191. package/build/test/kmx/test-ldml-keyboard-testdata-reader.d.ts.map +1 -0
  192. package/build/test/kmx/test-ldml-keyboard-testdata-reader.js +54 -0
  193. package/build/test/kmx/test-ldml-keyboard-testdata-reader.js.map +1 -0
  194. package/build/test/kmx/test-ldml-keyboard-xml-reader.d.ts +2 -0
  195. package/build/test/kmx/test-ldml-keyboard-xml-reader.d.ts.map +1 -0
  196. package/build/test/kmx/test-ldml-keyboard-xml-reader.js +209 -0
  197. package/build/test/kmx/test-ldml-keyboard-xml-reader.js.map +1 -0
  198. package/build/test/kpj/test-kpj-file-reader.d.ts +2 -0
  199. package/build/test/kpj/test-kpj-file-reader.d.ts.map +1 -0
  200. package/build/test/kpj/test-kpj-file-reader.js +141 -0
  201. package/build/test/kpj/test-kpj-file-reader.js.map +1 -0
  202. package/build/test/kvks/test-kvk-round-trip.d.ts +2 -0
  203. package/build/test/kvks/test-kvk-round-trip.d.ts.map +1 -0
  204. package/build/test/kvks/test-kvk-round-trip.js +108 -0
  205. package/build/test/kvks/test-kvk-round-trip.js.map +1 -0
  206. package/build/test/kvks/test-kvk-utils.d.ts +6 -0
  207. package/build/test/kvks/test-kvk-utils.d.ts.map +1 -0
  208. package/build/test/kvks/test-kvk-utils.js +42 -0
  209. package/build/test/kvks/test-kvk-utils.js.map +1 -0
  210. package/build/test/kvks/test-kvks-file.d.ts +2 -0
  211. package/build/test/kvks/test-kvks-file.d.ts.map +1 -0
  212. package/build/test/kvks/test-kvks-file.js +59 -0
  213. package/build/test/kvks/test-kvks-file.js.map +1 -0
  214. package/build/test/test-is-valid-email.d.ts +2 -0
  215. package/build/test/test-is-valid-email.d.ts.map +1 -0
  216. package/build/test/test-is-valid-email.js +36 -0
  217. package/build/test/test-is-valid-email.js.map +1 -0
  218. package/build/test/test-license.d.ts +2 -0
  219. package/build/test/test-license.d.ts.map +1 -0
  220. package/build/test/test-license.js +24 -0
  221. package/build/test/test-license.js.map +1 -0
  222. package/build/test/tsconfig.tsbuildinfo +1 -0
  223. package/build/tsconfig.tsbuildinfo +1 -1
  224. package/package.json +15 -6
  225. package/build/index.d.ts +0 -6
  226. package/build/index.d.ts.map +0 -1
  227. package/build/index.js +0 -9
  228. package/build/index.js.map +0 -1
  229. package/build/src/KeymanSentry.d.ts.map +0 -1
  230. package/build/src/KeymanSentry.js.map +0 -1
  231. package/build/src/keyman-urls.d.ts.map +0 -1
  232. package/build/src/keyman-urls.js.map +0 -1
  233. package/build/src/markdown.d.ts.map +0 -1
  234. package/build/src/markdown.js.map +0 -1
  235. package/build/src/options.d.ts.map +0 -1
  236. package/build/src/options.js.map +0 -1
  237. package/build/src/validate-mit-license.d.ts.map +0 -1
  238. package/build/src/validate-mit-license.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kvks-file-reader.d.ts","sourceRoot":"","sources":["../../../../src/types/kvks/kvks-file-reader.ts"],"names":[],"mappings":"AAEA,OAAO,aAAa,MAAM,gBAAgB,CAAC;AAI3C,OAAO,EAAE,cAAc,IAAI,EAAE,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,cAAc,GAAG,EAAE,CAAC,cAAc,CAAC;AAK1C,OAAO,wBAAwB,GAAG,EAAE,CAAC,wBAAwB,CAAC;AAK9D,MAAM,CAAC,OAAO,OAAO,cAAc;IAC1B,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,aAAa;IAoC5C,OAAO,CAAC,YAAY;IAMpB;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IA0BlB,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAMrC,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,cAAc;IA+DhF,OAAO,CAAC,aAAa;IASrB;;;;OAIG;IACH,OAAO,CAAC,SAAS;IAYV,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,wBAAwB;CAWpE"}
@@ -0,0 +1,181 @@
1
+
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="a36a3705-cc3f-54a2-82ed-41714cc7065b")}catch(e){}}();
3
+ import { SchemaValidators as SV, KvkFile, util, Constants } from '@keymanapp/common-types';
4
+ import { xml2js } from '../../index.js';
5
+ const SchemaValidators = SV.default;
6
+ var boxXmlArray = util.boxXmlArray;
7
+ var USVirtualKeyCodes = Constants.USVirtualKeyCodes;
8
+ import { VisualKeyboard as VK } from '@keymanapp/common-types';
9
+ var DEFAULT_KVK_FONT = VK.DEFAULT_KVK_FONT;
10
+ var VisualKeyboardLegalShiftStates = VK.VisualKeyboardLegalShiftStates;
11
+ var BUILDER_KVK_HEADER_VERSION = KvkFile.BUILDER_KVK_HEADER_VERSION;
12
+ var KVK_HEADER_IDENTIFIER_BYTES = KvkFile.KVK_HEADER_IDENTIFIER_BYTES;
13
+ export default class KVKSFileReader {
14
+ read(file) {
15
+ let source;
16
+ const parser = new xml2js.Parser({
17
+ explicitArray: false,
18
+ mergeAttrs: false,
19
+ includeWhiteChars: true,
20
+ normalize: false,
21
+ emptyTag: {}
22
+ // Why "as any"? xml2js is broken:
23
+ // https://github.com/Leonidas-from-XIV/node-xml2js/issues/648 means
24
+ // that an old version of `emptyTag` is used which doesn't support
25
+ // functions, but DefinitelyTyped is requiring use of function or a
26
+ // string. See also notes at
27
+ // https://github.com/DefinitelyTyped/DefinitelyTyped/pull/59259#issuecomment-1254405470
28
+ // An alternative fix would be to pull xml2js directly from github
29
+ // rather than using the version tagged on npmjs.com.
30
+ });
31
+ parser.parseString(file, (e, r) => {
32
+ if (e) {
33
+ if (file.byteLength > 4 && file.subarray(0, 3).every((v, i) => v == KVK_HEADER_IDENTIFIER_BYTES[i])) {
34
+ throw new Error('File appears to be a binary .kvk file', { cause: e });
35
+ }
36
+ throw e;
37
+ }
38
+ ;
39
+ source = r;
40
+ });
41
+ if (source) {
42
+ source = this.boxArrays(source);
43
+ this.cleanupFlags(source);
44
+ this.cleanupUnderscore('visualkeyboard', source.visualkeyboard);
45
+ }
46
+ return source;
47
+ }
48
+ cleanupFlags(source) {
49
+ if (source.visualkeyboard?.header?.flags === '') {
50
+ source.visualkeyboard.header.flags = {};
51
+ }
52
+ }
53
+ /**
54
+ * The only element that allows spaces is <key>. Remove
55
+ * all other empty whitespace-only values.
56
+ * @param root
57
+ * @param source
58
+ */
59
+ cleanupUnderscore(root, source) {
60
+ if (root != 'key') {
61
+ if (source?.['_']?.trim() === '') {
62
+ delete source['_'];
63
+ }
64
+ }
65
+ else {
66
+ // If key text is pure whitespace, replace with empty string,
67
+ // which matches kmcomp reader
68
+ if (source?.['_']?.match(/^( +)$/)) {
69
+ source['_'] = '';
70
+ }
71
+ }
72
+ for (const key of Object.keys(source)) {
73
+ if (Array.isArray(source[key])) {
74
+ for (const item of source[key]) {
75
+ if (typeof (item) === 'object') {
76
+ this.cleanupUnderscore(key, item);
77
+ }
78
+ }
79
+ }
80
+ else if (typeof source[key] === 'object') {
81
+ this.cleanupUnderscore(key, source[key]);
82
+ }
83
+ }
84
+ }
85
+ validate(source) {
86
+ if (!SchemaValidators.kvks(source)) {
87
+ throw new Error(JSON.stringify(SchemaValidators.kvks.errors));
88
+ }
89
+ }
90
+ transform(source, invalidVkeys) {
91
+ // NOTE: at this point, the xml should have been validated
92
+ // and matched the schema result so we can assume properties exist
93
+ const result = {
94
+ header: {
95
+ version: BUILDER_KVK_HEADER_VERSION,
96
+ flags: 0,
97
+ ansiFont: { ...DEFAULT_KVK_FONT },
98
+ unicodeFont: { ...DEFAULT_KVK_FONT },
99
+ associatedKeyboard: source.visualkeyboard?.header?.kbdname,
100
+ underlyingLayout: source.visualkeyboard?.header?.layout,
101
+ },
102
+ keys: []
103
+ };
104
+ if (source.visualkeyboard?.header?.flags?.displayunderlying !== undefined) {
105
+ result.header.flags |= 2 /* VisualKeyboardHeaderFlags.kvkhDisplayUnderlying */;
106
+ }
107
+ if (source.visualkeyboard?.header?.flags?.key102 !== undefined) {
108
+ result.header.flags |= 1 /* VisualKeyboardHeaderFlags.kvkh102 */;
109
+ }
110
+ if (source.visualkeyboard?.header?.flags?.usealtgr !== undefined) {
111
+ result.header.flags |= 8 /* VisualKeyboardHeaderFlags.kvkhAltGr */;
112
+ }
113
+ if (source.visualkeyboard?.header?.flags?.useunderlying !== undefined) {
114
+ result.header.flags |= 4 /* VisualKeyboardHeaderFlags.kvkhUseUnderlying */;
115
+ }
116
+ for (const encoding of source.visualkeyboard.encoding) {
117
+ const isUnicode = (encoding.$?.name == 'unicode'), font = isUnicode ? result.header.unicodeFont : result.header.ansiFont;
118
+ font.name = encoding.$?.fontname ?? DEFAULT_KVK_FONT.name;
119
+ font.size = parseInt(encoding.$?.fontsize ?? DEFAULT_KVK_FONT.size.toString(), 10);
120
+ for (const layer of encoding.layer) {
121
+ const shift = this.kvksShiftToKvkShift(layer.$?.shift);
122
+ for (const sourceKey of layer.key) {
123
+ const vkey = USVirtualKeyCodes[sourceKey.$?.vkey];
124
+ if (!vkey) {
125
+ if (typeof invalidVkeys !== 'undefined') {
126
+ invalidVkeys.push(sourceKey.$?.vkey);
127
+ }
128
+ continue;
129
+ }
130
+ const key = {
131
+ flags: (isUnicode ? 2 /* VisualKeyboardKeyFlags.kvkkUnicode */ : 0) |
132
+ (sourceKey.bitmap ? 1 /* VisualKeyboardKeyFlags.kvkkBitmap */ : 0),
133
+ shift: shift,
134
+ text: sourceKey.bitmap ? '' : (sourceKey._ ?? ''),
135
+ vkey: vkey
136
+ };
137
+ if (sourceKey.bitmap) {
138
+ key.bitmap = this.base64ToArray(sourceKey.bitmap);
139
+ }
140
+ result.keys.push(key);
141
+ }
142
+ }
143
+ }
144
+ return result;
145
+ }
146
+ base64ToArray(source) {
147
+ const binary = atob(source);
148
+ const bytes = new Uint8Array(binary.length);
149
+ for (let i = 0; i < binary.length; i++) {
150
+ bytes[i] = binary.charCodeAt(i);
151
+ }
152
+ return bytes;
153
+ }
154
+ /**
155
+ * xml2js will not place single-entry objects into arrays.
156
+ * Easiest way to fix this is to box them ourselves as needed
157
+ * @param source KVKSourceFile
158
+ */
159
+ boxArrays(source) {
160
+ boxXmlArray(source.visualkeyboard, 'encoding');
161
+ for (const encoding of source.visualkeyboard.encoding) {
162
+ boxXmlArray(encoding, 'layer');
163
+ for (const layer of encoding.layer) {
164
+ boxXmlArray(layer, 'key');
165
+ }
166
+ }
167
+ return source;
168
+ }
169
+ kvksShiftToKvkShift(shift) {
170
+ shift = shift.toUpperCase();
171
+ // TODO-LDML(lowpri): make a map of this?
172
+ for (const state of VisualKeyboardLegalShiftStates) {
173
+ if (state.name == shift) {
174
+ return state.shift;
175
+ }
176
+ }
177
+ return 0;
178
+ }
179
+ }
180
+ //# sourceMappingURL=kvks-file-reader.js.map
181
+ //# debugId=a36a3705-cc3f-54a2-82ed-41714cc7065b
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kvks-file-reader.js","sources":["../../../../src/types/kvks/kvks-file-reader.ts"],"sourceRoot":"","names":[],"mappings":"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","debug_id":"a36a3705-cc3f-54a2-82ed-41714cc7065b"}
@@ -0,0 +1,9 @@
1
+ import { VisualKeyboard as VK } from '@keymanapp/common-types';
2
+ import VisualKeyboard = VK.VisualKeyboard;
3
+ import VisualKeyboardShiftState = VK.VisualKeyboardShiftState;
4
+ export default class KVKSFileWriter {
5
+ write(vk: VisualKeyboard): string;
6
+ private arrayToBase64;
7
+ kvkShiftToKvksShift(shift: VisualKeyboardShiftState): string;
8
+ }
9
+ //# sourceMappingURL=kvks-file-writer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kvks-file-writer.d.ts","sourceRoot":"","sources":["../../../../src/types/kvks/kvks-file-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,IAAI,EAAE,EAAa,MAAM,yBAAyB,CAAC;AAK1E,OAAO,cAAc,GAAG,EAAE,CAAC,cAAc,CAAC;AAI1C,OAAO,wBAAwB,GAAG,EAAE,CAAC,wBAAwB,CAAC;AAE9D,MAAM,CAAC,OAAO,OAAO,cAAc;IAC1B,KAAK,CAAC,EAAE,EAAE,cAAc,GAAG,MAAM;IAmGxC,OAAO,CAAC,aAAa;IAMd,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,GAAG,MAAM;CASpE"}
@@ -0,0 +1,109 @@
1
+
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b78ba4d2-4521-5e18-b43f-e243b4a347bc")}catch(e){}}();
3
+ import { VisualKeyboard as VK, Constants } from '@keymanapp/common-types';
4
+ import { xml2js } from '../../index.js';
5
+ var USVirtualKeyCodes = Constants.USVirtualKeyCodes;
6
+ var VisualKeyboardLegalShiftStates = VK.VisualKeyboardLegalShiftStates;
7
+ export default class KVKSFileWriter {
8
+ write(vk) {
9
+ const builder = new xml2js.Builder({
10
+ allowSurrogateChars: true,
11
+ attrkey: '$',
12
+ charkey: '_',
13
+ xmldec: {
14
+ version: '1.0',
15
+ encoding: 'UTF-8',
16
+ standalone: true
17
+ }
18
+ });
19
+ const flags = {};
20
+ if (vk.header.flags & 2 /* VisualKeyboardHeaderFlags.kvkhDisplayUnderlying */) {
21
+ flags.displayunderlying = '';
22
+ }
23
+ if (vk.header.flags & 1 /* VisualKeyboardHeaderFlags.kvkh102 */) {
24
+ flags.key102 = '';
25
+ }
26
+ if (vk.header.flags & 8 /* VisualKeyboardHeaderFlags.kvkhAltGr */) {
27
+ flags.usealtgr = '';
28
+ }
29
+ if (vk.header.flags & 4 /* VisualKeyboardHeaderFlags.kvkhUseUnderlying */) {
30
+ flags.useunderlying = '';
31
+ }
32
+ const kvks = {
33
+ visualkeyboard: {
34
+ header: {
35
+ version: '10.0',
36
+ kbdname: vk.header.associatedKeyboard,
37
+ flags: flags,
38
+ },
39
+ encoding: []
40
+ }
41
+ };
42
+ if (vk.header.underlyingLayout)
43
+ kvks.visualkeyboard.header.layout = vk.header.underlyingLayout;
44
+ const encodings = { ansi: null, unicode: null };
45
+ for (const key of vk.keys) {
46
+ const encoding = key.flags & 2 /* VisualKeyboardKeyFlags.kvkkUnicode */ ? 'unicode' : 'ansi';
47
+ const shift = this.kvkShiftToKvksShift(key.shift);
48
+ if (!encodings[encoding]) {
49
+ encodings[encoding] = {
50
+ o: {
51
+ layer: [],
52
+ $: { name: encoding,
53
+ fontname: encoding == 'ansi' ? vk.header.ansiFont.name : vk.header.unicodeFont.name,
54
+ fontsize: (encoding == 'ansi' ? vk.header.ansiFont.size : vk.header.unicodeFont.size).toString(),
55
+ },
56
+ },
57
+ l: {}
58
+ };
59
+ kvks.visualkeyboard.encoding.push(encodings[encoding].o);
60
+ }
61
+ const e = encodings[encoding];
62
+ if (!e.l[shift]) {
63
+ e.l[shift] = {
64
+ key: [],
65
+ $: { shift: shift },
66
+ };
67
+ e.o.layer.push(e.l[shift]);
68
+ }
69
+ const l = e.l[shift];
70
+ // TODO-LDML: map
71
+ let vkeyName = '';
72
+ for (const vkey of Object.keys(USVirtualKeyCodes)) {
73
+ if (USVirtualKeyCodes[vkey] == key.vkey) {
74
+ vkeyName = vkey;
75
+ break;
76
+ }
77
+ }
78
+ if (vkeyName == '') {
79
+ //TODO-LDML: warn
80
+ continue;
81
+ }
82
+ const k = {
83
+ $: { vkey: vkeyName },
84
+ _: key.text,
85
+ };
86
+ if (key.bitmap) {
87
+ k.bitmap = this.arrayToBase64(key.bitmap);
88
+ }
89
+ l.key.push(k);
90
+ }
91
+ const result = builder.buildObject(kvks);
92
+ return result; //Uint8Array.from(result);
93
+ }
94
+ arrayToBase64(source) {
95
+ const ascii = String.fromCharCode(...source);
96
+ return btoa(ascii);
97
+ }
98
+ kvkShiftToKvksShift(shift) {
99
+ // TODO-LDML(lowpri): make a map of this?
100
+ for (const state of VisualKeyboardLegalShiftStates) {
101
+ if (state.shift == shift) {
102
+ return state.name;
103
+ }
104
+ }
105
+ return '';
106
+ }
107
+ }
108
+ //# sourceMappingURL=kvks-file-writer.js.map
109
+ //# debugId=b78ba4d2-4521-5e18-b43f-e243b4a347bc
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kvks-file-writer.js","sources":["../../../../src/types/kvks/kvks-file-writer.ts"],"sourceRoot":"","names":[],"mappings":"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","debug_id":"b78ba4d2-4521-5e18-b43f-e243b4a347bc"}
@@ -0,0 +1,44 @@
1
+ export default interface KVKSourceFile {
2
+ /**
3
+ * <visualkeyboard> -- the root element.
4
+ */
5
+ visualkeyboard: KVKSVisualKeyboard;
6
+ }
7
+ export interface KVKSVisualKeyboard {
8
+ header?: KVKSHeader;
9
+ encoding?: KVKSEncoding[];
10
+ }
11
+ export interface KVKSHeader {
12
+ version?: string;
13
+ kbdname?: string;
14
+ flags?: KVKSFlags;
15
+ layout?: string;
16
+ }
17
+ export interface KVKSFlags {
18
+ key102?: string;
19
+ displayunderlying?: string;
20
+ useunderlying?: string;
21
+ usealtgr?: string;
22
+ }
23
+ export interface KVKSEncoding {
24
+ $?: {
25
+ name?: string;
26
+ fontname?: string;
27
+ fontsize?: string;
28
+ };
29
+ layer?: KVKSLayer[];
30
+ }
31
+ export interface KVKSLayer {
32
+ $?: {
33
+ shift?: string;
34
+ };
35
+ key?: KVKSKey[];
36
+ }
37
+ export interface KVKSKey {
38
+ $?: {
39
+ vkey?: string;
40
+ };
41
+ bitmap?: string;
42
+ _?: string;
43
+ }
44
+ //# sourceMappingURL=kvks-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kvks-file.d.ts","sourceRoot":"","sources":["../../../../src/types/kvks/kvks-file.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,OAAO,WAAW,aAAa;IACpC;;OAEG;IACH,cAAc,EAAE,kBAAkB,CAAC;CACpC;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,CAAC,CAAC,EAAE;QACF,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,CAAC,CAAC,EAAE;QACF,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,OAAO;IACtB,CAAC,CAAC,EAAE;QACF,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAA;IACD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ"}
@@ -0,0 +1,13 @@
1
+ // .kvks xml format
2
+ // See VisualKeyboardLoaderXML.pas, not the same as VisualKeyboardImportXML.pas!
3
+
4
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="bf0eba86-31b4-576a-b860-f50e0539434f")}catch(e){}}();
5
+ ;
6
+ ;
7
+ ;
8
+ ;
9
+ ;
10
+ ;
11
+ export {};
12
+ //# sourceMappingURL=kvks-file.js.map
13
+ //# debugId=bf0eba86-31b4-576a-b860-f50e0539434f
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kvks-file.js","sources":["../../../../src/types/kvks/kvks-file.ts"],"sourceRoot":"","names":[],"mappings":"AAAA,mBAAmB;AACnB,gFAAgF;;;AAY/E,CAAC;AAOD,CAAC;AAOD,CAAC;AASD,CAAC;AAOD,CAAC;AAQD,CAAC","debug_id":"bf0eba86-31b4-576a-b860-f50e0539434f"}
@@ -0,0 +1,61 @@
1
+ export interface LDMLKeyboardTestDataXMLSourceFile {
2
+ /**
3
+ * <keyboardTest> -- the root element.
4
+ */
5
+ keyboardTest3: LKTKeyboardTest;
6
+ }
7
+ export interface LKTKeyboardTest {
8
+ conformsTo?: string;
9
+ info?: LKTInfo;
10
+ repertoire?: LKTRepertoire[];
11
+ tests?: LKTTests[];
12
+ }
13
+ export interface LKTInfo {
14
+ author?: string;
15
+ keyboard?: string;
16
+ name?: string;
17
+ }
18
+ export interface LKTRepertoire {
19
+ name?: string;
20
+ chars?: string;
21
+ type?: string;
22
+ }
23
+ export interface LKTTests {
24
+ name?: string;
25
+ test?: LKTTest[];
26
+ }
27
+ export interface LKTTest {
28
+ name?: string;
29
+ startContext?: LKTStartContext;
30
+ actions?: LKTAnyAction[];
31
+ }
32
+ export interface LKTStartContext {
33
+ to?: string;
34
+ }
35
+ /**
36
+ * Test Actions.
37
+ * The expectation is that each LKTAction object will have exactly one non-falsy field.
38
+ */
39
+ export interface LKTAction {
40
+ type?: "check" | "emit" | "keystroke" | "backspace";
41
+ }
42
+ export interface LKTCheck extends LKTAction {
43
+ type: "check";
44
+ result?: string;
45
+ }
46
+ export interface LKTEmit extends LKTAction {
47
+ type: "emit";
48
+ to?: string;
49
+ }
50
+ export interface LKTKeystroke extends LKTAction {
51
+ type: "keystroke";
52
+ key?: string;
53
+ flick?: string;
54
+ longPress?: string;
55
+ tapCount?: string;
56
+ }
57
+ export interface LKTBackspace extends LKTAction {
58
+ type: "backspace";
59
+ }
60
+ export type LKTAnyAction = LKTCheck | LKTEmit | LKTKeystroke | LKTBackspace;
61
+ //# sourceMappingURL=ldml-keyboard-testdata-xml.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ldml-keyboard-testdata-xml.d.ts","sourceRoot":"","sources":["../../../../src/types/ldml-keyboard/ldml-keyboard-testdata-xml.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,iCAAiC;IAChD;;OAEG;IACH,aAAa,EAAE,eAAe,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,WAAW,CAAC;CACrD;AAED,MAAM,WAAW,QAAS,SAAQ,SAAS;IACzC,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,OAAQ,SAAQ,SAAS;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,YAAa,SAAQ,SAAS;IAC7C,IAAI,EAAE,WAAW,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAa,SAAQ,SAAS;IAC7C,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,YAAY,GAAG,YAAY,CAAC"}
@@ -0,0 +1,23 @@
1
+ //
2
+ // Conforms to techpreview
3
+ //
4
+ // The interfaces in this file are designed with reference to the mapped
5
+ // structures produced by xml2js when passed a LDML keyboard test data .xml file.
6
+ //
7
+ // Using prefix LKT for LDML Keyboard Test
8
+ //
9
+
10
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="a4a378dc-3bc1-5730-821f-22e15b07e1d4")}catch(e){}}();
11
+ ;
12
+ ;
13
+ ;
14
+ ;
15
+ ;
16
+ ;
17
+ ;
18
+ ;
19
+ ;
20
+ ;
21
+ export {};
22
+ //# sourceMappingURL=ldml-keyboard-testdata-xml.js.map
23
+ //# debugId=a4a378dc-3bc1-5730-821f-22e15b07e1d4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ldml-keyboard-testdata-xml.js","sources":["../../../../src/types/ldml-keyboard/ldml-keyboard-testdata-xml.ts"],"sourceRoot":"","names":[],"mappings":"AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;AACF,wEAAwE;AACxE,iFAAiF;AACjF,EAAE;AACF,0CAA0C;AAC1C,EAAE;;;AAcD,CAAC;AAMD,CAAC;AAMD,CAAC;AAKD,CAAC;AAMD,CAAC;AAID,CAAC;AAQD,CAAC;AAKD,CAAC;AAKD,CAAC;AAQD,CAAC","debug_id":"a4a378dc-3bc1-5730-821f-22e15b07e1d4"}
@@ -0,0 +1,96 @@
1
+ import { CompilerCallbacks } from '../../compiler-interfaces.js';
2
+ import { LDMLKeyboardXMLSourceFile } from './ldml-keyboard-xml.js';
3
+ import { LDMLKeyboardTestDataXMLSourceFile } from './ldml-keyboard-testdata-xml.js';
4
+ interface NameAndProps {
5
+ '$'?: any;
6
+ '#name'?: string;
7
+ '$$'?: any;
8
+ }
9
+ export declare class LDMLKeyboardXMLSourceFileReaderOptions {
10
+ importsPath: string;
11
+ }
12
+ export declare class LDMLKeyboardXMLSourceFileReader {
13
+ private options;
14
+ private callbacks;
15
+ constructor(options: LDMLKeyboardXMLSourceFileReaderOptions, callbacks: CompilerCallbacks);
16
+ static get defaultImportsURL(): [string, string];
17
+ readImportFile(version: string, subpath: string): Uint8Array;
18
+ /**
19
+ * xml2js will not place single-entry objects into arrays.
20
+ * Easiest way to fix this is to box them ourselves as needed
21
+ * @param source any
22
+ * @returns true on success, false on failure
23
+ */
24
+ private boxArrays;
25
+ /**
26
+ * Recurse over object, boxing up any specials or imports
27
+ * @param obj any object to be traversed
28
+ * @param subtag the leafmost enclosing tag such as 'keyboard3'
29
+ * @returns true on success, false on failure
30
+ */
31
+ private boxImportsAndSpecials;
32
+ /**
33
+ *
34
+ * @param obj object to be imported into
35
+ * @param subtag obj's element tag, e.g. `keys`
36
+ * @returns true on success, false on failure
37
+ */
38
+ private resolveImports;
39
+ /**
40
+ * @param obj the object being imported into
41
+ * @param subtag obj's element tag, e.g. `keys`
42
+ * @param asImport the import structure
43
+ * @param implied true if it is an implied import
44
+ * @returns true on success, false on failure
45
+ */
46
+ private resolveOneImport;
47
+ /**
48
+ * @returns true if valid, false if invalid
49
+ */
50
+ validate(source: LDMLKeyboardXMLSourceFile | LDMLKeyboardTestDataXMLSourceFile): boolean;
51
+ loadUnboxed(file: Uint8Array): LDMLKeyboardXMLSourceFile;
52
+ /**
53
+ * @param file
54
+ * @returns source on success, otherwise null
55
+ */
56
+ load(file: Uint8Array): LDMLKeyboardXMLSourceFile | null;
57
+ loadTestDataUnboxed(file: Uint8Array): any;
58
+ /**
59
+ * Filter the obj array for a subtag
60
+ * @param source array of source objs
61
+ * @param subtag subtag to filter on
62
+ * @returns
63
+ */
64
+ findSubtagArray(source: NameAndProps[], subtag: string): NameAndProps[];
65
+ /**
66
+ * Get exactly one element
67
+ * @param source
68
+ * @param subtag
69
+ * @returns
70
+ */
71
+ findSubtag(source: NameAndProps[], subtag: string): NameAndProps | null;
72
+ /**
73
+ * The default test data stuffer.
74
+ * Just gets $ (the attrs) as the body.
75
+ * Override to use something more complex, such as including child nodes.
76
+ * @param o object to map
77
+ * @param r back ref to reader
78
+ */
79
+ static readonly defaultMapper: (o: NameAndProps, r: LDMLKeyboardXMLSourceFileReader) => any;
80
+ /**
81
+ *
82
+ * @param obj target object
83
+ * @param source array of $/#name strings
84
+ * @param subtag name to extract
85
+ * @param mapper custom mapper function
86
+ */
87
+ stuffBoxes(obj: any, source: NameAndProps[], subtag: string, asArray?: boolean, mapper?: (v: NameAndProps, r: LDMLKeyboardXMLSourceFileReader) => any): void;
88
+ boxTestDataArrays(raw: any): LDMLKeyboardTestDataXMLSourceFile | null;
89
+ /**
90
+ * @param file test file
91
+ * @returns source on success, otherwise null
92
+ */
93
+ loadTestData(file: Uint8Array): LDMLKeyboardTestDataXMLSourceFile | null;
94
+ }
95
+ export {};
96
+ //# sourceMappingURL=ldml-keyboard-xml-reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ldml-keyboard-xml-reader.d.ts","sourceRoot":"","sources":["../../../../src/types/ldml-keyboard/ldml-keyboard-xml-reader.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAA0B,MAAM,wBAAwB,CAAC;AAE3F,OAAO,EAAE,iCAAiC,EAAqB,MAAM,iCAAiC,CAAC;AAIvG,UAAU,YAAY;IACpB,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ;AAED,qBAAa,sCAAsC;IACjD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,+BAA+B;IAC9B,OAAO,CAAC,OAAO;IAA0C,OAAO,CAAC,SAAS;gBAAlE,OAAO,EAAE,sCAAsC,EAAU,SAAS,EAAG,iBAAiB;IAG1G,MAAM,KAAK,iBAAiB,IAAI,CAAC,MAAM,EAAC,MAAM,CAAC,CAE9C;IAED,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU;IAK5D;;;;;OAKG;IACH,OAAO,CAAC,SAAS;IAiEjB;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAoC7B;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAgCtB;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IAiDxB;;OAEG;IACI,QAAQ,CAAC,MAAM,EAAE,yBAAyB,GAAG,iCAAiC,GAAG,OAAO;IAe/F,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,yBAAyB;IAwBxD;;;OAGG;IACI,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,yBAAyB,GAAG,IAAI;IAqB/D,mBAAmB,CAAC,IAAI,EAAE,UAAU,GAAG,GAAG;IAyB1C;;;;;OAKG;IACH,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE;IAIvE;;;;;OAKG;IACH,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAYvE;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,CAAC,aAAa,MAAS,YAAY,KAAK,+BAA+B,SAAW;IAEjG;;;;;;OAMG;IACH,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,+BAA+B,KAAK,GAAG;IAYrJ,iBAAiB,CAAC,GAAG,EAAE,GAAG,GAAI,iCAAiC,GAAG,IAAI;IAuCtE;;;OAGG;IACI,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,iCAAiC,GAAG,IAAI;CAOhF"}