Skip to content

Commit

Permalink
Proxy process with additional exports
Browse files Browse the repository at this point in the history
Closes #33.
  • Loading branch information
niksy committed Nov 20, 2024
1 parent 4032e50 commit a95b808
Show file tree
Hide file tree
Showing 6 changed files with 130 additions and 3 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,7 @@ const b = browserify(
| `net` | | [net](mock/net.js) |
| `os` | [os-browserify](https://github.com/CoderPuppy/os-browserify) | |
| `path` | [path-browserify](https://github.com/browserify/path-browserify) | |
| `process` | [process](https://github.com/defunctzombie/node-process) | [process](mock/process.js) |
| `process` | [process](https://github.com/defunctzombie/node-process) | [process](mock/process.js) | Contains additional exports from newer Node |
| `punycode` | [punycode](https://github.com/bestiejs/punycode.js) | | `punycode@1` for browser support |
| `querystring` | [querystring-es3](https://github.com/mike-spainhower/querystring) | | Contains additional exports from newer Node versions |
| `readline` | | |
Expand Down
2 changes: 1 addition & 1 deletion index.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ const net = resolvePath('./mock/empty.js');
const os = resolvePath('os-browserify/browser.js');
const path = resolvePath('path-browserify');
const punycode = resolvePath('punycode/');
const _process = resolvePath('process/browser.js');
const _process = resolvePath('./proxy/process.js');
const querystring = resolvePath('./proxy/querystring.js');
const readline = resolvePath('./mock/empty.js');
const repl = resolvePath('./mock/empty.js');
Expand Down
116 changes: 116 additions & 0 deletions proxy/process.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
import _process from 'process/browser.js';

function noop() {}

const nextTick = _process.nextTick;
const title = _process.title;
// @ts-ignore
const browser = /** @type {boolean} */ (_process.browser);
const environment = _process.env;
const argv = _process.argv;
const version = _process.version;
const versions = _process.versions;
const on = _process.on;
const addListener = _process.addListener;
const once = _process.once;
const off = _process.off;
const removeListener = _process.removeListener;
const removeAllListeners = _process.removeAllListeners;
const emit = _process.emit;
const emitWarning = noop;
const prependListener = _process.prependListener;
const prependOnceListener = _process.prependOnceListener;
const listeners = _process.listeners;
// @ts-ignore
const binding = /** @type {Function} */ (_process.binding);
const cwd = _process.cwd;
const chdir = _process.chdir;
const umask = _process.umask;
const exit = noop;
const pid = 1;
const features = {};
const kill = noop;
const dlopen = noop;
const uptime = noop;
const memoryUsage = noop;
const uvCounters = noop;
const platform = 'browser';
const arch = 'browser';
const execPath = 'browser';
const execArgv = /** @type {string[]} */ ([]);

const api = {
nextTick,
title,
browser,
env: environment,
argv,
version,
versions,
on,
addListener,
once,
off,
removeListener,
removeAllListeners,
emit,
emitWarning,
prependListener,
prependOnceListener,
listeners,
binding,
cwd,
chdir,
umask,
exit,
pid,
features,
kill,
dlopen,
uptime,
memoryUsage,
uvCounters,
platform,
arch,
execPath,
execArgv
};

export default api;

export {
nextTick,
title,
browser,
environment as env,
argv,
version,
versions,
on,
addListener,
once,
off,
removeListener,
removeAllListeners,
emit,
emitWarning,
prependListener,
prependOnceListener,
listeners,
binding,
cwd,
chdir,
umask,
exit,
pid,
features,
kill,
dlopen,
uptime,
memoryUsage,
uvCounters,
platform,
arch,
execPath,
execArgv
};
4 changes: 4 additions & 0 deletions rollup.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,10 @@ module.exports = [
[
'proxy/querystring.js',
{ cjsOutro: 'exports = module.exports = api;', cjsExports: 'named' }
],
[
'proxy/process.js',
{ cjsOutro: 'exports = module.exports = api;', cjsExports: 'named' }
]
].map((entry) => {
const [filename, options = {}] = [].concat(entry);
Expand Down
4 changes: 3 additions & 1 deletion test/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ const packages = {
net: 'mock/empty.js',
os: 'node_modules/os-browserify',
path: 'node_modules/path-browserify',
process: 'node_modules/process',
process: 'proxy/process.js',
punycode: 'node_modules/punycode',
querystring: 'proxy/querystring.js',
readline: 'mock/empty.js',
Expand Down Expand Up @@ -415,6 +415,8 @@ describe('`querystring` additional exports', function () {
});
});

describe('`process` additional exports', function () {});

const nodeVersion = parseNodeVersion(process.version);
const shouldBundle = nodeVersion.major >= 12;
const shouldBundleESM = nodeVersion.major >= 16;
Expand Down
5 changes: 5 additions & 0 deletions types/lib.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,8 @@ declare module 'querystring-es3' {
import { decode, encode, parse, stringify } from 'querystring';
export { decode, encode, parse, stringify };
};

declare module 'process/browser.js' {
const process: NodeJS.Process;
export = process;
};

0 comments on commit a95b808

Please sign in to comment.