UNPKG

@daiso-tech/core

Version:

The library offers flexible, framework-agnostic solutions for modern web applications, built on adaptable components that integrate seamlessly with popular frameworks like Next Js.

63 lines 2.11 kB
/** * @module Utilities */ import { callInvokable, isInvokable, } from "../../utilities/functions/invokable.js"; import { isResult, isResultSuccess, } from "../../utilities/functions/result.js"; import { isStandardSchema } from "../../utilities/functions/is-standard-schema.js"; import { isClass } from "../../utilities/functions/is-class.js"; import {} from "../../utilities/types/_module.js"; /** * @internal */ export function isErrorPolicyBoolSetting(value) { return (typeof value === "object" && value !== null && "treatFalseAsError" in value && typeof value.treatFalseAsError === "boolean"); } /** * @internal */ export async function callErrorPolicyOnValue(errorPolicy = () => true, value) { // Will retry if the value is false and the setting treatFalseAsError is true if (!isResult(value)) { const shouldRetry = isErrorPolicyBoolSetting(errorPolicy) && typeof value === "boolean" && !value && errorPolicy.treatFalseAsError; return shouldRetry; } // Will not retry if the Result successful if (isResultSuccess(value)) { return false; } if (isInvokable(errorPolicy)) { return callInvokable(errorPolicy, value.error); } if (isStandardSchema(errorPolicy)) { const schemaResult = await errorPolicy["~standard"].validate(value.error); return schemaResult.issues === undefined; } // This only need so typescript wont complain if (isErrorPolicyBoolSetting(errorPolicy)) { return false; } return value.error instanceof errorPolicy; } /** * @internal */ export async function callErrorPolicyOnThrow(errorPolicy = () => true, error) { if (isInvokable(errorPolicy)) { return callInvokable(errorPolicy, error); } if (isStandardSchema(errorPolicy)) { const result = await errorPolicy["~standard"].validate(error); return result.issues === undefined; } if (isClass(errorPolicy)) { return error instanceof errorPolicy; } return false; } //# sourceMappingURL=error-policy.js.map