Skip to content

Commit 6d56e10

Browse files
Use async resolver APIs to avoid blocking core
1 parent e332f23 commit 6d56e10

File tree

1 file changed

+17
-7
lines changed

1 file changed

+17
-7
lines changed

packages/@tailwindcss-node/src/compile.ts

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export async function compile(
1414
return await _compile(css, base, {
1515
async loadModule(id, base) {
1616
if (id[0] !== '.') {
17-
let resolvedPath = resolveJsId(id, base)
17+
let resolvedPath = await resolveJsId(id, base)
1818
if (!resolvedPath) {
1919
throw new Error(`Could not resolve '${id}' from '${base}'`)
2020
}
@@ -26,7 +26,7 @@ export async function compile(
2626
}
2727
}
2828

29-
let resolvedPath = resolveJsId(id, base)
29+
let resolvedPath = await resolveJsId(id, base)
3030
if (!resolvedPath) {
3131
throw new Error(`Could not resolve '${id}' from '${base}'`)
3232
}
@@ -91,21 +91,31 @@ const cssResolver = EnhancedResolve.ResolverFactory.createResolver({
9191
mainFields: ['style'],
9292
conditionNames: ['style'],
9393
})
94-
function resolveCssId(id: string, base: string) {
94+
function resolveCssId(id: string, base: string): Promise<string | false | undefined> {
9595
if (typeof globalThis.__tw_resolve === 'function') {
9696
let resolved = globalThis.__tw_resolve(id, base)
9797
if (resolved) {
98-
return resolved
98+
return Promise.resolve(resolved)
9999
}
100100
}
101101

102-
return cssResolver.resolveSync({}, base, id)
102+
return new Promise((resolve, reject) =>
103+
cssResolver.resolve({}, base, id, {}, (err, result) => {
104+
if (err) return reject(err)
105+
resolve(result)
106+
}),
107+
)
103108
}
104109

105110
const jsResolver = EnhancedResolve.ResolverFactory.createResolver({
106111
fileSystem: new EnhancedResolve.CachedInputFileSystem(fs, 4000),
107112
useSyncFileSystemCalls: true,
108113
})
109-
function resolveJsId(id: string, base: string) {
110-
return jsResolver.resolveSync({}, base, id)
114+
function resolveJsId(id: string, base: string): Promise<string | false | undefined> {
115+
return new Promise((resolve, reject) =>
116+
jsResolver.resolve({}, base, id, {}, (err, result) => {
117+
if (err) return reject(err)
118+
resolve(result)
119+
}),
120+
)
111121
}

0 commit comments

Comments
 (0)