30 lines
1.3 KiB
JavaScript
30 lines
1.3 KiB
JavaScript
|
"use strict";
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
exports.setTSInstanceInCache = exports.getTSInstanceFromCache = void 0;
|
||
|
// Some loaders (e.g. thread-loader) will set the _compiler property to undefined.
|
||
|
// We can't use undefined as a WeakMap key as it will throw an error at runtime,
|
||
|
// thus we keep a dummy "marker" object to use as key in those situations.
|
||
|
const marker = {};
|
||
|
// Each TypeScript instance is cached based on the webpack instance (key of the WeakMap)
|
||
|
// and also the name that was generated or passed via the options (string key of the
|
||
|
// internal Map)
|
||
|
const cache = new WeakMap();
|
||
|
function getTSInstanceFromCache(key, name) {
|
||
|
const compiler = key !== null && key !== void 0 ? key : marker;
|
||
|
let instances = cache.get(compiler);
|
||
|
if (!instances) {
|
||
|
instances = new Map();
|
||
|
cache.set(compiler, instances);
|
||
|
}
|
||
|
return instances.get(name);
|
||
|
}
|
||
|
exports.getTSInstanceFromCache = getTSInstanceFromCache;
|
||
|
function setTSInstanceInCache(key, name, instance) {
|
||
|
var _a;
|
||
|
const compiler = key !== null && key !== void 0 ? key : marker;
|
||
|
const instances = (_a = cache.get(compiler)) !== null && _a !== void 0 ? _a : new Map();
|
||
|
instances.set(name, instance);
|
||
|
cache.set(compiler, instances);
|
||
|
}
|
||
|
exports.setTSInstanceInCache = setTSInstanceInCache;
|
||
|
//# sourceMappingURL=instance-cache.js.map
|