@keymanapp/kmc 17.0.85-alpha → 17.0.87-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.
Files changed (58) hide show
  1. package/build/src/activities/BuildActivity.d.ts +13 -0
  2. package/build/src/activities/BuildActivity.d.ts.map +1 -0
  3. package/build/src/activities/BuildActivity.js +5 -0
  4. package/build/src/activities/BuildActivity.js.map +1 -0
  5. package/build/src/activities/BuildKmnKeyboard.d.ts +9 -0
  6. package/build/src/activities/BuildKmnKeyboard.d.ts.map +1 -0
  7. package/build/src/activities/BuildKmnKeyboard.js +41 -0
  8. package/build/src/activities/BuildKmnKeyboard.js.map +1 -0
  9. package/build/src/activities/BuildLdmlKeyboard.d.ts +9 -0
  10. package/build/src/activities/BuildLdmlKeyboard.d.ts.map +1 -0
  11. package/build/src/activities/{buildLdmlKeyboard.js → BuildLdmlKeyboard.js} +32 -29
  12. package/build/src/activities/BuildLdmlKeyboard.js.map +1 -0
  13. package/build/src/activities/BuildModel.d.ts +9 -0
  14. package/build/src/activities/BuildModel.d.ts.map +1 -0
  15. package/build/src/activities/BuildModel.js +28 -0
  16. package/build/src/activities/BuildModel.js.map +1 -0
  17. package/build/src/activities/BuildPackage.d.ts +9 -0
  18. package/build/src/activities/BuildPackage.d.ts.map +1 -0
  19. package/build/src/activities/BuildPackage.js +30 -0
  20. package/build/src/activities/BuildPackage.js.map +1 -0
  21. package/build/src/activities/BuildProject.d.ts +9 -0
  22. package/build/src/activities/BuildProject.d.ts.map +1 -0
  23. package/build/src/activities/{buildProject.js → BuildProject.js} +29 -31
  24. package/build/src/activities/BuildProject.js.map +1 -0
  25. package/build/src/activities/buildActivities.d.ts +3 -0
  26. package/build/src/activities/buildActivities.d.ts.map +1 -0
  27. package/build/src/activities/buildActivities.js +15 -0
  28. package/build/src/activities/buildActivities.js.map +1 -0
  29. package/build/src/activities/buildTestData.d.ts +2 -2
  30. package/build/src/activities/buildTestData.d.ts.map +1 -1
  31. package/build/src/activities/buildTestData.js.map +1 -1
  32. package/build/src/commands/build.d.ts +0 -5
  33. package/build/src/commands/build.d.ts.map +1 -1
  34. package/build/src/commands/build.js +19 -23
  35. package/build/src/commands/build.js.map +1 -1
  36. package/package.json +11 -8
  37. package/build/cjs-src/kmc.cjs +0 -187124
  38. package/build/cjs-src/kmlmc.cjs +0 -154539
  39. package/build/cjs-src/kmlmi.cjs +0 -17285
  40. package/build/cjs-src/kmlmp.cjs +0 -17229
  41. package/build/src/activities/buildKmnKeyboard.d.ts +0 -3
  42. package/build/src/activities/buildKmnKeyboard.d.ts.map +0 -1
  43. package/build/src/activities/buildKmnKeyboard.js +0 -35
  44. package/build/src/activities/buildKmnKeyboard.js.map +0 -1
  45. package/build/src/activities/buildLdmlKeyboard.d.ts +0 -3
  46. package/build/src/activities/buildLdmlKeyboard.d.ts.map +0 -1
  47. package/build/src/activities/buildLdmlKeyboard.js.map +0 -1
  48. package/build/src/activities/buildModel.d.ts +0 -3
  49. package/build/src/activities/buildModel.d.ts.map +0 -1
  50. package/build/src/activities/buildModel.js +0 -22
  51. package/build/src/activities/buildModel.js.map +0 -1
  52. package/build/src/activities/buildPackage.d.ts +0 -3
  53. package/build/src/activities/buildPackage.d.ts.map +0 -1
  54. package/build/src/activities/buildPackage.js +0 -24
  55. package/build/src/activities/buildPackage.js.map +0 -1
  56. package/build/src/activities/buildProject.d.ts +0 -3
  57. package/build/src/activities/buildProject.d.ts.map +0 -1
  58. package/build/src/activities/buildProject.js.map +0 -1
@@ -0,0 +1,13 @@
1
+ export interface BuildActivityOptions {
2
+ debug?: boolean;
3
+ outFile?: string;
4
+ compilerVersion?: boolean;
5
+ }
6
+ export declare abstract class BuildActivity {
7
+ abstract get name(): string;
8
+ abstract get sourceExtension(): string;
9
+ abstract get compiledExtension(): string;
10
+ abstract get description(): string;
11
+ abstract build(infile: string, options: BuildActivityOptions): Promise<boolean>;
12
+ }
13
+ //# sourceMappingURL=BuildActivity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuildActivity.d.ts","sourceRoot":"","sources":["../../../src/activities/BuildActivity.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,8BAAsB,aAAa;IACjC,aAAoB,IAAI,IAAI,MAAM,CAAC;IACnC,aAAoB,eAAe,IAAI,MAAM,CAAC;IAC9C,aAAoB,iBAAiB,IAAI,MAAM,CAAC;IAChD,aAAoB,WAAW,IAAI,MAAM,CAAC;aAC1B,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;CACvF"}
@@ -0,0 +1,5 @@
1
+ ;
2
+ export class BuildActivity {
3
+ }
4
+ ;
5
+ //# sourceMappingURL=BuildActivity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuildActivity.js","sourceRoot":"","sources":["../../../src/activities/BuildActivity.ts"],"names":[],"mappings":"AAIC,CAAC;AAEF,MAAM,OAAgB,aAAa;CAMlC;AAAA,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { BuildActivity, BuildActivityOptions } from './BuildActivity.js';
2
+ export declare class BuildKmnKeyboard implements BuildActivity {
3
+ get name(): string;
4
+ get sourceExtension(): string;
5
+ get compiledExtension(): string;
6
+ get description(): string;
7
+ build(infile: string, options: BuildActivityOptions): Promise<boolean>;
8
+ }
9
+ //# sourceMappingURL=BuildKmnKeyboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuildKmnKeyboard.d.ts","sourceRoot":"","sources":["../../../src/activities/BuildKmnKeyboard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAIzE,qBAAa,gBAAiB,YAAW,aAAa;IACpD,IAAW,IAAI,IAAI,MAAM,CAA8B;IACvD,IAAW,eAAe,IAAI,MAAM,CAAmB;IACvD,IAAW,iBAAiB,IAAI,MAAM,CAAmB;IACzD,IAAW,WAAW,IAAI,MAAM,CAAsC;IACzD,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;CAmBpF"}
@@ -0,0 +1,41 @@
1
+ import * as path from 'path';
2
+ import { Compiler } from '@keymanapp/kmc-kmn';
3
+ import { platform } from 'os';
4
+ export class BuildKmnKeyboard {
5
+ get name() { return 'Keyman keyboard'; }
6
+ get sourceExtension() { return '.kmn'; }
7
+ get compiledExtension() { return '.kmx'; }
8
+ get description() { return 'Build a Keyman keyboard'; }
9
+ async build(infile, options) {
10
+ let compiler = new Compiler();
11
+ if (!await compiler.init()) {
12
+ return false;
13
+ }
14
+ // We need to resolve paths to absolute paths before calling kmc-kmn
15
+ let outfile = (options.outFile ?? infile).replace(/\.km.$/i, this.compiledExtension);
16
+ infile = getPosixAbsolutePath(infile);
17
+ outfile = getPosixAbsolutePath(outfile);
18
+ // TODO: Currently this only builds .kmn->.kmx, and targeting .js is as-yet unsupported
19
+ // TODO: Support additional options compilerWarningsAsErrors, warnDeprecatedCode
20
+ return compiler.run(infile, outfile, {
21
+ saveDebug: options.debug,
22
+ shouldAddCompilerVersion: options.compilerVersion,
23
+ });
24
+ }
25
+ }
26
+ function getPosixAbsolutePath(filename) {
27
+ if (platform() == 'win32') {
28
+ // On Win32, we need to use backslashes for path.resolve to work
29
+ filename = filename.replace(/\//g, '\\');
30
+ }
31
+ // Resolve to a fully qualified absolute path
32
+ filename = path.resolve(filename);
33
+ if (platform() == 'win32') {
34
+ // Ensure that we convert the result back to posix-style paths which is what
35
+ // kmc-kmn expects. On posix platforms, we assume paths have forward slashes
36
+ // already
37
+ filename = filename.replace(/\\/g, '/');
38
+ }
39
+ return filename;
40
+ }
41
+ //# sourceMappingURL=BuildKmnKeyboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuildKmnKeyboard.js","sourceRoot":"","sources":["../../../src/activities/BuildKmnKeyboard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAE9B,MAAM,OAAO,gBAAgB;IAC3B,IAAW,IAAI,KAAa,OAAO,iBAAiB,CAAC,CAAC,CAAC;IACvD,IAAW,eAAe,KAAa,OAAO,MAAM,CAAC,CAAC,CAAC;IACvD,IAAW,iBAAiB,KAAa,OAAO,MAAM,CAAC,CAAC,CAAC;IACzD,IAAW,WAAW,KAAa,OAAO,yBAAyB,CAAC,CAAC,CAAC;IAC/D,KAAK,CAAC,KAAK,CAAC,MAAc,EAAE,OAA6B;QAC9D,IAAI,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC9B,IAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE;YACzB,OAAO,KAAK,CAAC;SACd;QAED,oEAAoE;QACpE,IAAI,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAErF,MAAM,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;QACtC,OAAO,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAExC,uFAAuF;QACvF,gFAAgF;QAChF,OAAO,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE;YACnC,SAAS,EAAE,OAAO,CAAC,KAAK;YACxB,wBAAwB,EAAE,OAAO,CAAC,eAAe;SAClD,CAAC,CAAC;IACL,CAAC;CACF;AAED,SAAS,oBAAoB,CAAC,QAAgB;IAC5C,IAAG,QAAQ,EAAE,IAAI,OAAO,EAAE;QACxB,gEAAgE;QAChE,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KAC1C;IAED,6CAA6C;IAC7C,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAElC,IAAG,QAAQ,EAAE,IAAI,OAAO,EAAE;QACxB,4EAA4E;QAC5E,4EAA4E;QAC5E,UAAU;QACV,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;KACzC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { BuildActivity, BuildActivityOptions } from './BuildActivity.js';
2
+ export declare class BuildLdmlKeyboard implements BuildActivity {
3
+ get name(): string;
4
+ get sourceExtension(): string;
5
+ get compiledExtension(): string;
6
+ get description(): string;
7
+ build(infile: string, options: BuildActivityOptions): Promise<boolean>;
8
+ }
9
+ //# sourceMappingURL=BuildLdmlKeyboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuildLdmlKeyboard.d.ts","sourceRoot":"","sources":["../../../src/activities/BuildLdmlKeyboard.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAEzE,qBAAa,iBAAkB,YAAW,aAAa;IACrD,IAAW,IAAI,IAAI,MAAM,CAA4B;IACrD,IAAW,eAAe,IAAI,MAAM,CAAmB;IACvD,IAAW,iBAAiB,IAAI,MAAM,CAAmB;IACzD,IAAW,WAAW,IAAI,MAAM,CAAoC;IACvD,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;CA+BpF"}
@@ -3,32 +3,38 @@ import * as fs from 'fs';
3
3
  import * as kmc from '@keymanapp/kmc-keyboard';
4
4
  import { KvkFileWriter } from '@keymanapp/common-types';
5
5
  import { NodeCompilerCallbacks } from '../util/NodeCompilerCallbacks.js';
6
- export async function buildLdmlKeyboard(infile, options) {
7
- // TODO-LDML: consider hardware vs touch -- touch-only layout will not have a .kvk
8
- // Compile:
9
- let [kmx, kvk, kmw] = buildLdmlKeyboardToMemory(infile, options);
10
- // Output:
11
- const fileBaseName = options.outFile ?? infile;
12
- const outFileBase = path.basename(fileBaseName, path.extname(fileBaseName));
13
- const outFileDir = path.dirname(fileBaseName);
14
- if (kmx && kvk) {
15
- const outFileKmx = path.join(outFileDir, outFileBase + '.kmx');
16
- console.log(`Writing compiled keyboard to ${outFileKmx}`);
17
- fs.writeFileSync(outFileKmx, kmx);
18
- const outFileKvk = path.join(outFileDir, outFileBase + '.kvk');
19
- console.log(`Writing compiled visual keyboard to ${outFileKvk}`);
20
- fs.writeFileSync(outFileKvk, kvk);
6
+ export class BuildLdmlKeyboard {
7
+ get name() { return 'LDML keyboard'; }
8
+ get sourceExtension() { return '.xml'; }
9
+ get compiledExtension() { return '.kmx'; }
10
+ get description() { return 'Build a LDML keyboard'; }
11
+ async build(infile, options) {
12
+ // TODO-LDML: consider hardware vs touch -- touch-only layout will not have a .kvk
13
+ // Compile:
14
+ let [kmx, kvk, kmw] = buildLdmlKeyboardToMemory(infile, options);
15
+ // Output:
16
+ const fileBaseName = options.outFile ?? infile;
17
+ const outFileBase = path.basename(fileBaseName, path.extname(fileBaseName));
18
+ const outFileDir = path.dirname(fileBaseName);
19
+ if (kmx && kvk) {
20
+ const outFileKmx = path.join(outFileDir, outFileBase + '.kmx');
21
+ console.log(`Writing compiled keyboard to ${outFileKmx}`);
22
+ fs.writeFileSync(outFileKmx, kmx);
23
+ const outFileKvk = path.join(outFileDir, outFileBase + '.kvk');
24
+ console.log(`Writing compiled visual keyboard to ${outFileKvk}`);
25
+ fs.writeFileSync(outFileKvk, kvk);
26
+ }
27
+ else {
28
+ console.error(`An error occurred compiling ${infile}`);
29
+ return false;
30
+ }
31
+ if (kmw) {
32
+ const outFileKmw = path.join(outFileDir, outFileBase + '.js');
33
+ console.log(`Writing compiled js keyboard to ${outFileKmw}`);
34
+ fs.writeFileSync(outFileKmw, kmw);
35
+ }
36
+ return true;
21
37
  }
22
- else {
23
- console.error(`An error occurred compiling ${infile}`);
24
- return false;
25
- }
26
- if (kmw) {
27
- const outFileKmw = path.join(outFileDir, outFileBase + '.js');
28
- console.log(`Writing compiled js keyboard to ${outFileKmw}`);
29
- fs.writeFileSync(outFileKmw, kmw);
30
- }
31
- return true;
32
38
  }
33
39
  function buildLdmlKeyboardToMemory(inputFilename, options) {
34
40
  let compilerOptions = {
@@ -41,9 +47,6 @@ function buildLdmlKeyboardToMemory(inputFilename, options) {
41
47
  if (!source) {
42
48
  return [null, null, null];
43
49
  }
44
- if (!k.validate(source)) {
45
- return [null, null, null];
46
- }
47
50
  let kmx = k.compile(source);
48
51
  if (!kmx) {
49
52
  return [null, null, null];
@@ -69,4 +72,4 @@ function buildLdmlKeyboardToMemory(inputFilename, options) {
69
72
  const kmw_binary = encoder.encode(kmw_string);
70
73
  return [kmx_binary, kvk_binary, kmw_binary];
71
74
  }
72
- //# sourceMappingURL=buildLdmlKeyboard.js.map
75
+ //# sourceMappingURL=BuildLdmlKeyboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuildLdmlKeyboard.js","sourceRoot":"","sources":["../../../src/activities/BuildLdmlKeyboard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { BuildActivity, BuildActivityOptions } from './BuildActivity.js';
2
+ export declare class BuildModel implements BuildActivity {
3
+ get name(): string;
4
+ get sourceExtension(): string;
5
+ get compiledExtension(): string;
6
+ get description(): string;
7
+ build(infile: string, options: BuildActivityOptions): Promise<boolean>;
8
+ }
9
+ //# sourceMappingURL=BuildModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuildModel.d.ts","sourceRoot":"","sources":["../../../src/activities/BuildModel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAGzE,qBAAa,UAAW,YAAW,aAAa;IAC9C,IAAW,IAAI,IAAI,MAAM,CAA4B;IACrD,IAAW,eAAe,IAAI,MAAM,CAAwB;IAC5D,IAAW,iBAAiB,IAAI,MAAM,CAAwB;IAC9D,IAAW,WAAW,IAAI,MAAM,CAAoC;IACvD,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;CAuBpF"}
@@ -0,0 +1,28 @@
1
+ import * as fs from 'fs';
2
+ import { compileModel } from '@keymanapp/kmc-model';
3
+ export class BuildModel {
4
+ get name() { return 'Lexical model'; }
5
+ get sourceExtension() { return '.model.ts'; }
6
+ get compiledExtension() { return '.model.js'; }
7
+ get description() { return 'Build a lexical model'; }
8
+ async build(infile, options) {
9
+ let outputFilename = options.outFile ? options.outFile : infile.replace(/\.ts$/i, this.compiledExtension);
10
+ let code = null;
11
+ // Compile:
12
+ try {
13
+ code = compileModel(infile);
14
+ }
15
+ catch (e) {
16
+ console.error(e);
17
+ return false;
18
+ }
19
+ if (!code) {
20
+ console.error('Compilation failed.');
21
+ return false;
22
+ }
23
+ // Output:
24
+ fs.writeFileSync(outputFilename, code, 'utf8');
25
+ return true;
26
+ }
27
+ }
28
+ //# sourceMappingURL=BuildModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuildModel.js","sourceRoot":"","sources":["../../../src/activities/BuildModel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,OAAO,UAAU;IACrB,IAAW,IAAI,KAAa,OAAO,eAAe,CAAC,CAAC,CAAC;IACrD,IAAW,eAAe,KAAa,OAAO,WAAW,CAAC,CAAC,CAAC;IAC5D,IAAW,iBAAiB,KAAa,OAAO,WAAW,CAAC,CAAC,CAAC;IAC9D,IAAW,WAAW,KAAa,OAAO,uBAAuB,CAAC,CAAC,CAAC;IAC7D,KAAK,CAAC,KAAK,CAAC,MAAc,EAAE,OAA6B;QAC9D,IAAI,cAAc,GAAW,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAElH,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,WAAW;QACX,IAAI;YACF,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;SAC7B;QAAC,OAAM,CAAC,EAAE;YACT,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACjB,OAAO,KAAK,CAAC;SACd;QAED,IAAG,CAAC,IAAI,EAAE;YACR,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAA;YACpC,OAAO,KAAK,CAAC;SACd;QAED,UAAU;QACV,EAAE,CAAC,aAAa,CAAC,cAAc,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAE/C,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -0,0 +1,9 @@
1
+ import { BuildActivity, BuildActivityOptions } from './BuildActivity.js';
2
+ export declare class BuildPackage implements BuildActivity {
3
+ get name(): string;
4
+ get sourceExtension(): string;
5
+ get compiledExtension(): string;
6
+ get description(): string;
7
+ build(infile: string, options: BuildActivityOptions): Promise<boolean>;
8
+ }
9
+ //# sourceMappingURL=BuildPackage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuildPackage.d.ts","sourceRoot":"","sources":["../../../src/activities/BuildPackage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAGzE,qBAAa,YAAa,YAAW,aAAa;IAChD,IAAW,IAAI,IAAI,MAAM,CAAsB;IAC/C,IAAW,eAAe,IAAI,MAAM,CAAmB;IACvD,IAAW,iBAAiB,IAAI,MAAM,CAAmB;IACzD,IAAW,WAAW,IAAI,MAAM,CAAsC;IACzD,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;CA0BpF"}
@@ -0,0 +1,30 @@
1
+ import * as fs from 'fs';
2
+ import KmpCompiler from '@keymanapp/kmc-package';
3
+ export class BuildPackage {
4
+ get name() { return 'Package'; }
5
+ get sourceExtension() { return '.kps'; }
6
+ get compiledExtension() { return '.kmp'; }
7
+ get description() { return 'Build a Keyman package'; }
8
+ async build(infile, options) {
9
+ let outputFilename = options.outFile ? options.outFile : infile.replace(/\.kps$/i, this.compiledExtension);
10
+ //
11
+ // Load .kps source data
12
+ //
13
+ let kpsString = fs.readFileSync(infile, 'utf8');
14
+ let kmpCompiler = new KmpCompiler();
15
+ let kmpJsonData = kmpCompiler.transformKpsToKmpObject(kpsString, infile);
16
+ //
17
+ // Build the .kmp package file
18
+ //
19
+ let data = await kmpCompiler.buildKmpFile(infile, kmpJsonData);
20
+ if (data) {
21
+ fs.writeFileSync(outputFilename, data, 'binary');
22
+ }
23
+ else {
24
+ // TODO error logging
25
+ return false;
26
+ }
27
+ return true;
28
+ }
29
+ }
30
+ //# sourceMappingURL=BuildPackage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuildPackage.js","sourceRoot":"","sources":["../../../src/activities/BuildPackage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,OAAO,WAAW,MAAM,wBAAwB,CAAC;AAEjD,MAAM,OAAO,YAAY;IACvB,IAAW,IAAI,KAAa,OAAO,SAAS,CAAC,CAAC,CAAC;IAC/C,IAAW,eAAe,KAAa,OAAO,MAAM,CAAC,CAAC,CAAC;IACvD,IAAW,iBAAiB,KAAa,OAAO,MAAM,CAAC,CAAC,CAAC;IACzD,IAAW,WAAW,KAAc,OAAO,wBAAwB,CAAC,CAAC,CAAC;IAC/D,KAAK,CAAC,KAAK,CAAC,MAAc,EAAE,OAA6B;QAE9D,IAAI,cAAc,GAAW,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAEnH,EAAE;QACF,wBAAwB;QACxB,EAAE;QAEF,IAAI,SAAS,GAAW,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxD,IAAI,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;QACpC,IAAI,WAAW,GAAG,WAAW,CAAC,uBAAuB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAEzE,EAAE;QACF,8BAA8B;QAC9B,EAAE;QAEF,IAAI,IAAI,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC/D,IAAG,IAAI,EAAE;YACP,EAAE,CAAC,aAAa,CAAC,cAAc,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;SAClD;aAAM;YACL,qBAAqB;YACrB,OAAO,KAAK,CAAC;SACd;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -0,0 +1,9 @@
1
+ import { BuildActivity, BuildActivityOptions } from './BuildActivity.js';
2
+ export declare class BuildProject implements BuildActivity {
3
+ get name(): string;
4
+ get sourceExtension(): string;
5
+ get compiledExtension(): string;
6
+ get description(): string;
7
+ build(infile: string, options: BuildActivityOptions): Promise<boolean>;
8
+ }
9
+ //# sourceMappingURL=BuildProject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuildProject.d.ts","sourceRoot":"","sources":["../../../src/activities/BuildProject.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAKzE,qBAAa,YAAa,YAAW,aAAa;IAChD,IAAW,IAAI,IAAI,MAAM,CAAsB;IAC/C,IAAW,eAAe,IAAI,MAAM,CAA8B;IAClE,IAAW,iBAAiB,IAAI,MAAM,CAAiB;IACvD,IAAW,WAAW,IAAI,MAAM,CAAyD;IAC5E,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;CAIpF"}
@@ -1,14 +1,18 @@
1
- import { KeymanDeveloperProject, KPJFileReader } from '@keymanapp/common-types';
2
- import { NodeCompilerCallbacks } from '../util/NodeCompilerCallbacks.js';
3
- import { buildKmnKeyboard } from './buildKmnKeyboard.js';
4
1
  import * as path from 'path';
5
2
  import * as fs from 'fs';
6
- import { buildLdmlKeyboard } from './buildLdmlKeyboard.js';
7
- import { buildModel } from './buildModel.js';
8
- import { buildPackage } from './buildPackage.js';
9
- export async function buildProject(infile, options) {
10
- let builder = new ProjectBuilder(infile, options);
11
- return builder.run();
3
+ import { KeymanDeveloperProject, KPJFileReader } from '@keymanapp/common-types';
4
+ import { NodeCompilerCallbacks } from '../util/NodeCompilerCallbacks.js';
5
+ import { buildActivities } from './buildActivities.js';
6
+ const PROJECT_EXTENSION = '.kpj';
7
+ export class BuildProject {
8
+ get name() { return 'Project'; }
9
+ get sourceExtension() { return PROJECT_EXTENSION; }
10
+ get compiledExtension() { return null; }
11
+ get description() { return 'Build a keyboard or lexical model project'; }
12
+ async build(infile, options) {
13
+ let builder = new ProjectBuilder(infile, options);
14
+ return builder.run();
15
+ }
12
16
  }
13
17
  class ProjectBuilder {
14
18
  callbacks = new NodeCompilerCallbacks();
@@ -29,21 +33,15 @@ class ProjectBuilder {
29
33
  if (!this.project) {
30
34
  return false;
31
35
  }
32
- // Build all Keyman keyboards in the project
33
- if (!await this.buildProjectTargets(buildKmnKeyboard, '.kmn', '.kmx')) {
34
- return false;
35
- }
36
- // Build all LDML keyboards in the project
37
- if (!await this.buildProjectTargets(buildLdmlKeyboard, '.xml', '.kmx')) {
38
- return false;
39
- }
40
- // Build all models in the project
41
- if (!await this.buildProjectTargets(buildModel, '.model.ts', '.model.js')) {
42
- return false;
43
- }
44
- // Build all packages in the project
45
- if (!await this.buildProjectTargets(buildPackage, '.kps', '.kmp')) {
46
- return false;
36
+ // Go through the various file types and build them
37
+ for (let builder of buildActivities) {
38
+ if (builder.sourceExtension == PROJECT_EXTENSION) {
39
+ // We don't support nested projects
40
+ continue;
41
+ }
42
+ if (!await this.buildProjectTargets(builder)) {
43
+ return false;
44
+ }
47
45
  }
48
46
  // TODO: generate .keyboard_info from .kps + etc (and support merge of
49
47
  // $PROJECTPATH/.keyboard_info for version 1.0 projects)
@@ -85,23 +83,23 @@ class ProjectBuilder {
85
83
  const project = reader.transform(this.infile, kpj);
86
84
  return project;
87
85
  }
88
- async buildProjectTargets(buildTarget, fileType, outputFileType) {
86
+ async buildProjectTargets(activity) {
89
87
  let result = true;
90
88
  for (let file of this.project.files) {
91
- if (file.fileType.toLowerCase() == fileType) {
92
- result = await this.buildTarget(file, buildTarget, fileType, outputFileType) && result;
89
+ if (file.fileType.toLowerCase() == activity.sourceExtension) {
90
+ result = await this.buildTarget(file, activity) && result;
93
91
  }
94
92
  }
95
93
  return result;
96
94
  }
97
- async buildTarget(file, buildTarget, fileType, outputFileType) {
95
+ async buildTarget(file, activity) {
98
96
  const options = { ...this.options };
99
- options.outFile = this.project.resolveOutputFilePath(this.infile, file, fileType, outputFileType);
97
+ options.outFile = this.project.resolveOutputFilePath(this.infile, file, activity.sourceExtension, activity.compiledExtension);
100
98
  const infile = this.project.resolveInputFilePath(this.infile, file);
101
99
  // TODO: callbacks.reportMessage, improve logging and make consistent
102
100
  console.log(`Building ${infile}\n Output ${options.outFile}`);
103
101
  fs.mkdirSync(path.dirname(options.outFile), { recursive: true });
104
- let result = await buildTarget(infile, options);
102
+ let result = await activity.build(infile, options);
105
103
  if (result) {
106
104
  console.log(`${path.basename(infile)} built successfully.`);
107
105
  }
@@ -111,4 +109,4 @@ class ProjectBuilder {
111
109
  return result;
112
110
  }
113
111
  }
114
- //# sourceMappingURL=buildProject.js.map
112
+ //# sourceMappingURL=BuildProject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuildProject.js","sourceRoot":"","sources":["../../../src/activities/BuildProject.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { BuildActivity } from './BuildActivity.js';
2
+ export declare const buildActivities: BuildActivity[];
3
+ //# sourceMappingURL=buildActivities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildActivities.d.ts","sourceRoot":"","sources":["../../../src/activities/buildActivities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AASnD,eAAO,MAAM,eAAe,EAAE,aAAa,EAM1C,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { BuildKmnKeyboard } from './BuildKmnKeyboard.js';
2
+ import { BuildLdmlKeyboard } from './BuildLdmlKeyboard.js';
3
+ import { BuildModel } from './BuildModel.js';
4
+ import { BuildPackage } from './BuildPackage.js';
5
+ import { BuildProject } from './BuildProject.js';
6
+ // These builders are listed in the order that files need to be built in
7
+ // projects. Packages depend on .kmn, .xml and .model.ts file types
8
+ export const buildActivities = [
9
+ new BuildKmnKeyboard(),
10
+ new BuildLdmlKeyboard(),
11
+ new BuildModel(),
12
+ new BuildPackage(),
13
+ new BuildProject()
14
+ ];
15
+ //# sourceMappingURL=buildActivities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildActivities.js","sourceRoot":"","sources":["../../../src/activities/buildActivities.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,wEAAwE;AACxE,mEAAmE;AACnE,MAAM,CAAC,MAAM,eAAe,GAAoB;IAC9C,IAAI,gBAAgB,EAAE;IACtB,IAAI,iBAAiB,EAAE;IACvB,IAAI,UAAU,EAAE;IAChB,IAAI,YAAY,EAAE;IAClB,IAAI,YAAY,EAAE;CACnB,CAAC"}
@@ -1,3 +1,3 @@
1
- import { BuildCommandOptions } from '../commands/build.js';
2
- export declare function buildTestData(infile: string, options: BuildCommandOptions): void;
1
+ import { BuildActivityOptions } from './BuildActivity.js';
2
+ export declare function buildTestData(infile: string, options: BuildActivityOptions): void;
3
3
  //# sourceMappingURL=buildTestData.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildTestData.d.ts","sourceRoot":"","sources":["../../../src/activities/buildTestData.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,QAkBzE"}
1
+ {"version":3,"file":"buildTestData.d.ts","sourceRoot":"","sources":["../../../src/activities/buildTestData.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,QAkB1E"}
@@ -1 +1 @@
1
- {"version":3,"file":"buildTestData.js","sourceRoot":"","sources":["../../../src/activities/buildTestData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,GAAG,MAAM,yBAAyB,CAAC;AAE/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAGzE,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,OAA4B;IACxE,IAAI,eAAe,GAAwB;QACzC,KAAK,EAAE,KAAK;QACZ,kBAAkB,EAAE,KAAK;KAC1B,CAAC;IAEF,IAAI,QAAQ,GAAG,YAAY,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACrD,IAAI,CAAC,QAAQ,EAAE;QACb,OAAO;KACR;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC;IAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IAC5E,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,6BAA6B,WAAW,EAAE,CAAC,CAAC;IACxD,EAAE;SACD,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACpE,CAAC;AACD,SAAS,YAAY,CAAC,aAAqB,EAAE,OAA4B;IACvE,MAAM,CAAC,GAAsB,IAAI,qBAAqB,EAAE,CAAC;IACzD,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACvC,IAAI,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,IAAI,CAAC;KACb;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"buildTestData.js","sourceRoot":"","sources":["../../../src/activities/buildTestData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,GAAG,MAAM,yBAAyB,CAAC;AAE/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAGzE,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,OAA6B;IACzE,IAAI,eAAe,GAAwB;QACzC,KAAK,EAAE,KAAK;QACZ,kBAAkB,EAAE,KAAK;KAC1B,CAAC;IAEF,IAAI,QAAQ,GAAG,YAAY,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACrD,IAAI,CAAC,QAAQ,EAAE;QACb,OAAO;KACR;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC;IAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IAC5E,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,6BAA6B,WAAW,EAAE,CAAC,CAAC;IACxD,EAAE;SACD,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACpE,CAAC;AACD,SAAS,YAAY,CAAC,aAAqB,EAAE,OAA4B;IACvE,MAAM,CAAC,GAAsB,IAAI,qBAAqB,EAAE,CAAC;IACzD,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACvC,IAAI,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,IAAI,CAAC;KACb;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,8 +1,3 @@
1
1
  import { Command } from 'commander';
2
- export interface BuildCommandOptions {
3
- debug?: boolean;
4
- outFile?: string;
5
- compilerVersion?: boolean;
6
- }
7
2
  export declare function declareBuild(program: Command): void;
8
3
  //# sourceMappingURL=build.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/commands/build.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,QAkB5C"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/commands/build.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,QAkB5C"}
@@ -1,16 +1,12 @@
1
1
  import * as fs from 'fs';
2
- import { buildPackage } from '../activities/buildPackage.js';
3
- import { buildKmnKeyboard } from '../activities/buildKmnKeyboard.js';
4
- import { buildLdmlKeyboard } from '../activities/buildLdmlKeyboard.js';
5
- import { buildModel } from '../activities/buildModel.js';
6
- import { buildProject } from '../activities/buildProject.js';
7
- ;
2
+ import { buildActivities } from '../activities/buildActivities.js';
3
+ import { BuildProject } from '../activities/BuildProject.js';
8
4
  export function declareBuild(program) {
9
5
  program
10
6
  .command('build [infile...]')
11
7
  .description('Build a source file into a final file')
12
8
  .option('-d, --debug', 'Include debug information in output')
13
- .option('-o, --out-file <filename>', 'where to save the resulting .kmx file')
9
+ .option('-o, --out-file <filename>', 'Override the default path and filename for the output file')
14
10
  .option('--no-compiler-version', 'Exclude compiler version metadata from output')
15
11
  .action((infiles, options) => {
16
12
  let p = [];
@@ -26,25 +22,25 @@ export function declareBuild(program) {
26
22
  }
27
23
  async function build(infile, options) {
28
24
  console.log(`Building ${infile}`);
29
- if (infile.endsWith('.xml')) {
30
- return buildLdmlKeyboard(infile, options);
31
- }
32
- if (infile.endsWith('.kmn')) {
33
- return buildKmnKeyboard(infile, options);
34
- }
35
- if (infile.endsWith('.kps')) {
36
- return buildPackage(infile, options);
37
- }
38
- if (infile.endsWith('.model.ts')) {
39
- return buildModel(infile, options);
40
- }
41
- if (infile.endsWith('.kpj')) {
42
- return buildProject(infile, options);
25
+ if (!fs.existsSync(infile)) {
26
+ // TODO: consolidate errors
27
+ console.error(`File ${infile} does not exist`);
28
+ process.exit(2);
43
29
  }
30
+ // If infile is a directory, then we treat that as a project and build it
44
31
  if (fs.statSync(infile).isDirectory()) {
45
- return buildProject(infile, options);
32
+ return (new BuildProject()).build(infile, options);
33
+ }
34
+ // Otherwise, if it's one of our known file extensions, we build it
35
+ let extensions = '';
36
+ for (let build of buildActivities) {
37
+ if (infile.toLowerCase().endsWith(build.sourceExtension)) {
38
+ return build.build(infile, options);
39
+ }
40
+ extensions += build.sourceExtension + ', ';
46
41
  }
47
- console.error(`Unrecognised input file ${infile}, expecting .xml, .kmn, .kps, .model.ts, .kpj, or project folder`);
42
+ // TODO: consolidate errors
43
+ console.error(`Unrecognised input file ${infile}, expecting ${extensions}or project folder`);
48
44
  process.exit(2);
49
45
  }
50
46
  //# sourceMappingURL=build.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAM5D,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,OAAO;SACJ,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CAAC,uCAAuC,CAAC;SACpD,MAAM,CAAC,aAAa,EAAE,qCAAqC,CAAC;SAC5D,MAAM,CAAC,2BAA2B,EAAE,uCAAuC,CAAC;SAC5E,MAAM,CAAC,uBAAuB,EAAE,+CAA+C,CAAC;SAChF,MAAM,CAAC,CAAC,OAAiB,EAAE,OAAY,EAAE,EAAE;QAC1C,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,IAAG,CAAC,OAAO,CAAC,MAAM,EAAE;YAClB,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;YACtC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;SAC7B;QACD,KAAI,IAAI,MAAM,IAAI,OAAO,EAAE;YACzB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;SAChC;QACD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;AACP,CAAC;AAED,KAAK,UAAU,KAAK,CAAC,MAAc,EAAE,OAA4B;IAC/D,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,EAAE,CAAC,CAAC;IAElC,IAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAC1B,OAAO,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC3C;IAED,IAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAC1B,OAAO,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC1C;IAED,IAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAC1B,OAAO,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACtC;IAED,IAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;QAC/B,OAAO,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpC;IAED,IAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAC1B,OAAO,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACtC;IAED,IAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE;QACpC,OAAO,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACtC;IAED,OAAO,CAAC,KAAK,CAAC,2BAA2B,MAAM,kEAAkE,CAAC,CAAC;IACnH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAGzB,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7D,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,OAAO;SACJ,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CAAC,uCAAuC,CAAC;SACpD,MAAM,CAAC,aAAa,EAAE,qCAAqC,CAAC;SAC5D,MAAM,CAAC,2BAA2B,EAAE,4DAA4D,CAAC;SACjG,MAAM,CAAC,uBAAuB,EAAE,+CAA+C,CAAC;SAChF,MAAM,CAAC,CAAC,OAAiB,EAAE,OAAY,EAAE,EAAE;QAC1C,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,IAAG,CAAC,OAAO,CAAC,MAAM,EAAE;YAClB,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;YACtC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;SAC7B;QACD,KAAI,IAAI,MAAM,IAAI,OAAO,EAAE;YACzB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;SAChC;QACD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;AACP,CAAC;AAED,KAAK,UAAU,KAAK,CAAC,MAAc,EAAE,OAA6B;IAChE,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,EAAE,CAAC,CAAC;IAElC,IAAG,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;QACzB,2BAA2B;QAC3B,OAAO,CAAC,KAAK,CAAC,QAAQ,MAAM,iBAAiB,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;IAED,yEAAyE;IACzE,IAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE;QACpC,OAAO,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpD;IAED,mEAAmE;IACnE,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,KAAI,IAAI,KAAK,IAAI,eAAe,EAAE;QAChC,IAAG,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE;YACvD,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACrC;QACD,UAAU,IAAI,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC;KAC5C;IAED,2BAA2B;IAC3B,OAAO,CAAC,KAAK,CAAC,2BAA2B,MAAM,eAAe,UAAU,mBAAmB,CAAC,CAAC;IAC7F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
package/package.json CHANGED
@@ -37,15 +37,18 @@
37
37
  "kmlmi": "build/src/kmlmi.js"
38
38
  },
39
39
  "dependencies": {
40
- "@keymanapp/keyman-version": "*",
41
- "@keymanapp/common-types": "*",
42
- "@keymanapp/kmc-keyboard": "*",
43
- "@keymanapp/kmc-model": "*",
44
- "@keymanapp/kmc-model-info": "*",
45
- "@keymanapp/kmc-package": "*",
46
- "@keymanapp/models-types": "*",
40
+ "@keymanapp/keyman-version": "17.0.87-alpha",
41
+ "@keymanapp/common-types": "17.0.87-alpha",
42
+ "@keymanapp/kmc-keyboard": "17.0.87-alpha",
43
+ "@keymanapp/kmc-model": "17.0.87-alpha",
44
+ "@keymanapp/kmc-model-info": "17.0.87-alpha",
45
+ "@keymanapp/kmc-package": "17.0.87-alpha",
46
+ "@keymanapp/models-types": "17.0.87-alpha",
47
47
  "commander": "^10.0.0"
48
48
  },
49
+ "files": [
50
+ "build/src/"
51
+ ],
49
52
  "devDependencies": {
50
53
  "@types/chai": "^4.1.7",
51
54
  "@types/mocha": "^5.2.7",
@@ -69,5 +72,5 @@
69
72
  "type": "git",
70
73
  "url": "git+https://github.com/keymanapp/keyman.git"
71
74
  },
72
- "version": "17.0.85-alpha"
75
+ "version": "17.0.87-alpha"
73
76
  }