UNPKG

@eaglesong/task-panorama

Version:
51 lines 2.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const createNodeFilter = (tags) => (node) => typeof node === 'object' && (tags.length === 0 || tags.includes(node.tag)); const getRoot = (tree) => tree.find(createNodeFilter(['root'])); const getIncludeRoots = (tree) => { var _a, _b; return (_b = (_a = getRoot(tree)) === null || _a === void 0 ? void 0 : _a.content, (_b !== null && _b !== void 0 ? _b : [])).filter(createNodeFilter(['scripts', 'styles'])); }; exports.preserveIncludesBefore = (tree) => { getIncludeRoots(tree) .flatMap(x => x.content) .filter(createNodeFilter(['include'])) .forEach(node => { node.tag = 'panorama-include'; }); }; exports.preserveIncludesAfter = tree => { getIncludeRoots(tree) .flatMap(x => x.content) .filter(createNodeFilter(['panorama-include'])) .forEach(node => { node.tag = 'include'; }); }; exports.validateIncludes = (context) => tree => { for (const scope of getIncludeRoots(tree)) { for (const node of scope.content) { if (typeof node !== 'object') continue; if (node.tag !== 'include') { context.emitError(new Error(`Unexpected tag '${node.tag}'`)); continue; } const { src } = node.attrs; if (src === 'error://') continue; if (src == null) { context.emitError(new Error('<include> tag is missing "src" attribute')); continue; } if (scope.tag === 'styles') { if (!src.endsWith('.css') && !src.endsWith('.vcss_c')) { context.emitError(new Error(`Dependency '${src}' has invalid extension`)); } } else if (scope.tag === 'scripts') { if (!src.endsWith('.js') && !src.endsWith('.vjs_c')) { context.emitError(new Error(`Dependency '${src}' has invalid extension`)); } } } } }; //# sourceMappingURL=posthtml-plugin-panorama-includes.js.map