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