kuyin-webpack-plugins
Version:
custom webpack, enhanced-resolve plugins
41 lines (40 loc) • 1.24 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const fs_1 = tslib_1.__importDefault(require("fs"));
function cached(fn) {
const cache = Object.create(null);
return function (str) {
const hit = cache[str];
// eslint-disable-next-line no-return-assign
return hit || (cache[str] = fn(str));
};
}
exports.cached = cached;
exports.existsSync = cached(function (filePath) {
return fs_1.default.existsSync(filePath);
});
function startsWith(source, searchString) {
const stringLength = source.length;
const searchLength = searchString.length;
// early out if the search length is greater than the search string
if (searchLength > stringLength) {
return false;
}
let index = -1;
while (++index < searchLength) {
if (source.charCodeAt(index) !== searchString.charCodeAt(index)) {
return false;
}
}
return true;
}
exports.startsWith = startsWith;
const extensionPattern = /\.(\w+)(?:$|\?.*)/;
exports.getExtension = cached(function (path) {
const result = path.match(extensionPattern);
if (result && result[1]) {
return result[1];
}
return '';
});