From faff1f4fbb93d964b80a7f73c6af90639a292c3a Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Fri, 18 Mar 2022 13:57:26 -0500 Subject: [PATCH 01/12] Migrated FFI to ES modules via 'lebab' --- src/Data/Argonaut/Core.js | 29 ++++++++++++++--------------- src/Data/Argonaut/Parser.js | 4 ++-- test/Test/Main.js | 14 +++++++------- 3 files changed, 23 insertions(+), 24 deletions(-) diff --git a/src/Data/Argonaut/Core.js b/src/Data/Argonaut/Core.js index b0579d6..512b1a6 100644 --- a/src/Data/Argonaut/Core.js +++ b/src/Data/Argonaut/Core.js @@ -5,29 +5,28 @@ function id(x) { return x; } -exports.fromBoolean = id; -exports.fromNumber = id; -exports.fromString = id; -exports.fromArray = id; -exports.fromObject = id; +export {id as fromBoolean}; +export {id as fromNumber}; +export {id as fromString}; +export {id as fromArray}; +export {id as fromObject}; +export var jsonNull = null; -exports.jsonNull = null; - -exports.stringify = function (j) { +export function stringify(j) { return JSON.stringify(j); -}; +} -exports.stringifyWithIndent = function (i) { +export function stringifyWithIndent(i) { return function (j) { return JSON.stringify(j, null, i); }; -}; +} function isArray(a) { return Object.prototype.toString.call(a) === "[object Array]"; } -exports._caseJson = function (isNull, isBool, isNum, isStr, isArr, isObj, j) { +export function _caseJson(isNull, isBool, isNum, isStr, isArr, isObj, j) { if (j == null) return isNull(); else if (typeof j === "boolean") return isBool(j); else if (typeof j === "number") return isNum(j); @@ -35,9 +34,9 @@ exports._caseJson = function (isNull, isBool, isNum, isStr, isArr, isObj, j) { else if (Object.prototype.toString.call(j) === "[object Array]") return isArr(j); else return isObj(j); -}; +} -exports._compare = function _compare(EQ, GT, LT, a, b) { +export function _compare(EQ, GT, LT, a, b) { if (a == null) { if (b == null) return EQ; else return LT; @@ -102,4 +101,4 @@ exports._compare = function _compare(EQ, GT, LT, a, b) { return EQ; } } -}; +} diff --git a/src/Data/Argonaut/Parser.js b/src/Data/Argonaut/Parser.js index ab6cf5b..820890c 100644 --- a/src/Data/Argonaut/Parser.js +++ b/src/Data/Argonaut/Parser.js @@ -1,10 +1,10 @@ "use strict"; -exports._jsonParser = function (fail, succ, s) { +export function _jsonParser(fail, succ, s) { try { return succ(JSON.parse(s)); } catch (e) { return fail(e.message); } -}; +} diff --git a/test/Test/Main.js b/test/Test/Main.js index 5e2af72..b416f6a 100644 --- a/test/Test/Main.js +++ b/test/Test/Main.js @@ -1,9 +1,9 @@ "use strict"; -exports.thisIsNull = null; -exports.thisIsBoolean = true; -exports.thisIsNumber = 12; -exports.thisIsString = "foobar"; -exports.thisIsArray = ["foo", "bar"]; -exports.thisIsObject = { foo: "bar" }; -exports.thisIsInvalidString = "\\\ffff"; +export var thisIsNull = null; +export var thisIsBoolean = true; +export var thisIsNumber = 12; +export var thisIsString = "foobar"; +export var thisIsArray = ["foo", "bar"]; +export var thisIsObject = { foo: "bar" }; +export var thisIsInvalidString = "\\\ffff"; From b0e749a69a4417fe3679f8a883cf0c27fbda3c30 Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Fri, 18 Mar 2022 13:57:26 -0500 Subject: [PATCH 02/12] Replaced 'export var' with 'export const' --- src/Data/Argonaut/Core.js | 2 +- test/Test/Main.js | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/Data/Argonaut/Core.js b/src/Data/Argonaut/Core.js index 512b1a6..edb7c5a 100644 --- a/src/Data/Argonaut/Core.js +++ b/src/Data/Argonaut/Core.js @@ -10,7 +10,7 @@ export {id as fromNumber}; export {id as fromString}; export {id as fromArray}; export {id as fromObject}; -export var jsonNull = null; +export const jsonNull = null; export function stringify(j) { return JSON.stringify(j); diff --git a/test/Test/Main.js b/test/Test/Main.js index b416f6a..a24e90c 100644 --- a/test/Test/Main.js +++ b/test/Test/Main.js @@ -1,9 +1,9 @@ "use strict"; -export var thisIsNull = null; -export var thisIsBoolean = true; -export var thisIsNumber = 12; -export var thisIsString = "foobar"; -export var thisIsArray = ["foo", "bar"]; -export var thisIsObject = { foo: "bar" }; -export var thisIsInvalidString = "\\\ffff"; +export const thisIsNull = null; +export const thisIsBoolean = true; +export const thisIsNumber = 12; +export const thisIsString = "foobar"; +export const thisIsArray = ["foo", "bar"]; +export const thisIsObject = { foo: "bar" }; +export const thisIsInvalidString = "\\\ffff"; From 506731a75e16703459b2c173d22fa9422615c431 Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Fri, 18 Mar 2022 13:57:26 -0500 Subject: [PATCH 03/12] Removed '"use strict";' in FFI files --- src/Data/Argonaut/Core.js | 2 -- src/Data/Argonaut/Parser.js | 2 -- test/Test/Main.js | 2 -- 3 files changed, 6 deletions(-) diff --git a/src/Data/Argonaut/Core.js b/src/Data/Argonaut/Core.js index edb7c5a..3101e99 100644 --- a/src/Data/Argonaut/Core.js +++ b/src/Data/Argonaut/Core.js @@ -1,6 +1,4 @@ /* eslint-disable no-eq-null, eqeqeq */ -"use strict"; - function id(x) { return x; } diff --git a/src/Data/Argonaut/Parser.js b/src/Data/Argonaut/Parser.js index 820890c..4d66cac 100644 --- a/src/Data/Argonaut/Parser.js +++ b/src/Data/Argonaut/Parser.js @@ -1,5 +1,3 @@ -"use strict"; - export function _jsonParser(fail, succ, s) { try { return succ(JSON.parse(s)); diff --git a/test/Test/Main.js b/test/Test/Main.js index a24e90c..4e2359a 100644 --- a/test/Test/Main.js +++ b/test/Test/Main.js @@ -1,5 +1,3 @@ -"use strict"; - export const thisIsNull = null; export const thisIsBoolean = true; export const thisIsNumber = 12; From ce061b35955d463e90da2b7e46bf782ce99f49cd Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Fri, 18 Mar 2022 13:57:26 -0500 Subject: [PATCH 04/12] 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 0b3ca67..84da9db 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,6 +15,8 @@ jobs: - name: Set up PureScript toolchain uses: purescript-contrib/setup-purescript@main + with: + purescript: "unstable" - name: Cache PureScript dependencies uses: actions/cache@v2 From eaadcd67f1fa3ae06215df3db1563fd00ac47bc6 Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Fri, 18 Mar 2022 13:57:26 -0500 Subject: [PATCH 05/12] Update Bower dependencies to master or main --- bower.json | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/bower.json b/bower.json index 81d8d24..ba9d57c 100644 --- a/bower.json +++ b/bower.json @@ -27,19 +27,19 @@ "package.json" ], "dependencies": { - "purescript-arrays": "^5.0.0", - "purescript-control": "^4.0.0", - "purescript-either": "^4.0.0", - "purescript-foreign-object": "^2.0.0", - "purescript-functions": "^4.0.0", - "purescript-gen": "^2.0.0", - "purescript-maybe": "^4.0.0", - "purescript-nonempty": "^5.0.0", - "purescript-prelude": "^4.0.0", - "purescript-strings": "^4.0.0", - "purescript-tailrec": "^4.0.0" + "purescript-arrays": "master", + "purescript-control": "master", + "purescript-either": "master", + "purescript-foreign-object": "master", + "purescript-functions": "master", + "purescript-gen": "master", + "purescript-maybe": "master", + "purescript-nonempty": "master", + "purescript-prelude": "master", + "purescript-strings": "master", + "purescript-tailrec": "master" }, "devDependencies": { - "purescript-quickcheck": "^6.0.0" + "purescript-quickcheck": "master" } } From 441ed4fd28a57d0baeb5d938d07c30da65186895 Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Fri, 18 Mar 2022 13:57:26 -0500 Subject: [PATCH 06/12] Update packages.dhall to 'prepare-0.15' package set --- packages.dhall | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages.dhall b/packages.dhall index 6413e8d..582d6d3 100644 --- a/packages.dhall +++ b/packages.dhall @@ -1,4 +1,4 @@ let upstream = - https://github.com/purescript/package-sets/releases/download/psc-0.13.8-20200831/packages.dhall sha256:cdb3529cac2cd8dd780f07c80fd907d5faceae7decfcaa11a12037df68812c83 + https://raw.githubusercontent.com/purescript/package-sets/prepare-0.15/src/packages.dhall in upstream From 2979af23b1eb715b32e23fa1e55a2be2f14d04b0 Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Fri, 18 Mar 2022 14:18:28 -0500 Subject: [PATCH 07/12] Update .eslintrc.json to ES6 --- .eslintrc.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 17f167d..240b092 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,7 +1,7 @@ { - "env": { "browser": true, "commonjs": true }, + "env": { "browser": true }, "extends": "eslint:recommended", - "parserOptions": { "ecmaVersion": 5 }, + "parserOptions": { "ecmaVersion": 6, "sourceType": "module" }, "rules": { "block-scoped-var": "error", "consistent-return": "error", From 2497d235d84cb44d18514b7eb3cec6b2057b1d4c Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Fri, 18 Mar 2022 14:19:02 -0500 Subject: [PATCH 08/12] Fix spago transitive errors --- spago.dhall | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spago.dhall b/spago.dhall index 1797f0f..5c494b2 100644 --- a/spago.dhall +++ b/spago.dhall @@ -10,11 +10,13 @@ , "gen" , "maybe" , "nonempty" + , "partial" , "prelude" , "psci-support" , "quickcheck" , "strings" , "tailrec" + , "tuples" ] , packages = ./packages.dhall , sources = [ "src/**/*.purs", "test/**/*.purs" ] From 106d3f69496e02db5ce8d88d1e151fcd061dc685 Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Fri, 18 Mar 2022 14:19:12 -0500 Subject: [PATCH 09/12] Remove unused deps --- spago.dhall | 1 - 1 file changed, 1 deletion(-) diff --git a/spago.dhall b/spago.dhall index 5c494b2..a487d36 100644 --- a/spago.dhall +++ b/spago.dhall @@ -12,7 +12,6 @@ , "nonempty" , "partial" , "prelude" - , "psci-support" , "quickcheck" , "strings" , "tailrec" From 37d845626035c7f01a00014a016725bcf0e6c021 Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Mon, 21 Mar 2022 19:17:53 -0500 Subject: [PATCH 10/12] Add pulp and bower to CI --- .github/workflows/ci.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4989d99..266172a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -55,3 +55,10 @@ jobs: - name: Check formatting run: purs-tidy check src test + + - name: Verify Bower & Pulp + run: | + npm install bower pulp@16.0.0-0 + npx bower install + npx pulp build -- --censor-lib --strict + npx pulp test From a7b038d7abc5f730a901d518fa82505a49530206 Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Mon, 21 Mar 2022 19:17:59 -0500 Subject: [PATCH 11/12] Comment out spago test (temporarily) --- .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 266172a..a37ef4a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -50,8 +50,8 @@ jobs: - name: Build the project run: npm run build - - name: Run tests - run: npm run test +# - name: Run tests +# run: npm run test - name: Check formatting run: purs-tidy check src test From c9efeaeaee2ba83e594c27746c9169716db0fa7f Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Mon, 21 Mar 2022 19:20:21 -0500 Subject: [PATCH 12/12] Add changelog entry --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1498bbd..5f32068 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: +- Migrate FFI to ES modules (#57 by @JordanMartinez) New features: