ts-miniflare
Version:
Run TypeScript Cloudflare Workers with Miniflare
48 lines (47 loc) • 1.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.TsMiniflare = void 0;
const esbuild_1 = require("esbuild");
const miniflare_1 = require("miniflare");
class TsMiniflare extends miniflare_1.Miniflare {
constructor(opts) {
const defaultOptions = {
format: 'esm',
target: 'esnext',
bundle: true,
write: false,
};
let result;
if ('script' in opts) {
// Compile typescript using stdin
result = (0, esbuild_1.buildSync)({
...defaultOptions,
stdin: {
contents: opts.script,
resolveDir: __dirname,
},
...opts.esbuild,
});
}
else if ('scriptPath' in opts) {
// Compile typescript using entrypoint
result = (0, esbuild_1.buildSync)({
...defaultOptions,
entryPoints: [opts.scriptPath],
...opts.esbuild,
});
}
else
throw new Error('script or scriptPath options is required');
if (!result.outputFiles || result.outputFiles.length > 1)
throw new Error('Invalid output files');
const script = result.outputFiles[0].text;
super({
...opts,
modules: true,
script,
scriptPath: undefined,
});
}
}
exports.TsMiniflare = TsMiniflare;