Skip to content

Commit b0d710e

Browse files
Add missing APIs from v18 (#39)
* Add dependency on foreign * Implement missing APIs; break 'exit'
1 parent e8c77e9 commit b0d710e

File tree

4 files changed

+431
-26
lines changed

4 files changed

+431
-26
lines changed

CHANGELOG.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,65 @@ Notable changes to this project are documented in this file. The format is based
55
## [Unreleased]
66

77
Breaking changes:
8+
- Breaking changes to `exit` (#39 by @JordanMartinez)
9+
10+
The `exit` API provides two versions:
11+
- unspecified exit code: `process.exit();`
12+
- specified exit code: `process.exit(1);`
13+
14+
Previously, the type signature of `exit` only allowed
15+
the second usage. This change supports both.
16+
Followin the pattern used in other Node libraries
17+
of a `'` (prime) character indicating a
18+
variant of the function that takes a callback or optons
19+
are, the type signature of `exit` has changed:
20+
21+
```purs
22+
-- before:
23+
exit :: forall a. Int -> Effect a
24+
25+
-- after:
26+
exit :: forall a. Effect a
27+
28+
exit' :: forall a. Int -> Effect a
29+
```
830

931
New features:
32+
- Add missing APIs (#39 by @JordanMartinez)
33+
34+
- Process-related things
35+
- `abort`
36+
- `setExitCode`
37+
- `getExitCode`
38+
- `kill`/`killStr`/`kilInt`
39+
- `nextTick'`
40+
- `ppid`
41+
- Uncaught exception capture callback
42+
- `hasUncaughtExceptionCaptureCallback`
43+
- `setUncaughtExceptionCaptureCallback`
44+
- `clearUncaughtExceptionCaptureCallback`
45+
- `getTitle`/`setTitle`
46+
- ChildProcess-related things
47+
- `channelRef`/`channelUnref`
48+
- `connected`
49+
- `unsafeSend`/`unsafeSendOpts`/`unsafeSendCb`/`unsafeSendOptsCb`
50+
- Diagnostic-related things
51+
- `config`
52+
- `cpuUsage`/`cpuUsageDiff`
53+
- `debugPort`
54+
- `memoryUsage`/`memoryUsageRss`
55+
- `resourceUsage`
56+
- `uptime`
1057

1158
Bugfixes:
59+
- Docs: discourage `exit` in favor of `setExitCode` (#39 by @JordanMartinez)
1260

1361
Other improvements:
1462
- Bumped CI's node version to `lts/*` (#37 by @JordanMartinez)
1563
- Updated CI `actions/checkout` and `actions/setup-nodee` to `v3` (#37 by @JordanMartinez)
1664
- Format codebase & enforce formatting in CI via purs-tidy (#37 by @JordanMartinez)
1765
- Use uncurried FFI (#38 by @JordanMartinez)
66+
- Reordered export list (#39 by @JordanMartinez)
1867

1968
## [v10.0.0](https://github.com/purescript-node/purescript-node-process/releases/tag/v10.0.0) - 2022-04-29
2069

bower.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
"dependencies": {
1515
"purescript-effect": "^4.0.0",
1616
"purescript-foreign-object": "^4.0.0",
17+
"purescript-foreign": "^7.0.0",
1718
"purescript-maybe": "^6.0.0",
1819
"purescript-node-streams": "^7.0.0",
1920
"purescript-posix-types": "^6.0.0",

src/Node/Process.js

Lines changed: 39 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,19 @@ export function onSignalImpl(signal) {
3636
};
3737
}
3838

39-
export const nextTickImpl = (cb) => process.nextTick(cb);
39+
export const abortImpl = process.abort ? () => process.abort() : null;
4040
export const argv = () => process.argv.slice();
41-
export const execArgv = () => process.execArgv.slice();
42-
export const execPath = () => process.execPath;
41+
export const argv0 = () => process.argv0;
42+
export const channelRefImpl = process.channel.ref ? () => process.channel.ref() : null;
43+
export const channelUnrefImpl = process.channel.unref ? () => process.channel.unref() : null;
4344
export const chdirImpl = (dir) => process.chdir(dir);
45+
export const config = () => Object.assign({}, process.config);
46+
export const connected = () => process.connected;
47+
export const cpuUsage = () => process.cpuUsage();
48+
export const cpuUsageDiffImpl = (prevVal) => process.cpuUsage(prevVal);
4449
export const cwd = () => process.cwd;
50+
export const debugPort = process.debugPort;
51+
export const disconnectImpl = process.disconnect ? () => process.disconnect() : null;
4552
export const getEnv = () => Object.assign({}, process.env);
4653
export const unsafeGetEnv = () => process.env;
4754
export const setEnvImpl = (key, val) => {
@@ -50,14 +57,42 @@ export const setEnvImpl = (key, val) => {
5057
export const unsetEnvImpl = (key) => {
5158
delete process.env[key];
5259
};
60+
export const execArgv = () => process.execArgv.slice();
61+
export const execPath = () => process.execPath;
62+
export const exit = () => process.exit();
63+
export const exitImpl = (code) => process.exit(code);
64+
export const setExitCodeImpl = (code) => {
65+
process.exitCode = code;
66+
};
67+
export const getExitCodeImpl = () => process.exitCode;
68+
export const hasUncaughtExceptionCaptureCallback = () => process.hasUncaughtExceptionCaptureCallback;
69+
export const killImpl = (pid) => process.kill(pid);
70+
export const killStrImpl = (pid, sig) => process.kill(pid, sig);
71+
export const killIntImpl = (pid, int) => process.kill(pid, int);
72+
export const memoryUsage = () => process.memoryUsage();
73+
export const memoryUsageRss = () => process.memoryUsage.rss();
74+
export const nextTickImpl = (cb) => process.nextTick(cb);
75+
export const nextTickCbImpl = (cb, args) => process.nextTick(cb, args);
5376
export const pid = process.pid;
5477
export const platformStr = process.platform;
55-
export const exitImpl = (code) => process.exit(code);
78+
export const ppid = process.ppid;
79+
export const resourceUsage = () => process.resourceUsage;
80+
export const sendImpl = (msg, handle) => process.send(msg, handle);
81+
export const sendOptsImpl = (msg, handle, opts) => process.send(msg, handle, opts);
82+
export const sendCbImpl = (msg, handle, cb) => process.send(msg, handle, cb);
83+
export const sendOptsCbImpl = (msg, handle, opts, cb) => process.send(msg, handle, opts, cb);
84+
export const setUncaughtExceptionCaptureCallbackImpl = (cb) => process.setUncaughtExceptionCaptureCallback(cb);
85+
export const clearUncaughtExceptionCaptureCallback = () => process.setUncaughtExceptionCaptureCallback(null);
5686
export const stdin = process.stdin;
5787
export const stdout = process.stdout;
5888
export const stderr = process.stderr;
5989
export const stdinIsTTY = process.stdinIsTTY;
6090
export const stdoutIsTTY = process.stdoutIsTTY;
6191
export const stderrIsTTY = process.stderrIsTTY;
92+
export const getTitle = () => process.title;
93+
export const setTitleImpl = (v) => {
94+
process.title = v;
95+
};
96+
export const uptime = () => process.uptime();
6297
export const version = process.version;
6398

0 commit comments

Comments
 (0)