@keymanapp/kmc-analyze 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.
@@ -0,0 +1,8 @@
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]="6c5c028c-1154-5e8a-b548-319b58bf96c0")}catch(e){}}();
2
+ /**
3
+ * osk-char-use - get list of characters used in on screen keyboard + touch layout
4
+ */
5
+ export { AnalyzeOskCharacterUse } from './osk-character-use/index.js';
6
+ export { AnalyzeOskRewritePua } from './osk-rewrite-pua/index.js';
7
+ //# debugId=6c5c028c-1154-5e8a-b548-319b58bf96c0
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"debug_id":"6c5c028c-1154-5e8a-b548-319b58bf96c0","file":"index.d.ts","mappings":";AAAA;;GAEG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC","names":[],"sourceRoot":"","sources":["../../src/index.ts"],"version":3}
@@ -0,0 +1,8 @@
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]="3cd00283-b123-5923-bbf7-9ed617bb60cd")}catch(e){}}();
2
+ /**
3
+ * osk-char-use - get list of characters used in on screen keyboard + touch layout
4
+ */
5
+ export { AnalyzeOskCharacterUse } from './osk-character-use/index.js';
6
+ export { AnalyzeOskRewritePua } from './osk-rewrite-pua/index.js';
7
+ //# debugId=3cd00283-b123-5923-bbf7-9ed617bb60cd
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"debug_id":"3cd00283-b123-5923-bbf7-9ed617bb60cd","file":"index.js","mappings":";AAAA;;GAEG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC","names":[],"sourceRoot":"","sources":["../../src/index.ts"],"version":3}
@@ -0,0 +1,14 @@
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]="edaa7430-3729-52d1-aef2-541b7d4adc0f")}catch(e){}}();
2
+ export declare class AnalyzerMessages {
3
+ static Fatal_UnexpectedException: (o: {
4
+ e: any;
5
+ }) => import("@keymanapp/common-types").CompilerEvent;
6
+ static FATAL_UnexpectedException: number;
7
+ static Info_ScanningFile: (o: {
8
+ type: string;
9
+ name: string;
10
+ }) => import("@keymanapp/common-types").CompilerEvent;
11
+ static INFO_ScanningFile: number;
12
+ }
13
+ //# debugId=edaa7430-3729-52d1-aef2-541b7d4adc0f
14
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"debug_id":"edaa7430-3729-52d1-aef2-541b7d4adc0f","file":"messages.d.ts","mappings":";AASA,qBAAa,gBAAgB;IAC3B,MAAM,CAAC,yBAAyB,MAAM;QAAC,CAAC,EAAE,GAAG,CAAA;KAAC,qDAA4E;IAC1H,MAAM,CAAC,yBAAyB,SAAqB;IAErD,MAAM,CAAC,iBAAiB,MAAM;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,MAAM,CAAA;KAAC,qDACnB;IACvC,MAAM,CAAC,iBAAiB,SAAoB;CAC7C","names":[],"sourceRoot":"","sources":["../../src/messages.ts"],"version":3}
@@ -0,0 +1,17 @@
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]="32575934-5669-52e2-b179-0793e193c973")}catch(e){}}();
2
+ import { CompilerErrorNamespace, CompilerErrorSeverity, CompilerMessageSpec as m, compilerExceptionToString as exc } from "@keymanapp/common-types";
3
+ const Namespace = CompilerErrorNamespace.Analyzer;
4
+ const SevInfo = CompilerErrorSeverity.Info | Namespace;
5
+ // const SevHint = CompilerErrorSeverity.Hint | Namespace;
6
+ // const SevWarn = CompilerErrorSeverity.Warn | Namespace;
7
+ // const SevError = CompilerErrorSeverity.Error | Namespace;
8
+ const SevFatal = CompilerErrorSeverity.Fatal | Namespace;
9
+ export class AnalyzerMessages {
10
+ static Fatal_UnexpectedException = (o) => m(this.FATAL_UnexpectedException, `Unexpected exception: ${exc(o.e)}`);
11
+ static FATAL_UnexpectedException = SevFatal | 0x0001;
12
+ static Info_ScanningFile = (o) => m(this.INFO_ScanningFile, `Scanning ${o.type} file ${o.name}`);
13
+ static INFO_ScanningFile = SevInfo | 0x0002;
14
+ }
15
+ ;
16
+ //# debugId=32575934-5669-52e2-b179-0793e193c973
17
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"debug_id":"32575934-5669-52e2-b179-0793e193c973","file":"messages.js","mappings":";AAAA,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,mBAAmB,IAAI,CAAC,EAAE,yBAAyB,IAAI,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAEpJ,MAAM,SAAS,GAAG,sBAAsB,CAAC,QAAQ,CAAC;AAClD,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,GAAG,SAAS,CAAC;AACvD,0DAA0D;AAC1D,0DAA0D;AAC1D,4DAA4D;AAC5D,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,GAAG,SAAS,CAAC;AAEzD,MAAM,OAAO,gBAAgB;IAC3B,MAAM,CAAC,yBAAyB,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,yBAAyB,EAAE,yBAAyB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1H,MAAM,CAAC,yBAAyB,GAAG,QAAQ,GAAG,MAAM,CAAC;IAErD,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAA8B,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,EACrF,YAAY,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACvC,MAAM,CAAC,iBAAiB,GAAG,OAAO,GAAG,MAAM,CAAC;;AAC7C,CAAC","names":[],"sourceRoot":"","sources":["../../src/messages.ts"],"version":3}
@@ -0,0 +1,29 @@
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]="8bc2c9cc-a512-5536-8e6a-4c1348adc8d8")}catch(e){}}();
2
+ import { CompilerCallbacks } from "@keymanapp/common-types";
3
+ export interface AnalyzeOskCharacterUseOptions {
4
+ puaBase?: number;
5
+ stripDottedCircle?: boolean;
6
+ includeCounts?: boolean;
7
+ }
8
+ export declare class AnalyzeOskCharacterUse {
9
+ private callbacks;
10
+ private _strings;
11
+ private options;
12
+ constructor(callbacks: CompilerCallbacks, options?: AnalyzeOskCharacterUseOptions);
13
+ clear(): void;
14
+ analyze(file: string): Promise<boolean>;
15
+ private analyzeKmnKeyboard;
16
+ private addStrings;
17
+ private cleanString;
18
+ private scanVisualKeyboard;
19
+ private scanTouchLayout;
20
+ private prepareResults;
21
+ getStrings(format?: '.txt' | '.md' | '.json'): string[];
22
+ private static getStringsAsText;
23
+ private static getStringsAsMarkdown;
24
+ private static getStringsAsJson;
25
+ private static escapeMarkdownChar;
26
+ private static stringToUnicodeSequence;
27
+ }
28
+ //# debugId=8bc2c9cc-a512-5536-8e6a-4c1348adc8d8
29
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"debug_id":"8bc2c9cc-a512-5536-8e6a-4c1348adc8d8","file":"index.d.ts","mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAsF,MAAM,yBAAyB,CAAC;AAQhJ,MAAM,WAAW,6BAA6B;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAQD,qBAAa,sBAAsB;IAIrB,OAAO,CAAC,SAAS;IAH7B,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,OAAO,CAAgC;gBAE3B,SAAS,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,6BAA6B;IAIlF,KAAK;IAQC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;YAwCtC,kBAAkB;IAuBhC,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,kBAAkB;IAyB1B,OAAO,CAAC,eAAe;IAiDvB,OAAO,CAAC,cAAc;IAef,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAC,KAAK,GAAC,OAAO,GAAG,MAAM,EAAE;IAc1D,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAU/B,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAYnC,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAM/B,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAcjC,OAAO,CAAC,MAAM,CAAC,uBAAuB;CAUvC","names":[],"sourceRoot":"","sources":["../../../src/osk-character-use/index.ts"],"version":3}
@@ -0,0 +1,249 @@
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]="4f60f810-4a50-5fab-bff2-51f393970336")}catch(e){}}();
2
+ import { KeymanFileTypes, KvksFileReader, TouchLayoutFileReader } from "@keymanapp/common-types";
3
+ import { CompilerMessages } from '@keymanapp/kmc-kmn';
4
+ import { getOskFromKmnFile } from "../util/get-osk-from-kmn-file.js";
5
+ import { AnalyzerMessages } from "../messages.js";
6
+ const defaultOptions = {
7
+ puaBase: 0xF100,
8
+ stripDottedCircle: false,
9
+ includeCounts: false,
10
+ };
11
+ export class AnalyzeOskCharacterUse {
12
+ callbacks;
13
+ _strings = {};
14
+ options;
15
+ constructor(callbacks, options) {
16
+ this.callbacks = callbacks;
17
+ this.options = { ...defaultOptions, ...options };
18
+ }
19
+ clear() {
20
+ this._strings = {};
21
+ }
22
+ //
23
+ // Analyze a single file
24
+ //
25
+ async analyze(file) {
26
+ switch (KeymanFileTypes.sourceTypeFromFilename(file)) {
27
+ case ".kvks" /* KeymanFileTypes.Source.VisualKeyboard */: {
28
+ let strings = this.scanVisualKeyboard(file);
29
+ if (!strings) {
30
+ return false;
31
+ }
32
+ this.addStrings(strings, file);
33
+ break;
34
+ }
35
+ case ".keyman-touch-layout" /* KeymanFileTypes.Source.TouchLayout */: {
36
+ let strings = this.scanTouchLayout(file);
37
+ if (!strings) {
38
+ return false;
39
+ }
40
+ this.addStrings(strings, file);
41
+ break;
42
+ }
43
+ case ".kpj" /* KeymanFileTypes.Source.Project */:
44
+ throw new Error('Passing a project to analyze is not permitted');
45
+ break;
46
+ case ".kmn" /* KeymanFileTypes.Source.KeymanKeyboard */:
47
+ // The cleanest way to do this is to compile the .kmn to find the .kvks
48
+ // and .keyman-touch-layout from the &VISUALKEYBOARD and &LAYOUTFILE
49
+ // system stores
50
+ if (!await this.analyzeKmnKeyboard(file)) {
51
+ return false;
52
+ }
53
+ break;
54
+ case ".xml" /* KeymanFileTypes.Source.LdmlKeyboard */:
55
+ // TODO: await this.analyzeLdmlKeyboard(file);
56
+ // note, will need to skip .xml files that are not ldml keyboards
57
+ break;
58
+ default:
59
+ // Ignore any other file types; this way we can analyze project files/folders
60
+ // easily also
61
+ }
62
+ return true;
63
+ }
64
+ async analyzeKmnKeyboard(filename) {
65
+ this.callbacks.reportMessage(AnalyzerMessages.Info_ScanningFile({ type: 'keyboard source', name: filename }));
66
+ let osk = await getOskFromKmnFile(this.callbacks, filename);
67
+ if (osk.kvksFilename) {
68
+ let strings = this.scanVisualKeyboard(osk.kvksFilename);
69
+ if (!strings) {
70
+ return false;
71
+ }
72
+ this.addStrings(strings, osk.kvksFilename);
73
+ }
74
+ if (osk.touchLayoutFilename) {
75
+ let strings = this.scanTouchLayout(osk.touchLayoutFilename);
76
+ if (!strings) {
77
+ return false;
78
+ }
79
+ this.addStrings(strings, osk.touchLayoutFilename);
80
+ }
81
+ return true;
82
+ }
83
+ addStrings(strings, filename) {
84
+ // Reduce all references to get usage count per file
85
+ let reducedStrings = [...new Set(strings)].map(e => ({
86
+ str: e,
87
+ usages: [{ filename: this.callbacks.path.basename(filename), count: strings.filter(n => n === e).length }]
88
+ }));
89
+ // Merge result with existing found strings
90
+ for (let e of reducedStrings) {
91
+ this._strings[e.str] = [].concat(this._strings[e.str] ?? [], ...e.usages);
92
+ }
93
+ }
94
+ cleanString(s) {
95
+ if (this.options.stripDottedCircle) {
96
+ s = s.replace(/\u25cc/g, '');
97
+ }
98
+ return s.trim();
99
+ }
100
+ //
101
+ // On Screen Keyboard file scanning
102
+ //
103
+ scanVisualKeyboard(filename) {
104
+ this.callbacks.reportMessage(AnalyzerMessages.Info_ScanningFile({ type: 'visual keyboard', name: filename }));
105
+ let strings = [];
106
+ const reader = new KvksFileReader();
107
+ let source;
108
+ try {
109
+ source = reader.read(this.callbacks.loadFile(filename));
110
+ }
111
+ catch (e) {
112
+ this.callbacks.reportMessage(CompilerMessages.Error_InvalidKvksFile({ filename, e }));
113
+ return null;
114
+ }
115
+ let invalidKeys = [];
116
+ const vk = reader.transform(source, invalidKeys);
117
+ if (!vk) {
118
+ this.callbacks.reportMessage(CompilerMessages.Error_InvalidKvksFile({ filename, e: null }));
119
+ return null;
120
+ }
121
+ for (let key of vk.keys) {
122
+ if (key.text) {
123
+ strings.push(this.cleanString(key.text));
124
+ }
125
+ }
126
+ return strings;
127
+ }
128
+ scanTouchLayout(filename) {
129
+ this.callbacks.reportMessage(AnalyzerMessages.Info_ScanningFile({ type: 'touch layout', name: filename }));
130
+ let strings = [];
131
+ const reader = new TouchLayoutFileReader();
132
+ const source = reader.read(this.callbacks.loadFile(filename));
133
+ const scanKey = (key) => {
134
+ if (!key.text) {
135
+ return;
136
+ }
137
+ if (key.text.length > 2 && key.text[0] == '*' && key.text[key.text.length - 1] == '*') {
138
+ // Don't add '*special*' key captions
139
+ return;
140
+ }
141
+ strings.push(this.cleanString(key.text));
142
+ };
143
+ const scanPlatform = (platform) => {
144
+ if (!platform) {
145
+ return;
146
+ }
147
+ for (let layer of platform.layer) {
148
+ for (let row of layer.row) {
149
+ for (let key of row.key) {
150
+ scanKey(key);
151
+ let f;
152
+ for (f in key.flick ?? {}) {
153
+ scanKey(key.flick[f]);
154
+ }
155
+ for (let sk of key.sk ?? []) {
156
+ scanKey(sk);
157
+ }
158
+ for (let mt of key.multitap ?? []) {
159
+ scanKey(mt);
160
+ }
161
+ }
162
+ }
163
+ }
164
+ };
165
+ scanPlatform(source.desktop);
166
+ scanPlatform(source.phone);
167
+ scanPlatform(source.tablet);
168
+ return strings;
169
+ }
170
+ //
171
+ // Results reporting
172
+ //
173
+ prepareResults(strings) {
174
+ let result = [];
175
+ let pua = this.options.puaBase;
176
+ for (let str of Object.keys(strings)) {
177
+ result.push({
178
+ pua: pua.toString(16).toUpperCase(),
179
+ str,
180
+ unicode: AnalyzeOskCharacterUse.stringToUnicodeSequence(str, false),
181
+ usages: this.options.includeCounts ? strings[str] : strings[str].map(item => item.filename)
182
+ });
183
+ pua++;
184
+ }
185
+ return result;
186
+ }
187
+ getStrings(format) {
188
+ const final = this.prepareResults(this._strings);
189
+ switch (format) {
190
+ case '.md':
191
+ return AnalyzeOskCharacterUse.getStringsAsMarkdown(final);
192
+ case '.json':
193
+ return AnalyzeOskCharacterUse.getStringsAsJson(final);
194
+ }
195
+ return AnalyzeOskCharacterUse.getStringsAsText(final);
196
+ }
197
+ // Following functions are static so that we can keep them pure
198
+ // and potentially refactor into separate reporting class later
199
+ static getStringsAsText(strings) {
200
+ // Text result only returns PUA, unicode sequence, and plain string
201
+ let lines = [];
202
+ for (let s of strings) {
203
+ const ux = this.stringToUnicodeSequence(s.str);
204
+ lines.push('U+' + s.pua + '\t' + ux + '\t' + s.str);
205
+ }
206
+ return lines;
207
+ }
208
+ static getStringsAsMarkdown(strings) {
209
+ // Markdown result only returns PUA, unicode sequence, and plain string
210
+ let lines = [];
211
+ lines.push('PUA | Code Points | Key Caps');
212
+ lines.push('-------|-------------|---------');
213
+ for (let s of strings) {
214
+ const ux = this.stringToUnicodeSequence(s.str);
215
+ lines.push('U+' + s.pua + ' | ' + ux + ' | ' + this.escapeMarkdownChar(s.str));
216
+ }
217
+ return lines;
218
+ }
219
+ static getStringsAsJson(strings) {
220
+ // For future expansion, we wrap the array in a 'map' property
221
+ let map = { "map": strings };
222
+ return JSON.stringify(map, null, 2).split('\n');
223
+ }
224
+ static escapeMarkdownChar(s) {
225
+ // note: could replace with a common lib but too much baggage to be worth it for now
226
+ // commonmark 2.4: all punct can be escaped
227
+ // const punct = '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~';
228
+ s = s.replace(/[!"#$%&'()*+,-./:;<=>?@\[\\\]^_`{|}~]/g, '\\$0');
229
+ // replace whitepsace
230
+ s = s.replace(/[\n]/g, '\\n');
231
+ s = s.replace(/[\r]/g, '\\r');
232
+ s = s.replace(/[\t]/g, '\\t');
233
+ s = s.replace(/ /g, '&#x20;');
234
+ s = s.replace(/\u00a0/g, '&#xa0;');
235
+ return s;
236
+ }
237
+ static stringToUnicodeSequence(s, addUPlusPrefix = true) {
238
+ let result = [];
239
+ for (let ch of s) {
240
+ let c = ch.codePointAt(0).toString(16).toUpperCase();
241
+ if (c.length < 4)
242
+ c = '0'.repeat(4 - c.length) + c;
243
+ result.push((addUPlusPrefix ? 'U+' : '') + c);
244
+ }
245
+ return result.join(' ');
246
+ }
247
+ }
248
+ //# debugId=4f60f810-4a50-5fab-bff2-51f393970336
249
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"debug_id":"4f60f810-4a50-5fab-bff2-51f393970336","file":"index.js","mappings":";AAAA,OAAO,EAAqB,eAAe,EAAY,cAAc,EAAoB,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChJ,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAWlD,MAAM,cAAc,GAAkC;IACpD,OAAO,EAAE,MAAM;IACf,iBAAiB,EAAE,KAAK;IACxB,aAAa,EAAE,KAAK;CACrB,CAAA;AAED,MAAM,OAAO,sBAAsB;IAIb;IAHZ,QAAQ,GAAsB,EAAE,CAAC;IACjC,OAAO,CAAgC;IAE/C,YAAoB,SAA4B,EAAE,OAAuC;QAArE,cAAS,GAAT,SAAS,CAAmB;QAC9C,IAAI,CAAC,OAAO,GAAG,EAAC,GAAG,cAAc,EAAE,GAAG,OAAO,EAAC,CAAC;IACjD,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,EAAE;IACF,wBAAwB;IACxB,EAAE;IAEK,KAAK,CAAC,OAAO,CAAC,IAAY;QAC/B,QAAO,eAAe,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;YACnD,wDAA0C,CAAC,CAAC;gBAC1C,IAAI,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBAC5C,IAAG,CAAC,OAAO,EAAE;oBACX,OAAO,KAAK,CAAC;iBACd;gBACD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAC/B,MAAM;aACP;YACD,oEAAuC,CAAC,CAAC;gBACvC,IAAI,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;gBACzC,IAAG,CAAC,OAAO,EAAE;oBACX,OAAO,KAAK,CAAC;iBACd;gBACD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAC/B,MAAM;aACP;YACD;gBACE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;gBACjE,MAAM;YACR;gBACE,uEAAuE;gBACvE,oEAAoE;gBACpE,gBAAgB;gBAChB,IAAG,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE;oBACvC,OAAO,KAAK,CAAC;iBACd;gBACD,MAAM;YACR;gBACE,8CAA8C;gBAC9C,iEAAiE;gBACjE,MAAM;YACR,QAAQ;YACN,6EAA6E;YAC7E,cAAc;SACjB;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,QAAgB;QAC/C,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,EAAC,IAAI,EAAC,iBAAiB,EAAE,IAAI,EAAC,QAAQ,EAAC,CAAC,CAAC,CAAC;QAE1G,IAAI,GAAG,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAE5D,IAAG,GAAG,CAAC,YAAY,EAAE;YACnB,IAAI,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACxD,IAAG,CAAC,OAAO,EAAE;gBACX,OAAO,KAAK,CAAC;aACd;YACD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;SAC5C;QACD,IAAG,GAAG,CAAC,mBAAmB,EAAE;YAC1B,IAAI,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YAC5D,IAAG,CAAC,OAAO,EAAE;gBACX,OAAO,KAAK,CAAC;aACd;YACD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC;SACnD;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,UAAU,CAAC,OAAiB,EAAE,QAAgB;QACpD,oDAAoD;QACpD,IAAI,cAAc,GAAoB,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA,CAAC;YACnE,GAAG,EAAC,CAAC;YACL,MAAM,EAAE,CAAC,EAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACxG,CAAC,CAAC,CAAC;QAEJ,2CAA2C;QAC3C,KAAI,IAAI,CAAC,IAAI,cAAc,EAAE;YAC3B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;SAC3E;IACH,CAAC;IAEO,WAAW,CAAC,CAAS;QAC3B,IAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;YACjC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;SAC9B;QACD,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IAClB,CAAC;IAED,EAAE;IACF,mCAAmC;IACnC,EAAE;IAEM,kBAAkB,CAAC,QAAgB;QACzC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,EAAC,IAAI,EAAC,iBAAiB,EAAE,IAAI,EAAC,QAAQ,EAAC,CAAC,CAAC,CAAC;QAC1G,IAAI,OAAO,GAAa,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;QACpC,IAAI,MAAwB,CAAC;QAC7B,IAAI;YACF,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;SACzD;QAAC,OAAM,CAAC,EAAE;YACT,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,EAAC,QAAQ,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;YACpF,OAAO,IAAI,CAAC;SACb;QACD,IAAI,WAAW,GAAa,EAAE,CAAC;QAC/B,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACjD,IAAG,CAAC,EAAE,EAAE;YACN,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,EAAC,QAAQ,EAAE,CAAC,EAAC,IAAI,EAAC,CAAC,CAAC,CAAC;YACzF,OAAO,IAAI,CAAC;SACb;QACD,KAAI,IAAI,GAAG,IAAI,EAAE,CAAC,IAAI,EAAE;YACtB,IAAG,GAAG,CAAC,IAAI,EAAE;gBACX,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;aAC1C;SACF;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,eAAe,CAAC,QAAgB;QACtC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,EAAC,IAAI,EAAC,cAAc,EAAE,IAAI,EAAC,QAAQ,EAAC,CAAC,CAAC,CAAC;QACvG,IAAI,OAAO,GAAa,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAI,qBAAqB,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAE9D,MAAM,OAAO,GAAG,CAAC,GAA+D,EAAE,EAAE;YAClF,IAAG,CAAC,GAAG,CAAC,IAAI,EAAE;gBACZ,OAAO;aACR;YACD,IAAG,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAC,CAAC,CAAC,IAAI,GAAG,EAAE;gBAClF,qCAAqC;gBACrC,OAAO;aACR;YACD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3C,CAAC,CAAA;QAED,MAAM,YAAY,GAAG,CAAC,QAAyC,EAAE,EAAE;YACjE,IAAG,CAAC,QAAQ,EAAE;gBACZ,OAAO;aACR;YACD,KAAI,IAAI,KAAK,IAAI,QAAQ,CAAC,KAAK,EAAE;gBAC/B,KAAI,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE;oBACxB,KAAI,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE;wBACtB,OAAO,CAAC,GAAG,CAAC,CAAC;wBACb,IAAI,CAAqC,CAAC;wBAC1C,KAAI,CAAC,IAAI,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE;4BACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;yBACvB;wBACD,KAAI,IAAI,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE;4BAC1B,OAAO,CAAC,EAAE,CAAC,CAAC;yBACb;wBACD,KAAI,IAAI,EAAE,IAAI,GAAG,CAAC,QAAQ,IAAI,EAAE,EAAE;4BAChC,OAAO,CAAC,EAAE,CAAC,CAAC;yBACb;qBACF;iBACF;aACF;QACH,CAAC,CAAA;QACD,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7B,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3B,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,EAAE;IACF,oBAAoB;IACpB,EAAE;IAEM,cAAc,CAAC,OAA0B;QAC/C,IAAI,MAAM,GAAuB,EAAE,CAAC;QACpC,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;QAC/B,KAAI,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YACnC,MAAM,CAAC,IAAI,CAAC;gBACV,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;gBACnC,GAAG;gBACH,OAAO,EAAE,sBAAsB,CAAC,uBAAuB,CAAC,GAAG,EAAE,KAAK,CAAC;gBACnE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC5F,CAAC,CAAC;YACH,GAAG,EAAE,CAAC;SACP;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,UAAU,CAAC,MAA6B;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjD,QAAO,MAAM,EAAE;YACb,KAAK,KAAK;gBACR,OAAO,sBAAsB,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAC5D,KAAK,OAAO;gBACV,OAAO,sBAAsB,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;SACvD;QACH,OAAO,sBAAsB,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC;IAED,+DAA+D;IAC/D,+DAA+D;IAEvD,MAAM,CAAC,gBAAgB,CAAC,OAA2B;QACzD,mEAAmE;QACnE,IAAI,KAAK,GAAa,EAAE,CAAC;QACzB,KAAI,IAAI,CAAC,IAAI,OAAO,EAAE;YACpB,MAAM,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC/C,KAAK,CAAC,IAAI,CAAC,IAAI,GAAC,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;SACnD;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,MAAM,CAAC,oBAAoB,CAAC,OAA2B;QAC7D,uEAAuE;QACvE,IAAI,KAAK,GAAa,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC9C,KAAI,IAAI,CAAC,IAAI,OAAO,EAAE;YACpB,MAAM,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC/C,KAAK,CAAC,IAAI,CAAC,IAAI,GAAC,CAAC,CAAC,GAAG,GAAG,KAAK,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;SAC9E;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,MAAM,CAAC,gBAAgB,CAAC,OAA2B;QACzD,8DAA8D;QAC9D,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IAEO,MAAM,CAAC,kBAAkB,CAAC,CAAS;QACzC,oFAAoF;QACpF,2CAA2C;QAC3C,sDAAsD;QACtD,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,wCAAwC,EAAE,MAAM,CAAC,CAAC;QAChE,qBAAqB;QACrB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC9B,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC9B,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC9B,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC9B,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACnC,OAAO,CAAC,CAAC;IACX,CAAC;IAEO,MAAM,CAAC,uBAAuB,CAAC,CAAS,EAAE,iBAA0B,IAAI;QAC9E,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAI,IAAI,EAAE,IAAI,CAAC,EAAE;YACf,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YACrD,IAAG,CAAC,CAAC,MAAM,GAAG,CAAC;gBAAE,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAClD,MAAM,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SAC/C;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;CAEF","names":[],"sourceRoot":"","sources":["../../../src/osk-character-use/index.ts"],"version":3}
@@ -0,0 +1,17 @@
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]="90f593d1-df21-5a9b-a37e-cc80fb11ba65")}catch(e){}}();
2
+ import { CompilerCallbacks, Osk } from "@keymanapp/common-types";
3
+ export declare class AnalyzeOskRewritePua {
4
+ private callbacks;
5
+ private _data;
6
+ constructor(callbacks: CompilerCallbacks);
7
+ clear(): void;
8
+ analyze(file: string, mapping: Osk.StringResult[]): Promise<boolean>;
9
+ get data(): {
10
+ [index: string]: Uint8Array;
11
+ };
12
+ private analyzeKmnKeyboard;
13
+ private analyzeVisualKeyboard;
14
+ private analyzeTouchLayout;
15
+ }
16
+ //# debugId=90f593d1-df21-5a9b-a37e-cc80fb11ba65
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"debug_id":"90f593d1-df21-5a9b-a37e-cc80fb11ba65","file":"index.d.ts","mappings":";AAAA,OAAO,EAAE,iBAAiB,EAA6D,GAAG,EAAgD,MAAM,yBAAyB,CAAC;AAK1K,qBAAa,oBAAoB;IAGnB,OAAO,CAAC,SAAS;IAF7B,OAAO,CAAC,KAAK,CAAoC;gBAE7B,SAAS,EAAE,iBAAiB;IAGzC,KAAK;IAQC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,YAAY,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAgCjF,IAAW,IAAI;;MAEd;YAEa,kBAAkB;IAqBhC,OAAO,CAAC,qBAAqB;IA6B7B,OAAO,CAAC,kBAAkB;CAe3B","names":[],"sourceRoot":"","sources":["../../../src/osk-rewrite-pua/index.ts"],"version":3}
@@ -0,0 +1,106 @@
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]="ed8f36e3-17bc-57b1-9366-311992323cab")}catch(e){}}();
2
+ import { KeymanFileTypes, KvksFileReader, KvksFileWriter, Osk, TouchLayoutFileReader, TouchLayoutFileWriter } from "@keymanapp/common-types";
3
+ import { CompilerMessages } from '@keymanapp/kmc-kmn';
4
+ import { getOskFromKmnFile } from "../util/get-osk-from-kmn-file.js";
5
+ import { AnalyzerMessages } from "../messages.js";
6
+ export class AnalyzeOskRewritePua {
7
+ callbacks;
8
+ _data = {};
9
+ constructor(callbacks) {
10
+ this.callbacks = callbacks;
11
+ }
12
+ clear() {
13
+ this._data = {};
14
+ }
15
+ //
16
+ // Analyze a single file
17
+ //
18
+ async analyze(file, mapping) {
19
+ let map = Osk.parseMapping(mapping);
20
+ switch (KeymanFileTypes.sourceTypeFromFilename(file)) {
21
+ case ".kvks" /* KeymanFileTypes.Source.VisualKeyboard */:
22
+ this._data[file] = this.analyzeVisualKeyboard(file, map);
23
+ break;
24
+ case ".keyman-touch-layout" /* KeymanFileTypes.Source.TouchLayout */:
25
+ this._data[file] = this.analyzeTouchLayout(file, map);
26
+ break;
27
+ case ".kpj" /* KeymanFileTypes.Source.Project */:
28
+ throw new Error('Passing a project to analyze is not permitted');
29
+ break;
30
+ case ".kmn" /* KeymanFileTypes.Source.KeymanKeyboard */:
31
+ // The cleanest way to do this is to compile the .kmn to find the .kvks
32
+ // and .keyman-touch-layout from the &VISUALKEYBOARD and &LAYOUTFILE
33
+ // system stores
34
+ if (!await this.analyzeKmnKeyboard(file, map)) {
35
+ return false;
36
+ }
37
+ break;
38
+ case ".xml" /* KeymanFileTypes.Source.LdmlKeyboard */:
39
+ // TODO: await this.analyzeLdmlKeyboard(file);
40
+ // note, will need to skip .xml files that are not ldml keyboards
41
+ break;
42
+ default:
43
+ // Ignore any other file types; this way we can analyze project files/folders
44
+ // easily also
45
+ }
46
+ return true;
47
+ }
48
+ get data() {
49
+ return this._data;
50
+ }
51
+ async analyzeKmnKeyboard(filename, map) {
52
+ this.callbacks.reportMessage(AnalyzerMessages.Info_ScanningFile({ type: 'keyboard source', name: filename }));
53
+ let osk = await getOskFromKmnFile(this.callbacks, filename);
54
+ if (osk.kvksFilename) {
55
+ this._data[osk.kvksFilename] = this.analyzeVisualKeyboard(osk.kvksFilename, map);
56
+ }
57
+ if (osk.touchLayoutFilename) {
58
+ this._data[osk.touchLayoutFilename] = this.analyzeTouchLayout(osk.touchLayoutFilename, map);
59
+ }
60
+ return true;
61
+ }
62
+ //
63
+ // On Screen Keyboard file scanning
64
+ //
65
+ analyzeVisualKeyboard(filename, map) {
66
+ this.callbacks.reportMessage(AnalyzerMessages.Info_ScanningFile({ type: 'visual keyboard', name: filename }));
67
+ const reader = new KvksFileReader();
68
+ let source;
69
+ try {
70
+ source = reader.read(this.callbacks.loadFile(filename));
71
+ }
72
+ catch (e) {
73
+ this.callbacks.reportMessage(CompilerMessages.Error_InvalidKvksFile({ filename, e }));
74
+ return null;
75
+ }
76
+ let invalidKeys = [];
77
+ const vk = reader.transform(source, invalidKeys);
78
+ if (!vk) {
79
+ this.callbacks.reportMessage(CompilerMessages.Error_InvalidKvksFile({ filename, e: null }));
80
+ return null;
81
+ }
82
+ const dirty = Osk.remapVisualKeyboard(vk, map);
83
+ if (!dirty) {
84
+ return null;
85
+ }
86
+ const writer = new KvksFileWriter();
87
+ const data = writer.write(vk);
88
+ // TODO: the encoder probably needs to go into KvksFileWRiter
89
+ const enc = new TextEncoder();
90
+ return enc.encode(data);
91
+ }
92
+ analyzeTouchLayout(filename, map) {
93
+ this.callbacks.reportMessage(AnalyzerMessages.Info_ScanningFile({ type: 'touch layout', name: filename }));
94
+ const reader = new TouchLayoutFileReader();
95
+ const source = reader.read(this.callbacks.loadFile(filename));
96
+ let dirty = Osk.remapTouchLayout(source, map);
97
+ if (!dirty) {
98
+ return null;
99
+ }
100
+ const writer = new TouchLayoutFileWriter({ formatted: true });
101
+ const data = writer.write(source);
102
+ return data;
103
+ }
104
+ }
105
+ //# debugId=ed8f36e3-17bc-57b1-9366-311992323cab
106
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"debug_id":"ed8f36e3-17bc-57b1-9366-311992323cab","file":"index.js","mappings":"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","names":[],"sourceRoot":"","sources":["../../../src/osk-rewrite-pua/index.ts"],"version":3}
@@ -0,0 +1,8 @@
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]="fb4640fc-21b0-5e8c-931a-3f2957ccd462")}catch(e){}}();
2
+ import { CompilerCallbacks } from "@keymanapp/common-types";
3
+ export declare function getOskFromKmnFile(callbacks: CompilerCallbacks, filename: string): Promise<{
4
+ kvksFilename?: string;
5
+ touchLayoutFilename?: string;
6
+ }>;
7
+ //# debugId=fb4640fc-21b0-5e8c-931a-3f2957ccd462
8
+ //# sourceMappingURL=get-osk-from-kmn-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"debug_id":"fb4640fc-21b0-5e8c-931a-3f2957ccd462","file":"get-osk-from-kmn-file.d.ts","mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAsB,MAAM,yBAAyB,CAAC;AAGhF,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/F,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B,CAAC,CAmCD","names":[],"sourceRoot":"","sources":["../../../src/util/get-osk-from-kmn-file.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]="51dd88c5-9bec-5bf5-9b76-94fa100ecb99")}catch(e){}}();
2
+ import { KMX, KmxFileReader } from "@keymanapp/common-types";
3
+ import { KmnCompiler } from "@keymanapp/kmc-kmn";
4
+ export async function getOskFromKmnFile(callbacks, filename) {
5
+ let kvksFilename;
6
+ let touchLayoutFilename;
7
+ const kmnCompiler = new KmnCompiler();
8
+ if (!await kmnCompiler.init(callbacks)) {
9
+ // kmnCompiler will report errors
10
+ return null;
11
+ }
12
+ // Note, output filename here is just to provide path data,
13
+ // as nothing is written to disk
14
+ let result = kmnCompiler.runCompiler(filename, filename + '.tmp', {
15
+ shouldAddCompilerVersion: false,
16
+ saveDebug: false,
17
+ });
18
+ if (!result) {
19
+ // kmnCompiler will report any errors
20
+ return null;
21
+ }
22
+ if (result.extra.kvksFilename) {
23
+ kvksFilename = callbacks.resolveFilename(filename, result.extra.kvksFilename);
24
+ }
25
+ const reader = new KmxFileReader();
26
+ const keyboard = reader.read(result.kmx.data);
27
+ const touchLayoutStore = keyboard.stores.find(store => store.dwSystemID == KMX.KMXFile.TSS_LAYOUTFILE);
28
+ if (touchLayoutStore) {
29
+ touchLayoutFilename = callbacks.resolveFilename(filename, touchLayoutStore.dpString);
30
+ }
31
+ return { kvksFilename, touchLayoutFilename };
32
+ }
33
+ //# debugId=51dd88c5-9bec-5bf5-9b76-94fa100ecb99
34
+ //# sourceMappingURL=get-osk-from-kmn-file.js.map
@@ -0,0 +1 @@
1
+ {"debug_id":"51dd88c5-9bec-5bf5-9b76-94fa100ecb99","file":"get-osk-from-kmn-file.js","mappings":";AAAA,OAAO,EAAqB,GAAG,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,SAA4B,EAAE,QAAgB;IAIpF,IAAI,YAAoB,CAAC;IACzB,IAAI,mBAA2B,CAAC;IAEhC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;IACtC,IAAG,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;QACrC,iCAAiC;QACjC,OAAO,IAAI,CAAC;KACb;IAED,2DAA2D;IAC3D,gCAAgC;IAChC,IAAI,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,EAAE;QAChE,wBAAwB,EAAE,KAAK;QAC/B,SAAS,EAAE,KAAK;KACjB,CAAC,CAAC;IAEH,IAAG,CAAC,MAAM,EAAE;QACV,qCAAqC;QACrC,OAAO,IAAI,CAAC;KACb;IAED,IAAG,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE;QAC5B,YAAY,GAAG,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;KAC/E;IAED,MAAM,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;IACnC,MAAM,QAAQ,GAAiB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5D,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,IAAI,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAEvG,IAAG,gBAAgB,EAAE;QACnB,mBAAmB,GAAG,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;KACtF;IAED,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAA;AAC9C,CAAC","names":[],"sourceRoot":"","sources":["../../../src/util/get-osk-from-kmn-file.ts"],"version":3}
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@keymanapp/kmc-analyze",
3
+ "description": "Keyman Developer Compiler Module - keyboard analysis tools",
4
+ "keywords": [
5
+ "keyboard",
6
+ "keyman",
7
+ "unicode"
8
+ ],
9
+ "scripts": {
10
+ "build": "gosh ./build.sh build",
11
+ "test": "gosh ./build.sh test"
12
+ },
13
+ "type": "module",
14
+ "author": "Marc Durdin <marc@keyman.com> (https://github.com/mcdurdin)",
15
+ "license": "MIT",
16
+ "bugs": {
17
+ "url": "https://github.com/keymanapp/keyman/issues"
18
+ },
19
+ "main": "build/src/index.js",
20
+ "files": [
21
+ "build/src/"
22
+ ],
23
+ "dependencies": {
24
+ "@keymanapp/common-types": "17.0.156-alpha",
25
+ "@keymanapp/kmc-kmn": "17.0.156-alpha",
26
+ "commander": "^10.0.0"
27
+ },
28
+ "devDependencies": {
29
+ "@keymanapp/resources-gosh": "17.0.156-alpha",
30
+ "@types/chai": "^4.1.7",
31
+ "@types/mocha": "^5.2.7",
32
+ "@types/node": "^20.4.1",
33
+ "@types/xml2js": "^0.4.5",
34
+ "c8": "^7.12.0",
35
+ "chai": "^4.3.4",
36
+ "chalk": "^2.4.2",
37
+ "esbuild": "^0.15.8",
38
+ "mocha": "^8.4.0",
39
+ "ts-node": "^9.1.1",
40
+ "typescript": "^4.9.5"
41
+ },
42
+ "repository": {
43
+ "type": "git",
44
+ "url": "git+https://github.com/keymanapp/keyman.git"
45
+ },
46
+ "version": "17.0.156-alpha"
47
+ }