"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const esbuild_1 = require("esbuild"); const readmeta_1 = __importDefault(require("./readmeta")); const prettier_1 = require("prettier"); const main_1 = require("./main"); const promises_1 = require("fs/promises"); async function runBuild(name) { //read meta file let { meta, metaString } = (0, readmeta_1.default)(name); let paths = main_1.AllPaths.script(name); let result = await runEsbuild({ entryPoints: [paths.main], outfile: paths.dist, target: 'esnext', platform: 'node', format: 'esm', bundle: true, minify: main_1.CLIArgs.minify, define: { UserScriptName: `'${meta.name}'`, UserScriptNamespace: `'${meta.namespace}'`, UserScriptVersion: `'${meta.version}'`, UserScriptDownloadURL: `'${meta.downloadURL}'`, UserScriptSupportURL: `'${meta.supportURL}'`, UserScriptHomepageURL: `'${meta.homepageURL}'`, }, }); let error = await postBuild(name, result, metaString); return { meta, error, }; } exports.default = runBuild; async function runEsbuild(opts) { opts.write = false; try { let res = await (0, esbuild_1.build)(opts); return getResult(null, res); } catch (err) { return getResult(err, null); } } function getResult(error, result) { if (error) { return { content: null, error: error.message, errorRaw: error, }; } else if (result) { let content = ''; if (result.outputFiles && result.outputFiles.length > 0) { content = result.outputFiles[0].text; if (!main_1.CLIArgs.srccomment) content = clearFilenameComments(content); } if (content === '') { return { content: null, error: 'No output', }; } return { content, error: null, }; } else { return { content: null, error: 'No result', }; } } function clearFilenameComments(content) { let regexp = new RegExp(`//\\s*${main_1.AllPaths.base.in}/.*(?:\\n|$)`, 'g'); return content.replace(regexp, ''); } async function postBuild(name, result, metaString) { let error = null; let paths = main_1.AllPaths.script(name); let PrettierConfig = (await (0, prettier_1.resolveConfig)(paths.dir)) ?? {}; if (result.error) { console.error(name, result.errorRaw || result.error); error = result.error; } else if (result.content) { let content = metaString + result.content; if (main_1.CLIArgs.prettier) { content = await (0, prettier_1.format)(content, { ...PrettierConfig, parser: 'babel', }); } await (0, promises_1.writeFile)(paths.dist, content); } else { console.error(name, 'No output'); } await doErrorFile(name, error); return error; } async function doErrorFile(name, error) { let paths = main_1.AllPaths.script(name); let content = `${new Date().toISOString()}\n\n${error}`; if (error !== null) { await (0, promises_1.writeFile)(paths.error, content); if (await existsFile(paths.dist)) { await (0, promises_1.unlink)(paths.dist); } } else if (await existsFile(paths.error)) { await (0, promises_1.unlink)(paths.error); } } function existsFile(path) { return new Promise(resolve => { (0, promises_1.stat)(path) .then(() => resolve(true)) .catch(() => resolve(false)); }); } //# sourceMappingURL=build.js.map