radashi-helper
Version:
Help with managing your own Radashi
116 lines (102 loc) • 4.59 kB
JavaScript
;Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
var _chunk6FV2MASScjs = require('./chunk-6FV2MASS.cjs');
require('./chunk-3KDGKCY3.cjs');
require('./chunk-QJPNUX4P.cjs');
require('./chunk-7UCE7HEG.cjs');
var _chunk27XA2ZBLcjs = require('./chunk-27XA2ZBL.cjs');
require('./chunk-DNQVKCXJ.cjs');
var _chunkZP624W2Acjs = require('./chunk-ZP624W2A.cjs');
var _chunkST3J6QTNcjs = require('./chunk-ST3J6QTN.cjs');
var _chunk5R2KEZLQcjs = require('./chunk-5R2KEZLQ.cjs');
// src/build.ts
var _chokidar = require('chokidar'); var chokidar = _interopRequireWildcard(_chokidar);
var _esbuild = require('esbuild'); var esbuild = _interopRequireWildcard(_esbuild);
var _promises = require('fs/promises'); var _promises2 = _interopRequireDefault(_promises);
var _path = require('path');
async function build_default(options = {}) {
const env = _nullishCoalesce(options.env, () => ( _chunkZP624W2Acjs.getEnv.call(void 0, options.dir)));
const { root, config } = env;
const outDir = _path.resolve.call(void 0, _nullishCoalesce(options.outDir, () => ( env.outDir)));
await _promises2.default.rm(outDir, { recursive: true }).catch(() => {
});
const esmOptions = {
entryPoints: [env.modPath],
external: ["radashi"],
bundle: true,
outfile: _path.join.call(void 0, outDir, "radashi.js"),
platform: "node",
target: "node16",
format: "esm",
plugins: [_chunk6FV2MASScjs.esbuildRadashi.call(void 0, { env })],
logLevel: "info"
};
const cjsOptions = {
...esmOptions,
format: "cjs",
outfile: _path.join.call(void 0, outDir, "radashi.cjs")
};
if (_optionalChain([options, 'optionalAccess', _ => _.watch])) {
const ctx = await esbuild.context(
config.formats.includes("esm") ? esmOptions : cjsOptions
);
await ctx.watch();
} else {
if (config.formats.includes("esm")) {
await esbuild.build(esmOptions);
}
if (config.formats.includes("cjs")) {
await esbuild.build(cjsOptions);
}
}
if (config.dts) {
await emitDeclarationTypes(root, _path.join.call(void 0, outDir, "types"), options);
}
}
async function emitDeclarationTypes(root, outDir, flags = {}) {
_chunkST3J6QTNcjs.log.call(void 0, "Emitting declaration types...");
const result = _chunkST3J6QTNcjs.exec.call(void 0,
_path.resolve.call(void 0, root, "node_modules/.bin/tsc"),
_chunk5R2KEZLQcjs.sift.call(void 0, [
"--project",
"tsconfig.dts.json",
"--outDir",
outDir,
"--emitDeclarationOnly",
flags.watch && "--watch",
flags.watch && "--preserveWatchOutput"
]),
{
cwd: root,
stdio: _chunk27XA2ZBLcjs.stdio
}
);
const modPath = _path.join.call(void 0, outDir, "mod.d.ts");
const rewriteRadashiImport = async () => {
await editFile(modPath, (data) => {
return data.replace("./node_modules/radashi/dist/radashi", "radashi");
});
};
if (flags.watch) {
let rewriting = false;
chokidar.watch(outDir).on("all", async (type, file) => {
if (!rewriting && file === modPath && type !== "unlink") {
rewriting = true;
await rewriteRadashiImport();
setTimeout(() => {
rewriting = false;
}, 250);
}
});
} else {
await result;
await rewriteRadashiImport();
}
}
async function editFile(filePath, callback) {
const data = await _promises.readFile.call(void 0, filePath, "utf-8");
const newData = await callback(data);
if (newData) {
await _promises.writeFile.call(void 0, filePath, newData, "utf-8");
}
}
exports.default = build_default;