@keymanapp/kmc-keyboard-info 17.0.244-alpha → 17.0.245-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/src/index.d.ts +4 -56
- package/build/src/index.d.ts.map +1 -1
- package/build/src/index.js +4 -444
- package/build/src/index.js.map +1 -1
- package/build/src/{messages.d.ts → keyboard-info-compiler-messages.d.ts} +3 -3
- package/build/src/keyboard-info-compiler-messages.d.ts.map +1 -0
- package/build/src/{messages.js → keyboard-info-compiler-messages.js} +3 -3
- package/build/src/keyboard-info-compiler-messages.js.map +1 -0
- package/build/src/keyboard-info-compiler.d.ts +57 -0
- package/build/src/keyboard-info-compiler.d.ts.map +1 -0
- package/build/src/keyboard-info-compiler.js +445 -0
- package/build/src/keyboard-info-compiler.js.map +1 -0
- package/package.json +4 -4
- package/build/src/messages.d.ts.map +0 -1
- package/build/src/messages.js.map +0 -1
package/build/src/index.d.ts
CHANGED
|
@@ -1,57 +1,5 @@
|
|
|
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
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
*/
|
|
6
|
-
import { KeyboardInfoFileLanguageFont } from "./keyboard-info-file.js";
|
|
7
|
-
import { CompilerCallbacks, KmpJsonFile, KeymanCompiler, CompilerOptions, KeymanCompilerResult, KeymanCompilerArtifacts, KeymanCompilerArtifact } from "@keymanapp/common-types";
|
|
8
|
-
export interface KeyboardInfoSources {
|
|
9
|
-
/** The path in the keymanapp/keyboards repo where this keyboard may be found */
|
|
10
|
-
sourcePath: string;
|
|
11
|
-
/** The compiled keyboard filename and relative path (.js only) */
|
|
12
|
-
jsFilename?: string;
|
|
13
|
-
/** The compiled package filename and relative path (.kmp) */
|
|
14
|
-
kmpFilename: string;
|
|
15
|
-
/** The source package filename and relative path (.kps) */
|
|
16
|
-
kpsFilename: string;
|
|
17
|
-
/** Last modification date for files in the project folder 'YYYY-MM-DDThh:mm:ssZ' */
|
|
18
|
-
lastCommitDate?: string;
|
|
19
|
-
/** Return an error if project does not meet requirements of keyboards repository */
|
|
20
|
-
forPublishing: boolean;
|
|
21
|
-
}
|
|
22
|
-
export interface KeyboardInfoCompilerOptions extends CompilerOptions {
|
|
23
|
-
sources: KeyboardInfoSources;
|
|
24
|
-
}
|
|
25
|
-
export interface KeyboardInfoCompilerArtifacts extends KeymanCompilerArtifacts {
|
|
26
|
-
keyboard_info: KeymanCompilerArtifact;
|
|
27
|
-
}
|
|
28
|
-
export interface KeyboardInfoCompilerResult extends KeymanCompilerResult {
|
|
29
|
-
artifacts: KeyboardInfoCompilerArtifacts;
|
|
30
|
-
}
|
|
31
|
-
export declare class KeyboardInfoCompiler implements KeymanCompiler {
|
|
32
|
-
private callbacks;
|
|
33
|
-
private options;
|
|
34
|
-
constructor();
|
|
35
|
-
init(callbacks: CompilerCallbacks, options: KeyboardInfoCompilerOptions): Promise<boolean>;
|
|
36
|
-
/**
|
|
37
|
-
* Builds a .keyboard_info file with metadata from the keyboard and package source file.
|
|
38
|
-
* This function is intended for use within the keyboards repository. While many of the
|
|
39
|
-
* parameters could be deduced from each other, they are specified here to reduce the
|
|
40
|
-
* number of places the filenames are constructed.
|
|
41
|
-
* For full documentation, see:
|
|
42
|
-
* https://help.keyman.com/developer/cloud/keyboard_info/
|
|
43
|
-
*
|
|
44
|
-
* @param sources Details on files from which to extract metadata
|
|
45
|
-
*/
|
|
46
|
-
run(inputFilename: string, outputFilename?: string): Promise<KeyboardInfoCompilerResult>;
|
|
47
|
-
write(artifacts: KeyboardInfoCompilerArtifacts): Promise<boolean>;
|
|
48
|
-
private mapKeymanTargetToPlatform;
|
|
49
|
-
private kmxFileVersionToString;
|
|
50
|
-
private isLicenseMIT;
|
|
51
|
-
private loadKmxFiles;
|
|
52
|
-
private loadJsFile;
|
|
53
|
-
private fillLanguages;
|
|
54
|
-
fontSourceToKeyboardInfoFont(kpsFilename: string, kmpJsonData: KmpJsonFile.KmpJsonFile, source: string[]): Promise<KeyboardInfoFileLanguageFont>;
|
|
55
|
-
}
|
|
56
|
-
//# debugId=a5c60be2-e292-533c-8fd3-15ac470025f5
|
|
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]="d9102375-dd60-5e53-bdd7-008a5a123110")}catch(e){}}();
|
|
2
|
+
export { KeyboardInfoCompiler, KeyboardInfoCompilerOptions, KeyboardInfoSources, KeyboardInfoCompilerArtifacts, KeyboardInfoCompilerResult } from './keyboard-info-compiler.js';
|
|
3
|
+
export { KeyboardInfoCompilerMessages } from './keyboard-info-compiler-messages.js';
|
|
4
|
+
//# debugId=d9102375-dd60-5e53-bdd7-008a5a123110
|
|
57
5
|
//# sourceMappingURL=index.d.ts.map
|
package/build/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"debug_id":"
|
|
1
|
+
{"debug_id":"d9102375-dd60-5e53-bdd7-008a5a123110","file":"index.d.ts","mappings":";AAAA,OAAO,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,6BAA6B,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAChL,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC","names":[],"sourceRoot":"","sources":["../../src/index.ts"],"version":3}
|
package/build/src/index.js
CHANGED
|
@@ -1,445 +1,5 @@
|
|
|
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
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
*/
|
|
6
|
-
import { minKeymanVersion } from "./min-keyman-version.js";
|
|
7
|
-
import { KeymanFileTypes, KmxFileReader, KeymanTargets } from "@keymanapp/common-types";
|
|
8
|
-
import { KeyboardInfoCompilerMessages } from "./messages.js";
|
|
9
|
-
import langtags from "./imports/langtags.js";
|
|
10
|
-
import { validateMITLicense } from "@keymanapp/developer-utils";
|
|
11
|
-
import { KmpCompiler } from "@keymanapp/kmc-package";
|
|
12
|
-
import { SchemaValidators } from "@keymanapp/common-types";
|
|
13
|
-
import { getFontFamily } from "./font-family.js";
|
|
14
|
-
const regionNames = new Intl.DisplayNames(['en'], { type: "region" });
|
|
15
|
-
const scriptNames = new Intl.DisplayNames(['en'], { type: "script" });
|
|
16
|
-
const langtagsByTag = {};
|
|
17
|
-
const HelpRoot = 'https://help.keyman.com/keyboard/';
|
|
18
|
-
/**
|
|
19
|
-
* Build a dictionary of language tags from langtags.json
|
|
20
|
-
*/
|
|
21
|
-
function preinit() {
|
|
22
|
-
if (langtagsByTag['en']) {
|
|
23
|
-
// Already initialized, we can reasonably assume that 'en' will always be in
|
|
24
|
-
// langtags.json.
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
for (const tag of langtags) {
|
|
28
|
-
langtagsByTag[tag.tag] = tag;
|
|
29
|
-
langtagsByTag[tag.full] = tag;
|
|
30
|
-
if (tag.tags) {
|
|
31
|
-
for (const t of tag.tags) {
|
|
32
|
-
langtagsByTag[t] = tag;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
;
|
|
38
|
-
;
|
|
39
|
-
;
|
|
40
|
-
;
|
|
41
|
-
export class KeyboardInfoCompiler {
|
|
42
|
-
callbacks;
|
|
43
|
-
options;
|
|
44
|
-
constructor() {
|
|
45
|
-
preinit();
|
|
46
|
-
}
|
|
47
|
-
async init(callbacks, options) {
|
|
48
|
-
this.callbacks = callbacks;
|
|
49
|
-
this.options = { ...options };
|
|
50
|
-
return true;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Builds a .keyboard_info file with metadata from the keyboard and package source file.
|
|
54
|
-
* This function is intended for use within the keyboards repository. While many of the
|
|
55
|
-
* parameters could be deduced from each other, they are specified here to reduce the
|
|
56
|
-
* number of places the filenames are constructed.
|
|
57
|
-
* For full documentation, see:
|
|
58
|
-
* https://help.keyman.com/developer/cloud/keyboard_info/
|
|
59
|
-
*
|
|
60
|
-
* @param sources Details on files from which to extract metadata
|
|
61
|
-
*/
|
|
62
|
-
async run(inputFilename, outputFilename) {
|
|
63
|
-
const sources = this.options.sources;
|
|
64
|
-
// TODO(lowpri): work from .kpj and nothing else as input. Blocked because
|
|
65
|
-
// .kpj work is largely in kmc at present, so that would need to move to
|
|
66
|
-
// a separate module.
|
|
67
|
-
const kmpCompiler = new KmpCompiler();
|
|
68
|
-
if (!await kmpCompiler.init(this.callbacks, {})) {
|
|
69
|
-
// Errors will have been emitted by KmpCompiler
|
|
70
|
-
return null;
|
|
71
|
-
}
|
|
72
|
-
const kmpJsonData = kmpCompiler.transformKpsToKmpObject(sources.kpsFilename);
|
|
73
|
-
if (!kmpJsonData) {
|
|
74
|
-
// Errors will have been emitted by KmpCompiler
|
|
75
|
-
return null;
|
|
76
|
-
}
|
|
77
|
-
if (!sources.kmpFilename) {
|
|
78
|
-
// We can't build any metadata without a .kmp file
|
|
79
|
-
this.callbacks.reportMessage(KeyboardInfoCompilerMessages.Error_CannotBuildWithoutKmpFile());
|
|
80
|
-
return null;
|
|
81
|
-
}
|
|
82
|
-
const keyboard_info = {};
|
|
83
|
-
let jsFile = null;
|
|
84
|
-
if (sources.jsFilename) {
|
|
85
|
-
jsFile = this.loadJsFile(sources.jsFilename);
|
|
86
|
-
if (!jsFile) {
|
|
87
|
-
return null;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
const kmxFiles = this.loadKmxFiles(sources.kpsFilename, kmpJsonData);
|
|
91
|
-
//
|
|
92
|
-
// Build .keyboard_info file
|
|
93
|
-
// https://api.keyman.com/schemas/keyboard_info.schema.json
|
|
94
|
-
// https://help.keyman.com/developer/cloud/keyboard_info/2.0
|
|
95
|
-
//
|
|
96
|
-
keyboard_info.id = this.callbacks.path.basename(sources.kmpFilename, '.kmp');
|
|
97
|
-
keyboard_info.name = kmpJsonData.info.name.description;
|
|
98
|
-
// License
|
|
99
|
-
if (sources.forPublishing) {
|
|
100
|
-
// We will only verify the license if asked to do so, so that all keyboard
|
|
101
|
-
// projects can be built even if license is not present. Keyboards
|
|
102
|
-
// repository will always verify license
|
|
103
|
-
if (!kmpJsonData.options?.licenseFile) {
|
|
104
|
-
this.callbacks.reportMessage(KeyboardInfoCompilerMessages.Error_NoLicenseFound());
|
|
105
|
-
return null;
|
|
106
|
-
}
|
|
107
|
-
if (!this.isLicenseMIT(this.callbacks.resolveFilename(sources.kpsFilename, kmpJsonData.options.licenseFile))) {
|
|
108
|
-
return null;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
// Even if license is not verified, we set the .keyboard_info license to
|
|
112
|
-
// 'mit' to meet the schema requirements. The .keyboard_info file is only
|
|
113
|
-
// used by the keyboards repository, so this is a fair assumption to make.
|
|
114
|
-
keyboard_info.license = 'mit';
|
|
115
|
-
// isRTL
|
|
116
|
-
if (jsFile?.match(/this\.KRTL=1/)) {
|
|
117
|
-
keyboard_info.isRTL = true;
|
|
118
|
-
}
|
|
119
|
-
// author
|
|
120
|
-
const author = kmpJsonData.info.author;
|
|
121
|
-
if (author?.description || author?.url) {
|
|
122
|
-
keyboard_info.authorName = author.description;
|
|
123
|
-
if (author.url) {
|
|
124
|
-
// we strip the mailto: from the .kps file for the .keyboard_info
|
|
125
|
-
const match = author.url.match(/^(mailto\:)?(.+)$/);
|
|
126
|
-
/* c8 ignore next 3 */
|
|
127
|
-
if (match === null) {
|
|
128
|
-
this.callbacks.reportMessage(KeyboardInfoCompilerMessages.Error_InvalidAuthorEmail({ email: author.url }));
|
|
129
|
-
return null;
|
|
130
|
-
}
|
|
131
|
-
keyboard_info.authorEmail = match[2];
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
// description
|
|
135
|
-
if (kmpJsonData.info.description?.description) {
|
|
136
|
-
keyboard_info.description = kmpJsonData.info.description.description.trim();
|
|
137
|
-
}
|
|
138
|
-
// extract the language identifiers from the language metadata arrays for
|
|
139
|
-
// each of the keyboards in the kmp.json file, and merge into a single array
|
|
140
|
-
// of identifiers in the .keyboard_info file.
|
|
141
|
-
if (!await this.fillLanguages(sources.kpsFilename, keyboard_info, kmpJsonData)) {
|
|
142
|
-
return null;
|
|
143
|
-
}
|
|
144
|
-
// If a last commit date is not given, then just use the current time
|
|
145
|
-
keyboard_info.lastModifiedDate = sources.lastCommitDate ?? (new Date).toISOString();
|
|
146
|
-
keyboard_info.packageFilename = this.callbacks.path.basename(sources.kmpFilename);
|
|
147
|
-
// Always overwrite with actual file size
|
|
148
|
-
keyboard_info.packageFileSize = this.callbacks.fileSize(sources.kmpFilename);
|
|
149
|
-
if (keyboard_info.packageFileSize === undefined) {
|
|
150
|
-
this.callbacks.reportMessage(KeyboardInfoCompilerMessages.Error_FileDoesNotExist({ filename: sources.kmpFilename }));
|
|
151
|
-
return null;
|
|
152
|
-
}
|
|
153
|
-
if (sources.jsFilename) {
|
|
154
|
-
keyboard_info.jsFilename = this.callbacks.path.basename(sources.jsFilename);
|
|
155
|
-
// Always overwrite with actual file size
|
|
156
|
-
keyboard_info.jsFileSize = this.callbacks.fileSize(sources.jsFilename);
|
|
157
|
-
if (keyboard_info.jsFileSize === undefined) {
|
|
158
|
-
this.callbacks.reportMessage(KeyboardInfoCompilerMessages.Error_FileDoesNotExist({ filename: sources.jsFilename }));
|
|
159
|
-
return null;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
const includes = new Set();
|
|
163
|
-
keyboard_info.packageIncludes = [];
|
|
164
|
-
for (const file of kmpJsonData.files) {
|
|
165
|
-
if (file.name.match(/\.(otf|ttf|ttc)$/)) {
|
|
166
|
-
includes.add('fonts');
|
|
167
|
-
}
|
|
168
|
-
else if (file.name.match(/welcome\.htm$/)) {
|
|
169
|
-
includes.add('welcome');
|
|
170
|
-
}
|
|
171
|
-
else if (file.name.match(/\.kvk$/)) {
|
|
172
|
-
includes.add('visualKeyboard');
|
|
173
|
-
}
|
|
174
|
-
else if (file.name.match(/\.(rtf|html|htm|pdf)$/)) {
|
|
175
|
-
includes.add('documentation');
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
keyboard_info.packageIncludes = [...includes];
|
|
179
|
-
keyboard_info.version = kmpJsonData.info.version.description;
|
|
180
|
-
let minVersion = minKeymanVersion;
|
|
181
|
-
const m = jsFile?.match(/this.KMINVER\s*=\s*(['"])(.*?)\1/);
|
|
182
|
-
if (m) {
|
|
183
|
-
if (parseFloat(m[2]) > parseFloat(minVersion)) {
|
|
184
|
-
minVersion = m[2];
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
for (const file of kmxFiles) {
|
|
188
|
-
const v = this.kmxFileVersionToString(file.data.fileVersion);
|
|
189
|
-
if (parseFloat(v) > parseFloat(minVersion)) {
|
|
190
|
-
minVersion = v;
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
// Only legacy keyboards supprt non-Unicode encodings, and we no longer
|
|
194
|
-
// rewrite the .keyboard_info for those.
|
|
195
|
-
keyboard_info.encodings = ['unicode'];
|
|
196
|
-
// platformSupport
|
|
197
|
-
const platforms = new Set();
|
|
198
|
-
for (const file of kmxFiles) {
|
|
199
|
-
const targets = KeymanTargets.keymanTargetsFromString(file.data.targets, { expandTargets: true });
|
|
200
|
-
for (const target of targets) {
|
|
201
|
-
this.mapKeymanTargetToPlatform(target).forEach(platform => platforms.add(platform));
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
if (jsFile) {
|
|
205
|
-
if (platforms.size == 0) {
|
|
206
|
-
// In this case, there was no .kmx metadata available. We need to
|
|
207
|
-
// make an assumption that this keyboard is both desktop+mobile web,
|
|
208
|
-
// and if the .js is in the package, that it is mobile native as well,
|
|
209
|
-
// because the targets metadata is not available in the .js.
|
|
210
|
-
platforms.add('mobileWeb').add('desktopWeb');
|
|
211
|
-
if (kmpJsonData.files.find(file => file.name.match(/\.js$/))) {
|
|
212
|
-
platforms.add('android').add('ios');
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
// Special case for determining desktopWeb and mobileWeb support: we use
|
|
216
|
-
// &targets to determine which platforms the .js is actually compatible
|
|
217
|
-
// with. The presence of the .js file itself determines whether there is
|
|
218
|
-
// supposed to be any web support. The presence of the .js file in the
|
|
219
|
-
// package (which is a separate check) does not determine whether or not
|
|
220
|
-
// the keyboard itself actually supports mobile, although it must be
|
|
221
|
-
// included in the package in order to actually be delivered to mobile
|
|
222
|
-
// apps.
|
|
223
|
-
if (platforms.has('android') || platforms.has('ios')) {
|
|
224
|
-
platforms.add('mobileWeb');
|
|
225
|
-
}
|
|
226
|
-
if (platforms.has('linux') || platforms.has('macos') || platforms.has('windows')) {
|
|
227
|
-
platforms.add('desktopWeb');
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
keyboard_info.platformSupport = {};
|
|
231
|
-
for (const platform of platforms) {
|
|
232
|
-
keyboard_info.platformSupport[platform] = 'full';
|
|
233
|
-
}
|
|
234
|
-
keyboard_info.minKeymanVersion = minVersion;
|
|
235
|
-
keyboard_info.sourcePath = sources.sourcePath;
|
|
236
|
-
keyboard_info.helpLink = HelpRoot + keyboard_info.id;
|
|
237
|
-
// Related packages
|
|
238
|
-
if (kmpJsonData.relatedPackages?.length) {
|
|
239
|
-
keyboard_info.related = {};
|
|
240
|
-
for (const p of kmpJsonData.relatedPackages) {
|
|
241
|
-
keyboard_info.related[p.id] = {
|
|
242
|
-
deprecates: p.relationship == 'deprecates'
|
|
243
|
-
};
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
const jsonOutput = JSON.stringify(keyboard_info, null, 2);
|
|
247
|
-
if (!SchemaValidators.default.keyboard_info(keyboard_info)) {
|
|
248
|
-
// This is an internal fatal error; we should not be capable of producing
|
|
249
|
-
// invalid output, so it is best to throw and die
|
|
250
|
-
throw new Error(JSON.stringify({
|
|
251
|
-
keyboard_info: keyboard_info,
|
|
252
|
-
error: SchemaValidators.default.keyboard_info.errors
|
|
253
|
-
}, null, 2));
|
|
254
|
-
}
|
|
255
|
-
const data = new TextEncoder().encode(jsonOutput);
|
|
256
|
-
const result = {
|
|
257
|
-
artifacts: {
|
|
258
|
-
keyboard_info: {
|
|
259
|
-
data,
|
|
260
|
-
filename: outputFilename ?? inputFilename.replace(/\.kpj$/, '.keyboard_info')
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
};
|
|
264
|
-
return result;
|
|
265
|
-
}
|
|
266
|
-
async write(artifacts) {
|
|
267
|
-
this.callbacks.fs.writeFileSync(artifacts.keyboard_info.filename, artifacts.keyboard_info.data);
|
|
268
|
-
return true;
|
|
269
|
-
}
|
|
270
|
-
mapKeymanTargetToPlatform(target) {
|
|
271
|
-
const map = {
|
|
272
|
-
any: [],
|
|
273
|
-
androidphone: ['android'],
|
|
274
|
-
androidtablet: ['android'],
|
|
275
|
-
desktop: [],
|
|
276
|
-
ipad: ['ios'],
|
|
277
|
-
iphone: ['ios'],
|
|
278
|
-
linux: ['linux'],
|
|
279
|
-
macosx: ['macos'],
|
|
280
|
-
mobile: [],
|
|
281
|
-
tablet: [],
|
|
282
|
-
web: ['desktopWeb'],
|
|
283
|
-
windows: ['windows']
|
|
284
|
-
};
|
|
285
|
-
return map[target] ?? [];
|
|
286
|
-
}
|
|
287
|
-
kmxFileVersionToString(version) {
|
|
288
|
-
return ((version & 0xFF00) >> 8).toString() + '.' + (version & 0xFF).toString();
|
|
289
|
-
}
|
|
290
|
-
isLicenseMIT(filename) {
|
|
291
|
-
const data = this.callbacks.loadFile(filename);
|
|
292
|
-
if (!data) {
|
|
293
|
-
this.callbacks.reportMessage(KeyboardInfoCompilerMessages.Error_LicenseFileDoesNotExist({ filename }));
|
|
294
|
-
return false;
|
|
295
|
-
}
|
|
296
|
-
let license = null;
|
|
297
|
-
try {
|
|
298
|
-
license = new TextDecoder().decode(data);
|
|
299
|
-
}
|
|
300
|
-
catch (e) {
|
|
301
|
-
this.callbacks.reportMessage(KeyboardInfoCompilerMessages.Error_LicenseFileIsDamaged({ filename }));
|
|
302
|
-
return false;
|
|
303
|
-
}
|
|
304
|
-
if (!license) {
|
|
305
|
-
this.callbacks.reportMessage(KeyboardInfoCompilerMessages.Error_LicenseFileIsDamaged({ filename }));
|
|
306
|
-
return false;
|
|
307
|
-
}
|
|
308
|
-
const message = validateMITLicense(license);
|
|
309
|
-
if (message != null) {
|
|
310
|
-
this.callbacks.reportMessage(KeyboardInfoCompilerMessages.Error_LicenseIsNotValid({ filename, message }));
|
|
311
|
-
return false;
|
|
312
|
-
}
|
|
313
|
-
return true;
|
|
314
|
-
}
|
|
315
|
-
loadKmxFiles(kpsFilename, kmpJsonData) {
|
|
316
|
-
const reader = new KmxFileReader();
|
|
317
|
-
return kmpJsonData.files
|
|
318
|
-
.filter(file => KeymanFileTypes.filenameIs(file.name, ".kmx" /* KeymanFileTypes.Binary.Keyboard */))
|
|
319
|
-
.map(file => ({
|
|
320
|
-
filename: this.callbacks.path.basename(file.name),
|
|
321
|
-
data: reader.read(this.callbacks.loadFile(this.callbacks.resolveFilename(kpsFilename, file.name)))
|
|
322
|
-
}));
|
|
323
|
-
}
|
|
324
|
-
loadJsFile(filename) {
|
|
325
|
-
const data = this.callbacks.loadFile(filename);
|
|
326
|
-
if (!data) {
|
|
327
|
-
this.callbacks.reportMessage(KeyboardInfoCompilerMessages.Error_FileDoesNotExist({ filename }));
|
|
328
|
-
return null;
|
|
329
|
-
}
|
|
330
|
-
const text = new TextDecoder('utf-8', { fatal: true }).decode(data);
|
|
331
|
-
return text;
|
|
332
|
-
}
|
|
333
|
-
async fillLanguages(kpsFilename, keyboard_info, kmpJsonData) {
|
|
334
|
-
// Collapse language data from multiple keyboards
|
|
335
|
-
const languages = kmpJsonData.keyboards.reduce((a, e) => [].concat(a, (e.languages ?? []).map((f) => f.id)), []);
|
|
336
|
-
const examples = kmpJsonData.keyboards.reduce((a, e) => [].concat(a, e.examples ?? []), []);
|
|
337
|
-
// Transform array into object
|
|
338
|
-
keyboard_info.languages = {};
|
|
339
|
-
for (const language of languages) {
|
|
340
|
-
keyboard_info.languages[language] = {};
|
|
341
|
-
}
|
|
342
|
-
const fontSource = [].concat(...kmpJsonData.keyboards.map(e => e.displayFont ? [e.displayFont] : []), ...kmpJsonData.keyboards.map(e => e.webDisplayFonts ?? []));
|
|
343
|
-
const oskFontSource = [].concat(...kmpJsonData.keyboards.map(e => e.oskFont ? [e.oskFont] : []), ...kmpJsonData.keyboards.map(e => e.webOskFonts ?? []));
|
|
344
|
-
for (const bcp47 of Object.keys(keyboard_info.languages)) {
|
|
345
|
-
const language = keyboard_info.languages[bcp47];
|
|
346
|
-
//
|
|
347
|
-
// Add examples
|
|
348
|
-
//
|
|
349
|
-
language.examples = [];
|
|
350
|
-
for (const example of examples) {
|
|
351
|
-
if (example.id == bcp47) {
|
|
352
|
-
language.examples.push({
|
|
353
|
-
// we don't copy over example.id
|
|
354
|
-
keys: example.keys,
|
|
355
|
-
note: example.note,
|
|
356
|
-
text: example.text
|
|
357
|
-
});
|
|
358
|
-
}
|
|
359
|
-
}
|
|
360
|
-
//
|
|
361
|
-
// Add fonts -- which are duplicated for each language; we'll mark this as a future
|
|
362
|
-
// optimization, but it's another keyboard_info breaking change so don't want to
|
|
363
|
-
// do it right now.
|
|
364
|
-
//
|
|
365
|
-
if (fontSource.length) {
|
|
366
|
-
language.font = await this.fontSourceToKeyboardInfoFont(kpsFilename, kmpJsonData, fontSource);
|
|
367
|
-
if (language.font == null) {
|
|
368
|
-
return false;
|
|
369
|
-
}
|
|
370
|
-
}
|
|
371
|
-
if (oskFontSource.length) {
|
|
372
|
-
language.oskFont = await this.fontSourceToKeyboardInfoFont(kpsFilename, kmpJsonData, oskFontSource);
|
|
373
|
-
if (language.oskFont == null) {
|
|
374
|
-
return false;
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
//
|
|
378
|
-
// Add locale description
|
|
379
|
-
//
|
|
380
|
-
const locale = new Intl.Locale(bcp47);
|
|
381
|
-
// DisplayNames.prototype.of will throw a RangeError if it doesn't understand
|
|
382
|
-
// the format of the bcp47 tag. This happens with Node 18.14.1, for example, with:
|
|
383
|
-
// new Intl.DisplayNames(['en'], {type: 'language'}).of('und-fonipa');
|
|
384
|
-
const mapName = (code, dict) => {
|
|
385
|
-
try {
|
|
386
|
-
return dict.of(code);
|
|
387
|
-
}
|
|
388
|
-
catch (e) {
|
|
389
|
-
if (e instanceof RangeError) {
|
|
390
|
-
return code;
|
|
391
|
-
}
|
|
392
|
-
else {
|
|
393
|
-
throw e;
|
|
394
|
-
}
|
|
395
|
-
}
|
|
396
|
-
};
|
|
397
|
-
const tag = langtagsByTag[bcp47] ?? langtagsByTag[locale.language];
|
|
398
|
-
language.languageName = tag ? tag.name : bcp47;
|
|
399
|
-
language.regionName = mapName(locale.region, regionNames);
|
|
400
|
-
language.scriptName = mapName(locale.script, scriptNames);
|
|
401
|
-
language.displayName = language.languageName + ((language.scriptName && language.regionName) ?
|
|
402
|
-
` (${language.scriptName}, ${language.regionName})` :
|
|
403
|
-
language.scriptName ?
|
|
404
|
-
` (${language.scriptName})` :
|
|
405
|
-
language.regionName ?
|
|
406
|
-
` (${language.regionName})` :
|
|
407
|
-
'');
|
|
408
|
-
}
|
|
409
|
-
return true;
|
|
410
|
-
}
|
|
411
|
-
async fontSourceToKeyboardInfoFont(kpsFilename, kmpJsonData, source) {
|
|
412
|
-
// locate a .ttf, .otf, or .woff font file
|
|
413
|
-
const ttf = source.find(file => file.endsWith('.ttf') || file.endsWith('.otf') || file.endsWith('.woff'));
|
|
414
|
-
if (!ttf) {
|
|
415
|
-
return {
|
|
416
|
-
// If we can't find a matching font, we'll just use the filename of the first font
|
|
417
|
-
family: this.callbacks.path.basename(source[0]),
|
|
418
|
-
source: source
|
|
419
|
-
};
|
|
420
|
-
}
|
|
421
|
-
// The font sources already have path information stripped, but we can
|
|
422
|
-
// find the matching file from the list of files in the package.
|
|
423
|
-
const sourcePath = kmpJsonData.files.find(file => ('/' + file.name.replaceAll('\\', '/')).endsWith('/' + ttf))?.name;
|
|
424
|
-
if (!sourcePath) {
|
|
425
|
-
this.callbacks.reportMessage(KeyboardInfoCompilerMessages.Error_FileDoesNotExist({ filename: ttf }));
|
|
426
|
-
return null;
|
|
427
|
-
}
|
|
428
|
-
const fontData = this.callbacks.loadFile(this.callbacks.resolveFilename(kpsFilename, sourcePath));
|
|
429
|
-
if (!fontData) {
|
|
430
|
-
this.callbacks.reportMessage(KeyboardInfoCompilerMessages.Error_FileDoesNotExist({ filename: sourcePath }));
|
|
431
|
-
return null;
|
|
432
|
-
}
|
|
433
|
-
const result = {
|
|
434
|
-
family: await getFontFamily(fontData),
|
|
435
|
-
source
|
|
436
|
-
};
|
|
437
|
-
if (!result.family) {
|
|
438
|
-
this.callbacks.reportMessage(KeyboardInfoCompilerMessages.Error_FontFileCannotBeRead({ filename: sourcePath }));
|
|
439
|
-
return null;
|
|
440
|
-
}
|
|
441
|
-
return result;
|
|
442
|
-
}
|
|
443
|
-
}
|
|
444
|
-
//# debugId=4b1c64c0-6a90-55e0-88eb-ed80ef6f056d
|
|
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]="26f7e456-4863-5ade-ab92-735dc5272906")}catch(e){}}();
|
|
2
|
+
export { KeyboardInfoCompiler } from './keyboard-info-compiler.js';
|
|
3
|
+
export { KeyboardInfoCompilerMessages } from './keyboard-info-compiler-messages.js';
|
|
4
|
+
//# debugId=26f7e456-4863-5ade-ab92-735dc5272906
|
|
445
5
|
//# sourceMappingURL=index.js.map
|
package/build/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"debug_id":"4b1c64c0-6a90-55e0-88eb-ed80ef6f056d","file":"index.js","mappings":"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","names":[],"sourceRoot":"","sources":["../../src/index.ts"],"version":3}
|
|
1
|
+
{"debug_id":"26f7e456-4863-5ade-ab92-735dc5272906","file":"index.js","mappings":";AAAA,OAAO,EAAE,oBAAoB,EAA+G,MAAM,6BAA6B,CAAC;AAChL,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC","names":[],"sourceRoot":"","sources":["../../src/index.ts"],"version":3}
|
|
@@ -1,4 +1,4 @@
|
|
|
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]="c0942ba2-a0c5-58b4-b41b-d6ccf9079460")}catch(e){}}();
|
|
2
2
|
export declare class KeyboardInfoCompilerMessages {
|
|
3
3
|
static Fatal_UnexpectedException: (o: {
|
|
4
4
|
e: any;
|
|
@@ -57,5 +57,5 @@ export declare class KeyboardInfoCompilerMessages {
|
|
|
57
57
|
}) => import("@keymanapp/common-types").CompilerEvent;
|
|
58
58
|
static ERROR_FontFileCannotBeRead: number;
|
|
59
59
|
}
|
|
60
|
-
//# debugId=
|
|
61
|
-
//# sourceMappingURL=messages.d.ts.map
|
|
60
|
+
//# debugId=c0942ba2-a0c5-58b4-b41b-d6ccf9079460
|
|
61
|
+
//# sourceMappingURL=keyboard-info-compiler-messages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"debug_id":"c0942ba2-a0c5-58b4-b41b-d6ccf9079460","file":"keyboard-info-compiler-messages.d.ts","mappings":";AASA,qBAAa,4BAA4B;IACvC,MAAM,CAAC,yBAAyB,MAAM;QAAC,CAAC,EAAE,GAAG,CAAA;KAAC,qDAAqE;IACnH,MAAM,CAAC,yBAAyB,SAAqB;IAErD,MAAM,CAAC,sBAAsB,MAAM;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,qDAA0E;IAC/H,MAAM,CAAC,sBAAsB,SAAqB;IAElD,MAAM,CAAC,oBAAoB,MAAM;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,GAAG,CAAA;KAAC,qDAC0B;IACrF,MAAM,CAAC,oBAAoB,SAAqB;IAEhD,MAAM,CAAC,8BAA8B,MAAM;QAAC,KAAK,EAAC,MAAM,CAAC;QAAC,KAAK,EAAC,GAAG,CAAC;QAAC,QAAQ,EAAC,GAAG,CAAA;KAAC,qDAC8B;IAChH,MAAM,CAAC,8BAA8B,SAAoB;IAEzD,MAAM,CAAC,wBAAwB,MAAM;QAAC,KAAK,EAAC,MAAM,CAAA;KAAC,qDACb;IACtC,MAAM,CAAC,wBAAwB,SAAqB;IAEpD,MAAM,CAAC,6BAA6B,MAAM;QAAC,QAAQ,EAAC,MAAM,CAAA;KAAC,qDACX;IAChD,MAAM,CAAC,0BAA0B,SAAqB;IAEtD,MAAM,CAAC,0BAA0B,MAAM;QAAC,QAAQ,EAAC,MAAM,CAAA;KAAC,qDACQ;IAChE,MAAM,CAAC,0BAA0B,SAAqB;IAEtD,MAAM,CAAC,uBAAuB,MAAM;QAAC,QAAQ,EAAC,MAAM,CAAC;QAAA,OAAO,EAAC,MAAM,CAAA;KAAC,qDACY;IAChF,MAAM,CAAC,uBAAuB,SAAqB;IAEnD,MAAM,CAAC,+BAA+B,wDACoC;IAC1E,MAAM,CAAC,+BAA+B,SAAqB;IAE3D,MAAM,CAAC,oBAAoB,wDACyF;IACpH,MAAM,CAAC,oBAAoB,SAAqB;IAEhD,MAAM,CAAC,qBAAqB,MAAM;QAAC,OAAO,EAAE,GAAG,CAAA;KAAC,qDACV;IACtC,MAAM,CAAC,qBAAqB,SAAoB;IAEhD,MAAM,CAAC,qBAAqB,MAAM;QAAC,OAAO,EAAE,GAAG,CAAA;KAAC,qDACV;IACtC,MAAM,CAAC,qBAAqB,SAAoB;IAEhD,MAAM,CAAC,sBAAsB,MAAM;QAAC,OAAO,EAAE,GAAG,CAAA;KAAC,qDACX;IACtC,MAAM,CAAC,sBAAsB,SAAqB;IAElD,MAAM,CAAC,0BAA0B,MAAM;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,qDACa;IACtE,MAAM,CAAC,0BAA0B,SAAqB;CACvD","names":[],"sourceRoot":"","sources":["../../src/keyboard-info-compiler-messages.ts"],"version":3}
|
|
@@ -1,4 +1,4 @@
|
|
|
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]="8bcdd5be-88b7-5013-a52d-e375cca70f9a")}catch(e){}}();
|
|
2
2
|
import { CompilerErrorNamespace, CompilerErrorSeverity, CompilerMessageSpec as m } from "@keymanapp/common-types";
|
|
3
3
|
const Namespace = CompilerErrorNamespace.KeyboardInfoCompiler;
|
|
4
4
|
// const SevInfo = CompilerErrorSeverity.Info | Namespace;
|
|
@@ -36,5 +36,5 @@ export class KeyboardInfoCompilerMessages {
|
|
|
36
36
|
static Error_FontFileCannotBeRead = (o) => m(this.ERROR_FontFileCannotBeRead, `Font ${o.filename} could not be parsed to extract a font family.`);
|
|
37
37
|
static ERROR_FontFileCannotBeRead = SevError | 0x000E;
|
|
38
38
|
}
|
|
39
|
-
//# debugId=
|
|
40
|
-
//# sourceMappingURL=messages.js.map
|
|
39
|
+
//# debugId=8bcdd5be-88b7-5013-a52d-e375cca70f9a
|
|
40
|
+
//# sourceMappingURL=keyboard-info-compiler-messages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"debug_id":"8bcdd5be-88b7-5013-a52d-e375cca70f9a","file":"keyboard-info-compiler-messages.js","mappings":"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","names":[],"sourceRoot":"","sources":["../../src/keyboard-info-compiler-messages.ts"],"version":3}
|
|
@@ -0,0 +1,57 @@
|
|
|
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]="4c76221a-7884-5e01-84f5-a3614506805f")}catch(e){}}();
|
|
2
|
+
/**
|
|
3
|
+
* Merges a source .keyboard_info file with metadata extracted from .kps file and
|
|
4
|
+
* compiled files to produce a comprehensive .keyboard_info file.
|
|
5
|
+
*/
|
|
6
|
+
import { KeyboardInfoFileLanguageFont } from "./keyboard-info-file.js";
|
|
7
|
+
import { CompilerCallbacks, KmpJsonFile, KeymanCompiler, CompilerOptions, KeymanCompilerResult, KeymanCompilerArtifacts, KeymanCompilerArtifact } from "@keymanapp/common-types";
|
|
8
|
+
export interface KeyboardInfoSources {
|
|
9
|
+
/** The path in the keymanapp/keyboards repo where this keyboard may be found */
|
|
10
|
+
sourcePath: string;
|
|
11
|
+
/** The compiled keyboard filename and relative path (.js only) */
|
|
12
|
+
jsFilename?: string;
|
|
13
|
+
/** The compiled package filename and relative path (.kmp) */
|
|
14
|
+
kmpFilename: string;
|
|
15
|
+
/** The source package filename and relative path (.kps) */
|
|
16
|
+
kpsFilename: string;
|
|
17
|
+
/** Last modification date for files in the project folder 'YYYY-MM-DDThh:mm:ssZ' */
|
|
18
|
+
lastCommitDate?: string;
|
|
19
|
+
/** Return an error if project does not meet requirements of keyboards repository */
|
|
20
|
+
forPublishing: boolean;
|
|
21
|
+
}
|
|
22
|
+
export interface KeyboardInfoCompilerOptions extends CompilerOptions {
|
|
23
|
+
sources: KeyboardInfoSources;
|
|
24
|
+
}
|
|
25
|
+
export interface KeyboardInfoCompilerArtifacts extends KeymanCompilerArtifacts {
|
|
26
|
+
keyboard_info: KeymanCompilerArtifact;
|
|
27
|
+
}
|
|
28
|
+
export interface KeyboardInfoCompilerResult extends KeymanCompilerResult {
|
|
29
|
+
artifacts: KeyboardInfoCompilerArtifacts;
|
|
30
|
+
}
|
|
31
|
+
export declare class KeyboardInfoCompiler implements KeymanCompiler {
|
|
32
|
+
private callbacks;
|
|
33
|
+
private options;
|
|
34
|
+
constructor();
|
|
35
|
+
init(callbacks: CompilerCallbacks, options: KeyboardInfoCompilerOptions): Promise<boolean>;
|
|
36
|
+
/**
|
|
37
|
+
* Builds a .keyboard_info file with metadata from the keyboard and package source file.
|
|
38
|
+
* This function is intended for use within the keyboards repository. While many of the
|
|
39
|
+
* parameters could be deduced from each other, they are specified here to reduce the
|
|
40
|
+
* number of places the filenames are constructed.
|
|
41
|
+
* For full documentation, see:
|
|
42
|
+
* https://help.keyman.com/developer/cloud/keyboard_info/
|
|
43
|
+
*
|
|
44
|
+
* @param sources Details on files from which to extract metadata
|
|
45
|
+
*/
|
|
46
|
+
run(inputFilename: string, outputFilename?: string): Promise<KeyboardInfoCompilerResult>;
|
|
47
|
+
write(artifacts: KeyboardInfoCompilerArtifacts): Promise<boolean>;
|
|
48
|
+
private mapKeymanTargetToPlatform;
|
|
49
|
+
private kmxFileVersionToString;
|
|
50
|
+
private isLicenseMIT;
|
|
51
|
+
private loadKmxFiles;
|
|
52
|
+
private loadJsFile;
|
|
53
|
+
private fillLanguages;
|
|
54
|
+
fontSourceToKeyboardInfoFont(kpsFilename: string, kmpJsonData: KmpJsonFile.KmpJsonFile, source: string[]): Promise<KeyboardInfoFileLanguageFont>;
|
|
55
|
+
}
|
|
56
|
+
//# debugId=4c76221a-7884-5e01-84f5-a3614506805f
|
|
57
|
+
//# sourceMappingURL=keyboard-info-compiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"debug_id":"4c76221a-7884-5e01-84f5-a3614506805f","file":"keyboard-info-compiler.d.ts","mappings":";AAAA;;;GAGG;AAGH,OAAO,EAA8C,4BAA4B,EAA4B,MAAM,yBAAyB,CAAC;AAC7I,OAAO,EAAmB,iBAAiB,EAAE,WAAW,EAAqC,cAAc,EAAE,eAAe,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAqCrO,MAAM,WAAW,mBAAmB;IAClC,gFAAgF;IAChF,UAAU,EAAE,MAAM,CAAC;IAEnB,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;IAEpB,2DAA2D;IAC3D,WAAW,EAAE,MAAM,CAAC;IAEpB,oFAAoF;IACpF,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,oFAAoF;IACpF,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,2BAA4B,SAAQ,eAAe;IAClE,OAAO,EAAE,mBAAmB,CAAC;CAC9B;AAED,MAAM,WAAW,6BAA8B,SAAQ,uBAAuB;IAC5E,aAAa,EAAE,sBAAsB,CAAC;CACvC;AAED,MAAM,WAAW,0BAA2B,SAAQ,oBAAoB;IACtE,SAAS,EAAE,6BAA6B,CAAC;CAC1C;AAED,qBAAa,oBAAqB,YAAW,cAAc;IACzD,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,OAAO,CAA8B;;IAMhC,IAAI,CAAC,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC,OAAO,CAAC;IAMvG;;;;;;;;;OASG;IACU,GAAG,CAAC,aAAa,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAsPxF,KAAK,CAAC,SAAS,EAAE,6BAA6B,GAAG,OAAO,CAAC,OAAO,CAAC;IAK9E,OAAO,CAAC,yBAAyB;IAkBjC,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,YAAY;IA0BpB,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,UAAU;YAUJ,aAAa;IA0FrB,4BAA4B,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,4BAA4B,CAAC;CAqCvJ","names":[],"sourceRoot":"","sources":["../../src/keyboard-info-compiler.ts"],"version":3}
|
|
@@ -0,0 +1,445 @@
|
|
|
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]="0c8f9c90-c6e1-5feb-b453-20bd1bc3640c")}catch(e){}}();
|
|
2
|
+
/**
|
|
3
|
+
* Merges a source .keyboard_info file with metadata extracted from .kps file and
|
|
4
|
+
* compiled files to produce a comprehensive .keyboard_info file.
|
|
5
|
+
*/
|
|
6
|
+
import { minKeymanVersion } from "./min-keyman-version.js";
|
|
7
|
+
import { KeymanFileTypes, KmxFileReader, KeymanTargets } from "@keymanapp/common-types";
|
|
8
|
+
import { KeyboardInfoCompilerMessages } from "./keyboard-info-compiler-messages.js";
|
|
9
|
+
import langtags from "./imports/langtags.js";
|
|
10
|
+
import { validateMITLicense } from "@keymanapp/developer-utils";
|
|
11
|
+
import { KmpCompiler } from "@keymanapp/kmc-package";
|
|
12
|
+
import { SchemaValidators } from "@keymanapp/common-types";
|
|
13
|
+
import { getFontFamily } from "./font-family.js";
|
|
14
|
+
const regionNames = new Intl.DisplayNames(['en'], { type: "region" });
|
|
15
|
+
const scriptNames = new Intl.DisplayNames(['en'], { type: "script" });
|
|
16
|
+
const langtagsByTag = {};
|
|
17
|
+
const HelpRoot = 'https://help.keyman.com/keyboard/';
|
|
18
|
+
/**
|
|
19
|
+
* Build a dictionary of language tags from langtags.json
|
|
20
|
+
*/
|
|
21
|
+
function preinit() {
|
|
22
|
+
if (langtagsByTag['en']) {
|
|
23
|
+
// Already initialized, we can reasonably assume that 'en' will always be in
|
|
24
|
+
// langtags.json.
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
for (const tag of langtags) {
|
|
28
|
+
langtagsByTag[tag.tag] = tag;
|
|
29
|
+
langtagsByTag[tag.full] = tag;
|
|
30
|
+
if (tag.tags) {
|
|
31
|
+
for (const t of tag.tags) {
|
|
32
|
+
langtagsByTag[t] = tag;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
;
|
|
38
|
+
;
|
|
39
|
+
;
|
|
40
|
+
;
|
|
41
|
+
export class KeyboardInfoCompiler {
|
|
42
|
+
callbacks;
|
|
43
|
+
options;
|
|
44
|
+
constructor() {
|
|
45
|
+
preinit();
|
|
46
|
+
}
|
|
47
|
+
async init(callbacks, options) {
|
|
48
|
+
this.callbacks = callbacks;
|
|
49
|
+
this.options = { ...options };
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Builds a .keyboard_info file with metadata from the keyboard and package source file.
|
|
54
|
+
* This function is intended for use within the keyboards repository. While many of the
|
|
55
|
+
* parameters could be deduced from each other, they are specified here to reduce the
|
|
56
|
+
* number of places the filenames are constructed.
|
|
57
|
+
* For full documentation, see:
|
|
58
|
+
* https://help.keyman.com/developer/cloud/keyboard_info/
|
|
59
|
+
*
|
|
60
|
+
* @param sources Details on files from which to extract metadata
|
|
61
|
+
*/
|
|
62
|
+
async run(inputFilename, outputFilename) {
|
|
63
|
+
const sources = this.options.sources;
|
|
64
|
+
// TODO(lowpri): work from .kpj and nothing else as input. Blocked because
|
|
65
|
+
// .kpj work is largely in kmc at present, so that would need to move to
|
|
66
|
+
// a separate module.
|
|
67
|
+
const kmpCompiler = new KmpCompiler();
|
|
68
|
+
if (!await kmpCompiler.init(this.callbacks, {})) {
|
|
69
|
+
// Errors will have been emitted by KmpCompiler
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
const kmpJsonData = kmpCompiler.transformKpsToKmpObject(sources.kpsFilename);
|
|
73
|
+
if (!kmpJsonData) {
|
|
74
|
+
// Errors will have been emitted by KmpCompiler
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
if (!sources.kmpFilename) {
|
|
78
|
+
// We can't build any metadata without a .kmp file
|
|
79
|
+
this.callbacks.reportMessage(KeyboardInfoCompilerMessages.Error_CannotBuildWithoutKmpFile());
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
const keyboard_info = {};
|
|
83
|
+
let jsFile = null;
|
|
84
|
+
if (sources.jsFilename) {
|
|
85
|
+
jsFile = this.loadJsFile(sources.jsFilename);
|
|
86
|
+
if (!jsFile) {
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
const kmxFiles = this.loadKmxFiles(sources.kpsFilename, kmpJsonData);
|
|
91
|
+
//
|
|
92
|
+
// Build .keyboard_info file
|
|
93
|
+
// https://api.keyman.com/schemas/keyboard_info.schema.json
|
|
94
|
+
// https://help.keyman.com/developer/cloud/keyboard_info/2.0
|
|
95
|
+
//
|
|
96
|
+
keyboard_info.id = this.callbacks.path.basename(sources.kmpFilename, '.kmp');
|
|
97
|
+
keyboard_info.name = kmpJsonData.info.name.description;
|
|
98
|
+
// License
|
|
99
|
+
if (sources.forPublishing) {
|
|
100
|
+
// We will only verify the license if asked to do so, so that all keyboard
|
|
101
|
+
// projects can be built even if license is not present. Keyboards
|
|
102
|
+
// repository will always verify license
|
|
103
|
+
if (!kmpJsonData.options?.licenseFile) {
|
|
104
|
+
this.callbacks.reportMessage(KeyboardInfoCompilerMessages.Error_NoLicenseFound());
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
if (!this.isLicenseMIT(this.callbacks.resolveFilename(sources.kpsFilename, kmpJsonData.options.licenseFile))) {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
// Even if license is not verified, we set the .keyboard_info license to
|
|
112
|
+
// 'mit' to meet the schema requirements. The .keyboard_info file is only
|
|
113
|
+
// used by the keyboards repository, so this is a fair assumption to make.
|
|
114
|
+
keyboard_info.license = 'mit';
|
|
115
|
+
// isRTL
|
|
116
|
+
if (jsFile?.match(/this\.KRTL=1/)) {
|
|
117
|
+
keyboard_info.isRTL = true;
|
|
118
|
+
}
|
|
119
|
+
// author
|
|
120
|
+
const author = kmpJsonData.info.author;
|
|
121
|
+
if (author?.description || author?.url) {
|
|
122
|
+
keyboard_info.authorName = author.description;
|
|
123
|
+
if (author.url) {
|
|
124
|
+
// we strip the mailto: from the .kps file for the .keyboard_info
|
|
125
|
+
const match = author.url.match(/^(mailto\:)?(.+)$/);
|
|
126
|
+
/* c8 ignore next 3 */
|
|
127
|
+
if (match === null) {
|
|
128
|
+
this.callbacks.reportMessage(KeyboardInfoCompilerMessages.Error_InvalidAuthorEmail({ email: author.url }));
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
keyboard_info.authorEmail = match[2];
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
// description
|
|
135
|
+
if (kmpJsonData.info.description?.description) {
|
|
136
|
+
keyboard_info.description = kmpJsonData.info.description.description.trim();
|
|
137
|
+
}
|
|
138
|
+
// extract the language identifiers from the language metadata arrays for
|
|
139
|
+
// each of the keyboards in the kmp.json file, and merge into a single array
|
|
140
|
+
// of identifiers in the .keyboard_info file.
|
|
141
|
+
if (!await this.fillLanguages(sources.kpsFilename, keyboard_info, kmpJsonData)) {
|
|
142
|
+
return null;
|
|
143
|
+
}
|
|
144
|
+
// If a last commit date is not given, then just use the current time
|
|
145
|
+
keyboard_info.lastModifiedDate = sources.lastCommitDate ?? (new Date).toISOString();
|
|
146
|
+
keyboard_info.packageFilename = this.callbacks.path.basename(sources.kmpFilename);
|
|
147
|
+
// Always overwrite with actual file size
|
|
148
|
+
keyboard_info.packageFileSize = this.callbacks.fileSize(sources.kmpFilename);
|
|
149
|
+
if (keyboard_info.packageFileSize === undefined) {
|
|
150
|
+
this.callbacks.reportMessage(KeyboardInfoCompilerMessages.Error_FileDoesNotExist({ filename: sources.kmpFilename }));
|
|
151
|
+
return null;
|
|
152
|
+
}
|
|
153
|
+
if (sources.jsFilename) {
|
|
154
|
+
keyboard_info.jsFilename = this.callbacks.path.basename(sources.jsFilename);
|
|
155
|
+
// Always overwrite with actual file size
|
|
156
|
+
keyboard_info.jsFileSize = this.callbacks.fileSize(sources.jsFilename);
|
|
157
|
+
if (keyboard_info.jsFileSize === undefined) {
|
|
158
|
+
this.callbacks.reportMessage(KeyboardInfoCompilerMessages.Error_FileDoesNotExist({ filename: sources.jsFilename }));
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
const includes = new Set();
|
|
163
|
+
keyboard_info.packageIncludes = [];
|
|
164
|
+
for (const file of kmpJsonData.files) {
|
|
165
|
+
if (file.name.match(/\.(otf|ttf|ttc)$/)) {
|
|
166
|
+
includes.add('fonts');
|
|
167
|
+
}
|
|
168
|
+
else if (file.name.match(/welcome\.htm$/)) {
|
|
169
|
+
includes.add('welcome');
|
|
170
|
+
}
|
|
171
|
+
else if (file.name.match(/\.kvk$/)) {
|
|
172
|
+
includes.add('visualKeyboard');
|
|
173
|
+
}
|
|
174
|
+
else if (file.name.match(/\.(rtf|html|htm|pdf)$/)) {
|
|
175
|
+
includes.add('documentation');
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
keyboard_info.packageIncludes = [...includes];
|
|
179
|
+
keyboard_info.version = kmpJsonData.info.version.description;
|
|
180
|
+
let minVersion = minKeymanVersion;
|
|
181
|
+
const m = jsFile?.match(/this.KMINVER\s*=\s*(['"])(.*?)\1/);
|
|
182
|
+
if (m) {
|
|
183
|
+
if (parseFloat(m[2]) > parseFloat(minVersion)) {
|
|
184
|
+
minVersion = m[2];
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
for (const file of kmxFiles) {
|
|
188
|
+
const v = this.kmxFileVersionToString(file.data.fileVersion);
|
|
189
|
+
if (parseFloat(v) > parseFloat(minVersion)) {
|
|
190
|
+
minVersion = v;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
// Only legacy keyboards supprt non-Unicode encodings, and we no longer
|
|
194
|
+
// rewrite the .keyboard_info for those.
|
|
195
|
+
keyboard_info.encodings = ['unicode'];
|
|
196
|
+
// platformSupport
|
|
197
|
+
const platforms = new Set();
|
|
198
|
+
for (const file of kmxFiles) {
|
|
199
|
+
const targets = KeymanTargets.keymanTargetsFromString(file.data.targets, { expandTargets: true });
|
|
200
|
+
for (const target of targets) {
|
|
201
|
+
this.mapKeymanTargetToPlatform(target).forEach(platform => platforms.add(platform));
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
if (jsFile) {
|
|
205
|
+
if (platforms.size == 0) {
|
|
206
|
+
// In this case, there was no .kmx metadata available. We need to
|
|
207
|
+
// make an assumption that this keyboard is both desktop+mobile web,
|
|
208
|
+
// and if the .js is in the package, that it is mobile native as well,
|
|
209
|
+
// because the targets metadata is not available in the .js.
|
|
210
|
+
platforms.add('mobileWeb').add('desktopWeb');
|
|
211
|
+
if (kmpJsonData.files.find(file => file.name.match(/\.js$/))) {
|
|
212
|
+
platforms.add('android').add('ios');
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
// Special case for determining desktopWeb and mobileWeb support: we use
|
|
216
|
+
// &targets to determine which platforms the .js is actually compatible
|
|
217
|
+
// with. The presence of the .js file itself determines whether there is
|
|
218
|
+
// supposed to be any web support. The presence of the .js file in the
|
|
219
|
+
// package (which is a separate check) does not determine whether or not
|
|
220
|
+
// the keyboard itself actually supports mobile, although it must be
|
|
221
|
+
// included in the package in order to actually be delivered to mobile
|
|
222
|
+
// apps.
|
|
223
|
+
if (platforms.has('android') || platforms.has('ios')) {
|
|
224
|
+
platforms.add('mobileWeb');
|
|
225
|
+
}
|
|
226
|
+
if (platforms.has('linux') || platforms.has('macos') || platforms.has('windows')) {
|
|
227
|
+
platforms.add('desktopWeb');
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
keyboard_info.platformSupport = {};
|
|
231
|
+
for (const platform of platforms) {
|
|
232
|
+
keyboard_info.platformSupport[platform] = 'full';
|
|
233
|
+
}
|
|
234
|
+
keyboard_info.minKeymanVersion = minVersion;
|
|
235
|
+
keyboard_info.sourcePath = sources.sourcePath;
|
|
236
|
+
keyboard_info.helpLink = HelpRoot + keyboard_info.id;
|
|
237
|
+
// Related packages
|
|
238
|
+
if (kmpJsonData.relatedPackages?.length) {
|
|
239
|
+
keyboard_info.related = {};
|
|
240
|
+
for (const p of kmpJsonData.relatedPackages) {
|
|
241
|
+
keyboard_info.related[p.id] = {
|
|
242
|
+
deprecates: p.relationship == 'deprecates'
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
const jsonOutput = JSON.stringify(keyboard_info, null, 2);
|
|
247
|
+
if (!SchemaValidators.default.keyboard_info(keyboard_info)) {
|
|
248
|
+
// This is an internal fatal error; we should not be capable of producing
|
|
249
|
+
// invalid output, so it is best to throw and die
|
|
250
|
+
throw new Error(JSON.stringify({
|
|
251
|
+
keyboard_info: keyboard_info,
|
|
252
|
+
error: SchemaValidators.default.keyboard_info.errors
|
|
253
|
+
}, null, 2));
|
|
254
|
+
}
|
|
255
|
+
const data = new TextEncoder().encode(jsonOutput);
|
|
256
|
+
const result = {
|
|
257
|
+
artifacts: {
|
|
258
|
+
keyboard_info: {
|
|
259
|
+
data,
|
|
260
|
+
filename: outputFilename ?? inputFilename.replace(/\.kpj$/, '.keyboard_info')
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
};
|
|
264
|
+
return result;
|
|
265
|
+
}
|
|
266
|
+
async write(artifacts) {
|
|
267
|
+
this.callbacks.fs.writeFileSync(artifacts.keyboard_info.filename, artifacts.keyboard_info.data);
|
|
268
|
+
return true;
|
|
269
|
+
}
|
|
270
|
+
mapKeymanTargetToPlatform(target) {
|
|
271
|
+
const map = {
|
|
272
|
+
any: [],
|
|
273
|
+
androidphone: ['android'],
|
|
274
|
+
androidtablet: ['android'],
|
|
275
|
+
desktop: [],
|
|
276
|
+
ipad: ['ios'],
|
|
277
|
+
iphone: ['ios'],
|
|
278
|
+
linux: ['linux'],
|
|
279
|
+
macosx: ['macos'],
|
|
280
|
+
mobile: [],
|
|
281
|
+
tablet: [],
|
|
282
|
+
web: ['desktopWeb'],
|
|
283
|
+
windows: ['windows']
|
|
284
|
+
};
|
|
285
|
+
return map[target] ?? [];
|
|
286
|
+
}
|
|
287
|
+
kmxFileVersionToString(version) {
|
|
288
|
+
return ((version & 0xFF00) >> 8).toString() + '.' + (version & 0xFF).toString();
|
|
289
|
+
}
|
|
290
|
+
isLicenseMIT(filename) {
|
|
291
|
+
const data = this.callbacks.loadFile(filename);
|
|
292
|
+
if (!data) {
|
|
293
|
+
this.callbacks.reportMessage(KeyboardInfoCompilerMessages.Error_LicenseFileDoesNotExist({ filename }));
|
|
294
|
+
return false;
|
|
295
|
+
}
|
|
296
|
+
let license = null;
|
|
297
|
+
try {
|
|
298
|
+
license = new TextDecoder().decode(data);
|
|
299
|
+
}
|
|
300
|
+
catch (e) {
|
|
301
|
+
this.callbacks.reportMessage(KeyboardInfoCompilerMessages.Error_LicenseFileIsDamaged({ filename }));
|
|
302
|
+
return false;
|
|
303
|
+
}
|
|
304
|
+
if (!license) {
|
|
305
|
+
this.callbacks.reportMessage(KeyboardInfoCompilerMessages.Error_LicenseFileIsDamaged({ filename }));
|
|
306
|
+
return false;
|
|
307
|
+
}
|
|
308
|
+
const message = validateMITLicense(license);
|
|
309
|
+
if (message != null) {
|
|
310
|
+
this.callbacks.reportMessage(KeyboardInfoCompilerMessages.Error_LicenseIsNotValid({ filename, message }));
|
|
311
|
+
return false;
|
|
312
|
+
}
|
|
313
|
+
return true;
|
|
314
|
+
}
|
|
315
|
+
loadKmxFiles(kpsFilename, kmpJsonData) {
|
|
316
|
+
const reader = new KmxFileReader();
|
|
317
|
+
return kmpJsonData.files
|
|
318
|
+
.filter(file => KeymanFileTypes.filenameIs(file.name, ".kmx" /* KeymanFileTypes.Binary.Keyboard */))
|
|
319
|
+
.map(file => ({
|
|
320
|
+
filename: this.callbacks.path.basename(file.name),
|
|
321
|
+
data: reader.read(this.callbacks.loadFile(this.callbacks.resolveFilename(kpsFilename, file.name)))
|
|
322
|
+
}));
|
|
323
|
+
}
|
|
324
|
+
loadJsFile(filename) {
|
|
325
|
+
const data = this.callbacks.loadFile(filename);
|
|
326
|
+
if (!data) {
|
|
327
|
+
this.callbacks.reportMessage(KeyboardInfoCompilerMessages.Error_FileDoesNotExist({ filename }));
|
|
328
|
+
return null;
|
|
329
|
+
}
|
|
330
|
+
const text = new TextDecoder('utf-8', { fatal: true }).decode(data);
|
|
331
|
+
return text;
|
|
332
|
+
}
|
|
333
|
+
async fillLanguages(kpsFilename, keyboard_info, kmpJsonData) {
|
|
334
|
+
// Collapse language data from multiple keyboards
|
|
335
|
+
const languages = kmpJsonData.keyboards.reduce((a, e) => [].concat(a, (e.languages ?? []).map((f) => f.id)), []);
|
|
336
|
+
const examples = kmpJsonData.keyboards.reduce((a, e) => [].concat(a, e.examples ?? []), []);
|
|
337
|
+
// Transform array into object
|
|
338
|
+
keyboard_info.languages = {};
|
|
339
|
+
for (const language of languages) {
|
|
340
|
+
keyboard_info.languages[language] = {};
|
|
341
|
+
}
|
|
342
|
+
const fontSource = [].concat(...kmpJsonData.keyboards.map(e => e.displayFont ? [e.displayFont] : []), ...kmpJsonData.keyboards.map(e => e.webDisplayFonts ?? []));
|
|
343
|
+
const oskFontSource = [].concat(...kmpJsonData.keyboards.map(e => e.oskFont ? [e.oskFont] : []), ...kmpJsonData.keyboards.map(e => e.webOskFonts ?? []));
|
|
344
|
+
for (const bcp47 of Object.keys(keyboard_info.languages)) {
|
|
345
|
+
const language = keyboard_info.languages[bcp47];
|
|
346
|
+
//
|
|
347
|
+
// Add examples
|
|
348
|
+
//
|
|
349
|
+
language.examples = [];
|
|
350
|
+
for (const example of examples) {
|
|
351
|
+
if (example.id == bcp47) {
|
|
352
|
+
language.examples.push({
|
|
353
|
+
// we don't copy over example.id
|
|
354
|
+
keys: example.keys,
|
|
355
|
+
note: example.note,
|
|
356
|
+
text: example.text
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
//
|
|
361
|
+
// Add fonts -- which are duplicated for each language; we'll mark this as a future
|
|
362
|
+
// optimization, but it's another keyboard_info breaking change so don't want to
|
|
363
|
+
// do it right now.
|
|
364
|
+
//
|
|
365
|
+
if (fontSource.length) {
|
|
366
|
+
language.font = await this.fontSourceToKeyboardInfoFont(kpsFilename, kmpJsonData, fontSource);
|
|
367
|
+
if (language.font == null) {
|
|
368
|
+
return false;
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
if (oskFontSource.length) {
|
|
372
|
+
language.oskFont = await this.fontSourceToKeyboardInfoFont(kpsFilename, kmpJsonData, oskFontSource);
|
|
373
|
+
if (language.oskFont == null) {
|
|
374
|
+
return false;
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
//
|
|
378
|
+
// Add locale description
|
|
379
|
+
//
|
|
380
|
+
const locale = new Intl.Locale(bcp47);
|
|
381
|
+
// DisplayNames.prototype.of will throw a RangeError if it doesn't understand
|
|
382
|
+
// the format of the bcp47 tag. This happens with Node 18.14.1, for example, with:
|
|
383
|
+
// new Intl.DisplayNames(['en'], {type: 'language'}).of('und-fonipa');
|
|
384
|
+
const mapName = (code, dict) => {
|
|
385
|
+
try {
|
|
386
|
+
return dict.of(code);
|
|
387
|
+
}
|
|
388
|
+
catch (e) {
|
|
389
|
+
if (e instanceof RangeError) {
|
|
390
|
+
return code;
|
|
391
|
+
}
|
|
392
|
+
else {
|
|
393
|
+
throw e;
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
};
|
|
397
|
+
const tag = langtagsByTag[bcp47] ?? langtagsByTag[locale.language];
|
|
398
|
+
language.languageName = tag ? tag.name : bcp47;
|
|
399
|
+
language.regionName = mapName(locale.region, regionNames);
|
|
400
|
+
language.scriptName = mapName(locale.script, scriptNames);
|
|
401
|
+
language.displayName = language.languageName + ((language.scriptName && language.regionName) ?
|
|
402
|
+
` (${language.scriptName}, ${language.regionName})` :
|
|
403
|
+
language.scriptName ?
|
|
404
|
+
` (${language.scriptName})` :
|
|
405
|
+
language.regionName ?
|
|
406
|
+
` (${language.regionName})` :
|
|
407
|
+
'');
|
|
408
|
+
}
|
|
409
|
+
return true;
|
|
410
|
+
}
|
|
411
|
+
async fontSourceToKeyboardInfoFont(kpsFilename, kmpJsonData, source) {
|
|
412
|
+
// locate a .ttf, .otf, or .woff font file
|
|
413
|
+
const ttf = source.find(file => file.endsWith('.ttf') || file.endsWith('.otf') || file.endsWith('.woff'));
|
|
414
|
+
if (!ttf) {
|
|
415
|
+
return {
|
|
416
|
+
// If we can't find a matching font, we'll just use the filename of the first font
|
|
417
|
+
family: this.callbacks.path.basename(source[0]),
|
|
418
|
+
source: source
|
|
419
|
+
};
|
|
420
|
+
}
|
|
421
|
+
// The font sources already have path information stripped, but we can
|
|
422
|
+
// find the matching file from the list of files in the package.
|
|
423
|
+
const sourcePath = kmpJsonData.files.find(file => ('/' + file.name.replaceAll('\\', '/')).endsWith('/' + ttf))?.name;
|
|
424
|
+
if (!sourcePath) {
|
|
425
|
+
this.callbacks.reportMessage(KeyboardInfoCompilerMessages.Error_FileDoesNotExist({ filename: ttf }));
|
|
426
|
+
return null;
|
|
427
|
+
}
|
|
428
|
+
const fontData = this.callbacks.loadFile(this.callbacks.resolveFilename(kpsFilename, sourcePath));
|
|
429
|
+
if (!fontData) {
|
|
430
|
+
this.callbacks.reportMessage(KeyboardInfoCompilerMessages.Error_FileDoesNotExist({ filename: sourcePath }));
|
|
431
|
+
return null;
|
|
432
|
+
}
|
|
433
|
+
const result = {
|
|
434
|
+
family: await getFontFamily(fontData),
|
|
435
|
+
source
|
|
436
|
+
};
|
|
437
|
+
if (!result.family) {
|
|
438
|
+
this.callbacks.reportMessage(KeyboardInfoCompilerMessages.Error_FontFileCannotBeRead({ filename: sourcePath }));
|
|
439
|
+
return null;
|
|
440
|
+
}
|
|
441
|
+
return result;
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
//# debugId=0c8f9c90-c6e1-5feb-b453-20bd1bc3640c
|
|
445
|
+
//# sourceMappingURL=keyboard-info-compiler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"debug_id":"0c8f9c90-c6e1-5feb-b453-20bd1bc3640c","file":"keyboard-info-compiler.js","mappings":"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","names":[],"sourceRoot":"","sources":["../../src/keyboard-info-compiler.ts"],"version":3}
|
package/package.json
CHANGED
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
"url": "https://github.com/keymanapp/keyman/issues"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@keymanapp/common-types": "17.0.
|
|
27
|
-
"@keymanapp/developer-utils": "17.0.
|
|
28
|
-
"@keymanapp/kmc-package": "17.0.
|
|
26
|
+
"@keymanapp/common-types": "17.0.245-alpha",
|
|
27
|
+
"@keymanapp/developer-utils": "17.0.245-alpha",
|
|
28
|
+
"@keymanapp/kmc-package": "17.0.245-alpha",
|
|
29
29
|
"ttfmeta": "^1.1.2"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
@@ -49,5 +49,5 @@
|
|
|
49
49
|
"type": "git",
|
|
50
50
|
"url": "git+https://github.com/keymanapp/keyman.git"
|
|
51
51
|
},
|
|
52
|
-
"version": "17.0.
|
|
52
|
+
"version": "17.0.245-alpha"
|
|
53
53
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"debug_id":"afd59902-86ca-5c33-9eb2-4a05187d94cb","file":"messages.d.ts","mappings":";AASA,qBAAa,4BAA4B;IACvC,MAAM,CAAC,yBAAyB,MAAM;QAAC,CAAC,EAAE,GAAG,CAAA;KAAC,qDAAqE;IACnH,MAAM,CAAC,yBAAyB,SAAqB;IAErD,MAAM,CAAC,sBAAsB,MAAM;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,qDAA0E;IAC/H,MAAM,CAAC,sBAAsB,SAAqB;IAElD,MAAM,CAAC,oBAAoB,MAAM;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,GAAG,CAAA;KAAC,qDAC0B;IACrF,MAAM,CAAC,oBAAoB,SAAqB;IAEhD,MAAM,CAAC,8BAA8B,MAAM;QAAC,KAAK,EAAC,MAAM,CAAC;QAAC,KAAK,EAAC,GAAG,CAAC;QAAC,QAAQ,EAAC,GAAG,CAAA;KAAC,qDAC8B;IAChH,MAAM,CAAC,8BAA8B,SAAoB;IAEzD,MAAM,CAAC,wBAAwB,MAAM;QAAC,KAAK,EAAC,MAAM,CAAA;KAAC,qDACb;IACtC,MAAM,CAAC,wBAAwB,SAAqB;IAEpD,MAAM,CAAC,6BAA6B,MAAM;QAAC,QAAQ,EAAC,MAAM,CAAA;KAAC,qDACX;IAChD,MAAM,CAAC,0BAA0B,SAAqB;IAEtD,MAAM,CAAC,0BAA0B,MAAM;QAAC,QAAQ,EAAC,MAAM,CAAA;KAAC,qDACQ;IAChE,MAAM,CAAC,0BAA0B,SAAqB;IAEtD,MAAM,CAAC,uBAAuB,MAAM;QAAC,QAAQ,EAAC,MAAM,CAAC;QAAA,OAAO,EAAC,MAAM,CAAA;KAAC,qDACY;IAChF,MAAM,CAAC,uBAAuB,SAAqB;IAEnD,MAAM,CAAC,+BAA+B,wDACoC;IAC1E,MAAM,CAAC,+BAA+B,SAAqB;IAE3D,MAAM,CAAC,oBAAoB,wDACyF;IACpH,MAAM,CAAC,oBAAoB,SAAqB;IAEhD,MAAM,CAAC,qBAAqB,MAAM;QAAC,OAAO,EAAE,GAAG,CAAA;KAAC,qDACV;IACtC,MAAM,CAAC,qBAAqB,SAAoB;IAEhD,MAAM,CAAC,qBAAqB,MAAM;QAAC,OAAO,EAAE,GAAG,CAAA;KAAC,qDACV;IACtC,MAAM,CAAC,qBAAqB,SAAoB;IAEhD,MAAM,CAAC,sBAAsB,MAAM;QAAC,OAAO,EAAE,GAAG,CAAA;KAAC,qDACX;IACtC,MAAM,CAAC,sBAAsB,SAAqB;IAElD,MAAM,CAAC,0BAA0B,MAAM;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,qDACa;IACtE,MAAM,CAAC,0BAA0B,SAAqB;CACvD","names":[],"sourceRoot":"","sources":["../../src/messages.ts"],"version":3}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"debug_id":"e7465348-4600-5543-b2c6-0bf578e61fbd","file":"messages.js","mappings":"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","names":[],"sourceRoot":"","sources":["../../src/messages.ts"],"version":3}
|