-
-
Notifications
You must be signed in to change notification settings - Fork 66
/
processResources.js
33 lines (26 loc) · 1.02 KB
/
processResources.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import logger from './logger';
// Finds any @use statement
const useRegex = '^@use .*\n?$';
// Same as above, but adds the m (multiline) flag
const useRegexTest = new RegExp(useRegex, 'm');
// Makes sure that only the last instance of `useRegex` variable is found
const useRegexReplace = new RegExp(`${useRegex}(?![sS]*${useRegex})`, 'gm');
const getOutput = (source, resources, { hoistUseStatements }) => {
if (hoistUseStatements && useRegexTest.test(source)) {
return source.replace(
useRegexReplace,
imports => `${imports}\n${resources}`,
);
}
return `${resources}\n${source}`;
};
export default function (error, resources, source, options, module, callback) {
if (error) {
logger.debug('Resources: **not found**');
return callback(error);
}
const stringifiedResources = Array.isArray(resources) ? resources.join('\n') : resources;
const output = getOutput(source, stringifiedResources, options);
logger.debug('Resources: \n', `/* ${module} */ \n`, output);
return callback(null, output);
}