"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 fs_1 = require("fs"); const paths_1 = require("./paths"); const readmeta_1 = __importDefault(require("./readmeta")); const prettier_1 = require("prettier"); const main_1 = require("./main"); function default_1(name, watchCallback) { //read meta file let [metaJson, metaString] = (0, readmeta_1.default)(name); let pathDist = (0, paths_1.DistPath)(name); let result = runEsbuild({ entryPoints: [(0, paths_1.ScriptPath)(name).main], outfile: pathDist, target: 'esnext', platform: 'node', format: 'esm', bundle: true, minify: main_1.CLIArgs.minify, define: { UserScriptName: `'${metaJson.name}'`, UserScriptNamespace: `'${metaJson.namespace}'`, UserScriptVersion: `'${metaJson.version}'`, UserScriptDownloadURL: `'${metaJson.downloadURL}'`, UserScriptSupportURL: `'${metaJson.supportURL}'`, UserScriptHomepageURL: `'${metaJson.homepageURL}'`, }, }, result => { let error = postBuild(name, result, metaString); watchCallback(metaJson, error); }); let error = postBuild(name, result, metaString); return [metaJson, error]; } exports.default = default_1; function runEsbuild(opts, watchCallback) { opts.write = false; if (main_1.CLIArgs.watch) { opts.watch = { onRebuild(err, res) { watchCallback(getResult(err, res)); }, }; } try { let res = (0, esbuild_1.buildSync)(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*${paths_1.ScriptBase}/.*(?:\\n|$)`, 'g'); return content.replace(regexp, ''); } function postBuild(name, result, metaString) { let error = null; let path = (0, paths_1.ScriptPath)(name); let pathDist = (0, paths_1.DistPath)(name); let PrettierConfig = prettier_1.resolveConfig.sync(path.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 = (0, prettier_1.format)(content, { ...PrettierConfig, parser: 'babel', }); } (0, fs_1.writeFileSync)(pathDist, content); } else { console.error(name, 'No output'); } doErrorFile(name, error); return error; } function doErrorFile(name, error) { let path = (0, paths_1.ScriptPath)(name); let outfile = (0, paths_1.DistPath)(name); let content = `${new Date().toISOString()}\n\n${error}`; if (error !== null) { (0, fs_1.writeFileSync)(path.error, content); if ((0, fs_1.existsSync)(outfile)) { (0, fs_1.unlinkSync)(outfile); } } else if ((0, fs_1.existsSync)(path.error)) { (0, fs_1.unlinkSync)(path.error); } } //# sourceMappingURL=build.js.map