@react-gnome/core
Version:
## Getting Started
57 lines (56 loc) • 1.57 kB
JavaScript
// src/esbuild-plugins/import-polyfills/import-polyfills.ts
import path from "path";
import { createNodePolyfillMap } from "./create-node-polyfill-map.mjs";
var POLYFILL_IMPORT_NS = "react-gtk-polyfills";
var NodePolyfills = createNodePolyfillMap([
{
matcher: /^(fs|node:fs)$/,
configFlag: (c) => !!c.polyfills?.node?.fs,
filename: "fs.mjs"
},
{
matcher: /^(fs\/promises|node:fs\/promises)$/,
configFlag: (c) => !!c.polyfills?.node?.fs,
filename: "fs-promises.mjs"
},
{
matcher: /^(path|node:path)$/,
configFlag: (c) => !!c.polyfills?.node?.path,
filename: "path.mjs"
},
{
matcher: /^(querystring|node:querystring)$/,
configFlag: (c) => !!c.polyfills?.node?.querystring,
filename: "querystring.mjs"
},
{
matcher: /^(os|node:os)$/,
configFlag: (c) => !!c.polyfills?.node?.os,
filename: "node-os.mjs"
}
]);
var importPolyfillsPlugin = (program) => {
return {
name: "react-gtk-import-polyfills-esbuild-plugin",
setup(build) {
NodePolyfills.addResolvers(program, build);
if (program.config.customPolyfills) {
for (const customPoly of program.config.customPolyfills) {
if (customPoly.importName) {
build.onResolve({ filter: /.*/ }, (arg) => {
if (customPoly.importName === arg.path) {
return {
path: path.join(program.cwd, customPoly.filepath)
};
}
});
}
}
}
}
};
};
export {
POLYFILL_IMPORT_NS,
importPolyfillsPlugin
};