@keymanapp/kmc-kmn 17.0.112-alpha → 17.0.114-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 +11 -21
- package/build/src/compiler/compiler.d.ts.map +1 -1
- package/build/src/compiler/compiler.js +87 -64
- package/build/src/compiler/compiler.js.map +1 -1
- package/build/src/import/kmcmplib/wasm-host.js +688 -49
- 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
|
@@ -1,33 +1,23 @@
|
|
|
1
1
|
import { CompilerCallbacks } from '@keymanapp/common-types';
|
|
2
|
+
export interface CompilerResultFile {
|
|
3
|
+
filename: string;
|
|
4
|
+
data: Uint8Array;
|
|
5
|
+
}
|
|
6
|
+
export interface CompilerResult {
|
|
7
|
+
kmx?: CompilerResultFile;
|
|
8
|
+
kvk?: CompilerResultFile;
|
|
9
|
+
js?: CompilerResultFile;
|
|
10
|
+
}
|
|
2
11
|
export interface CompilerOptions {
|
|
3
12
|
shouldAddCompilerVersion?: boolean;
|
|
4
13
|
saveDebug?: boolean;
|
|
5
14
|
compilerWarningsAsErrors?: boolean;
|
|
6
15
|
warnDeprecatedCode?: boolean;
|
|
7
16
|
}
|
|
8
|
-
/**
|
|
9
|
-
* Pointer in wasm-space
|
|
10
|
-
*/
|
|
11
|
-
type WasmPtr = number;
|
|
12
|
-
/**
|
|
13
|
-
* The wrapped functions
|
|
14
|
-
*/
|
|
15
|
-
declare class WasmWrapper {
|
|
16
|
-
Module: any;
|
|
17
|
-
compileKeyboardFile?: (pszInfile: string, pszOutfile: string, aSaveDebug: number, aCompilerWarningsAsErrors: number, aWarnDeprecatedCode: number, msgProc: string) => boolean;
|
|
18
|
-
parseUnicodeSet?: (pat: string, buf: WasmPtr, length: number) => number;
|
|
19
|
-
setCompilerOptions?: (shouldAddCompilerVersion: number) => boolean;
|
|
20
|
-
constructor(wasmModule: any);
|
|
21
|
-
/**
|
|
22
|
-
* Entry point into Wasm functions
|
|
23
|
-
* @returns WasmWrapper
|
|
24
|
-
*/
|
|
25
|
-
static load(): Promise<WasmWrapper>;
|
|
26
|
-
}
|
|
27
17
|
export declare class KmnCompiler {
|
|
18
|
+
private Module;
|
|
28
19
|
callbackName: string;
|
|
29
20
|
callbacks: CompilerCallbacks;
|
|
30
|
-
wasm: WasmWrapper;
|
|
31
21
|
constructor();
|
|
32
22
|
init(callbacks: CompilerCallbacks): Promise<boolean>;
|
|
33
23
|
/**
|
|
@@ -38,6 +28,7 @@ export declare class KmnCompiler {
|
|
|
38
28
|
run(infile: string, outfile: string, options?: CompilerOptions): boolean;
|
|
39
29
|
private compilerMessageCallback;
|
|
40
30
|
private runCompiler;
|
|
31
|
+
private runKvkCompiler;
|
|
41
32
|
/**
|
|
42
33
|
*
|
|
43
34
|
* @param pattern UnicodeSet pattern such as `[a-z]`
|
|
@@ -59,5 +50,4 @@ export declare class UnicodeSet {
|
|
|
59
50
|
get length(): number;
|
|
60
51
|
toString(): string;
|
|
61
52
|
}
|
|
62
|
-
export {};
|
|
63
53
|
//# sourceMappingURL=compiler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../../src/compiler/compiler.ts"],"names":[],"mappings":"
|
|
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;AAgBD,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAM;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,iBAAiB,CAAC;;IAOhB,IAAI,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;IAajE;;;OAGG;IACI,iBAAiB,IAAK,OAAO;IAY7B,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO;IAyB/E,OAAO,CAAC,uBAAuB,CAG9B;IAED,OAAO,CAAC,WAAW;IA2CnB,OAAO,CAAC,cAAc;IA0BtB;;;;;OAKG;IACI,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAI,UAAU,GAAG,IAAI;CA8BhF;AA2BD;;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"}
|
|
@@ -1,28 +1,16 @@
|
|
|
1
1
|
/*
|
|
2
2
|
TODO: implement additional interfaces:
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
void* pfkBuffer,
|
|
7
|
-
bool ACompilerWarningsAsErrors,
|
|
8
|
-
bool AWarnDeprecatedCode,
|
|
9
|
-
kmcmp_CompilerMessageProc pMsgproc,
|
|
10
|
-
void* AmsgprocContext,
|
|
11
|
-
int Target
|
|
12
|
-
);
|
|
13
|
-
|
|
14
|
-
typedef bool (*kmcmp_ValidateJsonMessageProc)(int64_t offset, const char* szText, void* context);
|
|
15
|
-
|
|
16
|
-
extern "C" bool kmcmp_ValidateJsonFile(
|
|
17
|
-
std::fstream& f,
|
|
18
|
-
std::fstream& fd,
|
|
19
|
-
kmcmp_ValidateJsonMessageProc MessageProc,
|
|
20
|
-
void* context
|
|
21
|
-
);
|
|
4
|
+
typedef bool (*kmcmp_ValidateJsonMessageProc)();
|
|
5
|
+
extern "C" bool kmcmp_ValidateJsonFile();
|
|
22
6
|
*/
|
|
7
|
+
// TODO: rename wasm-host?
|
|
8
|
+
import { KvkFileWriter, KvksFileReader } from '@keymanapp/common-types';
|
|
23
9
|
import loadWasmHost from '../import/kmcmplib/wasm-host.js';
|
|
24
10
|
import { CompilerMessages, mapErrorFromKmcmplib } from './messages.js';
|
|
25
11
|
;
|
|
12
|
+
;
|
|
13
|
+
;
|
|
26
14
|
const baseOptions = {
|
|
27
15
|
shouldAddCompilerVersion: true,
|
|
28
16
|
saveDebug: true,
|
|
@@ -35,50 +23,19 @@ const baseOptions = {
|
|
|
35
23
|
* instance of the Compiler class
|
|
36
24
|
*/
|
|
37
25
|
let callbackProcIdentifier = 0;
|
|
38
|
-
/**
|
|
39
|
-
* The wrapped functions
|
|
40
|
-
*/
|
|
41
|
-
class WasmWrapper {
|
|
42
|
-
Module;
|
|
43
|
-
compileKeyboardFile;
|
|
44
|
-
parseUnicodeSet;
|
|
45
|
-
setCompilerOptions;
|
|
46
|
-
constructor(wasmModule) {
|
|
47
|
-
this.Module = wasmModule;
|
|
48
|
-
if (!wasmModule) {
|
|
49
|
-
throw Error(`wasm host did not load`);
|
|
50
|
-
}
|
|
51
|
-
this.compileKeyboardFile = this.Module.cwrap('kmcmp_Wasm_CompileKeyboardFile', 'boolean', ['string', 'string', 'number', 'number', 'number', 'string']);
|
|
52
|
-
this.parseUnicodeSet = this.Module.cwrap('kmcmp_Wasm_ParseUnicodeSet', 'number', ['string', 'number', 'number']);
|
|
53
|
-
this.setCompilerOptions = this.Module.cwrap('kmcmp_Wasm_SetCompilerOptions', 'boolean', ['number']);
|
|
54
|
-
if (this.parseUnicodeSet === undefined
|
|
55
|
-
|| this.setCompilerOptions === undefined
|
|
56
|
-
|| this.compileKeyboardFile === undefined) {
|
|
57
|
-
throw Error(`some wasm functions did not load properly.`);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Entry point into Wasm functions
|
|
62
|
-
* @returns WasmWrapper
|
|
63
|
-
*/
|
|
64
|
-
static async load() {
|
|
65
|
-
return new WasmWrapper(await loadWasmHost());
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
;
|
|
69
26
|
export class KmnCompiler {
|
|
27
|
+
Module;
|
|
70
28
|
callbackName;
|
|
71
29
|
callbacks;
|
|
72
|
-
wasm;
|
|
73
30
|
constructor() {
|
|
74
31
|
this.callbackName = 'kmnCompilerCallback' + callbackProcIdentifier;
|
|
75
32
|
callbackProcIdentifier++;
|
|
76
33
|
}
|
|
77
34
|
async init(callbacks) {
|
|
78
35
|
this.callbacks = callbacks;
|
|
79
|
-
if (!this.
|
|
36
|
+
if (!this.Module) {
|
|
80
37
|
try {
|
|
81
|
-
this.
|
|
38
|
+
this.Module = await loadWasmHost();
|
|
82
39
|
}
|
|
83
40
|
catch (e) {
|
|
84
41
|
this.callbacks.reportMessage(CompilerMessages.Fatal_MissingWasmModule({ e }));
|
|
@@ -96,7 +53,7 @@ export class KmnCompiler {
|
|
|
96
53
|
// Can't report a message here.
|
|
97
54
|
throw Error('Must call Compiler.init(callbacks) before proceeding');
|
|
98
55
|
}
|
|
99
|
-
if (!this.
|
|
56
|
+
if (!this.Module) { // fail if wasm not loaded or function not found
|
|
100
57
|
this.callbacks.reportMessage(CompilerMessages.Fatal_MissingWasmModule({}));
|
|
101
58
|
return false;
|
|
102
59
|
}
|
|
@@ -111,23 +68,90 @@ export class KmnCompiler {
|
|
|
111
68
|
// TODO: use callbacks for file access -- so kmc-kmn is entirely fs agnostic
|
|
112
69
|
let result = this.runCompiler(infile, outfile, options);
|
|
113
70
|
delete globalThis[this.callbackName];
|
|
114
|
-
|
|
71
|
+
//TODO: write the file out!
|
|
72
|
+
if (result) {
|
|
73
|
+
if (result.kmx) {
|
|
74
|
+
this.callbacks.fs.writeFileSync(result.kmx.filename, result.kmx.data);
|
|
75
|
+
}
|
|
76
|
+
if (result.kvk) {
|
|
77
|
+
this.callbacks.fs.writeFileSync(result.kvk.filename, result.kvk.data);
|
|
78
|
+
}
|
|
79
|
+
if (result.js) {
|
|
80
|
+
this.callbacks.fs.writeFileSync(result.js.filename, result.js.data);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return !!result;
|
|
115
84
|
}
|
|
116
85
|
compilerMessageCallback = (line, code, msg) => {
|
|
117
86
|
this.callbacks.reportMessage(mapErrorFromKmcmplib(line, code, msg));
|
|
118
87
|
return 1;
|
|
119
88
|
};
|
|
120
89
|
runCompiler(infile, outfile, options) {
|
|
90
|
+
let result = {};
|
|
91
|
+
let wasm_interface = new this.Module.CompilerInterface();
|
|
92
|
+
let wasm_options = new this.Module.CompilerOptions();
|
|
93
|
+
let wasm_result = null;
|
|
121
94
|
try {
|
|
122
|
-
|
|
123
|
-
|
|
95
|
+
wasm_options.saveDebug = options.saveDebug;
|
|
96
|
+
wasm_options.compilerWarningsAsErrors = options.compilerWarningsAsErrors;
|
|
97
|
+
wasm_options.warnDeprecatedCode = options.warnDeprecatedCode;
|
|
98
|
+
wasm_options.shouldAddCompilerVersion = options.shouldAddCompilerVersion;
|
|
99
|
+
wasm_options.target = 0; //CKF_KEYMAN; TODO, support KMW
|
|
100
|
+
wasm_interface.messageCallback = this.callbackName;
|
|
101
|
+
wasm_interface.loadFileCallback = this.callbackName; // TODO: this is wrong, needs to be a new callback; not yet used though
|
|
102
|
+
wasm_result = this.Module.kmcmp_compile(infile, wasm_options, wasm_interface);
|
|
103
|
+
if (!wasm_result.result) {
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
if (wasm_result.kvksFilename) {
|
|
107
|
+
result.kvk = this.runKvkCompiler(wasm_result.kvksFilename, infile, outfile);
|
|
108
|
+
if (!result.kvk) {
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
124
111
|
}
|
|
125
|
-
|
|
112
|
+
result.kmx = {
|
|
113
|
+
filename: outfile,
|
|
114
|
+
data: new Uint8Array(this.Module.HEAP8.buffer, wasm_result.kmx, wasm_result.kmxSize)
|
|
115
|
+
};
|
|
116
|
+
return result;
|
|
126
117
|
}
|
|
127
118
|
catch (e) {
|
|
128
119
|
this.callbacks.reportMessage(CompilerMessages.Fatal_UnexpectedException({ e: e }));
|
|
129
|
-
return
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
finally {
|
|
123
|
+
if (wasm_result) {
|
|
124
|
+
wasm_result.delete();
|
|
125
|
+
}
|
|
126
|
+
wasm_interface.delete();
|
|
127
|
+
wasm_options.delete();
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
runKvkCompiler(kvksFilename, kmnFilename, kmxFilename) {
|
|
131
|
+
// The compiler detected a .kvks file, which needs to be captured
|
|
132
|
+
let reader = new KvksFileReader();
|
|
133
|
+
kvksFilename = this.callbacks.resolveFilename(kmnFilename, kvksFilename);
|
|
134
|
+
let kvks = reader.read(this.callbacks.loadFile(kvksFilename));
|
|
135
|
+
try {
|
|
136
|
+
reader.validate(kvks, this.callbacks.loadSchema('kvks'));
|
|
137
|
+
}
|
|
138
|
+
catch (e) {
|
|
139
|
+
console.log(e);
|
|
140
|
+
// TODO: this.callbacks.reportMessage(CompilerMessages.Error_InvalidKvksFile({e}));
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
let errors = []; //TODO: KVKSParseError[];
|
|
144
|
+
let vk = reader.transform(kvks, errors);
|
|
145
|
+
if (!vk || errors.length) {
|
|
146
|
+
console.dir(errors);
|
|
147
|
+
// TODO: this.callbacks.reportMessage(CompilerMessages.Error_InvalidKvksFile({e}));
|
|
148
|
+
return null;
|
|
130
149
|
}
|
|
150
|
+
let writer = new KvkFileWriter();
|
|
151
|
+
return {
|
|
152
|
+
filename: this.callbacks.path.join(this.callbacks.path.dirname(kmxFilename), this.callbacks.path.basename(kvksFilename, '.kvks') + '.kvk'),
|
|
153
|
+
data: writer.write(vk)
|
|
154
|
+
};
|
|
131
155
|
}
|
|
132
156
|
/**
|
|
133
157
|
*
|
|
@@ -142,16 +166,15 @@ export class KmnCompiler {
|
|
|
142
166
|
if (!bufferSize) {
|
|
143
167
|
bufferSize = 100; // TODO-LDML: Preflight mode? Reuse buffer?
|
|
144
168
|
}
|
|
145
|
-
const
|
|
146
|
-
const buf = Module.asm.malloc(bufferSize * 2 * Module.HEAPU32.BYTES_PER_ELEMENT);
|
|
169
|
+
const buf = this.Module.asm.malloc(bufferSize * 2 * this.Module.HEAPU32.BYTES_PER_ELEMENT);
|
|
147
170
|
// TODO-LDML: Catch OOM
|
|
148
|
-
const rc = this.
|
|
171
|
+
const rc = this.Module.kmcmp_parseUnicodeSet(pattern, buf, bufferSize);
|
|
149
172
|
if (rc >= 0) {
|
|
150
173
|
const ranges = [];
|
|
151
|
-
const startu = (buf / Module.HEAPU32.BYTES_PER_ELEMENT);
|
|
174
|
+
const startu = (buf / this.Module.HEAPU32.BYTES_PER_ELEMENT);
|
|
152
175
|
for (let i = 0; i < rc; i++) {
|
|
153
|
-
const low = Module.HEAPU32[startu + (i * 2) + 0];
|
|
154
|
-
const high = Module.HEAPU32[startu + (i * 2) + 1];
|
|
176
|
+
const low = this.Module.HEAPU32[startu + (i * 2) + 0];
|
|
177
|
+
const high = this.Module.HEAPU32[startu + (i * 2) + 1];
|
|
155
178
|
ranges.push([low, high]);
|
|
156
179
|
}
|
|
157
180
|
// TODO-LDML: no free??
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../../src/compiler/compiler.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../../src/compiler/compiler.ts"],"names":[],"mappings":"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"}
|