@keymanapp/developer-utils 18.0.41-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.
- package/build/src/common-messages.d.ts +49 -0
- package/build/src/common-messages.d.ts.map +1 -0
- package/build/src/common-messages.js +35 -0
- package/build/src/common-messages.js.map +1 -0
- package/build/src/compiler-interfaces.d.ts +372 -0
- package/build/src/compiler-interfaces.d.ts.map +1 -0
- package/build/src/compiler-interfaces.js +382 -0
- package/build/src/compiler-interfaces.js.map +1 -0
- package/build/src/deps/xml2js/bom.d.ts +2 -0
- package/build/src/deps/xml2js/bom.d.ts.map +1 -0
- package/build/src/deps/xml2js/bom.js +14 -0
- package/build/src/deps/xml2js/bom.js.map +1 -0
- package/build/src/deps/xml2js/builder.d.ts +6 -0
- package/build/src/deps/xml2js/builder.d.ts.map +1 -0
- package/build/src/deps/xml2js/builder.js +133 -0
- package/build/src/deps/xml2js/builder.js.map +1 -0
- package/build/src/deps/xml2js/defaults.d.ts +69 -0
- package/build/src/deps/xml2js/defaults.d.ts.map +1 -0
- package/build/src/deps/xml2js/defaults.js +73 -0
- package/build/src/deps/xml2js/defaults.js.map +1 -0
- package/build/src/deps/xml2js/parser.d.ts +18 -0
- package/build/src/deps/xml2js/parser.d.ts.map +1 -0
- package/build/src/deps/xml2js/parser.js +395 -0
- package/build/src/deps/xml2js/parser.js.map +1 -0
- package/build/src/deps/xml2js/processors.d.ts +6 -0
- package/build/src/deps/xml2js/processors.d.ts.map +1 -0
- package/build/src/deps/xml2js/processors.js +28 -0
- package/build/src/deps/xml2js/processors.js.map +1 -0
- package/build/src/deps/xml2js/xml2js.d.ts +12 -0
- package/build/src/deps/xml2js/xml2js.d.ts.map +1 -0
- package/build/src/deps/xml2js/xml2js.js +26 -0
- package/build/src/deps/xml2js/xml2js.js.map +1 -0
- package/build/src/index.d.ts +24 -0
- package/build/src/index.d.ts.map +1 -0
- package/build/src/index.js +26 -0
- package/build/src/index.js.map +1 -0
- package/build/src/is-valid-email.d.ts +2 -0
- package/build/src/is-valid-email.d.ts.map +1 -0
- package/build/src/is-valid-email.js +20 -0
- package/build/src/is-valid-email.js.map +1 -0
- package/build/src/types/import/45/cldr_info.json +5 -0
- package/build/src/types/import/45/keys-Latn-implied.xml +80 -0
- package/build/src/types/import/45/keys-Zyyy-currency.xml +15 -0
- package/build/src/types/import/45/keys-Zyyy-punctuation.xml +45 -0
- package/build/src/types/import/45/scanCodes-implied.xml +53 -0
- package/build/src/types/keyman-touch-layout/keyman-touch-layout-file-reader.d.ts +7 -0
- package/build/src/types/keyman-touch-layout/keyman-touch-layout-file-reader.d.ts.map +1 -0
- package/build/src/types/keyman-touch-layout/keyman-touch-layout-file-reader.js +74 -0
- package/build/src/types/keyman-touch-layout/keyman-touch-layout-file-reader.js.map +1 -0
- package/build/src/types/keyman-touch-layout/keyman-touch-layout-file-writer.d.ts +30 -0
- package/build/src/types/keyman-touch-layout/keyman-touch-layout-file-writer.d.ts.map +1 -0
- package/build/src/types/keyman-touch-layout/keyman-touch-layout-file-writer.js +123 -0
- package/build/src/types/keyman-touch-layout/keyman-touch-layout-file-writer.js.map +1 -0
- package/build/src/types/kmx/kmx-builder.d.ts +42 -0
- package/build/src/types/kmx/kmx-builder.d.ts.map +1 -0
- package/build/src/types/kmx/kmx-builder.js +192 -0
- package/build/src/types/kmx/kmx-builder.js.map +1 -0
- package/build/src/types/kmx/kmx-plus-builder/build-disp.d.ts +20 -0
- package/build/src/types/kmx/kmx-plus-builder/build-disp.d.ts.map +1 -0
- package/build/src/types/kmx/kmx-plus-builder/build-disp.js +29 -0
- package/build/src/types/kmx/kmx-plus-builder/build-disp.js.map +1 -0
- package/build/src/types/kmx/kmx-plus-builder/build-elem.d.ts +29 -0
- package/build/src/types/kmx/kmx-plus-builder/build-elem.d.ts.map +1 -0
- package/build/src/types/kmx/kmx-plus-builder/build-elem.js +91 -0
- package/build/src/types/kmx/kmx-plus-builder/build-elem.js.map +1 -0
- package/build/src/types/kmx/kmx-plus-builder/build-keys.d.ts +59 -0
- package/build/src/types/kmx/kmx-plus-builder/build-keys.d.ts.map +1 -0
- package/build/src/types/kmx/kmx-plus-builder/build-keys.js +110 -0
- package/build/src/types/kmx/kmx-plus-builder/build-keys.js.map +1 -0
- package/build/src/types/kmx/kmx-plus-builder/build-layr.d.ts +57 -0
- package/build/src/types/kmx/kmx-plus-builder/build-layr.d.ts.map +1 -0
- package/build/src/types/kmx/kmx-plus-builder/build-layr.js +104 -0
- package/build/src/types/kmx/kmx-plus-builder/build-layr.js.map +1 -0
- package/build/src/types/kmx/kmx-plus-builder/build-list.d.ts +38 -0
- package/build/src/types/kmx/kmx-plus-builder/build-list.d.ts.map +1 -0
- package/build/src/types/kmx/kmx-plus-builder/build-list.js +69 -0
- package/build/src/types/kmx/kmx-plus-builder/build-list.js.map +1 -0
- package/build/src/types/kmx/kmx-plus-builder/build-loca.d.ts +13 -0
- package/build/src/types/kmx/kmx-plus-builder/build-loca.d.ts.map +1 -0
- package/build/src/types/kmx/kmx-plus-builder/build-loca.js +23 -0
- package/build/src/types/kmx/kmx-plus-builder/build-loca.js.map +1 -0
- package/build/src/types/kmx/kmx-plus-builder/build-meta.d.ts +18 -0
- package/build/src/types/kmx/kmx-plus-builder/build-meta.d.ts.map +1 -0
- package/build/src/types/kmx/kmx-plus-builder/build-meta.js +24 -0
- package/build/src/types/kmx/kmx-plus-builder/build-meta.js.map +1 -0
- package/build/src/types/kmx/kmx-plus-builder/build-sect.d.ts +16 -0
- package/build/src/types/kmx/kmx-plus-builder/build-sect.d.ts.map +1 -0
- package/build/src/types/kmx/kmx-plus-builder/build-sect.js +17 -0
- package/build/src/types/kmx/kmx-plus-builder/build-sect.js.map +1 -0
- package/build/src/types/kmx/kmx-plus-builder/build-strs.d.ts +25 -0
- package/build/src/types/kmx/kmx-plus-builder/build-strs.d.ts.map +1 -0
- package/build/src/types/kmx/kmx-plus-builder/build-strs.js +49 -0
- package/build/src/types/kmx/kmx-plus-builder/build-strs.js.map +1 -0
- package/build/src/types/kmx/kmx-plus-builder/build-tran.d.ts +35 -0
- package/build/src/types/kmx/kmx-plus-builder/build-tran.d.ts.map +1 -0
- package/build/src/types/kmx/kmx-plus-builder/build-tran.js +71 -0
- package/build/src/types/kmx/kmx-plus-builder/build-tran.js.map +1 -0
- package/build/src/types/kmx/kmx-plus-builder/build-uset.d.ts +34 -0
- package/build/src/types/kmx/kmx-plus-builder/build-uset.d.ts.map +1 -0
- package/build/src/types/kmx/kmx-plus-builder/build-uset.js +63 -0
- package/build/src/types/kmx/kmx-plus-builder/build-uset.js.map +1 -0
- package/build/src/types/kmx/kmx-plus-builder/build-vars.d.ts +23 -0
- package/build/src/types/kmx/kmx-plus-builder/build-vars.d.ts.map +1 -0
- package/build/src/types/kmx/kmx-plus-builder/build-vars.js +50 -0
- package/build/src/types/kmx/kmx-plus-builder/build-vars.js.map +1 -0
- package/build/src/types/kmx/kmx-plus-builder/builder-section.d.ts +10 -0
- package/build/src/types/kmx/kmx-plus-builder/builder-section.d.ts.map +1 -0
- package/build/src/types/kmx/kmx-plus-builder/builder-section.js +6 -0
- package/build/src/types/kmx/kmx-plus-builder/builder-section.js.map +1 -0
- package/build/src/types/kmx/kmx-plus-builder/kmx-plus-builder.d.ts +44 -0
- package/build/src/types/kmx/kmx-plus-builder/kmx-plus-builder.d.ts.map +1 -0
- package/build/src/types/kmx/kmx-plus-builder/kmx-plus-builder.js +139 -0
- package/build/src/types/kmx/kmx-plus-builder/kmx-plus-builder.js.map +1 -0
- package/build/src/types/kpj/keyman-developer-project.d.ts +79 -0
- package/build/src/types/kpj/keyman-developer-project.d.ts.map +1 -0
- package/build/src/types/kpj/keyman-developer-project.js +197 -0
- package/build/src/types/kpj/keyman-developer-project.js.map +1 -0
- package/build/src/types/kpj/kpj-file-reader.d.ts +19 -0
- package/build/src/types/kpj/kpj-file-reader.d.ts.map +1 -0
- package/build/src/types/kpj/kpj-file-reader.js +121 -0
- package/build/src/types/kpj/kpj-file-reader.js.map +1 -0
- package/build/src/types/kpj/kpj-file.d.ts +40 -0
- package/build/src/types/kpj/kpj-file.d.ts.map +1 -0
- package/build/src/types/kpj/kpj-file.js +14 -0
- package/build/src/types/kpj/kpj-file.js.map +1 -0
- package/build/src/types/kps/kps-file.d.ts +176 -0
- package/build/src/types/kps/kps-file.d.ts.map +1 -0
- package/build/src/types/kps/kps-file.js +19 -0
- package/build/src/types/kps/kps-file.js.map +1 -0
- package/build/src/types/kvks/kvks-file-reader.d.ts +26 -0
- package/build/src/types/kvks/kvks-file-reader.d.ts.map +1 -0
- package/build/src/types/kvks/kvks-file-reader.js +181 -0
- package/build/src/types/kvks/kvks-file-reader.js.map +1 -0
- package/build/src/types/kvks/kvks-file-writer.d.ts +9 -0
- package/build/src/types/kvks/kvks-file-writer.d.ts.map +1 -0
- package/build/src/types/kvks/kvks-file-writer.js +109 -0
- package/build/src/types/kvks/kvks-file-writer.js.map +1 -0
- package/build/src/types/kvks/kvks-file.d.ts +44 -0
- package/build/src/types/kvks/kvks-file.d.ts.map +1 -0
- package/build/src/types/kvks/kvks-file.js +13 -0
- package/build/src/types/kvks/kvks-file.js.map +1 -0
- package/build/src/types/ldml-keyboard/ldml-keyboard-testdata-xml.d.ts +61 -0
- package/build/src/types/ldml-keyboard/ldml-keyboard-testdata-xml.d.ts.map +1 -0
- package/build/src/types/ldml-keyboard/ldml-keyboard-testdata-xml.js +23 -0
- package/build/src/types/ldml-keyboard/ldml-keyboard-testdata-xml.js.map +1 -0
- package/build/src/types/ldml-keyboard/ldml-keyboard-xml-reader.d.ts +96 -0
- package/build/src/types/ldml-keyboard/ldml-keyboard-xml-reader.d.ts.map +1 -0
- package/build/src/types/ldml-keyboard/ldml-keyboard-xml-reader.js +430 -0
- package/build/src/types/ldml-keyboard/ldml-keyboard-xml-reader.js.map +1 -0
- package/build/src/types/ldml-keyboard/ldml-keyboard-xml.d.ts +171 -0
- package/build/src/types/ldml-keyboard/ldml-keyboard-xml.d.ts.map +1 -0
- package/build/src/types/ldml-keyboard/ldml-keyboard-xml.js +59 -0
- package/build/src/types/ldml-keyboard/ldml-keyboard-xml.js.map +1 -0
- package/build/src/{KeymanSentry.d.ts → utils/KeymanSentry.d.ts} +11 -11
- package/build/src/utils/KeymanSentry.d.ts.map +1 -0
- package/build/src/{KeymanSentry.js → utils/KeymanSentry.js} +75 -75
- package/build/src/utils/KeymanSentry.js.map +1 -0
- package/build/src/{keyman-urls.d.ts → utils/keyman-urls.d.ts} +14 -14
- package/build/src/utils/keyman-urls.d.ts.map +1 -0
- package/build/src/{keyman-urls.js → utils/keyman-urls.js} +20 -20
- package/build/src/utils/keyman-urls.js.map +1 -0
- package/build/src/{markdown.d.ts → utils/markdown.d.ts} +1 -1
- package/build/src/utils/markdown.d.ts.map +1 -0
- package/build/src/{markdown.js → utils/markdown.js} +22 -22
- package/build/src/utils/markdown.js.map +1 -0
- package/build/src/{options.d.ts → utils/options.d.ts} +43 -43
- package/build/src/utils/options.d.ts.map +1 -0
- package/build/src/{options.js → utils/options.js} +57 -57
- package/build/src/utils/options.js.map +1 -0
- package/build/src/{validate-mit-license.d.ts → utils/validate-mit-license.d.ts} +6 -6
- package/build/src/utils/validate-mit-license.d.ts.map +1 -0
- package/build/src/{validate-mit-license.js → utils/validate-mit-license.js} +50 -50
- package/build/src/utils/validate-mit-license.js.map +1 -0
- package/build/test/helpers/index.d.ts +13 -0
- package/build/test/helpers/index.d.ts.map +1 -0
- package/build/test/helpers/index.js +42 -0
- package/build/test/helpers/index.js.map +1 -0
- package/build/test/helpers/reader-callback-test.d.ts +73 -0
- package/build/test/helpers/reader-callback-test.d.ts.map +1 -0
- package/build/test/helpers/reader-callback-test.js +108 -0
- package/build/test/helpers/reader-callback-test.js.map +1 -0
- package/build/test/keyman-touch-layout/test-keyman-touch-layout-file-reader.d.ts +2 -0
- package/build/test/keyman-touch-layout/test-keyman-touch-layout-file-reader.d.ts.map +1 -0
- package/build/test/keyman-touch-layout/test-keyman-touch-layout-file-reader.js +64 -0
- package/build/test/keyman-touch-layout/test-keyman-touch-layout-file-reader.js.map +1 -0
- package/build/test/keyman-touch-layout/test-keyman-touch-layout-round-trip.d.ts +2 -0
- package/build/test/keyman-touch-layout/test-keyman-touch-layout-round-trip.d.ts.map +1 -0
- package/build/test/keyman-touch-layout/test-keyman-touch-layout-round-trip.js +34 -0
- package/build/test/keyman-touch-layout/test-keyman-touch-layout-round-trip.js.map +1 -0
- package/build/test/kmx/test-ldml-keyboard-testdata-reader.d.ts +2 -0
- package/build/test/kmx/test-ldml-keyboard-testdata-reader.d.ts.map +1 -0
- package/build/test/kmx/test-ldml-keyboard-testdata-reader.js +54 -0
- package/build/test/kmx/test-ldml-keyboard-testdata-reader.js.map +1 -0
- package/build/test/kmx/test-ldml-keyboard-xml-reader.d.ts +2 -0
- package/build/test/kmx/test-ldml-keyboard-xml-reader.d.ts.map +1 -0
- package/build/test/kmx/test-ldml-keyboard-xml-reader.js +209 -0
- package/build/test/kmx/test-ldml-keyboard-xml-reader.js.map +1 -0
- package/build/test/kpj/test-kpj-file-reader.d.ts +2 -0
- package/build/test/kpj/test-kpj-file-reader.d.ts.map +1 -0
- package/build/test/kpj/test-kpj-file-reader.js +141 -0
- package/build/test/kpj/test-kpj-file-reader.js.map +1 -0
- package/build/test/kvks/test-kvk-round-trip.d.ts +2 -0
- package/build/test/kvks/test-kvk-round-trip.d.ts.map +1 -0
- package/build/test/kvks/test-kvk-round-trip.js +108 -0
- package/build/test/kvks/test-kvk-round-trip.js.map +1 -0
- package/build/test/kvks/test-kvk-utils.d.ts +6 -0
- package/build/test/kvks/test-kvk-utils.d.ts.map +1 -0
- package/build/test/kvks/test-kvk-utils.js +42 -0
- package/build/test/kvks/test-kvk-utils.js.map +1 -0
- package/build/test/kvks/test-kvks-file.d.ts +2 -0
- package/build/test/kvks/test-kvks-file.d.ts.map +1 -0
- package/build/test/kvks/test-kvks-file.js +59 -0
- package/build/test/kvks/test-kvks-file.js.map +1 -0
- package/build/test/test-is-valid-email.d.ts +2 -0
- package/build/test/test-is-valid-email.d.ts.map +1 -0
- package/build/test/test-is-valid-email.js +36 -0
- package/build/test/test-is-valid-email.js.map +1 -0
- package/build/test/test-license.d.ts +2 -0
- package/build/test/test-license.d.ts.map +1 -0
- package/build/test/test-license.js +24 -0
- package/build/test/test-license.js.map +1 -0
- package/build/test/tsconfig.tsbuildinfo +1 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +15 -6
- package/build/index.d.ts +0 -6
- package/build/index.d.ts.map +0 -1
- package/build/index.js +0 -9
- package/build/index.js.map +0 -1
- package/build/src/KeymanSentry.d.ts.map +0 -1
- package/build/src/KeymanSentry.js.map +0 -1
- package/build/src/keyman-urls.d.ts.map +0 -1
- package/build/src/keyman-urls.js.map +0 -1
- package/build/src/markdown.d.ts.map +0 -1
- package/build/src/markdown.js.map +0 -1
- package/build/src/options.d.ts.map +0 -1
- package/build/src/options.js.map +0 -1
- package/build/src/validate-mit-license.d.ts.map +0 -1
- 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":"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"}
|
|
@@ -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
|