You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

40 lines
1.5 KiB
JavaScript

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformer = void 0;
const path_1 = __importDefault(require("path"));
const stylus_1 = __importDefault(require("stylus"));
const utils_1 = require("../modules/utils");
const transformer = ({ content, filename, options = {}, }) => {
options = {
paths: (0, utils_1.getIncludePaths)(filename, options.paths),
...options,
};
return new Promise((resolve, reject) => {
const style = (0, stylus_1.default)(content, {
filename,
...options,
}).set('sourcemap', options.sourcemap);
style.render((err, css) => {
var _a;
// istanbul ignore next
if (err)
reject(err);
if ((_a = style.sourcemap) === null || _a === void 0 ? void 0 : _a.sources) {
style.sourcemap.sources = style.sourcemap.sources.map((source) => path_1.default.resolve(source));
}
resolve({
code: css,
map: style.sourcemap,
// .map() necessary for windows compatibility
dependencies: style
.deps(filename)
.map((filePath) => path_1.default.resolve(filePath)),
});
});
});
};
exports.transformer = transformer;