@altostra/core
Version:
Core library for shared types and logic
1 lines • 2.72 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.fromPartialResult=exports.fromSimpleResult=exports.fromResult=exports.fromOption=exports.fromFailure=exports.fromSuccess=exports.failure=exports.success=exports.partialSuccess=exports.isPartialSuccess=exports.partialSuccessValidation=exports.isResult=exports.resultValidation=exports.isFailure=exports.failureValidation=exports.isSuccess=exports.successValidation=void 0;const type_validations_1=require("@altostra/type-validations"),primitives_1=require("@altostra/type-validations/lib/primitives"),AltoError_1=require("./Errors/AltoError");function successValidation(r){return(0,type_validations_1.objectOf)({type:(0,type_validations_1.is)("result-success"),value:r})}function failureValidation(r){return(0,type_validations_1.objectOf)({type:(0,type_validations_1.is)("result-failure"),error:r})}function resultValidation(r,e=primitives_1.any){return(0,type_validations_1.taggedUnionOf)("type",{"result-success":successValidation(r),"result-failure":failureValidation(e)})}function partialSuccessValidation(r,e=primitives_1.any){return(0,type_validations_1.tupleOf)(r,(0,type_validations_1.arrayOf)(e))}function partialSuccess(r,e){return[r,e]}function success(r){return{type:"result-success",value:r}}function failure(r){return{type:"result-failure",error:r}}function fromSuccess(r){return r.value}function fromFailure(r){return r.error}function fromOption(r){switch(r.type){case"option-some":return success(r.value);case"option-none":return failure(void 0)}}function fromResult(r,e){if(Array.isArray(r)){if(void 0===e)throw AltoError_1.AltoError.create("Missing arguemnt for throwOnError");return fromPartialResult(r,e)}return fromSimpleResult(r)}function fromSimpleResult(r){if("result-failure"===r.type)throw r.error;return r.value}function fromPartialResult(r,e){const[t,s]=r;if(e&&0!==s.length)throw 1===s.length?s[0]:AltoError_1.AltoError.create("Multiple errors occured",{data:{result:r,errors:s}});return t}exports.successValidation=successValidation,exports.isSuccess=successValidation(primitives_1.unknown),exports.failureValidation=failureValidation,exports.isFailure=failureValidation(primitives_1.any),exports.resultValidation=resultValidation,exports.isResult=resultValidation(primitives_1.unknown),exports.partialSuccessValidation=partialSuccessValidation,exports.isPartialSuccess=partialSuccessValidation(primitives_1.unknown),exports.partialSuccess=partialSuccess,exports.success=success,exports.failure=failure,exports.fromSuccess=fromSuccess,exports.fromFailure=fromFailure,exports.fromOption=fromOption,exports.fromResult=fromResult,exports.fromSimpleResult=fromSimpleResult,exports.fromPartialResult=fromPartialResult;