Skip to content

Commit 80b91b4

Browse files
Migrate FFI to ES modules (#287)
* Convert foreign modules to try bundling with esbuild * Update .eslintrc.json to ES6 * Migrated FFI to ES modules via 'lebab' * Fix eslint issues * Update CI purs to unstable * Get rid of extra space from 'use strict' line * Add changelog entry * Update pulp to 16.0.0-0 * Update psa to 0.8.2 Co-authored-by: Cyril Sobierajewicz <[email protected]>
1 parent ac720e4 commit 80b91b4

22 files changed

+81
-116
lines changed

.eslintrc.json

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
{
22
"parserOptions": {
3-
"ecmaVersion": 5
3+
"ecmaVersion": 6,
4+
"sourceType": "module"
45
},
56
"extends": "eslint:recommended",
6-
"env": {
7-
"commonjs": true
8-
},
97
"rules": {
108
"strict": [2, "global"],
119
"block-scoped-var": 2,

.github/workflows/ci.yml

+2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ jobs:
1212
- uses: actions/checkout@v2
1313

1414
- uses: purescript-contrib/setup-purescript@main
15+
with:
16+
purescript: "unstable"
1517

1618
- uses: actions/setup-node@v1
1719
with:

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ Notable changes to this project are documented in this file. The format is based
55
## [Unreleased]
66

77
Breaking changes:
8+
- Migrated FFI to ES Modules (#287 by @kl0tl and @JordanMartinez)
89

910
New features:
1011

package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
},
88
"devDependencies": {
99
"eslint": "^7.15.0",
10-
"purescript-psa": "^0.8.0",
11-
"pulp": "^15.0.0",
10+
"purescript-psa": "^0.8.2",
11+
"pulp": "16.0.0-0",
1212
"rimraf": "^3.0.2"
1313
}
1414
}

src/Control/Apply.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
"use strict";
2-
3-
exports.arrayApply = function (fs) {
1+
export const arrayApply = function (fs) {
42
return function (xs) {
53
var l = fs.length;
64
var k = xs.length;

src/Control/Bind.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
"use strict";
2-
3-
exports.arrayBind = function (arr) {
1+
export const arrayBind = function (arr) {
42
return function (f) {
53
var result = [];
64
for (var i = 0, l = arr.length; i < l; i++) {

src/Data/Bounded.js

+6-8
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
1-
"use strict";
1+
export const topInt = 2147483647;
2+
export const bottomInt = -2147483648;
23

3-
exports.topInt = 2147483647;
4-
exports.bottomInt = -2147483648;
4+
export const topChar = String.fromCharCode(65535);
5+
export const bottomChar = String.fromCharCode(0);
56

6-
exports.topChar = String.fromCharCode(65535);
7-
exports.bottomChar = String.fromCharCode(0);
8-
9-
exports.topNumber = Number.POSITIVE_INFINITY;
10-
exports.bottomNumber = Number.NEGATIVE_INFINITY;
7+
export const topNumber = Number.POSITIVE_INFINITY;
8+
export const bottomNumber = Number.NEGATIVE_INFINITY;

src/Data/Eq.js

+6-8
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,16 @@
1-
"use strict";
2-
31
var refEq = function (r1) {
42
return function (r2) {
53
return r1 === r2;
64
};
75
};
86

9-
exports.eqBooleanImpl = refEq;
10-
exports.eqIntImpl = refEq;
11-
exports.eqNumberImpl = refEq;
12-
exports.eqCharImpl = refEq;
13-
exports.eqStringImpl = refEq;
7+
export const eqBooleanImpl = refEq;
8+
export const eqIntImpl = refEq;
9+
export const eqNumberImpl = refEq;
10+
export const eqCharImpl = refEq;
11+
export const eqStringImpl = refEq;
1412

15-
exports.eqArrayImpl = function (f) {
13+
export const eqArrayImpl = function (f) {
1614
return function (xs) {
1715
return function (ys) {
1816
if (xs.length !== ys.length) return false;

src/Data/EuclideanRing.js

+4-6
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,25 @@
1-
"use strict";
2-
3-
exports.intDegree = function (x) {
1+
export const intDegree = function (x) {
42
return Math.min(Math.abs(x), 2147483647);
53
};
64

75
// See the Euclidean definition in
86
// https://en.m.wikipedia.org/wiki/Modulo_operation.
9-
exports.intDiv = function (x) {
7+
export const intDiv = function (x) {
108
return function (y) {
119
if (y === 0) return 0;
1210
return y > 0 ? Math.floor(x / y) : -Math.floor(x / -y);
1311
};
1412
};
1513

16-
exports.intMod = function (x) {
14+
export const intMod = function (x) {
1715
return function (y) {
1816
if (y === 0) return 0;
1917
var yy = Math.abs(y);
2018
return ((x % yy) + yy) % yy;
2119
};
2220
};
2321

24-
exports.numDiv = function (n1) {
22+
export const numDiv = function (n1) {
2523
return function (n2) {
2624
return n1 / n2;
2725
};

src/Data/Functor.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
"use strict";
2-
3-
exports.arrayMap = function (f) {
1+
export const arrayMap = function (f) {
42
return function (arr) {
53
var l = arr.length;
64
var result = new Array(l);

src/Data/HeytingAlgebra.js

+3-5
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
1-
"use strict";
2-
3-
exports.boolConj = function (b1) {
1+
export const boolConj = function (b1) {
42
return function (b2) {
53
return b1 && b2;
64
};
75
};
86

9-
exports.boolDisj = function (b1) {
7+
export const boolDisj = function (b1) {
108
return function (b2) {
119
return b1 || b2;
1210
};
1311
};
1412

15-
exports.boolNot = function (b) {
13+
export const boolNot = function (b) {
1614
return !b;
1715
};

src/Data/Ord.js

+6-8
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
"use strict";
2-
31
var unsafeCompareImpl = function (lt) {
42
return function (eq) {
53
return function (gt) {
@@ -12,13 +10,13 @@ var unsafeCompareImpl = function (lt) {
1210
};
1311
};
1412

15-
exports.ordBooleanImpl = unsafeCompareImpl;
16-
exports.ordIntImpl = unsafeCompareImpl;
17-
exports.ordNumberImpl = unsafeCompareImpl;
18-
exports.ordStringImpl = unsafeCompareImpl;
19-
exports.ordCharImpl = unsafeCompareImpl;
13+
export const ordBooleanImpl = unsafeCompareImpl;
14+
export const ordIntImpl = unsafeCompareImpl;
15+
export const ordNumberImpl = unsafeCompareImpl;
16+
export const ordStringImpl = unsafeCompareImpl;
17+
export const ordCharImpl = unsafeCompareImpl;
2018

21-
exports.ordArrayImpl = function (f) {
19+
export const ordArrayImpl = function (f) {
2220
return function (xs) {
2321
return function (ys) {
2422
var i = 0;

src/Data/Ring.js

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
1-
"use strict";
2-
3-
exports.intSub = function (x) {
1+
export const intSub = function (x) {
42
return function (y) {
53
/* jshint bitwise: false */
64
return x - y | 0;
75
};
86
};
97

10-
exports.numSub = function (n1) {
8+
export const numSub = function (n1) {
119
return function (n2) {
1210
return n1 - n2;
1311
};

src/Data/Semigroup.js

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
1-
"use strict";
2-
3-
exports.concatString = function (s1) {
1+
export const concatString = function (s1) {
42
return function (s2) {
53
return s1 + s2;
64
};
75
};
86

9-
exports.concatArray = function (xs) {
7+
export const concatArray = function (xs) {
108
return function (ys) {
119
if (xs.length === 0) return ys;
1210
if (ys.length === 0) return xs;

src/Data/Semiring.js

+4-6
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,24 @@
1-
"use strict";
2-
3-
exports.intAdd = function (x) {
1+
export const intAdd = function (x) {
42
return function (y) {
53
/* jshint bitwise: false */
64
return x + y | 0;
75
};
86
};
97

10-
exports.intMul = function (x) {
8+
export const intMul = function (x) {
119
return function (y) {
1210
/* jshint bitwise: false */
1311
return x * y | 0;
1412
};
1513
};
1614

17-
exports.numAdd = function (n1) {
15+
export const numAdd = function (n1) {
1816
return function (n2) {
1917
return n1 + n2;
2018
};
2119
};
2220

23-
exports.numMul = function (n1) {
21+
export const numMul = function (n1) {
2422
return function (n2) {
2523
return n1 * n2;
2624
};

src/Data/Show.js

+7-9
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
1-
"use strict";
2-
3-
exports.showIntImpl = function (n) {
1+
export const showIntImpl = function (n) {
42
return n.toString();
53
};
64

7-
exports.showNumberImpl = function (n) {
5+
export const showNumberImpl = function (n) {
86
var str = n.toString();
97
return isNaN(str + ".0") ? str : str + ".0";
108
};
119

12-
exports.showCharImpl = function (c) {
10+
export const showCharImpl = function (c) {
1311
var code = c.charCodeAt(0);
1412
if (code < 0x20 || code === 0x7F) {
1513
switch (c) {
@@ -26,7 +24,7 @@ exports.showCharImpl = function (c) {
2624
return c === "'" || c === "\\" ? "'\\" + c + "'" : "'" + c + "'";
2725
};
2826

29-
exports.showStringImpl = function (s) {
27+
export const showStringImpl = function (s) {
3028
var l = s.length;
3129
return "\"" + s.replace(
3230
/[\0-\x1F\x7F"\\]/g, // eslint-disable-line no-control-regex
@@ -50,7 +48,7 @@ exports.showStringImpl = function (s) {
5048
) + "\"";
5149
};
5250

53-
exports.showArrayImpl = function (f) {
51+
export const showArrayImpl = function (f) {
5452
return function (xs) {
5553
var ss = [];
5654
for (var i = 0, l = xs.length; i < l; i++) {
@@ -60,13 +58,13 @@ exports.showArrayImpl = function (f) {
6058
};
6159
};
6260

63-
exports.cons = function (head) {
61+
export const cons = function (head) {
6462
return function (tail) {
6563
return [head].concat(tail);
6664
};
6765
};
6866

69-
exports.join = function (separator) {
67+
export const join = function (separator) {
7068
return function (xs) {
7169
return xs.join(separator);
7270
};

src/Data/Show/Generic.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
"use strict";
2-
3-
exports.intercalate = function (separator) {
1+
export const intercalate = function (separator) {
42
return function (xs) {
53
var len = xs.length;
64
if (len === 0) return "";

src/Data/Symbol.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
"use strict";
2-
31
// module Data.Symbol
42

5-
exports.unsafeCoerce = function (arg) {
3+
export const unsafeCoerce = function (arg) {
64
return arg;
75
};
86

src/Data/Unit.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1 @@
1-
"use strict";
2-
3-
exports.unit = undefined;
1+
export const unit = undefined;

src/Record/Unsafe.js

+4-6
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,16 @@
1-
"use strict";
2-
3-
exports.unsafeHas = function (label) {
1+
export const unsafeHas = function (label) {
42
return function (rec) {
53
return {}.hasOwnProperty.call(rec, label);
64
};
75
};
86

9-
exports.unsafeGet = function (label) {
7+
export const unsafeGet = function (label) {
108
return function (rec) {
119
return rec[label];
1210
};
1311
};
1412

15-
exports.unsafeSet = function (label) {
13+
export const unsafeSet = function (label) {
1614
return function (value) {
1715
return function (rec) {
1816
var copy = {};
@@ -27,7 +25,7 @@ exports.unsafeSet = function (label) {
2725
};
2826
};
2927

30-
exports.unsafeDelete = function (label) {
28+
export const unsafeDelete = function (label) {
3129
return function (rec) {
3230
var copy = {};
3331
for (var key in rec) {

0 commit comments

Comments
 (0)