@playlyfe/babel-loader
Version:
babel module loader for webpack
47 lines (36 loc) • 1.56 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = cacheTransform;
var _en = _interopRequireDefault(require("cacache/en"));
function cacheTransform(params) {
return getInfo(params.directory, params.sourceFileName).then(info => {
if (!info) {
// not in cache
return put(params.directory, params.sourceFileName, params.transform(null, params.identifier), params.identifier);
} // check data present in cache is same
if (info.metadata.identifier !== params.identifier) {
// present in cache but something changed
return put(params.directory, params.sourceFileName, params.transform(info.metadata.identifier, params.identifier), params.identifier);
} // present in cache nothing changed
// read from cache
return get(params.directory, params.sourceFileName);
}, () => put(params.directory, params.sourceFileName, params.transform(null, params.identifier), params.identifier));
}
function getInfo(directory, sourceFileName) {
return _en.default.get.info(directory, sourceFileName);
}
function get(directory, sourceFileName) {
return _en.default.get(directory, sourceFileName).then(({
data
}) => JSON.parse(data.toString()));
}
function put(directory, sourceFileName, transformedSource, identifier) {
return _en.default.put(directory, sourceFileName, JSON.stringify(transformedSource), {
metadata: {
identifier
}
}).then(() => transformedSource);
}