( config: ResolvedConfig, )
| 1293 | } |
| 1294 | |
| 1295 | export function createCSSResolvers( |
| 1296 | config: ResolvedConfig, |
| 1297 | ): CSSAtImportResolvers { |
| 1298 | let cssResolve: ResolveIdFn | undefined |
| 1299 | let sassResolve: ResolveIdFn | undefined |
| 1300 | let lessResolve: ResolveIdFn | undefined |
| 1301 | return { |
| 1302 | get css() { |
| 1303 | return (cssResolve ??= createBackCompatIdResolver(config, { |
| 1304 | extensions: ['.css'], |
| 1305 | mainFields: ['style'], |
| 1306 | conditions: ['style', DEV_PROD_CONDITION], |
| 1307 | tryIndex: false, |
| 1308 | preferRelative: true, |
| 1309 | })) |
| 1310 | }, |
| 1311 | |
| 1312 | get sass() { |
| 1313 | if (!sassResolve) { |
| 1314 | const resolver = createBackCompatIdResolver(config, { |
| 1315 | extensions: ['.scss', '.sass', '.css'], |
| 1316 | mainFields: ['sass', 'style'], |
| 1317 | conditions: ['sass', 'style', DEV_PROD_CONDITION], |
| 1318 | tryIndex: true, |
| 1319 | tryPrefix: '_', |
| 1320 | preferRelative: true, |
| 1321 | skipMainField: true, |
| 1322 | }) |
| 1323 | sassResolve = async (...args) => { |
| 1324 | // the modern API calls `canonicalize` with resolved file URLs |
| 1325 | // for relative URLs before raw specifiers |
| 1326 | if (args[1].startsWith('file://')) { |
| 1327 | args[1] = fileURLToPath(args[1], { |
| 1328 | windows: |
| 1329 | // file:///foo cannot be converted to path with windows mode |
| 1330 | isWindows && !fileURLWithWindowsDriveRE.test(args[1]) |
| 1331 | ? false |
| 1332 | : undefined, |
| 1333 | }) |
| 1334 | } |
| 1335 | return resolver(...args) |
| 1336 | } |
| 1337 | } |
| 1338 | return sassResolve |
| 1339 | }, |
| 1340 | |
| 1341 | get less() { |
| 1342 | return (lessResolve ??= createBackCompatIdResolver(config, { |
| 1343 | extensions: ['.less', '.css'], |
| 1344 | mainFields: ['less', 'style'], |
| 1345 | conditions: ['less', 'style', DEV_PROD_CONDITION], |
| 1346 | tryIndex: false, |
| 1347 | preferRelative: true, |
| 1348 | })) |
| 1349 | }, |
| 1350 | } |
| 1351 | } |
| 1352 |
no outgoing calls