mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 09:48:58 -04:00
[7.x] [optimize/bundleContext] do not include absolute urls or… (#45408)
* [optimize/bundleContext] do not include absolute urls or windows slashes * simplify the stable clone fn, it doesn't need to be generic
This commit is contained in:
parent
5c3cd1bdd7
commit
3902a463ba
1 changed files with 19 additions and 16 deletions
|
@ -17,7 +17,7 @@
|
|||
* under the License.
|
||||
*/
|
||||
|
||||
import { resolve } from 'path';
|
||||
import { resolve, relative, isAbsolute } from 'path';
|
||||
import { createHash } from 'crypto';
|
||||
import { promisify } from 'util';
|
||||
import { existsSync } from 'fs';
|
||||
|
@ -27,12 +27,13 @@ import { makeRe } from 'minimatch';
|
|||
import mkdirp from 'mkdirp';
|
||||
import jsonStableStringify from 'json-stable-stringify';
|
||||
|
||||
import { IS_KIBANA_DISTRIBUTABLE } from '../../utils';
|
||||
import { IS_KIBANA_DISTRIBUTABLE, fromRoot } from '../../utils';
|
||||
|
||||
import { UiBundle } from './ui_bundle';
|
||||
import { appEntryTemplate } from './app_entry_template';
|
||||
|
||||
const mkdirpAsync = promisify(mkdirp);
|
||||
const REPO_ROOT = fromRoot();
|
||||
|
||||
function getWebpackAliases(pluginSpecs) {
|
||||
return pluginSpecs.reduce((aliases, spec) => {
|
||||
|
@ -49,19 +50,21 @@ function getWebpackAliases(pluginSpecs) {
|
|||
}, {});
|
||||
}
|
||||
|
||||
function sortAllArrays(input) {
|
||||
if (Array.isArray(input)) {
|
||||
return input
|
||||
.map(i => sortAllArrays(i))
|
||||
.sort((a, b) => typeof a === 'string' && typeof b === 'string' ? a.localeCompare(b) : 0);
|
||||
}
|
||||
|
||||
if (typeof input === 'object') {
|
||||
return Object.entries(input)
|
||||
.map(([key, value]) => [key, sortAllArrays(value)]);
|
||||
}
|
||||
|
||||
return input;
|
||||
// Recursively clone appExtensions, sorting array and normalizing absolute paths
|
||||
function stableCloneAppExtensions(appExtensions) {
|
||||
return Object.fromEntries(
|
||||
Object.entries(appExtensions).map(([extensionType, moduleIds]) => [
|
||||
extensionType,
|
||||
moduleIds
|
||||
.map(moduleId => {
|
||||
if (isAbsolute(moduleId)) {
|
||||
moduleId = `absolute:${relative(REPO_ROOT, moduleId)}`;
|
||||
}
|
||||
return moduleId.replace(/\\/g, '/');
|
||||
})
|
||||
.sort((a, b) => a.localeCompare(b))
|
||||
])
|
||||
);
|
||||
}
|
||||
|
||||
export class UiBundlesController {
|
||||
|
@ -75,7 +78,7 @@ export class UiBundlesController {
|
|||
sourceMaps: config.get('optimize.sourceMaps'),
|
||||
kbnVersion: config.get('pkg.version'),
|
||||
buildNum: config.get('pkg.buildNum'),
|
||||
appExtensions: sortAllArrays(uiExports.appExtensions),
|
||||
appExtensions: stableCloneAppExtensions(uiExports.appExtensions),
|
||||
};
|
||||
|
||||
this._filter = makeRe(config.get('optimize.bundleFilter') || '*', {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue