@keymanapp/kmc-package 17.0.154-alpha → 17.0.156-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/compiler/cp1252.d.ts +10 -0
- package/build/src/compiler/cp1252.d.ts.map +1 -0
- package/build/src/compiler/cp1252.js +289 -0
- package/build/src/compiler/cp1252.js.map +1 -0
- package/build/src/compiler/kmp-compiler.d.ts +28 -25
- package/build/src/compiler/kmp-compiler.d.ts.map +1 -1
- package/build/src/compiler/kmp-compiler.js +333 -265
- package/build/src/compiler/kmp-compiler.js.map +1 -1
- package/build/src/compiler/kmp-inf-writer.d.ts +24 -0
- package/build/src/compiler/kmp-inf-writer.d.ts.map +1 -0
- package/build/src/compiler/kmp-inf-writer.js +145 -0
- package/build/src/compiler/kmp-inf-writer.js.map +1 -0
- package/build/src/compiler/kmx-keyboard-metadata.d.ts +6 -0
- package/build/src/compiler/kmx-keyboard-metadata.d.ts.map +1 -0
- package/build/src/compiler/kmx-keyboard-metadata.js +18 -0
- package/build/src/compiler/kmx-keyboard-metadata.js.map +1 -0
- package/build/src/compiler/messages.d.ts +114 -114
- package/build/src/compiler/messages.d.ts.map +1 -1
- package/build/src/compiler/messages.js +70 -67
- package/build/src/compiler/messages.js.map +1 -1
- package/build/src/compiler/package-keyboard-target-validator.d.ts +15 -0
- package/build/src/compiler/package-keyboard-target-validator.d.ts.map +1 -0
- package/build/src/compiler/package-keyboard-target-validator.js +36 -0
- package/build/src/compiler/package-keyboard-target-validator.js.map +1 -0
- package/build/src/compiler/package-metadata-collector.d.ts +19 -0
- package/build/src/compiler/package-metadata-collector.d.ts.map +1 -0
- package/build/src/compiler/package-metadata-collector.js +78 -0
- package/build/src/compiler/package-metadata-collector.js.map +1 -0
- package/build/src/compiler/package-metadata-updater.d.ts +7 -0
- package/build/src/compiler/package-metadata-updater.d.ts.map +1 -0
- package/build/src/compiler/package-metadata-updater.js +13 -0
- package/build/src/compiler/package-metadata-updater.js.map +1 -0
- package/build/src/compiler/package-validation.d.ts +18 -15
- package/build/src/compiler/package-validation.d.ts.map +1 -1
- package/build/src/compiler/package-validation.js +162 -152
- package/build/src/compiler/package-validation.js.map +1 -1
- package/build/src/compiler/package-version-validator.d.ts +23 -0
- package/build/src/compiler/package-version-validator.d.ts.map +1 -0
- package/build/src/compiler/package-version-validator.js +92 -0
- package/build/src/compiler/package-version-validator.js.map +1 -0
- package/build/src/compiler/redist-files.d.ts +20 -18
- package/build/src/compiler/redist-files.d.ts.map +1 -1
- package/build/src/compiler/redist-files.js +59 -57
- package/build/src/compiler/redist-files.js.map +1 -1
- package/build/src/compiler/web-keyboard-metadata.d.ts +22 -0
- package/build/src/compiler/web-keyboard-metadata.d.ts.map +1 -0
- package/build/src/compiler/web-keyboard-metadata.js +34 -0
- package/build/src/compiler/web-keyboard-metadata.js.map +1 -0
- package/build/src/main.d.ts +5 -3
- package/build/src/main.d.ts.map +1 -1
- package/build/src/main.js +5 -3
- package/build/src/main.js.map +1 -1
- package/package.json +7 -8
- package/build/src/compiler/keyman-targets.d.ts +0 -18
- package/build/src/compiler/keyman-targets.d.ts.map +0 -1
- package/build/src/compiler/keyman-targets.js +0 -53
- package/build/src/compiler/keyman-targets.js.map +0 -1
- package/build/src/compiler/package-version-validation.d.ts +0 -24
- package/build/src/compiler/package-version-validation.d.ts.map +0 -1
- package/build/src/compiler/package-version-validation.js +0 -153
- package/build/src/compiler/package-version-validation.js.map +0 -1
|
@@ -1,57 +1,59 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
'
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
'
|
|
22
|
-
'
|
|
23
|
-
'keyman.
|
|
24
|
-
'
|
|
25
|
-
'
|
|
26
|
-
'
|
|
27
|
-
'
|
|
28
|
-
'
|
|
29
|
-
'kmcomapi.
|
|
30
|
-
'
|
|
31
|
-
'kmrefresh.
|
|
32
|
-
'
|
|
33
|
-
'
|
|
34
|
-
'
|
|
35
|
-
'
|
|
36
|
-
'sentry.
|
|
37
|
-
'
|
|
38
|
-
'
|
|
39
|
-
'
|
|
40
|
-
'
|
|
41
|
-
'
|
|
42
|
-
'
|
|
43
|
-
'
|
|
44
|
-
'
|
|
45
|
-
'
|
|
46
|
-
'
|
|
47
|
-
'
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
'
|
|
52
|
-
'
|
|
53
|
-
'
|
|
54
|
-
'
|
|
55
|
-
'
|
|
56
|
-
|
|
57
|
-
|
|
1
|
+
!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]="1ee5d315-697f-5b0d-b69c-234149379e12")}catch(e){}}();
|
|
2
|
+
/**
|
|
3
|
+
* This is a set of known redistributable files for Keyman for Windows that
|
|
4
|
+
* should not be included in packages. It is not critical that this list matches
|
|
5
|
+
* the current deployment; it is just for warning against accidental inclusion
|
|
6
|
+
* of these files by package authors. Some redistributable files have been
|
|
7
|
+
* intentionally excluded because they could legitimately be a different file
|
|
8
|
+
* with the same name.
|
|
9
|
+
*
|
|
10
|
+
* This matches behaviour from the legacy package compiler; we may want to
|
|
11
|
+
* reconsider how this is done in the future.
|
|
12
|
+
*
|
|
13
|
+
* These lists have been constructed from 17.0.109 alpha build. Filenames
|
|
14
|
+
* intentionally in lower case.
|
|
15
|
+
*/
|
|
16
|
+
export const keymanForWindowsInstallerFiles = [
|
|
17
|
+
'keymandesktop.msi',
|
|
18
|
+
'keymanengine.msm'
|
|
19
|
+
];
|
|
20
|
+
export const keymanEngineForWindowsFiles = [
|
|
21
|
+
'base.xslt',
|
|
22
|
+
'crashpad_handler.exe',
|
|
23
|
+
'keyman-debug-etw.man',
|
|
24
|
+
'keyman.exe',
|
|
25
|
+
'keyman32.dll',
|
|
26
|
+
'keyman64.dll',
|
|
27
|
+
'keymanmc.dll',
|
|
28
|
+
'keymanx64.exe',
|
|
29
|
+
'kmcomapi.dll',
|
|
30
|
+
'kmcomapi.x64.dll',
|
|
31
|
+
'kmrefresh.x64.exe',
|
|
32
|
+
'kmrefresh.x86.exe',
|
|
33
|
+
'kmtip.dll',
|
|
34
|
+
'kmtip64.dll',
|
|
35
|
+
'mcompile.exe',
|
|
36
|
+
'sentry.dll',
|
|
37
|
+
'sentry.x64.dll',
|
|
38
|
+
'si_browsers.xslt',
|
|
39
|
+
'si_fonts.xslt',
|
|
40
|
+
'si_hookdlls.xslt',
|
|
41
|
+
'si_keyman.xslt',
|
|
42
|
+
'si_language.xslt',
|
|
43
|
+
'si_office.xslt',
|
|
44
|
+
'si_overview.xslt',
|
|
45
|
+
'si_processes.xslt',
|
|
46
|
+
'si_processes_x64.xslt',
|
|
47
|
+
'si_startup.xslt',
|
|
48
|
+
'tsysinfo.exe',
|
|
49
|
+
];
|
|
50
|
+
export const keymanForWindowsRedistFiles = [
|
|
51
|
+
'desktop_resources.dll',
|
|
52
|
+
'keymandesktop.chm',
|
|
53
|
+
'kmbrowserhost.exe',
|
|
54
|
+
'kmconfig.exe',
|
|
55
|
+
'kmshell.exe',
|
|
56
|
+
'unicodedata.mdb',
|
|
57
|
+
];
|
|
58
|
+
//# debugId=1ee5d315-697f-5b0d-b69c-234149379e12
|
|
59
|
+
//# sourceMappingURL=redist-files.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"
|
|
1
|
+
{"debug_id":"1ee5d315-697f-5b0d-b69c-234149379e12","file":"redist-files.js","mappings":";AACA;;;;;;;;;;;;;GAaG;AAEH,MAAM,CAAC,MACL,8BAA8B,GAAa;IACzC,mBAAmB;IACnB,kBAAkB;CACnB,CAAC;AAGJ,MAAM,CAAC,MACL,2BAA2B,GAAa;IACtC,WAAW;IACX,sBAAsB;IACtB,sBAAsB;IACtB,YAAY;IACZ,cAAc;IACd,cAAc;IACd,cAAc;IACd,eAAe;IACf,cAAc;IACd,kBAAkB;IAClB,mBAAmB;IACnB,mBAAmB;IACnB,WAAW;IACX,aAAa;IACb,cAAc;IACd,YAAY;IACZ,gBAAgB;IAChB,kBAAkB;IAClB,eAAe;IACf,kBAAkB;IAClB,gBAAgB;IAChB,kBAAkB;IAClB,gBAAgB;IAChB,kBAAkB;IAClB,mBAAmB;IACnB,uBAAuB;IACvB,iBAAiB;IACjB,cAAc;CACf,CAAC;AAEJ,MAAM,CAAC,MACL,2BAA2B,GAAa;IACtC,uBAAuB;IACvB,mBAAmB;IACnB,mBAAmB;IACnB,cAAc;IACd,aAAa;IACb,iBAAiB;CAClB,CAAC","names":[],"sourceRoot":"","sources":["../../../src/compiler/redist-files.ts"],"version":3}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
!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]="f6a504d6-1cad-5a8a-b9f8-c7ddd15d19f8")}catch(e){}}();
|
|
2
|
+
export interface WebKeyboardMetadata {
|
|
3
|
+
keyboardName: string;
|
|
4
|
+
keyboardVersion: string;
|
|
5
|
+
minKeymanVersion: string;
|
|
6
|
+
isRtl: boolean;
|
|
7
|
+
isMnemonic: boolean;
|
|
8
|
+
targets?: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* This function parses the JavaScript to do a best-effort retrieval of
|
|
12
|
+
* keyboard data. It assumes a format similar to what the compiler produces.
|
|
13
|
+
* It may be possible for it to miss something if the code is hand written and
|
|
14
|
+
* diverges enough from the compiler code (e.g. if there is a comment between
|
|
15
|
+
* a member variable and its value or something crazy like that).
|
|
16
|
+
*
|
|
17
|
+
* Long-term, we will require package to include .kmx so this kind of parsing
|
|
18
|
+
* won't be necessary.
|
|
19
|
+
*/
|
|
20
|
+
export declare function getCompiledWebKeyboardMetadata(js: string): WebKeyboardMetadata;
|
|
21
|
+
//# debugId=f6a504d6-1cad-5a8a-b9f8-c7ddd15d19f8
|
|
22
|
+
//# sourceMappingURL=web-keyboard-metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"debug_id":"f6a504d6-1cad-5a8a-b9f8-c7ddd15d19f8","file":"web-keyboard-metadata.d.ts","mappings":";AACA,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;GASG;AACH,wBAAgB,8BAA8B,CAAC,EAAE,EAAE,MAAM,GAAG,mBAAmB,CAsB5E","names":[],"sourceRoot":"","sources":["../../../src/compiler/web-keyboard-metadata.ts"],"version":3}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
!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]="589f031e-f15e-5395-9dec-c413db88d9a1")}catch(e){}}();
|
|
2
|
+
;
|
|
3
|
+
/**
|
|
4
|
+
* This function parses the JavaScript to do a best-effort retrieval of
|
|
5
|
+
* keyboard data. It assumes a format similar to what the compiler produces.
|
|
6
|
+
* It may be possible for it to miss something if the code is hand written and
|
|
7
|
+
* diverges enough from the compiler code (e.g. if there is a comment between
|
|
8
|
+
* a member variable and its value or something crazy like that).
|
|
9
|
+
*
|
|
10
|
+
* Long-term, we will require package to include .kmx so this kind of parsing
|
|
11
|
+
* won't be necessary.
|
|
12
|
+
*/
|
|
13
|
+
export function getCompiledWebKeyboardMetadata(js) {
|
|
14
|
+
const nameRegex = /this.KN\s*=\s*(['"])(.*?)\1/;
|
|
15
|
+
const kbverRegex = /this.KBVER\s*=\s*(['"])(.*?)\1/;
|
|
16
|
+
const minverRegex = /this.KMINVER\s*=\s*([''"])(.*?)\1/;
|
|
17
|
+
const rtlRegex = /this.KRTL\s*=\s*(.*?)\s*;/;
|
|
18
|
+
const mnemonicRegex = /this.KM\s*=\s*(.*?)\s*;/;
|
|
19
|
+
const name = nameRegex.exec(js);
|
|
20
|
+
const kbver = kbverRegex.exec(js);
|
|
21
|
+
const minver = minverRegex.exec(js);
|
|
22
|
+
const rtl = rtlRegex.exec(js);
|
|
23
|
+
const mnemonic = mnemonicRegex.exec(js);
|
|
24
|
+
const SKeymanVersion70 = '7.0';
|
|
25
|
+
return {
|
|
26
|
+
keyboardName: name ? name[2] : null,
|
|
27
|
+
keyboardVersion: kbver ? kbver[2] : null,
|
|
28
|
+
minKeymanVersion: minver ? minver[2] : SKeymanVersion70,
|
|
29
|
+
isRtl: !!(rtl && rtl[1].match(/^(1|true)$/)),
|
|
30
|
+
isMnemonic: !!(mnemonic && mnemonic[1].match(/^(1|true)$/))
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
//# debugId=589f031e-f15e-5395-9dec-c413db88d9a1
|
|
34
|
+
//# sourceMappingURL=web-keyboard-metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"debug_id":"589f031e-f15e-5395-9dec-c413db88d9a1","file":"web-keyboard-metadata.js","mappings":";AAQC,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,UAAU,8BAA8B,CAAC,EAAU;IACrD,MAAM,SAAS,GAAK,6BAA6B,CAAC;IAClD,MAAM,UAAU,GAAI,gCAAgC,CAAC;IACrD,MAAM,WAAW,GAAG,mCAAmC,CAAC;IACxD,MAAM,QAAQ,GAAM,2BAA2B,CAAC;IAChD,MAAM,aAAa,GAAG,yBAAyB,CAAC;IAEhD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpC,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9B,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAExC,MAAM,gBAAgB,GAAG,KAAK,CAAC;IAE/B,OAAO;QACL,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;QACnC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;QACxC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB;QACvD,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC5C,UAAU,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;KAC5D,CAAC;AACJ,CAAC","names":[],"sourceRoot":"","sources":["../../../src/compiler/web-keyboard-metadata.ts"],"version":3}
|
package/build/src/main.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
export {
|
|
3
|
-
|
|
1
|
+
!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]="fbf3cc87-0b8e-5315-9cf5-8f87f7cbccda")}catch(e){}}();
|
|
2
|
+
export { KmpCompiler } from "./compiler/kmp-compiler.js";
|
|
3
|
+
export { PackageValidation } from "./compiler/package-validation.js";
|
|
4
|
+
//# debugId=fbf3cc87-0b8e-5315-9cf5-8f87f7cbccda
|
|
5
|
+
//# sourceMappingURL=main.d.ts.map
|
package/build/src/main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"
|
|
1
|
+
{"debug_id":"fbf3cc87-0b8e-5315-9cf5-8f87f7cbccda","file":"main.d.ts","mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC","names":[],"sourceRoot":"","sources":["../../src/main.ts"],"version":3}
|
package/build/src/main.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
export {
|
|
3
|
-
|
|
1
|
+
!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]="e4a5fce7-4d69-50f5-a11d-ac6e7252230c")}catch(e){}}();
|
|
2
|
+
export { KmpCompiler } from "./compiler/kmp-compiler.js";
|
|
3
|
+
export { PackageValidation } from "./compiler/package-validation.js";
|
|
4
|
+
//# debugId=e4a5fce7-4d69-50f5-a11d-ac6e7252230c
|
|
5
|
+
//# sourceMappingURL=main.js.map
|
package/build/src/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"
|
|
1
|
+
{"debug_id":"e4a5fce7-4d69-50f5-a11d-ac6e7252230c","file":"main.js","mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC","names":[],"sourceRoot":"","sources":["../../src/main.ts"],"version":3}
|
package/package.json
CHANGED
|
@@ -30,20 +30,20 @@
|
|
|
30
30
|
"url": "https://github.com/keymanapp/keyman/issues"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"
|
|
34
|
-
"
|
|
33
|
+
"@keymanapp/common-types": "17.0.156-alpha",
|
|
34
|
+
"jszip": "^3.7.0"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
|
+
"@keymanapp/developer-test-helpers": "17.0.156-alpha",
|
|
37
38
|
"@types/chai": "^4.1.7",
|
|
38
39
|
"@types/mocha": "^5.2.7",
|
|
39
|
-
"@types/node": "^
|
|
40
|
+
"@types/node": "^20.4.1",
|
|
40
41
|
"c8": "^7.12.0",
|
|
41
42
|
"chai": "^4.3.4",
|
|
42
43
|
"chalk": "^2.4.2",
|
|
43
44
|
"mocha": "^8.4.0",
|
|
44
45
|
"ts-node": "^9.1.1",
|
|
45
|
-
"typescript": "^4.9.5"
|
|
46
|
-
"@keymanapp/developer-test-helpers": "17.0.154-alpha"
|
|
46
|
+
"typescript": "^4.9.5"
|
|
47
47
|
},
|
|
48
48
|
"mocha": {
|
|
49
49
|
"spec": "build/test/**/test-*.js",
|
|
@@ -59,13 +59,12 @@
|
|
|
59
59
|
"exclude-after-remap": true,
|
|
60
60
|
"exclude": [
|
|
61
61
|
"test/",
|
|
62
|
-
"src/
|
|
63
|
-
"src/kps-file.ts"
|
|
62
|
+
"src/main.ts"
|
|
64
63
|
]
|
|
65
64
|
},
|
|
66
65
|
"repository": {
|
|
67
66
|
"type": "git",
|
|
68
67
|
"url": "git+https://github.com/keymanapp/keyman.git"
|
|
69
68
|
},
|
|
70
|
-
"version": "17.0.
|
|
69
|
+
"version": "17.0.156-alpha"
|
|
71
70
|
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
export declare enum KeymanTarget {
|
|
2
|
-
any = "any",
|
|
3
|
-
windows = "windows",
|
|
4
|
-
macosx = "macosx",
|
|
5
|
-
linux = "linux",
|
|
6
|
-
web = "web",
|
|
7
|
-
iphone = "iphone",
|
|
8
|
-
ipad = "ipad",
|
|
9
|
-
androidphone = "androidphone",
|
|
10
|
-
androidtablet = "androidtablet",
|
|
11
|
-
mobile = "mobile",
|
|
12
|
-
desktop = "desktop",
|
|
13
|
-
tablet = "tablet"
|
|
14
|
-
}
|
|
15
|
-
export declare const AllKeymanTargets: KeymanTarget[], TouchKeymanTargets: KeymanTarget[], KMXKeymanTargets: KeymanTarget[], KMWKeymanTargets: KeymanTarget[], KeymanTargetsUsingKVK: KeymanTarget[], SKeymanTargetNames: {
|
|
16
|
-
[index: string]: string;
|
|
17
|
-
};
|
|
18
|
-
//# sourceMappingURL=keyman-targets.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"keyman-targets.d.ts","sourceRoot":"","sources":["../../../src/compiler/keyman-targets.ts"],"names":[],"mappings":"AAKA,oBACE,YAAY;IACV,GAAG,QAAQ;IACX,OAAO,YAAY;IAAE,MAAM,WAAW;IAAE,KAAK,UAAU;IACvD,GAAG,QAAQ;IAAE,MAAM,WAAW;IAAE,IAAI,SAAS;IAAE,YAAY,iBAAiB;IAAE,aAAa,kBAAkB;IAC7G,MAAM,WAAW;IAAE,OAAO,YAAY;IAAE,MAAM,WAAW;CAC1D;AAEH,eAAO,MAEL,gBAAgB,EAAE,YAAY,EAK7B,EAED,kBAAkB,EAAE,YAAY,EAG/B,EAGD,gBAAgB,EAAE,YAAY,EAE7B,EAGD,gBAAgB,EAAE,YAAY,EAG7B,EAGD,qBAAqB,EAAE,YAAY,EAElC,EAID,kBAAkB,EAAE;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAO5C,CAAC"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// This mirrors UKeymanTargets.pas
|
|
3
|
-
//
|
|
4
|
-
export var KeymanTarget;
|
|
5
|
-
(function (KeymanTarget) {
|
|
6
|
-
KeymanTarget["any"] = "any";
|
|
7
|
-
KeymanTarget["windows"] = "windows";
|
|
8
|
-
KeymanTarget["macosx"] = "macosx";
|
|
9
|
-
KeymanTarget["linux"] = "linux";
|
|
10
|
-
KeymanTarget["web"] = "web";
|
|
11
|
-
KeymanTarget["iphone"] = "iphone";
|
|
12
|
-
KeymanTarget["ipad"] = "ipad";
|
|
13
|
-
KeymanTarget["androidphone"] = "androidphone";
|
|
14
|
-
KeymanTarget["androidtablet"] = "androidtablet";
|
|
15
|
-
KeymanTarget["mobile"] = "mobile";
|
|
16
|
-
KeymanTarget["desktop"] = "desktop";
|
|
17
|
-
KeymanTarget["tablet"] = "tablet";
|
|
18
|
-
})(KeymanTarget || (KeymanTarget = {}));
|
|
19
|
-
;
|
|
20
|
-
export const
|
|
21
|
-
// Note: if these change, update the copied values in KeyboardParser.pas accordingly
|
|
22
|
-
AllKeymanTargets = [
|
|
23
|
-
KeymanTarget.any,
|
|
24
|
-
KeymanTarget.windows, KeymanTarget.macosx, KeymanTarget.linux,
|
|
25
|
-
KeymanTarget.web, KeymanTarget.iphone, KeymanTarget.ipad, KeymanTarget.androidphone, KeymanTarget.androidtablet,
|
|
26
|
-
KeymanTarget.mobile, KeymanTarget.desktop, KeymanTarget.tablet
|
|
27
|
-
], TouchKeymanTargets = [
|
|
28
|
-
KeymanTarget.iphone, KeymanTarget.ipad, KeymanTarget.androidphone, KeymanTarget.androidtablet,
|
|
29
|
-
KeymanTarget.mobile, KeymanTarget.tablet
|
|
30
|
-
],
|
|
31
|
-
// Compile to .kmx
|
|
32
|
-
KMXKeymanTargets = [
|
|
33
|
-
KeymanTarget.windows, KeymanTarget.macosx, KeymanTarget.linux, KeymanTarget.desktop
|
|
34
|
-
],
|
|
35
|
-
// Compile to .js
|
|
36
|
-
KMWKeymanTargets = [
|
|
37
|
-
KeymanTarget.web, KeymanTarget.iphone, KeymanTarget.ipad, KeymanTarget.androidphone, KeymanTarget.androidtablet,
|
|
38
|
-
KeymanTarget.mobile, KeymanTarget.tablet
|
|
39
|
-
],
|
|
40
|
-
// Supports .kvks
|
|
41
|
-
KeymanTargetsUsingKVK = [
|
|
42
|
-
KeymanTarget.windows, KeymanTarget.macosx, KeymanTarget.linux, KeymanTarget.desktop, KeymanTarget.web
|
|
43
|
-
],
|
|
44
|
-
// Friendly names for targets, e.g. for documentation
|
|
45
|
-
SKeymanTargetNames = {
|
|
46
|
-
[KeymanTarget.any]: 'All',
|
|
47
|
-
[KeymanTarget.windows]: 'Windows', [KeymanTarget.macosx]: 'macOS', [KeymanTarget.linux]: 'Linux',
|
|
48
|
-
[KeymanTarget.web]: 'Web', [KeymanTarget.iphone]: 'iPhone', [KeymanTarget.ipad]: 'iPad',
|
|
49
|
-
[KeymanTarget.androidphone]: 'Android phone', [KeymanTarget.androidtablet]: 'Android tablet',
|
|
50
|
-
[KeymanTarget.mobile]: 'Mobile devices', [KeymanTarget.desktop]: 'Desktop devices',
|
|
51
|
-
[KeymanTarget.tablet]: 'Tablet devices'
|
|
52
|
-
};
|
|
53
|
-
//# sourceMappingURL=keyman-targets.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"keyman-targets.js","sourceRoot":"","sources":["../../../src/compiler/keyman-targets.ts"],"names":[],"mappings":"AACA,EAAE;AACF,kCAAkC;AAClC,EAAE;AAEF,MAAM,CAAN,IACE,YAKC;AANH,WACE,YAAY;IACV,2BAAW,CAAA;IACX,mCAAmB,CAAA;IAAE,iCAAiB,CAAA;IAAE,+BAAe,CAAA;IACvD,2BAAW,CAAA;IAAE,iCAAiB,CAAA;IAAE,6BAAa,CAAA;IAAE,6CAA6B,CAAA;IAAE,+CAA+B,CAAA;IAC7G,iCAAiB,CAAA;IAAE,mCAAmB,CAAA;IAAE,iCAAiB,CAAA;AAC3D,CAAC,EALD,YAAY,KAAZ,YAAY,QAKX;AAAA,CAAC;AAEJ,MAAM,CAAC;AACL,oFAAoF;AACpF,gBAAgB,GAAmB;IACjC,YAAY,CAAC,GAAG;IAChB,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK;IAC7D,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC,aAAa;IAC/G,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC,MAAM;CAC/D,EAED,kBAAkB,GAAmB;IACnC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC,aAAa;IAC7F,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM;CACzC;AAED,kBAAkB;AAClB,gBAAgB,GAAmB;IACjC,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,OAAO;CACpF;AAED,iBAAiB;AACjB,gBAAgB,GAAmB;IACjC,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC,aAAa;IAC/G,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM;CACzC;AAED,iBAAiB;AACjB,qBAAqB,GAAmB;IACtC,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG;CACtG;AAED,qDAAqD;AAErD,kBAAkB,GAAgC;IAChD,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,KAAK;IACzB,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,OAAO;IAChG,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM;IACrF,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,eAAe,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,gBAAgB;IAC9F,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,iBAAiB;IAChF,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,gBAAgB;CAC1C,CAAC"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { KmpJsonFile, CompilerCallbacks, KpsFile } from '@keymanapp/common-types';
|
|
2
|
-
export declare class PackageVersionValidation {
|
|
3
|
-
private callbacks;
|
|
4
|
-
constructor(callbacks: CompilerCallbacks);
|
|
5
|
-
/**
|
|
6
|
-
* Verifies version information in corresponding keyboards and updates kmpJson
|
|
7
|
-
* metadata as the version information can be out of sync in the .kps file
|
|
8
|
-
* after updating a contained keyboard.
|
|
9
|
-
* @param kpsFilename
|
|
10
|
-
* @param kps
|
|
11
|
-
* @param kmp
|
|
12
|
-
* @returns
|
|
13
|
-
*/
|
|
14
|
-
validateAndUpdateVersions(kpsFilename: string, kps: KpsFile.KpsFile, kmp: KmpJsonFile.KmpJsonFile): boolean;
|
|
15
|
-
private checkFollowKeyboardVersion;
|
|
16
|
-
private getKmxData;
|
|
17
|
-
private getKeyboardVersionFromKmx;
|
|
18
|
-
/**
|
|
19
|
-
* Verify that the package contains a .js if the keyboard targets touch
|
|
20
|
-
* devices
|
|
21
|
-
*/
|
|
22
|
-
private verifyTargets;
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=package-version-validation.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"package-version-validation.d.ts","sourceRoot":"","sources":["../../../src/compiler/package-version-validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,OAAO,EAAsB,MAAM,yBAAyB,CAAC;AAUtG,qBAAa,wBAAwB;IAEvB,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,iBAAiB;IAEhD;;;;;;;;OAQG;IACI,yBAAyB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,WAAW,CAAC,WAAW;IAmExG,OAAO,CAAC,0BAA0B;IAelC,OAAO,CAAC,UAAU;IAuClB,OAAO,CAAC,yBAAyB;IAOjC;;;OAGG;IACH,OAAO,CAAC,aAAa;CA6BtB"}
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
import { KmxFileReader, KMX } from '@keymanapp/common-types';
|
|
2
|
-
import { TouchKeymanTargets } from './keyman-targets.js';
|
|
3
|
-
import { CompilerMessages } from './messages.js';
|
|
4
|
-
// The DEFAULT_VERSION used to be '1.0', but we now use '0.0' to allow
|
|
5
|
-
// pre-release 0.x keyboards to be considered later than a keyboard without
|
|
6
|
-
// any version metadata at all.
|
|
7
|
-
// TODO: move to a better location
|
|
8
|
-
const DEFAULT_VERSION = '0.0';
|
|
9
|
-
export class PackageVersionValidation {
|
|
10
|
-
callbacks;
|
|
11
|
-
constructor(callbacks) {
|
|
12
|
-
this.callbacks = callbacks;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Verifies version information in corresponding keyboards and updates kmpJson
|
|
16
|
-
* metadata as the version information can be out of sync in the .kps file
|
|
17
|
-
* after updating a contained keyboard.
|
|
18
|
-
* @param kpsFilename
|
|
19
|
-
* @param kps
|
|
20
|
-
* @param kmp
|
|
21
|
-
* @returns
|
|
22
|
-
*/
|
|
23
|
-
validateAndUpdateVersions(kpsFilename, kps, kmp) {
|
|
24
|
-
const followKeyboardVersion = kps.options?.followKeyboardVersion !== undefined;
|
|
25
|
-
if (followKeyboardVersion) {
|
|
26
|
-
if (!this.checkFollowKeyboardVersion(kps, kmp)) {
|
|
27
|
-
return false;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
if (!kmp.keyboards) {
|
|
31
|
-
// Lexical models don't have version metadata; only their packages.
|
|
32
|
-
return true;
|
|
33
|
-
}
|
|
34
|
-
let result = true;
|
|
35
|
-
// We now know we have at least one keyboard in the package
|
|
36
|
-
for (let keyboard of kmp.keyboards) {
|
|
37
|
-
const kmx = this.getKmxData(kpsFilename, kmp, keyboard);
|
|
38
|
-
if (!kmx) {
|
|
39
|
-
// Warnings or errors will have been raised by getKmxData
|
|
40
|
-
result = false;
|
|
41
|
-
continue;
|
|
42
|
-
}
|
|
43
|
-
// get the targets from the .kmx
|
|
44
|
-
this.verifyTargets(keyboard, kmx, kmp);
|
|
45
|
-
// Note: there is often version metadata in the .kps <Keyboard> element, but
|
|
46
|
-
// we don't read from the metadata because we want to ensure we have the
|
|
47
|
-
// most up-to-date keyboard version data here, from the compiled keyboard.
|
|
48
|
-
let keyboardVersion = this.getKeyboardVersionFromKmx(kmx);
|
|
49
|
-
if (followKeyboardVersion && keyboardVersion === null) {
|
|
50
|
-
this.callbacks.reportMessage(CompilerMessages.Info_KeyboardFileHasNoKeyboardVersion({ filename: keyboard.id }));
|
|
51
|
-
}
|
|
52
|
-
keyboard.version = keyboardVersion ?? DEFAULT_VERSION;
|
|
53
|
-
if (result) {
|
|
54
|
-
if (kmp.keyboards[0].version !== keyboard.version) {
|
|
55
|
-
this.callbacks.reportMessage(CompilerMessages.Warn_KeyboardVersionsDoNotMatch({
|
|
56
|
-
keyboard: keyboard.id,
|
|
57
|
-
version: keyboard.version,
|
|
58
|
-
firstKeyboard: kmp.keyboards[0].id,
|
|
59
|
-
firstVersion: kmp.keyboards[0].version
|
|
60
|
-
}));
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
if (result) {
|
|
65
|
-
if (followKeyboardVersion) {
|
|
66
|
-
kmp.info.version.description = kmp.keyboards[0].version;
|
|
67
|
-
}
|
|
68
|
-
else if (kmp.info.version?.description != kmp.keyboards[0].version) {
|
|
69
|
-
// Only need to compare against first keyboard as we compare keyboards above
|
|
70
|
-
this.callbacks.reportMessage(CompilerMessages.Warn_KeyboardVersionsDoNotMatchPackageVersion({
|
|
71
|
-
keyboard: kmp.keyboards[0].id,
|
|
72
|
-
keyboardVersion: kmp.keyboards[0].version,
|
|
73
|
-
packageVersion: kmp.info.version?.description
|
|
74
|
-
}));
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
return result;
|
|
78
|
-
}
|
|
79
|
-
checkFollowKeyboardVersion(kps, kmp) {
|
|
80
|
-
// Lexical model packages do not allow FollowKeyboardVersion
|
|
81
|
-
if (kmp.lexicalModels && kmp.lexicalModels.length) {
|
|
82
|
-
this.callbacks.reportMessage(CompilerMessages.Error_FollowKeyboardVersionNotAllowedForModelPackages());
|
|
83
|
-
return false;
|
|
84
|
-
}
|
|
85
|
-
if (!kmp.keyboards || !kmp.keyboards.length) {
|
|
86
|
-
this.callbacks.reportMessage(CompilerMessages.Error_FollowKeyboardVersionButNoKeyboards());
|
|
87
|
-
return false;
|
|
88
|
-
}
|
|
89
|
-
return true;
|
|
90
|
-
}
|
|
91
|
-
getKmxData(kpsFilename, kmp, keyboard) {
|
|
92
|
-
const file = kmp.files.find(file => this.callbacks.path.basename(file.name, '.kmx') == keyboard.id);
|
|
93
|
-
if (!file) {
|
|
94
|
-
this.callbacks.reportMessage(CompilerMessages.Error_KeyboardContentFileNotFound({ id: keyboard.id }));
|
|
95
|
-
return null;
|
|
96
|
-
}
|
|
97
|
-
const filename = this.callbacks.resolveFilename(kpsFilename, file.name);
|
|
98
|
-
if (!this.callbacks.fs.existsSync(filename)) {
|
|
99
|
-
this.callbacks.reportMessage(CompilerMessages.Error_KeyboardFileNotFound({ filename }));
|
|
100
|
-
return null;
|
|
101
|
-
}
|
|
102
|
-
//
|
|
103
|
-
// load the .kmx and extract the version number
|
|
104
|
-
//
|
|
105
|
-
let kmxFileData;
|
|
106
|
-
try {
|
|
107
|
-
kmxFileData = this.callbacks.loadFile(filename);
|
|
108
|
-
}
|
|
109
|
-
catch (e) {
|
|
110
|
-
this.callbacks.reportMessage(CompilerMessages.Error_FileCouldNotBeRead({ filename, e }));
|
|
111
|
-
return null;
|
|
112
|
-
}
|
|
113
|
-
const kmxReader = new KmxFileReader();
|
|
114
|
-
const kmx = kmxReader.read(kmxFileData);
|
|
115
|
-
if (!kmx) {
|
|
116
|
-
// The file couldn't be read, it might not be a .kmx file
|
|
117
|
-
this.callbacks.reportMessage(CompilerMessages.Error_KeyboardFileNotValid({ filename }));
|
|
118
|
-
return null;
|
|
119
|
-
}
|
|
120
|
-
return kmx;
|
|
121
|
-
}
|
|
122
|
-
getKeyboardVersionFromKmx(kmx) {
|
|
123
|
-
const store = kmx.stores.find(store => store.dwSystemID == KMX.KMXFile.TSS_KEYBOARDVERSION);
|
|
124
|
-
return store ? store.dpString : null;
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Verify that the package contains a .js if the keyboard targets touch
|
|
128
|
-
* devices
|
|
129
|
-
*/
|
|
130
|
-
verifyTargets(keyboard, kmx, kmp) {
|
|
131
|
-
// TODO: this function doesn't really belong in version validation, but we
|
|
132
|
-
// don't want to read .kmx twice so we'll leave it here for now; a future
|
|
133
|
-
// refactor could move .kmx loading into another class
|
|
134
|
-
const store = kmx.stores.find(store => store.dwSystemID == KMX.KMXFile.TSS_TARGETS);
|
|
135
|
-
if (!store) {
|
|
136
|
-
// If there is no &TARGETS store, then there is nothing to check,
|
|
137
|
-
// because default is windows-only
|
|
138
|
-
return;
|
|
139
|
-
}
|
|
140
|
-
// Note, if we have gotten this far, we've already located and loaded a
|
|
141
|
-
// .kmx, so no need to verify that the package includes a .kmx
|
|
142
|
-
// If at least one target is a touch target, we need to check that the
|
|
143
|
-
// package also includes the .js
|
|
144
|
-
const targets = store.dpString.split(' ');
|
|
145
|
-
if (targets.some(target => ['any', ...TouchKeymanTargets].includes(target))) {
|
|
146
|
-
if (!kmp.files.find(file => this.callbacks.path.basename(file.name, '.js') == keyboard.id)) {
|
|
147
|
-
// .js version of the keyboard is not found, warn
|
|
148
|
-
this.callbacks.reportMessage(CompilerMessages.Warn_JsKeyboardFileIsMissing({ id: keyboard.id }));
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
//# sourceMappingURL=package-version-validation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"package-version-validation.js","sourceRoot":"","sources":["../../../src/compiler/package-version-validation.ts"],"names":[],"mappings":"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"}
|