Skip to content

Add missing APIs from v18 #39

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jul 21, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 49 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,65 @@ Notable changes to this project are documented in this file. The format is based
## [Unreleased]

Breaking changes:
- Breaking changes to `exit` (#39 by @JordanMartinez)

The `exit` API provides two versions:
- unspecified exit code: `process.exit();`
- specified exit code: `process.exit(1);`

Previously, the type signature of `exit` only allowed
the second usage. This change supports both.
Followin the pattern used in other Node libraries
of a `'` (prime) character indicating a
variant of the function that takes a callback or optons
are, the type signature of `exit` has changed:

```purs
-- before:
exit :: forall a. Int -> Effect a

-- after:
exit :: forall a. Effect a

exit' :: forall a. Int -> Effect a
```

New features:
- Add missing APIs (#39 by @JordanMartinez)

- Process-related things
- `abort`
- `setExitCode`
- `getExitCode`
- `kill`/`killStr`/`kilInt`
- `nextTick'`
- `ppid`
- Uncaught exception capture callback
- `hasUncaughtExceptionCaptureCallback`
- `setUncaughtExceptionCaptureCallback`
- `clearUncaughtExceptionCaptureCallback`
- `getTitle`/`setTitle`
- ChildProcess-related things
- `channelRef`/`channelUnref`
- `connected`
- `unsafeSend`/`unsafeSendOpts`/`unsafeSendCb`/`unsafeSendOptsCb`
- Diagnostic-related things
- `config`
- `cpuUsage`/`cpuUsageDiff`
- `debugPort`
- `memoryUsage`/`memoryUsageRss`
- `resourceUsage`
- `uptime`

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

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

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

Expand Down
1 change: 1 addition & 0 deletions bower.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
"dependencies": {
"purescript-effect": "^4.0.0",
"purescript-foreign-object": "^4.0.0",
"purescript-foreign": "^7.0.0",
"purescript-maybe": "^6.0.0",
"purescript-node-streams": "^7.0.0",
"purescript-posix-types": "^6.0.0",
Expand Down
43 changes: 39 additions & 4 deletions src/Node/Process.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,19 @@ export function onSignalImpl(signal) {
};
}

export const nextTickImpl = (cb) => process.nextTick(cb);
export const abortImpl = process.abort ? () => process.abort() : null;
export const argv = () => process.argv.slice();
export const execArgv = () => process.execArgv.slice();
export const execPath = () => process.execPath;
export const argv0 = () => process.argv0;
export const channelRefImpl = process.channel.ref ? () => process.channel.ref() : null;
export const channelUnrefImpl = process.channel.unref ? () => process.channel.unref() : null;
export const chdirImpl = (dir) => process.chdir(dir);
export const config = () => Object.assign({}, process.config);
export const connected = () => process.connected;
export const cpuUsage = () => process.cpuUsage();
export const cpuUsageDiffImpl = (prevVal) => process.cpuUsage(prevVal);
export const cwd = () => process.cwd;
export const debugPort = process.debugPort;
export const disconnectImpl = process.disconnect ? () => process.disconnect() : null;
export const getEnv = () => Object.assign({}, process.env);
export const unsafeGetEnv = () => process.env;
export const setEnvImpl = (key, val) => {
Expand All @@ -50,14 +57,42 @@ export const setEnvImpl = (key, val) => {
export const unsetEnvImpl = (key) => {
delete process.env[key];
};
export const execArgv = () => process.execArgv.slice();
export const execPath = () => process.execPath;
export const exit = () => process.exit();
export const exitImpl = (code) => process.exit(code);
export const setExitCodeImpl = (code) => {
process.exitCode = code;
};
export const getExitCodeImpl = () => process.exitCode;
export const hasUncaughtExceptionCaptureCallback = () => process.hasUncaughtExceptionCaptureCallback;
export const killImpl = (pid) => process.kill(pid);
export const killStrImpl = (pid, sig) => process.kill(pid, sig);
export const killIntImpl = (pid, int) => process.kill(pid, int);
export const memoryUsage = () => process.memoryUsage();
export const memoryUsageRss = () => process.memoryUsage.rss();
export const nextTickImpl = (cb) => process.nextTick(cb);
export const nextTickCbImpl = (cb, args) => process.nextTick(cb, args);
export const pid = process.pid;
export const platformStr = process.platform;
export const exitImpl = (code) => process.exit(code);
export const ppid = process.ppid;
export const resourceUsage = () => process.resourceUsage;
export const sendImpl = (msg, handle) => process.send(msg, handle);
export const sendOptsImpl = (msg, handle, opts) => process.send(msg, handle, opts);
export const sendCbImpl = (msg, handle, cb) => process.send(msg, handle, cb);
export const sendOptsCbImpl = (msg, handle, opts, cb) => process.send(msg, handle, opts, cb);
export const setUncaughtExceptionCaptureCallbackImpl = (cb) => process.setUncaughtExceptionCaptureCallback(cb);
export const clearUncaughtExceptionCaptureCallback = () => process.setUncaughtExceptionCaptureCallback(null);
export const stdin = process.stdin;
export const stdout = process.stdout;
export const stderr = process.stderr;
export const stdinIsTTY = process.stdinIsTTY;
export const stdoutIsTTY = process.stdoutIsTTY;
export const stderrIsTTY = process.stderrIsTTY;
export const getTitle = () => process.title;
export const setTitleImpl = (v) => {
process.title = v;
};
export const uptime = () => process.uptime();
export const version = process.version;

Loading