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 cfc2f22 commit 152728b
Show file tree
Hide file tree
Showing 6 changed files with 132 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 @@ -35,7 +35,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/querystring.js');
const querystring = resolvePath('./proxy/querystring.js');
const readline = resolvePath('./mock/empty.js');
const repl = resolvePath('./mock/empty.js');
Expand Down
114 changes: 114 additions & 0 deletions proxy/process.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
import _process from 'process/browser.js';

Check failure on line 1 in proxy/process.js

View workflow job for this annotation

GitHub Actions / Test (16)

Declaration emit for this file requires using private name 'BrowserProcess' from module '"process/browser.js"'. An explicit type annotation may unblock declaration emit.

Check failure on line 1 in proxy/process.js

View workflow job for this annotation

GitHub Actions / Test (16)

Declaration emit for this file requires using private name 'BrowserProcess' from module '"process/browser.js"'. An explicit type annotation may unblock declaration emit.

Check failure on line 1 in proxy/process.js

View workflow job for this annotation

GitHub Actions / Test (16)

Declaration emit for this file requires using private name 'BrowserProcess' from module '"process/browser.js"'. An explicit type annotation may unblock declaration emit.

Check failure on line 1 in proxy/process.js

View workflow job for this annotation

GitHub Actions / Test (16)

Declaration emit for this file requires using private name 'BrowserProcess' from module '"process/browser.js"'. An explicit type annotation may unblock declaration emit.

function noop() {}

const nextTick = _process.nextTick;
const title = _process.title;
const browser = _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;
const binding = _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
9 changes: 9 additions & 0 deletions types/lib.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,12 @@ declare module 'querystring-es3' {
import { decode, encode, parse, stringify } from 'querystring';
export { decode, encode, parse, stringify };
};

declare module 'process/browser.js' {
interface BrowserProcess extends NodeJS.Process {
browser: string
binding: Function
}
const process: BrowserProcess;
export = process;
};

0 comments on commit 152728b

Please sign in to comment.