43 lines
1.0 KiB
JavaScript
43 lines
1.0 KiB
JavaScript
// Virtual module id; see rollup.config.js
|
|
// eslint-disable-next-line import/no-unresolved
|
|
import entryManifest from 'entry-manifest';
|
|
|
|
import { createElement, createScript } from './markup.js';
|
|
|
|
function getEntryPoint(name, format) {
|
|
let entryPoints;
|
|
entryManifest.forEach(manifest => {
|
|
if (name in manifest) {
|
|
entryPoints = manifest[name];
|
|
}
|
|
});
|
|
|
|
if (entryPoints) {
|
|
return entryPoints.find(e => e.format === format);
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
function getGlobalScripts(entryPoint, globalURLs) {
|
|
return entryPoint.globalImports.map(id => {
|
|
if (process.env.NODE_ENV !== 'production') {
|
|
if (!globalURLs[id]) {
|
|
throw new Error('Missing global URL for id "%s"', id);
|
|
}
|
|
}
|
|
|
|
return createElement('script', { src: globalURLs[id] });
|
|
});
|
|
}
|
|
|
|
export default function getScripts(entryName, format, globalURLs) {
|
|
const entryPoint = getEntryPoint(entryName, format);
|
|
|
|
if (!entryPoint) return [];
|
|
|
|
return getGlobalScripts(entryPoint, globalURLs).concat(
|
|
createScript(entryPoint.code)
|
|
);
|
|
}
|