trivialmodels
Version:
A trivial javascript model system, designed to be easy to build backends for.
3 lines (2 loc) • 11 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:true});var _makeError=require('make-error');function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call&&(typeof call==="object"||typeof call==="function")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;}var NotImplementedError=function(_BaseError){_inherits(NotImplementedError,_BaseError);function NotImplementedError(api){_classCallCheck(this,NotImplementedError);return _possibleConstructorReturn(this,Object.getPrototypeOf(NotImplementedError).call(this,'\''+api+'\' is not implemented.'));}return NotImplementedError;}(_makeError.BaseError);var DocumentNotFoundError=function(_BaseError2){_inherits(DocumentNotFoundError,_BaseError2);function DocumentNotFoundError(id,modelName){_classCallCheck(this,DocumentNotFoundError);var _this2=_possibleConstructorReturn(this,Object.getPrototypeOf(DocumentNotFoundError).call(this,'Document with id \''+id+'\' not found in model \''+modelName+'\'.'));_this2.id=id;_this2.model=modelName;return _this2;}return DocumentNotFoundError;}(_makeError.BaseError);var MultipleDocumentsError=function(_BaseError3){_inherits(MultipleDocumentsError,_BaseError3);function MultipleDocumentsError(id,modelName){_classCallCheck(this,MultipleDocumentsError);var _this3=_possibleConstructorReturn(this,Object.getPrototypeOf(MultipleDocumentsError).call(this,'Multiple documents returned with id \''+id+'\' in model \''+modelName+'\'.'));_this3.id=id;_this3.model=modelName;return _this3;}return MultipleDocumentsError;}(_makeError.BaseError);var RequiredError=function(_BaseError4){_inherits(RequiredError,_BaseError4);function RequiredError(key){_classCallCheck(this,RequiredError);var _this4=_possibleConstructorReturn(this,Object.getPrototypeOf(RequiredError).call(this,'\''+key+'\' is required and cannot be undefined or null.'));_this4.key=key;return _this4;}return RequiredError;}(_makeError.BaseError);var CustomValidationError=function(_BaseError5){_inherits(CustomValidationError,_BaseError5);function CustomValidationError(val){_classCallCheck(this,CustomValidationError);var _this5=_possibleConstructorReturn(this,Object.getPrototypeOf(CustomValidationError).call(this,'Value \''+JSON.stringify(val)+'\' failed custom validation.'));_this5.value=val;return _this5;}return CustomValidationError;}(_makeError.BaseError);var ValidationError=function(_BaseError6){_inherits(ValidationError,_BaseError6);function ValidationError(val,type,errorMsg){_classCallCheck(this,ValidationError);var _this6=_possibleConstructorReturn(this,Object.getPrototypeOf(ValidationError).call(this,errorMsg?errorMsg:'Value \''+JSON.stringify(val)+'\' is not a valid \''+type+'\'.'));_this6.value=val;_this6.type=type;return _this6;}return ValidationError;}(_makeError.BaseError);var WriteDatabaseError=function(_BaseError7){_inherits(WriteDatabaseError,_BaseError7);function WriteDatabaseError(error,path){_classCallCheck(this,WriteDatabaseError);var _this7=_possibleConstructorReturn(this,Object.getPrototypeOf(WriteDatabaseError).call(this,'Error writing database(\''+path+'\'): '+error));_this7.innerError=error;_this7.path=path;return _this7;}return WriteDatabaseError;}(_makeError.BaseError);exports.default={NotImplemented:NotImplementedError,DocumentNotFound:DocumentNotFoundError,MultipleDocuments:MultipleDocumentsError,Required:RequiredError,Validation:ValidationError,CustomValidation:CustomValidationError,WriteDatabase:WriteDatabaseError};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZXJyb3JzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI2NUJBVU0sbUJBQW1CLGdDQUFuQixtQkFBbUIsYUFFckIsU0FGRSxtQkFBbUIsQ0FFVCxHQUFHLENBQ2Ysc0JBSEUsbUJBQW1CLCtEQUFuQixtQkFBbUIsaUJBSVAsR0FBRyw2QkFDaEIsT0FMQyxtQkFBbUIsY0FKaEIsU0FBUyxNQWNaLHFCQUFxQixpQ0FBckIscUJBQXFCLGNBRXZCLFNBRkUscUJBQXFCLENBRVgsRUFBRSxDQUFFLFNBQVMsQ0FDekIsc0JBSEUscUJBQXFCLG1FQUFyQixxQkFBcUIsa0NBSVEsRUFBRSw0QkFBeUIsU0FBUyxTQUMvRCxPQUFLLEVBQUUsQ0FBRyxFQUFFLENBQUMsQUFDYixPQUFLLEtBQUssQ0FBRyxTQUFTLENBQUMsZUFDMUIsT0FQQyxxQkFBcUIsY0FkbEIsU0FBUyxNQTBCWixzQkFBc0IsaUNBQXRCLHNCQUFzQixjQUV4QixTQUZFLHNCQUFzQixDQUVaLEVBQUUsQ0FBRSxTQUFTLENBQ3pCLHNCQUhFLHNCQUFzQixtRUFBdEIsc0JBQXNCLHFEQUkwQixFQUFFLGtCQUFlLFNBQVMsU0FDeEUsT0FBSyxFQUFFLENBQUcsRUFBRSxDQUFDLEFBQ2IsT0FBSyxLQUFLLENBQUcsU0FBUyxDQUFDLGVBQzFCLE9BUEMsc0JBQXNCLGNBMUJuQixTQUFTLE1Bc0NaLGFBQWEsaUNBQWIsYUFBYSxjQUVmLFNBRkUsYUFBYSxDQUVILEdBQUcsQ0FDZixzQkFIRSxhQUFhLG1FQUFiLGFBQWEsaUJBSUQsR0FBRyxxREFDYixPQUFLLEdBQUcsQ0FBRyxHQUFHLENBQUMsZUFDbEIsT0FOQyxhQUFhLGNBdENWLFNBQVMsTUFpRFoscUJBQXFCLGlDQUFyQixxQkFBcUIsY0FFdkIsU0FGRSxxQkFBcUIsQ0FFWCxHQUFHLENBQ2Ysc0JBSEUscUJBQXFCLG1FQUFyQixxQkFBcUIsdUJBSUgsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsa0NBQ25DLE9BQUssS0FBSyxDQUFHLEdBQUcsQ0FBQyxlQUNwQixPQU5DLHFCQUFxQixjQWpEbEIsU0FBUyxNQTREWixlQUFlLGlDQUFmLGVBQWUsY0FFakIsU0FGRSxlQUFlLENBRUwsR0FBRyxDQUFFLElBQUksQ0FBRSxRQUFRLENBQy9CLHNCQUhFLGVBQWUsbUVBQWYsZUFBZSxZQUlQLFFBQVEsQ0FBRyxRQUFRLFlBQWEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsd0JBQXFCLElBQUksTUFBSSxHQUN0RixPQUFLLEtBQUssQ0FBRyxHQUFHLENBQUMsQUFDakIsT0FBSyxJQUFJLENBQUcsSUFBSSxDQUFDLGVBQ3BCLE9BUEMsZUFBZSxjQTVEWixTQUFTLE1Bd0VaLGtCQUFrQixpQ0FBbEIsa0JBQWtCLGNBRXBCLFNBRkUsa0JBQWtCLENBRVIsS0FBSyxDQUFFLElBQUksQ0FDdkIsc0JBSEUsa0JBQWtCLG1FQUFsQixrQkFBa0Isd0NBSWtCLElBQUksU0FBUSxLQUFLLEdBQ25ELE9BQUssVUFBVSxDQUFHLEtBQUssQ0FBQyxBQUN4QixPQUFLLElBQUksQ0FBRyxJQUFJLENBQUMsZUFDcEIsT0FQQyxrQkFBa0IsY0F4RWYsU0FBUyxrQkFvRkgsQ0FDWCxjQUFjLENBQUUsbUJBQW1CLENBQ25DLGdCQUFnQixDQUFFLHFCQUFxQixDQUN2QyxpQkFBaUIsQ0FBRSxzQkFBc0IsQ0FDekMsUUFBUSxDQUFFLGFBQWEsQ0FDdkIsVUFBVSxDQUFFLGVBQWUsQ0FDM0IsZ0JBQWdCLENBQUUscUJBQXFCLENBQ3ZDLGFBQWEsQ0FBRSxrQkFBa0IsQ0FDcEMiLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDdXN0b20gZXJyb3JzXG4vL1xuLy8gQG1vZHVsZSBlcnJvci5qc1xuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmltcG9ydCB7IEJhc2VFcnJvciB9IGZyb20gJ21ha2UtZXJyb3InO1xuXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuY2xhc3MgTm90SW1wbGVtZW50ZWRFcnJvciBleHRlbmRzIEJhc2VFcnJvclxue1xuICAgIGNvbnN0cnVjdG9yKGFwaSlcbiAgICB7XG4gICAgICAgIHN1cGVyKGAnJHthcGl9JyBpcyBub3QgaW1wbGVtZW50ZWQuYCk7XG4gICAgfSAvLyBlbmQgY29uc3RydWN0b3Jcbn0gLy8gZW5kIE5vdEltcGxlbWVudGVkIEVycm9yXG5cbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5jbGFzcyBEb2N1bWVudE5vdEZvdW5kRXJyb3IgZXh0ZW5kcyBCYXNlRXJyb3JcbntcbiAgICBjb25zdHJ1Y3RvcihpZCwgbW9kZWxOYW1lKVxuICAgIHtcbiAgICAgICAgc3VwZXIoYERvY3VtZW50IHdpdGggaWQgJyR7aWR9JyBub3QgZm91bmQgaW4gbW9kZWwgJyR7bW9kZWxOYW1lfScuYCk7XG4gICAgICAgIHRoaXMuaWQgPSBpZDtcbiAgICAgICAgdGhpcy5tb2RlbCA9IG1vZGVsTmFtZTtcbiAgICB9IC8vIGVuZCBjb25zdHJ1Y3RvclxufSAvLyBlbmQgRG9jdW1lbnROb3RGb3VuZEVycm9yXG5cbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5jbGFzcyBNdWx0aXBsZURvY3VtZW50c0Vycm9yIGV4dGVuZHMgQmFzZUVycm9yXG57XG4gICAgY29uc3RydWN0b3IoaWQsIG1vZGVsTmFtZSlcbiAgICB7XG4gICAgICAgIHN1cGVyKGBNdWx0aXBsZSBkb2N1bWVudHMgcmV0dXJuZWQgd2l0aCBpZCAnJHtpZH0nIGluIG1vZGVsICcke21vZGVsTmFtZX0nLmApO1xuICAgICAgICB0aGlzLmlkID0gaWQ7XG4gICAgICAgIHRoaXMubW9kZWwgPSBtb2RlbE5hbWU7XG4gICAgfSAvLyBlbmQgY29uc3RydWN0b3Jcbn0gLy8gZW5kIERvY3VtZW50Tm90Rm91bmRFcnJvclxuXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuY2xhc3MgUmVxdWlyZWRFcnJvciBleHRlbmRzIEJhc2VFcnJvclxue1xuICAgIGNvbnN0cnVjdG9yKGtleSlcbiAgICB7XG4gICAgICAgIHN1cGVyKGAnJHtrZXl9JyBpcyByZXF1aXJlZCBhbmQgY2Fubm90IGJlIHVuZGVmaW5lZCBvciBudWxsLmApO1xuICAgICAgICB0aGlzLmtleSA9IGtleTtcbiAgICB9IC8vIGVuZCBjb25zdHJ1Y3RvclxufSAvLyBlbmQgUmVxdWlyZWRFcnJvclxuXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuY2xhc3MgQ3VzdG9tVmFsaWRhdGlvbkVycm9yIGV4dGVuZHMgQmFzZUVycm9yXG57XG4gICAgY29uc3RydWN0b3IodmFsKVxuICAgIHtcbiAgICAgICAgc3VwZXIoYFZhbHVlICcke0pTT04uc3RyaW5naWZ5KHZhbCl9JyBmYWlsZWQgY3VzdG9tIHZhbGlkYXRpb24uYCk7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWw7XG4gICAgfSAvLyBlbmQgY29uc3RydWN0b3Jcbn0gLy8gZW5kIEN1c3RvbVZhbGlkYXRpb25FcnJvclxuXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuY2xhc3MgVmFsaWRhdGlvbkVycm9yIGV4dGVuZHMgQmFzZUVycm9yXG57XG4gICAgY29uc3RydWN0b3IodmFsLCB0eXBlLCBlcnJvck1zZylcbiAgICB7XG4gICAgICAgIHN1cGVyKGVycm9yTXNnID8gZXJyb3JNc2cgOiBgVmFsdWUgJyR7SlNPTi5zdHJpbmdpZnkodmFsKX0nIGlzIG5vdCBhIHZhbGlkICcke3R5cGV9Jy5gKTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbDtcbiAgICAgICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB9IC8vIGVuZCBjb25zdHJ1Y3RvclxufSAvLyBlbmQgVmFsaWRhdGlvbkVycm9yXG5cbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5jbGFzcyBXcml0ZURhdGFiYXNlRXJyb3IgZXh0ZW5kcyBCYXNlRXJyb3JcbntcbiAgICBjb25zdHJ1Y3RvcihlcnJvciwgcGF0aClcbiAgICB7XG4gICAgICAgIHN1cGVyKGBFcnJvciB3cml0aW5nIGRhdGFiYXNlKCckeyBwYXRoIH0nKTogJHtlcnJvcn1gKTtcbiAgICAgICAgdGhpcy5pbm5lckVycm9yID0gZXJyb3I7XG4gICAgICAgIHRoaXMucGF0aCA9IHBhdGg7XG4gICAgfSAvLyBlbmQgY29uc3RydWN0b3Jcbn0gLy8gZW5kIFdyaXRlRGF0YWJhc2VFcnJvclxuXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIE5vdEltcGxlbWVudGVkOiBOb3RJbXBsZW1lbnRlZEVycm9yLFxuICAgIERvY3VtZW50Tm90Rm91bmQ6IERvY3VtZW50Tm90Rm91bmRFcnJvcixcbiAgICBNdWx0aXBsZURvY3VtZW50czogTXVsdGlwbGVEb2N1bWVudHNFcnJvcixcbiAgICBSZXF1aXJlZDogUmVxdWlyZWRFcnJvcixcbiAgICBWYWxpZGF0aW9uOiBWYWxpZGF0aW9uRXJyb3IsXG4gICAgQ3VzdG9tVmFsaWRhdGlvbjogQ3VzdG9tVmFsaWRhdGlvbkVycm9yLFxuICAgIFdyaXRlRGF0YWJhc2U6IFdyaXRlRGF0YWJhc2VFcnJvclxufTtcblxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iXX0=