@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,197 @@
1
+ //
2
+ // Version 1.0 and 2.0 of Keyman Developer Project .kpj file
3
+ //
4
+
5
+ !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]="f5f9e7bb-a463-5cb7-9f2c-8a63df7a8c69")}catch(e){}}();
6
+ import { KeymanFileTypes } from '@keymanapp/common-types';
7
+ export class KeymanDeveloperProject {
8
+ _projectFilename;
9
+ callbacks;
10
+ options;
11
+ files;
12
+ projectPath = '';
13
+ projectFile;
14
+ get projectFilename() {
15
+ return this._projectFilename;
16
+ }
17
+ constructor(_projectFilename, version, callbacks) {
18
+ this._projectFilename = _projectFilename;
19
+ this.callbacks = callbacks;
20
+ this.projectPath = this.callbacks.path.dirname(this._projectFilename);
21
+ this.options = new KeymanDeveloperProjectOptions(version);
22
+ this.files = [];
23
+ this.projectFile = new KeymanDeveloperProjectFile20(_projectFilename, callbacks);
24
+ }
25
+ /**
26
+ * Adds .kmn, .xml, .kps to project based on options.sourcePath
27
+ * @param projectFilename Full path to project.kpj (even if the file doesn't exist)
28
+ */
29
+ populateFiles() {
30
+ if (this.options.version != '2.0') {
31
+ throw new Error('populateFiles can only be called on a v2.0 project');
32
+ }
33
+ const sourcePath = this.resolveProjectPath(this.options.sourcePath);
34
+ if (!this.callbacks.fs.existsSync(sourcePath)) {
35
+ return false;
36
+ }
37
+ const files = this.callbacks.fs.readdirSync(sourcePath);
38
+ for (const filename of files) {
39
+ const fullPath = this.callbacks.path.join(sourcePath, filename);
40
+ if (KeymanFileTypes.filenameIs(filename, ".xml" /* KeymanFileTypes.Source.LdmlKeyboard */)) {
41
+ try {
42
+ const data = this.callbacks.loadFile(fullPath);
43
+ const text = new TextDecoder().decode(data);
44
+ if (!text?.match(/<keyboard3/)) {
45
+ // Skip this .xml because we assume it isn't really a keyboard .xml
46
+ continue;
47
+ }
48
+ }
49
+ catch (e) {
50
+ // We'll just silently skip this file because we were not able to load it,
51
+ // so let's hope it wasn't a real LDML keyboard XML :-)
52
+ continue;
53
+ }
54
+ }
55
+ if (KeymanFileTypes.sourceTypeFromFilename(filename) !== null) {
56
+ const file = new KeymanDeveloperProjectFile20(fullPath, this.callbacks);
57
+ this.files.push(file);
58
+ }
59
+ }
60
+ return this.files.length > 0;
61
+ }
62
+ isKeyboardProject() {
63
+ return !!this.files.find(file => file.fileType == ".kmn" /* KeymanFileTypes.Source.KeymanKeyboard */ || file.fileType == ".xml" /* KeymanFileTypes.Source.LdmlKeyboard */);
64
+ }
65
+ isLexicalModelProject() {
66
+ return !!this.files.find(file => file.fileType == ".model.ts" /* KeymanFileTypes.Source.Model */);
67
+ }
68
+ resolveProjectPath(p) {
69
+ // Replace placeholders in the target path
70
+ return p.replace('$PROJECTPATH', this.projectPath);
71
+ }
72
+ getOutputFilePath(type) {
73
+ // Roughly corresponds to Delphi TProject.GetTargetFileName
74
+ let p = this.options.version == '1.0' ?
75
+ this.options.buildPath || '$SOURCEPATH' :
76
+ this.options.buildPath;
77
+ // Replace placeholders in the target path
78
+ if (this.options.version == '1.0') {
79
+ // TODO: do we need to support $VERSION?
80
+ // $SOURCEPATH only supported in 1.0 projects
81
+ p = p.replace('$SOURCEPATH', this.callbacks.path.dirname(this._projectFilename));
82
+ }
83
+ p = this.resolveProjectPath(p);
84
+ const f = this.callbacks.path.basename(this._projectFilename, ".kpj" /* KeymanFileTypes.Source.Project */) + type;
85
+ return this.callbacks.path.normalize(this.callbacks.path.join(p, f));
86
+ }
87
+ resolveInputFilePath(file) {
88
+ return this.callbacks.resolveFilename(this._projectFilename, file.filePath);
89
+ }
90
+ resolveOutputFilePath(file, sourceExt, targetExt) {
91
+ // Roughly corresponds to Delphi TProject.GetTargetFileName
92
+ let p = this.options.version == '1.0' ?
93
+ this.options.buildPath || '$SOURCEPATH' :
94
+ this.options.buildPath;
95
+ // Replace placeholders in the target path
96
+ if (this.options.version == '1.0') {
97
+ // TODO: do we need to support $VERSION?
98
+ // $SOURCEPATH only supported in 1.0 projects
99
+ p = p.replace('$SOURCEPATH', this.callbacks.path.dirname(this.resolveInputFilePath(file)));
100
+ }
101
+ p = this.resolveProjectPath(p);
102
+ const f = file.filename.replace(new RegExp(`\\${sourceExt}$`, 'i'), targetExt);
103
+ return this.callbacks.path.normalize(this.callbacks.path.join(p, f));
104
+ }
105
+ }
106
+ ;
107
+ export var KeymanDeveloperProjectType;
108
+ (function (KeymanDeveloperProjectType) {
109
+ KeymanDeveloperProjectType[KeymanDeveloperProjectType["Keyboard"] = 0] = "Keyboard";
110
+ KeymanDeveloperProjectType[KeymanDeveloperProjectType["LexicalModel"] = 1] = "LexicalModel";
111
+ })(KeymanDeveloperProjectType || (KeymanDeveloperProjectType = {}));
112
+ ;
113
+ export class KeymanDeveloperProjectOptions {
114
+ buildPath;
115
+ sourcePath;
116
+ compilerWarningsAsErrors = false;
117
+ warnDeprecatedCode = true;
118
+ checkFilenameConventions = false; // missing option defaults to False
119
+ /**
120
+ * Skip building .keyboard_info and .model_info files, for example in
121
+ * unit tests or for legacy keyboards
122
+ */
123
+ skipMetadataFiles;
124
+ projectType = KeymanDeveloperProjectType.Keyboard;
125
+ version;
126
+ constructor(version) {
127
+ this.version = version;
128
+ switch (version) {
129
+ case "1.0":
130
+ this.buildPath = '';
131
+ this.sourcePath = '';
132
+ this.skipMetadataFiles = true;
133
+ break;
134
+ case "2.0":
135
+ this.buildPath = '$PROJECTPATH/build';
136
+ this.sourcePath = '$PROJECTPATH/source';
137
+ this.skipMetadataFiles = false;
138
+ break;
139
+ default:
140
+ throw new Error('Invalid version');
141
+ }
142
+ }
143
+ }
144
+ ;
145
+ ;
146
+ export class KeymanDeveloperProjectFile10 {
147
+ id;
148
+ filePath;
149
+ fileVersion;
150
+ callbacks;
151
+ get filename() {
152
+ return this.callbacks.path.basename(this.filePath);
153
+ }
154
+ get fileType() {
155
+ return KeymanFileTypes.fromFilename(this.filename);
156
+ }
157
+ details; // 1.0 only
158
+ childFiles; // 1.0 only
159
+ constructor(id, filePath, fileVersion, callbacks) {
160
+ this.id = id;
161
+ this.filePath = filePath;
162
+ this.fileVersion = fileVersion;
163
+ this.callbacks = callbacks;
164
+ this.details = {};
165
+ this.childFiles = [];
166
+ }
167
+ }
168
+ ;
169
+ export class KeymanDeveloperProjectFile20 {
170
+ filePath;
171
+ callbacks;
172
+ get filename() {
173
+ return this.callbacks.path.basename(this.filePath);
174
+ }
175
+ get fileType() {
176
+ return KeymanFileTypes.fromFilename(this.filename);
177
+ }
178
+ constructor(filePath, callbacks) {
179
+ this.filePath = filePath;
180
+ this.callbacks = callbacks;
181
+ }
182
+ }
183
+ ;
184
+ export class KeymanDeveloperProjectFileDetail_Kps {
185
+ name;
186
+ copyright;
187
+ version;
188
+ }
189
+ ;
190
+ export class KeymanDeveloperProjectFileDetail_Kmn {
191
+ name;
192
+ copyright;
193
+ message;
194
+ }
195
+ ;
196
+ //# sourceMappingURL=keyman-developer-project.js.map
197
+ //# debugId=f5f9e7bb-a463-5cb7-9f2c-8a63df7a8c69
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyman-developer-project.js","sources":["../../../../src/types/kpj/keyman-developer-project.ts"],"sourceRoot":"","names":[],"mappings":"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","debug_id":"f5f9e7bb-a463-5cb7-9f2c-8a63df7a8c69"}
@@ -0,0 +1,19 @@
1
+ import { KPJFile } from './kpj-file.js';
2
+ import { KeymanDeveloperProject } from './keyman-developer-project.js';
3
+ import { CompilerCallbacks } from '../../compiler-interfaces.js';
4
+ export declare class KPJFileReader {
5
+ private callbacks;
6
+ constructor(callbacks: CompilerCallbacks);
7
+ read(file: Uint8Array): KPJFile;
8
+ validate(source: KPJFile): void;
9
+ private boolFromString;
10
+ transform(projectFilename: string, source: KPJFile): KeymanDeveloperProject;
11
+ private transformFilesVersion10;
12
+ /**
13
+ * xml2js will not place single-entry objects into arrays.
14
+ * Easiest way to fix this is to box them ourselves as needed
15
+ * @param source KVKSourceFile
16
+ */
17
+ private boxArrays;
18
+ }
19
+ //# sourceMappingURL=kpj-file-reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kpj-file-reader.d.ts","sourceRoot":"","sources":["../../../../src/types/kpj/kpj-file-reader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAkB,MAAM,eAAe,CAAC;AAExD,OAAO,EAAE,sBAAsB,EAA4D,MAAM,+BAA+B,CAAC;AAEjI,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,qBAAa,aAAa;IACZ,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,iBAAiB;IAIzC,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO;IA6B/B,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAUtC,OAAO,CAAC,cAAc;IAOf,SAAS,CAAC,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,sBAAsB;IA+BlF,OAAO,CAAC,uBAAuB;IAwB/B;;;;OAIG;IACH,OAAO,CAAC,SAAS;CAUlB"}
@@ -0,0 +1,121 @@
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]="4b33628b-8dd7-5580-b803-00a4660d8c89")}catch(e){}}();
3
+ import { xml2js } from '../../index.js';
4
+ import { util } from '@keymanapp/common-types';
5
+ import { KeymanDeveloperProject, KeymanDeveloperProjectFile10, KeymanDeveloperProjectType } from './keyman-developer-project.js';
6
+ import { SchemaValidators } from '@keymanapp/common-types';
7
+ export class KPJFileReader {
8
+ callbacks;
9
+ constructor(callbacks) {
10
+ this.callbacks = callbacks;
11
+ }
12
+ read(file) {
13
+ let data;
14
+ const parser = new xml2js.Parser({
15
+ explicitArray: false,
16
+ mergeAttrs: false,
17
+ includeWhiteChars: false,
18
+ normalize: false,
19
+ emptyTag: ''
20
+ });
21
+ parser.parseString(file, (e, r) => {
22
+ if (e) {
23
+ throw e;
24
+ }
25
+ data = r;
26
+ });
27
+ data = this.boxArrays(data);
28
+ if (data.KeymanDeveloperProject?.Files?.File?.length) {
29
+ for (const file of data.KeymanDeveloperProject?.Files?.File) {
30
+ // xml2js imports <Details/> as '' so we will just delete the empty string
31
+ if (typeof file.Details == 'string') {
32
+ delete file.Details;
33
+ }
34
+ }
35
+ }
36
+ return data;
37
+ }
38
+ validate(source) {
39
+ if (!SchemaValidators.default.kpj(source)) {
40
+ if (!SchemaValidators.default.kpj90(source)) {
41
+ // If the legacy schema also does not validate, then we will only report
42
+ // the errors against the modern schema
43
+ throw new Error(JSON.stringify(SchemaValidators.default.kpj.errors));
44
+ }
45
+ }
46
+ }
47
+ boolFromString(value, def) {
48
+ value = (value || '').toLowerCase();
49
+ if (value === 'true')
50
+ return true;
51
+ if (value === 'false')
52
+ return false;
53
+ return def;
54
+ }
55
+ transform(projectFilename, source) {
56
+ // NOTE: at this point, the xml should have been validated
57
+ // and matched the schema result so we can assume the source
58
+ // is a valid shape
59
+ const project = source.KeymanDeveloperProject;
60
+ const result = new KeymanDeveloperProject(projectFilename, project.Options?.Version || "1.0", this.callbacks);
61
+ if (result.options.version == '2.0') {
62
+ result.options.buildPath = (project.Options?.BuildPath || result.options.buildPath).replace(/\\/g, '/');
63
+ result.options.sourcePath = (project.Options?.SourcePath || result.options.sourcePath).replace(/\\/g, '/');
64
+ result.options.skipMetadataFiles = this.boolFromString(project.Options?.SkipMetadataFiles, false);
65
+ }
66
+ else {
67
+ result.options.buildPath = (project.Options?.BuildPath || '').replace(/\\/g, '/');
68
+ result.options.skipMetadataFiles = this.boolFromString(project.Options?.SkipMetadataFiles, true);
69
+ }
70
+ result.options.checkFilenameConventions = this.boolFromString(project.Options?.CheckFilenameConventions, false);
71
+ result.options.compilerWarningsAsErrors = this.boolFromString(project.Options?.CompilerWarningsAsErrors, false);
72
+ result.options.warnDeprecatedCode = this.boolFromString(project.Options?.WarnDeprecatedCode, true);
73
+ result.options.projectType =
74
+ project.Options?.ProjectType == 'keyboard' ? KeymanDeveloperProjectType.Keyboard :
75
+ project.Options?.ProjectType == 'lexicalmodel' ? KeymanDeveloperProjectType.LexicalModel :
76
+ KeymanDeveloperProjectType.Keyboard; // Default is keyboard if missing
77
+ if (result.options.version == '1.0') {
78
+ this.transformFilesVersion10(project, result);
79
+ }
80
+ else {
81
+ result.populateFiles();
82
+ }
83
+ return result;
84
+ }
85
+ transformFilesVersion10(project, result) {
86
+ const ids = {};
87
+ for (const sourceFile of project.Files?.File) {
88
+ const file = new KeymanDeveloperProjectFile10(sourceFile.ID || '', (sourceFile.Filepath || '').replace(/\\/g, '/'), sourceFile.FileVersion || '', this.callbacks);
89
+ if (sourceFile.Details) {
90
+ file.details.copyright = sourceFile.Details.Copyright;
91
+ file.details.name = sourceFile.Details.Name;
92
+ file.details.message = sourceFile.Details.Message;
93
+ file.details.version = sourceFile.Details.Version;
94
+ }
95
+ if (sourceFile.ParentFileID && ids[sourceFile.ParentFileID]) {
96
+ ids[sourceFile.ParentFileID].childFiles.push(file);
97
+ }
98
+ else {
99
+ result.files.push(file);
100
+ ids[file.id] = file;
101
+ }
102
+ }
103
+ }
104
+ /**
105
+ * xml2js will not place single-entry objects into arrays.
106
+ * Easiest way to fix this is to box them ourselves as needed
107
+ * @param source KVKSourceFile
108
+ */
109
+ boxArrays(source) {
110
+ if (!source.KeymanDeveloperProject) {
111
+ return source;
112
+ }
113
+ if (!source.KeymanDeveloperProject.Files || typeof source.KeymanDeveloperProject.Files == 'string') {
114
+ source.KeymanDeveloperProject.Files = { File: [] };
115
+ }
116
+ util.boxXmlArray(source.KeymanDeveloperProject.Files, 'File');
117
+ return source;
118
+ }
119
+ }
120
+ //# sourceMappingURL=kpj-file-reader.js.map
121
+ //# debugId=4b33628b-8dd7-5580-b803-00a4660d8c89
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kpj-file-reader.js","sources":["../../../../src/types/kpj/kpj-file-reader.ts"],"sourceRoot":"","names":[],"mappings":"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","debug_id":"4b33628b-8dd7-5580-b803-00a4660d8c89"}
@@ -0,0 +1,40 @@
1
+ export interface KPJFile {
2
+ KeymanDeveloperProject: KPJFileProject;
3
+ }
4
+ export interface KPJFileProject {
5
+ Options?: KPJFileOptions;
6
+ Files?: KPJFileFiles;
7
+ }
8
+ export interface KPJFileOptions {
9
+ BuildPath?: string;
10
+ SourcePath?: string;
11
+ CompilerWarningsAsErrors?: string;
12
+ WarnDeprecatedCode?: string;
13
+ SkipMetadataFiles?: string;
14
+ CheckFilenameConventions?: string;
15
+ ProjectType?: 'keyboard' | 'lexicalmodel';
16
+ Version?: '1.0' | '2.0';
17
+ }
18
+ export interface KPJFileFiles {
19
+ File?: KPJFileFile[];
20
+ }
21
+ export interface KPJFileFile {
22
+ ID?: string;
23
+ Filename?: string;
24
+ Filepath?: string;
25
+ FileVersion?: string;
26
+ FileType?: string;
27
+ Details?: KPJFileFileDetail_Kmn & KPJFileFileDetail_Kps;
28
+ ParentFileID?: string;
29
+ }
30
+ export interface KPJFileFileDetail_Kmn {
31
+ Name?: string;
32
+ Copyright?: string;
33
+ Message?: string;
34
+ }
35
+ export interface KPJFileFileDetail_Kps {
36
+ Name?: string;
37
+ Copyright?: string;
38
+ Version?: string;
39
+ }
40
+ //# sourceMappingURL=kpj-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kpj-file.d.ts","sourceRoot":"","sources":["../../../../src/types/kpj/kpj-file.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,OAAO;IACtB,sBAAsB,EAAE,cAAc,CAAC;CACxC;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,WAAW,CAAC,EAAE,UAAU,GAAG,cAAc,CAAC;IAC1C,OAAO,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,qBAAqB,GAAG,qBAAqB,CAAC;IACxD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
@@ -0,0 +1,14 @@
1
+ /*
2
+ * Keyman Developer Project File
3
+ */
4
+
5
+ !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]="725ee6bc-04f0-5233-8d10-3a1db0bad59a")}catch(e){}}();
6
+ ;
7
+ ;
8
+ ;
9
+ ;
10
+ ;
11
+ ;
12
+ export {};
13
+ //# sourceMappingURL=kpj-file.js.map
14
+ //# debugId=725ee6bc-04f0-5233-8d10-3a1db0bad59a
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kpj-file.js","sources":["../../../../src/types/kpj/kpj-file.ts"],"sourceRoot":"","names":[],"mappings":"AAAA;;GAEG;;;AAaF,CAAC;AAWD,CAAC;AAID,CAAC;AAUD,CAAC;AAMD,CAAC;AAMD,CAAC","debug_id":"725ee6bc-04f0-5233-8d10-3a1db0bad59a"}
@@ -0,0 +1,176 @@
1
+ export interface KpsPackage {
2
+ /**
3
+ * <Package> -- the root element.
4
+ */
5
+ Package: KpsFile;
6
+ }
7
+ export interface KpsFile {
8
+ System: KpsFileSystem;
9
+ Options: KpsFileOptions;
10
+ Info?: KpsFileInfo;
11
+ Files?: KpsFileContentFiles;
12
+ Keyboards?: KpsFileKeyboards;
13
+ LexicalModels?: KpsFileLexicalModels;
14
+ StartMenu?: KpsFileStartMenu;
15
+ Strings?: KpsFileStrings;
16
+ RelatedPackages?: KpsFileRelatedPackages;
17
+ }
18
+ export interface KpsFileSystem {
19
+ KeymanDeveloperVersion: string;
20
+ FileVersion: string;
21
+ }
22
+ export interface KpsFileOptions {
23
+ FollowKeyboardVersion?: string;
24
+ ReadMeFile?: string;
25
+ GraphicFile?: string;
26
+ LicenseFile?: string;
27
+ WelcomeFile?: string;
28
+ ExecuteProgram?: string;
29
+ MSIFileName?: string;
30
+ MSIOptions?: string;
31
+ }
32
+ export interface KpsFileInfo {
33
+ Name?: KpsFileInfoItem;
34
+ Copyright?: KpsFileInfoItem;
35
+ Author?: KpsFileInfoItem;
36
+ WebSite?: KpsFileInfoItem;
37
+ Version?: KpsFileInfoItem;
38
+ Description?: KpsFileInfoItem;
39
+ }
40
+ export interface KpsFileInfoItem {
41
+ _: string;
42
+ $: {
43
+ URL: string;
44
+ };
45
+ }
46
+ export interface KpsFileContentFiles {
47
+ File: KpsFileContentFile[] | KpsFileContentFile;
48
+ }
49
+ export interface KpsFileContentFile {
50
+ Name: string;
51
+ /** @deprecated */
52
+ Description: string;
53
+ /** @deprecated */
54
+ CopyLocation: string;
55
+ /** @deprecated */
56
+ FileType: string;
57
+ }
58
+ export interface KpsFileLexicalModel {
59
+ Name: string;
60
+ ID: string;
61
+ Languages: KpsFileLanguages;
62
+ }
63
+ export interface KpsFileLexicalModels {
64
+ LexicalModel: KpsFileLexicalModel[] | KpsFileLexicalModel;
65
+ }
66
+ export interface KpsFileLanguages {
67
+ Language: KpsFileLanguage[] | KpsFileLanguage;
68
+ }
69
+ export interface KpsFileLanguage {
70
+ _: string;
71
+ $: {
72
+ ID: string;
73
+ };
74
+ }
75
+ export interface KpsFileRelatedPackages {
76
+ RelatedPackage: KpsFileRelatedPackage | KpsFileRelatedPackage[];
77
+ }
78
+ export interface KpsFileRelatedPackage {
79
+ $: {
80
+ ID: string;
81
+ /**
82
+ * relationship between this package and the related package, "related" is default if not specified
83
+ */
84
+ Relationship?: "deprecates";
85
+ };
86
+ }
87
+ export interface KpsFileKeyboard {
88
+ Name: string;
89
+ ID: string;
90
+ Version: string;
91
+ OSKFont?: string;
92
+ DisplayFont?: string;
93
+ RTL?: string;
94
+ Languages?: KpsFileLanguages;
95
+ Examples?: KpsFileLanguageExamples;
96
+ /**
97
+ * array of web font alternatives for OSK. should be same font data as oskFont
98
+ */
99
+ WebOSKFonts?: KpsFileFonts;
100
+ /**
101
+ * array of web font alternatives for display. should be same font data as displayFont
102
+ */
103
+ WebDisplayFonts?: KpsFileFonts;
104
+ }
105
+ export interface KpsFileFonts {
106
+ Font: KpsFileFont[] | KpsFileFont;
107
+ }
108
+ export interface KpsFileFont {
109
+ $: {
110
+ Filename: string;
111
+ };
112
+ }
113
+ export interface KpsFileKeyboards {
114
+ Keyboard: KpsFileKeyboard[] | KpsFileKeyboard;
115
+ }
116
+ export interface KpsFileStartMenu {
117
+ Folder?: string;
118
+ AddUninstallEntry?: string;
119
+ Items?: KpsFileStartMenuItems;
120
+ }
121
+ export interface KpsFileStartMenuItem {
122
+ Name: string;
123
+ FileName: string;
124
+ Arguments?: string;
125
+ Icon?: string;
126
+ Location?: string;
127
+ }
128
+ export interface KpsFileStartMenuItems {
129
+ Item: KpsFileStartMenuItem[] | KpsFileStartMenuItem;
130
+ }
131
+ export interface KpsFileStrings {
132
+ String: KpsFileString[] | KpsFileString;
133
+ }
134
+ export interface KpsFileString {
135
+ $: {
136
+ Name: string;
137
+ Value: string;
138
+ };
139
+ }
140
+ export interface KpsFileLanguageExamples {
141
+ Example: KpsFileLanguageExample | KpsFileLanguageExample[];
142
+ }
143
+ /**
144
+ * An example key sequence intended to demonstrate how the keyboard works
145
+ */
146
+ export interface KpsFileLanguageExample {
147
+ $: {
148
+ /**
149
+ * BCP 47 identifier for the example
150
+ */
151
+ ID: string;
152
+ /**
153
+ * A space-separated list of keys.
154
+ * - modifiers indicated with "+"
155
+ * - spacebar is "space"
156
+ * - plus key is "shift+=" or "plus" on US English (all other punctuation as per key cap).
157
+ * - Hardware modifiers are: "shift", "ctrl", "alt", "left-ctrl",
158
+ * "right-ctrl", "left-alt", "right-alt"
159
+ * - Key caps should generally be their character for desktop (Latin script
160
+ * case insensitive), or the actual key cap for touch
161
+ * - Caps Lock should be indicated with "caps-on", "caps-off"
162
+ *
163
+ * e.g. "shift+a b right-alt+c space plus z z z" represents something like: "Ab{AltGr+C} +zzz"
164
+ */
165
+ Keys: string;
166
+ /**
167
+ * The text that would be generated by typing those keys
168
+ */
169
+ Text?: string;
170
+ /**
171
+ * A short description of what the text means or represents
172
+ */
173
+ Note?: string;
174
+ };
175
+ }
176
+ //# sourceMappingURL=kps-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kps-file.d.ts","sourceRoot":"","sources":["../../../../src/types/kps/kps-file.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAC5B,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,eAAe,CAAC,EAAE,sBAAsB,CAAC;CAC1C;AAED,MAAM,WAAW,aAAa;IAC5B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,kBAAkB,EAAE,GAAG,kBAAkB,CAAC;CACjD;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,gBAAgB,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,mBAAmB,EAAE,GAAG,mBAAmB,CAAC;CAC3D;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,eAAe,EAAE,GAAG,eAAe,CAAC;CAC/C;AAED,MAAM,WAAW,eAAe;IAC9B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,cAAc,EAAE,qBAAqB,GAAG,qBAAqB,EAAE,CAAC;CACjE;AAED,MAAM,WAAW,qBAAqB;IACpC,CAAC,EAAE;QACD,EAAE,EAAE,MAAM,CAAC;QACX;;WAEG;QACH,YAAY,CAAC,EAAE,YAAY,CAAC;KAC7B,CAAA;CACF;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,QAAQ,CAAC,EAAE,uBAAuB,CAAC;IACnC;;OAEG;IACH,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B;;OAEG;IACH,eAAe,CAAC,EAAE,YAAY,CAAC;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,WAAW,EAAE,GAAG,WAAW,CAAC;CACnC;AAED,MAAM,WAAW,WAAW;IAC1B,CAAC,EAAE;QACD,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAA;CACF;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,eAAe,EAAE,GAAG,eAAe,CAAC;CAC/C;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,qBAAqB,CAAC;CAC/B;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,oBAAoB,EAAE,GAAG,oBAAoB,CAAC;CACrD;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,aAAa,EAAE,GAAG,aAAa,CAAC;CACzC;AAED,MAAM,WAAW,aAAa;IAC5B,CAAC,EAAE;QACD,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;KACf,CAAA;CACF;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,sBAAsB,GAAG,sBAAsB,EAAE,CAAC;CAC5D;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,CAAC,EAAE;QACD;;WAEG;QACH,EAAE,EAAE,MAAM,CAAC;QACX;;;;;;;;;;;;WAYG;QACH,IAAI,EAAE,MAAM,CAAC;QACb;;WAEG;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;QACd;;WAEG;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAA;CACF"}
@@ -0,0 +1,19 @@
1
+ //
2
+ // The interfaces in this file are designed with reference to the
3
+ // mapped structures produced by xml2js when passed a .kps file.
4
+ //
5
+ // A few notes:
6
+ //
7
+ // * Casing is updated to camelCase during load (leaving `iD` as a
8
+ // mixed up beastie).
9
+ // * Arrays are buried a layer too deep (e.g. <Files><File/><File/></Files>
10
+ // leads to KpsFiles.KpsFile[]
11
+ // * Properties such as used in Info Items use `_` and `$` and must be
12
+ // extracted.
13
+ // * Strings element is not yet checked to be correct
14
+ //
15
+
16
+ !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]="dad015ef-b671-55bb-8c6c-23755afdb224")}catch(e){}}();
17
+ export {};
18
+ //# sourceMappingURL=kps-file.js.map
19
+ //# debugId=dad015ef-b671-55bb-8c6c-23755afdb224
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kps-file.js","sources":["../../../../src/types/kps/kps-file.ts"],"sourceRoot":"","names":[],"mappings":"AAAA,EAAE;AACF,iEAAiE;AACjE,gEAAgE;AAChE,EAAE;AACF,eAAe;AACf,EAAE;AACF,kEAAkE;AAClE,uBAAuB;AACvB,2EAA2E;AAC3E,gCAAgC;AAChC,sEAAsE;AACtE,eAAe;AACf,qDAAqD;AACrD,EAAE","debug_id":"dad015ef-b671-55bb-8c6c-23755afdb224"}
@@ -0,0 +1,26 @@
1
+ import KVKSourceFile from './kvks-file.js';
2
+ import { VisualKeyboard as VK } from '@keymanapp/common-types';
3
+ import VisualKeyboard = VK.VisualKeyboard;
4
+ import VisualKeyboardShiftState = VK.VisualKeyboardShiftState;
5
+ export default class KVKSFileReader {
6
+ read(file: Uint8Array): KVKSourceFile;
7
+ private cleanupFlags;
8
+ /**
9
+ * The only element that allows spaces is <key>. Remove
10
+ * all other empty whitespace-only values.
11
+ * @param root
12
+ * @param source
13
+ */
14
+ private cleanupUnderscore;
15
+ validate(source: KVKSourceFile): void;
16
+ transform(source: KVKSourceFile, invalidVkeys?: string[]): VisualKeyboard;
17
+ private base64ToArray;
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 KVKSourceFile
22
+ */
23
+ private boxArrays;
24
+ kvksShiftToKvkShift(shift: string): VisualKeyboardShiftState;
25
+ }
26
+ //# sourceMappingURL=kvks-file-reader.d.ts.map