UNPKG

vite-custom-functions-metadata

Version:

Vite plugin for generating and injecting Custom Functions metadata

123 lines (122 loc) 5.27 kB
"use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var index_exports = {}; __export(index_exports, { customFunctionsMetadataPlugin: () => customFunctionsMetadataPlugin, default: () => index_default }); module.exports = __toCommonJS(index_exports); var import_custom_functions_metadata = require("custom-functions-metadata"); var import_path = __toESM(require("path"), 1); var import_promises = __toESM(require("fs/promises"), 1); var CustomFunctionsMetadataPlugin = class { }; CustomFunctionsMetadataPlugin.generateResults = {}; function customFunctionsMetadataPlugin(options) { let config; let resolvedInputFiles = []; let generateResult; return { name: "vite:custom-functions-metadata", configResolved(resolvedConfig) { config = resolvedConfig; resolvedInputFiles = Array.isArray(options.input) ? options.input.map((file) => import_path.default.resolve(file)) : [import_path.default.resolve(options.input)]; }, async buildStart() { try { generateResult = await (0, import_custom_functions_metadata.generateCustomFunctionsMetadata)(resolvedInputFiles, true); if (generateResult.errors.length > 0) { generateResult.errors.forEach((err) => { this.error(new Error(`${options.input} ${err}`)); }); } else { CustomFunctionsMetadataPlugin.generateResults[Array.isArray(options.input) ? options.input[0] : options.input] = generateResult; } } catch (error) { this.error(new Error(`Failed to generate metadata: ${error.message}`)); } }, async transform(code, id) { const foundInputFile = resolvedInputFiles.find((file) => id.endsWith(file)); if (!foundInputFile) { return null; } const inputKey = Array.isArray(options.input) ? options.input[0] : options.input; if (!CustomFunctionsMetadataPlugin.generateResults[inputKey]) { return code; } const associations = CustomFunctionsMetadataPlugin.generateResults[inputKey].associate.filter( (item) => item.sourceFileName === foundInputFile ); let transformedCode = code; associations.forEach((item) => { transformedCode += ` CustomFunctions.associate("${item.id}", ${item.functionName});`; }); return transformedCode; }, async writeBundle() { if (generateResult && !generateResult.errors.length) { const outputPath = import_path.default.resolve(config.build.outDir, options.output); try { await import_promises.default.mkdir(import_path.default.dirname(outputPath), { recursive: true }); await import_promises.default.writeFile(outputPath, generateResult.metadataJson); } catch (error) { this.error(`Failed to write metadata file: ${error.message}`); } } }, configureServer(server) { return () => { server.middlewares.use(async (req, res, next) => { if (generateResult && !generateResult.errors.length && req.url?.endsWith(options.output)) { const outputPath = import_path.default.resolve(server.config.root, options.output); try { await import_promises.default.mkdir(import_path.default.dirname(outputPath), { recursive: true }); await import_promises.default.writeFile(outputPath, generateResult.metadataJson); res.setHeader("Content-Type", "application/json"); res.end(generateResult.metadataJson); return; } catch (error) { console.error(`Failed to write metadata file: ${error.message}`); } } next(); }); }; } }; } var index_default = customFunctionsMetadataPlugin; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { customFunctionsMetadataPlugin }); //# sourceMappingURL=index.cjs.map