@keymanapp/developer-utils 18.0.40-alpha → 18.0.118-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,430 @@
1
+ /*
2
+ * Keyman is copyright (C) SIL International. MIT License.
3
+ *
4
+ * Reads a LDML XML keyboard file into JS object tree and resolves imports
5
+ */
6
+
7
+ !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]="cf893b5f-e9fd-5846-997b-d4c02e14f4f0")}catch(e){}}();
8
+ import { SchemaValidators, util } from '@keymanapp/common-types';
9
+ import { xml2js } from '../../index.js';
10
+ import { CommonTypesMessages } from '../../common-messages.js';
11
+ import { ImportStatus } from './ldml-keyboard-xml.js';
12
+ import { constants } from '@keymanapp/ldml-keyboard-constants';
13
+ var boxXmlArray = util.boxXmlArray;
14
+ ;
15
+ export class LDMLKeyboardXMLSourceFileReaderOptions {
16
+ importsPath;
17
+ }
18
+ ;
19
+ export class LDMLKeyboardXMLSourceFileReader {
20
+ options;
21
+ callbacks;
22
+ constructor(options, callbacks) {
23
+ this.options = options;
24
+ this.callbacks = callbacks;
25
+ }
26
+ static get defaultImportsURL() {
27
+ return ['../import/', import.meta.url];
28
+ }
29
+ readImportFile(version, subpath) {
30
+ const importPath = this.callbacks.resolveFilename(this.options.importsPath, `${version}/${subpath}`);
31
+ return this.callbacks.loadFile(importPath);
32
+ }
33
+ /**
34
+ * xml2js will not place single-entry objects into arrays.
35
+ * Easiest way to fix this is to box them ourselves as needed
36
+ * @param source any
37
+ * @returns true on success, false on failure
38
+ */
39
+ boxArrays(source) {
40
+ if (source?.keyboard3) {
41
+ if (!source.keyboard3.keys) {
42
+ // Note: this is here to put a substrate for the imported keys
43
+ source.keyboard3.keys = {
44
+ key: [],
45
+ };
46
+ }
47
+ if (!source.keyboard3.keys.import) {
48
+ source.keyboard3.keys.import = [];
49
+ }
50
+ if (!source.keyboard3.forms) {
51
+ source.keyboard3.forms = {
52
+ form: [],
53
+ };
54
+ }
55
+ if (!source.keyboard3.forms.import) {
56
+ source.keyboard3.forms.import = [];
57
+ }
58
+ }
59
+ boxXmlArray(source?.keyboard3, 'layers');
60
+ boxXmlArray(source?.keyboard3?.displays, 'display');
61
+ boxXmlArray(source?.keyboard3?.keys, 'key');
62
+ boxXmlArray(source?.keyboard3?.flicks, 'flick');
63
+ boxXmlArray(source?.keyboard3?.locales, 'locale');
64
+ boxXmlArray(source?.keyboard3, 'transforms');
65
+ if (source?.keyboard3?.layers) {
66
+ for (const layers of source?.keyboard3?.layers) {
67
+ boxXmlArray(layers, 'layer');
68
+ if (layers?.layer) {
69
+ for (const layer of layers?.layer) {
70
+ boxXmlArray(layer, 'row');
71
+ }
72
+ }
73
+ }
74
+ }
75
+ if (source?.keyboard3?.forms?.form) {
76
+ boxXmlArray(source?.keyboard3?.forms, 'form');
77
+ for (const form of source?.keyboard3?.forms?.form) {
78
+ boxXmlArray(form, 'scanCodes');
79
+ }
80
+ }
81
+ if (source?.keyboard3?.flicks) {
82
+ boxXmlArray(source?.keyboard3?.flicks, 'flick');
83
+ for (const flick of source?.keyboard3?.flicks?.flick) {
84
+ boxXmlArray(flick, 'flickSegment');
85
+ }
86
+ }
87
+ if (source?.keyboard3?.variables) {
88
+ boxXmlArray(source?.keyboard3?.variables, 'set');
89
+ boxXmlArray(source?.keyboard3?.variables, 'string');
90
+ boxXmlArray(source?.keyboard3?.variables, 'uset');
91
+ }
92
+ if (source?.keyboard3?.transforms) {
93
+ for (const transforms of source.keyboard3.transforms) {
94
+ boxXmlArray(transforms, 'transformGroup');
95
+ for (const transformGroup of transforms.transformGroup) {
96
+ boxXmlArray(transformGroup, 'transform');
97
+ boxXmlArray(transformGroup, 'reorder');
98
+ }
99
+ }
100
+ }
101
+ return this.boxImportsAndSpecials(source, 'keyboard3');
102
+ }
103
+ /**
104
+ * Recurse over object, boxing up any specials or imports
105
+ * @param obj any object to be traversed
106
+ * @param subtag the leafmost enclosing tag such as 'keyboard3'
107
+ * @returns true on success, false on failure
108
+ */
109
+ boxImportsAndSpecials(obj, subtag) {
110
+ if (!obj)
111
+ return true;
112
+ if (Array.isArray(obj)) {
113
+ for (const sub of obj) {
114
+ // retain the same subtag
115
+ if (!this.boxImportsAndSpecials(sub, subtag)) {
116
+ // resolveImports has already logged a message
117
+ return false;
118
+ }
119
+ }
120
+ }
121
+ else if (typeof obj === 'object') {
122
+ for (const key of Object.keys(obj)) {
123
+ if (key === 'special') {
124
+ boxXmlArray(obj, key);
125
+ }
126
+ else if (key === 'import') {
127
+ // Need to 'box it up' first for processing
128
+ boxXmlArray(obj, key);
129
+ // Now, resolve the import
130
+ if (!this.resolveImports(obj, subtag)) {
131
+ // resolveImports has already logged a message
132
+ return false;
133
+ }
134
+ // now delete the import array we so carefully constructed, the caller does not
135
+ // want to see it.
136
+ delete obj['import'];
137
+ }
138
+ else {
139
+ if (!this.boxImportsAndSpecials(obj[key], key)) {
140
+ // resolveImports has already logged a message
141
+ return false;
142
+ }
143
+ }
144
+ }
145
+ }
146
+ return true;
147
+ }
148
+ /**
149
+ *
150
+ * @param obj object to be imported into
151
+ * @param subtag obj's element tag, e.g. `keys`
152
+ * @returns true on success, false on failure
153
+ */
154
+ resolveImports(obj, subtag) {
155
+ // These are in reverse order, because the imports insert at the beginning of the array.
156
+ // first, the explicit imports
157
+ for (const asImport of ([...obj['import']].reverse())) {
158
+ if (!this.resolveOneImport(obj, subtag, asImport)) {
159
+ // resolveOneImport has already logged a message
160
+ return false;
161
+ }
162
+ }
163
+ // then, the implied imports
164
+ if (subtag === 'keys') {
165
+ // <import base="cldr" path="45/keys-Latn-implied.xml"/>
166
+ if (!this.resolveOneImport(obj, subtag, {
167
+ base: constants.cldr_import_base,
168
+ path: constants.cldr_implied_keys_import
169
+ }, true)) {
170
+ // resolveOneImport has already logged a message
171
+ return false;
172
+ }
173
+ }
174
+ else if (subtag === 'forms') {
175
+ // <import base="cldr" path="45/scanCodes-implied.xml"/>
176
+ if (!this.resolveOneImport(obj, subtag, {
177
+ base: constants.cldr_import_base,
178
+ path: constants.cldr_implied_forms_import
179
+ }, true)) {
180
+ // resolveOneImport has already logged a message
181
+ return false;
182
+ }
183
+ }
184
+ return true;
185
+ }
186
+ /**
187
+ * @param obj the object being imported into
188
+ * @param subtag obj's element tag, e.g. `keys`
189
+ * @param asImport the import structure
190
+ * @param implied true if it is an implied import
191
+ * @returns true on success, false on failure
192
+ */
193
+ resolveOneImport(obj, subtag, asImport, implied) {
194
+ const { base, path } = asImport;
195
+ if (base !== constants.cldr_import_base) {
196
+ this.callbacks.reportMessage(CommonTypesMessages.Error_ImportInvalidBase({ base, path, subtag }));
197
+ return false;
198
+ }
199
+ const paths = path.split('/');
200
+ if (paths[0] == '' || paths[1] == '' || paths.length !== 2) {
201
+ this.callbacks.reportMessage(CommonTypesMessages.Error_ImportInvalidPath({ base, path, subtag }));
202
+ return false;
203
+ }
204
+ const importData = this.readImportFile(paths[0], paths[1]);
205
+ if (!importData || !importData.length) {
206
+ this.callbacks.reportMessage(CommonTypesMessages.Error_ImportReadFail({ base, path, subtag }));
207
+ return false;
208
+ }
209
+ const importXml = this.loadUnboxed(importData); // TODO-LDML: have to load as any because it is an arbitrary part
210
+ const importRootNode = importXml[subtag]; // e.g. <keys/>
211
+ // importXml will have one property: the root element.
212
+ if (!importRootNode) {
213
+ this.callbacks.reportMessage(CommonTypesMessages.Error_ImportWrongRoot({ base, path, subtag }));
214
+ return false;
215
+ }
216
+ // pull all children of importXml[subtag] into obj
217
+ for (const subsubtag of Object.keys(importRootNode).reverse()) { // e.g. <key/>
218
+ const subsubval = importRootNode[subsubtag];
219
+ const basePath = `${base}/${path}`;
220
+ if (!Array.isArray(subsubval)) {
221
+ // This is somewhat of an internal error, indicating that a non-mergeable XML file was imported
222
+ // Not exercisable with the standard LDML imports.
223
+ this.callbacks.reportMessage(CommonTypesMessages.Error_ImportMergeFail({ base, path, subtag, subsubtag }));
224
+ return false;
225
+ }
226
+ // Mark all children as an import
227
+ subsubval.forEach(o => o[ImportStatus.import] = basePath);
228
+ if (implied) {
229
+ // mark all children as an implied import
230
+ subsubval.forEach(o => o[ImportStatus.impliedImport] = basePath);
231
+ }
232
+ if (!obj[subsubtag]) {
233
+ obj[subsubtag] = []; // start with empty array
234
+ }
235
+ obj[subsubtag] = [...subsubval, ...obj[subsubtag]];
236
+ }
237
+ return true;
238
+ }
239
+ /**
240
+ * @returns true if valid, false if invalid
241
+ */
242
+ validate(source) {
243
+ if (!SchemaValidators.default.ldmlKeyboard3(source)) {
244
+ for (const err of SchemaValidators.default.ldmlKeyboard3.errors) {
245
+ this.callbacks.reportMessage(CommonTypesMessages.Error_SchemaValidationError({
246
+ instancePath: err.instancePath,
247
+ keyword: err.keyword,
248
+ message: err.message || 'Unknown AJV Error', // docs say 'message' is optional if 'messages:false' in options
249
+ params: Object.entries(err.params || {}).sort().map(([k, v]) => `${k}="${v}"`).join(' '),
250
+ }));
251
+ }
252
+ return false;
253
+ }
254
+ return true;
255
+ }
256
+ loadUnboxed(file) {
257
+ const source = (() => {
258
+ let a;
259
+ const parser = new xml2js.Parser({
260
+ explicitArray: false,
261
+ mergeAttrs: true,
262
+ includeWhiteChars: false,
263
+ emptyTag: {}
264
+ // Why "as any"? xml2js is broken:
265
+ // https://github.com/Leonidas-from-XIV/node-xml2js/issues/648 means
266
+ // that an old version of `emptyTag` is used which doesn't support
267
+ // functions, but DefinitelyTyped is requiring use of function or a
268
+ // string. See also notes at
269
+ // https://github.com/DefinitelyTyped/DefinitelyTyped/pull/59259#issuecomment-1254405470
270
+ // An alternative fix would be to pull xml2js directly from github
271
+ // rather than using the version tagged on npmjs.com.
272
+ });
273
+ const data = new TextDecoder().decode(file);
274
+ parser.parseString(data, (e, r) => { if (e)
275
+ throw e; a = r; }); // TODO-LDML: isn't 'e' the error?
276
+ return a;
277
+ })();
278
+ return source;
279
+ }
280
+ /**
281
+ * @param file
282
+ * @returns source on success, otherwise null
283
+ */
284
+ load(file) {
285
+ if (!file) {
286
+ throw new Error(`file parameter must not be null`);
287
+ }
288
+ let source = null;
289
+ try {
290
+ source = this.loadUnboxed(file);
291
+ }
292
+ catch (e) {
293
+ this.callbacks.reportMessage(CommonTypesMessages.Error_InvalidXml({ e }));
294
+ return null;
295
+ }
296
+ if (this.boxArrays(source)) {
297
+ return source;
298
+ }
299
+ // boxArrays ... resolveImports has already logged a message
300
+ return null;
301
+ }
302
+ loadTestDataUnboxed(file) {
303
+ const source = (() => {
304
+ let a;
305
+ const parser = new xml2js.Parser({
306
+ // explicitArray: false,
307
+ preserveChildrenOrder: true, // needed for test data
308
+ explicitChildren: true, // needed for test data
309
+ // mergeAttrs: true,
310
+ // includeWhiteChars: false,
311
+ // emptyTag: {} as any
312
+ // Why "as any"? xml2js is broken:
313
+ // https://github.com/Leonidas-from-XIV/node-xml2js/issues/648 means
314
+ // that an old version of `emptyTag` is used which doesn't support
315
+ // functions, but DefinitelyTyped is requiring use of function or a
316
+ // string. See also notes at
317
+ // https://github.com/DefinitelyTyped/DefinitelyTyped/pull/59259#issuecomment-1254405470
318
+ // An alternative fix would be to pull xml2js directly from github
319
+ // rather than using the version tagged on npmjs.com.
320
+ });
321
+ parser.parseString(file, (e, r) => { a = r; }); // TODO-LDML: isn't 'e' the error?
322
+ return a; // Why 'any'? Because we need to box up the $'s into proper properties.
323
+ })();
324
+ return source;
325
+ }
326
+ /**
327
+ * Filter the obj array for a subtag
328
+ * @param source array of source objs
329
+ * @param subtag subtag to filter on
330
+ * @returns
331
+ */
332
+ findSubtagArray(source, subtag) {
333
+ return source?.filter(o => o['#name'] === subtag);
334
+ }
335
+ /**
336
+ * Get exactly one element
337
+ * @param source
338
+ * @param subtag
339
+ * @returns
340
+ */
341
+ findSubtag(source, subtag) {
342
+ const r = this.findSubtagArray(source, subtag);
343
+ if (!r || r.length === 0) {
344
+ return null;
345
+ }
346
+ else if (r.length === 1) {
347
+ return r[0];
348
+ }
349
+ else {
350
+ this.callbacks.reportMessage(CommonTypesMessages.Error_TestDataUnexpectedArray({ subtag }));
351
+ return null; // ERROR
352
+ }
353
+ }
354
+ /**
355
+ * The default test data stuffer.
356
+ * Just gets $ (the attrs) as the body.
357
+ * Override to use something more complex, such as including child nodes.
358
+ * @param o object to map
359
+ * @param r back ref to reader
360
+ */
361
+ static defaultMapper = ((o, r) => o?.$);
362
+ /**
363
+ *
364
+ * @param obj target object
365
+ * @param source array of $/#name strings
366
+ * @param subtag name to extract
367
+ * @param mapper custom mapper function
368
+ */
369
+ stuffBoxes(obj, source, subtag, asArray, mapper) {
370
+ if (!mapper) {
371
+ mapper = LDMLKeyboardXMLSourceFileReader.defaultMapper;
372
+ }
373
+ if (asArray) {
374
+ const r = this;
375
+ obj[subtag] = this.findSubtagArray(source, subtag)?.map((v) => mapper(v, r)); // extract contents only
376
+ }
377
+ else {
378
+ obj[subtag] = mapper(this.findSubtag(source, subtag), this); // run the mapper once
379
+ }
380
+ }
381
+ boxTestDataArrays(raw) {
382
+ if (!raw)
383
+ return null;
384
+ const a = {
385
+ keyboardTest3: {
386
+ conformsTo: raw?.keyboardTest3?.$?.conformsTo,
387
+ }
388
+ };
389
+ const $$ = raw?.keyboardTest3?.$$;
390
+ this.stuffBoxes(a.keyboardTest3, $$, 'info');
391
+ this.stuffBoxes(a.keyboardTest3, $$, 'repertoire', true);
392
+ this.stuffBoxes(a.keyboardTest3, $$, 'tests', true, (o, r) => {
393
+ // start with basic unpack
394
+ const tests = LDMLKeyboardXMLSourceFileReader.defaultMapper(o, r);
395
+ // add ingredients
396
+ r.stuffBoxes(tests, o.$$, 'test', true, (o, r) => {
397
+ // start with basic unpack
398
+ const test = LDMLKeyboardXMLSourceFileReader.defaultMapper(o, r);
399
+ // add ingredients
400
+ const $$ = o.$$;
401
+ r.stuffBoxes(test, $$, 'startContext'); // singleton
402
+ // now the actions
403
+ test.actions = $$.map(v => {
404
+ const type = v['#name']; // element name
405
+ if (type === 'startContext') {
406
+ return null; // handled above
407
+ }
408
+ const subv = LDMLKeyboardXMLSourceFileReader.defaultMapper(v, r);
409
+ return Object.assign({ type }, subv);
410
+ }).filter(v => v !== null);
411
+ return test;
412
+ });
413
+ return tests;
414
+ });
415
+ return a;
416
+ }
417
+ /**
418
+ * @param file test file
419
+ * @returns source on success, otherwise null
420
+ */
421
+ loadTestData(file) {
422
+ if (!file) {
423
+ return null;
424
+ }
425
+ const source = this.loadTestDataUnboxed(file);
426
+ return this.boxTestDataArrays(source);
427
+ }
428
+ }
429
+ //# sourceMappingURL=ldml-keyboard-xml-reader.js.map
430
+ //# debugId=cf893b5f-e9fd-5846-997b-d4c02e14f4f0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ldml-keyboard-xml-reader.js","sources":["../../../../src/types/ldml-keyboard/ldml-keyboard-xml-reader.ts"],"sourceRoot":"","names":[],"mappings":"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","debug_id":"cf893b5f-e9fd-5846-997b-d4c02e14f4f0"}
@@ -0,0 +1,171 @@
1
+ export interface LDMLKeyboardXMLSourceFile {
2
+ /**
3
+ * <keyboard> -- the root element.
4
+ */
5
+ keyboard3: LKKeyboard;
6
+ }
7
+ export interface LKKeyboard {
8
+ locale?: string;
9
+ conformsTo?: string;
10
+ locales?: LKLocales;
11
+ version?: LKVersion;
12
+ info?: LKInfo;
13
+ settings?: LKSettings;
14
+ keys?: LKKeys;
15
+ flicks?: LKFlicks;
16
+ forms?: LKForms;
17
+ displays?: LKDisplays;
18
+ layers?: LKLayers[];
19
+ variables?: LKVariables;
20
+ transforms?: LKTransforms[];
21
+ }
22
+ /**
23
+ * This is defined as an interface, but actually is resolved during the reading phase
24
+ */
25
+ export interface LKImport {
26
+ /**
27
+ * import base, currently `cldr` is supported
28
+ */
29
+ base: string;
30
+ /**
31
+ * path to imported resource, of the form `45/*.xml`
32
+ */
33
+ path: string;
34
+ }
35
+ export interface LKLocales {
36
+ locale: LKLocale[];
37
+ }
38
+ export interface LKLocale {
39
+ id?: string;
40
+ }
41
+ export interface LKVersion {
42
+ number: string;
43
+ }
44
+ export interface LKInfo {
45
+ name?: string;
46
+ author?: string;
47
+ layout?: string;
48
+ indicator?: string;
49
+ }
50
+ export interface LKSettings {
51
+ normalization: "disabled";
52
+ }
53
+ export interface LKKeys {
54
+ key: LKKey[];
55
+ flicks: LKFlicks[];
56
+ }
57
+ export interface LKKey {
58
+ id?: string;
59
+ flickId?: string;
60
+ output?: string;
61
+ gap?: boolean;
62
+ layerId?: string;
63
+ longPressKeyIds?: string;
64
+ longPressDefaultKeyId?: string;
65
+ multiTapKeyIds?: string;
66
+ width?: number;
67
+ }
68
+ export interface LKFlicks {
69
+ flick?: LKFlick[];
70
+ }
71
+ export interface LKFlick {
72
+ id?: string;
73
+ flickSegment?: LKFlickSegment[];
74
+ }
75
+ export interface LKFlickSegment {
76
+ directions?: string;
77
+ keyId?: string;
78
+ }
79
+ export interface LKLayers {
80
+ /**
81
+ * `touch`, or hardware `us`, `iso`, `jis`, `abnt2`
82
+ */
83
+ formId?: string;
84
+ /**
85
+ * Minimum width in millimeters
86
+ */
87
+ minDeviceWidth?: number;
88
+ layer?: LKLayer[];
89
+ }
90
+ export interface LKLayer {
91
+ id?: string;
92
+ modifiers?: string;
93
+ row?: LKRow[];
94
+ }
95
+ export interface LKRow {
96
+ keys?: string;
97
+ }
98
+ export interface LKVariables {
99
+ string?: LKString[];
100
+ set?: LKSet[];
101
+ uset?: LKUSet[];
102
+ }
103
+ /**
104
+ * Shared interface for all three variable types
105
+ */
106
+ export interface Variable {
107
+ id?: string;
108
+ value?: string;
109
+ }
110
+ export interface LKString extends Variable {
111
+ }
112
+ export interface LKSet extends Variable {
113
+ }
114
+ export interface LKUSet extends Variable {
115
+ }
116
+ export interface LKTransforms {
117
+ type?: "simple" | "backspace";
118
+ transformGroup?: LKTransformGroup[];
119
+ }
120
+ export interface LKTransform {
121
+ from?: string;
122
+ to?: string;
123
+ }
124
+ export interface LKTransformGroup {
125
+ transform?: LKTransform[];
126
+ reorder?: LKReorder[];
127
+ }
128
+ export interface LKReorder {
129
+ from?: string;
130
+ before?: string;
131
+ order?: string;
132
+ tertiary?: string;
133
+ tertiaryBase?: string;
134
+ preBase?: string;
135
+ }
136
+ export interface LKDisplayOptions {
137
+ baseCharacter?: string;
138
+ }
139
+ export interface LKDisplay {
140
+ output?: string;
141
+ display?: string;
142
+ keyId?: string;
143
+ }
144
+ export interface LKDisplays {
145
+ display?: LKDisplay[];
146
+ displayOptions?: LKDisplayOptions;
147
+ }
148
+ export interface LKForms {
149
+ form?: LKForm[];
150
+ }
151
+ export interface LKForm {
152
+ id?: string;
153
+ scanCodes?: LKScanCodes[];
154
+ }
155
+ export interface LKScanCodes {
156
+ codes?: string;
157
+ }
158
+ /**
159
+ * Utilities for determining the import status of items
160
+ */
161
+ export declare class ImportStatus {
162
+ /** item came in via implied (spec based) import, such as keys-Latn-implied.xml */
163
+ static impliedImport: symbol;
164
+ /** item came in via import */
165
+ static import: symbol;
166
+ /** @returns true if the object was loaded through an implied import */
167
+ static isImpliedImport(o: any): boolean;
168
+ /** @returns true if the object was loaded through an explicit import */
169
+ static isImport(o: any): boolean;
170
+ }
171
+ //# sourceMappingURL=ldml-keyboard-xml.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ldml-keyboard-xml.d.ts","sourceRoot":"","sources":["../../../../src/types/ldml-keyboard/ldml-keyboard-xml.ts"],"names":[],"mappings":"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"}