MCPcopy Index your code
hub / github.com/webpack/css-loader / OnceExit

Function OnceExit

src/plugins/postcss-icss-parser.js:8–118  ·  view source on GitHub ↗
(root)

Source from the content-addressed store, hash-verified

6 return {
7 postcssPlugin: "postcss-icss-parser",
8 async OnceExit(root) {
9 const importReplacements = Object.create(null);
10 const { icssImports, icssExports } = extractICSS(root);
11 const imports = new Map();
12 const tasks = [];
13
14 const { loaderContext } = options;
15 const resolver = loaderContext.getResolve({
16 dependencyType: "icss",
17 conditionNames: ["style"],
18 extensions: ["..."],
19 mainFields: ["css", "style", "main", "..."],
20 mainFiles: ["index", "..."],
21 preferRelative: true,
22 });
23
24 // eslint-disable-next-line guard-for-in
25 for (const url in icssImports) {
26 const tokens = icssImports[url];
27
28 if (Object.keys(tokens).length === 0) {
29 // eslint-disable-next-line no-continue
30 continue;
31 }
32
33 let normalizedUrl = url;
34 let prefix = "";
35
36 const queryParts = normalizedUrl.split("!");
37
38 if (queryParts.length > 1) {
39 normalizedUrl = queryParts.pop();
40 prefix = queryParts.join("!");
41 }
42
43 const request = requestify(
44 normalizeUrl(normalizedUrl, true),
45 loaderContext.rootContext,
46 );
47 const doResolve = async () => {
48 const resolvedUrl = await resolveRequests(
49 resolver,
50 loaderContext.context,
51 [...new Set([normalizedUrl, request])],
52 );
53
54 if (!resolvedUrl) {
55 return;
56 }
57
58 // eslint-disable-next-line consistent-return
59 return { url: resolvedUrl, prefix, tokens };
60 };
61
62 tasks.push(doResolve());
63 }
64
65 const results = await Promise.all(tasks);

Callers

nothing calls this directly

Calls 3

requestifyFunction · 0.90
normalizeUrlFunction · 0.90
doResolveFunction · 0.85

Tested by

no test coverage detected