Add all symbols to the legacy build

This commit is contained in:
Andreas Hocevar
2020-11-04 19:56:24 +01:00
parent 00415c6774
commit 68d6a6b84c
4 changed files with 24 additions and 37 deletions

View File

@@ -20,7 +20,7 @@ async function getSymbols() {
function getImport(symbol, member) {
const defaultExport = symbol.name.split('~');
const namedExport = symbol.name.split('.');
if (defaultExport.length > 1) {
if (defaultExport.length > 1 && defaultExport[0].indexOf('.') === -1) {
const from = defaultExport[0].replace(/^module\:/, './');
const importName = from.replace(/[.\/]+/g, '$');
return `import ${importName} from '${from}';`;
@@ -53,8 +53,11 @@ function formatSymbolExport(symbol, namespaces, imports) {
namespaces[line] =
(line in namespaces ? namespaces[line] : true) && i < ii - 1;
}
line += ` = ${importName};`;
imports[getImport(symbol, nsParts.pop())] = true;
line += ` = ${importName} || {};`;
const imp = getImport(symbol, nsParts.pop());
if (imp) {
imports[imp] = true;
}
return line;
}
@@ -68,18 +71,15 @@ function formatSymbolExport(symbol, namespaces, imports) {
function generateExports(symbols) {
const namespaces = {};
const imports = [];
let blocks = [];
const blocks = [];
symbols.forEach(function (symbol) {
const name = symbol.name;
if (name.indexOf('#') == -1) {
const imp = getImport(symbol);
if (imp) {
imports[getImport(symbol)] = true;
}
const block = formatSymbolExport(symbol, namespaces, imports);
if (block !== blocks[blocks.length - 1]) {
blocks.push(block);
imports[imp] = true;
}
blocks.push(formatSymbolExport(symbol, namespaces, imports));
}
});
const nsdefs = [];
@@ -89,11 +89,10 @@ function generateExports(symbols) {
nsdefs.push(`${ns[i]} = {};`);
}
}
blocks = Object.keys(imports)
.concat('\nvar ol = {};\n', nsdefs.sort())
.concat(blocks.sort());
blocks.push('', 'export default ol;');
return blocks.join('\n');
const defs = ['\nvar ol = {};'].concat(nsdefs, [...new Set(blocks)]);
const lines = Object.keys(imports).concat(defs.sort());
lines.push('', 'export default ol;');
return lines.join('\n');
}
/**