From be1ca2709a516f3706b1ed905b302286b3bb4e9c Mon Sep 17 00:00:00 2001 From: Nicholas Wolverson Date: Sat, 12 Feb 2022 11:34:07 +0000 Subject: [PATCH 01/17] ESM conversion The changes are interesting WRT require, as it should still be in existance in ESM but is CJS specific https://nodejs.org/api/esm.html#require __filename and __dirname are probably broken --- src/Node/Globals.js | 10 +++++----- src/Node/Process.js | 46 ++++++++++++++++++++++----------------------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/src/Node/Globals.js b/src/Node/Globals.js index ecf278c..6a7fa6d 100644 --- a/src/Node/Globals.js +++ b/src/Node/Globals.js @@ -1,11 +1,11 @@ "use strict"; -exports.__dirname = __dirname; -exports.__filename = __filename; -exports.unsafeRequire = require; +export {__dirname}; +export {__filename}; +export {require as unsafeRequire}; -exports.requireResolve = function (mod) { +export function requireResolve(mod) { return function () { return require.resolve(mod); }; -}; +} diff --git a/src/Node/Process.js b/src/Node/Process.js index 1834150..af8a194 100644 --- a/src/Node/Process.js +++ b/src/Node/Process.js @@ -1,79 +1,79 @@ "use strict"; -exports.process = process; +export {process}; -exports.onBeforeExit = function (callback) { +export function onBeforeExit(callback) { return function () { process.on("beforeExit", callback); }; -}; +} -exports.onExit = function (callback) { +export function onExit(callback) { return function () { process.on("exit", function (code) { callback(code)(); }); }; -}; +} -exports.onUncaughtException = function (callback) { +export function onUncaughtException(callback) { return function () { process.on("uncaughtException", function (error) { callback(error)(); }); }; -}; +} -exports.onUnhandledRejection = function (callback) { +export function onUnhandledRejection(callback) { return function () { process.on("unhandledRejection", function (error, promise) { callback(error)(promise)(); }); }; -}; +} -exports.onSignalImpl = function (signal) { +export function onSignalImpl(signal) { return function (callback) { return function () { process.on(signal, callback); }; }; -}; +} -exports.chdir = function (dir) { +export function chdir(dir) { return function () { process.chdir(dir); }; -}; +} -exports.setEnv = function (var_) { +export function setEnv(var_) { return function (val) { return function () { process.env[var_] = val; }; }; -}; +} -exports.unsetEnv = function (var_) { +export function unsetEnv(var_) { return function () { delete process.env[var_]; }; -}; +} -exports.exit = function (code) { +export function exit(code) { return function () { process.exit(code); }; -}; +} -exports.copyArray = function (xs) { +export function copyArray(xs) { return function () { return xs.slice(); }; -}; +} -exports.copyObject = function (o) { +export function copyObject(o) { return function () { return Object.assign({}, o); }; -}; +} From 279bdf9a3c5505417152a2c8f2e2f987ab90924c Mon Sep 17 00:00:00 2001 From: Nicholas Wolverson Date: Sat, 12 Feb 2022 12:16:16 +0000 Subject: [PATCH 02/17] Arrow/let transformation --- src/Node/Process.js | 42 +++++++++++++++++------------------------- 1 file changed, 17 insertions(+), 25 deletions(-) diff --git a/src/Node/Process.js b/src/Node/Process.js index af8a194..8e93989 100644 --- a/src/Node/Process.js +++ b/src/Node/Process.js @@ -1,79 +1,71 @@ "use strict"; -export {process}; +// export {process}; export function onBeforeExit(callback) { - return function () { + return () => { process.on("beforeExit", callback); }; } export function onExit(callback) { - return function () { - process.on("exit", function (code) { + return () => { + process.on("exit", code => { callback(code)(); }); }; } export function onUncaughtException(callback) { - return function () { - process.on("uncaughtException", function (error) { + return () => { + process.on("uncaughtException", error => { callback(error)(); }); }; } export function onUnhandledRejection(callback) { - return function () { - process.on("unhandledRejection", function (error, promise) { + return () => { + process.on("unhandledRejection", (error, promise) => { callback(error)(promise)(); }); }; } export function onSignalImpl(signal) { - return function (callback) { - return function () { - process.on(signal, callback); - }; + return callback => () => { + process.on(signal, callback); }; } export function chdir(dir) { - return function () { + return () => { process.chdir(dir); }; } export function setEnv(var_) { - return function (val) { - return function () { - process.env[var_] = val; - }; + return val => () => { + process.env[var_] = val; }; } export function unsetEnv(var_) { - return function () { + return () => { delete process.env[var_]; }; } export function exit(code) { - return function () { + return () => { process.exit(code); }; } export function copyArray(xs) { - return function () { - return xs.slice(); - }; + return () => xs.slice(); } export function copyObject(o) { - return function () { - return Object.assign({}, o); - }; + return () => Object.assign({}, o); } From d939b1f61fc33884687452c81f3c9d5c9eee45ee Mon Sep 17 00:00:00 2001 From: Nicholas Wolverson Date: Sat, 12 Feb 2022 12:29:04 +0000 Subject: [PATCH 03/17] Missing export --- src/Node/Process.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Node/Process.js b/src/Node/Process.js index 8e93989..cdacb19 100644 --- a/src/Node/Process.js +++ b/src/Node/Process.js @@ -1,6 +1,6 @@ "use strict"; -// export {process}; +export {process}; export function onBeforeExit(callback) { return () => { From 69fa5605c1513be2ee4a9775596ae744a257766a Mon Sep 17 00:00:00 2001 From: Nicholas Wolverson Date: Sat, 12 Feb 2022 12:48:20 +0000 Subject: [PATCH 04/17] Fix process export --- src/Node/Process.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Node/Process.js b/src/Node/Process.js index cdacb19..88639f3 100644 --- a/src/Node/Process.js +++ b/src/Node/Process.js @@ -1,6 +1,7 @@ "use strict"; -export {process}; +import { process } from 'process'; +export { process }; export function onBeforeExit(callback) { return () => { From 984c0097f842d08890c85e41dcee3c3da4b9b601 Mon Sep 17 00:00:00 2001 From: Nicholas Wolverson Date: Sat, 12 Feb 2022 15:44:18 +0000 Subject: [PATCH 05/17] Bad process export --- src/Node/Process.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Node/Process.js b/src/Node/Process.js index 88639f3..c6c6256 100644 --- a/src/Node/Process.js +++ b/src/Node/Process.js @@ -1,6 +1,6 @@ "use strict"; -import { process } from 'process'; +import process from 'process'; export { process }; export function onBeforeExit(callback) { From 9fab9d95ab3e52a4a923ef407cfc3166504d7f0c Mon Sep 17 00:00:00 2001 From: Nicholas Wolverson Date: Sat, 12 Feb 2022 16:21:31 +0000 Subject: [PATCH 06/17] Breaking: Remove Node.Globals Some of these bindings are no longer available with es modules, and all of them are dodgy (and probably in the wrong place). --- src/Node/Globals.js | 11 ----------- src/Node/Globals.purs | 26 -------------------------- 2 files changed, 37 deletions(-) delete mode 100644 src/Node/Globals.js delete mode 100644 src/Node/Globals.purs diff --git a/src/Node/Globals.js b/src/Node/Globals.js deleted file mode 100644 index 6a7fa6d..0000000 --- a/src/Node/Globals.js +++ /dev/null @@ -1,11 +0,0 @@ -"use strict"; - -export {__dirname}; -export {__filename}; -export {require as unsafeRequire}; - -export function requireResolve(mod) { - return function () { - return require.resolve(mod); - }; -} diff --git a/src/Node/Globals.purs b/src/Node/Globals.purs deleted file mode 100644 index 40fa116..0000000 --- a/src/Node/Globals.purs +++ /dev/null @@ -1,26 +0,0 @@ --- | Global objects exposed by Node.js. See also the [Node.js API --- | documentation](https://nodejs.org/api/globals.html). -module Node.Globals where - -import Effect (Effect) - --- | The name of the directory that the currently executing script resides in. --- | --- | Note that this will probably not give you a very useful answer unless you --- | have bundled up your PureScript code using `purs bundle`! -foreign import __dirname :: String - --- | The absolute path of the code file being executed. --- | --- | Note that this will probably not give you a very useful answer unless you --- | have bundled up your PureScript code using `purs bundle`! -foreign import __filename :: String - --- | Just calls `require`. You might also consider using the FFI instead. This --- | function is, in general, horribly unsafe, and may perform side effects. -foreign import unsafeRequire :: forall a. String -> a - --- | `require.resolve()`. Use the internal `require` machinery to look up the --- | location of a module, but rather than loading the module, just return the --- | resolved filename. -foreign import requireResolve :: String -> Effect String From 479d900515d9d999e01d43bc188e548a2d29cff2 Mon Sep 17 00:00:00 2001 From: sigma-andex Date: Tue, 22 Mar 2022 17:56:32 +0000 Subject: [PATCH 07/17] Removed '"use strict";' in FFI files --- src/Node/Process.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Node/Process.js b/src/Node/Process.js index c6c6256..0d7bab8 100644 --- a/src/Node/Process.js +++ b/src/Node/Process.js @@ -1,5 +1,3 @@ -"use strict"; - import process from 'process'; export { process }; From 313265c26fda017f821afbe7651b1bd840227f33 Mon Sep 17 00:00:00 2001 From: sigma-andex Date: Tue, 22 Mar 2022 17:56:32 +0000 Subject: [PATCH 08/17] Update to CI to use 'unstable' purescript --- .github/workflows/ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 063845e..f5a96fe 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,6 +13,8 @@ jobs: - uses: actions/checkout@v2 - uses: purescript-contrib/setup-purescript@main + with: + purescript: "unstable" - uses: actions/setup-node@v1 with: From 57112f27c682c334c404bf2528490012aa7db628 Mon Sep 17 00:00:00 2001 From: sigma-andex Date: Tue, 22 Mar 2022 17:56:32 +0000 Subject: [PATCH 09/17] Update Bower dependencies to master or main --- bower.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/bower.json b/bower.json index afb184e..5a524bc 100644 --- a/bower.json +++ b/bower.json @@ -12,12 +12,12 @@ "output" ], "dependencies": { - "purescript-effect": "^3.0.0", - "purescript-foreign-object": "^3.0.0", - "purescript-maybe": "^5.0.0", + "purescript-effect": "master", + "purescript-foreign-object": "master", + "purescript-maybe": "master", "purescript-node-streams": "^5.0.0", "purescript-posix-types": "^5.0.0", - "purescript-prelude": "^5.0.0", - "purescript-unsafe-coerce": "^5.0.0" + "purescript-prelude": "master", + "purescript-unsafe-coerce": "master" } } From d177a3256d604fc1db183e47a0ac877704c683b8 Mon Sep 17 00:00:00 2001 From: sigma-andex Date: Tue, 22 Mar 2022 17:56:32 +0000 Subject: [PATCH 10/17] Update pulp to 16.0.0-0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1c67b54..18136bd 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ }, "devDependencies": { "eslint": "^7.15.0", - "pulp": "^15.0.0", + "pulp": "16.0.0-0", "purescript-psa": "^0.8.0", "rimraf": "^3.0.2" } From 4532805c246f67f5dfb9da85dcd0f25e35abd062 Mon Sep 17 00:00:00 2001 From: sigma-andex Date: Tue, 22 Mar 2022 17:56:32 +0000 Subject: [PATCH 11/17] Update psa to 0.8.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 18136bd..4ea39f9 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "devDependencies": { "eslint": "^7.15.0", "pulp": "16.0.0-0", - "purescript-psa": "^0.8.0", + "purescript-psa": "^0.8.2", "rimraf": "^3.0.2" } } From 6e1f1e345a97e22c0ed0779cef881cbb19754a96 Mon Sep 17 00:00:00 2001 From: sigma-andex Date: Tue, 22 Mar 2022 17:58:37 +0000 Subject: [PATCH 12/17] Update Bower dependencies to master or main --- bower.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bower.json b/bower.json index 5a524bc..d9c12d7 100644 --- a/bower.json +++ b/bower.json @@ -15,8 +15,8 @@ "purescript-effect": "master", "purescript-foreign-object": "master", "purescript-maybe": "master", - "purescript-node-streams": "^5.0.0", - "purescript-posix-types": "^5.0.0", + "purescript-node-streams": "master", + "purescript-posix-types": "master", "purescript-prelude": "master", "purescript-unsafe-coerce": "master" } From 5cf9142a31e38a6af10855129220a251749ad3cd Mon Sep 17 00:00:00 2001 From: sigma-andex Date: Tue, 22 Mar 2022 18:00:31 +0000 Subject: [PATCH 13/17] Add changelog entry --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 06148d7..3f10dc1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ Notable changes to this project are documented in this file. The format is based ## [Unreleased] Breaking changes: +- Update project and deps to PureScript v0.15.0 (#34 by @nwolverson, @JordanMartinez, @sigma-andex) New features: From ee8388f3e40356d1b6995ffdaf99d958083f8722 Mon Sep 17 00:00:00 2001 From: sigma-andex Date: Tue, 22 Mar 2022 18:00:36 +0000 Subject: [PATCH 14/17] Update ci.yml to v2 --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f5a96fe..06ed895 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,9 +16,9 @@ jobs: with: purescript: "unstable" - - uses: actions/setup-node@v1 + - uses: actions/setup-node@v2 with: - node-version: "10" + node-version: "14" - name: Install dependencies run: | From e9e55182a76cb18ae2b31d5f7db9b7210923e262 Mon Sep 17 00:00:00 2001 From: Thomas Honeyman Date: Tue, 22 Mar 2022 14:02:17 -0400 Subject: [PATCH 15/17] Update src/Node/Process.js --- src/Node/Process.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Node/Process.js b/src/Node/Process.js index 0d7bab8..11b9594 100644 --- a/src/Node/Process.js +++ b/src/Node/Process.js @@ -1,4 +1,4 @@ -import process from 'process'; +import process from "process"; export { process }; export function onBeforeExit(callback) { From 479d8c0e664ec1384878fc2e32202606e9a1ecf1 Mon Sep 17 00:00:00 2001 From: sigma-andex Date: Tue, 22 Mar 2022 19:12:03 +0000 Subject: [PATCH 16/17] Update eslintrc --- .eslintrc.json | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index d68166a..1c6afb9 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,12 +1,9 @@ { "parserOptions": { - "ecmaVersion": 5 + "ecmaVersion": 6, + "sourceType": "module" }, "extends": "eslint:recommended", - "env": { - "commonjs": true, - "node": true - }, "rules": { "strict": [2, "global"], "block-scoped-var": 2, From a88408d4cfe8f8592d232e40e859f6cb3250430a Mon Sep 17 00:00:00 2001 From: sigma-andex Date: Tue, 22 Mar 2022 19:19:29 +0000 Subject: [PATCH 17/17] Readd environment section to eslint --- .eslintrc.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.eslintrc.json b/.eslintrc.json index 1c6afb9..7b219e5 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -4,6 +4,9 @@ "sourceType": "module" }, "extends": "eslint:recommended", + "env": { + "node": true + }, "rules": { "strict": [2, "global"], "block-scoped-var": 2,