Skip to content

Commit 6734a77

Browse files
committed
fix: use sucrase to transform config files
1 parent f548236 commit 6734a77

File tree

3 files changed

+101
-53
lines changed

3 files changed

+101
-53
lines changed

package.json

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
".": "./src/index.ts",
2626
"./package.json": "./package.json"
2727
},
28+
"// Disable browser builds": "",
2829
"browser": false,
2930
"scripts": {
3031
"build": "distilt",
@@ -87,7 +88,7 @@
8788
},
8889
"sideEffects": false,
8990
"peerDependencies": {
90-
"twind": ">=0.16.8 <2"
91+
"twind": ">=0.16.9 <2"
9192
},
9293
"peerDependenciesMeta": {
9394
"twind": {
@@ -96,10 +97,10 @@
9697
},
9798
"dependencies": {
9899
"cssbeautify": "^0.3.1",
99-
"esbuild": "^0.9.3",
100100
"fast-json-stable-stringify": "^2.1.0",
101101
"match-sorter": "^6.3.0",
102-
"twind": "^0.16.8",
102+
"sucrase": "^3.17.1",
103+
"twind": "^0.16.9",
103104
"typescript": "^4.1.0",
104105
"typescript-template-language-service-decorator": "^2.2.0",
105106
"vscode-languageserver-types": "^3.13.0"
@@ -109,7 +110,7 @@
109110
"@types/node": "^14.14.34",
110111
"@typescript-eslint/eslint-plugin": "^4.9.1",
111112
"@typescript-eslint/parser": "^4.9.1",
112-
"distilt": "^0.10.3",
113+
"distilt": "^0.10.4",
113114
"esbuild-register": "^2.3.0",
114115
"eslint": "^7.15.0",
115116
"eslint-config-prettier": "^7.0.0",

src/load.ts

Lines changed: 15 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@ import type * as ts from 'typescript/lib/tsserverlibrary'
22

33
import * as Path from 'path'
44
import Module from 'module'
5-
6-
import { buildSync } from 'esbuild'
5+
import { fileURLToPath } from 'url'
76

87
import type { Configuration } from 'twind'
98

@@ -21,58 +20,34 @@ const TAILWIND_CONFIG_FILES = [
2120
'tailwind.config.cjs',
2221
]
2322

24-
// TODO use typescript to check files
25-
// this.typescript.server.toNormalizedPath(fileName)
26-
// info.project.containsFile()
2723
export const findConfig = (project: ts.server.Project, cwd = process.cwd()): string | undefined => {
2824
const locatePath = (files: string[]) =>
2925
files.map((file) => Path.resolve(cwd, file)).find((file) => project.fileExists(file))
3026

3127
return (
28+
locatePath(TWIND_CONFIG_FILES) ||
3229
locatePath(TWIND_CONFIG_FILES.map((file) => Path.join('config', file))) ||
3330
locatePath(TWIND_CONFIG_FILES.map((file) => Path.join('src', file))) ||
3431
locatePath(TWIND_CONFIG_FILES.map((file) => Path.join('public', file))) ||
35-
locatePath(TWIND_CONFIG_FILES) ||
3632
locatePath(TAILWIND_CONFIG_FILES)
3733
)
3834
}
3935

4036
export const loadFile = <T>(file: string, cwd = process.cwd()): T => {
41-
const result = buildSync({
42-
bundle: true,
43-
entryPoints: [file],
44-
format: 'cjs',
45-
platform: 'node',
46-
target: 'es2018', // `node${process.versions.node}`,
47-
external: Module.builtinModules,
48-
// Follow WMR rules
49-
mainFields: ['esmodules', 'modern', 'module', 'jsnext:main', 'main'],
50-
conditions: ['development', 'esmodules', 'module', 'node', 'import', 'require', 'default'],
51-
sourcemap: 'inline',
52-
minify: false,
53-
splitting: false,
54-
write: false,
55-
absWorkingDir: cwd,
56-
})
57-
58-
const module = { exports: {} as { default?: Configuration } & Configuration }
59-
60-
new Function(
61-
'exports',
62-
'require',
63-
'module',
64-
'__filename',
65-
'__dirname',
66-
result.outputFiles[0].text,
67-
)(
68-
module.exports,
69-
Module.createRequire?.(file) || Module.createRequireFromPath(file),
70-
module,
71-
file,
72-
Path.dirname(file),
73-
)
37+
try {
38+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
39+
// @ts-ignore
40+
const from = fileURLToPath(import.meta.url)
7441

75-
return module.exports as T
42+
const require = Module.createRequire?.(from) || Module.createRequireFromPath(from)
43+
44+
require('sucrase/register')
45+
46+
// eslint-disable-next-line @typescript-eslint/no-var-requires
47+
return require(Path.resolve(cwd, file)) as T
48+
} catch {
49+
return {} as T
50+
}
7651
}
7752

7853
export const loadConfig = (configFile: string, cwd = process.cwd()): Configuration => {

yarn.lock

Lines changed: 81 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,11 @@ ansi-styles@^4.1.0:
208208
dependencies:
209209
color-convert "^2.0.1"
210210

211+
any-promise@^1.0.0:
212+
version "1.3.0"
213+
resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
214+
integrity sha1-q8av7tzqUugJzcA3au0845Y10X8=
215+
211216
argparse@^1.0.7:
212217
version "1.0.10"
213218
resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
@@ -291,6 +296,11 @@ color-name@~1.1.4:
291296
resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
292297
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
293298

299+
commander@^4.0.0:
300+
version "4.1.1"
301+
resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068"
302+
integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==
303+
294304
295305
version "0.0.1"
296306
resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
@@ -344,10 +354,10 @@ dir-glob@^3.0.1:
344354
dependencies:
345355
path-type "^4.0.0"
346356

347-
distilt@^0.10.3:
348-
version "0.10.3"
349-
resolved "https://registry.npmjs.org/distilt/-/distilt-0.10.3.tgz#24bba0228a7df163522bc00444775a61ef8a4d8f"
350-
integrity sha512-ieyPdDJSUQ0fOAiXwnPIfv4jRjhP3v6zzC544RjD2gMhnV/MVMY62fQkHkDh7b4zmU88vahvINaIXLA9wDv31A==
357+
distilt@^0.10.4:
358+
version "0.10.4"
359+
resolved "https://registry.npmjs.org/distilt/-/distilt-0.10.4.tgz#814211450ead65619bc79f917dc6b93820fc1e11"
360+
integrity sha512-+F1cpyQ53YgxLffA2PIqgWO6QH1HB9uQhfXJHhohxmH06ilWbVxuZiYuFenv2aVrPBIBfq0TVubHJnnr4Y7ydQ==
351361
dependencies:
352362
es-module-lexer "^0.3.26"
353363
esbuild "^0.9.3"
@@ -685,7 +695,7 @@ glob-parent@^5.0.0, glob-parent@^5.1.0:
685695
dependencies:
686696
is-glob "^4.0.1"
687697

688-
glob@^7.1.3:
698+
glob@7.1.6, glob@^7.1.3:
689699
version "7.1.6"
690700
resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
691701
integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
@@ -850,6 +860,11 @@ levn@^0.4.1:
850860
prelude-ls "^1.2.1"
851861
type-check "~0.4.0"
852862

863+
lines-and-columns@^1.1.6:
864+
version "1.1.6"
865+
resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
866+
integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=
867+
853868
locate-path@^6.0.0:
854869
version "6.0.0"
855870
resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
@@ -924,18 +939,37 @@ [email protected]:
924939
resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
925940
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
926941

942+
mz@^2.7.0:
943+
version "2.7.0"
944+
resolved "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32"
945+
integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==
946+
dependencies:
947+
any-promise "^1.0.0"
948+
object-assign "^4.0.1"
949+
thenify-all "^1.0.0"
950+
927951
natural-compare@^1.4.0:
928952
version "1.4.0"
929953
resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
930954
integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
931955

956+
node-modules-regexp@^1.0.0:
957+
version "1.0.0"
958+
resolved "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40"
959+
integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=
960+
932961
npm-run-path@^4.0.1:
933962
version "4.0.1"
934963
resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
935964
integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
936965
dependencies:
937966
path-key "^3.0.0"
938967

968+
object-assign@^4.0.1:
969+
version "4.1.1"
970+
resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
971+
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
972+
939973
once@^1.3.0:
940974
version "1.4.0"
941975
resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
@@ -1008,6 +1042,13 @@ picomatch@^2.0.5, picomatch@^2.2.1:
10081042
resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
10091043
integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
10101044

1045+
pirates@^4.0.1:
1046+
version "4.0.1"
1047+
resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87"
1048+
integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==
1049+
dependencies:
1050+
node-modules-regexp "^1.0.0"
1051+
10111052
pkg-dir@^5.0.0:
10121053
version "5.0.0"
10131054
resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760"
@@ -1200,6 +1241,18 @@ style-vendorizer@^2.0.0:
12001241
resolved "https://registry.npmjs.org/style-vendorizer/-/style-vendorizer-2.0.0.tgz#0c46cec94069f1c768d31c3d307ed045646f503c"
12011242
integrity sha512-CeqwnrtXd/DKIadVNdJDtHnpCmsc28rWVWLmgpF2HdzTiWFVCE1F1OzWWwskOEtWpOpgm6NrjccfkNGo8qW4MA==
12021243

1244+
sucrase@^3.17.1:
1245+
version "3.17.1"
1246+
resolved "https://registry.npmjs.org/sucrase/-/sucrase-3.17.1.tgz#b5e35ca7d99db2cc82b3e942934c3746b41ff8e2"
1247+
integrity sha512-04cNLFAhS4NBG2Z/MTkLY6HdoBsqErv3wCncymFlfFtnpMthurlWYML2RlID4M2BbiJSu1eZdQnE8Lcz4PCe2g==
1248+
dependencies:
1249+
commander "^4.0.0"
1250+
glob "7.1.6"
1251+
lines-and-columns "^1.1.6"
1252+
mz "^2.7.0"
1253+
pirates "^4.0.1"
1254+
ts-interface-checker "^0.1.9"
1255+
12031256
supports-color@^5.3.0:
12041257
version "5.5.0"
12051258
resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
@@ -1229,6 +1282,20 @@ text-table@^0.2.0:
12291282
resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
12301283
integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
12311284

1285+
thenify-all@^1.0.0:
1286+
version "1.6.0"
1287+
resolved "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726"
1288+
integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=
1289+
dependencies:
1290+
thenify ">= 3.1.0 < 4"
1291+
1292+
"thenify@>= 3.1.0 < 4":
1293+
version "3.3.1"
1294+
resolved "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f"
1295+
integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==
1296+
dependencies:
1297+
any-promise "^1.0.0"
1298+
12321299
to-regex-range@^5.0.1:
12331300
version "5.0.1"
12341301
resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
@@ -1241,6 +1308,11 @@ totalist@^2.0.0:
12411308
resolved "https://registry.npmjs.org/totalist/-/totalist-2.0.0.tgz#db6f1e19c0fa63e71339bbb8fba89653c18c7eec"
12421309
integrity sha512-+Y17F0YzxfACxTyjfhnJQEe7afPA0GSpYlFkl2VFMxYP7jshQf9gXV7cH47EfToBumFThfKBvfAcoUn6fdNeRQ==
12431310

1311+
ts-interface-checker@^0.1.9:
1312+
version "0.1.13"
1313+
resolved "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699"
1314+
integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==
1315+
12441316
tslib@^1.8.1:
12451317
version "1.14.1"
12461318
resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
@@ -1253,10 +1325,10 @@ tsutils@^3.17.1:
12531325
dependencies:
12541326
tslib "^1.8.1"
12551327

1256-
twind@^0.16.8:
1257-
version "0.16.8"
1258-
resolved "https://registry.npmjs.org/twind/-/twind-0.16.8.tgz#164da6c889cb52607915bd5b97e62c969ca10cc3"
1259-
integrity sha512-9mnQS/q1U+U6cRSdoE/PozGSOpENZWjS/MOFzcd4dpCZQRWoGa5DKBuTRJiHZdSO9ClEnFjlVB8dGR4w4yTimw==
1328+
twind@^0.16.9:
1329+
version "0.16.9"
1330+
resolved "https://registry.npmjs.org/twind/-/twind-0.16.9.tgz#62d04a12d4a96f5f1e72e477af4e8634f356eaac"
1331+
integrity sha512-cOpijhtEMEaIhHQ4H3+K/APn1kAYkMtV3fMB/zBfXP+rmKiwjnNZSot8w8YNGnKDqLbV+uCSuFiZtPL60Jscaw==
12601332
dependencies:
12611333
csstype "^3.0.5"
12621334
htmlparser2 "^6.0.0"

0 commit comments

Comments
 (0)