@keymanapp/kmc-kmn 17.0.113-alpha → 17.0.115-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/src/compiler/compiler.d.ts +3 -22
- package/build/src/compiler/compiler.d.ts.map +1 -1
- package/build/src/compiler/compiler.js +57 -55
- package/build/src/compiler/compiler.js.map +1 -1
- package/build/src/import/kmcmplib/wasm-host.js +24 -1461
- package/build/src/import/kmcmplib/wasm-host.js.map +1 -1
- package/build/src/import/kmcmplib/wasm-host.wasm +0 -0
- package/package.json +3 -3
|
@@ -14,29 +14,10 @@ export interface CompilerOptions {
|
|
|
14
14
|
compilerWarningsAsErrors?: boolean;
|
|
15
15
|
warnDeprecatedCode?: boolean;
|
|
16
16
|
}
|
|
17
|
-
/**
|
|
18
|
-
* Pointer in wasm-space
|
|
19
|
-
*/
|
|
20
|
-
type WasmPtr = number;
|
|
21
|
-
/**
|
|
22
|
-
* The wrapped functions
|
|
23
|
-
*/
|
|
24
|
-
declare class WasmWrapper {
|
|
25
|
-
Module: any;
|
|
26
|
-
compileKeyboardFile?: (pszInfile: string, pszOutfile: string, aSaveDebug: number, aCompilerWarningsAsErrors: number, aWarnDeprecatedCode: number, msgProc: string) => boolean;
|
|
27
|
-
parseUnicodeSet?: (pat: string, buf: WasmPtr, length: number) => number;
|
|
28
|
-
setCompilerOptions?: (shouldAddCompilerVersion: number) => boolean;
|
|
29
|
-
constructor(wasmModule: any);
|
|
30
|
-
/**
|
|
31
|
-
* Entry point into Wasm functions
|
|
32
|
-
* @returns WasmWrapper
|
|
33
|
-
*/
|
|
34
|
-
static load(): Promise<WasmWrapper>;
|
|
35
|
-
}
|
|
36
17
|
export declare class KmnCompiler {
|
|
37
|
-
|
|
18
|
+
private Module;
|
|
19
|
+
callbackID: string;
|
|
38
20
|
callbacks: CompilerCallbacks;
|
|
39
|
-
wasm: WasmWrapper;
|
|
40
21
|
constructor();
|
|
41
22
|
init(callbacks: CompilerCallbacks): Promise<boolean>;
|
|
42
23
|
/**
|
|
@@ -46,6 +27,7 @@ export declare class KmnCompiler {
|
|
|
46
27
|
verifyInitialized(): boolean;
|
|
47
28
|
run(infile: string, outfile: string, options?: CompilerOptions): boolean;
|
|
48
29
|
private compilerMessageCallback;
|
|
30
|
+
private loadFileCallback;
|
|
49
31
|
private runCompiler;
|
|
50
32
|
private runKvkCompiler;
|
|
51
33
|
/**
|
|
@@ -69,5 +51,4 @@ export declare class UnicodeSet {
|
|
|
69
51
|
get length(): number;
|
|
70
52
|
toString(): string;
|
|
71
53
|
}
|
|
72
|
-
export {};
|
|
73
54
|
//# sourceMappingURL=compiler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../../src/compiler/compiler.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,iBAAiB,EAAgD,MAAM,yBAAyB,CAAC;AAI1G,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,kBAAkB,CAAC;IACzB,GAAG,CAAC,EAAE,kBAAkB,CAAC;IACzB,EAAE,CAAC,EAAE,kBAAkB,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACpC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC7B;
|
|
1
|
+
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../../src/compiler/compiler.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,iBAAiB,EAAgD,MAAM,yBAAyB,CAAC;AAI1G,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,kBAAkB,CAAC;IACzB,GAAG,CAAC,EAAE,kBAAkB,CAAC;IACzB,EAAE,CAAC,EAAE,kBAAkB,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACpC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAmBD,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAM;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,iBAAiB,CAAC;;IAOhB,IAAI,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;IAcjE;;;OAGG;IACI,iBAAiB,IAAK,OAAO;IAc7B,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO;IA2B/E,OAAO,CAAC,uBAAuB,CAG9B;IAED,OAAO,CAAC,gBAAgB,CAsBvB;IAED,OAAO,CAAC,WAAW;IA2CnB,OAAO,CAAC,cAAc;IA4BtB;;;;;OAKG;IACI,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAI,UAAU,GAAG,IAAI;CAgChF;AA4BD;;GAEG;AACH,qBAAa,UAAU;IACF,OAAO,EAAE,MAAM;IAAS,MAAM,EAAE,MAAM,EAAE,EAAE;gBAA1C,OAAO,EAAE,MAAM,EAAS,MAAM,EAAE,MAAM,EAAE,EAAE;IAE7D;;OAEG;IACH,IAAI,MAAM,IAAK,MAAM,CAEpB;IAED,QAAQ,IAAK,MAAM;CAGpB"}
|
|
@@ -23,52 +23,23 @@ const baseOptions = {
|
|
|
23
23
|
* instance of the Compiler class
|
|
24
24
|
*/
|
|
25
25
|
let callbackProcIdentifier = 0;
|
|
26
|
-
|
|
27
|
-
* The wrapped functions
|
|
28
|
-
*/
|
|
29
|
-
class WasmWrapper {
|
|
30
|
-
Module;
|
|
31
|
-
compileKeyboardFile;
|
|
32
|
-
parseUnicodeSet;
|
|
33
|
-
setCompilerOptions;
|
|
34
|
-
constructor(wasmModule) {
|
|
35
|
-
this.Module = wasmModule;
|
|
36
|
-
if (!wasmModule) {
|
|
37
|
-
throw Error(`wasm host did not load`);
|
|
38
|
-
}
|
|
39
|
-
this.compileKeyboardFile = this.Module.cwrap('kmcmp_Wasm_CompileKeyboardFile', 'boolean', ['string', 'string', 'number', 'number', 'number', 'string']);
|
|
40
|
-
this.parseUnicodeSet = this.Module.cwrap('kmcmp_Wasm_ParseUnicodeSet', 'number', ['string', 'number', 'number']);
|
|
41
|
-
this.setCompilerOptions = this.Module.cwrap('kmcmp_Wasm_SetCompilerOptions', 'boolean', ['number']);
|
|
42
|
-
if (this.parseUnicodeSet === undefined
|
|
43
|
-
|| this.setCompilerOptions === undefined
|
|
44
|
-
|| this.compileKeyboardFile === undefined) {
|
|
45
|
-
throw Error(`some wasm functions did not load properly.`);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Entry point into Wasm functions
|
|
50
|
-
* @returns WasmWrapper
|
|
51
|
-
*/
|
|
52
|
-
static async load() {
|
|
53
|
-
return new WasmWrapper(await loadWasmHost());
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
;
|
|
26
|
+
const callbackPrefix = 'kmnCompilerCallbacks_';
|
|
57
27
|
export class KmnCompiler {
|
|
58
|
-
|
|
28
|
+
Module;
|
|
29
|
+
callbackID; // a unique numeric id added to globals with prefixed names
|
|
59
30
|
callbacks;
|
|
60
|
-
wasm;
|
|
61
31
|
constructor() {
|
|
62
|
-
this.
|
|
32
|
+
this.callbackID = callbackPrefix + callbackProcIdentifier.toString();
|
|
63
33
|
callbackProcIdentifier++;
|
|
64
34
|
}
|
|
65
35
|
async init(callbacks) {
|
|
66
36
|
this.callbacks = callbacks;
|
|
67
|
-
if (!this.
|
|
37
|
+
if (!this.Module) {
|
|
68
38
|
try {
|
|
69
|
-
this.
|
|
39
|
+
this.Module = await loadWasmHost();
|
|
70
40
|
}
|
|
71
41
|
catch (e) {
|
|
42
|
+
/* c8 ignore next 3 */
|
|
72
43
|
this.callbacks.reportMessage(CompilerMessages.Fatal_MissingWasmModule({ e }));
|
|
73
44
|
return false;
|
|
74
45
|
}
|
|
@@ -84,7 +55,9 @@ export class KmnCompiler {
|
|
|
84
55
|
// Can't report a message here.
|
|
85
56
|
throw Error('Must call Compiler.init(callbacks) before proceeding');
|
|
86
57
|
}
|
|
87
|
-
if (!this.
|
|
58
|
+
if (!this.Module) {
|
|
59
|
+
/* c8 ignore next 4 */
|
|
60
|
+
// fail if wasm not loaded or function not found
|
|
88
61
|
this.callbacks.reportMessage(CompilerMessages.Fatal_MissingWasmModule({}));
|
|
89
62
|
return false;
|
|
90
63
|
}
|
|
@@ -92,14 +65,16 @@ export class KmnCompiler {
|
|
|
92
65
|
}
|
|
93
66
|
run(infile, outfile, options) {
|
|
94
67
|
if (!this.verifyInitialized()) {
|
|
68
|
+
/* c8 ignore next 2 */
|
|
95
69
|
return false;
|
|
96
70
|
}
|
|
97
71
|
options = { ...baseOptions, ...options };
|
|
98
|
-
globalThis[this.
|
|
99
|
-
|
|
72
|
+
globalThis[this.callbackID] = {
|
|
73
|
+
message: this.compilerMessageCallback,
|
|
74
|
+
loadFile: this.loadFileCallback
|
|
75
|
+
};
|
|
100
76
|
let result = this.runCompiler(infile, outfile, options);
|
|
101
|
-
delete globalThis[this.
|
|
102
|
-
//TODO: write the file out!
|
|
77
|
+
delete globalThis[this.callbackID];
|
|
103
78
|
if (result) {
|
|
104
79
|
if (result.kmx) {
|
|
105
80
|
this.callbacks.fs.writeFileSync(result.kmx.filename, result.kmx.data);
|
|
@@ -117,17 +92,38 @@ export class KmnCompiler {
|
|
|
117
92
|
this.callbacks.reportMessage(mapErrorFromKmcmplib(line, code, msg));
|
|
118
93
|
return 1;
|
|
119
94
|
};
|
|
95
|
+
loadFileCallback = (filename, baseFilename, buffer, bufferSize) => {
|
|
96
|
+
// TODO: we can optimize this in future by avoiding loading the file twice #8885
|
|
97
|
+
let resolvedFilename = this.callbacks.resolveFilename(baseFilename, filename);
|
|
98
|
+
let data = this.callbacks.loadFile(resolvedFilename);
|
|
99
|
+
if (!data) {
|
|
100
|
+
return 0;
|
|
101
|
+
}
|
|
102
|
+
if (buffer == 0) {
|
|
103
|
+
/* We need to return buffer size required */
|
|
104
|
+
return data.byteLength;
|
|
105
|
+
}
|
|
106
|
+
if (bufferSize != data.byteLength) {
|
|
107
|
+
// TODO: consider chucking a wobbly because this is a bug #8885
|
|
108
|
+
/* c8 ignore next 2 */
|
|
109
|
+
return 0;
|
|
110
|
+
}
|
|
111
|
+
this.Module.HEAP8.set(data, buffer);
|
|
112
|
+
return 1;
|
|
113
|
+
};
|
|
120
114
|
runCompiler(infile, outfile, options) {
|
|
121
115
|
let result = {};
|
|
122
|
-
let wasm_interface = new this.
|
|
116
|
+
let wasm_interface = new this.Module.CompilerInterface();
|
|
117
|
+
let wasm_options = new this.Module.CompilerOptions();
|
|
123
118
|
let wasm_result = null;
|
|
124
119
|
try {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
120
|
+
wasm_options.saveDebug = options.saveDebug;
|
|
121
|
+
wasm_options.compilerWarningsAsErrors = options.compilerWarningsAsErrors;
|
|
122
|
+
wasm_options.warnDeprecatedCode = options.warnDeprecatedCode;
|
|
123
|
+
wasm_options.shouldAddCompilerVersion = options.shouldAddCompilerVersion;
|
|
124
|
+
wasm_options.target = 0; //CKF_KEYMAN; TODO, support KMW
|
|
125
|
+
wasm_interface.callbacksKey = this.callbackID; // key of object on globalThis
|
|
126
|
+
wasm_result = this.Module.kmcmp_compile(infile, wasm_options, wasm_interface);
|
|
131
127
|
if (!wasm_result.result) {
|
|
132
128
|
return null;
|
|
133
129
|
}
|
|
@@ -139,11 +135,12 @@ export class KmnCompiler {
|
|
|
139
135
|
}
|
|
140
136
|
result.kmx = {
|
|
141
137
|
filename: outfile,
|
|
142
|
-
data: new Uint8Array(this.
|
|
138
|
+
data: new Uint8Array(this.Module.HEAP8.buffer, wasm_result.kmx, wasm_result.kmxSize)
|
|
143
139
|
};
|
|
144
140
|
return result;
|
|
145
141
|
}
|
|
146
142
|
catch (e) {
|
|
143
|
+
/* c8 ignore next 3 */
|
|
147
144
|
this.callbacks.reportMessage(CompilerMessages.Fatal_UnexpectedException({ e: e }));
|
|
148
145
|
return null;
|
|
149
146
|
}
|
|
@@ -152,6 +149,7 @@ export class KmnCompiler {
|
|
|
152
149
|
wasm_result.delete();
|
|
153
150
|
}
|
|
154
151
|
wasm_interface.delete();
|
|
152
|
+
wasm_options.delete();
|
|
155
153
|
}
|
|
156
154
|
}
|
|
157
155
|
runKvkCompiler(kvksFilename, kmnFilename, kmxFilename) {
|
|
@@ -164,6 +162,7 @@ export class KmnCompiler {
|
|
|
164
162
|
}
|
|
165
163
|
catch (e) {
|
|
166
164
|
console.log(e);
|
|
165
|
+
// TODO: also unit test #8886
|
|
167
166
|
// TODO: this.callbacks.reportMessage(CompilerMessages.Error_InvalidKvksFile({e}));
|
|
168
167
|
return null;
|
|
169
168
|
}
|
|
@@ -171,6 +170,7 @@ export class KmnCompiler {
|
|
|
171
170
|
let vk = reader.transform(kvks, errors);
|
|
172
171
|
if (!vk || errors.length) {
|
|
173
172
|
console.dir(errors);
|
|
173
|
+
// TODO: also unit test #8886
|
|
174
174
|
// TODO: this.callbacks.reportMessage(CompilerMessages.Error_InvalidKvksFile({e}));
|
|
175
175
|
return null;
|
|
176
176
|
}
|
|
@@ -188,21 +188,22 @@ export class KmnCompiler {
|
|
|
188
188
|
*/
|
|
189
189
|
parseUnicodeSet(pattern, bufferSize) {
|
|
190
190
|
if (!this.verifyInitialized()) {
|
|
191
|
+
/* c8 ignore next 2 */
|
|
191
192
|
return null;
|
|
192
193
|
}
|
|
193
194
|
if (!bufferSize) {
|
|
195
|
+
/* c8 ignore next 2 */
|
|
194
196
|
bufferSize = 100; // TODO-LDML: Preflight mode? Reuse buffer?
|
|
195
197
|
}
|
|
196
|
-
const
|
|
197
|
-
const buf = Module.asm.malloc(bufferSize * 2 * Module.HEAPU32.BYTES_PER_ELEMENT);
|
|
198
|
+
const buf = this.Module.asm.malloc(bufferSize * 2 * this.Module.HEAPU32.BYTES_PER_ELEMENT);
|
|
198
199
|
// TODO-LDML: Catch OOM
|
|
199
|
-
const rc = this.
|
|
200
|
+
const rc = this.Module.kmcmp_parseUnicodeSet(pattern, buf, bufferSize);
|
|
200
201
|
if (rc >= 0) {
|
|
201
202
|
const ranges = [];
|
|
202
|
-
const startu = (buf / Module.HEAPU32.BYTES_PER_ELEMENT);
|
|
203
|
+
const startu = (buf / this.Module.HEAPU32.BYTES_PER_ELEMENT);
|
|
203
204
|
for (let i = 0; i < rc; i++) {
|
|
204
|
-
const low = Module.HEAPU32[startu + (i * 2) + 0];
|
|
205
|
-
const high = Module.HEAPU32[startu + (i * 2) + 1];
|
|
205
|
+
const low = this.Module.HEAPU32[startu + (i * 2) + 0];
|
|
206
|
+
const high = this.Module.HEAPU32[startu + (i * 2) + 1];
|
|
206
207
|
ranges.push([low, high]);
|
|
207
208
|
}
|
|
208
209
|
// TODO-LDML: no free??
|
|
@@ -239,6 +240,7 @@ function getUnicodeSetError(rc) {
|
|
|
239
240
|
case KMCMP_FATAL_OUT_OF_RANGE:
|
|
240
241
|
return CompilerMessages.Fatal_UnicodeSetOutOfRange();
|
|
241
242
|
default:
|
|
243
|
+
/* c8 ignore next */
|
|
242
244
|
return CompilerMessages.Fatal_UnexpectedException({ e: `Unexpected UnicodeSet error code ${rc}` });
|
|
243
245
|
}
|
|
244
246
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../../src/compiler/compiler.ts"],"names":[],"mappings":"AAAA;;;;;EAKE;AAEF,0BAA0B;AAC1B,OAAO,EAAoC,aAAa,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC1G,OAAO,YAAY,MAAM,iCAAiC,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAKtE,CAAC;AAMD,CAAC;AAOD,CAAC;AAEF,MAAM,WAAW,GAAoB;IACnC,wBAAwB,EAAE,IAAI;IAC9B,SAAS,EAAE,IAAI;IACf,wBAAwB,EAAE,KAAK;IAC/B,kBAAkB,EAAE,IAAI;CACzB,CAAC;AAEF;;;;GAIG;AACH,IAAI,sBAAsB,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../../src/compiler/compiler.ts"],"names":[],"mappings":"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"}
|