@pebula/metap
Version:
meta-programming tools
536 lines (530 loc) • 14.1 kB
JavaScript
import { __extends } from 'tslib';
import { isFunction } from '@pebula/utils';
import { targetStore as targetStore$1, TargetStore, RelationMetadata, PropMetadata, ExcludeMetadata, TargetMetadata } from '@pebula/metap/internal';
import { Relation, Prop, Exclude, Model, Identity } from '@pebula/metap';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/** @type {?} */
var targetStore = targetStore$1;
/**
* @param {?} target
* @return {?}
*/
function getTargetMetaStore(target) {
return (/** @type {?} */ (targetStore.getTargetMeta(target)));
}
var TestTargetStore = /** @class */ (function (_super) {
__extends(TestTargetStore, _super);
function TestTargetStore() {
return _super !== null && _super.apply(this, arguments) || this;
}
/**
* @param {?} target
* @return {?}
*/
TestTargetStore.getTargetMeta = /**
* @param {?} target
* @return {?}
*/
function (target) {
return targetStore.builtTargets.get(target);
};
/**
* @template T
* @param {?} target
* @return {?}
*/
TestTargetStore.getModel = /**
* @template T
* @param {?} target
* @return {?}
*/
function (target) {
/** @type {?} */
var t = targetStore.getTargetMeta(target);
return t && t.model();
};
/**
* @return {?}
*/
TestTargetStore.clearAll = /**
* @return {?}
*/
function () {
targetStore.namedTargets.clear();
targetStore.builtTargets.clear();
targetStore.targets.clear();
targetStore.locals.clear();
};
/**
* @param {?} target
* @return {?}
*/
TestTargetStore.clear = /**
* @param {?} target
* @return {?}
*/
function (target) {
/** @type {?} */
var meta = targetStore.builtTargets.get(target);
if (meta) {
targetStore.namedTargets.delete(meta.model().resName);
targetStore.builtTargets.delete(target);
targetStore.targets.get(target).clear();
}
};
return TestTargetStore;
}(TargetStore));
// @dynamic
var TestTargetMetadata = /** @class */ (function (_super) {
__extends(TestTargetMetadata, _super);
function TestTargetMetadata() {
return _super !== null && _super.apply(this, arguments) || this;
}
/**
* @template T, Z
* @param {?} type
* @return {?}
*/
TestTargetMetadata.getFactory = /**
* @template T, Z
* @param {?} type
* @return {?}
*/
function (type) {
return (/**
* @param {?} target
* @param {?} key
* @return {?}
*/
function (target, key) {
/** @type {?} */
var t = getTargetMetaStore(target);
if (t) {
return t.config.get(type, key);
}
});
};
/**
* @template T, Z
* @param {?} type
* @return {?}
*/
TestTargetMetadata.removeFactory = /**
* @template T, Z
* @param {?} type
* @return {?}
*/
function (type) {
return (/**
* @param {?} target
* @param {?} key
* @return {?}
*/
function (target, key) {
/** @type {?} */
var t = TestTargetStore.getTargetMeta(target);
if (t) {
return t.config.delete(type, key);
}
});
};
/**
* @param {?} target
* @param {?} key
* @param {?=} meta
* @return {?}
*/
TestTargetMetadata.addRelation = /**
* @param {?} target
* @param {?} key
* @param {?=} meta
* @return {?}
*/
function (target, key, meta) {
Relation(meta)(target.prototype, key);
};
/**
* @param {?} target
* @param {?} key
* @param {?=} meta
* @return {?}
*/
TestTargetMetadata.addProp = /**
* @param {?} target
* @param {?} key
* @param {?=} meta
* @return {?}
*/
function (target, key, meta) {
Prop(meta)(target.prototype, key);
};
/**
* @param {?} target
* @return {?}
*/
TestTargetMetadata.setExcludeClass = /**
* @param {?} target
* @return {?}
*/
function (target) {
Exclude()(target);
};
/**
* @param {?} target
* @param {?} key
* @param {?=} meta
* @return {?}
*/
TestTargetMetadata.addExclude = /**
* @param {?} target
* @param {?} key
* @param {?=} meta
* @return {?}
*/
function (target, key, meta) {
Exclude(meta)(target.prototype, key);
};
TestTargetMetadata.getRelation = TestTargetMetadata.getFactory(RelationMetadata);
TestTargetMetadata.getProp = TestTargetMetadata.getFactory(PropMetadata);
TestTargetMetadata.getExclude = TestTargetMetadata.getFactory(ExcludeMetadata);
TestTargetMetadata.removeRelation = TestTargetMetadata.removeFactory(RelationMetadata);
TestTargetMetadata.removeProp = TestTargetMetadata.removeFactory(PropMetadata);
TestTargetMetadata.removeExclude = TestTargetMetadata.removeFactory(ExcludeMetadata);
return TestTargetMetadata;
}(TargetMetadata));
if (false) {
/** @type {?} */
TestTargetMetadata.getRelation;
/** @type {?} */
TestTargetMetadata.getProp;
/** @type {?} */
TestTargetMetadata.getExclude;
/** @type {?} */
TestTargetMetadata.removeRelation;
/** @type {?} */
TestTargetMetadata.removeProp;
/** @type {?} */
TestTargetMetadata.removeExclude;
}
/**
* @template T, Z
*/
var /**
* @template T, Z
*/
TargetMetaModifier = /** @class */ (function () {
function TargetMetaModifier(target) {
this.target = target;
}
/**
* @return {?}
*/
TargetMetaModifier.prototype.build = /**
* @return {?}
*/
function () {
targetStore
.getTargetMeta(this.target)
.model()
.build();
};
/**
* @template THIS
* @this {THIS}
* @return {THIS}
*/
TargetMetaModifier.prototype.clear = /**
* @template THIS
* @this {THIS}
* @return {THIS}
*/
function () {
TestTargetStore.clear((/** @type {?} */ (this)).target);
return (/** @type {?} */ (this));
};
/**
* Registers a new model
*
* > Clears the model from the registry before trying to register.
* @param metaArgs
* @param type
* @returns
*/
/**
* Registers a new model
*
* > Clears the model from the registry before trying to register.
* @template THIS,T
* @this {THIS}
* @param {?=} metaArgs
* @return {THIS}
*/
TargetMetaModifier.prototype.setModel = /**
* Registers a new model
*
* > Clears the model from the registry before trying to register.
* @template THIS,T
* @this {THIS}
* @param {?=} metaArgs
* @return {THIS}
*/
function (metaArgs) {
if (metaArgs === void 0) { metaArgs = undefined; }
(/** @type {?} */ (this)).clear();
Model(metaArgs)((/** @type {?} */ (this)).target);
return (/** @type {?} */ (this));
};
/**
* Set/Update/Remove the identity field.
* If key is empty will remove identity.
* @param key
* @returns
*/
/**
* Set/Update/Remove the identity field.
* If key is empty will remove identity.
* @template THIS
* @this {THIS}
* @param {?=} key
* @return {THIS}
*/
TargetMetaModifier.prototype.setIdentity = /**
* Set/Update/Remove the identity field.
* If key is empty will remove identity.
* @template THIS
* @this {THIS}
* @param {?=} key
* @return {THIS}
*/
function (key) {
Identity()((/** @type {?} */ (this)).target.prototype, key);
return (/** @type {?} */ (this));
};
/**
* Set exclusion/inclusion at the class level
* @param exclude
* @returns
*/
/**
* Set exclusion/inclusion at the class level
* @template THIS
* @this {THIS}
* @param {?} exclude
* @return {THIS}
*/
TargetMetaModifier.prototype.setExclude = /**
* Set exclusion/inclusion at the class level
* @template THIS
* @this {THIS}
* @param {?} exclude
* @return {THIS}
*/
function (exclude) {
if (!exclude) {
delete targetStore.getTargetMeta((/** @type {?} */ (this)).target).model().transformStrategy;
}
else {
TestTargetMetadata.setExcludeClass((/** @type {?} */ (this)).target);
}
return (/** @type {?} */ (this));
};
/**
* @template P
* @param {?} key
* @return {?}
*/
TargetMetaModifier.prototype.getProp = /**
* @template P
* @param {?} key
* @return {?}
*/
function (key) {
return TestTargetMetadata.getProp(this.target, key);
};
/**
* @template P
* @param {?} key
* @return {?}
*/
TargetMetaModifier.prototype.getType = /**
* @template P
* @param {?} key
* @return {?}
*/
function (key) {
return this.getProp(key).type;
};
/**
* @template P
* @param {?} key
* @return {?}
*/
TargetMetaModifier.prototype.getRelation = /**
* @template P
* @param {?} key
* @return {?}
*/
function (key) {
return TestTargetMetadata.getRelation(this.target, key);
};
/**
* @template P
* @param {?} key
* @return {?}
*/
TargetMetaModifier.prototype.getExclude = /**
* @template P
* @param {?} key
* @return {?}
*/
function (key) {
return TestTargetMetadata.getExclude(this.target, key);
};
/**
* @template THIS
* @this {THIS}
* @param {?} key
* @param {?=} meta
* @return {THIS}
*/
TargetMetaModifier.prototype.relation = /**
* @template THIS
* @this {THIS}
* @param {?} key
* @param {?=} meta
* @return {THIS}
*/
function (key, meta) {
TestTargetMetadata.removeRelation((/** @type {?} */ (this)).target, key);
if (typeof meta !== 'boolean') {
TestTargetMetadata.addRelation((/** @type {?} */ (this)).target, key.toString(), meta);
}
return (/** @type {?} */ (this));
};
/**
* Add or remove prop, to remove set meta to false
* @param key
* @param meta
* @param type
* @returns
*/
/**
* Add or remove prop, to remove set meta to false
* @template THIS
* @this {THIS}
* @param {?} key
* @param {?=} meta
* @param {?=} type
* @return {THIS}
*/
TargetMetaModifier.prototype.prop = /**
* Add or remove prop, to remove set meta to false
* @template THIS
* @this {THIS}
* @param {?} key
* @param {?=} meta
* @param {?=} type
* @return {THIS}
*/
function (key, meta, type) {
TestTargetMetadata.removeProp((/** @type {?} */ (this)).target, key);
if ((!type && isFunction(meta)) || isFunction(type)) {
((/** @type {?} */ (Reflect))).defineMetadata('design:type', type || meta, (/** @type {?} */ (this)).target.prototype, key);
}
if (typeof meta !== 'boolean' && !isFunction(meta)) {
TestTargetMetadata.addProp((/** @type {?} */ (this)).target, key.toString(), meta);
}
return (/** @type {?} */ (this));
};
/**
* @template THIS
* @this {THIS}
* @param {...?} args
* @return {THIS}
*/
TargetMetaModifier.prototype.props = /**
* @template THIS
* @this {THIS}
* @param {...?} args
* @return {THIS}
*/
function () {
var _this = this;
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
args.forEach((/**
* @template THIS
* @this {THIS}
* @param {?} a
* @return {THIS}
*/
function (a) { return (/** @type {?} */ (_this)).prop(a); }));
return (/** @type {?} */ (this));
};
/**
* Add or remove exclude, to remove set meta to false
* @param key
* @param meta
* @returns
*/
/**
* Add or remove exclude, to remove set meta to false
* @template THIS
* @this {THIS}
* @param {?} key
* @param {?=} meta
* @return {THIS}
*/
TargetMetaModifier.prototype.exclude = /**
* Add or remove exclude, to remove set meta to false
* @template THIS
* @this {THIS}
* @param {?} key
* @param {?=} meta
* @return {THIS}
*/
function (key, meta) {
TestTargetMetadata.removeExclude((/** @type {?} */ (this)).target, key);
if (typeof meta !== 'boolean') {
TestTargetMetadata.addExclude((/** @type {?} */ (this)).target, key.toString(), meta);
}
return (/** @type {?} */ (this));
};
/**
* @template T, Z
* @param {?} target
* @return {?}
*/
TargetMetaModifier.create = /**
* @template T, Z
* @param {?} target
* @return {?}
*/
function (target) {
return new TargetMetaModifier(target);
};
return TargetMetaModifier;
}());
if (false) {
/** @type {?} */
TargetMetaModifier.prototype.target;
}
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export { TargetMetaModifier, TestTargetMetadata, TestTargetStore };
//# sourceMappingURL=pebula-metap-testing.js.map