@keymanapp/kmc-model-info 18.0.8-alpha → 18.0.10-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/README.md +10 -0
- package/build/src/model-info-compiler-messages.d.ts +13 -10
- package/build/src/model-info-compiler-messages.d.ts.map +1 -1
- package/build/src/model-info-compiler-messages.js +15 -12
- package/build/src/model-info-compiler-messages.js.map +1 -1
- package/build/src/model-info-compiler.d.ts +67 -5
- package/build/src/model-info-compiler.d.ts.map +1 -1
- package/build/src/model-info-compiler.js +50 -11
- package/build/src/model-info-compiler.js.map +1 -1
- package/package.json +4 -4
package/README.md
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Keyman Developer - kmc-model-info
|
|
2
|
+
|
|
3
|
+
This package builds a .model_info file from a Keyman lexical model project. It
|
|
4
|
+
can be used from the command line with
|
|
5
|
+
[@keymanapp/kmc](https://npmjs.com/package/@keymanapp/kmc).
|
|
6
|
+
|
|
7
|
+
This package is used only for preparing metadata files for deployment of
|
|
8
|
+
lexical models to the Keyman Cloud Lexical Model Repository.
|
|
9
|
+
|
|
10
|
+
* [API Reference](https://help.keyman.com/developer/current-version/reference/api/kmc-model-info)
|
|
@@ -1,41 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @internal
|
|
3
|
+
*/
|
|
1
4
|
export declare class ModelInfoCompilerMessages {
|
|
5
|
+
static FATAL_UnexpectedException: number;
|
|
2
6
|
static Fatal_UnexpectedException: (o: {
|
|
3
7
|
e: any;
|
|
4
8
|
}) => import("@keymanapp/common-types").CompilerEvent;
|
|
5
|
-
static
|
|
9
|
+
static ERROR_FileDoesNotExist: number;
|
|
6
10
|
static Error_FileDoesNotExist: (o: {
|
|
7
11
|
filename: string;
|
|
8
12
|
}) => import("@keymanapp/common-types").CompilerEvent;
|
|
9
|
-
static
|
|
13
|
+
static ERROR_FileIsNotValid: number;
|
|
10
14
|
static Error_FileIsNotValid: (o: {
|
|
11
15
|
filename: string;
|
|
12
16
|
e: any;
|
|
13
17
|
}) => import("@keymanapp/common-types").CompilerEvent;
|
|
14
|
-
static
|
|
18
|
+
static WARN_MetadataFieldInconsistent: number;
|
|
15
19
|
static Warn_MetadataFieldInconsistent: (o: {
|
|
16
20
|
field: string;
|
|
17
21
|
value: any;
|
|
18
22
|
expected: any;
|
|
19
23
|
}) => import("@keymanapp/common-types").CompilerEvent;
|
|
20
|
-
static
|
|
24
|
+
static ERROR_InvalidAuthorEmail: number;
|
|
21
25
|
static Error_InvalidAuthorEmail: (o: {
|
|
22
26
|
email: string;
|
|
23
27
|
}) => import("@keymanapp/common-types").CompilerEvent;
|
|
24
|
-
static
|
|
25
|
-
static
|
|
28
|
+
static ERROR_LicenseFileIsMissing: number;
|
|
29
|
+
static Error_LicenseFileIsMissing: (o: {
|
|
26
30
|
filename: string;
|
|
27
31
|
}) => import("@keymanapp/common-types").CompilerEvent;
|
|
28
|
-
static
|
|
32
|
+
static ERROR_LicenseFileIsDamaged: number;
|
|
29
33
|
static Error_LicenseFileIsDamaged: (o: {
|
|
30
34
|
filename: string;
|
|
31
35
|
}) => import("@keymanapp/common-types").CompilerEvent;
|
|
32
|
-
static
|
|
36
|
+
static ERROR_LicenseIsNotValid: number;
|
|
33
37
|
static Error_LicenseIsNotValid: (o: {
|
|
34
38
|
filename: string;
|
|
35
39
|
message: string;
|
|
36
40
|
}) => import("@keymanapp/common-types").CompilerEvent;
|
|
37
|
-
static ERROR_LicenseIsNotValid: number;
|
|
38
|
-
static Error_NoLicenseFound: () => import("@keymanapp/common-types").CompilerEvent;
|
|
39
41
|
static ERROR_NoLicenseFound: number;
|
|
42
|
+
static Error_NoLicenseFound: () => import("@keymanapp/common-types").CompilerEvent;
|
|
40
43
|
}
|
|
41
44
|
//# sourceMappingURL=model-info-compiler-messages.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-info-compiler-messages.d.ts","sourceRoot":"","sources":["../../src/model-info-compiler-messages.ts"],"names":[],"mappings":"AASA,qBAAa,yBAAyB;IACpC,MAAM,CAAC,yBAAyB,MAAM;QAAC,CAAC,EAAE,GAAG,CAAA;KAAC,
|
|
1
|
+
{"version":3,"file":"model-info-compiler-messages.d.ts","sourceRoot":"","sources":["../../src/model-info-compiler-messages.ts"],"names":[],"mappings":"AASA;;GAEG;AACH,qBAAa,yBAAyB;IACpC,MAAM,CAAC,yBAAyB,SAAqB;IACrD,MAAM,CAAC,yBAAyB,MAAM;QAAC,CAAC,EAAE,GAAG,CAAA;KAAC,qDAAoG;IAElJ,MAAM,CAAC,sBAAsB,SAAqB;IAClD,MAAM,CAAC,sBAAsB,MAAM;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,qDAA+E;IAEpI,MAAM,CAAC,oBAAoB,SAAqB;IAChD,MAAM,CAAC,oBAAoB,MAAM;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,GAAG,CAAA;KAAC,qDAC+B;IAE1F,MAAM,CAAC,8BAA8B,SAAoB;IACzD,MAAM,CAAC,8BAA8B,MAAM;QAAC,KAAK,EAAC,MAAM,CAAC;QAAC,KAAK,EAAC,GAAG,CAAC;QAAC,QAAQ,EAAC,GAAG,CAAA;KAAC,qDAC6C;IAE/H,MAAM,CAAC,wBAAwB,SAAqB;IACpD,MAAM,CAAC,wBAAwB,MAAM;QAAC,KAAK,EAAC,MAAM,CAAA;KAAC,qDACR;IAE3C,MAAM,CAAC,0BAA0B,SAAqB;IACtD,MAAM,CAAC,0BAA0B,MAAM;QAAC,QAAQ,EAAC,MAAM,CAAA;KAAC,qDACH;IAErD,MAAM,CAAC,0BAA0B,SAAqB;IACtD,MAAM,CAAC,0BAA0B,MAAM;QAAC,QAAQ,EAAC,MAAM,CAAA;KAAC,qDACa;IAErE,MAAM,CAAC,uBAAuB,SAAqB;IACnD,MAAM,CAAC,uBAAuB,MAAM;QAAC,QAAQ,EAAC,MAAM,CAAC;QAAA,OAAO,EAAC,MAAM,CAAA;KAAC,qDACsB;IAE1F,MAAM,CAAC,oBAAoB,SAAqB;IAChD,MAAM,CAAC,oBAAoB,wDAC2F;CACvH"}
|
|
@@ -1,30 +1,33 @@
|
|
|
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]="
|
|
2
|
-
import { CompilerErrorNamespace, CompilerErrorSeverity, CompilerMessageSpec as m } from "@keymanapp/common-types";
|
|
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]="d9cea1f9-b8d3-5503-8238-b8a3eba7c24f")}catch(e){}}();
|
|
2
|
+
import { CompilerErrorNamespace, CompilerErrorSeverity, CompilerMessageSpec as m, CompilerMessageDef as def, CompilerMessageSpecWithException } from "@keymanapp/common-types";
|
|
3
3
|
const Namespace = CompilerErrorNamespace.ModelInfoCompiler;
|
|
4
4
|
// const SevInfo = CompilerErrorSeverity.Info | Namespace;
|
|
5
5
|
// const SevHint = CompilerErrorSeverity.Hint | Namespace;
|
|
6
6
|
const SevWarn = CompilerErrorSeverity.Warn | Namespace;
|
|
7
7
|
const SevError = CompilerErrorSeverity.Error | Namespace;
|
|
8
8
|
const SevFatal = CompilerErrorSeverity.Fatal | Namespace;
|
|
9
|
+
/**
|
|
10
|
+
* @internal
|
|
11
|
+
*/
|
|
9
12
|
export class ModelInfoCompilerMessages {
|
|
10
|
-
static Fatal_UnexpectedException = (o) => m(this.FATAL_UnexpectedException, null, o.e ?? 'unknown error');
|
|
11
13
|
static FATAL_UnexpectedException = SevFatal | 0x0001;
|
|
12
|
-
static
|
|
14
|
+
static Fatal_UnexpectedException = (o) => CompilerMessageSpecWithException(this.FATAL_UnexpectedException, null, o.e ?? 'unknown error');
|
|
13
15
|
static ERROR_FileDoesNotExist = SevError | 0x0002;
|
|
14
|
-
static
|
|
16
|
+
static Error_FileDoesNotExist = (o) => m(this.ERROR_FileDoesNotExist, `File ${def(o.filename)} does not exist.`);
|
|
15
17
|
static ERROR_FileIsNotValid = SevError | 0x0003;
|
|
16
|
-
static
|
|
18
|
+
static Error_FileIsNotValid = (o) => m(this.ERROR_FileIsNotValid, `File ${def(o.filename)} could not be parsed: ${(o.e ?? 'unknown error').toString()}.`);
|
|
17
19
|
static WARN_MetadataFieldInconsistent = SevWarn | 0x0004;
|
|
18
|
-
static
|
|
20
|
+
static Warn_MetadataFieldInconsistent = (o) => m(this.WARN_MetadataFieldInconsistent, `Warning: field ${def(o.field)} value "${def(o.value)}" does not match "${def(o.expected)}" found in source file metadata.`);
|
|
19
21
|
static ERROR_InvalidAuthorEmail = SevError | 0x0005;
|
|
20
|
-
static
|
|
22
|
+
static Error_InvalidAuthorEmail = (o) => m(this.ERROR_InvalidAuthorEmail, `Invalid author email: ${def(o.email)}`);
|
|
21
23
|
static ERROR_LicenseFileIsMissing = SevError | 0x0006;
|
|
22
|
-
static
|
|
24
|
+
static Error_LicenseFileIsMissing = (o) => m(this.ERROR_LicenseFileIsMissing, `License file ${def(o.filename)} does not exist.`);
|
|
23
25
|
static ERROR_LicenseFileIsDamaged = SevError | 0x0007;
|
|
24
|
-
static
|
|
26
|
+
static Error_LicenseFileIsDamaged = (o) => m(this.ERROR_LicenseFileIsDamaged, `License file ${def(o.filename)} could not be loaded or decoded.`);
|
|
25
27
|
static ERROR_LicenseIsNotValid = SevError | 0x0008;
|
|
26
|
-
static
|
|
28
|
+
static Error_LicenseIsNotValid = (o) => m(this.ERROR_LicenseIsNotValid, `An error was encountered parsing license file ${def(o.filename)}: ${def(o.message)}.`);
|
|
27
29
|
static ERROR_NoLicenseFound = SevError | 0x0009;
|
|
30
|
+
static Error_NoLicenseFound = () => m(this.ERROR_NoLicenseFound, `No license for the model was found. MIT license is required for publication to Keyman lexical-models repository.`);
|
|
28
31
|
}
|
|
29
|
-
//# debugId=
|
|
32
|
+
//# debugId=d9cea1f9-b8d3-5503-8238-b8a3eba7c24f
|
|
30
33
|
//# sourceMappingURL=model-info-compiler-messages.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"debug_id":"
|
|
1
|
+
{"debug_id":"d9cea1f9-b8d3-5503-8238-b8a3eba7c24f","file":"model-info-compiler-messages.js","mappings":"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","names":[],"sourceRoot":"","sources":["../../src/model-info-compiler-messages.ts"],"version":3}
|
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
* compiled files to produce a comprehensive .model_info file.
|
|
4
4
|
*/
|
|
5
5
|
import { CompilerCallbacks, CompilerOptions, KeymanCompiler, KeymanCompilerArtifact, KeymanCompilerArtifacts, KeymanCompilerResult, KmpJsonFile } from "@keymanapp/common-types";
|
|
6
|
+
/**
|
|
7
|
+
* @public
|
|
8
|
+
* Description of sources and metadata required to build a .model_info file
|
|
9
|
+
*/
|
|
6
10
|
export declare class ModelInfoSources {
|
|
7
11
|
/** The identifier for the model */
|
|
8
12
|
model_id: string;
|
|
@@ -21,29 +25,87 @@ export declare class ModelInfoSources {
|
|
|
21
25
|
/** Return an error if project does not meet requirements of lexical-models repository */
|
|
22
26
|
forPublishing: boolean;
|
|
23
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* @public
|
|
30
|
+
* Options for the .model_info compiler
|
|
31
|
+
*/
|
|
24
32
|
export interface ModelInfoCompilerOptions extends CompilerOptions {
|
|
33
|
+
/**
|
|
34
|
+
* Description of sources and metadata required to build a .model_info file
|
|
35
|
+
*/
|
|
25
36
|
sources: ModelInfoSources;
|
|
26
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* @public
|
|
40
|
+
* Internal in-memory build artifacts from a successful compilation
|
|
41
|
+
*/
|
|
27
42
|
export interface ModelInfoCompilerArtifacts extends KeymanCompilerArtifacts {
|
|
43
|
+
/**
|
|
44
|
+
* Binary model info filedata and filename - used by keyman.com
|
|
45
|
+
*/
|
|
28
46
|
model_info: KeymanCompilerArtifact;
|
|
29
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* @public
|
|
50
|
+
* Build artifacts from the .model_info compiler
|
|
51
|
+
*/
|
|
30
52
|
export interface ModelInfoCompilerResult extends KeymanCompilerResult {
|
|
53
|
+
/**
|
|
54
|
+
* Internal in-memory build artifacts from a successful compilation. Caller
|
|
55
|
+
* can write these to disk with {@link ModelInfoCompiler.write}
|
|
56
|
+
*/
|
|
31
57
|
artifacts: ModelInfoCompilerArtifacts;
|
|
32
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* @public
|
|
61
|
+
* Compiles source data from a lexical model project to a .model_info. The
|
|
62
|
+
* compiler does not read or write from filesystem or network directly, but
|
|
63
|
+
* relies on callbacks for all external IO.
|
|
64
|
+
*/
|
|
33
65
|
export declare class ModelInfoCompiler implements KeymanCompiler {
|
|
34
66
|
private callbacks;
|
|
35
67
|
private options;
|
|
36
68
|
constructor();
|
|
69
|
+
/**
|
|
70
|
+
* Initialize the compiler.
|
|
71
|
+
* Copies options.
|
|
72
|
+
* @param callbacks - Callbacks for external interfaces, including message
|
|
73
|
+
* reporting and file io
|
|
74
|
+
* @param options - Compiler options
|
|
75
|
+
* @returns false if initialization fails
|
|
76
|
+
*/
|
|
37
77
|
init(callbacks: CompilerCallbacks, options: ModelInfoCompilerOptions): Promise<boolean>;
|
|
38
78
|
/**
|
|
39
|
-
* Builds .model_info file with metadata from the model and package source
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
79
|
+
* Builds .model_info file with metadata from the model and package source
|
|
80
|
+
* file. Returns an object containing binary artifacts on success. The files
|
|
81
|
+
* are passed in by name, and the compiler will use callbacks as passed to the
|
|
82
|
+
* {@link ModelInfoCompiler.init} function to read any input files by disk.
|
|
43
83
|
*
|
|
44
|
-
*
|
|
84
|
+
* This function is intended for use within the lexical-models repository.
|
|
85
|
+
* While many of the parameters could be deduced from each other, they are
|
|
86
|
+
* specified here to reduce the number of places the filenames are
|
|
87
|
+
* constructed.
|
|
88
|
+
*
|
|
89
|
+
* @param infile - Path to source file. Path will be parsed to find relative
|
|
90
|
+
* references in the .kpj file, such as .model.ts or
|
|
91
|
+
* .model.kps file
|
|
92
|
+
* @param outfile - Path to output file. The file will not be written to, but
|
|
93
|
+
* will be included in the result for use by
|
|
94
|
+
* {@link ModelInfoCompiler.write}.
|
|
95
|
+
* @returns Binary artifacts on success, null on failure.
|
|
96
|
+
*
|
|
97
|
+
* @param sources - Details on files from which to extract additional metadata
|
|
45
98
|
*/
|
|
46
99
|
run(inputFilename: string, outputFilename?: string): Promise<ModelInfoCompilerResult>;
|
|
100
|
+
/**
|
|
101
|
+
* Write artifacts from a successful compile to disk, via callbacks methods.
|
|
102
|
+
* The artifacts written may include:
|
|
103
|
+
*
|
|
104
|
+
* - .model_info file - metadata file used by keyman.com
|
|
105
|
+
*
|
|
106
|
+
* @param artifacts - object containing artifact binary data to write out
|
|
107
|
+
* @returns true on success
|
|
108
|
+
*/
|
|
47
109
|
write(artifacts: ModelInfoCompilerArtifacts): Promise<boolean>;
|
|
48
110
|
private isLicenseMIT;
|
|
49
111
|
private loadJsFile;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-info-compiler.d.ts","sourceRoot":"","sources":["../../src/model-info-compiler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"model-info-compiler.d.ts","sourceRoot":"","sources":["../../src/model-info-compiler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAKjL;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IAEjB,2DAA2D;IAC3D,WAAW,EAAE,WAAW,CAAC,WAAW,CAAC;IAErC,kFAAkF;IAClF,UAAU,EAAE,MAAM,CAAC;IAEnB,0DAA0D;IAC1D,aAAa,EAAE,MAAM,CAAC;IAEtB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;IAEpB,2DAA2D;IAC3D,WAAW,EAAE,MAAM,CAAC;IAEpB,oFAAoF;IACpF,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,yFAAyF;IACzF,aAAa,EAAE,OAAO,CAAC;CACxB;AAGD;;;GAGG;AACH,MAAM,WAAW,wBAAyB,SAAQ,eAAe;IAC/D;;OAEG;IACH,OAAO,EAAE,gBAAgB,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,0BAA2B,SAAQ,uBAAuB;IACzE;;OAEG;IACH,UAAU,EAAE,sBAAsB,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAwB,SAAQ,oBAAoB;IACnE;;;OAGG;IACH,SAAS,EAAE,0BAA0B,CAAC;CACvC;AAED;;;;;GAKG;AACH,qBAAa,iBAAkB,YAAW,cAAc;IACtD,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,OAAO,CAA2B;;IAK1C;;;;;;;OAOG;IACU,IAAI,CAAC,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IAMpG;;;;;;;;;;;;;;;;;;;;OAoBG;IACU,GAAG,CAAC,aAAa,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAoIlG;;;;;;;;OAQG;IACU,KAAK,CAAC,SAAS,EAAE,0BAA0B,GAAG,OAAO,CAAC,OAAO,CAAC;IAK3E,OAAO,CAAC,YAAY;IA0BpB,OAAO,CAAC,UAAU;CASnB"}
|
|
@@ -1,13 +1,16 @@
|
|
|
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]="
|
|
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]="c1f01084-58ba-5447-93df-d09b57dafddd")}catch(e){}}();
|
|
2
2
|
/**
|
|
3
3
|
* Builds a source .model_info file with metadata extracted from .kps file and
|
|
4
4
|
* compiled files to produce a comprehensive .model_info file.
|
|
5
5
|
*/
|
|
6
6
|
import { minKeymanVersion } from "./min-keyman-version.js";
|
|
7
7
|
import { ModelInfoCompilerMessages } from "./model-info-compiler-messages.js";
|
|
8
|
-
import { validateMITLicense } from "@keymanapp/developer-utils";
|
|
9
|
-
const HelpRoot = 'https://help.keyman.com/model/';
|
|
8
|
+
import { KeymanUrls, validateMITLicense } from "@keymanapp/developer-utils";
|
|
10
9
|
/* c8 ignore start */
|
|
10
|
+
/**
|
|
11
|
+
* @public
|
|
12
|
+
* Description of sources and metadata required to build a .model_info file
|
|
13
|
+
*/
|
|
11
14
|
export class ModelInfoSources {
|
|
12
15
|
/** The identifier for the model */
|
|
13
16
|
model_id;
|
|
@@ -30,23 +33,50 @@ export class ModelInfoSources {
|
|
|
30
33
|
;
|
|
31
34
|
;
|
|
32
35
|
;
|
|
36
|
+
/**
|
|
37
|
+
* @public
|
|
38
|
+
* Compiles source data from a lexical model project to a .model_info. The
|
|
39
|
+
* compiler does not read or write from filesystem or network directly, but
|
|
40
|
+
* relies on callbacks for all external IO.
|
|
41
|
+
*/
|
|
33
42
|
export class ModelInfoCompiler {
|
|
34
43
|
callbacks;
|
|
35
44
|
options;
|
|
36
45
|
constructor() {
|
|
37
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Initialize the compiler.
|
|
49
|
+
* Copies options.
|
|
50
|
+
* @param callbacks - Callbacks for external interfaces, including message
|
|
51
|
+
* reporting and file io
|
|
52
|
+
* @param options - Compiler options
|
|
53
|
+
* @returns false if initialization fails
|
|
54
|
+
*/
|
|
38
55
|
async init(callbacks, options) {
|
|
39
56
|
this.callbacks = callbacks;
|
|
40
57
|
this.options = { ...options };
|
|
41
58
|
return true;
|
|
42
59
|
}
|
|
43
60
|
/**
|
|
44
|
-
* Builds .model_info file with metadata from the model and package source
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
61
|
+
* Builds .model_info file with metadata from the model and package source
|
|
62
|
+
* file. Returns an object containing binary artifacts on success. The files
|
|
63
|
+
* are passed in by name, and the compiler will use callbacks as passed to the
|
|
64
|
+
* {@link ModelInfoCompiler.init} function to read any input files by disk.
|
|
48
65
|
*
|
|
49
|
-
*
|
|
66
|
+
* This function is intended for use within the lexical-models repository.
|
|
67
|
+
* While many of the parameters could be deduced from each other, they are
|
|
68
|
+
* specified here to reduce the number of places the filenames are
|
|
69
|
+
* constructed.
|
|
70
|
+
*
|
|
71
|
+
* @param infile - Path to source file. Path will be parsed to find relative
|
|
72
|
+
* references in the .kpj file, such as .model.ts or
|
|
73
|
+
* .model.kps file
|
|
74
|
+
* @param outfile - Path to output file. The file will not be written to, but
|
|
75
|
+
* will be included in the result for use by
|
|
76
|
+
* {@link ModelInfoCompiler.write}.
|
|
77
|
+
* @returns Binary artifacts on success, null on failure.
|
|
78
|
+
*
|
|
79
|
+
* @param sources - Details on files from which to extract additional metadata
|
|
50
80
|
*/
|
|
51
81
|
async run(inputFilename, outputFilename) {
|
|
52
82
|
const sources = this.options.sources;
|
|
@@ -136,7 +166,7 @@ export class ModelInfoCompiler {
|
|
|
136
166
|
model_info.packageIncludes = sources.kmpJsonData.files.filter((e) => !!e.name.match(/.[ot]tf$/i)).length ? ['fonts'] : [];
|
|
137
167
|
model_info.version = sources.kmpJsonData.info.version.description;
|
|
138
168
|
model_info.minKeymanVersion = minKeymanVersion;
|
|
139
|
-
model_info.helpLink =
|
|
169
|
+
model_info.helpLink = KeymanUrls.HELP_MODEL(model_info.id);
|
|
140
170
|
if (sources.sourcePath) {
|
|
141
171
|
model_info.sourcePath = sources.sourcePath;
|
|
142
172
|
}
|
|
@@ -152,6 +182,15 @@ export class ModelInfoCompiler {
|
|
|
152
182
|
};
|
|
153
183
|
return result;
|
|
154
184
|
}
|
|
185
|
+
/**
|
|
186
|
+
* Write artifacts from a successful compile to disk, via callbacks methods.
|
|
187
|
+
* The artifacts written may include:
|
|
188
|
+
*
|
|
189
|
+
* - .model_info file - metadata file used by keyman.com
|
|
190
|
+
*
|
|
191
|
+
* @param artifacts - object containing artifact binary data to write out
|
|
192
|
+
* @returns true on success
|
|
193
|
+
*/
|
|
155
194
|
async write(artifacts) {
|
|
156
195
|
this.callbacks.fs.writeFileSync(artifacts.model_info.filename, artifacts.model_info.data);
|
|
157
196
|
return true;
|
|
@@ -159,7 +198,7 @@ export class ModelInfoCompiler {
|
|
|
159
198
|
isLicenseMIT(filename) {
|
|
160
199
|
const data = this.callbacks.loadFile(filename);
|
|
161
200
|
if (!data) {
|
|
162
|
-
this.callbacks.reportMessage(ModelInfoCompilerMessages.
|
|
201
|
+
this.callbacks.reportMessage(ModelInfoCompilerMessages.Error_LicenseFileIsMissing({ filename }));
|
|
163
202
|
return false;
|
|
164
203
|
}
|
|
165
204
|
let license = null;
|
|
@@ -191,5 +230,5 @@ export class ModelInfoCompiler {
|
|
|
191
230
|
return text;
|
|
192
231
|
}
|
|
193
232
|
}
|
|
194
|
-
//# debugId=
|
|
233
|
+
//# debugId=c1f01084-58ba-5447-93df-d09b57dafddd
|
|
195
234
|
//# sourceMappingURL=model-info-compiler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"debug_id":"
|
|
1
|
+
{"debug_id":"c1f01084-58ba-5447-93df-d09b57dafddd","file":"model-info-compiler.js","mappings":"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","names":[],"sourceRoot":"","sources":["../../src/model-info-compiler.ts"],"version":3}
|
package/package.json
CHANGED
|
@@ -30,9 +30,9 @@
|
|
|
30
30
|
"url": "https://github.com/keymanapp/keyman/issues"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@keymanapp/common-types": "18.0.
|
|
34
|
-
"@keymanapp/models-types": "18.0.
|
|
35
|
-
"@keymanapp/developer-utils": "18.0.
|
|
33
|
+
"@keymanapp/common-types": "18.0.10-alpha",
|
|
34
|
+
"@keymanapp/models-types": "18.0.10-alpha",
|
|
35
|
+
"@keymanapp/developer-utils": "18.0.10-alpha"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@types/chai": "^4.1.7",
|
|
@@ -55,5 +55,5 @@
|
|
|
55
55
|
"type": "git",
|
|
56
56
|
"url": "git+https://github.com/keymanapp/keyman.git"
|
|
57
57
|
},
|
|
58
|
-
"version": "18.0.
|
|
58
|
+
"version": "18.0.10-alpha"
|
|
59
59
|
}
|