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.
57 lines
2.2 KiB
57 lines
2.2 KiB
"use strict"; |
|
var __importDefault = (this && this.__importDefault) || function (mod) { |
|
return (mod && mod.__esModule) ? mod : { "default": mod }; |
|
}; |
|
Object.defineProperty(exports, "__esModule", { value: true }); |
|
exports.setSrcDescriptor = exports.getSrcDescriptor = exports.getDescriptor = exports.setPrevDescriptor = exports.getPrevDescriptor = exports.createDescriptor = void 0; |
|
const fs_1 = __importDefault(require("fs")); |
|
const path_1 = __importDefault(require("path")); |
|
const crypto_1 = require("crypto"); |
|
const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared"); |
|
const cache = new Map(); |
|
const prevCache = new Map(); |
|
function createDescriptor(filename, source, { root, sourceMap, compiler }) { |
|
const { descriptor, errors } = compiler.parse(source, { |
|
filename, |
|
sourceMap, |
|
}); |
|
// ensure the path is normalized in a way that is consistent inside |
|
// project (relative to root) and on different systems. |
|
const normalizedPath = (0, uni_cli_shared_1.normalizePath)(path_1.default.normalize(path_1.default.relative(root, filename))); |
|
descriptor.id = getHash(normalizedPath); |
|
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, options, createIfNotFound = true) { |
|
if (cache.has(filename)) { |
|
return cache.get(filename); |
|
} |
|
if (createIfNotFound) { |
|
const { descriptor, errors } = createDescriptor(filename, fs_1.default.readFileSync(filename, 'utf-8'), options); |
|
if (errors.length) { |
|
throw errors[0]; |
|
} |
|
return descriptor; |
|
} |
|
} |
|
exports.getDescriptor = getDescriptor; |
|
function getSrcDescriptor(filename) { |
|
return cache.get(filename); |
|
} |
|
exports.getSrcDescriptor = getSrcDescriptor; |
|
function setSrcDescriptor(filename, entry) { |
|
cache.set(filename, entry); |
|
} |
|
exports.setSrcDescriptor = setSrcDescriptor; |
|
function getHash(text) { |
|
return (0, crypto_1.createHash)('sha256').update(text).digest('hex').substring(0, 8); |
|
}
|
|
|