@keymanapp/kmc-model-info 17.0.85-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/Makefile +38 -0
- package/build/src/min-keyman-version.d.ts +2 -0
- package/build/src/min-keyman-version.d.ts.map +1 -0
- package/build/src/min-keyman-version.js +2 -0
- package/build/src/min-keyman-version.js.map +1 -0
- package/build/src/model-info-compiler.d.ts +31 -0
- package/build/src/model-info-compiler.d.ts.map +1 -0
- package/build/src/model-info-compiler.js +105 -0
- package/build/src/model-info-compiler.js.map +1 -0
- package/build/src/model-info-file.d.ts +32 -0
- package/build/src/model-info-file.d.ts.map +1 -0
- package/build/src/model-info-file.js +2 -0
- package/build/src/model-info-file.js.map +1 -0
- package/build/tsconfig.tsbuildinfo +1 -0
- package/build.sh +67 -0
- package/package.json +57 -0
- package/src/min-keyman-version.ts +1 -0
- package/src/model-info-compiler.ts +137 -0
- package/src/model-info-file.ts +33 -0
- package/tsconfig.json +17 -0
package/Makefile
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Keyman Developer - kmc Model-Info Compiler Makefile
|
|
3
|
+
#
|
|
4
|
+
|
|
5
|
+
!include ..\Defines.mak
|
|
6
|
+
|
|
7
|
+
# We don't depend on configure here because kmc-keyboard does that already
|
|
8
|
+
build: .virtual
|
|
9
|
+
$(GIT_BASH_FOR_KEYMAN) build.sh build
|
|
10
|
+
|
|
11
|
+
configure: .virtual
|
|
12
|
+
$(GIT_BASH_FOR_KEYMAN) build.sh configure
|
|
13
|
+
|
|
14
|
+
clean: .virtual
|
|
15
|
+
$(GIT_BASH_FOR_KEYMAN) build.sh clean
|
|
16
|
+
|
|
17
|
+
test: .virtual
|
|
18
|
+
$(GIT_BASH_FOR_KEYMAN) build.sh test
|
|
19
|
+
|
|
20
|
+
# build.sh bundle must be run from shell as it requires a temp folder to be
|
|
21
|
+
# passed in. See inst/download.in.mak for instantiation.
|
|
22
|
+
|
|
23
|
+
publish: .virtual
|
|
24
|
+
$(GIT_BASH_FOR_KEYMAN) build.sh publish
|
|
25
|
+
|
|
26
|
+
signcode:
|
|
27
|
+
@rem nothing to do
|
|
28
|
+
|
|
29
|
+
wrap-symbols:
|
|
30
|
+
@rem nothing to do
|
|
31
|
+
|
|
32
|
+
test-manifest:
|
|
33
|
+
@rem nothing to do
|
|
34
|
+
|
|
35
|
+
install:
|
|
36
|
+
@rem nothing to do
|
|
37
|
+
|
|
38
|
+
!include ..\Target.mak
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"min-keyman-version.d.ts","sourceRoot":"","sources":["../../src/min-keyman-version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"min-keyman-version.js","sourceRoot":"","sources":["../../src/min-keyman-version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Merges a source .model_info file with metadata extracted from .kps file and
|
|
3
|
+
* compiled files to produce a comprehensive .model_info file.
|
|
4
|
+
*/
|
|
5
|
+
/// <reference path="model-info-file.d.ts" />
|
|
6
|
+
/// <reference types="@keymanapp/kmc-package/kmp-json-file" />
|
|
7
|
+
import { type KmpJsonFile } from "@keymanapp/kmc-package";
|
|
8
|
+
export declare class ModelInfoOptions {
|
|
9
|
+
/** The identifier for the model */
|
|
10
|
+
model_id: string;
|
|
11
|
+
/** The data from the .kps file, transformed to kmp.json */
|
|
12
|
+
kmpJsonData: KmpJsonFile;
|
|
13
|
+
/** The path in the keymanapp/lexical-models repo where this model may be found (optional) */
|
|
14
|
+
sourcePath?: string;
|
|
15
|
+
/** The compiled model filename and relative path (.js) */
|
|
16
|
+
modelFileName: string;
|
|
17
|
+
/** The compiled package filename and relative path (.kmp) */
|
|
18
|
+
kmpFileName: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Merges source .model_info file with metadata from the model and package source file.
|
|
22
|
+
* This function is intended for use within the lexical-models repository. While many of the
|
|
23
|
+
* parameters could be deduced from each other, they are specified here to reduce the
|
|
24
|
+
* number of places the filenames are constructed.
|
|
25
|
+
*
|
|
26
|
+
* @param sourceModelInfoFileName Path for the source .model_info file
|
|
27
|
+
* @param destModelInfoFileName Path to write the merged .model_info file to
|
|
28
|
+
* @param options Details on files from which to extract additional metadata
|
|
29
|
+
*/
|
|
30
|
+
export declare function writeMergedModelMetadataFile(sourceModelInfoFileName: string, destModelInfoFileName: string, options: ModelInfoOptions): void;
|
|
31
|
+
//# sourceMappingURL=model-info-compiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-info-compiler.d.ts","sourceRoot":"","sources":["../../src/model-info-compiler.ts"],"names":[],"mappings":"AAAA;;;GAGG;;;AASH,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,qBAAa,gBAAgB;IAC3B,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IAEjB,2DAA2D;IAC3D,WAAW,EAAE,WAAW,CAAC;IAEzB,6FAA6F;IAC7F,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,0DAA0D;IAC1D,aAAa,EAAE,MAAM,CAAC;IAEtB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CACxC,uBAAuB,EAAE,MAAM,EAC/B,qBAAqB,EAAE,MAAM,EAC7B,OAAO,EAAE,gBAAgB,QA4F5B"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Merges a source .model_info file with metadata extracted from .kps file and
|
|
3
|
+
* compiled files to produce a comprehensive .model_info file.
|
|
4
|
+
*/
|
|
5
|
+
/// <reference path="../../kmc-package/src/kmp-json-file.ts" />
|
|
6
|
+
/// <reference path="./model-info-file.ts" />
|
|
7
|
+
import * as fs from "fs";
|
|
8
|
+
import * as path from "path";
|
|
9
|
+
import { minKeymanVersion } from "./min-keyman-version.js";
|
|
10
|
+
export class ModelInfoOptions {
|
|
11
|
+
/** The identifier for the model */
|
|
12
|
+
model_id;
|
|
13
|
+
/** The data from the .kps file, transformed to kmp.json */
|
|
14
|
+
kmpJsonData;
|
|
15
|
+
/** The path in the keymanapp/lexical-models repo where this model may be found (optional) */
|
|
16
|
+
sourcePath;
|
|
17
|
+
/** The compiled model filename and relative path (.js) */
|
|
18
|
+
modelFileName;
|
|
19
|
+
/** The compiled package filename and relative path (.kmp) */
|
|
20
|
+
kmpFileName;
|
|
21
|
+
}
|
|
22
|
+
;
|
|
23
|
+
/**
|
|
24
|
+
* Merges source .model_info file with metadata from the model and package source file.
|
|
25
|
+
* This function is intended for use within the lexical-models repository. While many of the
|
|
26
|
+
* parameters could be deduced from each other, they are specified here to reduce the
|
|
27
|
+
* number of places the filenames are constructed.
|
|
28
|
+
*
|
|
29
|
+
* @param sourceModelInfoFileName Path for the source .model_info file
|
|
30
|
+
* @param destModelInfoFileName Path to write the merged .model_info file to
|
|
31
|
+
* @param options Details on files from which to extract additional metadata
|
|
32
|
+
*/
|
|
33
|
+
export function writeMergedModelMetadataFile(sourceModelInfoFileName, destModelInfoFileName, options) {
|
|
34
|
+
/*
|
|
35
|
+
* Model info looks like this:
|
|
36
|
+
*
|
|
37
|
+
* {
|
|
38
|
+
* "name": "Example Template Model"
|
|
39
|
+
* "license": "mit",
|
|
40
|
+
* "version": "1.0.0",
|
|
41
|
+
* "languages": ["en"],
|
|
42
|
+
* "authorName": "Example Author",
|
|
43
|
+
* "authorEmail": "nobody@example.com",
|
|
44
|
+
* "description": "Example wordlist model"
|
|
45
|
+
* }
|
|
46
|
+
*
|
|
47
|
+
* For full documentation, see:
|
|
48
|
+
* https://help.keyman.com/developer/cloud/model_info/1.0/
|
|
49
|
+
*/
|
|
50
|
+
let model_info = JSON.parse(fs.readFileSync(sourceModelInfoFileName, 'utf8'));
|
|
51
|
+
//
|
|
52
|
+
// Build merged .model_info file
|
|
53
|
+
// https://api.keyman.com/schemas/model_info.source.json and
|
|
54
|
+
// https://api.keyman.com/schemas/model_info.distribution.json
|
|
55
|
+
// https://help.keyman.com/developer/cloud/model_info/1.0
|
|
56
|
+
//
|
|
57
|
+
function setModelMetadata(field, expected, warn = true) {
|
|
58
|
+
if (model_info[field] && model_info[field] !== expected) {
|
|
59
|
+
if (warn || typeof warn === 'undefined')
|
|
60
|
+
console.warn(`Warning: source ${sourceModelInfoFileName} field ${field} value "${model_info[field]}" does not match "${expected}" found in source file metadata.`);
|
|
61
|
+
}
|
|
62
|
+
// TypeScript gets upset with this assignment, because it cannot deduce
|
|
63
|
+
// the exact type of model_info[field] -- there are many possibilities!
|
|
64
|
+
// So we assert that it's unknown so that TypeScript can chill.
|
|
65
|
+
model_info[field] = model_info[field] || expected;
|
|
66
|
+
}
|
|
67
|
+
//
|
|
68
|
+
// Merge model info file -- some fields have "special" behaviours -- see below
|
|
69
|
+
//
|
|
70
|
+
setModelMetadata('id', options.model_id);
|
|
71
|
+
setModelMetadata('name', options.kmpJsonData.info.name.description);
|
|
72
|
+
let author = options.kmpJsonData.info.author;
|
|
73
|
+
setModelMetadata('authorName', author.description);
|
|
74
|
+
if (author.url) {
|
|
75
|
+
// we strip the mailto: from the .kps file for the .model_info
|
|
76
|
+
let match = author.url.match(/^(mailto\:)?(.+)$/);
|
|
77
|
+
if (match === null) {
|
|
78
|
+
throw new Error(`Invalid author email: ${author.url}`);
|
|
79
|
+
}
|
|
80
|
+
let email = match[2];
|
|
81
|
+
setModelMetadata('authorEmail', email, false);
|
|
82
|
+
}
|
|
83
|
+
// extract the language identifiers from the language metadata
|
|
84
|
+
// arrays for each of the lexical models in the kmp.json file,
|
|
85
|
+
// and merge into a single array of identifiers in the
|
|
86
|
+
// .model_info file.
|
|
87
|
+
model_info.languages = model_info.languages || options.kmpJsonData.lexicalModels.reduce((a, e) => [].concat(a, e.languages.map((f) => f.id)), []);
|
|
88
|
+
setModelMetadata('lastModifiedDate', (new Date).toISOString());
|
|
89
|
+
setModelMetadata('packageFilename', path.basename(options.kmpFileName));
|
|
90
|
+
// Always overwrite with actual file size
|
|
91
|
+
model_info.packageFileSize = fs.statSync(options.kmpFileName).size;
|
|
92
|
+
setModelMetadata('jsFilename', path.basename(options.modelFileName));
|
|
93
|
+
// Always overwrite with actual file size
|
|
94
|
+
model_info.jsFileSize = fs.statSync(options.modelFileName).size;
|
|
95
|
+
// Always overwrite source data
|
|
96
|
+
model_info.packageIncludes = options.kmpJsonData.files.filter((e) => !!e.name.match(/.[ot]tf$/i)).length ? ['fonts'] : [];
|
|
97
|
+
setModelMetadata('version', options.kmpJsonData.info.version.description);
|
|
98
|
+
// The minimum Keyman version detected in the package file may be manually set higher by the developer
|
|
99
|
+
setModelMetadata('minKeymanVersion', minKeymanVersion, false);
|
|
100
|
+
if (options.sourcePath) {
|
|
101
|
+
setModelMetadata('sourcePath', options.sourcePath);
|
|
102
|
+
}
|
|
103
|
+
fs.writeFileSync(destModelInfoFileName, JSON.stringify(model_info, null, 2));
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=model-info-compiler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-info-compiler.js","sourceRoot":"","sources":["../../src/model-info-compiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export interface ModelInfoFile {
|
|
2
|
+
id?: string;
|
|
3
|
+
name?: string;
|
|
4
|
+
authorName?: string;
|
|
5
|
+
authorEmail?: string;
|
|
6
|
+
description?: string;
|
|
7
|
+
license: "mit";
|
|
8
|
+
languages: Array<string>;
|
|
9
|
+
lastModifiedDate?: string;
|
|
10
|
+
links: ModelInfoFileLink[];
|
|
11
|
+
packageFilename?: string;
|
|
12
|
+
packageFileSize?: number;
|
|
13
|
+
jsFilename?: string;
|
|
14
|
+
jsFileSize?: number;
|
|
15
|
+
isRTL?: boolean;
|
|
16
|
+
packageIncludes?: string[];
|
|
17
|
+
version?: string;
|
|
18
|
+
minKeymanVersion?: string;
|
|
19
|
+
helpLink?: string;
|
|
20
|
+
sourcePath?: string;
|
|
21
|
+
related?: ModelInfoFileRelated[];
|
|
22
|
+
}
|
|
23
|
+
export interface ModelInfoFileLink {
|
|
24
|
+
name: string;
|
|
25
|
+
url: string;
|
|
26
|
+
}
|
|
27
|
+
export interface ModelInfoFileRelated {
|
|
28
|
+
deprecates?: string;
|
|
29
|
+
deprecatedBy?: string;
|
|
30
|
+
note?: string;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=model-info-file.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-info-file.d.ts","sourceRoot":"","sources":["../../src/model-info-file.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,KAAK,CAAC;IACf,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,oBAAoB,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-info-file.js","sourceRoot":"","sources":["../../src/model-info-file.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"program":{"fileNames":["../../../../node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../../node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../../node_modules/typescript/lib/lib.scripthost.d.ts","../../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../../node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2022.full.d.ts","../src/min-keyman-version.ts","../../kmc-package/build/src/kmp-json-file.d.ts","../src/model-info-file.ts","../../kmc-package/build/src/kmp-compiler.d.ts","../src/model-info-compiler.ts","../node_modules/@types/mocha/index.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/ts3.6/base.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/base.d.ts","../node_modules/@types/node/index.d.ts","../../../../node_modules/@types/connect/index.d.ts","../../../../node_modules/@types/body-parser/index.d.ts","../../../../node_modules/keyv/src/index.d.ts","../../../../node_modules/@types/http-cache-semantics/index.d.ts","../../../../node_modules/@types/responselike/index.d.ts","../../../../node_modules/@types/cacheable-request/index.d.ts","../../../../node_modules/@types/chai/index.d.ts","../../../../node_modules/@types/component-emitter/index.d.ts","../../../../node_modules/@types/cookie/index.d.ts","../../../../node_modules/@types/cors/index.d.ts","../../../../node_modules/@types/range-parser/index.d.ts","../../../../node_modules/@types/qs/index.d.ts","../../../../node_modules/@types/express-serve-static-core/index.d.ts","../../../../node_modules/@types/mime/index.d.ts","../../../../node_modules/@types/serve-static/index.d.ts","../../../../node_modules/@types/express/index.d.ts","../../../../node_modules/@types/git-diff/index.d.ts","../../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../../node_modules/@types/json-buffer/index.d.ts","../../../../node_modules/@types/keyv/index.d.ts","../../../../node_modules/@types/multer/index.d.ts","../../../../node_modules/@types/semver/classes/semver.d.ts","../../../../node_modules/@types/semver/functions/parse.d.ts","../../../../node_modules/@types/semver/functions/valid.d.ts","../../../../node_modules/@types/semver/functions/clean.d.ts","../../../../node_modules/@types/semver/functions/inc.d.ts","../../../../node_modules/@types/semver/functions/diff.d.ts","../../../../node_modules/@types/semver/functions/major.d.ts","../../../../node_modules/@types/semver/functions/minor.d.ts","../../../../node_modules/@types/semver/functions/patch.d.ts","../../../../node_modules/@types/semver/functions/prerelease.d.ts","../../../../node_modules/@types/semver/functions/compare.d.ts","../../../../node_modules/@types/semver/functions/rcompare.d.ts","../../../../node_modules/@types/semver/functions/compare-loose.d.ts","../../../../node_modules/@types/semver/functions/compare-build.d.ts","../../../../node_modules/@types/semver/functions/sort.d.ts","../../../../node_modules/@types/semver/functions/rsort.d.ts","../../../../node_modules/@types/semver/functions/gt.d.ts","../../../../node_modules/@types/semver/functions/lt.d.ts","../../../../node_modules/@types/semver/functions/eq.d.ts","../../../../node_modules/@types/semver/functions/neq.d.ts","../../../../node_modules/@types/semver/functions/gte.d.ts","../../../../node_modules/@types/semver/functions/lte.d.ts","../../../../node_modules/@types/semver/functions/cmp.d.ts","../../../../node_modules/@types/semver/functions/coerce.d.ts","../../../../node_modules/@types/semver/classes/comparator.d.ts","../../../../node_modules/@types/semver/classes/range.d.ts","../../../../node_modules/@types/semver/functions/satisfies.d.ts","../../../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../../../node_modules/@types/semver/ranges/min-version.d.ts","../../../../node_modules/@types/semver/ranges/valid.d.ts","../../../../node_modules/@types/semver/ranges/outside.d.ts","../../../../node_modules/@types/semver/ranges/gtr.d.ts","../../../../node_modules/@types/semver/ranges/ltr.d.ts","../../../../node_modules/@types/semver/ranges/intersects.d.ts","../../../../node_modules/@types/semver/ranges/simplify.d.ts","../../../../node_modules/@types/semver/ranges/subset.d.ts","../../../../node_modules/@types/semver/internals/identifiers.d.ts","../../../../node_modules/@types/semver/index.d.ts","../../../../node_modules/@types/sinonjs__fake-timers/index.d.ts","../../../../node_modules/@types/sinon/index.d.ts","../../../../node_modules/@types/sinon-chai/index.d.ts","../../../../node_modules/@types/ws/index.d.ts","../../../../node_modules/@types/xml2js/lib/processors.d.ts","../../../../node_modules/@types/xml2js/index.d.ts","../../../../node_modules/@types/yauzl/index.d.ts","../../kmc-package/src/kmp-json-file.ts"],"fileInfos":[{"version":"8730f4bf322026ff5229336391a18bcaa1f94d4f82416c8b2f3954e2ccaae2ba","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","impliedFormat":1},{"version":"7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","impliedFormat":1},{"version":"8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","impliedFormat":1},{"version":"5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","impliedFormat":1},{"version":"4b421cbfb3a38a27c279dec1e9112c3d1da296f77a1a85ddadf7e7a425d45d18","impliedFormat":1},{"version":"1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9","impliedFormat":1},{"version":"746d62152361558ea6d6115cf0da4dd10ede041d14882ede3568bce5dc4b4f1f","impliedFormat":1},{"version":"d11a03592451da2d1065e09e61f4e2a9bf68f780f4f6623c18b57816a9679d17","impliedFormat":1},{"version":"3aafcb693fe5b5c3bd277bd4c3a617b53db474fe498fc5df067c5603b1eebde7","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3d4da15233e593eacb3965cde7960f3fddf5878528d882bcedd5cbaba0193c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481","affectsGlobalScope":true,"impliedFormat":1},{"version":"097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cc8c5a3bac513368b0157f3d8b31cfdcfe78b56d3724f30f80ed9715e404af8","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true,"impliedFormat":1},{"version":"5f406584aef28a331c36523df688ca3650288d14f39c5d2e555c95f0d2ff8f6f","affectsGlobalScope":true,"impliedFormat":1},{"version":"22f230e544b35349cfb3bd9110b6ef37b41c6d6c43c3314a31bd0d9652fcec72","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ea0b55f6b315cf9ac2ad622b0a7813315bb6e97bf4bb3fbf8f8affbca7dc695","affectsGlobalScope":true,"impliedFormat":1},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb26de841c52236d8222f87e9e6a235332e0788af8c87a71e9e210314300410a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true,"impliedFormat":1},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true,"impliedFormat":1},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true,"impliedFormat":1},{"version":"81cac4cbc92c0c839c70f8ffb94eb61e2d32dc1c3cf6d95844ca099463cf37ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true,"impliedFormat":1},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true,"impliedFormat":1},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true,"impliedFormat":1},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true,"impliedFormat":1},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true,"impliedFormat":1},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true,"impliedFormat":1},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true,"impliedFormat":1},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true,"impliedFormat":1},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true,"impliedFormat":1},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true,"impliedFormat":1},{"version":"5e5e095c4470c8bab227dbbc61374878ecead104c74ab9960d3adcccfee23205","affectsGlobalScope":true,"impliedFormat":1},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true,"impliedFormat":1},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true,"impliedFormat":1},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true,"impliedFormat":1},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true,"impliedFormat":1},{"version":"2768ef564cfc0689a1b76106c421a2909bdff0acbe87da010785adab80efdd5c","affectsGlobalScope":true,"impliedFormat":1},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true,"impliedFormat":1},{"version":"6c55633c733c8378db65ac3da7a767c3cf2cf3057f0565a9124a16a3a2019e87","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe","affectsGlobalScope":true,"impliedFormat":1},{"version":"5b0ca94ec819d68d33da516306c15297acec88efeb0ae9e2b39f71dbd9685ef7","affectsGlobalScope":true,"impliedFormat":1},{"version":"34c839eaaa6d78c8674ae2c37af2236dee6831b13db7b4ef4df3ec889a04d4f2","affectsGlobalScope":true,"impliedFormat":1},{"version":"34478567f8a80171f88f2f30808beb7da15eac0538ae91282dd33dce928d98ed","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab7d58e6161a550ff92e5aff755dc37fe896245348332cd5f1e1203479fe0ed1","affectsGlobalScope":true,"impliedFormat":1},{"version":"6bda95ea27a59a276e46043b7065b55bd4b316c25e70e29b572958fa77565d43","affectsGlobalScope":true,"impliedFormat":1},{"version":"aedb8de1abb2ff1095c153854a6df7deae4a5709c37297f9d6e9948b6806fa66","affectsGlobalScope":true,"impliedFormat":1},{"version":"a4da0551fd39b90ca7ce5f68fb55d4dc0c1396d589b612e1902f68ee090aaada","affectsGlobalScope":true,"impliedFormat":1},{"version":"11ffe3c281f375fff9ffdde8bbec7669b4dd671905509079f866f2354a788064","affectsGlobalScope":true,"impliedFormat":1},{"version":"52d1bb7ab7a3306fd0375c8bff560feed26ed676a5b0457fa8027b563aecb9a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c339adcd35b01e3115c7ebe980b935b30093ac2dbe46dff36fed112e462afd2","impliedFormat":1},{"version":"95057fe078b4f02927b18b2461d7d473152c13d4d8241d32e25383d7df00adfb","signature":"ff523b2307c84b7283351186c8e9b1c6158e44d7270f7339cc106aee25831cfa","impliedFormat":99},{"version":"5fee0cc2b5564d5ffd18c552c34cd4657fa9a528a896ab29f33d80b77ffdfbf2","impliedFormat":99},{"version":"1b49b2cd09b0a772b4ac5c726702e27893438aa9007fdb4f44ac6ebb6ffd74ed","signature":"7a1096029c339caaeb7596af3a96ca0f11b54ff2a43972785536bf54e04a96c4","impliedFormat":99},{"version":"1ba07348f589a26846ef080f800864bd69fd115cda561c90d4cf64ac350d6bcb","impliedFormat":99},{"version":"9bf31f4c38794e759172b74875b5424583291ca4ed2ffeba27ec51f899ef58e9","signature":"983725ecca2ae7fa77e1ef2a6c9110496b1006b3ed3041c68c5f1f7241f83cc5","impliedFormat":99},{"version":"c4c03cf65951d980ba618ae9601d10438730803fc9c8a1f7b34af8739981e205","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb928b21f5a16a1d64a8e2e74a3f389ace89da74820f070f893221213c50aa3c","affectsGlobalScope":true,"impliedFormat":1},{"version":"5cd9c902b221c5aca739cbc3fb4339c3c5115198808d4f5d7610a674e4b9c66d","impliedFormat":1},{"version":"fe892fea1e75a442fffb4a604d7eeb451e858787a9f2f01c4e83bf12a3b5048d","impliedFormat":1},{"version":"d5c80b931928fbd06f967ce4bdca24fbb37523773ac2c7c87458a689154351fb","impliedFormat":1},{"version":"fcd718b2feb2820a9844536a1a2fbc77a3da90820e02894d40f879a789f46560","impliedFormat":1},{"version":"525c8fc510d9632d2a0a9de2d41c3ac1cdd79ff44d3b45c6d81cacabb683528d","impliedFormat":1},{"version":"ece75b9bfc916f9ccc4e8a9ddee1dda5c987804fbe3b60a01fc120fae731c2ce","impliedFormat":1},{"version":"4e146a0b69c893ae1538aff8b76f4e8796755bdd45050a83099348d59863437e","impliedFormat":1},{"version":"a1dc9cfe8be39cbcef62692510b450ab35553ef39382715c88763d0c477704a9","impliedFormat":1},{"version":"05e732266b5a36789fd9eb846b1f45fec1b6e318b740e3f20fc22fd95f9ebf31","impliedFormat":1},{"version":"985c3d1b62a4a4f563e3ca3e3a47717cff7d82c81883d62ecf08d8417eb477c4","impliedFormat":1},{"version":"8059976d7f408e08be353de1833172139bbaa70fc33d01b98249f7226c122119","impliedFormat":1},{"version":"1733741cf2adc5926ac58c66004268cdc3d34b2ff6250f5114db14253ea02ce1","impliedFormat":1},{"version":"df18df925483862e8ff216d7b17e50b7311a3add2fb7feb128d321ec099352ca","impliedFormat":1},{"version":"b6b09f944889a23f19eba6e0f112030e55160c5e1a225012ab2349c582ba5595","impliedFormat":1},{"version":"152af7c23ec219f632afa2d861abc65993f56cd39a4f3a4018515dbc05950a74","impliedFormat":1},{"version":"3a0bdc4c5b6f84a1abb5356d7a7fa1f96ac6c5b5646eec3ef2b33c1ed095e155","impliedFormat":1},{"version":"03394bf8deb8781b490ae9266a843fbdf00647947d79e25fcbf1d89a9e9c8a66","impliedFormat":1},{"version":"56a15cc211894d79aa44cbb46c276bfd3f10458a61bff2dec99114db8a7e71e3","impliedFormat":1},{"version":"1a5366b0d4d0153955fd85777c72d35979dabc0537649da6eade09007c0d080a","impliedFormat":1},{"version":"61c84c3b0eb6e60196d15ae5e21793a1d4241c547f0bdd0529ffae838d1a073c","impliedFormat":1},{"version":"272522db288a7e03f14ff930407b776357082efce20369ea42239a57af9c7f81","impliedFormat":1},{"version":"3a8848a9c307429b861402cc69bc472ffe0c05b86474fc158723169161e16389","impliedFormat":1},{"version":"3f6a1fd73c9dc3bd7f4b79bc075297ca6527904df69b0f2c2c94e4c4c7d9a32c","impliedFormat":1},{"version":"8969e0b4d22ca77ad011c8fc4a25ec5d515bdfae4ecbd22608ed0d5c38829c1e","impliedFormat":1},{"version":"b2fe368abdc803b82d27bd27f168d106804422ade198c3c085e2519b195ebd26","impliedFormat":1},{"version":"93acebcaa2e94903a83cebf3f109eb2917acab902045ee8c3d8f69f29baafa68","impliedFormat":1},{"version":"8e2f9031210a8fc27af8844bf69f964307d6013c90336bea9fb5d6ba43248c78","impliedFormat":1},{"version":"17e157df6125098a1a34eb4d201ee4ac03bbe97e471ab5627bb2c40fce555948","impliedFormat":1},{"version":"b40652bf8ce4a18133b31349086523b219724dca8df3448c1a0742528e7ad5b9","impliedFormat":1},{"version":"4bdb7b15b3f9a3ee0b856c7b991d0e522f8ce92f7b66ae8ac00e61d1269dd10a","impliedFormat":1},{"version":"978aecd2e6bc2ac094e9a35eda98ff8586713857b3655e7c98ca5ed8f7d50662","impliedFormat":1},{"version":"a185b8e0d7a4ae078a79339d63e98177813aac39256f69f788eaf5c360aa756f","impliedFormat":1},{"version":"c6b71a0585467900820167370738cfc256e9635471725a7ba1d24a3a262984e5","impliedFormat":1},{"version":"8bf10278b5c28698a73f800fde911bcc33d405a15f7bddab1c4ade637b69a822","impliedFormat":1},{"version":"e880a08fbb0d9ee2f733f9183f4d1bdb75bc9e0e64060a8a1fc30540791fcded","impliedFormat":1},{"version":"b0b4974c11712db7a362ae6fa8ea0f0042a7c34da5f0c80302650ffe921e3d87","impliedFormat":1},{"version":"69fc4a10650eff3416ba5c2f7ce71744734928a7135ebe5a63c61d2d03ca3ec3","impliedFormat":1},{"version":"13918848c4e07d1094164112bd7fd151d61cbb949ceef340a2a4595cd609afb6","impliedFormat":1},{"version":"9af6a9de7bd818e68c4236f20027ff4b19387c2269a6952945d1a716c177cc4d","impliedFormat":1},{"version":"3497438242251378cf232f36a7fabac70e7bd8229d68dac8955534e63ffc8ff4","impliedFormat":1},{"version":"e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b","impliedFormat":1},{"version":"e033253e77794e1595f01372623b631d986e04dcb47d08948301fd2652886a83","impliedFormat":1},{"version":"6d829824ead8999f87b6df21200df3c6150391b894b4e80662caa462bd48d073","impliedFormat":1},{"version":"afc559c1b93df37c25aef6b3dfa2d64325b0e112e887ee18bf7e6f4ec383fc90","impliedFormat":1},{"version":"cd71905370ede696577acc23c695181e618a7d08616b1d06b43d3e6a12880fab","impliedFormat":1},{"version":"cab425b5559edac18327eb2c3c0f47e7e9f71b667290b7689faafd28aac69eae","impliedFormat":1},{"version":"3cfb0cb51cc2c2e1b313d7c4df04dbf7e5bda0a133c6b309bf6af77cf614b971","impliedFormat":1},{"version":"f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562","impliedFormat":1},{"version":"c8747693e5872ad5ef3aa016731a06915e1c34dae987829d9aa5bd40c7a2c54b","affectsGlobalScope":true,"impliedFormat":1},{"version":"567a315b240a060518c532d38a46803b6d35e75dc14a9be435b6dc20c816741e","impliedFormat":1},{"version":"117ffeecf6c55e25b6446f449ad079029b5e7317399b0a693858faaaea5ca73e","impliedFormat":1},{"version":"6fbd58e4015b9ae31ea977d4d549eb24a1102cc798b57ec5d70868b542c06612","impliedFormat":1},{"version":"16d51f964ec125ad2024cf03f0af444b3bc3ec3614d9345cc54d09bab45c9a4c","impliedFormat":1},{"version":"ba601641fac98c229ccd4a303f747de376d761babb33229bb7153bed9356c9cc","impliedFormat":1},{"version":"d2f7baf43dfa349d4010cbd9d64d84cdf3ec26c65fa5f44c8f74f052bedd0b49","affectsGlobalScope":true,"impliedFormat":1},{"version":"84e3bbd6f80983d468260fdbfeeb431cc81f7ea98d284d836e4d168e36875e86","impliedFormat":1},{"version":"0b85cb069d0e427ba946e5eb2d86ef65ffd19867042810516d16919f6c1a5aec","impliedFormat":1},{"version":"15c88bfd1b8dc7231ff828ae8df5d955bae5ebca4cf2bcb417af5821e52299ae","impliedFormat":1},{"version":"71f1e965980d8edbd2c905f35c4341c2e86afc6f9b1d105342db2f6a85876089","impliedFormat":1},{"version":"8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","impliedFormat":1},{"version":"75bdc1b420f0ffc6cc6fd0b6694d89f5072bf755b4e6c7e65a2fda797ca0bb8a","impliedFormat":1},{"version":"fec943fdb3275eb6e006b35e04a8e2e99e9adf3f4b969ddf15315ac7575a93e4","impliedFormat":1},{"version":"3ee881b5584c5718935e6fe1fc1080b997682a3c8bebd17d51dccfd41c3e7da6","affectsGlobalScope":true,"impliedFormat":1},{"version":"2b93035328f7778d200252681c1d86285d501ed424825a18f81e4c3028aa51d9","impliedFormat":1},{"version":"2ac9c8332c5f8510b8bdd571f8271e0f39b0577714d5e95c1e79a12b2616f069","impliedFormat":1},{"version":"42c21aa963e7b86fa00801d96e88b36803188018d5ad91db2a9101bccd40b3ff","impliedFormat":1},{"version":"d31eb848cdebb4c55b4893b335a7c0cca95ad66dee13cbb7d0893810c0a9c301","impliedFormat":1},{"version":"77c1d91a129ba60b8c405f9f539e42df834afb174fe0785f89d92a2c7c16b77a","impliedFormat":1},{"version":"7a9e0a564fee396cacf706523b5aeed96e04c6b871a8bebefad78499fbffc5bc","impliedFormat":1},{"version":"906c751ef5822ec0dadcea2f0e9db64a33fb4ee926cc9f7efa38afe5d5371b2a","impliedFormat":1},{"version":"5387c049e9702f2d2d7ece1a74836a14b47fbebe9bbeb19f94c580a37c855351","impliedFormat":1},{"version":"c68391fb9efad5d99ff332c65b1606248c4e4a9f1dd9a087204242b56c7126d6","impliedFormat":1},{"version":"e9cf02252d3a0ced987d24845dcb1f11c1be5541f17e5daa44c6de2d18138d0c","impliedFormat":1},{"version":"e8b02b879754d85f48489294f99147aeccc352c760d95a6fe2b6e49cd400b2fe","impliedFormat":1},{"version":"9f6908ab3d8a86c68b86e38578afc7095114e66b2fc36a2a96e9252aac3998e0","impliedFormat":1},{"version":"0eedb2344442b143ddcd788f87096961cd8572b64f10b4afc3356aa0460171c6","impliedFormat":1},{"version":"71405cc70f183d029cc5018375f6c35117ffdaf11846c35ebf85ee3956b1b2a6","impliedFormat":1},{"version":"c68baff4d8ba346130e9753cefe2e487a16731bf17e05fdacc81e8c9a26aae9d","impliedFormat":1},{"version":"2cd15528d8bb5d0453aa339b4b52e0696e8b07e790c153831c642c3dea5ac8af","impliedFormat":1},{"version":"479d622e66283ffa9883fbc33e441f7fc928b2277ff30aacbec7b7761b4e9579","impliedFormat":1},{"version":"ade307876dc5ca267ca308d09e737b611505e015c535863f22420a11fffc1c54","impliedFormat":1},{"version":"f8cdefa3e0dee639eccbe9794b46f90291e5fd3989fcba60d2f08fde56179fb9","impliedFormat":1},{"version":"86c5a62f99aac7053976e317dbe9acb2eaf903aaf3d2e5bb1cafe5c2df7b37a8","impliedFormat":1},{"version":"2b300954ce01a8343866f737656e13243e86e5baef51bd0631b21dcef1f6e954","impliedFormat":1},{"version":"a2d409a9ffd872d6b9d78ead00baa116bbc73cfa959fce9a2f29d3227876b2a1","impliedFormat":1},{"version":"b288936f560cd71f4a6002953290de9ff8dfbfbf37f5a9391be5c83322324898","impliedFormat":1},{"version":"61178a781ef82e0ff54f9430397e71e8f365fc1e3725e0e5346f2de7b0d50dfa","impliedFormat":1},{"version":"6a6ccb37feb3aad32d9be026a3337db195979cd5727a616fc0f557e974101a54","impliedFormat":1},{"version":"c649ea79205c029a02272ef55b7ab14ada0903db26144d2205021f24727ac7a3","impliedFormat":1},{"version":"38e2b02897c6357bbcff729ef84c736727b45cc152abe95a7567caccdfad2a1d","impliedFormat":1},{"version":"d6610ea7e0b1a7686dba062a1e5544dd7d34140f4545305b7c6afaebfb348341","impliedFormat":1},{"version":"3dee35db743bdba2c8d19aece7ac049bde6fa587e195d86547c882784e6ba34c","impliedFormat":1},{"version":"b15e55c5fa977c2f25ca0b1db52cfa2d1fd4bf0baf90a8b90d4a7678ca462ff1","impliedFormat":1},{"version":"f41d30972724714763a2698ae949fbc463afb203b5fa7c4ad7e4de0871129a17","impliedFormat":1},{"version":"843dd7b6a7c6269fd43827303f5cbe65c1fecabc30b4670a50d5a15d57daeeb9","impliedFormat":1},{"version":"f06d8b8567ee9fd799bf7f806efe93b67683ef24f4dea5b23ef12edff4434d9d","impliedFormat":1},{"version":"6017384f697ff38bc3ef6a546df5b230c3c31329db84cbfe686c83bec011e2b2","impliedFormat":1},{"version":"e1a5b30d9248549ca0c0bb1d653bafae20c64c4aa5928cc4cd3017b55c2177b0","impliedFormat":1},{"version":"a593632d5878f17295bd53e1c77f27bf4c15212822f764a2bfc1702f4b413fa0","impliedFormat":1},{"version":"a868a534ba1c2ca9060b8a13b0ffbbbf78b4be7b0ff80d8c75b02773f7192c29","impliedFormat":1},{"version":"da7545aba8f54a50fde23e2ede00158dc8112560d934cee58098dfb03aae9b9d","impliedFormat":1},{"version":"34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","impliedFormat":1},{"version":"6aee496bf0ecfbf6731aa8cca32f4b6e92cdc0a444911a7d88410408a45ecc5d","impliedFormat":1},{"version":"f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","impliedFormat":1},{"version":"354abbae08f72ea982b1a767a8908f1b3efe8bbe53955c64f9c0c249c8832d5d","impliedFormat":1},{"version":"4f0ad52a7fbd6bfba88ec22ec719b6956a0fc647030462f9db490e74236d116f","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4358a89fcd9c579f84a6c68e2ce44ca91b07e4db3f8f403c2b7a72c1a1e04b6","impliedFormat":1},{"version":"c0288f54de6f544706a3150c8b579b1a975870695c4be866f727ece6a16f3976","impliedFormat":1},{"version":"f68e56efa9fc1fbdfac28bf07b5b1061161d243f4d9616d1606ce880e2d9d8c4","impliedFormat":1},{"version":"b2d70a269840a9528db473ac7565442434333a05c1f66801a7a672e82beb903e","impliedFormat":1}],"options":{"alwaysStrict":true,"composite":true,"declaration":true,"declarationMap":true,"module":7,"noImplicitAny":true,"noImplicitReturns":true,"noImplicitThis":true,"noUnusedLocals":true,"outDir":"./src","rootDir":"../src","sourceMap":true,"strictBindCallApply":true,"strictFunctionTypes":true,"target":9},"fileIdsList":[[104,105],[76,83,92],[68,76,83],[92],[74,76,83],[76],[76,92,98],[76,83,92,98],[76,77,78,83,92,95,98],[76,78,95,98],[104,106],[74,76,92],[66],[76,92],[90,99,101],[72,74,83,92],[65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103],[83],[89],[59,61,62,77,85,176],[60],[78,107,108],[76,78,98,107,110,111,112],[78,107],[78],[76,78,107,118,119],[109,119,120,122],[76,107],[92,123],[78,92,107],[129,168],[129,153,168],[168],[129],[129,154,168],[129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167],[154,168],[78,107,121],[114,170],[169],[76,78,80,92,95,98,103,107],[76,107,173],[76,92,107],[62]],"referencedMap":[[106,1],[68,2],[69,3],[72,4],[73,5],[75,6],[76,6],[77,7],[78,8],[79,9],[80,10],[107,11],[81,6],[83,12],[86,13],[90,14],[91,15],[92,6],[95,16],[104,17],[97,18],[98,19],[102,14],[103,4],[63,20],[62,21],[109,22],[113,23],[108,24],[117,25],[120,26],[123,27],[127,28],[128,29],[112,30],[153,31],[154,32],[129,33],[132,33],[151,31],[152,31],[142,31],[141,34],[139,31],[134,31],[147,31],[145,31],[149,31],[133,31],[146,31],[150,31],[135,31],[136,31],[148,31],[130,31],[137,31],[138,31],[140,31],[144,31],[155,35],[143,31],[131,31],[168,36],[162,35],[164,37],[163,35],[156,35],[157,35],[159,35],[161,35],[165,37],[166,37],[158,37],[160,37],[122,38],[171,39],[170,40],[172,41],[174,42],[175,43],[110,6]],"exportedModulesMap":[[106,1],[68,2],[69,3],[72,4],[73,5],[75,6],[76,6],[77,7],[78,8],[79,9],[80,10],[107,11],[81,6],[83,12],[86,13],[90,14],[91,15],[92,6],[95,16],[104,17],[97,18],[98,19],[102,14],[103,4],[63,44],[62,21],[109,22],[113,23],[108,24],[117,25],[120,26],[123,27],[127,28],[128,29],[112,30],[153,31],[154,32],[129,33],[132,33],[151,31],[152,31],[142,31],[141,34],[139,31],[134,31],[147,31],[145,31],[149,31],[133,31],[146,31],[150,31],[135,31],[136,31],[148,31],[130,31],[137,31],[138,31],[140,31],[144,31],[155,35],[143,31],[131,31],[168,36],[162,35],[164,37],[163,35],[156,35],[157,35],[159,35],[161,35],[165,37],[166,37],[158,37],[160,37],[122,38],[171,39],[170,40],[172,41],[174,42],[175,43],[110,6]],"semanticDiagnosticsPerFile":[64,105,66,106,67,68,69,70,71,72,73,74,75,76,77,65,78,79,80,107,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,104,97,98,99,100,101,102,103,59,63,61,62,60,109,113,114,115,108,116,117,120,123,124,111,125,126,127,121,128,119,118,112,153,154,129,132,151,152,142,141,139,134,147,145,149,133,146,150,135,136,148,130,137,138,140,144,155,143,131,168,167,162,164,163,156,157,159,161,165,166,158,160,122,171,170,169,172,174,173,175,110,10,11,15,14,2,16,17,18,19,20,21,22,23,3,4,27,24,25,26,28,29,30,5,31,32,33,34,6,38,35,36,37,39,7,40,45,46,41,42,43,44,8,50,47,48,49,51,9,52,58,53,54,55,56,1,57,13,12],"latestChangedDtsFile":"./src/model-info-compiler.d.ts"},"version":"4.9.5"}
|
package/build.sh
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
#
|
|
3
|
+
# Compiles the kmc lexical model model-info compiler.
|
|
4
|
+
#
|
|
5
|
+
|
|
6
|
+
# Exit on command failure and when using unset variables:
|
|
7
|
+
set -eu
|
|
8
|
+
|
|
9
|
+
## START STANDARD BUILD SCRIPT INCLUDE
|
|
10
|
+
# adjust relative paths as necessary
|
|
11
|
+
THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
|
|
12
|
+
. "${THIS_SCRIPT%/*}/../../../resources/build/build-utils.sh"
|
|
13
|
+
## END STANDARD BUILD SCRIPT INCLUDE
|
|
14
|
+
|
|
15
|
+
cd "$THIS_SCRIPT_PATH"
|
|
16
|
+
|
|
17
|
+
. "$KEYMAN_ROOT/resources/shellHelperFunctions.sh"
|
|
18
|
+
|
|
19
|
+
builder_describe "Build Keyman kmc Lexical Model model-info Compiler module" \
|
|
20
|
+
"@/developer/src/kmc-package" \
|
|
21
|
+
"configure" \
|
|
22
|
+
"build" \
|
|
23
|
+
"clean" \
|
|
24
|
+
"test" \
|
|
25
|
+
"publish publish to npm" \
|
|
26
|
+
"--dry-run,-n don't actually publish, just dry run"
|
|
27
|
+
builder_describe_outputs \
|
|
28
|
+
configure /node_modules \
|
|
29
|
+
build /developer/src/kmc-model-info/build/src/model-info-compiler.js
|
|
30
|
+
|
|
31
|
+
builder_parse "$@"
|
|
32
|
+
|
|
33
|
+
#-------------------------------------------------------------------------------------------------------------------
|
|
34
|
+
|
|
35
|
+
if builder_start_action clean; then
|
|
36
|
+
rm -rf ./build/ ./tsconfig.tsbuildinfo
|
|
37
|
+
builder_finish_action success clean
|
|
38
|
+
fi
|
|
39
|
+
|
|
40
|
+
#-------------------------------------------------------------------------------------------------------------------
|
|
41
|
+
|
|
42
|
+
if builder_start_action configure; then
|
|
43
|
+
verify_npm_setup
|
|
44
|
+
builder_finish_action success configure
|
|
45
|
+
fi
|
|
46
|
+
|
|
47
|
+
#-------------------------------------------------------------------------------------------------------------------
|
|
48
|
+
|
|
49
|
+
if builder_start_action build; then
|
|
50
|
+
npm run build
|
|
51
|
+
builder_finish_action success build
|
|
52
|
+
fi
|
|
53
|
+
|
|
54
|
+
#-------------------------------------------------------------------------------------------------------------------
|
|
55
|
+
|
|
56
|
+
if builder_start_action test; then
|
|
57
|
+
#npm test - no tests as yet
|
|
58
|
+
builder_finish_action success test
|
|
59
|
+
fi
|
|
60
|
+
|
|
61
|
+
#-------------------------------------------------------------------------------------------------------------------
|
|
62
|
+
|
|
63
|
+
if builder_start_action publish; then
|
|
64
|
+
. "$KEYMAN_ROOT/resources/build/build-utils-ci.inc.sh"
|
|
65
|
+
builder_publish_to_npm
|
|
66
|
+
builder_finish_action success publish
|
|
67
|
+
fi
|
package/package.json
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@keymanapp/kmc-model-info",
|
|
3
|
+
"description": "Keyman Developer .model_info compiler",
|
|
4
|
+
"keywords": [
|
|
5
|
+
"keyboard",
|
|
6
|
+
"keyman",
|
|
7
|
+
"unicode",
|
|
8
|
+
"lexical-model",
|
|
9
|
+
"predictive-text"
|
|
10
|
+
],
|
|
11
|
+
"type": "module",
|
|
12
|
+
"exports": {
|
|
13
|
+
".": "./build/src/model-info-compiler.js"
|
|
14
|
+
},
|
|
15
|
+
"scripts": {
|
|
16
|
+
"build": "tsc -b",
|
|
17
|
+
"test": "cd test && tsc -b && cd .. && c8 --reporter=lcov --reporter=text mocha",
|
|
18
|
+
"prepublishOnly": "npm run build"
|
|
19
|
+
},
|
|
20
|
+
"author": "Marc Durdin <marc@keyman.com> (https://github.com/mcdurdin)",
|
|
21
|
+
"contributors": [
|
|
22
|
+
"Eddie Antonio Santos <Eddie.Santos@nrc-cnrc.gc.ca>",
|
|
23
|
+
"Joshua Horton"
|
|
24
|
+
],
|
|
25
|
+
"license": "MIT",
|
|
26
|
+
"bugs": {
|
|
27
|
+
"url": "https://github.com/keymanapp/keyman/issues"
|
|
28
|
+
},
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"@keymanapp/keyman-version": "*",
|
|
31
|
+
"@keymanapp/kmc-package": "*",
|
|
32
|
+
"@keymanapp/models-types": "*"
|
|
33
|
+
},
|
|
34
|
+
"devDependencies": {
|
|
35
|
+
"@types/chai": "^4.1.7",
|
|
36
|
+
"@types/mocha": "^5.2.7",
|
|
37
|
+
"@types/node": "^10.14.6",
|
|
38
|
+
"@types/xml2js": "^0.4.5",
|
|
39
|
+
"c8": "^7.12.0",
|
|
40
|
+
"chai": "^4.3.4",
|
|
41
|
+
"chalk": "^2.4.2",
|
|
42
|
+
"mocha": "^8.4.0",
|
|
43
|
+
"ts-node": "^9.1.1",
|
|
44
|
+
"typescript": "^4.9.5"
|
|
45
|
+
},
|
|
46
|
+
"mocha": {
|
|
47
|
+
"spec": "build/test/**/test-*.js",
|
|
48
|
+
"require": [
|
|
49
|
+
"source-map-support/register"
|
|
50
|
+
]
|
|
51
|
+
},
|
|
52
|
+
"repository": {
|
|
53
|
+
"type": "git",
|
|
54
|
+
"url": "git+https://github.com/keymanapp/keyman.git"
|
|
55
|
+
},
|
|
56
|
+
"version": "17.0.85-alpha"
|
|
57
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const minKeymanVersion = '12.0';
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Merges a source .model_info file with metadata extracted from .kps file and
|
|
3
|
+
* compiled files to produce a comprehensive .model_info file.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/// <reference path="../../kmc-package/src/kmp-json-file.ts" />
|
|
7
|
+
/// <reference path="./model-info-file.ts" />
|
|
8
|
+
|
|
9
|
+
import * as fs from "fs";
|
|
10
|
+
import * as path from "path";
|
|
11
|
+
import { minKeymanVersion } from "./min-keyman-version.js";
|
|
12
|
+
import { ModelInfoFile } from "./model-info-file.js";
|
|
13
|
+
import { type KmpJsonFile } from "@keymanapp/kmc-package";
|
|
14
|
+
|
|
15
|
+
export class ModelInfoOptions {
|
|
16
|
+
/** The identifier for the model */
|
|
17
|
+
model_id: string;
|
|
18
|
+
|
|
19
|
+
/** The data from the .kps file, transformed to kmp.json */
|
|
20
|
+
kmpJsonData: KmpJsonFile;
|
|
21
|
+
|
|
22
|
+
/** The path in the keymanapp/lexical-models repo where this model may be found (optional) */
|
|
23
|
+
sourcePath?: string;
|
|
24
|
+
|
|
25
|
+
/** The compiled model filename and relative path (.js) */
|
|
26
|
+
modelFileName: string;
|
|
27
|
+
|
|
28
|
+
/** The compiled package filename and relative path (.kmp) */
|
|
29
|
+
kmpFileName: string;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Merges source .model_info file with metadata from the model and package source file.
|
|
34
|
+
* This function is intended for use within the lexical-models repository. While many of the
|
|
35
|
+
* parameters could be deduced from each other, they are specified here to reduce the
|
|
36
|
+
* number of places the filenames are constructed.
|
|
37
|
+
*
|
|
38
|
+
* @param sourceModelInfoFileName Path for the source .model_info file
|
|
39
|
+
* @param destModelInfoFileName Path to write the merged .model_info file to
|
|
40
|
+
* @param options Details on files from which to extract additional metadata
|
|
41
|
+
*/
|
|
42
|
+
export function writeMergedModelMetadataFile(
|
|
43
|
+
sourceModelInfoFileName: string,
|
|
44
|
+
destModelInfoFileName: string,
|
|
45
|
+
options: ModelInfoOptions
|
|
46
|
+
) {
|
|
47
|
+
|
|
48
|
+
/*
|
|
49
|
+
* Model info looks like this:
|
|
50
|
+
*
|
|
51
|
+
* {
|
|
52
|
+
* "name": "Example Template Model"
|
|
53
|
+
* "license": "mit",
|
|
54
|
+
* "version": "1.0.0",
|
|
55
|
+
* "languages": ["en"],
|
|
56
|
+
* "authorName": "Example Author",
|
|
57
|
+
* "authorEmail": "nobody@example.com",
|
|
58
|
+
* "description": "Example wordlist model"
|
|
59
|
+
* }
|
|
60
|
+
*
|
|
61
|
+
* For full documentation, see:
|
|
62
|
+
* https://help.keyman.com/developer/cloud/model_info/1.0/
|
|
63
|
+
*/
|
|
64
|
+
let model_info: ModelInfoFile = JSON.parse(fs.readFileSync(sourceModelInfoFileName, 'utf8'));
|
|
65
|
+
|
|
66
|
+
//
|
|
67
|
+
// Build merged .model_info file
|
|
68
|
+
// https://api.keyman.com/schemas/model_info.source.json and
|
|
69
|
+
// https://api.keyman.com/schemas/model_info.distribution.json
|
|
70
|
+
// https://help.keyman.com/developer/cloud/model_info/1.0
|
|
71
|
+
//
|
|
72
|
+
|
|
73
|
+
function setModelMetadata(field: keyof ModelInfoFile, expected: unknown, warn: boolean = true) {
|
|
74
|
+
if (model_info[field] && model_info[field] !== expected) {
|
|
75
|
+
if (warn || typeof warn === 'undefined')
|
|
76
|
+
console.warn(`Warning: source ${sourceModelInfoFileName} field ${field} value "${model_info[field]}" does not match "${expected}" found in source file metadata.`);
|
|
77
|
+
}
|
|
78
|
+
// TypeScript gets upset with this assignment, because it cannot deduce
|
|
79
|
+
// the exact type of model_info[field] -- there are many possibilities!
|
|
80
|
+
// So we assert that it's unknown so that TypeScript can chill.
|
|
81
|
+
(<unknown> model_info[field]) = model_info[field] || expected;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
//
|
|
85
|
+
// Merge model info file -- some fields have "special" behaviours -- see below
|
|
86
|
+
//
|
|
87
|
+
|
|
88
|
+
setModelMetadata('id', options.model_id);
|
|
89
|
+
|
|
90
|
+
setModelMetadata('name', options.kmpJsonData.info.name.description);
|
|
91
|
+
|
|
92
|
+
let author = options.kmpJsonData.info.author;
|
|
93
|
+
setModelMetadata('authorName', author.description);
|
|
94
|
+
|
|
95
|
+
if (author.url) {
|
|
96
|
+
// we strip the mailto: from the .kps file for the .model_info
|
|
97
|
+
let match = author.url.match(/^(mailto\:)?(.+)$/);
|
|
98
|
+
if (match === null) {
|
|
99
|
+
throw new Error(`Invalid author email: ${author.url}`);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
let email = match[2];
|
|
103
|
+
setModelMetadata('authorEmail', email, false);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// extract the language identifiers from the language metadata
|
|
107
|
+
// arrays for each of the lexical models in the kmp.json file,
|
|
108
|
+
// and merge into a single array of identifiers in the
|
|
109
|
+
// .model_info file.
|
|
110
|
+
|
|
111
|
+
model_info.languages = model_info.languages || options.kmpJsonData.lexicalModels.reduce((a, e) => [].concat(a, e.languages.map((f) => f.id)), []);
|
|
112
|
+
|
|
113
|
+
setModelMetadata('lastModifiedDate', (new Date).toISOString());
|
|
114
|
+
setModelMetadata('packageFilename', path.basename(options.kmpFileName));
|
|
115
|
+
|
|
116
|
+
// Always overwrite with actual file size
|
|
117
|
+
model_info.packageFileSize = fs.statSync(options.kmpFileName).size;
|
|
118
|
+
|
|
119
|
+
setModelMetadata('jsFilename', path.basename(options.modelFileName));
|
|
120
|
+
|
|
121
|
+
// Always overwrite with actual file size
|
|
122
|
+
model_info.jsFileSize = fs.statSync(options.modelFileName).size;
|
|
123
|
+
|
|
124
|
+
// Always overwrite source data
|
|
125
|
+
model_info.packageIncludes = options.kmpJsonData.files.filter((e) => !!e.name.match(/.[ot]tf$/i)).length ? ['fonts'] : [];
|
|
126
|
+
|
|
127
|
+
setModelMetadata('version', options.kmpJsonData.info.version.description);
|
|
128
|
+
|
|
129
|
+
// The minimum Keyman version detected in the package file may be manually set higher by the developer
|
|
130
|
+
setModelMetadata('minKeymanVersion', minKeymanVersion, false);
|
|
131
|
+
|
|
132
|
+
if(options.sourcePath) {
|
|
133
|
+
setModelMetadata('sourcePath', options.sourcePath);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
fs.writeFileSync(destModelInfoFileName, JSON.stringify(model_info, null, 2));
|
|
137
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export interface ModelInfoFile {
|
|
2
|
+
id?: string;
|
|
3
|
+
name?: string;
|
|
4
|
+
authorName?: string;
|
|
5
|
+
authorEmail?: string;
|
|
6
|
+
description?: string;
|
|
7
|
+
license: "mit";
|
|
8
|
+
languages: Array<string>;
|
|
9
|
+
lastModifiedDate?: string;
|
|
10
|
+
links: ModelInfoFileLink[];
|
|
11
|
+
packageFilename?: string;
|
|
12
|
+
packageFileSize?: number;
|
|
13
|
+
jsFilename?: string;
|
|
14
|
+
jsFileSize?: number;
|
|
15
|
+
isRTL?: boolean;
|
|
16
|
+
packageIncludes?: string[]; //['fonts'] or []
|
|
17
|
+
version?: string;
|
|
18
|
+
minKeymanVersion?: string;
|
|
19
|
+
helpLink?: string;
|
|
20
|
+
sourcePath?: string;
|
|
21
|
+
related?: ModelInfoFileRelated[];
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export interface ModelInfoFileLink {
|
|
25
|
+
name: string;
|
|
26
|
+
url: string;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export interface ModelInfoFileRelated {
|
|
30
|
+
deprecates?: string;
|
|
31
|
+
deprecatedBy?: string;
|
|
32
|
+
note?: string;
|
|
33
|
+
}
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "../kmc/tsconfig.kmc-base.json",
|
|
3
|
+
|
|
4
|
+
"compilerOptions": {
|
|
5
|
+
"outDir": "build/src/",
|
|
6
|
+
"rootDir": "src/",
|
|
7
|
+
"baseUrl": ".",
|
|
8
|
+
"paths": {
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
"include": [
|
|
12
|
+
"src/**/*.ts"
|
|
13
|
+
],
|
|
14
|
+
"references": [
|
|
15
|
+
{ "path": "../kmc-package" } // can we eliminate this in future?
|
|
16
|
+
]
|
|
17
|
+
}
|