@pebula/metap
Version:
meta-programming tools
140 lines • 9.38 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { stringify, isFunction } from '@pebula/utils';
/** @type {?} */
var ERROR_EXEC_TYPE = Symbol('Throw');
var Errors = /** @class */ (function () {
function Errors() {
// support for post instantiation mixins on the prototype (plugins) - don't use new.
Errors.create(this);
}
Object.defineProperty(Errors.prototype, "throw", {
/**
* Returns a marked Errors repository where the next call to an error object will throw.
*
* e.g. `errors.THROW().decorator(...)` will throw
*/
get: /**
* Returns a marked Errors repository where the next call to an error object will throw.
*
* e.g. `errors.THROW().decorator(...)` will throw
* @template THIS
* @this {THIS}
* @return {THIS}
*/
function () {
var _a;
return Object.assign(Object.create((/** @type {?} */ (this))), (_a = {}, _a[ERROR_EXEC_TYPE] = 'throw', _a));
},
enumerable: true,
configurable: true
});
/**
* @param {?} target
* @param {?} message
* @param {?=} propertyName
* @return {?}
*/
Errors.prototype.decorator = /**
* @param {?} target
* @param {?} message
* @param {?=} propertyName
* @return {?}
*/
function (target, message, propertyName) {
/** @type {?} */
var CLS = isFunction(target) ? target : target.constructor;
if (!propertyName) {
return this.ERROR("Invalid decorator @ " + stringify(CLS) + "}: " + message);
}
else {
/** @type {?} */
var dot = CLS === target ? '#' : '.';
return this.ERROR("Invalid decorator @ " + stringify(target) + dot + stringify(propertyName) + ": " + message);
}
};
/**
* @param {?} model
* @param {?} message
* @return {?}
*/
Errors.prototype.model = /**
* @param {?} model
* @param {?} message
* @return {?}
*/
function (model, message) {
return this.ERROR("Model Error [" + stringify(model) + "]: " + message);
};
/**
* @param {?} model
* @param {?} expectedCol
* @return {?}
*/
Errors.prototype.modelSingleCol = /**
* @param {?} model
* @param {?} expectedCol
* @return {?}
*/
function (model, expectedCol) {
return this.ERROR("Model Error:" + expectedCol
? "Expected a COLLECTION but got an OBJECT [Target: " + stringify(model) + "]"
: "Expected an OBJECT but got a COLLECTION [Target: " + stringify(model) + "]");
};
/**
* @internal
*/
/**
* \@internal
* @template T
* @param {?} message
* @param {?=} assign
* @return {?}
*/
Errors.prototype.ERROR = /**
* \@internal
* @template T
* @param {?} message
* @param {?=} assign
* @return {?}
*/
function (message, assign) {
/** @type {?} */
var err = new Error(message);
if (assign) {
Object.assign(err, assign);
}
if (this[ERROR_EXEC_TYPE] === 'throw') {
throw err;
}
else {
return (/** @type {?} */ (err));
}
};
/**
* Creates a new TargetStore instance.
* @param instance optional, used internally
*/
/**
* Creates a new TargetStore instance.
* @param {?=} instance optional, used internally
* @return {?}
*/
Errors.create = /**
* Creates a new TargetStore instance.
* @param {?=} instance optional, used internally
* @return {?}
*/
function (instance) {
/** @type {?} */
var errors = instance || Object.create(Errors.prototype);
return errors;
};
return Errors;
}());
export { Errors };
/** @type {?} */
export var errors = Errors.create();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHBlYnVsYS9tZXRhcC9pbnRlcm5hbC8iLCJzb3VyY2VzIjpbImxpYi9mdy9lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztJQUVoRCxlQUFlLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztBQUV2QztJQVVFO1FBQ0Usb0ZBQW9GO1FBQ3BGLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQVBELHNCQUFJLHlCQUFLO1FBTFQ7Ozs7V0FJRzs7Ozs7Ozs7O1FBQ0g7O1lBQ0UsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsbUJBQUEsSUFBSSxFQUFBLENBQUMsWUFBSSxHQUFDLGVBQWUsSUFBRyxPQUFPLE1BQUcsQ0FBQztRQUM1RSxDQUFDOzs7T0FBQTs7Ozs7OztJQU9ELDBCQUFTOzs7Ozs7SUFBVCxVQUFVLE1BQVcsRUFBRSxPQUFlLEVBQUUsWUFBNkI7O1lBQzdELEdBQUcsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVc7UUFFNUQsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNqQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMseUJBQXVCLFNBQVMsQ0FBQyxHQUFHLENBQUMsV0FBTSxPQUFTLENBQUMsQ0FBQztTQUN6RTthQUFNOztnQkFDQyxHQUFHLEdBQUcsR0FBRyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHO1lBQ3RDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FDZix5QkFBdUIsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsR0FBRyxTQUFTLENBQ3hELFlBQVksQ0FDYixVQUFLLE9BQVMsQ0FDaEIsQ0FBQztTQUNIO0lBQ0gsQ0FBQzs7Ozs7O0lBRUQsc0JBQUs7Ozs7O0lBQUwsVUFBTSxLQUFVLEVBQUUsT0FBZTtRQUMvQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWdCLFNBQVMsQ0FBQyxLQUFLLENBQUMsV0FBTSxPQUFTLENBQUMsQ0FBQztJQUNyRSxDQUFDOzs7Ozs7SUFFRCwrQkFBYzs7Ozs7SUFBZCxVQUFlLEtBQVUsRUFBRSxXQUFvQjtRQUM3QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQ2YsY0FBYyxHQUFHLFdBQVc7WUFDMUIsQ0FBQyxDQUFDLHNEQUFvRCxTQUFTLENBQzNELEtBQUssQ0FDTixNQUFHO1lBQ04sQ0FBQyxDQUFDLHNEQUFvRCxTQUFTLENBQzNELEtBQUssQ0FDTixNQUFHLENBQ1QsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRzs7Ozs7Ozs7SUFDSCxzQkFBSzs7Ozs7OztJQUFMLFVBQWUsT0FBZSxFQUFFLE1BQVU7O1lBQ2xDLEdBQUcsR0FBRyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDOUIsSUFBSSxNQUFNLEVBQUU7WUFDVixNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUM1QjtRQUVELElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLE9BQU8sRUFBRTtZQUNyQyxNQUFNLEdBQUcsQ0FBQztTQUNYO2FBQU07WUFDTCxPQUFPLG1CQUFLLEdBQUcsRUFBQSxDQUFDO1NBQ2pCO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRzs7Ozs7O0lBQ0ksYUFBTTs7Ozs7SUFBYixVQUFjLFFBQWlCOztZQUN2QixNQUFNLEdBQVcsUUFBUSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUNsRSxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBQ0gsYUFBQztBQUFELENBQUMsQUF0RUQsSUFzRUM7OztBQUVELE1BQU0sS0FBTyxNQUFNLEdBQVcsTUFBTSxDQUFDLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHN0cmluZ2lmeSwgaXNGdW5jdGlvbiB9IGZyb20gJ0BwZWJ1bGEvdXRpbHMnO1xuXG5jb25zdCBFUlJPUl9FWEVDX1RZUEUgPSBTeW1ib2woJ1Rocm93Jyk7XG5cbmV4cG9ydCBjbGFzcyBFcnJvcnMge1xuICAvKipcbiAgICogUmV0dXJucyBhIG1hcmtlZCBFcnJvcnMgcmVwb3NpdG9yeSB3aGVyZSB0aGUgbmV4dCBjYWxsIHRvIGFuIGVycm9yIG9iamVjdCB3aWxsIHRocm93LlxuICAgKlxuICAgKiBlLmcuIGBlcnJvcnMuVEhST1coKS5kZWNvcmF0b3IoLi4uKWAgd2lsbCB0aHJvd1xuICAgKi9cbiAgZ2V0IHRocm93KCk6IHRoaXMge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUodGhpcyksIHsgW0VSUk9SX0VYRUNfVFlQRV06ICd0aHJvdycgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gc3VwcG9ydCBmb3IgcG9zdCBpbnN0YW50aWF0aW9uIG1peGlucyBvbiB0aGUgcHJvdG90eXBlIChwbHVnaW5zKSAtIGRvbid0IHVzZSBuZXcuXG4gICAgRXJyb3JzLmNyZWF0ZSh0aGlzKTtcbiAgfVxuXG4gIGRlY29yYXRvcih0YXJnZXQ6IGFueSwgbWVzc2FnZTogc3RyaW5nLCBwcm9wZXJ0eU5hbWU/OiBUZG1Qcm9wZXJ0eUtleSk6IEVycm9yIHtcbiAgICBjb25zdCBDTFMgPSBpc0Z1bmN0aW9uKHRhcmdldCkgPyB0YXJnZXQgOiB0YXJnZXQuY29uc3RydWN0b3I7XG5cbiAgICBpZiAoIXByb3BlcnR5TmFtZSkge1xuICAgICAgcmV0dXJuIHRoaXMuRVJST1IoYEludmFsaWQgZGVjb3JhdG9yIEAgJHtzdHJpbmdpZnkoQ0xTKX19OiAke21lc3NhZ2V9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGRvdCA9IENMUyA9PT0gdGFyZ2V0ID8gJyMnIDogJy4nO1xuICAgICAgcmV0dXJuIHRoaXMuRVJST1IoXG4gICAgICAgIGBJbnZhbGlkIGRlY29yYXRvciBAICR7c3RyaW5naWZ5KHRhcmdldCl9JHtkb3R9JHtzdHJpbmdpZnkoXG4gICAgICAgICAgcHJvcGVydHlOYW1lXG4gICAgICAgICl9OiAke21lc3NhZ2V9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBtb2RlbChtb2RlbDogYW55LCBtZXNzYWdlOiBzdHJpbmcpOiBFcnJvciB7XG4gICAgcmV0dXJuIHRoaXMuRVJST1IoYE1vZGVsIEVycm9yIFske3N0cmluZ2lmeShtb2RlbCl9XTogJHttZXNzYWdlfWApO1xuICB9XG5cbiAgbW9kZWxTaW5nbGVDb2wobW9kZWw6IGFueSwgZXhwZWN0ZWRDb2w6IGJvb2xlYW4pOiBFcnJvciB7XG4gICAgcmV0dXJuIHRoaXMuRVJST1IoXG4gICAgICBgTW9kZWwgRXJyb3I6YCArIGV4cGVjdGVkQ29sXG4gICAgICAgID8gYEV4cGVjdGVkIGEgQ09MTEVDVElPTiBidXQgZ290IGFuIE9CSkVDVCBbVGFyZ2V0OiAke3N0cmluZ2lmeShcbiAgICAgICAgICAgIG1vZGVsXG4gICAgICAgICAgKX1dYFxuICAgICAgICA6IGBFeHBlY3RlZCBhbiBPQkpFQ1QgYnV0IGdvdCBhIENPTExFQ1RJT04gW1RhcmdldDogJHtzdHJpbmdpZnkoXG4gICAgICAgICAgICBtb2RlbFxuICAgICAgICAgICl9XWBcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgRVJST1I8VCA9IGFueT4obWVzc2FnZTogc3RyaW5nLCBhc3NpZ24/OiBUKTogRXJyb3IgJiBUIHtcbiAgICBjb25zdCBlcnIgPSBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgaWYgKGFzc2lnbikge1xuICAgICAgT2JqZWN0LmFzc2lnbihlcnIsIGFzc2lnbik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXNbRVJST1JfRVhFQ19UWVBFXSA9PT0gJ3Rocm93Jykge1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gPGFueT5lcnI7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgVGFyZ2V0U3RvcmUgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSBpbnN0YW5jZSBvcHRpb25hbCwgdXNlZCBpbnRlcm5hbGx5XG4gICAqL1xuICBzdGF0aWMgY3JlYXRlKGluc3RhbmNlPzogRXJyb3JzKTogRXJyb3JzIHtcbiAgICBjb25zdCBlcnJvcnM6IEVycm9ycyA9IGluc3RhbmNlIHx8IE9iamVjdC5jcmVhdGUoRXJyb3JzLnByb3RvdHlwZSk7XG4gICAgcmV0dXJuIGVycm9ycztcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZXJyb3JzOiBFcnJvcnMgPSBFcnJvcnMuY3JlYXRlKCk7XG4iXX0=