"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"); function default_1(name, watchCallback = false, PrettierConfig) { //read meta file let [metaJson, metaString] = (0, readmeta_1.default)(name); let path = (0, paths_1.ScriptPath)(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: false, define: { UserScriptName: `'${metaJson.name}'`, UserScriptNamespace: `'${metaJson.namespace}'`, UserScriptVersion: `'${metaJson.version}'`, UserScriptDownloadURL: `'${metaJson.downloadURL}'`, UserScriptSupportURL: `'${metaJson.supportURL}'`, UserScriptHomepageURL: `'${metaJson.homepageURL}'`, }, }, result => { let error = null; if (result.error) { console.error(name, result.errorRaw || result.error); error = result.error; } else if (result.content) { let content = (0, prettier_1.format)(metaString + result.content, PrettierConfig === null ? undefined : PrettierConfig); (0, fs_1.writeFileSync)(pathDist, content); } else { console.error(name, 'No output'); } doErrorFile(path.error, pathDist, error); if (watchCallback !== false) { watchCallback(metaJson, error); } }, watchCallback !== false); let error = null; if (result.error) { console.error(name, result.errorRaw || result.error); error = result.error; } else if (result.content) { let content = (0, prettier_1.format)(metaString + result.content, PrettierConfig === null ? undefined : PrettierConfig); (0, fs_1.writeFileSync)(pathDist, content); } else { console.error(name, 'No output'); } doErrorFile(path.error, pathDist, error); return [metaJson, error]; } exports.default = default_1; function doErrorFile(pathError, pathOutFile, error) { if (error !== null) { (0, fs_1.writeFileSync)(pathError, `${new Date().toISOString()}\n\n${error}`); if ((0, fs_1.existsSync)(pathOutFile)) { (0, fs_1.unlinkSync)(pathOutFile); } } else if ((0, fs_1.existsSync)(pathError)) { (0, fs_1.unlinkSync)(pathError); } } function runEsbuild(opts, watchCallback, toWatch = false) { opts.write = false; if (toWatch) { opts.watch = { onRebuild(err, res) { if (err) { watchCallback({ content: null, error: err.message, errorRaw: err, }); } else if (res) { let content = ''; if (res.outputFiles && res.outputFiles.length > 0) { content = res.outputFiles[0].text; } if (content === '') { watchCallback({ content: null, error: 'No output', }); } watchCallback({ content, error: null, }); } else { watchCallback({ content: null, error: 'No result', }); } }, }; } try { let res = (0, esbuild_1.buildSync)(opts); let content = ''; if (res.outputFiles && res.outputFiles.length > 0) { content = clearFilenameComments(res.outputFiles[0].text); } if (content === '') { return { content: null, error: 'No output', }; } return { content, error: null, }; } catch (err) { return { content: null, error: err.message, }; } } //remove all filename comments function clearFilenameComments(content) { let regexp = new RegExp(`//\\s*${paths_1.ScriptBase}/.*(?:\\n|$)`, 'g'); return content.replace(regexp, ''); } //# sourceMappingURL=build.js.map