Skip to content

Commit a1ce7db

Browse files
authored
feat: add esm support (contra#65)
1 parent 1387738 commit a1ce7db

File tree

8 files changed

+69
-7
lines changed

8 files changed

+69
-7
lines changed

.changeset/pink-cars-decide.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"graphql-helix": patch
3+
---
4+
5+
add esm support

.eslintignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
packages/core/lib/render-graphiql.ts
2-
packages/deno/
2+
packages/deno/
3+
dist-esm

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
dist
2+
dist-esm
23
node_modules
34
.*
45
!.changeset

.prettierignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
coverage
22
deno_dist
33
dist
4+
dist-esm
45
node_modules
56
package-lock.json
67
css

packages/core/package.json

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
"scripts": {
3131
"build": "yarn build-render-graphiql && yarn build-deno && yarn run build-node",
3232
"build-deno": "denoify && del-cli ../deno --force && move-file deno_dist ../deno && cpy ../../README.md ../deno",
33-
"build-node": "del-cli dist && tsc",
33+
"build-node": "del-cli dist && del-cli dist-esm && tsc && tsc -b tsconfig.esm.json && node scripts/esm-post-process.js",
3434
"build-render-graphiql": "cd ../graphiql && yarn run build",
3535
"test": "jest test/integration.test.ts"
3636
},
@@ -44,12 +44,14 @@
4444
"denoify": "0.9.1",
4545
"eventsource": "1.1.0",
4646
"get-port": "5.1.1",
47+
"glob": "7.2.0",
4748
"got": "11.8.2",
4849
"graphql": "15.4.0-experimental-stream-defer.1",
4950
"husky": "7.0.2",
5051
"jest": "27.2.1",
5152
"lint-staged": "11.1.2",
5253
"move-file-cli": "3.0.0",
54+
"replacestream": "4.0.3",
5355
"ts-jest": "27.0.5",
5456
"ts-node": "10.2.1",
5557
"typescript": "4.4.3"
@@ -62,13 +64,16 @@
6264
},
6365
"exports": {
6466
".": {
65-
"require": "./dist/index.js"
67+
"require": "./dist/index.js",
68+
"import": "./dist-esm/index.mjs"
6669
},
6770
"./*": {
68-
"require": "./dist/*.js"
71+
"require": "./dist/*.js",
72+
"import": "./dist-esm/*.mjs"
6973
},
7074
"./send-result/node-http": {
71-
"require": "./dist/send-result/node-http.js"
75+
"require": "./dist/send-result/node-http.js",
76+
"import": "./dist-esm/send-result/node-http.mjs"
7277
}
7378
}
7479
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
"use strict";
2+
3+
const fs = require("fs");
4+
const path = require("path");
5+
const glob = require("glob");
6+
const replaceStream = require("replacestream");
7+
8+
glob("dist-esm/**/*.js", (_, filePaths) => {
9+
for (const filePath of filePaths) {
10+
const parts = filePath.split(".");
11+
parts.pop();
12+
const mjsFileName = parts.join(".") + ".mjs";
13+
fs.createReadStream(path.join(__dirname, "..", filePath))
14+
.pipe(replaceStream(/from '(\.?\.\/[^']*)'/g, "from '$1.mjs'"))
15+
.pipe(fs.createWriteStream(path.join(__dirname, "..", mjsFileName)))
16+
.on("close", () => {
17+
fs.unlinkSync(filePath);
18+
});
19+
}
20+
});

packages/core/tsconfig.esm.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"extends": "./tsconfig.json",
3+
"compilerOptions": {
4+
"module": "es2015",
5+
"outDir": "./dist-esm",
6+
"declaration": true
7+
}
8+
}

yarn.lock

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3814,7 +3814,7 @@ escape-html@^1.0.3, escape-html@~1.0.3:
38143814
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
38153815
integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
38163816

3817-
escape-string-regexp@^1.0.5:
3817+
escape-string-regexp@^1.0.3, escape-string-regexp@^1.0.5:
38183818
version "1.0.5"
38193819
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
38203820
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
@@ -4670,6 +4670,18 @@ glob-to-regexp@^0.4.1:
46704670
resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e"
46714671
integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
46724672

4673+
4674+
version "7.2.0"
4675+
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
4676+
integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
4677+
dependencies:
4678+
fs.realpath "^1.0.0"
4679+
inflight "^1.0.4"
4680+
inherits "2"
4681+
minimatch "^3.0.4"
4682+
once "^1.3.0"
4683+
path-is-absolute "^1.0.0"
4684+
46734685
glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
46744686
version "7.1.6"
46754687
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
@@ -7020,7 +7032,7 @@ nwsapi@^2.2.0:
70207032
resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7"
70217033
integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==
70227034

7023-
object-assign@^4.1.1:
7035+
object-assign@^4.0.1, object-assign@^4.1.1:
70247036
version "4.1.1"
70257037
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
70267038
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
@@ -7945,6 +7957,15 @@ repeat-string@^1.6.1:
79457957
resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
79467958
integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
79477959

7960+
7961+
version "4.0.3"
7962+
resolved "https://registry.yarnpkg.com/replacestream/-/replacestream-4.0.3.tgz#3ee5798092be364b1cdb1484308492cb3dff2f36"
7963+
integrity sha512-AC0FiLS352pBBiZhd4VXB1Ab/lh0lEgpP+GGvZqbQh8a5cmXVoTe5EX/YeTFArnp4SRGTHh1qCHu9lGs1qG8sA==
7964+
dependencies:
7965+
escape-string-regexp "^1.0.3"
7966+
object-assign "^4.0.1"
7967+
readable-stream "^2.0.2"
7968+
79487969
require-directory@^2.1.1:
79497970
version "2.1.1"
79507971
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"

0 commit comments

Comments
 (0)