@atlassian/webresource-vite-plugin
Version:
Auto-generates web-resource definitions from your vite-built code, for usage in an Atlassian product or plugin.
53 lines • 2.34 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateWebResourcesXml = generateWebResourcesXml;
const node_path_1 = __importDefault(require("node:path"));
const xml_1 = require("../helpers/xml");
function generateParameterXml({ name, value }) {
const attrs = { name, value };
return (0, xml_1.renderElement)('param', attrs);
}
function generateResourceXml(resource, parameterMap) {
const { name, location, params } = resource;
const children = [];
// Default attributes from configuration
const assetContentType = node_path_1.default.extname(location).substring(1);
const parameters = parameterMap.get(assetContentType) || [];
const renderParameters = (attributes) => children.push((0, xml_1.renderElement)('param', attributes));
parameters.forEach(renderParameters);
if (params) {
children.push(...params.map(generateParameterXml));
}
const attributes = {
type: 'download',
name,
location,
};
return (0, xml_1.renderElement)('resource', attributes, children);
}
function generateResourcesXml(resources, resourceParamMap) {
return (resources
// ignore all `.map` files, since the WRM finds them of its own accord.
.filter((resource) => !resource.location.endsWith('.map'))
.map((resource) => generateResourceXml(resource, resourceParamMap)));
}
function generateDependencyXml(dependencies) {
return dependencies.map((dependency) => (0, xml_1.renderElement)('dependency', undefined, dependency));
}
function generateWebResourceXml(pluginOptions, webResource) {
const { key, dependencies, resources } = webResource;
const attrs = { key };
const children = [
...generateDependencyXml(dependencies),
...generateResourcesXml(resources, pluginOptions.resourceParamMap),
];
return (0, xml_1.renderElement)('web-resource', attrs, children);
}
function generateWebResourcesXml(pluginOptions, webResources) {
const transformed = webResources.map((wr) => generateWebResourceXml(pluginOptions, wr));
return (0, xml_1.renderElement)('bundle', undefined, transformed);
}
//# sourceMappingURL=generator.js.map