tsioc
Version:
tsioc is AOP, Ioc container, via typescript decorator
73 lines (71 loc) • 3.04 kB
JavaScript
;
var __extends = (this && this.__extends) || (function () {
var extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var ActionComposite_1 = require("./ActionComposite");
var index_1 = require("../../utils/index");
var CoreActions_1 = require("./CoreActions");
var index_2 = require("../factories/index");
/**
* Inject DrawType action.
*
* @export
* @class SetPropAction
* @extends {ActionComposite}
*/
var ComponentCacheAction = /** @class */ (function (_super) {
__extends(ComponentCacheAction, _super);
function ComponentCacheAction() {
return _super.call(this, CoreActions_1.CoreActions.componentCache) || this;
}
ComponentCacheAction.prototype.working = function (container, data) {
if (!data.targetType || !index_1.isClass(data.targetType)) {
return data;
}
var cacheManager = container.get(index_1.symbols.ICacheManager);
if (data.target) {
if (!cacheManager.hasCache(data.targetType)) {
var cacheMetadata = this.getCacheMetadata(container, data);
if (cacheMetadata) {
cacheManager.cache(data.targetType, data.target, cacheMetadata.expires);
}
}
}
else {
var target = cacheManager.get(data.targetType);
if (target) {
var cacheMetadata = this.getCacheMetadata(container, data);
cacheManager.cache(data.targetType, target, cacheMetadata.expires);
data.execResult = target;
}
}
return data;
};
ComponentCacheAction.prototype.getCacheMetadata = function (container, data) {
var lifeScope = container.getLifeScope();
var matchs = lifeScope.getClassDecorators(function (surm) { return index_2.hasOwnClassMetadata(surm.name, data.targetType); });
var cacheMetadata;
for (var i = 0; i < matchs.length; i++) {
var surm = matchs[i];
var metadata = index_2.getOwnTypeMetadata(surm.name, data.targetType);
if (Array.isArray(metadata) && metadata.length > 0) {
cacheMetadata = metadata.find(function (c) { return c && index_1.isNumber(c.expires) && c.expires > 0; });
if (cacheMetadata) {
break;
}
}
}
return cacheMetadata;
};
return ComponentCacheAction;
}(ActionComposite_1.ActionComposite));
exports.ComponentCacheAction = ComponentCacheAction;
//# sourceMappingURL=../../sourcemaps/core/actions/ComponentCacheAction.js.map