@pebula/metap
Version:
meta-programming tools
82 lines • 5.4 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { MixinFree } from '@pebula/utils';
/** @type {?} */
var ModelClassMark = Symbol('ModelClass instance mark');
/**
* @record
* @template T
*/
export function ModelClass() { }
/**
* @template T
*/
var /**
* @template T
*/
ModelClassBase = /** @class */ (function () {
function ModelClassBase() {
}
/**
* @return {?}
*/
ModelClassBase.prototype.toString = /**
* @return {?}
*/
function () {
return this.constructor.name;
};
/**
* @param {?} instance
* @return {?}
*/
ModelClassBase.instanceOf = /**
* @param {?} instance
* @return {?}
*/
function (instance) {
return instance[ModelClassMark] === true;
};
/**
* @template T, Z
* @param {?} model
* @return {?}
*/
ModelClassBase.factory = /**
* @template T, Z
* @param {?} model
* @return {?}
*/
function (model) {
var ModelClass = /** @class */ (function (_super) {
tslib_1.__extends(ModelClass, _super);
function ModelClass() {
return _super !== null && _super.apply(this, arguments) || this;
}
return ModelClass;
}(model));
Object.defineProperty(ModelClass, 'name', {
configurable: true,
value: model.name
});
Object.defineProperty(ModelClass, Symbol.hasInstance, {
value: ModelClassBase.instanceOf
});
MixinFree(ModelClass, ModelClassBase, 'proto');
// TODO: copy other TS reflection info
/** @type {?} */
var paramTypes = ((/** @type {?} */ (Reflect))).getOwnMetadata('design:paramtypes', model);
((/** @type {?} */ (Reflect))).defineMetadata('design:paramtypes', paramTypes, ModelClass);
return (/** @type {?} */ (ModelClass));
};
return ModelClassBase;
}());
/**
* @template T
*/
export { ModelClassBase };
Object.defineProperty(ModelClassBase.prototype, ModelClassMark, { value: true });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtY2xhc3MuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AcGVidWxhL21ldGFwL2ludGVybmFsLyIsInNvdXJjZXMiOlsibGliL21vZGVsL21vZGVsLWNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBZSxNQUFNLGVBQWUsQ0FBQzs7SUFFakQsY0FBYyxHQUFHLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQzs7Ozs7QUFFekQsZ0NBQWlDOzs7O0FBRWpDOzs7O0lBQUE7SUE0QkEsQ0FBQzs7OztJQTNCQyxpQ0FBUTs7O0lBQVI7UUFDRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO0lBQy9CLENBQUM7Ozs7O0lBRU0seUJBQVU7Ozs7SUFBakIsVUFBa0IsUUFBYTtRQUM3QixPQUFPLFFBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSyxJQUFJLENBQUM7SUFDM0MsQ0FBQzs7Ozs7O0lBRU0sc0JBQU87Ozs7O0lBQWQsVUFBcUIsS0FBeUI7UUFDNUM7WUFBeUIsc0NBQTBCO1lBQW5EOztZQUFxRCxDQUFDO1lBQUQsaUJBQUM7UUFBRCxDQUFDLEFBQXRELENBQTBCLEtBQUssR0FBdUI7UUFFdEQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFO1lBQ3hDLFlBQVksRUFBRSxJQUFJO1lBQ2xCLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSTtTQUNsQixDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsV0FBVyxFQUFFO1lBQ3BELEtBQUssRUFBRSxjQUFjLENBQUMsVUFBVTtTQUNqQyxDQUFDLENBQUM7UUFFSCxTQUFTLENBQUMsVUFBVSxFQUFFLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQzs7O1lBR3pDLFVBQVUsR0FBRyxDQUFDLG1CQUFBLE9BQU8sRUFBTyxDQUFDLENBQUMsY0FBYyxDQUFDLG1CQUFtQixFQUFFLEtBQUssQ0FBQztRQUM5RSxDQUFDLG1CQUFBLE9BQU8sRUFBTyxDQUFDLENBQUMsY0FBYyxDQUFDLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUU3RSxPQUFPLG1CQUFBLFVBQVUsRUFBTyxDQUFDO0lBQzNCLENBQUM7SUFDSCxxQkFBQztBQUFELENBQUMsQUE1QkQsSUE0QkM7Ozs7O0FBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLGNBQWMsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWl4aW5GcmVlLCBDb25zdHJ1Y3RvciB9IGZyb20gJ0BwZWJ1bGEvdXRpbHMnO1xuXG5jb25zdCBNb2RlbENsYXNzTWFyayA9IFN5bWJvbCgnTW9kZWxDbGFzcyBpbnN0YW5jZSBtYXJrJyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9kZWxDbGFzczxUPiB7fVxuXG5leHBvcnQgY2xhc3MgTW9kZWxDbGFzc0Jhc2U8VD4gaW1wbGVtZW50cyBNb2RlbENsYXNzPFQ+IHtcbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xuICB9XG5cbiAgc3RhdGljIGluc3RhbmNlT2YoaW5zdGFuY2U6IGFueSk6IGluc3RhbmNlIGlzIE1vZGVsQ2xhc3NCYXNlPGFueT4ge1xuICAgIHJldHVybiBpbnN0YW5jZVtNb2RlbENsYXNzTWFya10gPT09IHRydWU7XG4gIH1cblxuICBzdGF0aWMgZmFjdG9yeTxULCBaPihtb2RlbDogWiAmIENvbnN0cnVjdG9yPFQ+KTogWiAmIENvbnN0cnVjdG9yPE1vZGVsQ2xhc3NCYXNlPFQ+PiB7XG4gICAgY2xhc3MgTW9kZWxDbGFzcyBleHRlbmRzIChtb2RlbCBhcyBDb25zdHJ1Y3Rvcjx7fT4pIHt9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTW9kZWxDbGFzcywgJ25hbWUnLCB7XG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB2YWx1ZTogbW9kZWwubmFtZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShNb2RlbENsYXNzLCBTeW1ib2wuaGFzSW5zdGFuY2UsIHtcbiAgICAgIHZhbHVlOiBNb2RlbENsYXNzQmFzZS5pbnN0YW5jZU9mXG4gICAgfSk7XG5cbiAgICBNaXhpbkZyZWUoTW9kZWxDbGFzcywgTW9kZWxDbGFzc0Jhc2UsICdwcm90bycpO1xuXG4gICAgLy8gVE9ETzogY29weSBvdGhlciBUUyByZWZsZWN0aW9uIGluZm9cbiAgICBjb25zdCBwYXJhbVR5cGVzID0gKFJlZmxlY3QgYXMgYW55KS5nZXRPd25NZXRhZGF0YSgnZGVzaWduOnBhcmFtdHlwZXMnLCBtb2RlbCk7XG4gICAgKFJlZmxlY3QgYXMgYW55KS5kZWZpbmVNZXRhZGF0YSgnZGVzaWduOnBhcmFtdHlwZXMnLCBwYXJhbVR5cGVzLCBNb2RlbENsYXNzKTtcblxuICAgIHJldHVybiBNb2RlbENsYXNzIGFzIGFueTtcbiAgfVxufVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoTW9kZWxDbGFzc0Jhc2UucHJvdG90eXBlLCBNb2RlbENsYXNzTWFyaywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiJdfQ==