@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.
- 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,209 @@
|
|
|
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]="8e0f0a64-43a7-5f18-8ffa-68c9986ca1cf")}catch(e){}}();
|
|
3
|
+
import { ImportStatus } from '../../src/types/ldml-keyboard/ldml-keyboard-xml.js';
|
|
4
|
+
import 'mocha';
|
|
5
|
+
import { assert } from 'chai';
|
|
6
|
+
import { CommonTypesMessages } from '../../src/common-messages.js';
|
|
7
|
+
import { testReaderCases } from '../helpers/reader-callback-test.js';
|
|
8
|
+
import { Constants } from '@keymanapp/common-types';
|
|
9
|
+
var CLDRScanToVkey = Constants.CLDRScanToVkey;
|
|
10
|
+
var CLDRScanToKeyMap = Constants.CLDRScanToKeyMap;
|
|
11
|
+
var USVirtualKeyCodes = Constants.USVirtualKeyCodes;
|
|
12
|
+
function pluckKeysFromKeybag(keys, ids) {
|
|
13
|
+
return keys.filter(({ id }) => ids.indexOf(id) !== -1);
|
|
14
|
+
}
|
|
15
|
+
describe('ldml keyboard xml reader tests', function () {
|
|
16
|
+
this.slow(500); // 0.5 sec -- json schema validation takes a while
|
|
17
|
+
testReaderCases([
|
|
18
|
+
{
|
|
19
|
+
subpath: 'invalid-structure-per-dtd.xml',
|
|
20
|
+
errors: [CommonTypesMessages.Error_SchemaValidationError({
|
|
21
|
+
instancePath: '/keyboard3',
|
|
22
|
+
keyword: 'required',
|
|
23
|
+
message: `must have required property 'info'`,
|
|
24
|
+
params: 'missingProperty="info"',
|
|
25
|
+
})],
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
subpath: 'invalid-conforms-to.xml',
|
|
29
|
+
errors: [CommonTypesMessages.Error_SchemaValidationError({
|
|
30
|
+
instancePath: '/keyboard3/conformsTo',
|
|
31
|
+
keyword: 'enum',
|
|
32
|
+
message: `must be equal to one of the allowed values`,
|
|
33
|
+
params: 'allowedValues="45"',
|
|
34
|
+
})],
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
subpath: 'import-minimal.xml',
|
|
38
|
+
callback: (data, source, subpath, callbacks) => {
|
|
39
|
+
assert.ok(source?.keyboard3?.keys);
|
|
40
|
+
const k = pluckKeysFromKeybag(source?.keyboard3?.keys.key, ['a', 'b', 'c']);
|
|
41
|
+
assert.sameDeepOrderedMembers(k.map((entry) => {
|
|
42
|
+
// Drop the Symbol members from the returned keys; assertions may expect their presence.
|
|
43
|
+
return {
|
|
44
|
+
id: entry.id,
|
|
45
|
+
output: entry.output
|
|
46
|
+
};
|
|
47
|
+
}), [
|
|
48
|
+
{ id: 'a', output: 'a' },
|
|
49
|
+
{ id: 'b', output: 'b' },
|
|
50
|
+
{ id: 'c', output: 'c' },
|
|
51
|
+
]);
|
|
52
|
+
// all of the keys are implied imports here
|
|
53
|
+
assert.isTrue(ImportStatus.isImpliedImport(source?.keyboard3?.keys.key.find(({ id }) => id === 'a')));
|
|
54
|
+
assert.isTrue(ImportStatus.isImport(source?.keyboard3?.keys.key.find(({ id }) => id === 'a')));
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
subpath: 'import-minimal1.xml',
|
|
59
|
+
callback: (data, source, subpath, callbacks) => {
|
|
60
|
+
assert.ok(source?.keyboard3?.keys);
|
|
61
|
+
const k = pluckKeysFromKeybag(source?.keyboard3?.keys.key, ['a', 'b', 'c']);
|
|
62
|
+
assert.sameDeepOrderedMembers(k.map((entry) => {
|
|
63
|
+
// Drop the Symbol members from the returned keys; assertions may expect their presence.
|
|
64
|
+
return {
|
|
65
|
+
id: entry.id,
|
|
66
|
+
output: entry.output
|
|
67
|
+
};
|
|
68
|
+
}), [
|
|
69
|
+
{ id: 'a', output: 'a' },
|
|
70
|
+
{ id: 'b', output: 'b' },
|
|
71
|
+
{ id: 'c', output: 'c' },
|
|
72
|
+
]);
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
subpath: 'import-minimal2.xml',
|
|
77
|
+
callback: (data, source, subpath, callbacks) => {
|
|
78
|
+
assert.ok(source?.keyboard3?.keys);
|
|
79
|
+
const k = pluckKeysFromKeybag(source?.keyboard3?.keys.key, ['a', 'b', 'c']);
|
|
80
|
+
assert.sameDeepOrderedMembers(k.map((entry) => {
|
|
81
|
+
// Drop the Symbol members from the returned keys; assertions may expect their presence.
|
|
82
|
+
return {
|
|
83
|
+
id: entry.id,
|
|
84
|
+
output: entry.output
|
|
85
|
+
};
|
|
86
|
+
}), [
|
|
87
|
+
{ id: 'a', output: 'a' },
|
|
88
|
+
{ id: 'b', output: 'b' },
|
|
89
|
+
{ id: 'c', output: 'c' },
|
|
90
|
+
{ id: 'a', output: 'å' }, // overridden
|
|
91
|
+
]);
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
subpath: 'import-symbols.xml',
|
|
96
|
+
callback: (data, source, subpath, callbacks) => {
|
|
97
|
+
assert.ok(source?.keyboard3?.keys);
|
|
98
|
+
const k = pluckKeysFromKeybag(source?.keyboard3?.keys.key, ['a', 'b', 'c', 'zz', 'hash', 'hyphen']);
|
|
99
|
+
assert.sameDeepOrderedMembers(k.map((entry) => {
|
|
100
|
+
// Drop the Symbol members from the returned keys; assertions may expect their presence.
|
|
101
|
+
return {
|
|
102
|
+
id: entry.id,
|
|
103
|
+
output: entry.output
|
|
104
|
+
};
|
|
105
|
+
}), [
|
|
106
|
+
{ id: 'a', output: 'a' }, // implied
|
|
107
|
+
{ id: 'b', output: 'b' },
|
|
108
|
+
{ id: 'c', output: 'c' },
|
|
109
|
+
{ id: 'hash', output: '#' }, // imported symbols
|
|
110
|
+
{ id: 'hyphen', output: '-' },
|
|
111
|
+
{ id: 'zz', output: 'zz' }, // new key
|
|
112
|
+
{ id: 'hash', output: '##' }, // override
|
|
113
|
+
]);
|
|
114
|
+
// 'a' is an implied import
|
|
115
|
+
assert.isTrue(ImportStatus.isImpliedImport(k.find(({ id }) => id === 'a')));
|
|
116
|
+
assert.isTrue(ImportStatus.isImport(k.find(({ id }) => id === 'a')));
|
|
117
|
+
// 'hash' is an import but not implied
|
|
118
|
+
assert.isFalse(ImportStatus.isImpliedImport(k.find(({ id }) => id === 'hash')));
|
|
119
|
+
assert.isTrue(ImportStatus.isImport(k.find(({ id }) => id === 'hash')));
|
|
120
|
+
// 'zz' is not imported
|
|
121
|
+
assert.isFalse(ImportStatus.isImpliedImport(k.find(({ id }) => id === 'zz')));
|
|
122
|
+
assert.isFalse(ImportStatus.isImport(k.find(({ id }) => id === 'zz')));
|
|
123
|
+
},
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
subpath: 'invalid-import-base.xml',
|
|
127
|
+
loadfail: true,
|
|
128
|
+
errors: [
|
|
129
|
+
CommonTypesMessages.Error_ImportInvalidBase({
|
|
130
|
+
base: 'SOME_INVALID_BASE',
|
|
131
|
+
path: 'B',
|
|
132
|
+
subtag: 'C'
|
|
133
|
+
}),
|
|
134
|
+
],
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
subpath: 'invalid-import-path.xml',
|
|
138
|
+
loadfail: true,
|
|
139
|
+
errors: [
|
|
140
|
+
CommonTypesMessages.Error_ImportInvalidPath({
|
|
141
|
+
base: null,
|
|
142
|
+
path: '45/too/many/slashes/leading/to/nothing-Zxxx-does-not-exist.xml',
|
|
143
|
+
subtag: null,
|
|
144
|
+
}),
|
|
145
|
+
],
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
subpath: 'invalid-import-readfail.xml',
|
|
149
|
+
loadfail: true,
|
|
150
|
+
errors: [
|
|
151
|
+
CommonTypesMessages.Error_ImportReadFail({
|
|
152
|
+
base: null,
|
|
153
|
+
path: '45/none-Zxxx-does-not-exist.xml',
|
|
154
|
+
subtag: null,
|
|
155
|
+
}),
|
|
156
|
+
],
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
subpath: 'invalid-import-wrongroot.xml',
|
|
160
|
+
loadfail: true,
|
|
161
|
+
errors: [
|
|
162
|
+
CommonTypesMessages.Error_ImportWrongRoot({
|
|
163
|
+
base: null,
|
|
164
|
+
path: '45/keys-Zyyy-punctuation.xml',
|
|
165
|
+
subtag: 'flicks',
|
|
166
|
+
}),
|
|
167
|
+
],
|
|
168
|
+
},
|
|
169
|
+
]);
|
|
170
|
+
});
|
|
171
|
+
describe('check scan code routines', () => {
|
|
172
|
+
it('should be able to detect bad single scancodes', () => {
|
|
173
|
+
const badScans = new Set();
|
|
174
|
+
const ckey = CLDRScanToVkey(0xFF, badScans);
|
|
175
|
+
assert.isUndefined(ckey, `expected undefined 0xFF`);
|
|
176
|
+
assert.equal(badScans.size, 1);
|
|
177
|
+
assert.sameDeepMembers(Array.from(badScans.values()), [0xFF]);
|
|
178
|
+
});
|
|
179
|
+
it('should be able to detect bad list scancodes', () => {
|
|
180
|
+
const badScans = new Set();
|
|
181
|
+
const ckeys = CLDRScanToKeyMap([[0x02, 0xFF]], badScans);
|
|
182
|
+
assert.sameDeepMembers(ckeys, [[49, undefined]]);
|
|
183
|
+
assert.equal(badScans.size, 1);
|
|
184
|
+
assert.sameDeepMembers(Array.from(badScans.values()), [0xFF]);
|
|
185
|
+
});
|
|
186
|
+
it('CLDRScanToUSVirtualKeyCodes should be 1:1', () => {
|
|
187
|
+
const vkeyToScan = new Map();
|
|
188
|
+
// check all scancodes
|
|
189
|
+
for (let scan = 0; scan <= 0xFF; scan++) {
|
|
190
|
+
const vkey = CLDRScanToVkey(scan);
|
|
191
|
+
if (vkey === undefined) {
|
|
192
|
+
// not mapped, which is OK
|
|
193
|
+
continue;
|
|
194
|
+
}
|
|
195
|
+
if (scan === 0x56 || scan === 0x7D) {
|
|
196
|
+
// These both can map to this scancode
|
|
197
|
+
assert.equal(vkey, USVirtualKeyCodes.K_oE2);
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
// don't check those exceptions
|
|
201
|
+
assert.isFalse(vkeyToScan.has(vkey), `vkey ${vkey} mapped from more than one scancode: ${Number(vkeyToScan.get(vkey)).toString(16)} and ${Number(scan).toString(16)}`);
|
|
202
|
+
}
|
|
203
|
+
// do make sure nothing else maps to that vkey
|
|
204
|
+
vkeyToScan.set(vkey, scan);
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
});
|
|
208
|
+
//# sourceMappingURL=test-ldml-keyboard-xml-reader.js.map
|
|
209
|
+
//# debugId=8e0f0a64-43a7-5f18-8ffa-68c9986ca1cf
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-ldml-keyboard-xml-reader.js","sources":["../../../test/kmx/test-ldml-keyboard-xml-reader.ts"],"sourceRoot":"","names":[],"mappings":"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","debug_id":"8e0f0a64-43a7-5f18-8ffa-68c9986ca1cf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-kpj-file-reader.d.ts","sourceRoot":"","sources":["../../../test/kpj/test-kpj-file-reader.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,CAAC"}
|
|
@@ -0,0 +1,141 @@
|
|
|
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]="7e93fc02-2331-566a-b7e7-34bb1d9da949")}catch(e){}}();
|
|
3
|
+
import * as fs from 'fs';
|
|
4
|
+
import 'mocha';
|
|
5
|
+
import { assert } from 'chai';
|
|
6
|
+
import { makePathToFixture } from '../helpers/index.js';
|
|
7
|
+
import { KPJFileReader } from "../../src/types/kpj/kpj-file-reader.js";
|
|
8
|
+
import { KeymanDeveloperProjectType } from '../../src/types/kpj/keyman-developer-project.js';
|
|
9
|
+
import { TestCompilerCallbacks } from '@keymanapp/developer-test-helpers';
|
|
10
|
+
const callbacks = new TestCompilerCallbacks();
|
|
11
|
+
describe('kpj-file-reader', function () {
|
|
12
|
+
it('kpj-file-reader should read a valid file', function () {
|
|
13
|
+
const kpjPath = 'khmer_angkor.kpj';
|
|
14
|
+
const path = makePathToFixture('kpj', kpjPath);
|
|
15
|
+
const input = fs.readFileSync(path);
|
|
16
|
+
const reader = new KPJFileReader(callbacks);
|
|
17
|
+
const kpj = reader.read(input);
|
|
18
|
+
assert.doesNotThrow(() => {
|
|
19
|
+
reader.validate(kpj);
|
|
20
|
+
});
|
|
21
|
+
assert.equal(kpj.KeymanDeveloperProject.Options.BuildPath, '$PROJECTPATH\\build');
|
|
22
|
+
assert.equal(kpj.KeymanDeveloperProject.Options.CheckFilenameConventions, 'False');
|
|
23
|
+
assert.equal(kpj.KeymanDeveloperProject.Options.CompilerWarningsAsErrors, 'True');
|
|
24
|
+
assert.equal(kpj.KeymanDeveloperProject.Options.ProjectType, 'keyboard');
|
|
25
|
+
assert.equal(kpj.KeymanDeveloperProject.Options.WarnDeprecatedCode, 'True');
|
|
26
|
+
assert.isUndefined(kpj.KeymanDeveloperProject.Options.SkipMetadataFiles); // because this is a 1.0 version file
|
|
27
|
+
assert.isUndefined(kpj.KeymanDeveloperProject.Options.Version);
|
|
28
|
+
assert.lengthOf(kpj.KeymanDeveloperProject.Files.File, 21);
|
|
29
|
+
// Test a representative set of files - kmn, kps, 2 child files
|
|
30
|
+
let kf = kpj.KeymanDeveloperProject.Files.File[0];
|
|
31
|
+
assert.equal(kf.ID, 'id_f347675c33d2e6b1c705c787fad4941a');
|
|
32
|
+
assert.equal(kf.Filename, 'khmer_angkor.kmn');
|
|
33
|
+
assert.equal(kf.Filepath, 'source\\khmer_angkor.kmn');
|
|
34
|
+
assert.equal(kf.FileVersion, '1.3');
|
|
35
|
+
assert.equal(kf.FileType, '.kmn');
|
|
36
|
+
assert.equal(kf.Details.Name, 'Khmer Angkor');
|
|
37
|
+
assert.equal(kf.Details.Copyright, '© 2015-2022 SIL International');
|
|
38
|
+
assert.equal(kf.Details.Message, 'More than just a Khmer Unicode keyboard.');
|
|
39
|
+
kf = kpj.KeymanDeveloperProject.Files.File[1];
|
|
40
|
+
assert.equal(kf.ID, 'id_8d4eb765f80c9f2b0f769cf4e4aaa456');
|
|
41
|
+
assert.equal(kf.Filename, 'khmer_angkor.kps');
|
|
42
|
+
assert.equal(kf.Filepath, 'source\\khmer_angkor.kps');
|
|
43
|
+
assert.isEmpty(kf.FileVersion);
|
|
44
|
+
assert.equal(kf.FileType, '.kps');
|
|
45
|
+
assert.equal(kf.Details.Name, 'Khmer Angkor');
|
|
46
|
+
assert.equal(kf.Details.Copyright, '© 2015-2022 SIL International');
|
|
47
|
+
kf = kpj.KeymanDeveloperProject.Files.File[2];
|
|
48
|
+
assert.equal(kf.ID, 'id_8a1efc7c4ab7cfece8aedd847679ca27');
|
|
49
|
+
assert.equal(kf.Filename, 'khmer_angkor.ico');
|
|
50
|
+
assert.equal(kf.Filepath, 'source\\khmer_angkor.ico');
|
|
51
|
+
assert.isEmpty(kf.FileVersion);
|
|
52
|
+
assert.equal(kf.FileType, '.ico');
|
|
53
|
+
assert.equal(kf.ParentFileID, 'id_f347675c33d2e6b1c705c787fad4941a');
|
|
54
|
+
kf = kpj.KeymanDeveloperProject.Files.File[3];
|
|
55
|
+
assert.equal(kf.ID, 'id_8dc195db32d1fd0514de0ad51fff5df0');
|
|
56
|
+
assert.equal(kf.Filename, 'khmer_angkor.js');
|
|
57
|
+
assert.equal(kf.Filepath, 'source\\..\\build\\khmer_angkor.js');
|
|
58
|
+
assert.isEmpty(kf.FileVersion);
|
|
59
|
+
assert.equal(kf.FileType, '.js');
|
|
60
|
+
assert.equal(kf.ParentFileID, 'id_8d4eb765f80c9f2b0f769cf4e4aaa456');
|
|
61
|
+
// Test transform of .kpj into a KeymanDeveloperProject
|
|
62
|
+
const project = reader.transform(kpjPath, kpj);
|
|
63
|
+
assert.equal(project.options.buildPath, '$PROJECTPATH/build');
|
|
64
|
+
assert.isFalse(project.options.checkFilenameConventions);
|
|
65
|
+
assert.isTrue(project.options.compilerWarningsAsErrors);
|
|
66
|
+
assert.equal(project.options.projectType, KeymanDeveloperProjectType.Keyboard);
|
|
67
|
+
assert.isTrue(project.options.warnDeprecatedCode);
|
|
68
|
+
assert.isTrue(project.options.skipMetadataFiles);
|
|
69
|
+
assert.equal(project.options.version, '1.0');
|
|
70
|
+
assert.lengthOf(project.files, 2);
|
|
71
|
+
let f = project.files[0];
|
|
72
|
+
assert.equal(f.id, 'id_f347675c33d2e6b1c705c787fad4941a');
|
|
73
|
+
assert.equal(f.filename, 'khmer_angkor.kmn');
|
|
74
|
+
assert.equal(f.filePath, 'source/khmer_angkor.kmn');
|
|
75
|
+
assert.equal(f.fileVersion, '1.3');
|
|
76
|
+
assert.equal(f.fileType, '.kmn');
|
|
77
|
+
assert.equal(f.details.name, 'Khmer Angkor');
|
|
78
|
+
assert.equal(f.details.copyright, '© 2015-2022 SIL International');
|
|
79
|
+
assert.equal(f.details.message, 'More than just a Khmer Unicode keyboard.');
|
|
80
|
+
assert.isUndefined(f.details.version);
|
|
81
|
+
assert.lengthOf(f.childFiles, 1);
|
|
82
|
+
f = project.files[1];
|
|
83
|
+
assert.equal(f.id, 'id_8d4eb765f80c9f2b0f769cf4e4aaa456');
|
|
84
|
+
assert.equal(f.filename, 'khmer_angkor.kps');
|
|
85
|
+
assert.equal(f.filePath, 'source/khmer_angkor.kps');
|
|
86
|
+
assert.equal(f.fileVersion, '');
|
|
87
|
+
assert.equal(f.fileType, '.kps');
|
|
88
|
+
assert.equal(f.details.name, 'Khmer Angkor');
|
|
89
|
+
assert.isUndefined(f.details.message);
|
|
90
|
+
assert.equal(f.details.copyright, '© 2015-2022 SIL International');
|
|
91
|
+
assert.isUndefined(f.details.version);
|
|
92
|
+
assert.lengthOf(f.childFiles, 18);
|
|
93
|
+
f = project.files[0];
|
|
94
|
+
f = f.childFiles[0];
|
|
95
|
+
assert.equal(f.id, 'id_8a1efc7c4ab7cfece8aedd847679ca27');
|
|
96
|
+
assert.equal(f.filename, 'khmer_angkor.ico');
|
|
97
|
+
assert.equal(f.filePath, 'source/khmer_angkor.ico');
|
|
98
|
+
assert.equal(f.fileVersion, '');
|
|
99
|
+
assert.equal(f.fileType, '.ico');
|
|
100
|
+
assert.isEmpty(f.details);
|
|
101
|
+
assert.lengthOf(f.childFiles, 0);
|
|
102
|
+
f = project.files[1];
|
|
103
|
+
f = f.childFiles[0];
|
|
104
|
+
assert.equal(f.id, 'id_8dc195db32d1fd0514de0ad51fff5df0');
|
|
105
|
+
assert.equal(f.filename, 'khmer_angkor.js');
|
|
106
|
+
assert.equal(f.filePath, 'source/../build/khmer_angkor.js');
|
|
107
|
+
assert.equal(f.fileVersion, '');
|
|
108
|
+
assert.equal(f.fileType, '.js');
|
|
109
|
+
assert.isEmpty(f.details);
|
|
110
|
+
assert.lengthOf(f.childFiles, 0);
|
|
111
|
+
});
|
|
112
|
+
it('should load a v1.0 keyboard project with missing <File>', function () {
|
|
113
|
+
const path = makePathToFixture('kpj', 'project-missing-file', 'project_missing_file.kpj');
|
|
114
|
+
const input = fs.readFileSync(path);
|
|
115
|
+
const reader = new KPJFileReader(callbacks);
|
|
116
|
+
const kpj = reader.read(input);
|
|
117
|
+
reader.validate(kpj);
|
|
118
|
+
if (callbacks.messages.length) {
|
|
119
|
+
callbacks.printMessages();
|
|
120
|
+
}
|
|
121
|
+
assert.equal(callbacks.messages.length, 0);
|
|
122
|
+
assert.lengthOf(kpj.KeymanDeveloperProject.Files.File, 0);
|
|
123
|
+
const project = reader.transform(path, kpj);
|
|
124
|
+
assert.equal(callbacks.messages.length, 0);
|
|
125
|
+
assert.isNotNull(project);
|
|
126
|
+
});
|
|
127
|
+
it('should load a v1.0 keyboard project with missing <Files>', function () {
|
|
128
|
+
const path = makePathToFixture('kpj', 'project-missing-file', 'project_missing_files.kpj');
|
|
129
|
+
const input = fs.readFileSync(path);
|
|
130
|
+
const reader = new KPJFileReader(callbacks);
|
|
131
|
+
const kpj = reader.read(input);
|
|
132
|
+
reader.validate(kpj);
|
|
133
|
+
assert.equal(callbacks.messages.length, 0);
|
|
134
|
+
assert.lengthOf(kpj.KeymanDeveloperProject.Files.File, 0);
|
|
135
|
+
const project = reader.transform(path, kpj);
|
|
136
|
+
assert.equal(callbacks.messages.length, 0);
|
|
137
|
+
assert.isNotNull(project);
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
//# sourceMappingURL=test-kpj-file-reader.js.map
|
|
141
|
+
//# debugId=7e93fc02-2331-566a-b7e7-34bb1d9da949
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-kpj-file-reader.js","sources":["../../../test/kpj/test-kpj-file-reader.ts"],"sourceRoot":"","names":[],"mappings":"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","debug_id":"7e93fc02-2331-566a-b7e7-34bb1d9da949"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-kvk-round-trip.d.ts","sourceRoot":"","sources":["../../../test/kvks/test-kvk-round-trip.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,CAAC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
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]="8a47882d-8280-5174-a0ef-2b8359d7b15e")}catch(e){}}();
|
|
3
|
+
import * as fs from 'fs';
|
|
4
|
+
import 'mocha';
|
|
5
|
+
import { assert } from 'chai';
|
|
6
|
+
import Hexy from 'hexy';
|
|
7
|
+
import gitDiff from 'git-diff';
|
|
8
|
+
const { hexy } = Hexy;
|
|
9
|
+
import { makePathToFixture } from '../helpers/index.js';
|
|
10
|
+
import KvksFileReader from "../../src/types/kvks/kvks-file-reader.js";
|
|
11
|
+
import { KvkFileReader, KvkFileWriter } from "@keymanapp/common-types";
|
|
12
|
+
import KvksFileWriter from "../../src/types/kvks/kvks-file-writer.js";
|
|
13
|
+
/**
|
|
14
|
+
*
|
|
15
|
+
* @param actual input buffer
|
|
16
|
+
* @param expected expected buffer
|
|
17
|
+
* @returns
|
|
18
|
+
*/
|
|
19
|
+
function assertBufferMatch(actual, expected) {
|
|
20
|
+
const sourceHex = hexy(actual);
|
|
21
|
+
const expectedHex = hexy(expected);
|
|
22
|
+
const diff = gitDiff(expectedHex, sourceHex);
|
|
23
|
+
assert(!diff, 'Buffers did not match:\n' + diff);
|
|
24
|
+
assert.equal(actual.length, expected.length, 'Buffer lengths are not the same');
|
|
25
|
+
assert.deepEqual(actual, expected); // double check buffers: hexy can return '' on failure
|
|
26
|
+
}
|
|
27
|
+
describe('kvk-file-reader', function () {
|
|
28
|
+
it('kvk-file-reader should round-trip with kvk-file-writer', function () {
|
|
29
|
+
const path = makePathToFixture('kvks', 'khmer_angkor.kvk');
|
|
30
|
+
const input = fs.readFileSync(path);
|
|
31
|
+
const reader = new KvkFileReader();
|
|
32
|
+
const vk = reader.read(input);
|
|
33
|
+
const writer = new KvkFileWriter();
|
|
34
|
+
const output = writer.write(vk);
|
|
35
|
+
assertBufferMatch(input, Buffer.from(output));
|
|
36
|
+
// and check the 2nd generation also
|
|
37
|
+
const vk2 = reader.read(output);
|
|
38
|
+
assert.deepEqual(vk2, vk);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
describe('kvks-file-reader', function () {
|
|
42
|
+
it('kvks-file-reader should compile with kvk-file-writer', function () {
|
|
43
|
+
const inputPath = makePathToFixture('kvks', 'khmer_angkor.kvks');
|
|
44
|
+
const compiledPath = makePathToFixture('kvks', 'khmer_angkor.kvk');
|
|
45
|
+
const input = fs.readFileSync(inputPath);
|
|
46
|
+
const compiled = fs.readFileSync(compiledPath);
|
|
47
|
+
const reader = new KvksFileReader();
|
|
48
|
+
const kvks = reader.read(input);
|
|
49
|
+
assert.doesNotThrow(() => {
|
|
50
|
+
reader.validate(kvks);
|
|
51
|
+
});
|
|
52
|
+
const invalidVkeys = [];
|
|
53
|
+
const vk = reader.transform(kvks, invalidVkeys);
|
|
54
|
+
assert.isEmpty(invalidVkeys);
|
|
55
|
+
const writer = new KvkFileWriter();
|
|
56
|
+
const output = writer.write(vk);
|
|
57
|
+
assertBufferMatch(Buffer.from(output), compiled);
|
|
58
|
+
});
|
|
59
|
+
describe('kvks-file-writer', function () {
|
|
60
|
+
it('kvks-file-writer should match what kvk-file-reader reads', function () {
|
|
61
|
+
const kvkIn = makePathToFixture('kvks', 'khmer_angkor.kvk');
|
|
62
|
+
const kvkBuf = fs.readFileSync(kvkIn);
|
|
63
|
+
const kvkReader = new KvkFileReader();
|
|
64
|
+
const kvksReader = new KvksFileReader();
|
|
65
|
+
const vk = kvkReader.read(kvkBuf);
|
|
66
|
+
const kvksWriter = new KvksFileWriter();
|
|
67
|
+
const kvksOut = kvksWriter.write(vk);
|
|
68
|
+
// Now, re-read kvk from the kvks
|
|
69
|
+
const kvks = kvksReader.read(Buffer.from(kvksOut));
|
|
70
|
+
assert.doesNotThrow(() => {
|
|
71
|
+
kvksReader.validate(kvks);
|
|
72
|
+
});
|
|
73
|
+
const invalidVkeys = [];
|
|
74
|
+
const vk2 = kvksReader.transform(kvks, invalidVkeys);
|
|
75
|
+
assert.isEmpty(invalidVkeys);
|
|
76
|
+
// make sure the binary is the same
|
|
77
|
+
assert.deepEqual(vk2, vk);
|
|
78
|
+
});
|
|
79
|
+
it('should have identical input and output for kvk and kvks', function () {
|
|
80
|
+
const path = makePathToFixture('kvks', 'balochi_inpage.kvks');
|
|
81
|
+
const input = fs.readFileSync(path);
|
|
82
|
+
const reader = new KvksFileReader();
|
|
83
|
+
const kvksExpected = reader.read(input);
|
|
84
|
+
const invalidVkeys = [];
|
|
85
|
+
const vkExpected = reader.transform(kvksExpected, invalidVkeys);
|
|
86
|
+
assert.isEmpty(invalidVkeys);
|
|
87
|
+
const writer = new KvksFileWriter();
|
|
88
|
+
const output = writer.write(vkExpected);
|
|
89
|
+
// We compare the (re)loaded data, because there may be
|
|
90
|
+
// minor, irrelevant formatting differences in the emitted xml
|
|
91
|
+
const kvks = reader.read(Buffer.from(output, 'utf8'));
|
|
92
|
+
const vk = reader.transform(kvks);
|
|
93
|
+
assert.deepEqual(vk, vkExpected);
|
|
94
|
+
// Then compare against the .kvk
|
|
95
|
+
const kvkPath = makePathToFixture('kvks', 'balochi_inpage.kvk');
|
|
96
|
+
const kvkInput = fs.readFileSync(kvkPath);
|
|
97
|
+
const kvkReader = new KvkFileReader();
|
|
98
|
+
const kvk = kvkReader.read(kvkInput);
|
|
99
|
+
assert.deepEqual(kvk, vk);
|
|
100
|
+
const kvkWriter = new KvkFileWriter();
|
|
101
|
+
const kvkOutput = kvkWriter.write(vk);
|
|
102
|
+
const kvkReread = kvkReader.read(kvkOutput);
|
|
103
|
+
assert.deepEqual(kvkReread, kvk);
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
//# sourceMappingURL=test-kvk-round-trip.js.map
|
|
108
|
+
//# debugId=8a47882d-8280-5174-a0ef-2b8359d7b15e
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-kvk-round-trip.js","sources":["../../../test/kvks/test-kvk-round-trip.ts"],"sourceRoot":"","names":[],"mappings":";;AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,OAAO,CAAC;AACf,OAAO,EAAC,MAAM,EAAC,MAAM,MAAM,CAAC;AAC5B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,OAAO,MAAM,UAAU,CAAC;AAC/B,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;AACtB,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,cAAc,MAAM,0CAA0C,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,cAAc,MAAM,0CAA0C,CAAC;AAEtE;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,MAAc,EAAE,QAAgB;IACzD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAE7C,MAAM,CAAC,CAAC,IAAI,EAAE,0BAA0B,GAAG,IAAI,CAAC,CAAC;IACjD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,iCAAiC,CAAC,CAAC;IAChF,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,sDAAsD;AAC5F,CAAC;AAED,QAAQ,CAAC,iBAAiB,EAAE;IAC1B,EAAE,CAAC,wDAAwD,EAAE;QAC3D,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;QAC3D,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QACnC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAChC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAE9C,oCAAoC;QACpC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,kBAAkB,EAAE;IAC3B,EAAE,CAAC,sDAAsD,EAAE;QACzD,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;QACjE,MAAM,YAAY,GAAG,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;QACnE,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE;YACvB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QACH,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAChD,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC7B,MAAM,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAChC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,EAAE;QAC3B,EAAE,CAAC,0DAA0D,EAAE;YAC7D,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;YAC5D,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACtC,MAAM,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;YACtC,MAAM,UAAU,GAAG,IAAI,cAAc,EAAE,CAAC;YACxC,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClC,MAAM,UAAU,GAAG,IAAI,cAAc,EAAE,CAAC;YACxC,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAErC,iCAAiC;YACjC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YACnD,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE;gBACvB,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC,CAAC,CAAC;YACH,MAAM,YAAY,GAAa,EAAE,CAAC;YAClC,MAAM,GAAG,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YACrD,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAE7B,mCAAmC;YACnC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE;YAC5D,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;YAC9D,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAEpC,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;YACpC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxC,MAAM,YAAY,GAAa,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;YAChE,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAE7B,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAExC,uDAAuD;YACvD,8DAA8D;YAC9D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;YACtD,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;YAEjC,gCAAgC;YAChC,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;YAChE,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAE1C,MAAM,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;YACtC,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAE1B,MAAM,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;YACtC,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAEtC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5C,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IAEL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","debug_id":"8a47882d-8280-5174-a0ef-2b8359d7b15e"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import 'mocha';
|
|
2
|
+
import { VisualKeyboard as VK } from "@keymanapp/common-types";
|
|
3
|
+
import VisualKeyboard = VK.VisualKeyboard;
|
|
4
|
+
export declare function verify_khmer_angkor(vk: VisualKeyboard): void;
|
|
5
|
+
export declare function verify_balochi_inpage(vk: VisualKeyboard): void;
|
|
6
|
+
//# sourceMappingURL=test-kvk-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-kvk-utils.d.ts","sourceRoot":"","sources":["../../../test/kvks/test-kvk-utils.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,CAAC;AAEf,OAAO,EAAE,cAAc,IAAI,EAAE,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,cAAc,GAAG,EAAE,CAAC,cAAc,CAAC;AAO1C,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,cAAc,QAgBrD;AAED,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,cAAc,QAkBvD"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// NOTE: this is a copy of common/web/types/test/kvk/test-kvk-utils.ts
|
|
2
|
+
|
|
3
|
+
!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]="bc45986c-38d6-5302-9671-083e6bd4c1b1")}catch(e){}}();
|
|
4
|
+
import 'mocha';
|
|
5
|
+
import { assert } from 'chai';
|
|
6
|
+
import { Constants } from '@keymanapp/common-types';
|
|
7
|
+
var USVirtualKeyCodes = Constants.USVirtualKeyCodes;
|
|
8
|
+
export function verify_khmer_angkor(vk) {
|
|
9
|
+
assert.equal(vk.header.flags, 8 /* VisualKeyboardHeaderFlags.kvkhAltGr */);
|
|
10
|
+
assert.equal(vk.header.associatedKeyboard, 'khmer_angkor');
|
|
11
|
+
assert.equal(vk.header.ansiFont.name, 'Arial');
|
|
12
|
+
assert.equal(vk.header.ansiFont.size, -12);
|
|
13
|
+
assert.equal(vk.header.unicodeFont.name, 'Khmer Busra Kbd');
|
|
14
|
+
assert.equal(vk.header.unicodeFont.size, 16);
|
|
15
|
+
assert.equal(vk.keys.length, 186);
|
|
16
|
+
assert.equal(vk.keys[0].flags, 2 /* VisualKeyboardKeyFlags.kvkkUnicode */);
|
|
17
|
+
assert.equal(vk.keys[0].vkey, USVirtualKeyCodes.K_B);
|
|
18
|
+
assert.equal(vk.keys[0].shift, 64 /* VisualKeyboardShiftState.KVKS_RALT */);
|
|
19
|
+
assert.equal(vk.keys[0].text, 'ឞ');
|
|
20
|
+
assert.equal(vk.keys[185].flags, 2 /* VisualKeyboardKeyFlags.kvkkUnicode */);
|
|
21
|
+
assert.equal(vk.keys[185].vkey, USVirtualKeyCodes.K_COMMA);
|
|
22
|
+
assert.equal(vk.keys[185].shift, 1 /* VisualKeyboardShiftState.KVKS_SHIFT */);
|
|
23
|
+
assert.equal(vk.keys[185].text, '');
|
|
24
|
+
}
|
|
25
|
+
export function verify_balochi_inpage(vk) {
|
|
26
|
+
assert.equal(vk.header.flags, 8 /* VisualKeyboardHeaderFlags.kvkhAltGr */ | 2 /* VisualKeyboardHeaderFlags.kvkhDisplayUnderlying */);
|
|
27
|
+
assert.equal(vk.header.associatedKeyboard, 'balochi_inpage');
|
|
28
|
+
assert.equal(vk.header.unicodeFont.name, 'Lateef');
|
|
29
|
+
assert.equal(vk.header.unicodeFont.size, 14);
|
|
30
|
+
assert.equal(vk.keys.length, 147);
|
|
31
|
+
assert.equal(vk.keys[0].flags, 2 /* VisualKeyboardKeyFlags.kvkkUnicode */);
|
|
32
|
+
assert.equal(vk.keys[0].vkey, USVirtualKeyCodes.K_BKQUOTE);
|
|
33
|
+
assert.equal(vk.keys[0].shift, 64 /* VisualKeyboardShiftState.KVKS_RALT */);
|
|
34
|
+
assert.equal(vk.keys[0].text, '');
|
|
35
|
+
assert.equal(vk.keys[30].flags, 2 /* VisualKeyboardKeyFlags.kvkkUnicode */ | 1 /* VisualKeyboardKeyFlags.kvkkBitmap */);
|
|
36
|
+
assert.equal(vk.keys[30].vkey, USVirtualKeyCodes.K_COMMA);
|
|
37
|
+
assert.equal(vk.keys[30].shift, 8 /* VisualKeyboardShiftState.KVKS_LCTRL */);
|
|
38
|
+
assert.equal(vk.keys[30].text, '');
|
|
39
|
+
assert.equal(vk.keys[30].bitmap.byteLength, 35766);
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=test-kvk-utils.js.map
|
|
42
|
+
//# debugId=bc45986c-38d6-5302-9671-083e6bd4c1b1
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-kvk-utils.js","sources":["../../../test/kvks/test-kvk-utils.ts"],"sourceRoot":"","names":[],"mappings":"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","debug_id":"bc45986c-38d6-5302-9671-083e6bd4c1b1"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-kvks-file.d.ts","sourceRoot":"","sources":["../../../test/kvks/test-kvks-file.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,CAAC"}
|