@keymanapp/kmc-package 17.0.186-alpha → 17.0.190-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.
@@ -1,10 +1,12 @@
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]="568fb4af-0819-5630-b531-9b25dcd117e9")}catch(e){}}();
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]="0e5cd32b-d08d-571a-b07e-21526bbd1bff")}catch(e){}}();
2
2
  import { CompilerCallbacks } from '@keymanapp/common-types';
3
- import { KmpJsonFile } from '@keymanapp/common-types';
3
+ import { KmpJsonFile, KpsFile } from '@keymanapp/common-types';
4
4
  export declare class KmpCompiler {
5
5
  private callbacks;
6
6
  constructor(callbacks: CompilerCallbacks);
7
7
  transformKpsToKmpObject(kpsFilename: string): KmpJsonFile.KmpJsonFile;
8
+ loadKpsFile(kpsFilename: string): KpsFile.KpsFile;
9
+ transformKpsFileToKmpObject(kpsFilename: string, kps: KpsFile.KpsFile): KmpJsonFile.KmpJsonFile;
8
10
  private kpsInfoToKmpInfo;
9
11
  private arrayWrap;
10
12
  private kpsLanguagesToKmpLanguages;
@@ -24,5 +26,5 @@ export declare class KmpCompiler {
24
26
  */
25
27
  private warnIfKvkFileIsNotBinary;
26
28
  }
27
- //# debugId=568fb4af-0819-5630-b531-9b25dcd117e9
29
+ //# debugId=0e5cd32b-d08d-571a-b07e-21526bbd1bff
28
30
  //# sourceMappingURL=kmp-compiler.d.ts.map
@@ -1 +1 @@
1
- {"debug_id":"568fb4af-0819-5630-b531-9b25dcd117e9","file":"kmp-compiler.d.ts","mappings":";AAIA,OAAO,EAAE,iBAAiB,EAA4B,MAAM,yBAAyB,CAAC;AAEtF,OAAO,EAAE,WAAW,EAAW,MAAM,yBAAyB,CAAC;AAW/D,qBAAa,WAAW;IAEV,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,iBAAiB;IAGzC,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,CAAC,WAAW;IAiN5E,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,0BAA0B;IASlC,OAAO,CAAC,cAAc;IAWtB;;;;;OAKG;IACI,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAkE/F,OAAO,CAAC,WAAW;IAMnB;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;CAiBjC","names":[],"sourceRoot":"","sources":["../../../src/compiler/kmp-compiler.ts"],"version":3}
1
+ {"debug_id":"0e5cd32b-d08d-571a-b07e-21526bbd1bff","file":"kmp-compiler.d.ts","mappings":";AAIA,OAAO,EAAE,iBAAiB,EAA4B,MAAM,yBAAyB,CAAC;AAEtF,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAiB/D,qBAAa,WAAW;IAEV,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,iBAAiB;IAGzC,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,CAAC,WAAW;IAQrE,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO;IAuBjD,2BAA2B,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,OAAO,GAAG,WAAW,CAAC,WAAW;IAkNtG,OAAO,CAAC,gBAAgB;IA6BxB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,0BAA0B;IAOlC,OAAO,CAAC,cAAc;IAWtB;;;;;OAKG;IACI,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IA+F/F,OAAO,CAAC,WAAW;IAMnB;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;CAiBjC","names":[],"sourceRoot":"","sources":["../../../src/compiler/kmp-compiler.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]="149aa499-2354-5472-a58b-4584cba7a5fe")}catch(e){}}();
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]="6432b8f4-926f-5f4a-a758-d19bf751439c")}catch(e){}}();
2
2
  import * as xml2js from 'xml2js';
3
3
  import JSZip from 'jszip';
4
4
  import KEYMAN_VERSION from "@keymanapp/keyman-version";
@@ -10,14 +10,26 @@ import { transcodeToCP1252 } from './cp1252.js';
10
10
  import { MIN_LM_FILEVERSION_KMP_JSON, PackageVersionValidator } from './package-version-validator.js';
11
11
  import { PackageKeyboardTargetValidator } from './package-keyboard-target-validator.js';
12
12
  import { PackageMetadataUpdater } from './package-metadata-updater.js';
13
+ import { markdownToHTML } from './markdown.js';
13
14
  const KMP_JSON_FILENAME = 'kmp.json';
14
15
  const KMP_INF_FILENAME = 'kmp.inf';
16
+ // welcome.htm: this is a legacy filename, as of 17.0 the welcome
17
+ // (documentation) filename can be any file, but we will fallback to detecting
18
+ // this filename for existing keyboard packages.
19
+ const WELCOME_HTM_FILENAME = 'welcome.htm';
15
20
  export class KmpCompiler {
16
21
  callbacks;
17
22
  constructor(callbacks) {
18
23
  this.callbacks = callbacks;
19
24
  }
20
25
  transformKpsToKmpObject(kpsFilename) {
26
+ const kps = this.loadKpsFile(kpsFilename);
27
+ if (!kps) {
28
+ return null;
29
+ }
30
+ return this.transformKpsFileToKmpObject(kpsFilename, kps);
31
+ }
32
+ loadKpsFile(kpsFilename) {
21
33
  // Load the KPS data from XML as JS structured data.
22
34
  const buffer = this.callbacks.loadFile(kpsFilename);
23
35
  if (!buffer) {
@@ -28,7 +40,6 @@ export class KmpCompiler {
28
40
  const kpsPackage = (() => {
29
41
  let a;
30
42
  let parser = new xml2js.Parser({
31
- tagNameProcessors: [xml2js.processors.firstCharLowerCase],
32
43
  explicitArray: false
33
44
  });
34
45
  // TODO: add unit test for xml errors parsing .kps file
@@ -36,7 +47,10 @@ export class KmpCompiler {
36
47
  throw e; a = r; });
37
48
  return a;
38
49
  })();
39
- let kps = kpsPackage.package;
50
+ const kps = kpsPackage.Package;
51
+ return kps;
52
+ }
53
+ transformKpsFileToKmpObject(kpsFilename, kps) {
40
54
  //
41
55
  // To convert to kmp.json, we need to:
42
56
  //
@@ -58,40 +72,38 @@ export class KmpCompiler {
58
72
  //
59
73
  // Fill in additional fields
60
74
  //
61
- let keys = [
62
- ['executeProgram', 'executeProgram'],
63
- ['graphicFile', 'graphicFile'],
64
- ['msiFileName', 'msiFilename'],
65
- ['msiOptions', 'msiOptions'],
66
- ['readMeFile', 'readmeFile']
67
- ];
68
- if (kps.options) {
69
- for (let [src, dst] of keys) {
70
- if (kps.options[src]) {
71
- if (dst == 'graphicFile' || dst == 'readmeFile') {
72
- kmp.options[dst] = /[/\\]?([^/\\]*)$/.exec(kps.options[src])[1];
73
- }
74
- else {
75
- kmp.options[dst] = kps.options[src];
76
- }
77
- }
78
- }
75
+ if (kps.Options) {
76
+ kmp.options.executeProgram = kps.Options.ExecuteProgram || undefined;
77
+ kmp.options.graphicFile = kps.Options.GraphicFile || undefined;
78
+ kmp.options.msiFilename = kps.Options.MsiFileName || undefined;
79
+ kmp.options.msiOptions = kps.Options.MsiOptions || undefined;
80
+ kmp.options.readmeFile = kps.Options.ReadMeFile || undefined;
81
+ kmp.options.licenseFile = kps.Options.LicenseFile || undefined;
82
+ kmp.options.welcomeFile = kps.Options.WelcomeFile || undefined;
79
83
  }
80
84
  //
81
85
  // Add basic metadata
82
86
  //
83
- if (kps.info) {
84
- kmp.info = this.kpsInfoToKmpInfo(kps.info);
87
+ if (kps.Info) {
88
+ kmp.info = this.kpsInfoToKmpInfo(kps.Info);
89
+ }
90
+ //
91
+ // Add related package metadata
92
+ //
93
+ if (kps.RelatedPackages) {
94
+ // Note: 'relationship' field is required for kmp.json but optional for .kps, only
95
+ // two values are supported -- deprecates or related.
96
+ kmp.relatedPackages = this.arrayWrap(kps.RelatedPackages.RelatedPackage).map(p => ({ id: p.$.ID, relationship: p.$.Relationship == 'deprecates' ? 'deprecates' : 'related' }));
85
97
  }
86
98
  //
87
99
  // Add file metadata
88
100
  //
89
- if (kps.files && kps.files.file) {
90
- kmp.files = this.arrayWrap(kps.files.file).map((file) => {
101
+ if (kps.Files && kps.Files.File) {
102
+ kmp.files = this.arrayWrap(kps.Files.File).map((file) => {
91
103
  return {
92
- name: file.name.trim(),
93
- description: file.description.trim(),
94
- copyLocation: parseInt(file.copyLocation, 10) || undefined
104
+ name: file.Name.trim(),
105
+ description: file.Description.trim(),
106
+ copyLocation: parseInt(file.CopyLocation, 10) || undefined
95
107
  // note: we don't emit fileType as that is not permitted in kmp.json
96
108
  };
97
109
  });
@@ -99,7 +111,7 @@ export class KmpCompiler {
99
111
  kmp.files = kmp.files ?? [];
100
112
  // Keyboard packages also include a legacy kmp.inf file (this will be removed,
101
113
  // one day)
102
- if (kps.keyboards && kps.keyboards.keyboard) {
114
+ if (kps.Keyboards && kps.Keyboards.Keyboard) {
103
115
  kmp.files.push({
104
116
  name: KMP_INF_FILENAME,
105
117
  description: "Package information"
@@ -113,28 +125,37 @@ export class KmpCompiler {
113
125
  //
114
126
  // Add keyboard metadata
115
127
  //
116
- if (kps.keyboards && kps.keyboards.keyboard) {
117
- kmp.keyboards = this.arrayWrap(kps.keyboards.keyboard).map((keyboard) => ({
118
- displayFont: keyboard.displayFont ? this.callbacks.path.basename(keyboard.displayFont) : undefined,
119
- oskFont: keyboard.oSKFont ? this.callbacks.path.basename(keyboard.oSKFont) : undefined,
120
- name: keyboard.name.trim(),
121
- id: keyboard.iD.trim(),
122
- version: keyboard.version.trim(),
123
- rtl: keyboard.rTL == 'True' ? true : undefined,
124
- languages: keyboard.languages ?
125
- this.kpsLanguagesToKmpLanguages(this.arrayWrap(keyboard.languages.language)) :
126
- []
128
+ if (kps.Keyboards && kps.Keyboards.Keyboard) {
129
+ kmp.keyboards = this.arrayWrap(kps.Keyboards.Keyboard).map((keyboard) => ({
130
+ displayFont: keyboard.DisplayFont ? this.callbacks.path.basename(keyboard.DisplayFont) : undefined,
131
+ oskFont: keyboard.OSKFont ? this.callbacks.path.basename(keyboard.OSKFont) : undefined,
132
+ name: keyboard.Name.trim(),
133
+ id: keyboard.ID.trim(),
134
+ version: keyboard.Version.trim(),
135
+ rtl: keyboard.RTL == 'True' ? true : undefined,
136
+ languages: keyboard.Languages ?
137
+ this.kpsLanguagesToKmpLanguages(this.arrayWrap(keyboard.Languages.Language)) :
138
+ [],
139
+ examples: keyboard.Examples ?
140
+ this.arrayWrap(keyboard.Examples.Example).map(e => ({ id: e.$.ID, keys: e.$.Keys, text: e.$.Text, note: e.$.Note })) :
141
+ undefined,
142
+ webDisplayFonts: keyboard.WebDisplayFonts ?
143
+ this.arrayWrap(keyboard.WebDisplayFonts.Font).map(e => (this.callbacks.path.basename(e.$.Filename))) :
144
+ undefined,
145
+ webOskFonts: keyboard.WebOSKFonts ?
146
+ this.arrayWrap(keyboard.WebOSKFonts.Font).map(e => (this.callbacks.path.basename(e.$.Filename))) :
147
+ undefined,
127
148
  }));
128
149
  }
129
150
  //
130
151
  // Add lexical-model metadata
131
152
  //
132
- if (kps.lexicalModels && kps.lexicalModels.lexicalModel) {
133
- kmp.lexicalModels = this.arrayWrap(kps.lexicalModels.lexicalModel).map((model) => ({
134
- name: model.name.trim(),
135
- id: model.iD.trim(),
136
- languages: model.languages ?
137
- this.kpsLanguagesToKmpLanguages(this.arrayWrap(model.languages.language)) : []
153
+ if (kps.LexicalModels && kps.LexicalModels.LexicalModel) {
154
+ kmp.lexicalModels = this.arrayWrap(kps.LexicalModels.LexicalModel).map((model) => ({
155
+ name: model.Name.trim(),
156
+ id: model.ID.trim(),
157
+ languages: model.Languages ?
158
+ this.kpsLanguagesToKmpLanguages(this.arrayWrap(model.Languages.Language)) : []
138
159
  }));
139
160
  }
140
161
  //
@@ -154,7 +175,7 @@ export class KmpCompiler {
154
175
  if (!versionValidator.validateAndUpdateVersions(kps, kmp, metadata)) {
155
176
  return null;
156
177
  }
157
- if (kps.keyboards && kps.keyboards.keyboard) {
178
+ if (kps.Keyboards && kps.Keyboards.Keyboard) {
158
179
  kmp.system.fileVersion = versionValidator.getMinKeymanVersion(metadata);
159
180
  }
160
181
  else {
@@ -173,14 +194,20 @@ export class KmpCompiler {
173
194
  //
174
195
  // Add Windows Start Menu metadata
175
196
  //
176
- if (kps.startMenu && (kps.startMenu.folder || kps.startMenu.items)) {
197
+ if (kps.StartMenu && (kps.StartMenu.Folder || kps.StartMenu.Items)) {
177
198
  kmp.startMenu = {};
178
- if (kps.startMenu.addUninstallEntry === '')
199
+ if (kps.StartMenu.AddUninstallEntry === '')
179
200
  kmp.startMenu.addUninstallEntry = true;
180
- if (kps.startMenu.folder)
181
- kmp.startMenu.folder = kps.startMenu.folder;
182
- if (kps.startMenu.items && kps.startMenu.items.item) {
183
- kmp.startMenu.items = this.arrayWrap(kps.startMenu.items.item);
201
+ if (kps.StartMenu.Folder)
202
+ kmp.startMenu.folder = kps.StartMenu.Folder;
203
+ if (kps.StartMenu.Items && kps.StartMenu.Items.Item) {
204
+ kmp.startMenu.items = this.arrayWrap(kps.StartMenu.Items.Item).map((item) => ({
205
+ filename: item.FileName,
206
+ name: item.Name,
207
+ arguments: item.Arguments,
208
+ icon: item.Icon,
209
+ location: item.Location
210
+ }));
184
211
  // Remove default values
185
212
  for (let item of kmp.startMenu.items) {
186
213
  if (item.icon == '')
@@ -189,9 +216,6 @@ export class KmpCompiler {
189
216
  delete item.location;
190
217
  if (item.arguments == '')
191
218
  delete item.arguments;
192
- // Horrific case change between .kps and kmp.json:
193
- item.filename = item.fileName;
194
- delete item.fileName;
195
219
  }
196
220
  }
197
221
  else {
@@ -202,23 +226,30 @@ export class KmpCompiler {
202
226
  return kmp;
203
227
  }
204
228
  // Helper functions
205
- kpsInfoToKmpInfo(info) {
206
- let ni = {};
229
+ kpsInfoToKmpInfo(kpsInfo) {
230
+ let kmpInfo = {};
207
231
  const keys = [
208
- ['author', 'author'],
209
- ['copyright', 'copyright'],
210
- ['name', 'name'],
211
- ['version', 'version'],
212
- ['webSite', 'website']
232
+ ['Author', 'author', false],
233
+ ['Copyright', 'copyright', false],
234
+ ['Name', 'name', false],
235
+ ['Version', 'version', false],
236
+ ['WebSite', 'website', false],
237
+ ['Description', 'description', true],
213
238
  ];
214
- for (let [src, dst] of keys) {
215
- if (info[src]) {
216
- ni[dst] = { description: info[src]._ ?? (typeof info[src] == 'string' ? info[src].toString() : '') };
217
- if (info[src].$ && info[src].$.URL)
218
- ni[dst].url = info[src].$.URL;
239
+ for (let [src, dst, isMarkdown] of keys) {
240
+ if (kpsInfo[src]) {
241
+ kmpInfo[dst] = {
242
+ description: (kpsInfo[src]._ ?? (typeof kpsInfo[src] == 'string' ? kpsInfo[src].toString() : '')).trim()
243
+ };
244
+ if (isMarkdown) {
245
+ kmpInfo[dst].description = markdownToHTML(kmpInfo[dst].description, false).trim();
246
+ }
247
+ if (kpsInfo[src].$?.URL) {
248
+ kmpInfo[dst].url = kpsInfo[src].$.URL.trim();
249
+ }
219
250
  }
220
251
  }
221
- return ni;
252
+ return kmpInfo;
222
253
  }
223
254
  ;
224
255
  arrayWrap(a) {
@@ -296,6 +327,31 @@ export class KmpCompiler {
296
327
  if (failed) {
297
328
  return null;
298
329
  }
330
+ // TODO #9477: transform .md to .htm
331
+ // Remove path data from file references in options
332
+ if (data.options.graphicFile) {
333
+ data.options.graphicFile = this.callbacks.path.basename(data.options.graphicFile);
334
+ }
335
+ if (data.options.readmeFile) {
336
+ data.options.readmeFile = this.callbacks.path.basename(data.options.readmeFile);
337
+ }
338
+ if (data.options.licenseFile) {
339
+ data.options.licenseFile = this.callbacks.path.basename(data.options.licenseFile);
340
+ }
341
+ if (data.options.welcomeFile) {
342
+ data.options.welcomeFile = this.callbacks.path.basename(data.options.welcomeFile);
343
+ }
344
+ else if (data.files.find(file => file.name == WELCOME_HTM_FILENAME)) {
345
+ // We will, for improved backward-compatibility with existing packages, add a
346
+ // reference to the file welcome.htm is it is present in the package. This allows
347
+ // newer tools to avoid knowing about welcome.htm, if we assume that they work with
348
+ // packages compiled with kmc-package (17.0+) and not kmcomp (5.x-16.x).
349
+ data.options.welcomeFile = WELCOME_HTM_FILENAME;
350
+ }
351
+ if (data.options.msiFilename) {
352
+ data.options.msiFilename = this.callbacks.path.basename(data.options.msiFilename);
353
+ }
354
+ // Write kmp.json and kmp.inf
299
355
  zip.file(KMP_JSON_FILENAME, JSON.stringify(data, null, 2));
300
356
  if (hasKmpInf) {
301
357
  zip.file(KMP_INF_FILENAME, this.buildKmpInf(data));
@@ -329,5 +385,5 @@ export class KmpCompiler {
329
385
  }
330
386
  }
331
387
  }
332
- //# debugId=149aa499-2354-5472-a58b-4584cba7a5fe
388
+ //# debugId=6432b8f4-926f-5f4a-a758-d19bf751439c
333
389
  //# sourceMappingURL=kmp-compiler.js.map
@@ -1 +1 @@
1
- {"debug_id":"149aa499-2354-5472-a58b-4584cba7a5fe","file":"kmp-compiler.js","mappings":"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","names":[],"sourceRoot":"","sources":["../../../src/compiler/kmp-compiler.ts"],"version":3}
1
+ {"debug_id":"6432b8f4-926f-5f4a-a758-d19bf751439c","file":"kmp-compiler.js","mappings":"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","names":[],"sourceRoot":"","sources":["../../../src/compiler/kmp-compiler.ts"],"version":3}
@@ -0,0 +1,15 @@
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]="d7184346-1d15-5ced-9be6-9afabb733159")}catch(e){}}();
2
+ /**
3
+ * Markdown transform for our `description` field. Tweaked to disable all inline
4
+ * HTML, because we want descriptions to be short and sweet, and don't need any
5
+ * of the more complex formatting that inline HTML affords.
6
+ */
7
+ /**
8
+ *
9
+ * @param markdown
10
+ * @param allowHTML
11
+ * @returns
12
+ */
13
+ export declare function markdownToHTML(markdown: string, allowHTML: boolean): string;
14
+ //# debugId=d7184346-1d15-5ced-9be6-9afabb733159
15
+ //# sourceMappingURL=markdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"debug_id":"d7184346-1d15-5ced-9be6-9afabb733159","file":"markdown.d.ts","mappings":";AAAA;;;;GAIG;AAiCH;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,MAAM,CAM3E","names":[],"sourceRoot":"","sources":["../../../src/compiler/markdown.ts"],"version":3}
@@ -0,0 +1,49 @@
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]="b7f66fef-8196-5f12-84f1-2ad603853486")}catch(e){}}();
2
+ /**
3
+ * Markdown transform for our `description` field. Tweaked to disable all inline
4
+ * HTML, because we want descriptions to be short and sweet, and don't need any
5
+ * of the more complex formatting that inline HTML affords.
6
+ */
7
+ //
8
+ // Note: using marked 7.0.0.
9
+ // https://github.com/markedjs/marked/issues/2926
10
+ //
11
+ // Version 7.0.1 introduced a TypeScript 5.0+ feature `export type *` which causes:
12
+ //
13
+ // ../../../node_modules/marked/lib/marked.d.ts:722:5 - error TS1383: Only named exports may use 'export type'.
14
+ // 722 export type * from "MarkedOptions";
15
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
16
+ //
17
+ // https://github.com/markedjs/marked/compare/v7.0.0...v7.0.1#diff-32d87a2bc59f429470ccf7afc8ae8818914d4d45c3f7c5b1767c6a0a240b55c9R449-R451
18
+ //
19
+ // When we move to TS 5.0, we can upgrade marked.
20
+ //
21
+ import { Marked } from 'marked';
22
+ /*
23
+ Markdown rendering: we don't want to use the global object, because this
24
+ pollutes the settings for all modules. So we construct our own instance,
25
+ so that we can strip all inline HTML; we don't need any
26
+ */
27
+ const renderer = {
28
+ html(_html, _block) {
29
+ // we don't allow inline HTML
30
+ return '';
31
+ }
32
+ };
33
+ const markedStripHtml = new Marked({ renderer });
34
+ const marked = new Marked();
35
+ /**
36
+ *
37
+ * @param markdown
38
+ * @param allowHTML
39
+ * @returns
40
+ */
41
+ export function markdownToHTML(markdown, allowHTML) {
42
+ // <string>: .parse can return a Promise if async=true. We don't pass ths
43
+ // option, and this sync usage isn't separated out in the types for
44
+ // Marked.prototype.parse, so <string> avoids tsc complaints here.
45
+ const html = (allowHTML ? marked : markedStripHtml).parse(markdown.trim());
46
+ return html;
47
+ }
48
+ //# debugId=b7f66fef-8196-5f12-84f1-2ad603853486
49
+ //# sourceMappingURL=markdown.js.map
@@ -0,0 +1 @@
1
+ {"debug_id":"b7f66fef-8196-5f12-84f1-2ad603853486","file":"markdown.js","mappings":";AAAA;;;;GAIG;AAEH,EAAE;AACF,4BAA4B;AAC5B,iDAAiD;AACjD,EAAE;AACF,mFAAmF;AACnF,EAAE;AACF,iHAAiH;AACjH,gDAAgD;AAChD,gDAAgD;AAChD,EAAE;AACF,4IAA4I;AAC5I,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC;;;;EAIE;AAEF,MAAM,QAAQ,GAAG;IACf,IAAI,CAAC,KAAY,EAAE,MAAc;QAC/B,6BAA6B;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;CACF,CAAA;AACD,MAAM,eAAe,GAAG,IAAI,MAAM,CAAC,EAAC,QAAQ,EAAC,CAAC,CAAC;AAC/C,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;AAE5B;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB,EAAE,SAAkB;IACjE,yEAAyE;IACzE,mEAAmE;IACnE,kEAAkE;IAClE,MAAM,IAAI,GAAY,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACpF,OAAO,IAAI,CAAC;AACd,CAAC","names":[],"sourceRoot":"","sources":["../../../src/compiler/markdown.ts"],"version":3}
@@ -40,14 +40,14 @@ export declare class CompilerMessages {
40
40
  static INFO_KeyboardFileHasNoKeyboardVersion: number;
41
41
  static Error_PackageCannotContainBothModelsAndKeyboards: () => import("@keymanapp/common-types").CompilerEvent;
42
42
  static ERROR_PackageCannotContainBothModelsAndKeyboards: number;
43
- static Warn_PackageShouldNotRepeatLanguages: (o: {
43
+ static Hint_PackageShouldNotRepeatLanguages: (o: {
44
44
  resourceType: string;
45
45
  id: string;
46
46
  minimalTag: string;
47
47
  firstTag: string;
48
48
  secondTag: string;
49
49
  }) => import("@keymanapp/common-types").CompilerEvent;
50
- static WARN_PackageShouldNotRepeatLanguages: number;
50
+ static HINT_PackageShouldNotRepeatLanguages: number;
51
51
  static Warn_PackageNameDoesNotFollowLexicalModelConventions: (o: {
52
52
  filename: string;
53
53
  }) => import("@keymanapp/common-types").CompilerEvent;
@@ -80,13 +80,13 @@ export declare class CompilerMessages {
80
80
  e: any;
81
81
  }) => import("@keymanapp/common-types").CompilerEvent;
82
82
  static ERROR_LanguageTagIsNotValid: number;
83
- static Warn_LanguageTagIsNotMinimal: (o: {
83
+ static Hint_LanguageTagIsNotMinimal: (o: {
84
84
  resourceType: string;
85
85
  id: string;
86
86
  actual: string;
87
87
  expected: string;
88
88
  }) => import("@keymanapp/common-types").CompilerEvent;
89
- static WARN_LanguageTagIsNotMinimal: number;
89
+ static HINT_LanguageTagIsNotMinimal: number;
90
90
  static Error_ModelMustHaveAtLeastOneLanguage: (o: {
91
91
  id: string;
92
92
  }) => import("@keymanapp/common-types").CompilerEvent;
@@ -30,8 +30,8 @@ export class CompilerMessages {
30
30
  static INFO_KeyboardFileHasNoKeyboardVersion = SevInfo | 0x000A;
31
31
  static Error_PackageCannotContainBothModelsAndKeyboards = () => m(this.ERROR_PackageCannotContainBothModelsAndKeyboards, `The package contains both lexical models and keyboards, which is not permitted.`);
32
32
  static ERROR_PackageCannotContainBothModelsAndKeyboards = SevError | 0x000B;
33
- static Warn_PackageShouldNotRepeatLanguages = (o) => m(this.WARN_PackageShouldNotRepeatLanguages, `Two language tags in ${o.resourceType} ${o.id}, '${o.firstTag}' and '${o.secondTag}', reduce to the same minimal tag '${o.minimalTag}'.`);
34
- static WARN_PackageShouldNotRepeatLanguages = SevWarn | 0x000C;
33
+ static Hint_PackageShouldNotRepeatLanguages = (o) => m(this.HINT_PackageShouldNotRepeatLanguages, `Two language tags in ${o.resourceType} ${o.id}, '${o.firstTag}' and '${o.secondTag}', reduce to the same minimal tag '${o.minimalTag}'.`);
34
+ static HINT_PackageShouldNotRepeatLanguages = SevHint | 0x000C;
35
35
  static Warn_PackageNameDoesNotFollowLexicalModelConventions = (o) => m(this.WARN_PackageNameDoesNotFollowLexicalModelConventions, `The package file ${o.filename} does not follow the recommended model filename conventions. The name should be all lower case, ` +
36
36
  `include only alphanumeric characters and underscore (_), not start with a digit, and should have the structure ` +
37
37
  `<author>.<bcp47>.<uniq>.model.kps.`);
@@ -51,8 +51,8 @@ export class CompilerMessages {
51
51
  // 0x0013 was WARN_KeyboardVersionsDoNotMatchPackageVersion
52
52
  static Error_LanguageTagIsNotValid = (o) => m(this.ERROR_LanguageTagIsNotValid, `Language tag '${o.lang}' in ${o.resourceType} ${o.id} is invalid.`);
53
53
  static ERROR_LanguageTagIsNotValid = SevError | 0x0014;
54
- static Warn_LanguageTagIsNotMinimal = (o) => m(this.WARN_LanguageTagIsNotMinimal, `Language tag '${o.actual}' in ${o.resourceType} ${o.id} is not minimal, and should be '${o.expected}'.`);
55
- static WARN_LanguageTagIsNotMinimal = SevWarn | 0x0015;
54
+ static Hint_LanguageTagIsNotMinimal = (o) => m(this.HINT_LanguageTagIsNotMinimal, `Language tag '${o.actual}' in ${o.resourceType} ${o.id} is not minimal, and should be '${o.expected}'.`);
55
+ static HINT_LanguageTagIsNotMinimal = SevHint | 0x0015;
56
56
  static Error_ModelMustHaveAtLeastOneLanguage = (o) => m(this.ERROR_ModelMustHaveAtLeastOneLanguage, `The lexical model ${o.id} must have at least one language specified.`);
57
57
  static ERROR_ModelMustHaveAtLeastOneLanguage = SevError | 0x0016;
58
58
  static Warn_RedistFileShouldNotBeInPackage = (o) => m(this.WARN_RedistFileShouldNotBeInPackage, `The Keyman system file '${o.filename}' should not be compiled into the package.`);
@@ -60,10 +60,10 @@ export class PackageValidation {
60
60
  }
61
61
  const minimalTag = locale.minimize().toString();
62
62
  if (minimalTag.toLowerCase() !== lang.id.toLowerCase()) {
63
- this.callbacks.reportMessage(CompilerMessages.Warn_LanguageTagIsNotMinimal({ resourceType, id, actual: lang.id, expected: minimalTag }));
63
+ this.callbacks.reportMessage(CompilerMessages.Hint_LanguageTagIsNotMinimal({ resourceType, id, actual: lang.id, expected: minimalTag }));
64
64
  }
65
65
  if (minimalTags[minimalTag]) {
66
- this.callbacks.reportMessage(CompilerMessages.Warn_PackageShouldNotRepeatLanguages({ resourceType, id, minimalTag, firstTag: lang.id, secondTag: minimalTags[minimalTag] }));
66
+ this.callbacks.reportMessage(CompilerMessages.Hint_PackageShouldNotRepeatLanguages({ resourceType, id, minimalTag, firstTag: lang.id, secondTag: minimalTags[minimalTag] }));
67
67
  }
68
68
  else {
69
69
  minimalTags[minimalTag] = lang.id;
@@ -33,7 +33,7 @@ export class PackageVersionValidator {
33
33
  * @returns
34
34
  */
35
35
  validateAndUpdateVersions(kps, kmp, keyboardMetadata) {
36
- const followKeyboardVersion = kps.options?.followKeyboardVersion !== undefined;
36
+ const followKeyboardVersion = kps.Options?.FollowKeyboardVersion !== undefined;
37
37
  if (followKeyboardVersion) {
38
38
  if (!this.checkFollowKeyboardVersion(kmp)) {
39
39
  return false;
@@ -0,0 +1,33 @@
1
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="ad8d499e-8be7-57c4-a755-d30f1498f91f")}catch(e){}}();
2
+ /**
3
+ * Create a .exe installer that bundles one or more .kmp files, together with
4
+ * setup.exe, keymandesktop.msi, and generates and includes a setup.inf also.
5
+ *
6
+ * This module is effectively deprecated, but is present to keep parity with the
7
+ * legacy kmcomp compiler. Thus, it is included as part of the package compiler,
8
+ * and will be removed in a future version.
9
+ *
10
+ * This tool assumes that the installer .msi is the same version as the
11
+ * compiler, unlike the legacy compiler which read this metadata from the .msi.
12
+ */
13
+ import { CompilerCallbacks } from "@keymanapp/common-types";
14
+ export interface WindowsPackageInstallerSources {
15
+ msiFilename: string;
16
+ setupExeFilename: string;
17
+ licenseFilename: string;
18
+ titleImageFilename?: string;
19
+ appName?: string;
20
+ startDisabled: boolean;
21
+ startWithConfiguration: boolean;
22
+ }
23
+ export declare class WindowsPackageInstallerCompiler {
24
+ private callbacks;
25
+ private kmpCompiler;
26
+ constructor(callbacks: CompilerCallbacks);
27
+ compile(kpsFilename: string, sources: WindowsPackageInstallerSources): Promise<Uint8Array>;
28
+ private buildZip;
29
+ private buildSetupInf;
30
+ private buildSfx;
31
+ }
32
+ //# debugId=ad8d499e-8be7-57c4-a755-d30f1498f91f
33
+ //# sourceMappingURL=windows-package-installer-compiler.d.ts.map
@@ -0,0 +1 @@
1
+ {"debug_id":"ad8d499e-8be7-57c4-a755-d30f1498f91f","file":"windows-package-installer-compiler.d.ts","mappings":";AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,iBAAiB,EAAyC,MAAM,yBAAyB,CAAC;AAQnG,MAAM,WAAW,8BAA8B;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB,sBAAsB,EAAE,OAAO,CAAC;CACjC;AAED,qBAAa,+BAA+B;IAG9B,OAAO,CAAC,SAAS;IAF7B,OAAO,CAAC,WAAW,CAAc;gBAEb,SAAS,EAAE,iBAAiB;IAInC,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,8BAA8B,GAAG,OAAO,CAAC,UAAU,CAAC;YAkCzF,QAAQ;IA4BtB,OAAO,CAAC,aAAa;IAoCrB,OAAO,CAAC,QAAQ;CAOjB","names":[],"sourceRoot":"","sources":["../../../src/compiler/windows-package-installer-compiler.ts"],"version":3}
@@ -0,0 +1,121 @@
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]="4ab86604-1083-55cc-ba45-c9b5eaf0753f")}catch(e){}}();
2
+ /**
3
+ * Create a .exe installer that bundles one or more .kmp files, together with
4
+ * setup.exe, keymandesktop.msi, and generates and includes a setup.inf also.
5
+ *
6
+ * This module is effectively deprecated, but is present to keep parity with the
7
+ * legacy kmcomp compiler. Thus, it is included as part of the package compiler,
8
+ * and will be removed in a future version.
9
+ *
10
+ * This tool assumes that the installer .msi is the same version as the
11
+ * compiler, unlike the legacy compiler which read this metadata from the .msi.
12
+ */
13
+ import JSZip from 'jszip';
14
+ import KEYMAN_VERSION from "@keymanapp/keyman-version";
15
+ import { KmpCompiler } from "./kmp-compiler.js";
16
+ import { CompilerMessages } from "./messages.js";
17
+ const SETUP_INF_FILENAME = 'setup.inf';
18
+ const PRODUCT_NAME = 'Keyman';
19
+ ;
20
+ export class WindowsPackageInstallerCompiler {
21
+ callbacks;
22
+ kmpCompiler;
23
+ constructor(callbacks) {
24
+ this.callbacks = callbacks;
25
+ this.kmpCompiler = new KmpCompiler(this.callbacks);
26
+ }
27
+ async compile(kpsFilename, sources) {
28
+ const kps = this.kmpCompiler.loadKpsFile(kpsFilename);
29
+ // Check existence of required files
30
+ for (const filename of [sources.licenseFilename, sources.msiFilename, sources.setupExeFilename]) {
31
+ if (!this.callbacks.fs.existsSync(filename)) {
32
+ this.callbacks.reportMessage(CompilerMessages.Error_FileDoesNotExist({ filename }));
33
+ return null;
34
+ }
35
+ }
36
+ // Check existence of optional files
37
+ for (const filename of [sources.titleImageFilename]) {
38
+ if (filename && !this.callbacks.fs.existsSync(filename)) {
39
+ this.callbacks.reportMessage(CompilerMessages.Error_FileDoesNotExist({ filename }));
40
+ return null;
41
+ }
42
+ }
43
+ // Note: we never use the MSIFileName field from the .kps any more
44
+ // Nor do we use the MSIOptions field.
45
+ // Build the zip
46
+ const zipBuffer = await this.buildZip(kps, kpsFilename, sources);
47
+ if (!zipBuffer) {
48
+ // Error messages already reported by buildZip
49
+ return null;
50
+ }
51
+ // Build the sfx
52
+ const sfxBuffer = this.buildSfx(zipBuffer, sources);
53
+ return sfxBuffer;
54
+ }
55
+ async buildZip(kps, kpsFilename, sources) {
56
+ const kmpJson = this.kmpCompiler.transformKpsFileToKmpObject(kpsFilename, kps);
57
+ if (!kmpJson.info?.name?.description) {
58
+ this.callbacks.reportMessage(CompilerMessages.Error_PackageNameCannotBeBlank());
59
+ return null;
60
+ }
61
+ const kmpFilename = this.callbacks.path.basename(kpsFilename, ".kps" /* KeymanFileTypes.Source.Package */) + ".kmp" /* KeymanFileTypes.Binary.Package */;
62
+ const setupInfBuffer = this.buildSetupInf(sources, kmpJson, kmpFilename, kps);
63
+ const kmpBuffer = await this.kmpCompiler.buildKmpFile(kpsFilename, kmpJson);
64
+ // Note that this does not technically generate a "valid" sfx according to
65
+ // the zip spec, because the offsets in the .zip are relative to the start
66
+ // of the zip, rather than to the start of the sfx. However, as Keyman's
67
+ // installer chops out the zip from the sfx and loads it in a new stream, it
68
+ // works as expected.
69
+ const zip = JSZip();
70
+ zip.file(SETUP_INF_FILENAME, setupInfBuffer);
71
+ zip.file(kmpFilename, kmpBuffer);
72
+ zip.file(this.callbacks.path.basename(sources.msiFilename), this.callbacks.loadFile(sources.msiFilename));
73
+ zip.file(this.callbacks.path.basename(sources.licenseFilename), this.callbacks.loadFile(sources.licenseFilename));
74
+ if (sources.titleImageFilename) {
75
+ zip.file(this.callbacks.path.basename(sources.titleImageFilename), this.callbacks.loadFile(sources.titleImageFilename));
76
+ }
77
+ return zip.generateAsync({ type: 'uint8array', compression: 'DEFLATE' });
78
+ }
79
+ buildSetupInf(sources, kmpJson, kmpFilename, kps) {
80
+ let setupInf = `[Setup]
81
+ Version=${KEYMAN_VERSION.VERSION}
82
+ MSIFileName=${this.callbacks.path.basename(sources.msiFilename)}
83
+ MSIOptions=
84
+ AppName=${sources.appName ?? PRODUCT_NAME}
85
+ License=${this.callbacks.path.basename(sources.licenseFilename)}
86
+ `;
87
+ if (sources.titleImageFilename) {
88
+ setupInf += `TitleImage=${this.callbacks.path.basename(sources.titleImageFilename)}\n`;
89
+ }
90
+ if (kmpJson.options.graphicFile) {
91
+ setupInf += `BitmapFileName=${this.callbacks.path.basename(kmpJson.options.graphicFile)}\n`;
92
+ }
93
+ if (sources.startDisabled) {
94
+ setupInf += `StartDisabled=True\n`;
95
+ }
96
+ if (sources.startWithConfiguration) {
97
+ setupInf += `StartWithConfiguration=True\n`;
98
+ }
99
+ setupInf += `\n[Packages]\n`;
100
+ setupInf += kmpFilename + '\n';
101
+ // TODO: multiple packages?
102
+ const strings = !kps.Strings?.String ? [] : (Array.isArray(kps.Strings.String) ? kps.Strings.String : [kps.Strings.String]);
103
+ if (strings.length) {
104
+ setupInf += `\n[Strings]\n`;
105
+ for (const str of strings) {
106
+ setupInf += `${str.$?.Name}=${str.$?.Value}\n`;
107
+ }
108
+ }
109
+ const setupInfBuffer = new TextEncoder().encode(setupInf);
110
+ return setupInfBuffer;
111
+ }
112
+ buildSfx(zipBuffer, sources) {
113
+ const setupRedistBuffer = this.callbacks.loadFile(sources.setupExeFilename);
114
+ const buffer = new Uint8Array(setupRedistBuffer.length + zipBuffer.length);
115
+ buffer.set(setupRedistBuffer, 0);
116
+ buffer.set(zipBuffer, setupRedistBuffer.length);
117
+ return buffer;
118
+ }
119
+ }
120
+ //# debugId=4ab86604-1083-55cc-ba45-c9b5eaf0753f
121
+ //# sourceMappingURL=windows-package-installer-compiler.js.map
@@ -0,0 +1 @@
1
+ {"debug_id":"4ab86604-1083-55cc-ba45-c9b5eaf0753f","file":"windows-package-installer-compiler.js","mappings":"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","names":[],"sourceRoot":"","sources":["../../../src/compiler/windows-package-installer-compiler.ts"],"version":3}
@@ -1,5 +1,6 @@
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]="fbf3cc87-0b8e-5315-9cf5-8f87f7cbccda")}catch(e){}}();
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]="0f696b6e-58c6-5057-8a92-f7a836b23709")}catch(e){}}();
2
2
  export { KmpCompiler } from "./compiler/kmp-compiler.js";
3
3
  export { PackageValidation } from "./compiler/package-validation.js";
4
- //# debugId=fbf3cc87-0b8e-5315-9cf5-8f87f7cbccda
4
+ export { WindowsPackageInstallerSources, WindowsPackageInstallerCompiler } from "./compiler/windows-package-installer-compiler.js";
5
+ //# debugId=0f696b6e-58c6-5057-8a92-f7a836b23709
5
6
  //# sourceMappingURL=main.d.ts.map
@@ -1 +1 @@
1
- {"debug_id":"fbf3cc87-0b8e-5315-9cf5-8f87f7cbccda","file":"main.d.ts","mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC","names":[],"sourceRoot":"","sources":["../../src/main.ts"],"version":3}
1
+ {"debug_id":"0f696b6e-58c6-5057-8a92-f7a836b23709","file":"main.d.ts","mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,8BAA8B,EAAE,+BAA+B,EAAE,MAAM,kDAAkD,CAAC","names":[],"sourceRoot":"","sources":["../../src/main.ts"],"version":3}
package/build/src/main.js CHANGED
@@ -1,5 +1,6 @@
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]="e4a5fce7-4d69-50f5-a11d-ac6e7252230c")}catch(e){}}();
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]="b53ae6a4-e1a7-5f36-9bcd-da3a7f645e3a")}catch(e){}}();
2
2
  export { KmpCompiler } from "./compiler/kmp-compiler.js";
3
3
  export { PackageValidation } from "./compiler/package-validation.js";
4
- //# debugId=e4a5fce7-4d69-50f5-a11d-ac6e7252230c
4
+ export { WindowsPackageInstallerCompiler } from "./compiler/windows-package-installer-compiler.js";
5
+ //# debugId=b53ae6a4-e1a7-5f36-9bcd-da3a7f645e3a
5
6
  //# sourceMappingURL=main.js.map
@@ -1 +1 @@
1
- {"debug_id":"e4a5fce7-4d69-50f5-a11d-ac6e7252230c","file":"main.js","mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC","names":[],"sourceRoot":"","sources":["../../src/main.ts"],"version":3}
1
+ {"debug_id":"b53ae6a4-e1a7-5f36-9bcd-da3a7f645e3a","file":"main.js","mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAkC,+BAA+B,EAAE,MAAM,kDAAkD,CAAC","names":[],"sourceRoot":"","sources":["../../src/main.ts"],"version":3}
package/package.json CHANGED
@@ -30,11 +30,13 @@
30
30
  "url": "https://github.com/keymanapp/keyman/issues"
31
31
  },
32
32
  "dependencies": {
33
- "@keymanapp/common-types": "17.0.186-alpha",
34
- "jszip": "^3.7.0"
33
+ "@keymanapp/common-types": "17.0.190-alpha",
34
+ "jszip": "^3.7.0",
35
+ "marked": "^7.0.0",
36
+ "xml2js": "git+https://github.com/keymanapp/dependency-node-xml2js#535fe732dc408d697e0f847c944cc45f0baf0829"
35
37
  },
36
38
  "devDependencies": {
37
- "@keymanapp/developer-test-helpers": "17.0.186-alpha",
39
+ "@keymanapp/developer-test-helpers": "17.0.190-alpha",
38
40
  "@types/chai": "^4.1.7",
39
41
  "@types/mocha": "^5.2.7",
40
42
  "@types/node": "^20.4.1",
@@ -66,5 +68,5 @@
66
68
  "type": "git",
67
69
  "url": "git+https://github.com/keymanapp/keyman.git"
68
70
  },
69
- "version": "17.0.186-alpha"
71
+ "version": "17.0.190-alpha"
70
72
  }