UNPKG

@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
"use strict"; 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