UNPKG

esbuild-plugin-solid

Version:
41 lines (35 loc) 1.34 kB
'use strict'; const node_path = require('node:path'); const promises = require('node:fs/promises'); const core = require('@babel/core'); const solid = require('babel-preset-solid'); const ts = require('@babel/preset-typescript'); function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e.default : e; } const solid__default = /*#__PURE__*/_interopDefaultCompat(solid); const ts__default = /*#__PURE__*/_interopDefaultCompat(ts); function solidPlugin(options) { return { name: "esbuild:solid", setup(build) { build.onLoad({ filter: /\.(t|j)sx$/ }, async (args) => { const source = await promises.readFile(args.path, { encoding: "utf-8" }); const { name, ext } = node_path.parse(args.path); const filename = name + ext; const result = await core.transformAsync(source, { presets: [ [solid__default, options?.solid ?? {}], [ts__default, options?.typescript ?? {}] ], filename, sourceMaps: "inline", ...options?.babel ?? {} }); if (result?.code === void 0 || result.code === null) { throw new Error("No result was provided from Babel"); } return { contents: result.code, loader: "js" }; }); } }; } exports.solidPlugin = solidPlugin;