UNPKG

stylus-native-loader

Version:

A super fast Stylus loader for Webpack that leverages the built-in power of Stylus

86 lines (81 loc) 1.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.castArray = castArray; exports.getAliasList = getAliasList; exports.getOptions = getOptions; exports.isObject = isObject; exports.resolveTildePath = resolveTildePath; var _path = _interopRequireDefault(require("path")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } /** * @param {Object} context The loader context * * @return {Object} */ function getOptions(context) { if (typeof context.getOptions === 'function') { return context.getOptions(); } else { return require('loader-utils').getOptions(context); } } /** * @return {boolean} */ function isObject(value) { return typeof value === 'object' && value !== null; } /** * @return {Array} */ function castArray(value) { if (value == null) { return []; } else if (Array.isArray(value)) { return value; } else { return [value]; } } /** * @param {Object} aliases * * @return {Array} */ function getAliasList(aliases) { const aliasList = []; if (typeof aliases !== 'object') { return aliasList; } for (let [alias, aliasPath] of Object.entries(aliases)) { let exact = false; if (alias.slice(-1) === '$') { exact = true; alias = alias.slice(0, -1); } aliasList.push({ alias, aliasRoot: alias + '/', path: aliasPath.replace(/[/\\]+$/, ''), exact }); } return aliasList; } /** * @param {string} importPath * * @return {string} */ function resolveTildePath(importPath) { const target = importPath.slice(1); const resolved = require.resolve(target); const nodeModulesPos = resolved.lastIndexOf(_path.default.sep + 'node_modules' + _path.default.sep); if (nodeModulesPos !== -1) { return _path.default.resolve(resolved.slice(0, nodeModulesPos), 'node_modules', target); } else { return _path.default.dirname(resolved); } }