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

64 lines
1.8 KiB

2 years ago
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = parseDependency;
var _isGlob = _interopRequireDefault(require("is-glob"));
var _globParent = _interopRequireDefault(require("glob-parent"));
var _path = _interopRequireDefault(require("path"));
function parseDependency(normalizedFileOrGlob) {
if (normalizedFileOrGlob.startsWith("!")) {
return null;
}
let message;
if ((0, _isGlob).default(normalizedFileOrGlob)) {
let { base , glob } = parseGlob(normalizedFileOrGlob);
message = {
type: "dir-dependency",
dir: _path.default.resolve(base),
glob
};
} else {
message = {
type: "dependency",
file: _path.default.resolve(normalizedFileOrGlob)
};
}
// rollup-plugin-postcss does not support dir-dependency messages
// but directories can be watched in the same way as files
if (message.type === "dir-dependency" && process.env.ROLLUP_WATCH === "true") {
message = {
type: "dependency",
file: message.dir
};
}
return message;
}
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
// Based on `glob-base`
// https://github.com/micromatch/glob-base/blob/master/index.js
function parseGlob(pattern) {
let glob = pattern;
let base = (0, _globParent).default(pattern);
if (base !== ".") {
glob = pattern.substr(base.length);
if (glob.charAt(0) === "/") {
glob = glob.substr(1);
}
}
if (glob.substr(0, 2) === "./") {
glob = glob.substr(2);
}
if (glob.charAt(0) === "/") {
glob = glob.substr(1);
}
return {
base,
glob
};
}