diff options
Diffstat (limited to 'node_modules/@esbuild-plugins/node-globals-polyfill/src/index.ts')
| -rw-r--r-- | node_modules/@esbuild-plugins/node-globals-polyfill/src/index.ts | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/node_modules/@esbuild-plugins/node-globals-polyfill/src/index.ts b/node_modules/@esbuild-plugins/node-globals-polyfill/src/index.ts new file mode 100644 index 0000000..4b06c37 --- /dev/null +++ b/node_modules/@esbuild-plugins/node-globals-polyfill/src/index.ts @@ -0,0 +1,84 @@ +import path from 'path' +import fs from 'fs' +import * as esbuild from 'esbuild' + +export function NodeGlobalsPolyfillPlugin({ + buffer = false, + // define = {}, + process = true, +} = {}): esbuild.Plugin { + return { + name: 'node-globals-polyfill', + setup({ initialOptions, onResolve, onLoad }) { + onResolve({ filter: /_node-buffer-polyfill_\.js/ }, (arg) => { + return { + path: path.resolve(__dirname, '../Buffer.js'), + } + }) + onResolve({ filter: /_node-process-polyfill_\.js/ }, (arg) => { + return { + path: path.resolve(__dirname, '../process.js'), + } + }) + + // TODO esbuild cannot use virtual modules for inject: https://github.com/evanw/esbuild/issues/2762 + // onLoad({ filter: /_virtual-process-polyfill_\.js/ }, (arg) => { + // const data = fs + // .readFileSync(path.resolve(__dirname, '../process.js')) + // .toString() + + // const keys = Object.keys(define) + // return { + // loader: 'js', + // contents: data.replace( + // `const defines = {}`, + // 'const defines = {\n' + + // keys + // .filter((x) => x.startsWith('process.')) + // .sort((a, b) => a.length - b.length) + // .map( + // (k) => + // ` ${JSON.stringify(k).replace( + // 'process.', + // '', + // )}: ${define[k]},`, + // ) + // .join('\n') + + // '\n}', + // ), + // } + // }) + onResolve({ filter: /_virtual-process-polyfill_\.js/ }, () => { + return { + path: path.resolve(__dirname, '../process.js'), + } + }) + onResolve({ filter: /_virtual-buffer-polyfill_\.js/ }, () => { + return { + path: path.resolve(__dirname, '../_buffer.js'), + } + }) + + const polyfills: string[] = [] + if (process) { + polyfills.push( + path.resolve(__dirname, '../_virtual-process-polyfill_.js'), + ) + } + if (buffer) { + polyfills.push( + path.resolve(__dirname, '../_virtual-buffer-polyfill_.js'), + ) + } + if (initialOptions.inject) { + initialOptions.inject.push(...polyfills) + // handle duplicate plugin + initialOptions.inject = [...new Set(initialOptions.inject)] + } else { + initialOptions.inject = [...polyfills] + } + }, + } +} + +export default NodeGlobalsPolyfillPlugin |
