piral-cli-webpack5
Version:
Provides debug and build capabilities for pilets and Piral instances using Webpack v5.
83 lines • 2.44 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.isLocal = isLocal;
exports.extractParts = extractParts;
exports.getTemplates = getTemplates;
exports.replaceEntries = replaceEntries;
exports.setEntries = setEntries;
function isLocal(path) {
if (path) {
if (path.startsWith(':')) {
return false;
}
else if (path.startsWith('http:')) {
return false;
}
else if (path.startsWith('https:')) {
return false;
}
else if (path.startsWith('data:')) {
return false;
}
return true;
}
return false;
}
function extractParts(content) {
const sheets = content('link[href][rel=stylesheet]')
.filter((_, e) => isLocal(e.attribs.href))
.remove()
.toArray();
const scripts = content('script[src]')
.filter((_, e) => isLocal(e.attribs.src))
.remove()
.toArray();
const files = [];
for (const sheet of sheets) {
files.push(sheet.attribs.href);
}
for (const script of scripts) {
files.push(script.attribs.src);
}
return files;
}
function getTemplates(entry) {
if (typeof entry === 'string') {
return getTemplates([entry]);
}
else if (Array.isArray(entry)) {
return entry.filter((e) => e.endsWith('.html'));
}
else if (typeof entry !== 'function') {
return Object.values(entry).flatMap((value) => getTemplates(value));
}
return [];
}
function replaceEntries(existingEntries, oldEntry, newEntries) {
for (let i = 0; i < existingEntries.length; i++) {
if (existingEntries[i] === oldEntry) {
existingEntries.splice(i, 1, ...newEntries);
break;
}
}
}
function setEntries(config, template, entries) {
if (typeof config.entry === 'string') {
config.entry = entries;
}
else if (Array.isArray(config.entry)) {
replaceEntries(config.entry, template, entries);
}
else if (typeof config.entry !== 'function') {
Object.keys(config.entry).forEach((key) => {
const value = config.entry[key];
if (value === template) {
config.entry[key] = entries;
}
else if (Array.isArray(value)) {
replaceEntries(value, template, entries);
}
});
}
}
//# sourceMappingURL=helpers.js.map