123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.moduleNamespace = moduleNamespace;
- /**
- * Returns the namespace of an imported module or `null` if the namespace is removed.
- *
- * Example: no import found, possibly using global function
- * `@use "sass:color";`
- * `moduleNamespace(root, 'sass:map')` returns 'map'
- *
- * Example: default namespace
- * `@use "sass:map";`
- * `moduleNamespace(root, 'sass:map')` returns `map`
- *
- * Example: custom namespace
- * `@use "sass:map" as ns;`
- * `moduleNamespace(root, 'sass:map')` returns 'ns'
- *
- * Example: no namespace
- * `@use "sass:map" as *;`
- * `moduleNamespace(root, 'sass:map')` returns `null`
- *
- * Have a look at the tests for more examples.
- */
- function moduleNamespace(root, module) {
- var moduleNamespace = getDefaultNamespace(module);
- root.walkAtRules("use", function (rule) {
- var customNamespace = getCustomNamespace(module, rule);
- switch (customNamespace) {
- case null:
- return;
- case "*":
- moduleNamespace = null;
- return;
- default:
- moduleNamespace = customNamespace;
- }
- });
- return moduleNamespace;
- }
- function getDefaultNamespace(module) {
- return module.match(/([^/:]+)$/)[1].replace(/\.[^.]+$/, "");
- }
- function getCustomNamespace(module, rule) {
- var ruleParamsParts = rule.params.split(new RegExp("[\"']".concat(module, "['\"][ \n]*as")));
- if (ruleParamsParts.length < 2) {
- return null;
- }
- var secondRuleParamsPart = ruleParamsParts[1].trim();
- return !secondRuleParamsPart.startsWith("*") ? secondRuleParamsPart.split(" ")[0] : "*";
- }
|