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