From 4c86f69a3e88e35e0441e722a89afa3bf7225660 Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Tue, 22 Mar 2022 15:05:01 -0500 Subject: [PATCH 01/13] Migrated FFI to ES modules via 'lebab' --- src/Web/Fetch.js | 4 ++-- src/Web/Fetch/AbortController.js | 12 +++++----- src/Web/Fetch/Headers.js | 20 ++++++++-------- src/Web/Fetch/Request.js | 4 ++-- src/Web/Fetch/RequestBody.js | 10 ++++---- src/Web/Fetch/Response.js | 40 ++++++++++++++++---------------- 6 files changed, 45 insertions(+), 45 deletions(-) diff --git a/src/Web/Fetch.js b/src/Web/Fetch.js index 3fc8e95..ed87591 100644 --- a/src/Web/Fetch.js +++ b/src/Web/Fetch.js @@ -1,5 +1,5 @@ "use strict"; -exports._fetch = function(a, b) { +export function _fetch(a, b) { return fetch(a, b); -}; +} diff --git a/src/Web/Fetch/AbortController.js b/src/Web/Fetch/AbortController.js index 2d2b61a..afa2587 100644 --- a/src/Web/Fetch/AbortController.js +++ b/src/Web/Fetch/AbortController.js @@ -1,15 +1,15 @@ "use strict"; -exports.new = function() { +export function new() { return new AbortController(); -}; +} -exports.abort = function(controller) { +export function abort(controller) { return function() { return controller.abort(); }; -}; +} -exports.signal = function(controller) { +export function signal(controller) { return controller.signal; -}; +} diff --git a/src/Web/Fetch/Headers.js b/src/Web/Fetch/Headers.js index 3a54d9a..43feca3 100644 --- a/src/Web/Fetch/Headers.js +++ b/src/Web/Fetch/Headers.js @@ -1,23 +1,23 @@ "use strict"; -exports.unsafeNew = function() { +export function unsafeNew() { return new Headers(); -}; +} -exports.unsafeAppend = function(key, value, headers) { +export function unsafeAppend(key, value, headers) { return headers.append(key, value); -}; +} -exports.unsafeFromRecord = function(r) { +export function unsafeFromRecord(r) { return new Headers(r); -}; +} -exports._toArray = function(tuple, headers) { +export function _toArray(tuple, headers) { return Array.from(headers.entries(), function (pair) { return tuple(pair[0])(pair[1]); }); -}; +} -exports.fromObject = function(obj) { +export function fromObject(obj) { return new Headers(obj); -}; +} diff --git a/src/Web/Fetch/Request.js b/src/Web/Fetch/Request.js index 1c37d69..6f1f68b 100644 --- a/src/Web/Fetch/Request.js +++ b/src/Web/Fetch/Request.js @@ -1,10 +1,10 @@ "use strict"; -exports._unsafeNew = function(url, options) { +export function _unsafeNew(url, options) { try { return new Request(url, options); } catch (e) { console.error(e); throw e; } -}; +} diff --git a/src/Web/Fetch/RequestBody.js b/src/Web/Fetch/RequestBody.js index 6c436b4..53f1da2 100644 --- a/src/Web/Fetch/RequestBody.js +++ b/src/Web/Fetch/RequestBody.js @@ -1,7 +1,7 @@ "use strict"; -exports.fromArrayBuffer = function(a) { return a }; -exports.fromArrayView = function(a) { return a }; -exports.fromString = function(a) { return a }; -exports.fromReadableStream = function(a) { return a }; -exports.empty = null; +export function fromArrayBuffer(a) { return a } +export function fromArrayView(a) { return a } +export function fromString(a) { return a } +export function fromReadableStream(a) { return a } +export var empty = null; diff --git a/src/Web/Fetch/Response.js b/src/Web/Fetch/Response.js index 121883a..3ad474d 100644 --- a/src/Web/Fetch/Response.js +++ b/src/Web/Fetch/Response.js @@ -1,49 +1,49 @@ "use strict"; -exports.headers = function (resp) { +export function headers(resp) { return resp.headers; -}; +} -exports.ok = function (resp) { +export function ok(resp) { return resp.ok; -}; +} -exports.redirected = function (resp) { +export function redirected(resp) { return resp.redirected; -}; +} -exports.status = function (resp) { +export function status(resp) { return resp.status; -}; +} -exports.statusText = function (resp) { +export function statusText(resp) { return resp.statusText; -}; +} -exports.url = function (resp) { +export function url(resp) { return resp.url; -}; +} -exports.body = function (resp) { +export function body(resp) { return function() { return resp.body; }; -}; +} -exports.arrayBuffer = function (resp) { +export function arrayBuffer(resp) { return function() { return resp.arrayBuffer(); }; -}; +} -exports.blob = function (resp) { +export function blob(resp) { return function() { return resp.blob(); }; -}; +} -exports.text = function (resp) { +export function text(resp) { return function() { return resp.text(); }; -}; +} From 55b1018a3b3b0d578a10522df005270d2f017d2a Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Tue, 22 Mar 2022 15:05:01 -0500 Subject: [PATCH 02/13] Replaced 'export var' with 'export const' --- src/Web/Fetch/RequestBody.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Web/Fetch/RequestBody.js b/src/Web/Fetch/RequestBody.js index 53f1da2..8edeca8 100644 --- a/src/Web/Fetch/RequestBody.js +++ b/src/Web/Fetch/RequestBody.js @@ -4,4 +4,4 @@ export function fromArrayBuffer(a) { return a } export function fromArrayView(a) { return a } export function fromString(a) { return a } export function fromReadableStream(a) { return a } -export var empty = null; +export const empty = null; From cb838389cbb55aec89179d7afb7e590b782b9efe Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Tue, 22 Mar 2022 15:05:02 -0500 Subject: [PATCH 03/13] Removed '"use strict";' in FFI files --- src/Web/Fetch.js | 2 -- src/Web/Fetch/AbortController.js | 2 -- src/Web/Fetch/Headers.js | 2 -- src/Web/Fetch/Request.js | 2 -- src/Web/Fetch/RequestBody.js | 2 -- src/Web/Fetch/Response.js | 2 -- 6 files changed, 12 deletions(-) diff --git a/src/Web/Fetch.js b/src/Web/Fetch.js index ed87591..6168ebe 100644 --- a/src/Web/Fetch.js +++ b/src/Web/Fetch.js @@ -1,5 +1,3 @@ -"use strict"; - export function _fetch(a, b) { return fetch(a, b); } diff --git a/src/Web/Fetch/AbortController.js b/src/Web/Fetch/AbortController.js index afa2587..6202750 100644 --- a/src/Web/Fetch/AbortController.js +++ b/src/Web/Fetch/AbortController.js @@ -1,5 +1,3 @@ -"use strict"; - export function new() { return new AbortController(); } diff --git a/src/Web/Fetch/Headers.js b/src/Web/Fetch/Headers.js index 43feca3..dd8398d 100644 --- a/src/Web/Fetch/Headers.js +++ b/src/Web/Fetch/Headers.js @@ -1,5 +1,3 @@ -"use strict"; - export function unsafeNew() { return new Headers(); } diff --git a/src/Web/Fetch/Request.js b/src/Web/Fetch/Request.js index 6f1f68b..0f30528 100644 --- a/src/Web/Fetch/Request.js +++ b/src/Web/Fetch/Request.js @@ -1,5 +1,3 @@ -"use strict"; - export function _unsafeNew(url, options) { try { return new Request(url, options); diff --git a/src/Web/Fetch/RequestBody.js b/src/Web/Fetch/RequestBody.js index 8edeca8..6727e56 100644 --- a/src/Web/Fetch/RequestBody.js +++ b/src/Web/Fetch/RequestBody.js @@ -1,5 +1,3 @@ -"use strict"; - export function fromArrayBuffer(a) { return a } export function fromArrayView(a) { return a } export function fromString(a) { return a } diff --git a/src/Web/Fetch/Response.js b/src/Web/Fetch/Response.js index 3ad474d..7c2db67 100644 --- a/src/Web/Fetch/Response.js +++ b/src/Web/Fetch/Response.js @@ -1,5 +1,3 @@ -"use strict"; - export function headers(resp) { return resp.headers; } From 412b0266ca7b508e0dc1b9a5b6a11e407747b7c5 Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Tue, 22 Mar 2022 15:05:02 -0500 Subject: [PATCH 04/13] 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 b764fdd505f7a8373b0d0c8b5e4657e22b3d49ec Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Tue, 22 Mar 2022 15:05:02 -0500 Subject: [PATCH 05/13] Update Bower dependencies to master or main --- bower.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/bower.json b/bower.json index c7bb0e5..cd38067 100644 --- a/bower.json +++ b/bower.json @@ -15,14 +15,14 @@ "package.json" ], "dependencies": { - "purescript-effect": "^3.0.0", - "purescript-foreign-object": "^3.0.0", - "purescript-http-methods": "^5.0.0", - "purescript-prelude": "^5.0.0", - "purescript-record": "^3.0.0", - "purescript-typelevel-prelude": "^6.0.0", - "purescript-web-file": "^3.0.0", - "purescript-web-promise": "https://github.com/purescript-web/purescript-web-promise.git#2.0.0", - "purescript-web-streams": "https://github.com/purescript-web/purescript-web-streams.git#2.0.0" + "purescript-effect": "master", + "purescript-foreign-object": "master", + "purescript-http-methods": "main", + "purescript-prelude": "master", + "purescript-record": "master", + "purescript-typelevel-prelude": "master", + "purescript-web-file": "master", + "purescript-web-promise": "master", + "purescript-web-streams": "master" } } From 1df212d39c9448e90093ae584616d865b2a7bebd Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Tue, 22 Mar 2022 15:05:02 -0500 Subject: [PATCH 06/13] 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 f07d174294cc45fd91531009cd7b0ebb3271c16f Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Tue, 22 Mar 2022 15:05:02 -0500 Subject: [PATCH 07/13] 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 9e1182b79dedba4d6fe2abe69294307ed0f89e8a Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Tue, 22 Mar 2022 17:40:13 -0500 Subject: [PATCH 08/13] Update Bower dependencies to master or main --- bower.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bower.json b/bower.json index cd38067..a2e1d34 100644 --- a/bower.json +++ b/bower.json @@ -22,7 +22,7 @@ "purescript-record": "master", "purescript-typelevel-prelude": "master", "purescript-web-file": "master", - "purescript-web-promise": "master", + "purescript-web-promise": "https://github.com/purescript-web/purescript-web-promise.git#master", "purescript-web-streams": "master" } } From 0d559b2f9bddb94a4b59702b194762f8a96444fb Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Tue, 22 Mar 2022 17:42:12 -0500 Subject: [PATCH 09/13] Update Bower dependencies to master or main --- bower.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bower.json b/bower.json index a2e1d34..25dc6b5 100644 --- a/bower.json +++ b/bower.json @@ -23,6 +23,6 @@ "purescript-typelevel-prelude": "master", "purescript-web-file": "master", "purescript-web-promise": "https://github.com/purescript-web/purescript-web-promise.git#master", - "purescript-web-streams": "master" + "purescript-web-streams": "https://github.com/purescript-web/purescript-web-streams.git#master" } } From e1b231cb86bbd5ad0a0acf5267ee9bb99c46f1bf Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Tue, 22 Mar 2022 17:44:18 -0500 Subject: [PATCH 10/13] Update eslint config to es6 --- .eslintrc.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 2322c4d..3c4498a 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,10 +1,10 @@ { "parserOptions": { - "ecmaVersion": 5 + "ecmaVersion": 6, + "sourceType": "module" }, "extends": "eslint:recommended", "env": { - "commonjs": true, "browser": true }, "rules": { From e4928fd974b1ef70197634581bff5d7e66bd0286 Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Tue, 22 Mar 2022 17:44:22 -0500 Subject: [PATCH 11/13] Fix FFI export --- src/Web/Fetch/AbortController.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Web/Fetch/AbortController.js b/src/Web/Fetch/AbortController.js index 6202750..e9bf3d5 100644 --- a/src/Web/Fetch/AbortController.js +++ b/src/Web/Fetch/AbortController.js @@ -1,6 +1,7 @@ -export function new() { +const newImpl = function () { return new AbortController(); -} +}; +export { newImpl as new }; export function abort(controller) { return function() { From 7a9378f5adcd128e6d14c134603ed443e76131f9 Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Tue, 22 Mar 2022 17:44:38 -0500 Subject: [PATCH 12/13] Update CI to use node 14 --- .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 21ac82d177a13e795bfb7fb32fae315be69f09e8 Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Tue, 22 Mar 2022 17:45:56 -0500 Subject: [PATCH 13/13] Added changelog entry --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e2236c7..070f0d0 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 (#8 by @JordanMartinez) New features: