@ui5/builder 4.0.4 → 4.0.6
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/CHANGELOG.md +14 -2
- package/LICENSE.txt +1 -1
- package/lib/lbt/bundle/Builder.js +15 -5
- package/lib/processors/jsdoc/lib/createIndexFiles.js +59 -62
- package/lib/processors/jsdoc/lib/transformApiJson.js +344 -255
- package/lib/processors/jsdoc/lib/ui5/plugin.js +170 -124
- package/lib/processors/jsdoc/lib/ui5/template/publish.js +77 -448
- package/lib/processors/jsdoc/lib/ui5/template/utils/typeParser.js +489 -0
- package/lib/processors/jsdoc/lib/ui5/template/utils/versionUtil.js +6 -4
- package/lib/processors/minifier.js +1 -0
- package/lib/processors/minifierWorker.js +3 -1
- package/package.json +10 -10
- package/.reuse/dep5 +0 -33
package/CHANGELOG.md
CHANGED
|
@@ -2,10 +2,20 @@
|
|
|
2
2
|
All notable changes to this project will be documented in this file.
|
|
3
3
|
This project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
|
4
4
|
|
|
5
|
-
A list of unreleased changes can be found [here](https://github.com/SAP/ui5-builder/compare/v4.0.
|
|
5
|
+
A list of unreleased changes can be found [here](https://github.com/SAP/ui5-builder/compare/v4.0.6...HEAD).
|
|
6
|
+
|
|
7
|
+
<a name="v4.0.6"></a>
|
|
8
|
+
## [v4.0.6] - 2025-04-29
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
- Handle legacy-free UI5 versions [`8b38316`](https://github.com/SAP/ui5-builder/commit/8b38316bae02edfe4da1876884345c040f260c10)
|
|
11
|
+
- **minify:** In case of error, include full resource path in the error messsage [`aadb463`](https://github.com/SAP/ui5-builder/commit/aadb4639461998b2c113d5a4962adbdb135c9762)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
<a name="v4.0.5"></a>
|
|
15
|
+
## [v4.0.5] - 2024-12-10
|
|
6
16
|
|
|
7
17
|
<a name="v4.0.4"></a>
|
|
8
|
-
## [v4.0.4] - 2024-11-
|
|
18
|
+
## [v4.0.4] - 2024-11-29
|
|
9
19
|
### Dependency Updates
|
|
10
20
|
- Switch from "rimraf" to native "fs.rm" ([#1098](https://github.com/SAP/ui5-builder/issues/1098)) [`0adf4da`](https://github.com/SAP/ui5-builder/commit/0adf4da0e747f1fb46cf0bf0da7b3e0af8e9bcec)
|
|
11
21
|
|
|
@@ -941,6 +951,8 @@ to load the custom bundle file instead.
|
|
|
941
951
|
|
|
942
952
|
### Features
|
|
943
953
|
- Add ability to configure component preloads and custom bundles [`2241e5f`](https://github.com/SAP/ui5-builder/commit/2241e5ff98fd95f1f80cc74959655ae7a9c660e7)
|
|
954
|
+
[v4.0.6]: https://github.com/SAP/ui5-builder/compare/v4.0.5...v4.0.6
|
|
955
|
+
[v4.0.5]: https://github.com/SAP/ui5-builder/compare/v4.0.4...v4.0.5
|
|
944
956
|
[v4.0.4]: https://github.com/SAP/ui5-builder/compare/v4.0.3...v4.0.4
|
|
945
957
|
[v4.0.3]: https://github.com/SAP/ui5-builder/compare/v4.0.2...v4.0.3
|
|
946
958
|
[v4.0.2]: https://github.com/SAP/ui5-builder/compare/v4.0.1...v4.0.2
|
package/LICENSE.txt
CHANGED
|
@@ -186,7 +186,7 @@
|
|
|
186
186
|
same "printed page" as the copyright notice for easier
|
|
187
187
|
identification within third-party archives.
|
|
188
188
|
|
|
189
|
-
Copyright
|
|
189
|
+
Copyright [yyyy] [name of copyright owner]
|
|
190
190
|
|
|
191
191
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
192
192
|
you may not use this file except in compliance with the License.
|
|
@@ -54,13 +54,23 @@ class BundleBuilder {
|
|
|
54
54
|
this.allowStringBundling = allowStringBundling;
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
getEffectiveUi5MajorVersion() {
|
|
58
58
|
if (this.targetUi5CoreVersionMajor !== undefined) {
|
|
59
59
|
return this.targetUi5CoreVersionMajor;
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
const parsedVersion = semver.parse(this.targetUi5CoreVersion);
|
|
63
|
+
if (parsedVersion) {
|
|
64
|
+
this.targetUi5CoreVersionMajor = parsedVersion.major;
|
|
65
|
+
|
|
66
|
+
// legacy-free versions include changes of the upcoming major version
|
|
67
|
+
// so we should treat them the same as the next major version
|
|
68
|
+
if (
|
|
69
|
+
parsedVersion.prerelease.includes("legacy-free") ||
|
|
70
|
+
parsedVersion.prerelease.includes("legacy-free-SNAPSHOT") // Maven snapshot version
|
|
71
|
+
) {
|
|
72
|
+
this.targetUi5CoreVersionMajor += 1;
|
|
73
|
+
}
|
|
64
74
|
} else {
|
|
65
75
|
// Assume legacy version if unable to determine the version
|
|
66
76
|
this.targetUi5CoreVersionMajor = null;
|
|
@@ -85,7 +95,7 @@ class BundleBuilder {
|
|
|
85
95
|
}
|
|
86
96
|
|
|
87
97
|
determineRequireCallback(modules) {
|
|
88
|
-
if (this.
|
|
98
|
+
if (this.getEffectiveUi5MajorVersion() >= 2) {
|
|
89
99
|
// Starting with UI5 2.0.0, method Core.boot does not exist anymore
|
|
90
100
|
return;
|
|
91
101
|
}
|
|
@@ -212,7 +222,7 @@ class BundleBuilder {
|
|
|
212
222
|
|
|
213
223
|
closeModule(resolvedModule) {
|
|
214
224
|
if ( resolvedModule.containsCoreSync ) {
|
|
215
|
-
if ( this.
|
|
225
|
+
if ( this.getEffectiveUi5MajorVersion() >= 2 ) {
|
|
216
226
|
throw new Error("Requiring sap/ui/core/Core synchronously is not supported as of UI5 Version 2");
|
|
217
227
|
}
|
|
218
228
|
this.outW.ensureNewLine(); // for clarity and to avoid issues with single line comments
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* Node script to create cross-library API index files for use in the UI5 SDKs.
|
|
3
3
|
*
|
|
4
|
-
* (c) Copyright
|
|
4
|
+
* (c) Copyright 2025 SAP SE or an SAP affiliate company.
|
|
5
5
|
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
|
|
6
6
|
*/
|
|
7
7
|
|
|
@@ -39,12 +39,12 @@ function createIndexFiles(versionInfoFile, unpackedTestresourcesRoot, targetFile
|
|
|
39
39
|
log.info("Using custom fs");
|
|
40
40
|
}
|
|
41
41
|
if (returnOutputFiles) {
|
|
42
|
-
log.info("Returning output files instead of writing to fs.")
|
|
42
|
+
log.info("Returning output files instead of writing to fs.");
|
|
43
43
|
}
|
|
44
44
|
log.info("");
|
|
45
45
|
|
|
46
46
|
// Deprecated, Experimental and Since collections
|
|
47
|
-
|
|
47
|
+
const oListCollection = {
|
|
48
48
|
deprecated: {
|
|
49
49
|
noVersion: {
|
|
50
50
|
apis: []
|
|
@@ -63,13 +63,11 @@ function createIndexFiles(versionInfoFile, unpackedTestresourcesRoot, targetFile
|
|
|
63
63
|
fs.readFile(file, 'utf8', function (err, data) {
|
|
64
64
|
if (err) {
|
|
65
65
|
reject(err);
|
|
66
|
-
} else {
|
|
66
|
+
} else if (data.trim() === "") {
|
|
67
67
|
// Handle empty files scenario
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
resolve(JSON.parse(String(data)));
|
|
72
|
-
}
|
|
68
|
+
resolve({});
|
|
69
|
+
} else {
|
|
70
|
+
resolve(JSON.parse(String(data)));
|
|
73
71
|
}
|
|
74
72
|
});
|
|
75
73
|
});
|
|
@@ -102,20 +100,20 @@ function createIndexFiles(versionInfoFile, unpackedTestresourcesRoot, targetFile
|
|
|
102
100
|
* Returns a promise that resolves with an array of symbols.
|
|
103
101
|
*/
|
|
104
102
|
function createSymbolSummaryForLib(lib) {
|
|
105
|
-
|
|
103
|
+
const file = path.join(unpackedTestresourcesRoot, lib.replace(/\./g, "/"), "designtime/api.json");
|
|
106
104
|
|
|
107
105
|
return readJSONFile(file).then(function (apijson) {
|
|
108
106
|
if (!apijson.hasOwnProperty("symbols") || !Array.isArray(apijson.symbols)) {
|
|
109
107
|
// Ignore libraries with invalid api.json content like empty object or non-array "symbols" property.
|
|
110
108
|
return [];
|
|
111
109
|
}
|
|
112
|
-
return apijson.symbols.map(symbol => {
|
|
113
|
-
|
|
110
|
+
return apijson.symbols.map((symbol) => {
|
|
111
|
+
const oReturn = {
|
|
114
112
|
name: symbol.name,
|
|
115
113
|
kind: symbol.kind,
|
|
116
114
|
visibility: symbol.visibility,
|
|
117
|
-
extends: symbol.extends,
|
|
118
|
-
implements: symbol.implements,
|
|
115
|
+
"extends": symbol.extends,
|
|
116
|
+
"implements": symbol.implements,
|
|
119
117
|
lib: lib
|
|
120
118
|
};
|
|
121
119
|
// We add deprecated member only when the control is deprecated to keep file size at check
|
|
@@ -132,7 +130,7 @@ function createIndexFiles(versionInfoFile, unpackedTestresourcesRoot, targetFile
|
|
|
132
130
|
collectLists(symbol);
|
|
133
131
|
return oReturn;
|
|
134
132
|
});
|
|
135
|
-
})
|
|
133
|
+
});
|
|
136
134
|
}
|
|
137
135
|
|
|
138
136
|
/*
|
|
@@ -146,7 +144,7 @@ function createIndexFiles(versionInfoFile, unpackedTestresourcesRoot, targetFile
|
|
|
146
144
|
const sText = oDataType !== "since" ? oEntityObject[oDataType].text : oEntityObject.description;
|
|
147
145
|
const oData = {
|
|
148
146
|
control: sSymbolName,
|
|
149
|
-
text: sText ||
|
|
147
|
+
text: sText || undefined,
|
|
150
148
|
type: sObjectType,
|
|
151
149
|
"static": !!oEntityObject.static,
|
|
152
150
|
visibility: oEntityObject.visibility
|
|
@@ -159,7 +157,7 @@ function createIndexFiles(versionInfoFile, unpackedTestresourcesRoot, targetFile
|
|
|
159
157
|
|
|
160
158
|
if (sSince && sSince !== "undefined" /* Sometimes sSince comes as string "undefined" */) {
|
|
161
159
|
// take only major and minor versions
|
|
162
|
-
|
|
160
|
+
const sVersion = sSince.split(".").slice(0, 2).join(".");
|
|
163
161
|
|
|
164
162
|
oData.since = sSince;
|
|
165
163
|
|
|
@@ -190,7 +188,7 @@ function createIndexFiles(versionInfoFile, unpackedTestresourcesRoot, targetFile
|
|
|
190
188
|
}
|
|
191
189
|
|
|
192
190
|
// Methods
|
|
193
|
-
oSymbol.methods
|
|
191
|
+
oSymbol.methods?.forEach((oMethod) => {
|
|
194
192
|
if (oMethod.deprecated) {
|
|
195
193
|
addData("deprecated", oMethod, "methods", oSymbol.name);
|
|
196
194
|
}
|
|
@@ -205,7 +203,7 @@ function createIndexFiles(versionInfoFile, unpackedTestresourcesRoot, targetFile
|
|
|
205
203
|
});
|
|
206
204
|
|
|
207
205
|
// Events
|
|
208
|
-
oSymbol.events
|
|
206
|
+
oSymbol.events?.forEach((oEvent) => {
|
|
209
207
|
if (oEvent.deprecated) {
|
|
210
208
|
addData("deprecated", oEvent, "events", oSymbol.name);
|
|
211
209
|
}
|
|
@@ -229,24 +227,24 @@ function createIndexFiles(versionInfoFile, unpackedTestresourcesRoot, targetFile
|
|
|
229
227
|
}
|
|
230
228
|
|
|
231
229
|
function expandHierarchyInfo(symbols) {
|
|
232
|
-
|
|
233
|
-
symbols.forEach(symbol => {
|
|
230
|
+
const byName = new Map();
|
|
231
|
+
symbols.forEach((symbol) => {
|
|
234
232
|
byName.set(symbol.name, symbol);
|
|
235
233
|
});
|
|
236
|
-
symbols.forEach(symbol => {
|
|
237
|
-
|
|
234
|
+
symbols.forEach((symbol) => {
|
|
235
|
+
const parent = symbol.extends && byName.get(symbol.extends);
|
|
238
236
|
if (parent) {
|
|
239
|
-
parent.extendedBy = parent.extendedBy ||
|
|
237
|
+
parent.extendedBy = parent.extendedBy || [];
|
|
240
238
|
parent.extendedBy.push({
|
|
241
239
|
name: symbol.name,
|
|
242
240
|
visibility: symbol.visibility
|
|
243
241
|
});
|
|
244
242
|
}
|
|
245
243
|
if (symbol.implements) {
|
|
246
|
-
symbol.implements.forEach(intfName => {
|
|
247
|
-
|
|
244
|
+
symbol.implements.forEach((intfName) => {
|
|
245
|
+
const intf = byName.get(intfName);
|
|
248
246
|
if (intf) {
|
|
249
|
-
intf.implementedBy = intf.implementedBy ||
|
|
247
|
+
intf.implementedBy = intf.implementedBy || [];
|
|
250
248
|
intf.implementedBy.push({
|
|
251
249
|
name: symbol.name,
|
|
252
250
|
visibility: symbol.visibility
|
|
@@ -259,23 +257,23 @@ function createIndexFiles(versionInfoFile, unpackedTestresourcesRoot, targetFile
|
|
|
259
257
|
}
|
|
260
258
|
|
|
261
259
|
function convertListToTree(symbols) {
|
|
262
|
-
|
|
260
|
+
const aTree = [];
|
|
263
261
|
|
|
264
262
|
// Filter out excluded libraries
|
|
265
263
|
symbols = symbols.filter(({lib}) => ["sap.ui.documentation"].indexOf(lib) === -1);
|
|
266
264
|
|
|
267
265
|
// Create treeName and displayName
|
|
268
|
-
symbols.forEach(oSymbol => {
|
|
266
|
+
symbols.forEach((oSymbol) => {
|
|
269
267
|
oSymbol.treeName = oSymbol.name.replace(/^module:/, "").replace(/\//g, ".");
|
|
270
268
|
oSymbol.displayName = oSymbol.treeName.split(".").pop();
|
|
271
269
|
});
|
|
272
270
|
|
|
273
271
|
// Create missing - virtual namespaces
|
|
274
|
-
symbols.forEach(oSymbol => {
|
|
272
|
+
symbols.forEach((oSymbol) => {
|
|
275
273
|
oSymbol.treeName.split(".").forEach((sPart, i, a) => {
|
|
276
|
-
|
|
274
|
+
const sName = a.slice(0, (i + 1)).join(".");
|
|
277
275
|
|
|
278
|
-
if (!symbols.find(o => o.treeName === sName)) {
|
|
276
|
+
if (!symbols.find((o) => o.treeName === sName)) {
|
|
279
277
|
symbols.push({
|
|
280
278
|
name: sName,
|
|
281
279
|
treeName: sName,
|
|
@@ -289,13 +287,12 @@ function createIndexFiles(versionInfoFile, unpackedTestresourcesRoot, targetFile
|
|
|
289
287
|
});
|
|
290
288
|
|
|
291
289
|
// Discover parents
|
|
292
|
-
symbols.forEach(oSymbol => {
|
|
293
|
-
|
|
294
|
-
sParent;
|
|
290
|
+
symbols.forEach((oSymbol) => {
|
|
291
|
+
const aParent = oSymbol.treeName.split(".");
|
|
295
292
|
|
|
296
293
|
// Extract parent name
|
|
297
294
|
aParent.pop();
|
|
298
|
-
sParent = aParent.join(".");
|
|
295
|
+
const sParent = aParent.join(".");
|
|
299
296
|
|
|
300
297
|
// Mark parent
|
|
301
298
|
if (symbols.find(({treeName}) => treeName === sParent)) {
|
|
@@ -305,20 +302,20 @@ function createIndexFiles(versionInfoFile, unpackedTestresourcesRoot, targetFile
|
|
|
305
302
|
|
|
306
303
|
// Sort the list before building the tree
|
|
307
304
|
symbols.sort((a, b) => {
|
|
308
|
-
|
|
305
|
+
const sA = a.treeName.toUpperCase(),
|
|
309
306
|
sB = b.treeName.toUpperCase();
|
|
310
307
|
|
|
311
|
-
if (sA < sB) return -1;
|
|
312
|
-
if (sA > sB) return 1;
|
|
308
|
+
if (sA < sB) {return -1;}
|
|
309
|
+
if (sA > sB) {return 1;}
|
|
313
310
|
return 0;
|
|
314
311
|
});
|
|
315
312
|
|
|
316
313
|
// Build tree
|
|
317
|
-
symbols.forEach(oSymbol => {
|
|
314
|
+
symbols.forEach((oSymbol) => {
|
|
318
315
|
if (oSymbol.parent) {
|
|
319
|
-
|
|
316
|
+
const oParent = symbols.find(({treeName}) => treeName === oSymbol.parent);
|
|
320
317
|
|
|
321
|
-
if (!oParent.nodes) oParent.nodes = [];
|
|
318
|
+
if (!oParent.nodes) {oParent.nodes = [];}
|
|
322
319
|
oParent.nodes.push(oSymbol);
|
|
323
320
|
} else {
|
|
324
321
|
aTree.push(oSymbol);
|
|
@@ -327,13 +324,13 @@ function createIndexFiles(versionInfoFile, unpackedTestresourcesRoot, targetFile
|
|
|
327
324
|
|
|
328
325
|
// Custom sort first level tree items - "sap" namespace should be on top
|
|
329
326
|
aTree.sort((a, b) => {
|
|
330
|
-
|
|
327
|
+
const sA = a.displayName.toUpperCase(),
|
|
331
328
|
sB = b.displayName.toUpperCase();
|
|
332
329
|
|
|
333
|
-
if (sA === "SAP") return -1;
|
|
334
|
-
if (sB === "SAP") return 1;
|
|
335
|
-
if (sA < sB) return -1;
|
|
336
|
-
if (sA > sB) return 1;
|
|
330
|
+
if (sA === "SAP") {return -1;}
|
|
331
|
+
if (sB === "SAP") {return 1;}
|
|
332
|
+
if (sA < sB) {return -1;}
|
|
333
|
+
if (sA > sB) {return 1;}
|
|
337
334
|
|
|
338
335
|
return 0;
|
|
339
336
|
});
|
|
@@ -349,10 +346,10 @@ function createIndexFiles(versionInfoFile, unpackedTestresourcesRoot, targetFile
|
|
|
349
346
|
delete oSymbol.treeName;
|
|
350
347
|
delete oSymbol.parent;
|
|
351
348
|
if (oSymbol.nodes) {
|
|
352
|
-
oSymbol.nodes.forEach(o => cleanTree(o));
|
|
349
|
+
oSymbol.nodes.forEach((o) => cleanTree(o));
|
|
353
350
|
}
|
|
354
351
|
}
|
|
355
|
-
aTree.forEach(o => cleanTree(o));
|
|
352
|
+
aTree.forEach((o) => cleanTree(o));
|
|
356
353
|
|
|
357
354
|
return aTree;
|
|
358
355
|
}
|
|
@@ -401,7 +398,7 @@ function createIndexFiles(versionInfoFile, unpackedTestresourcesRoot, targetFile
|
|
|
401
398
|
propagateFlags(oSymbol, { bAllContentDeprecated: true });
|
|
402
399
|
} else {
|
|
403
400
|
// 3. If all children are deprecated, then the parent is marked as content-deprecated
|
|
404
|
-
oSymbol.bAllContentDeprecated = !!oSymbol.nodes && oSymbol.nodes.every(node => node.bAllContentDeprecated);
|
|
401
|
+
oSymbol.bAllContentDeprecated = !!oSymbol.nodes && oSymbol.nodes.every((node) => node.bAllContentDeprecated);
|
|
405
402
|
}
|
|
406
403
|
}
|
|
407
404
|
|
|
@@ -413,9 +410,9 @@ function createIndexFiles(versionInfoFile, unpackedTestresourcesRoot, targetFile
|
|
|
413
410
|
function propagateFlags(oSymbol, oFlags) {
|
|
414
411
|
Object.assign(oSymbol, oFlags);
|
|
415
412
|
if (oSymbol.nodes) {
|
|
416
|
-
oSymbol.nodes.forEach(node => {
|
|
413
|
+
oSymbol.nodes.forEach((node) => {
|
|
417
414
|
propagateFlags(node, oFlags);
|
|
418
|
-
})
|
|
415
|
+
});
|
|
419
416
|
}
|
|
420
417
|
}
|
|
421
418
|
|
|
@@ -424,11 +421,11 @@ function createIndexFiles(versionInfoFile, unpackedTestresourcesRoot, targetFile
|
|
|
424
421
|
const filesToReturn = {};
|
|
425
422
|
|
|
426
423
|
var p = readJSONFile(versionInfoFile)
|
|
427
|
-
.then(versionInfo => {
|
|
424
|
+
.then((versionInfo) => {
|
|
428
425
|
version = versionInfo.version;
|
|
429
426
|
return Promise.all(
|
|
430
427
|
versionInfo.libraries.map(
|
|
431
|
-
lib => createSymbolSummaryForLib(lib.name).catch(err => {
|
|
428
|
+
(lib) => createSymbolSummaryForLib(lib.name).catch((err) => {
|
|
432
429
|
// ignore 'file not found' errors as some libs don't have an api.json (themes, server libs)
|
|
433
430
|
if (err.code === 'ENOENT') {
|
|
434
431
|
return [];
|
|
@@ -441,8 +438,8 @@ function createIndexFiles(versionInfoFile, unpackedTestresourcesRoot, targetFile
|
|
|
441
438
|
.then(deepMerge)
|
|
442
439
|
.then(expandHierarchyInfo)
|
|
443
440
|
.then(convertListToTree)
|
|
444
|
-
.then(symbols => {
|
|
445
|
-
|
|
441
|
+
.then((symbols) => {
|
|
442
|
+
const result = {
|
|
446
443
|
"$schema-ref": "http://schemas.sap.com/sapui5/designtime/api-index.json/1.0",
|
|
447
444
|
version: version,
|
|
448
445
|
library: "*",
|
|
@@ -456,13 +453,13 @@ function createIndexFiles(versionInfoFile, unpackedTestresourcesRoot, targetFile
|
|
|
456
453
|
})
|
|
457
454
|
.then(() => {
|
|
458
455
|
/* Lists - modify and cleanup */
|
|
459
|
-
|
|
456
|
+
const sortList = function (oList) {
|
|
460
457
|
/* Sorting since records */
|
|
461
|
-
|
|
458
|
+
const aKeys = Object.keys(oList),
|
|
462
459
|
oSorted = {};
|
|
463
460
|
|
|
464
461
|
aKeys.sort((a, b) => {
|
|
465
|
-
|
|
462
|
+
const aA = a.split("."),
|
|
466
463
|
aB = b.split(".");
|
|
467
464
|
|
|
468
465
|
if (a === "noVersion") {
|
|
@@ -478,7 +475,7 @@ function createIndexFiles(versionInfoFile, unpackedTestresourcesRoot, targetFile
|
|
|
478
475
|
b = [aB[0], ('0' + aB[1]).slice(-2)].join("");
|
|
479
476
|
|
|
480
477
|
// Sort descending
|
|
481
|
-
return parseInt(b
|
|
478
|
+
return parseInt(b) - parseInt(a);
|
|
482
479
|
});
|
|
483
480
|
|
|
484
481
|
aKeys.forEach((sKey) => {
|
|
@@ -529,8 +526,8 @@ function createIndexFiles(versionInfoFile, unpackedTestresourcesRoot, targetFile
|
|
|
529
526
|
]);
|
|
530
527
|
}
|
|
531
528
|
})
|
|
532
|
-
.catch(err => {
|
|
533
|
-
log.error("**** failed to create API index for libraries:", err)
|
|
529
|
+
.catch((err) => {
|
|
530
|
+
log.error("**** failed to create API index for libraries:", err);
|
|
534
531
|
throw err;
|
|
535
532
|
});
|
|
536
533
|
|