sbv2-solana/packages/lease-observer/esbuild.js

57 lines
1.6 KiB
JavaScript
Executable File

#!/usr/bin/env node
/* eslint-disable @typescript-eslint/no-var-requires */
/* eslint-disable import/no-extraneous-dependencies */
// bundle d.ts declarations
const { build, ts, tsconfig, dirname, glob, log } = require("estrella");
// Automatically exclude all node_modules from the bundled version
const { nodeExternalsPlugin } = require("esbuild-node-externals");
build({
entryPoints: ["./src/main.ts"],
outfile: "dist/index.js",
bundle: true,
minify: true,
platform: "node",
target: "node16",
tslint: true,
sourcemap: "inline",
plugins: [nodeExternalsPlugin()],
onEnd(config) {
// Generate type declaration files
const dtsFilesOutdir = dirname(config.outfile);
generateTypeDefs(tsconfig(config), config.entry, dtsFilesOutdir);
},
});
function generateTypeDefs(tscConfig, entryfiles, outdir) {
const filenames = [
...new Set(
// eslint-disable-next-line unicorn/prefer-spread
(Array.isArray(entryfiles) ? entryfiles : [entryfiles]).concat(
tscConfig.include || []
)
),
].filter(Boolean);
// log.info("Generating type declaration files for", filenames.join(", "));
const compilerOptions = {
...tscConfig.compilerOptions,
moduleResolution: undefined,
declaration: true,
outDir: outdir,
};
const program = ts.ts.createProgram(filenames, compilerOptions);
const targetSourceFile = undefined;
const writeFile = undefined;
const cancellationToken = undefined;
const emitOnlyDtsFiles = true;
program.emit(
targetSourceFile,
writeFile,
cancellationToken,
emitOnlyDtsFiles
);
// log.info("Wrote", glob(outdir + "/*.d.ts").join(", "));
}