MCPcopy
hub / github.com/webpack/sass-loader / getCodeFromSass

Function getCodeFromSass

test/helpers/getCodeFromSass.js:15–180  ·  view source on GitHub ↗

* @param {string} testId test ID * @param {Options} options options * @param {Context} context context * @returns {{ css: string, map: RawSourceMap }} CSS and source map (if exist)

(testId, options, context = {})

Source from the content-addressed store, hash-verified

13 * @returns {{ css: string, map: RawSourceMap }} CSS and source map (if exist)
14 */
15async function getCodeFromSass(testId, options, context = {}) {
16 const loaderOptions = { ...options };
17 const sassOptions =
18 typeof loaderOptions.sassOptions === "function"
19 ? loaderOptions.sassOptions({ mock: true }) || {}
20 : { ...options.sassOptions };
21
22 if (sassOptions.data) {
23 delete sassOptions.data;
24 }
25
26 const { implementation } = loaderOptions;
27
28 delete loaderOptions.implementation;
29
30 const isSass = /\.sass$/i.test(testId);
31
32 const isIndentedSyntax = isSass;
33
34 sassOptions.syntax = isIndentedSyntax ? "indented" : "scss";
35
36 const URL = pathToFileURL(path.resolve(__dirname, "..", testId));
37
38 sassOptions.url = URL;
39
40 sassOptions.data = fs.readFileSync(URL).toString();
41
42 if (typeof loaderOptions.additionalData === "string") {
43 sassOptions.data = `$prepended-data: hotpink${
44 isIndentedSyntax ? "\n" : ";"
45 }\n${sassOptions.data}`;
46 } else if (typeof loaderOptions.additionalData === "function") {
47 sassOptions.data = await loaderOptions.additionalData(sassOptions.data, {});
48 }
49
50 const loaderContext = {
51 addDependency() {},
52 addContextDependency() {},
53 addMissingDependency() {},
54 fs,
55 resourcePath: path.resolve(__dirname, "..", "scss", "language.scss"),
56 };
57
58 const getResolveContext = () => ({
59 fileDependencies: {
60 add: (dep) => loaderContext.addDependency(dep),
61 },
62 contextDependencies: {
63 add: (dep) => loaderContext.addContextDependency(dep),
64 },
65 missingDependencies: {
66 add: (dep) => loaderContext.addMissingDependency(dep),
67 },
68 });
69
70 const resolverFactory = new ResolverFactory();
71 const syntax = context.syntax || "scss";
72 const resolver = resolverFactory.get("normal", {

Calls 3

getModernWebpackImporterFunction · 0.90
getResolveContextFunction · 0.85
resolveFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…