esbuild-plugin-vue-iii
Version:
a esbuild plugin for vue 3 SFC files.
52 lines • 2.16 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.setDescriptor = exports.getDescriptor = exports.setPrevDescriptor = exports.getPrevDescriptor = exports.createDescriptor = void 0;
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
const slash_1 = __importDefault(require("slash"));
const hash_sum_1 = __importDefault(require("hash-sum"));
const compiler_sfc_1 = require("@vue/compiler-sfc");
const cache = new Map();
const prevCache = new Map();
function createDescriptor(filename, source, root, isProduction) {
const { descriptor, errors } = compiler_sfc_1.parse(source, {
filename,
sourceMap: true
});
// ensure the path is normalized in a way that is consistent inside
// project (relative to root) and on different systems.
const normalizedPath = slash_1.default(path_1.default.normalize(path_1.default.relative(root, filename)));
descriptor.id = hash_sum_1.default(normalizedPath + (isProduction ? source : ''));
cache.set(filename, descriptor);
return { descriptor, errors };
}
exports.createDescriptor = createDescriptor;
function getPrevDescriptor(filename) {
return prevCache.get(filename);
}
exports.getPrevDescriptor = getPrevDescriptor;
function setPrevDescriptor(filename, entry) {
prevCache.set(filename, entry);
}
exports.setPrevDescriptor = setPrevDescriptor;
function getDescriptor(filename, root, isProduction, createIfNotFound = true) {
if (cache.has(filename)) {
return cache.get(filename);
}
if (createIfNotFound) {
const { descriptor, errors } = createDescriptor(filename, fs_1.default.readFileSync(filename, 'utf-8'), root, isProduction);
if (errors) {
throw errors[0];
}
return descriptor;
}
}
exports.getDescriptor = getDescriptor;
function setDescriptor(filename, entry) {
cache.set(filename, entry);
}
exports.setDescriptor = setDescriptor;
//# sourceMappingURL=descriptorCache.js.map