@resultsafe/core-fp-result 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +273 -0
- package/README.ru.md +266 -0
- package/dist/LICENSE +21 -0
- package/dist/README.md +273 -0
- package/dist/cjs/constructors/Err.js +4 -0
- package/dist/cjs/constructors/Err.js.map +1 -0
- package/dist/cjs/constructors/Ok.js +4 -0
- package/dist/cjs/constructors/Ok.js.map +1 -0
- package/dist/cjs/guards/isErr.js +4 -0
- package/dist/cjs/guards/isErr.js.map +1 -0
- package/dist/cjs/guards/isErrAnd.js +5 -0
- package/dist/cjs/guards/isErrAnd.js.map +1 -0
- package/dist/cjs/guards/isOk.js +4 -0
- package/dist/cjs/guards/isOk.js.map +1 -0
- package/dist/cjs/guards/isOkAnd.js +5 -0
- package/dist/cjs/guards/isOkAnd.js.map +1 -0
- package/dist/cjs/index.js +70 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/internal/object.js +6 -0
- package/dist/cjs/internal/object.js.map +1 -0
- package/dist/cjs/internal/option.js +6 -0
- package/dist/cjs/internal/option.js.map +1 -0
- package/dist/cjs/methods/andThen.js +5 -0
- package/dist/cjs/methods/andThen.js.map +1 -0
- package/dist/cjs/methods/err.js +6 -0
- package/dist/cjs/methods/err.js.map +1 -0
- package/dist/cjs/methods/expect.js +10 -0
- package/dist/cjs/methods/expect.js.map +1 -0
- package/dist/cjs/methods/expectErr.js +10 -0
- package/dist/cjs/methods/expectErr.js.map +1 -0
- package/dist/cjs/methods/flatten.js +4 -0
- package/dist/cjs/methods/flatten.js.map +1 -0
- package/dist/cjs/methods/inspect.js +10 -0
- package/dist/cjs/methods/inspect.js.map +1 -0
- package/dist/cjs/methods/inspectErr.js +10 -0
- package/dist/cjs/methods/inspectErr.js.map +1 -0
- package/dist/cjs/methods/map.js +5 -0
- package/dist/cjs/methods/map.js.map +1 -0
- package/dist/cjs/methods/mapErr.js +5 -0
- package/dist/cjs/methods/mapErr.js.map +1 -0
- package/dist/cjs/methods/match.js +11 -0
- package/dist/cjs/methods/match.js.map +1 -0
- package/dist/cjs/methods/ok.js +6 -0
- package/dist/cjs/methods/ok.js.map +1 -0
- package/dist/cjs/methods/orElse.js +5 -0
- package/dist/cjs/methods/orElse.js.map +1 -0
- package/dist/cjs/methods/tap.js +9 -0
- package/dist/cjs/methods/tap.js.map +1 -0
- package/dist/cjs/methods/tapErr.js +10 -0
- package/dist/cjs/methods/tapErr.js.map +1 -0
- package/dist/cjs/methods/transpose.js +10 -0
- package/dist/cjs/methods/transpose.js.map +1 -0
- package/dist/cjs/methods/unwrap.js +10 -0
- package/dist/cjs/methods/unwrap.js.map +1 -0
- package/dist/cjs/methods/unwrapErr.js +10 -0
- package/dist/cjs/methods/unwrapErr.js.map +1 -0
- package/dist/cjs/methods/unwrapOr.js +5 -0
- package/dist/cjs/methods/unwrapOr.js.map +1 -0
- package/dist/cjs/methods/unwrapOrElse.js +10 -0
- package/dist/cjs/methods/unwrapOrElse.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/refiners/isTypedVariant.js +9 -0
- package/dist/cjs/refiners/isTypedVariant.js.map +1 -0
- package/dist/cjs/refiners/isTypedVariantOf.js +14 -0
- package/dist/cjs/refiners/isTypedVariantOf.js.map +1 -0
- package/dist/cjs/refiners/matchVariant.js +57 -0
- package/dist/cjs/refiners/matchVariant.js.map +1 -0
- package/dist/cjs/refiners/matchVariantStrict.js +37 -0
- package/dist/cjs/refiners/matchVariantStrict.js.map +1 -0
- package/dist/cjs/refiners/refineAsyncResult.js +26 -0
- package/dist/cjs/refiners/refineAsyncResult.js.map +1 -0
- package/dist/cjs/refiners/refineAsyncResultU.js +28 -0
- package/dist/cjs/refiners/refineAsyncResultU.js.map +1 -0
- package/dist/cjs/refiners/refineResult.js +21 -0
- package/dist/cjs/refiners/refineResult.js.map +1 -0
- package/dist/cjs/refiners/refineResultU.js +5 -0
- package/dist/cjs/refiners/refineResultU.js.map +1 -0
- package/dist/cjs/refiners/refineVariantMap.js +25 -0
- package/dist/cjs/refiners/refineVariantMap.js.map +1 -0
- package/dist/cjs/refiners/utils/getPayloadKeys.js +8 -0
- package/dist/cjs/refiners/utils/getPayloadKeys.js.map +1 -0
- package/dist/docs/api/README.md +9 -0
- package/dist/docs/api/constructors/Err.md +58 -0
- package/dist/docs/api/constructors/Ok.md +58 -0
- package/dist/docs/api/constructors/index.md +7 -0
- package/dist/docs/api/guards/index.md +9 -0
- package/dist/docs/api/guards/isErr.md +58 -0
- package/dist/docs/api/guards/isErrAnd.md +64 -0
- package/dist/docs/api/guards/isOk.md +58 -0
- package/dist/docs/api/guards/isOkAnd.md +64 -0
- package/dist/docs/api/index.md +9 -0
- package/dist/docs/api/methods/andThen.md +73 -0
- package/dist/docs/api/methods/err.md +58 -0
- package/dist/docs/api/methods/expect.md +68 -0
- package/dist/docs/api/methods/expectErr.md +68 -0
- package/dist/docs/api/methods/flatten.md +58 -0
- package/dist/docs/api/methods/index.md +24 -0
- package/dist/docs/api/methods/inspect.md +64 -0
- package/dist/docs/api/methods/inspectErr.md +64 -0
- package/dist/docs/api/methods/map.md +70 -0
- package/dist/docs/api/methods/mapErr.md +70 -0
- package/dist/docs/api/methods/match.md +76 -0
- package/dist/docs/api/methods/ok.md +58 -0
- package/dist/docs/api/methods/orElse.md +70 -0
- package/dist/docs/api/methods/tap.md +64 -0
- package/dist/docs/api/methods/tapErr.md +64 -0
- package/dist/docs/api/methods/transpose.md +58 -0
- package/dist/docs/api/methods/unwrap.md +62 -0
- package/dist/docs/api/methods/unwrapErr.md +62 -0
- package/dist/docs/api/methods/unwrapOr.md +64 -0
- package/dist/docs/api/methods/unwrapOrElse.md +64 -0
- package/dist/docs/api/modules.md +10 -0
- package/dist/docs/api/refiners/index.md +14 -0
- package/dist/docs/api/refiners/isTypedVariant.md +62 -0
- package/dist/docs/api/refiners/isTypedVariantOf.md +68 -0
- package/dist/docs/api/refiners/matchVariant.md +59 -0
- package/dist/docs/api/refiners/matchVariantStrict.md +63 -0
- package/dist/docs/api/refiners/refineAsyncResult.md +98 -0
- package/dist/docs/api/refiners/refineAsyncResultU.md +86 -0
- package/dist/docs/api/refiners/refineResult.md +98 -0
- package/dist/docs/api/refiners/refineResultU.md +86 -0
- package/dist/docs/api/refiners/refineVariantMap.md +79 -0
- package/dist/docs/api/type-aliases/Handler.md +49 -0
- package/dist/docs/api/type-aliases/MatchBuilder.md +57 -0
- package/dist/docs/api/type-aliases/Matcher.md +71 -0
- package/dist/docs/api/type-aliases/SyncRefinedResult.md +31 -0
- package/dist/docs/api/type-aliases/SyncRefinedResultUnion.md +21 -0
- package/dist/docs/api/type-aliases/SyncValidatorMap.md +17 -0
- package/dist/docs/api/type-aliases/UniversalAsyncRefinedResult.md +31 -0
- package/dist/docs/api/type-aliases/UniversalRefinedResult.md +31 -0
- package/dist/docs/api/type-aliases/VariantOf.md +23 -0
- package/dist/docs/api/type-aliases/index.md +14 -0
- package/dist/esm/constructors/Err.js +7 -0
- package/dist/esm/constructors/Err.js.map +1 -0
- package/dist/esm/constructors/Ok.js +7 -0
- package/dist/esm/constructors/Ok.js.map +1 -0
- package/dist/esm/guards/isErr.js +7 -0
- package/dist/esm/guards/isErr.js.map +1 -0
- package/dist/esm/guards/isErrAnd.js +8 -0
- package/dist/esm/guards/isErrAnd.js.map +1 -0
- package/dist/esm/guards/isOk.js +7 -0
- package/dist/esm/guards/isOk.js.map +1 -0
- package/dist/esm/guards/isOkAnd.js +8 -0
- package/dist/esm/guards/isOkAnd.js.map +1 -0
- package/dist/esm/index.js +71 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internal/object.js +9 -0
- package/dist/esm/internal/object.js.map +1 -0
- package/dist/esm/internal/option.js +9 -0
- package/dist/esm/internal/option.js.map +1 -0
- package/dist/esm/methods/andThen.js +8 -0
- package/dist/esm/methods/andThen.js.map +1 -0
- package/dist/esm/methods/err.js +9 -0
- package/dist/esm/methods/err.js.map +1 -0
- package/dist/esm/methods/expect.js +13 -0
- package/dist/esm/methods/expect.js.map +1 -0
- package/dist/esm/methods/expectErr.js +13 -0
- package/dist/esm/methods/expectErr.js.map +1 -0
- package/dist/esm/methods/flatten.js +7 -0
- package/dist/esm/methods/flatten.js.map +1 -0
- package/dist/esm/methods/inspect.js +13 -0
- package/dist/esm/methods/inspect.js.map +1 -0
- package/dist/esm/methods/inspectErr.js +13 -0
- package/dist/esm/methods/inspectErr.js.map +1 -0
- package/dist/esm/methods/map.js +8 -0
- package/dist/esm/methods/map.js.map +1 -0
- package/dist/esm/methods/mapErr.js +8 -0
- package/dist/esm/methods/mapErr.js.map +1 -0
- package/dist/esm/methods/match.js +14 -0
- package/dist/esm/methods/match.js.map +1 -0
- package/dist/esm/methods/ok.js +9 -0
- package/dist/esm/methods/ok.js.map +1 -0
- package/dist/esm/methods/orElse.js +8 -0
- package/dist/esm/methods/orElse.js.map +1 -0
- package/dist/esm/methods/tap.js +12 -0
- package/dist/esm/methods/tap.js.map +1 -0
- package/dist/esm/methods/tapErr.js +13 -0
- package/dist/esm/methods/tapErr.js.map +1 -0
- package/dist/esm/methods/transpose.js +13 -0
- package/dist/esm/methods/transpose.js.map +1 -0
- package/dist/esm/methods/unwrap.js +13 -0
- package/dist/esm/methods/unwrap.js.map +1 -0
- package/dist/esm/methods/unwrapErr.js +13 -0
- package/dist/esm/methods/unwrapErr.js.map +1 -0
- package/dist/esm/methods/unwrapOr.js +8 -0
- package/dist/esm/methods/unwrapOr.js.map +1 -0
- package/dist/esm/methods/unwrapOrElse.js +13 -0
- package/dist/esm/methods/unwrapOrElse.js.map +1 -0
- package/dist/esm/refiners/isTypedVariant.js +12 -0
- package/dist/esm/refiners/isTypedVariant.js.map +1 -0
- package/dist/esm/refiners/isTypedVariantOf.js +17 -0
- package/dist/esm/refiners/isTypedVariantOf.js.map +1 -0
- package/dist/esm/refiners/matchVariant.js +60 -0
- package/dist/esm/refiners/matchVariant.js.map +1 -0
- package/dist/esm/refiners/matchVariantStrict.js +40 -0
- package/dist/esm/refiners/matchVariantStrict.js.map +1 -0
- package/dist/esm/refiners/refineAsyncResult.js +29 -0
- package/dist/esm/refiners/refineAsyncResult.js.map +1 -0
- package/dist/esm/refiners/refineAsyncResultU.js +31 -0
- package/dist/esm/refiners/refineAsyncResultU.js.map +1 -0
- package/dist/esm/refiners/refineResult.js +24 -0
- package/dist/esm/refiners/refineResult.js.map +1 -0
- package/dist/esm/refiners/refineResultU.js +8 -0
- package/dist/esm/refiners/refineResultU.js.map +1 -0
- package/dist/esm/refiners/refineVariantMap.js +29 -0
- package/dist/esm/refiners/refineVariantMap.js.map +1 -0
- package/dist/esm/refiners/utils/getPayloadKeys.js +11 -0
- package/dist/esm/refiners/utils/getPayloadKeys.js.map +1 -0
- package/dist/package.json +36 -0
- package/dist/types/constructors/Err.d.ts +21 -0
- package/dist/types/constructors/Err.d.ts.map +1 -0
- package/dist/types/constructors/Ok.d.ts +21 -0
- package/dist/types/constructors/Ok.d.ts.map +1 -0
- package/dist/types/constructors/index.d.ts +3 -0
- package/dist/types/constructors/index.d.ts.map +1 -0
- package/dist/types/guards/index.d.ts +5 -0
- package/dist/types/guards/index.d.ts.map +1 -0
- package/dist/types/guards/isErr.d.ts +24 -0
- package/dist/types/guards/isErr.d.ts.map +1 -0
- package/dist/types/guards/isErrAnd.d.ts +22 -0
- package/dist/types/guards/isErrAnd.d.ts.map +1 -0
- package/dist/types/guards/isOk.d.ts +24 -0
- package/dist/types/guards/isOk.d.ts.map +1 -0
- package/dist/types/guards/isOkAnd.d.ts +22 -0
- package/dist/types/guards/isOkAnd.d.ts.map +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/internal/object.d.ts +5 -0
- package/dist/types/internal/object.d.ts.map +1 -0
- package/dist/types/internal/option.d.ts +10 -0
- package/dist/types/internal/option.d.ts.map +1 -0
- package/dist/types/methods/andThen.d.ts +26 -0
- package/dist/types/methods/andThen.d.ts.map +1 -0
- package/dist/types/methods/err.d.ts +22 -0
- package/dist/types/methods/err.d.ts.map +1 -0
- package/dist/types/methods/expect.d.ts +23 -0
- package/dist/types/methods/expect.d.ts.map +1 -0
- package/dist/types/methods/expectErr.d.ts +23 -0
- package/dist/types/methods/expectErr.d.ts.map +1 -0
- package/dist/types/methods/flatten.d.ts +21 -0
- package/dist/types/methods/flatten.d.ts.map +1 -0
- package/dist/types/methods/index.d.ts +20 -0
- package/dist/types/methods/index.d.ts.map +1 -0
- package/dist/types/methods/inspect.d.ts +22 -0
- package/dist/types/methods/inspect.d.ts.map +1 -0
- package/dist/types/methods/inspectErr.d.ts +22 -0
- package/dist/types/methods/inspectErr.d.ts.map +1 -0
- package/dist/types/methods/map.d.ts +23 -0
- package/dist/types/methods/map.d.ts.map +1 -0
- package/dist/types/methods/mapErr.d.ts +23 -0
- package/dist/types/methods/mapErr.d.ts.map +1 -0
- package/dist/types/methods/match.d.ts +24 -0
- package/dist/types/methods/match.d.ts.map +1 -0
- package/dist/types/methods/ok.d.ts +22 -0
- package/dist/types/methods/ok.d.ts.map +1 -0
- package/dist/types/methods/orElse.d.ts +23 -0
- package/dist/types/methods/orElse.d.ts.map +1 -0
- package/dist/types/methods/tap.d.ts +22 -0
- package/dist/types/methods/tap.d.ts.map +1 -0
- package/dist/types/methods/tapErr.d.ts +22 -0
- package/dist/types/methods/tapErr.d.ts.map +1 -0
- package/dist/types/methods/transpose.d.ts +22 -0
- package/dist/types/methods/transpose.d.ts.map +1 -0
- package/dist/types/methods/unwrap.d.ts +22 -0
- package/dist/types/methods/unwrap.d.ts.map +1 -0
- package/dist/types/methods/unwrapErr.d.ts +22 -0
- package/dist/types/methods/unwrapErr.d.ts.map +1 -0
- package/dist/types/methods/unwrapOr.d.ts +22 -0
- package/dist/types/methods/unwrapOr.d.ts.map +1 -0
- package/dist/types/methods/unwrapOrElse.d.ts +22 -0
- package/dist/types/methods/unwrapOrElse.d.ts.map +1 -0
- package/dist/types/refiners/index.d.ts +11 -0
- package/dist/types/refiners/index.d.ts.map +1 -0
- package/dist/types/refiners/isTypedVariant.d.ts +21 -0
- package/dist/types/refiners/isTypedVariant.d.ts.map +1 -0
- package/dist/types/refiners/isTypedVariantOf.d.ts +22 -0
- package/dist/types/refiners/isTypedVariantOf.d.ts.map +1 -0
- package/dist/types/refiners/matchVariant.d.ts +27 -0
- package/dist/types/refiners/matchVariant.d.ts.map +1 -0
- package/dist/types/refiners/matchVariantStrict.d.ts +28 -0
- package/dist/types/refiners/matchVariantStrict.d.ts.map +1 -0
- package/dist/types/refiners/refineAsyncResult.d.ts +54 -0
- package/dist/types/refiners/refineAsyncResult.d.ts.map +1 -0
- package/dist/types/refiners/refineAsyncResultU.d.ts +30 -0
- package/dist/types/refiners/refineAsyncResultU.d.ts.map +1 -0
- package/dist/types/refiners/refineResult.d.ts +54 -0
- package/dist/types/refiners/refineResult.d.ts.map +1 -0
- package/dist/types/refiners/refineResultU.d.ts +30 -0
- package/dist/types/refiners/refineResultU.d.ts.map +1 -0
- package/dist/types/refiners/refineVariantMap.d.ts +34 -0
- package/dist/types/refiners/refineVariantMap.d.ts.map +1 -0
- package/dist/types/refiners/types/Handler.d.ts +9 -0
- package/dist/types/refiners/types/Handler.d.ts.map +1 -0
- package/dist/types/refiners/types/MatchBuilder.d.ts +9 -0
- package/dist/types/refiners/types/MatchBuilder.d.ts.map +1 -0
- package/dist/types/refiners/types/Matcher.d.ts +11 -0
- package/dist/types/refiners/types/Matcher.d.ts.map +1 -0
- package/dist/types/refiners/types/SyncRefinedResult.d.ts +6 -0
- package/dist/types/refiners/types/SyncRefinedResult.d.ts.map +1 -0
- package/dist/types/refiners/types/SyncRefinedResultUnion.d.ts +8 -0
- package/dist/types/refiners/types/SyncRefinedResultUnion.d.ts.map +1 -0
- package/dist/types/refiners/types/SyncValidatorMap.d.ts +6 -0
- package/dist/types/refiners/types/SyncValidatorMap.d.ts.map +1 -0
- package/dist/types/refiners/types/UniversalAsyncRefinedResult.d.ts +6 -0
- package/dist/types/refiners/types/UniversalAsyncRefinedResult.d.ts.map +1 -0
- package/dist/types/refiners/types/UniversalRefinedResult.d.ts +6 -0
- package/dist/types/refiners/types/UniversalRefinedResult.d.ts.map +1 -0
- package/dist/types/refiners/types/VariantOf.d.ts +5 -0
- package/dist/types/refiners/types/VariantOf.d.ts.map +1 -0
- package/dist/types/refiners/types/index.d.ts +10 -0
- package/dist/types/refiners/types/index.d.ts.map +1 -0
- package/dist/types/refiners/utils/getPayloadKeys.d.ts +19 -0
- package/dist/types/refiners/utils/getPayloadKeys.d.ts.map +1 -0
- package/dist/types/refiners/utils/index.d.ts +2 -0
- package/dist/types/refiners/utils/index.d.ts.map +1 -0
- package/dist/types/shared-types.d.ts +22 -0
- package/dist/types/shared-types.d.ts.map +1 -0
- package/dist/umd/resultsafe-monorepo-core-fp-result.umd.js +2 -0
- package/dist/umd/resultsafe-monorepo-core-fp-result.umd.js.map +1 -0
- package/docs/_category_.json +6 -0
- package/docs/api/README.md +9 -0
- package/docs/api/constructors/Err.md +58 -0
- package/docs/api/constructors/Ok.md +58 -0
- package/docs/api/constructors/index.md +7 -0
- package/docs/api/guards/index.md +9 -0
- package/docs/api/guards/isErr.md +58 -0
- package/docs/api/guards/isErrAnd.md +64 -0
- package/docs/api/guards/isOk.md +58 -0
- package/docs/api/guards/isOkAnd.md +64 -0
- package/docs/api/index.md +9 -0
- package/docs/api/methods/andThen.md +73 -0
- package/docs/api/methods/err.md +58 -0
- package/docs/api/methods/expect.md +68 -0
- package/docs/api/methods/expectErr.md +68 -0
- package/docs/api/methods/flatten.md +58 -0
- package/docs/api/methods/index.md +24 -0
- package/docs/api/methods/inspect.md +64 -0
- package/docs/api/methods/inspectErr.md +64 -0
- package/docs/api/methods/map.md +70 -0
- package/docs/api/methods/mapErr.md +70 -0
- package/docs/api/methods/match.md +76 -0
- package/docs/api/methods/ok.md +58 -0
- package/docs/api/methods/orElse.md +70 -0
- package/docs/api/methods/tap.md +64 -0
- package/docs/api/methods/tapErr.md +64 -0
- package/docs/api/methods/transpose.md +58 -0
- package/docs/api/methods/unwrap.md +62 -0
- package/docs/api/methods/unwrapErr.md +62 -0
- package/docs/api/methods/unwrapOr.md +64 -0
- package/docs/api/methods/unwrapOrElse.md +64 -0
- package/docs/api/modules.md +10 -0
- package/docs/api/refiners/index.md +14 -0
- package/docs/api/refiners/isTypedVariant.md +62 -0
- package/docs/api/refiners/isTypedVariantOf.md +68 -0
- package/docs/api/refiners/matchVariant.md +59 -0
- package/docs/api/refiners/matchVariantStrict.md +63 -0
- package/docs/api/refiners/refineAsyncResult.md +98 -0
- package/docs/api/refiners/refineAsyncResultU.md +86 -0
- package/docs/api/refiners/refineResult.md +98 -0
- package/docs/api/refiners/refineResultU.md +86 -0
- package/docs/api/refiners/refineVariantMap.md +79 -0
- package/docs/api/type-aliases/Handler.md +49 -0
- package/docs/api/type-aliases/MatchBuilder.md +57 -0
- package/docs/api/type-aliases/Matcher.md +71 -0
- package/docs/api/type-aliases/SyncRefinedResult.md +31 -0
- package/docs/api/type-aliases/SyncRefinedResultUnion.md +21 -0
- package/docs/api/type-aliases/SyncValidatorMap.md +17 -0
- package/docs/api/type-aliases/UniversalAsyncRefinedResult.md +31 -0
- package/docs/api/type-aliases/UniversalRefinedResult.md +31 -0
- package/docs/api/type-aliases/VariantOf.md +23 -0
- package/docs/api/type-aliases/index.md +14 -0
- package/docs/assets/logo.svg +153 -0
- package/docs/examples/_category_.json +4 -0
- package/docs/examples/auth/_category_.json +4 -0
- package/docs/examples/auth/index.md +3 -0
- package/docs/examples/auth/token.md +5 -0
- package/docs/examples/connection/_category_.json +4 -0
- package/docs/examples/connection/connect.md +5 -0
- package/docs/examples/connection/index.md +3 -0
- package/docs/examples/connection/reconnect.md +5 -0
- package/docs/examples/errors/_category_.json +4 -0
- package/docs/examples/errors/index.md +3 -0
- package/docs/examples/errors/retry.md +5 -0
- package/docs/examples/index.md +9 -0
- package/docs/examples/streaming/_category_.json +4 -0
- package/docs/examples/streaming/index.md +3 -0
- package/docs/examples/streaming/text.md +5 -0
- package/package.json +70 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
const matchVariantStrict = /* @__PURE__ */ __name((value) => {
|
|
4
|
+
const handlers = [];
|
|
5
|
+
const builder = /* @__PURE__ */ __name(() => ({
|
|
6
|
+
with: /* @__PURE__ */ __name((variant, fn) => {
|
|
7
|
+
const newHandlers = [...handlers, { variant, fn }];
|
|
8
|
+
return {
|
|
9
|
+
with: builder().with,
|
|
10
|
+
run: /* @__PURE__ */ __name((() => {
|
|
11
|
+
for (const h of newHandlers) {
|
|
12
|
+
if (value.type === h.variant) {
|
|
13
|
+
const fn2 = h.fn;
|
|
14
|
+
return fn2(value);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
throw new Error(
|
|
18
|
+
`Unmatched variant: ${String(value.type)}`
|
|
19
|
+
);
|
|
20
|
+
}), "run")
|
|
21
|
+
};
|
|
22
|
+
}, "with"),
|
|
23
|
+
run: /* @__PURE__ */ __name((() => {
|
|
24
|
+
for (const h of handlers) {
|
|
25
|
+
if (value.type === h.variant) {
|
|
26
|
+
const fn = h.fn;
|
|
27
|
+
return fn(value);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
throw new Error(
|
|
31
|
+
`Unmatched variant: ${String(value.type)}`
|
|
32
|
+
);
|
|
33
|
+
}), "run")
|
|
34
|
+
}), "builder");
|
|
35
|
+
return builder();
|
|
36
|
+
}, "matchVariantStrict");
|
|
37
|
+
export {
|
|
38
|
+
matchVariantStrict
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=matchVariantStrict.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"matchVariantStrict.js","sources":["../../../src/refiners/matchVariantStrict.ts"],"sourcesContent":["import type { Handler, MatchBuilder, VariantOf } from './types/index.js';\n\n/**\n * Создает строгий matcher, выбрасывающий исключение для необработанных вариантов.\n *\n * @typeParam T - Тип дискриминированного объединения.\n * @param value - Значение объединения для сопоставления.\n * @returns Строгий builder сопоставления, требующий явных обработчиков.\n * @throws Error - Выбрасывает исключение, если ни один зарегистрированный обработчик не соответствует `value.type`.\n * @since 0.1.0\n * @see {@link matchVariant} - Использует fallback-ветку вместо выброса исключения.\n * @example\n * ```ts\n * import { matchVariantStrict } from '@resultsafe/core-fp-result';\n *\n * const out = matchVariantStrict<{ type: 'ok'; value: number } | { type: 'err'; error: string }>({\n * type: 'err',\n * error: 'boom',\n * })\n * .with('ok', (v) => `ok:${v.value}`)\n * .with('err', (v) => `err:${v.error}`)\n * .run();\n *\n * console.log(out); // err:boom\n * ```\n * @public\n */\nexport const matchVariantStrict = <T extends VariantOf>(\n value: T,\n): MatchBuilder<T, unknown> => {\n const handlers: readonly Handler<T['type'], T, unknown>[] = [];\n\n const builder = <Handled extends T['type'] = never>(): MatchBuilder<\n T,\n unknown,\n Handled\n > => ({\n with: <K extends Exclude<T['type'], Handled>>(\n variant: K,\n fn: (value: Extract<T, { type: K }>) => unknown,\n ) => {\n const newHandlers = [...handlers, { variant, fn }] as const;\n\n return {\n with: builder<Handled | K>().with,\n run: (() => {\n for (const h of newHandlers) {\n if (value.type === h.variant) {\n const fn = h.fn as (input: T) => unknown;\n return fn(value);\n }\n }\n throw new Error(\n `Unmatched variant: ${String((value as { type: unknown }).type)}`,\n );\n }) as Handled extends T['type'] ? () => unknown : never,\n } as MatchBuilder<T, unknown, Handled | K>;\n },\n\n run: (() => {\n /* v8 ignore start -- unreachable with current immutable root handler list */\n for (const h of handlers) {\n if (value.type === h.variant) {\n const fn = h.fn as (input: T) => unknown;\n return fn(value);\n }\n }\n /* v8 ignore stop */\n throw new Error(\n `Unmatched variant: ${String((value as { type: unknown }).type)}`,\n );\n }) as Handled extends T['type'] ? () => unknown : never,\n });\n\n return builder();\n};\n"],"names":["fn"],"mappings":";;AA2BO,MAAM,qBAAqB,wBAChC,UAC6B;AAC7B,QAAM,WAAsD,CAAA;AAE5D,QAAM,UAAU,8BAIV;AAAA,IACJ,MAAM,wBACJ,SACA,OACG;AACH,YAAM,cAAc,CAAC,GAAG,UAAU,EAAE,SAAS,IAAI;AAEjD,aAAO;AAAA,QACL,MAAM,UAAuB;AAAA,QAC7B,KAAM,8BAAM;AACV,qBAAW,KAAK,aAAa;AAC3B,gBAAI,MAAM,SAAS,EAAE,SAAS;AAC5B,oBAAMA,MAAK,EAAE;AACb,qBAAOA,IAAG,KAAK;AAAA,YACjB;AAAA,UACF;AACA,gBAAM,IAAI;AAAA,YACR,sBAAsB,OAAQ,MAA4B,IAAI,CAAC;AAAA,UAAA;AAAA,QAEnE,IAVM;AAAA,MAUN;AAAA,IAEJ,GApBM;AAAA,IAsBN,KAAM,8BAAM;AAEV,iBAAW,KAAK,UAAU;AACxB,YAAI,MAAM,SAAS,EAAE,SAAS;AAC5B,gBAAM,KAAK,EAAE;AACb,iBAAO,GAAG,KAAK;AAAA,QACjB;AAAA,MACF;AAEA,YAAM,IAAI;AAAA,QACR,sBAAsB,OAAQ,MAA4B,IAAI,CAAC;AAAA,MAAA;AAAA,IAEnE,IAZM;AAAA,EAYN,IAvCc;AA0ChB,SAAO,QAAA;AACT,GAhDkC;"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
import { isObject, hasOwn } from "../internal/object.js";
|
|
4
|
+
const getPayloadKeys = /* @__PURE__ */ __name((config) => {
|
|
5
|
+
const p = config.payload;
|
|
6
|
+
if (p === "never") return [];
|
|
7
|
+
return Array.isArray(p) ? p : [p];
|
|
8
|
+
}, "getPayloadKeys");
|
|
9
|
+
const refineAsyncResult = /* @__PURE__ */ __name((variantMap) => (variant) => (validators) => async (value) => {
|
|
10
|
+
if (!isObject(value)) return null;
|
|
11
|
+
if (!hasOwn(value, "type")) return null;
|
|
12
|
+
const t = value["type"];
|
|
13
|
+
if (t !== variant) return null;
|
|
14
|
+
const config = variantMap[variant];
|
|
15
|
+
if (!config) return null;
|
|
16
|
+
const keys = getPayloadKeys(config);
|
|
17
|
+
for (const key of keys) {
|
|
18
|
+
const check = validators?.[key];
|
|
19
|
+
if (!check) continue;
|
|
20
|
+
const field = value[key];
|
|
21
|
+
const isValid = await check(field);
|
|
22
|
+
if (!isValid) return null;
|
|
23
|
+
}
|
|
24
|
+
return value;
|
|
25
|
+
}, "refineAsyncResult");
|
|
26
|
+
export {
|
|
27
|
+
refineAsyncResult
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=refineAsyncResult.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refineAsyncResult.js","sources":["../../../src/refiners/refineAsyncResult.ts"],"sourcesContent":["import type {\n AsyncValidatorFn,\n PayloadKeys,\n VariantConfig,\n} from '../shared-types.js';\n\nimport { hasOwn, isObject } from '../internal/object.js';\nimport type { UniversalAsyncRefinedResult } from './types/index.js';\n\n/** Resolves payload keys from variant configuration. @internal */\nconst getPayloadKeys = <C extends VariantConfig>(\n config: C,\n): readonly PayloadKeys<C>[] => {\n const p = config.payload;\n if (p === 'never') return [];\n return (Array.isArray(p) ? p : [p]) as readonly PayloadKeys<C>[];\n};\n\n/**\n * Создает асинхронный refiner варианта с асинхронными валидаторами payload.\n *\n * @typeParam TMap - Тип карты конфигурации вариантов.\n * @param variantMap - Карта, описывающая допустимые варианты и поля payload.\n * @returns A curried async refiner factory bound to `variantMap`.\n * @since 0.1.0\n * @see {@link refineAsyncResultU} - Непосредственный (не-curry) вариант helper.\n * @example\n * ```ts\n * import { refineAsyncResult } from '@resultsafe/core-fp-result';\n *\n * const map = { ok: { payload: 'value' } } as const;\n * const refineOk = refineAsyncResult(map)('ok')({\n * value: async (x: unknown) => typeof x === 'number',\n * });\n *\n * console.log(await refineOk({ type: 'ok', value: 1 })); // { type: 'ok', value: 1 }\n * ```\n * @public\n */\nexport const refineAsyncResult =\n <TMap extends Record<string, VariantConfig>>(variantMap: TMap) =>\n <K extends keyof TMap & string>(variant: K) =>\n <TValidators extends Partial<Record<PayloadKeys<TMap[K]>, AsyncValidatorFn>>>(\n validators: TValidators,\n ) =>\n async (\n value: unknown,\n ): Promise<UniversalAsyncRefinedResult<K, TMap, TValidators> | null> => {\n if (!isObject(value)) return null;\n if (!hasOwn(value, 'type')) return null;\n\n const t = value['type'];\n if (t !== variant) return null;\n\n const config = variantMap[variant];\n if (!config) return null;\n\n const keys = getPayloadKeys(config);\n for (const key of keys) {\n const check = validators?.[key];\n if (!check) continue;\n\n const field = value[key as keyof typeof value];\n const isValid = await check(field); // ✅ Асинхронная валидация\n if (!isValid) return null;\n }\n\n return value as UniversalAsyncRefinedResult<K, TMap, TValidators>;\n };\n\n/**\n * Уточняет значение асинхронно в не-curry стиле вызова.\n *\n * @typeParam TMap - Тип карты конфигурации вариантов.\n * @typeParam K - Ключ целевого варианта.\n * @typeParam TValidators - Карта асинхронных валидаторов для полей payload.\n * @param value - Значение для валидации и уточнения.\n * @param variant - Ключ целевого варианта.\n * @param variantMap - Карта конфигурации вариантов.\n * @param validators - Асинхронные валидаторы payload.\n * @returns Промис с уточненным значением или `null`.\n * @remarks\n * This export is kept for compatibility. Prefer {@link refineAsyncResultU}\n * from `refineAsyncResultU.ts` как каноническую точку входа без curry.\n * @since 0.1.0\n * @example\n * ```ts\n * import { refineAsyncResultU } from '@resultsafe/core-fp-result/src/refiners/refineAsyncResult.js';\n *\n * const map = { ok: { payload: 'value' } } as const;\n * const out = await refineAsyncResultU({ type: 'ok', value: 1 }, 'ok', map, {\n * value: async (x: unknown) => typeof x === 'number',\n * });\n *\n * console.log(out?.type); // ok\n * ```\n * @internal\n */\nexport const refineAsyncResultU = <\n TMap extends Record<string, VariantConfig>,\n K extends keyof TMap & string,\n TValidators extends Partial<Record<PayloadKeys<TMap[K]>, AsyncValidatorFn>>,\n>(\n value: unknown,\n variant: K,\n variantMap: TMap,\n validators: TValidators,\n): Promise<UniversalAsyncRefinedResult<K, TMap, TValidators> | null> =>\n refineAsyncResult(variantMap)(variant)(validators)(value);\n\r\n\r\n"],"names":[],"mappings":";;;AAUA,MAAM,iBAAiB,wBACrB,WAC8B;AAC9B,QAAM,IAAI,OAAO;AACjB,MAAI,MAAM,QAAS,QAAO,CAAA;AAC1B,SAAQ,MAAM,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC;AACnC,GANuB;AA6BhB,MAAM,oBACX,wBAA6C,eAC7C,CAAgC,YAChC,CACE,eAEF,OACE,UACsE;AACtE,MAAI,CAAC,SAAS,KAAK,EAAG,QAAO;AAC7B,MAAI,CAAC,OAAO,OAAO,MAAM,EAAG,QAAO;AAEnC,QAAM,IAAI,MAAM,MAAM;AACtB,MAAI,MAAM,QAAS,QAAO;AAE1B,QAAM,SAAS,WAAW,OAAO;AACjC,MAAI,CAAC,OAAQ,QAAO;AAEpB,QAAM,OAAO,eAAe,MAAM;AAClC,aAAW,OAAO,MAAM;AACtB,UAAM,QAAQ,aAAa,GAAG;AAC9B,QAAI,CAAC,MAAO;AAEZ,UAAM,QAAQ,MAAM,GAAyB;AAC7C,UAAM,UAAU,MAAM,MAAM,KAAK;AACjC,QAAI,CAAC,QAAS,QAAO;AAAA,EACvB;AAEA,SAAO;AACT,GA5BA;"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
import { isObject, hasOwn } from "../internal/object.js";
|
|
4
|
+
const getPayloadKeys = /* @__PURE__ */ __name((config) => {
|
|
5
|
+
const p = config.payload;
|
|
6
|
+
if (p === "never") return [];
|
|
7
|
+
return Array.isArray(p) ? p : [p];
|
|
8
|
+
}, "getPayloadKeys");
|
|
9
|
+
const refineAsyncResultU = /* @__PURE__ */ __name((value, variant, variantMap, validators) => {
|
|
10
|
+
return (async () => {
|
|
11
|
+
if (!isObject(value)) return null;
|
|
12
|
+
if (!hasOwn(value, "type")) return null;
|
|
13
|
+
const t = value["type"];
|
|
14
|
+
if (t !== variant) return null;
|
|
15
|
+
const config = variantMap[variant];
|
|
16
|
+
if (!config) return null;
|
|
17
|
+
const keys = getPayloadKeys(config);
|
|
18
|
+
for (const key of keys) {
|
|
19
|
+
const check = validators[key];
|
|
20
|
+
if (!check) continue;
|
|
21
|
+
const field = value[key];
|
|
22
|
+
const isValid = await check(field);
|
|
23
|
+
if (!isValid) return null;
|
|
24
|
+
}
|
|
25
|
+
return value;
|
|
26
|
+
})();
|
|
27
|
+
}, "refineAsyncResultU");
|
|
28
|
+
export {
|
|
29
|
+
refineAsyncResultU
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=refineAsyncResultU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refineAsyncResultU.js","sources":["../../../src/refiners/refineAsyncResultU.ts"],"sourcesContent":["import type {\n AsyncValidatorFn,\n PayloadKeys,\n VariantConfig,\n} from '../shared-types.js';\n\nimport { hasOwn, isObject } from '../internal/object.js';\nimport type { UniversalAsyncRefinedResult } from './types/index.js';\n\n/** Resolves payload keys from variant configuration. @internal */\nconst getPayloadKeys = <C extends VariantConfig>(\n config: C,\n): readonly PayloadKeys<C>[] => {\n const p = config.payload;\n if (p === 'never') return [];\n return (Array.isArray(p) ? p : [p]) as readonly PayloadKeys<C>[];\n};\n\n/**\n * Уточняет значение асинхронно в не-curry стиле вызова.\n *\n * @typeParam TMap - Тип карты конфигурации вариантов.\n * @typeParam K - Ключ целевого варианта.\n * @typeParam TValidators - Карта асинхронных валидаторов для полей payload.\n * @param value - Значение для валидации и уточнения.\n * @param variant - Ключ целевого варианта.\n * @param variantMap - Карта конфигурации вариантов.\n * @param validators - Асинхронные валидаторы payload.\n * @returns Промис с уточненным значением или `null`.\n * @since 0.1.0\n * @see {@link refineAsyncResult} - Curry-конструктор асинхронного refiner.\n * @example\n * ```ts\n * import { refineAsyncResultU } from '@resultsafe/core-fp-result';\n *\n * const map = { ok: { payload: 'value' } } as const;\n * const out = await refineAsyncResultU({ type: 'ok', value: 1 }, 'ok', map, {\n * value: async (x: unknown) => typeof x === 'number',\n * });\n *\n * console.log(out?.type); // ok\n * ```\n * @public\n */\nexport const refineAsyncResultU = <\n TMap extends Record<string, VariantConfig>,\n K extends keyof TMap & string,\n TValidators extends Partial<Record<PayloadKeys<TMap[K]>, AsyncValidatorFn>>,\n>(\n value: unknown,\n variant: K,\n variantMap: TMap,\n validators: TValidators,\n): Promise<UniversalAsyncRefinedResult<K, TMap, TValidators> | null> => {\n // Императивный стиль с early returns (как в Rust)\n return (async () => {\n // Rust-style early returns с Option-like поведением\n if (!isObject(value)) return null;\n if (!hasOwn(value, 'type')) return null;\n\n const t = value['type'];\n if (t !== variant) return null;\n\n const config = variantMap[variant];\n if (!config) return null;\n\n // Payload validation с асинхронными валидаторами\n const keys = getPayloadKeys(config);\n for (const key of keys) {\n const check = validators[key as keyof TValidators];\n if (!check) continue;\n\n const field = value[key as string];\n // Type-safe async validation\n const isValid = await (check as AsyncValidatorFn)(field);\n if (!isValid) return null;\n }\n\n // Safe cast после всех проверок\n return value as UniversalAsyncRefinedResult<K, TMap, TValidators>;\n })();\n};\n\r\n\r\n"],"names":[],"mappings":";;;AAUA,MAAM,iBAAiB,wBACrB,WAC8B;AAC9B,QAAM,IAAI,OAAO;AACjB,MAAI,MAAM,QAAS,QAAO,CAAA;AAC1B,SAAQ,MAAM,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC;AACnC,GANuB;AAkChB,MAAM,qBAAqB,wBAKhC,OACA,SACA,YACA,eACsE;AAEtE,UAAQ,YAAY;AAElB,QAAI,CAAC,SAAS,KAAK,EAAG,QAAO;AAC7B,QAAI,CAAC,OAAO,OAAO,MAAM,EAAG,QAAO;AAEnC,UAAM,IAAI,MAAM,MAAM;AACtB,QAAI,MAAM,QAAS,QAAO;AAE1B,UAAM,SAAS,WAAW,OAAO;AACjC,QAAI,CAAC,OAAQ,QAAO;AAGpB,UAAM,OAAO,eAAe,MAAM;AAClC,eAAW,OAAO,MAAM;AACtB,YAAM,QAAQ,WAAW,GAAwB;AACjD,UAAI,CAAC,MAAO;AAEZ,YAAM,QAAQ,MAAM,GAAa;AAEjC,YAAM,UAAU,MAAO,MAA2B,KAAK;AACvD,UAAI,CAAC,QAAS,QAAO;AAAA,IACvB;AAGA,WAAO;AAAA,EACT,GAAA;AACF,GArCkC;"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
import { isObject, hasOwn } from "../internal/object.js";
|
|
4
|
+
import { getPayloadKeys } from "./utils/getPayloadKeys.js";
|
|
5
|
+
const refineResult = /* @__PURE__ */ __name((variantMap) => (variant) => (validators) => (value) => {
|
|
6
|
+
if (!isObject(value)) return null;
|
|
7
|
+
if (!hasOwn(value, "type")) return null;
|
|
8
|
+
const t = value["type"];
|
|
9
|
+
if (t !== variant) return null;
|
|
10
|
+
const config = variantMap[variant];
|
|
11
|
+
if (!config) return null;
|
|
12
|
+
const keys = getPayloadKeys(config);
|
|
13
|
+
for (const key of keys) {
|
|
14
|
+
const check = validators?.[key];
|
|
15
|
+
if (!check) continue;
|
|
16
|
+
const field = value[key];
|
|
17
|
+
if (!check(field)) return null;
|
|
18
|
+
}
|
|
19
|
+
return value;
|
|
20
|
+
}, "refineResult");
|
|
21
|
+
export {
|
|
22
|
+
refineResult
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=refineResult.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refineResult.js","sources":["../../../src/refiners/refineResult.ts"],"sourcesContent":["import type {\n PayloadKeys,\n ValidatorFn,\n VariantConfig,\n} from '../shared-types.js';\n\nimport { hasOwn, isObject } from '../internal/object.js';\nimport type { UniversalRefinedResult } from './types/index.js';\nimport { getPayloadKeys } from './utils/index.js';\n\n/**\n * Создает синхронный refiner варианта с валидаторами payload.\n *\n * @typeParam TMap - Тип карты конфигурации вариантов.\n * @param variantMap - Карта, описывающая допустимые варианты и поля payload.\n * @returns A curried refiner factory bound to `variantMap`.\n * @since 0.1.0\n * @see {@link refineResultU} - Непосредственный (не-curry) вариант helper.\n * @example\n * ```ts\n * import { refineResult } from '@resultsafe/core-fp-result';\n *\n * const map = { ok: { payload: 'value' } } as const;\n * const refineOk = refineResult(map)('ok')({\n * value: (x: unknown): x is number => typeof x === 'number',\n * });\n *\n * console.log(refineOk({ type: 'ok', value: 1 })); // { type: 'ok', value: 1 }\n * ```\n * @public\n */\nexport const refineResult =\n <TMap extends Record<string, VariantConfig>>(variantMap: TMap) =>\n <K extends keyof TMap & string>(variant: K) =>\n <TValidators extends Partial<Record<PayloadKeys<TMap[K]>, ValidatorFn>>>(\n validators: TValidators,\n ) =>\n (value: unknown): UniversalRefinedResult<K, TMap, TValidators> | null => {\n if (!isObject(value)) return null;\n if (!hasOwn(value, 'type')) return null;\n\n const t = value['type'];\n if (t !== variant) return null;\n\n const config = variantMap[variant];\n if (!config) return null;\n\n const keys = getPayloadKeys(config);\n for (const key of keys) {\n const check = validators?.[key];\n if (!check) continue;\n\n const field = value[key as keyof typeof value];\n if (!check(field)) return null;\n }\n\n return value as UniversalRefinedResult<K, TMap, TValidators>;\n };\n\n/**\n * Уточняет значение по карте вариантов в не-curry стиле вызова.\n *\n * @typeParam TMap - Тип карты конфигурации вариантов.\n * @typeParam K - Ключ целевого варианта.\n * @typeParam TValidators - Карта валидаторов для полей payload.\n * @param value - Значение для валидации и уточнения.\n * @param variant - Ключ целевого варианта.\n * @param variantMap - Карта конфигурации вариантов.\n * @param validators - Валидаторы payload для целевого варианта.\n * @returns Уточненное значение или `null`.\n * @remarks\n * Этот экспорт сохранен для совместимости. Предпочитайте {@link refineResultU} из\n * `refineResultU.ts` как каноническую точку входа без curry.\n * @since 0.1.0\n * @example\n * ```ts\n * import { refineResultU } from '@resultsafe/core-fp-result/src/refiners/refineResult.js';\n *\n * const map = { ok: { payload: 'value' } } as const;\n * const out = refineResultU({ type: 'ok', value: 1 }, 'ok', map, {\n * value: (x: unknown): x is number => typeof x === 'number',\n * });\n *\n * console.log(out?.type); // ok\n * ```\n * @internal\n */\nexport const refineResultU = <\n TMap extends Record<string, VariantConfig>,\n K extends keyof TMap & string,\n TValidators extends Partial<Record<PayloadKeys<TMap[K]>, ValidatorFn>>,\n>(\n value: unknown,\n variant: K,\n variantMap: TMap,\n validators: TValidators,\n): UniversalRefinedResult<K, TMap, TValidators> | null =>\n refineResult(variantMap)(variant)(validators)(value);\n\r\n\r\n"],"names":[],"mappings":";;;;AA+BO,MAAM,eACX,wBAA6C,eAC7C,CAAgC,YAChC,CACE,eAEF,CAAC,UAAwE;AACvE,MAAI,CAAC,SAAS,KAAK,EAAG,QAAO;AAC7B,MAAI,CAAC,OAAO,OAAO,MAAM,EAAG,QAAO;AAEnC,QAAM,IAAI,MAAM,MAAM;AACtB,MAAI,MAAM,QAAS,QAAO;AAE1B,QAAM,SAAS,WAAW,OAAO;AACjC,MAAI,CAAC,OAAQ,QAAO;AAEpB,QAAM,OAAO,eAAe,MAAM;AAClC,aAAW,OAAO,MAAM;AACtB,UAAM,QAAQ,aAAa,GAAG;AAC9B,QAAI,CAAC,MAAO;AAEZ,UAAM,QAAQ,MAAM,GAAyB;AAC7C,QAAI,CAAC,MAAM,KAAK,EAAG,QAAO;AAAA,EAC5B;AAEA,SAAO;AACT,GAzBA;"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
import { refineResult } from "./refineResult.js";
|
|
4
|
+
const refineResultU = /* @__PURE__ */ __name((value, variant, variantMap, validators) => refineResult(variantMap)(variant)(validators)(value), "refineResultU");
|
|
5
|
+
export {
|
|
6
|
+
refineResultU
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=refineResultU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refineResultU.js","sources":["../../../src/refiners/refineResultU.ts"],"sourcesContent":["import type {\n PayloadKeys,\n ValidatorFn,\n VariantConfig,\n} from '../shared-types.js';\n\nimport { refineResult } from './refineResult.js';\nimport type { SyncRefinedResult } from './types/index.js';\n\n/**\n * Уточняет значение по карте вариантов в не-curry стиле вызова.\n *\n * @typeParam TMap - Тип карты конфигурации вариантов.\n * @typeParam K - Ключ целевого варианта.\n * @typeParam TValidators - Карта валидаторов для полей payload.\n * @param value - Значение для валидации и уточнения.\n * @param variant - Ключ целевого варианта.\n * @param variantMap - Карта конфигурации вариантов.\n * @param validators - Валидаторы payload для целевого варианта.\n * @returns Уточненное значение или `null`.\n * @since 0.1.0\n * @see {@link refineResult} - Curry-конструктор refiner.\n * @example\n * ```ts\n * import { refineResultU } from '@resultsafe/core-fp-result';\n *\n * const map = { ok: { payload: 'value' } } as const;\n * const out = refineResultU({ type: 'ok', value: 1 }, 'ok', map, {\n * value: (x: unknown): x is number => typeof x === 'number',\n * });\n *\n * console.log(out?.type); // ok\n * ```\n * @public\n */\nexport const refineResultU = <\n TMap extends Record<string, VariantConfig>,\n K extends keyof TMap & string,\n TValidators extends Partial<Record<PayloadKeys<TMap[K]>, ValidatorFn>>,\n>(\n value: unknown,\n variant: K,\n variantMap: TMap,\n validators: TValidators,\n): SyncRefinedResult<K, TMap, TValidators> | null =>\n refineResult(variantMap)(variant)(validators)(value);\n\r\n\r\n"],"names":[],"mappings":";;;AAmCO,MAAM,gBAAgB,wBAK3B,OACA,SACA,YACA,eAEA,aAAa,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,GAVxB;"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
function refineVariantMap(value, variantMap, validators) {
|
|
4
|
+
if (typeof value !== "object" || value === null || !("type" in value)) {
|
|
5
|
+
return null;
|
|
6
|
+
}
|
|
7
|
+
const rawType = value.type;
|
|
8
|
+
if (typeof rawType !== "string" || !(rawType in variantMap)) return null;
|
|
9
|
+
const k = rawType;
|
|
10
|
+
const config = variantMap[k];
|
|
11
|
+
if (!config) return null;
|
|
12
|
+
const payload = config.payload;
|
|
13
|
+
const keys = payload === "never" ? [] : Array.isArray(payload) ? payload : [payload];
|
|
14
|
+
const vvs = validators[k];
|
|
15
|
+
if (vvs) {
|
|
16
|
+
const obj = value;
|
|
17
|
+
for (const key of keys) {
|
|
18
|
+
const check = vvs[key];
|
|
19
|
+
if (!check) continue;
|
|
20
|
+
if (!check(obj[key])) return null;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return value;
|
|
24
|
+
}
|
|
25
|
+
__name(refineVariantMap, "refineVariantMap");
|
|
26
|
+
export {
|
|
27
|
+
refineVariantMap
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=refineVariantMap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refineVariantMap.js","sources":["../../../src/refiners/refineVariantMap.ts"],"sourcesContent":["import type {\n PayloadKeys,\n ValidatorFn,\n VariantConfig,\n} from '../shared-types.js';\n\nimport type { SyncRefinedResultUnion } from './types/SyncRefinedResultUnion.js';\nimport type { SyncValidatorMap } from './types/SyncValidatorMap.js';\n\n/**\n * Уточняет значение дискриминированного объединения по полной карте вариантов.\n *\n * @typeParam TMap - Тип карты конфигурации вариантов.\n * @typeParam TValidators - Тип карты валидаторов по вариантам.\n * @param value - Значение для валидации и уточнения.\n * @param variantMap - Полная карта конфигурации вариантов.\n * @param validators - Валидаторы, сгруппированные по ключу варианта.\n * @returns Уточненный элемент объединения или `null`.\n * @since 0.1.0\n * @see {@link refineResult} - Refines one concrete variant key.\n * @example\n * ```ts\n * import { refineVariantMap } from '@resultsafe/core-fp-result';\n *\n * const map = {\n * created: { payload: 'id' },\n * failed: { payload: 'reason' },\n * } as const;\n *\n * const out = refineVariantMap({ type: 'created', id: '1' }, map, {\n * created: { id: (x: unknown): x is string => typeof x === 'string' },\n * failed: { reason: (x: unknown): x is string => typeof x === 'string' },\n * });\n *\n * console.log(out?.type); // created\n * ```\n * @public\n */\nexport function refineVariantMap<\n TMap extends Record<string, VariantConfig>,\n TValidators extends SyncValidatorMap<TMap>,\n>(\n value: unknown,\n variantMap: TMap,\n validators: TValidators,\n): SyncRefinedResultUnion<TMap, TValidators> | null {\n if (typeof value !== 'object' || value === null || !('type' in value)) {\n return null;\n }\n\n const rawType = (value as { type?: unknown }).type;\n if (typeof rawType !== 'string' || !(rawType in variantMap)) return null;\n\n // фиксируем конкретный ключ варианта\n type K = Extract<keyof TMap, string>;\n const k = rawType as K;\n\n const config = variantMap[k];\n if (!config) return null;\n\n // ключи payload для конкретного K\n const payload = config.payload;\n const keys = (\n payload === 'never' ? [] : Array.isArray(payload) ? payload : [payload]\n ) as readonly PayloadKeys<TMap[typeof k]>[];\n\n // валидаторы, согласованные с конкретным K\n const vvs = validators[k] as\n | Partial<Record<PayloadKeys<TMap[typeof k]>, ValidatorFn>>\n | undefined;\n\n if (vvs) {\n const obj = value as Record<string, unknown>;\n for (const key of keys) {\n const check = vvs[key];\n if (!check) continue;\n if (!check(obj[key as string])) return null;\n }\n }\n\n return value as SyncRefinedResultUnion<TMap, TValidators>;\n}\n\r\n\r\n"],"names":[],"mappings":";;AAsCO,SAAS,iBAId,OACA,YACA,YACkD;AAClD,MAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,EAAE,UAAU,QAAQ;AACrE,WAAO;AAAA,EACT;AAEA,QAAM,UAAW,MAA6B;AAC9C,MAAI,OAAO,YAAY,YAAY,EAAE,WAAW,YAAa,QAAO;AAIpE,QAAM,IAAI;AAEV,QAAM,SAAS,WAAW,CAAC;AAC3B,MAAI,CAAC,OAAQ,QAAO;AAGpB,QAAM,UAAU,OAAO;AACvB,QAAM,OACJ,YAAY,UAAU,KAAK,MAAM,QAAQ,OAAO,IAAI,UAAU,CAAC,OAAO;AAIxE,QAAM,MAAM,WAAW,CAAC;AAIxB,MAAI,KAAK;AACP,UAAM,MAAM;AACZ,eAAW,OAAO,MAAM;AACtB,YAAM,QAAQ,IAAI,GAAG;AACrB,UAAI,CAAC,MAAO;AACZ,UAAI,CAAC,MAAM,IAAI,GAAa,CAAC,EAAG,QAAO;AAAA,IACzC;AAAA,EACF;AAEA,SAAO;AACT;AA3CgB;"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
const getPayloadKeys = /* @__PURE__ */ __name((config) => {
|
|
4
|
+
const p = config.payload;
|
|
5
|
+
if (p === "never") return [];
|
|
6
|
+
return Array.isArray(p) ? p : [p];
|
|
7
|
+
}, "getPayloadKeys");
|
|
8
|
+
export {
|
|
9
|
+
getPayloadKeys
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=getPayloadKeys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getPayloadKeys.js","sources":["../../../../src/refiners/utils/getPayloadKeys.ts"],"sourcesContent":["import type {\n PayloadKeys,\n VariantConfig,\n} from '../../shared-types.js';\n\n/**\n * Нормализует конфигурацию payload варианта в список ключей.\n *\n * @typeParam C - Тип конфигурации варианта.\n * @param config - Конфигурация варианта с определением payload.\n * @returns Ключи payload как readonly-массив.\n * @since 0.1.0\n * @example\n * ```ts\n * import { getPayloadKeys } from '@resultsafe/core-fp-result/src/refiners/utils/getPayloadKeys.js';\n *\n * const keys = getPayloadKeys({ payload: ['id', 'meta'] } as const);\n * console.log(keys.length); // 2\n * ```\n * @internal\n */\nexport const getPayloadKeys = <C extends VariantConfig>(\n config: C,\n): readonly PayloadKeys<C>[] => {\n const p = config.payload;\n if (p === 'never') return [];\n return (Array.isArray(p) ? p : [p]) as readonly PayloadKeys<C>[];\n};\n\r\n\r\n"],"names":[],"mappings":";;AAqBO,MAAM,iBAAiB,wBAC5B,WAC8B;AAC9B,QAAM,IAAI,OAAO;AACjB,MAAI,MAAM,QAAS,QAAO,CAAA;AAC1B,SAAQ,MAAM,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC;AACnC,GAN8B;"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@resultsafe/core-fp-result",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"sideEffects": false,
|
|
6
|
+
"main": "./cjs/index.js",
|
|
7
|
+
"module": "./esm/index.js",
|
|
8
|
+
"browser": "./umd/resultsafe-monorepo-core-fp-result.umd.js",
|
|
9
|
+
"types": "./types/index.d.ts",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"types": "./types/index.d.ts",
|
|
13
|
+
"import": "./esm/index.js",
|
|
14
|
+
"require": "./cjs/index.js"
|
|
15
|
+
},
|
|
16
|
+
"./Ok": {
|
|
17
|
+
"types": "./types/constructors/Ok.d.ts",
|
|
18
|
+
"import": "./esm/constructors/Ok.js",
|
|
19
|
+
"require": "./cjs/constructors/Ok.js"
|
|
20
|
+
},
|
|
21
|
+
"./Err": {
|
|
22
|
+
"types": "./types/constructors/Err.d.ts",
|
|
23
|
+
"import": "./esm/constructors/Err.js",
|
|
24
|
+
"require": "./cjs/constructors/Err.js"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"files": [
|
|
28
|
+
"cjs",
|
|
29
|
+
"esm",
|
|
30
|
+
"types",
|
|
31
|
+
"umd",
|
|
32
|
+
"docs",
|
|
33
|
+
"README.md",
|
|
34
|
+
"LICENSE"
|
|
35
|
+
]
|
|
36
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Result } from '../shared-types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Создает ошибочное значение `Result` из переданного payload ошибки.
|
|
4
|
+
*
|
|
5
|
+
* @typeParam E - Тип значения ошибки.
|
|
6
|
+
* @typeParam T - The success type for the resulting `Result`.
|
|
7
|
+
* @param error - Payload ошибки для обёртки.
|
|
8
|
+
* @returns A `Result` with `ok: false` and the provided `error`.
|
|
9
|
+
* @since 0.1.0
|
|
10
|
+
* @see {@link Ok} - Creates a successful `Result`.
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* import { Err } from '@resultsafe/core-fp-result';
|
|
14
|
+
*
|
|
15
|
+
* const result = Err<string, number>('boom');
|
|
16
|
+
* console.log(result.ok); // false
|
|
17
|
+
* ```
|
|
18
|
+
* @public
|
|
19
|
+
*/
|
|
20
|
+
export declare const Err: <E, T = never>(error: E) => Result<T, E>;
|
|
21
|
+
//# sourceMappingURL=Err.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Err.d.ts","sourceRoot":"","sources":["../../../src/constructors/Err.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,GAAG,GAAI,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,OAAO,CAAC,KAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CACvB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Result } from '../shared-types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Создает успешное значение `Result` из переданного payload.
|
|
4
|
+
*
|
|
5
|
+
* @typeParam T - Тип успешного значения.
|
|
6
|
+
* @typeParam E - The error type for the resulting `Result`.
|
|
7
|
+
* @param value - Payload успеха для обёртки.
|
|
8
|
+
* @returns A `Result` with `ok: true` and the provided `value`.
|
|
9
|
+
* @since 0.1.0
|
|
10
|
+
* @see {@link Err} - Creates an error `Result`.
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* import { Ok } from '@resultsafe/core-fp-result';
|
|
14
|
+
*
|
|
15
|
+
* const result = Ok<number, string>(42);
|
|
16
|
+
* console.log(result.ok); // true
|
|
17
|
+
* ```
|
|
18
|
+
* @public
|
|
19
|
+
*/
|
|
20
|
+
export declare const Ok: <T, E = never>(value: T) => Result<T, E>;
|
|
21
|
+
//# sourceMappingURL=Ok.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Ok.d.ts","sourceRoot":"","sources":["../../../src/constructors/Ok.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,EAAE,GAAI,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,OAAO,CAAC,KAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CACvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/constructors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/guards/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Result } from '../shared-types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Проверяет, находится ли `Result` в ветке ошибки.
|
|
4
|
+
*
|
|
5
|
+
* @typeParam T - Тип успешного значения.
|
|
6
|
+
* @typeParam E - Тип значения ошибки.
|
|
7
|
+
* @param result - `Result` для проверки.
|
|
8
|
+
* @returns `true` when `result.ok` equals `false`.
|
|
9
|
+
* @since 0.1.0
|
|
10
|
+
* @see {@link isOk} - Checks the success branch.
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* import { Err, isErr } from '@resultsafe/core-fp-result';
|
|
14
|
+
*
|
|
15
|
+
* const result = Err('boom');
|
|
16
|
+
* console.log(isErr(result)); // true
|
|
17
|
+
* ```
|
|
18
|
+
* @public
|
|
19
|
+
*/
|
|
20
|
+
export declare const isErr: <T, E>(result: Result<T, E>) => result is {
|
|
21
|
+
ok: false;
|
|
22
|
+
error: E;
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=isErr.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isErr.d.ts","sourceRoot":"","sources":["../../../src/guards/isErr.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,EAAE,CAAC,EACxB,QAAQ,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KACnB,MAAM,IAAI;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAyB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type Result } from '../shared-types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Проверяет, что `Result` завершился ошибкой и удовлетворяет предикату.
|
|
4
|
+
*
|
|
5
|
+
* @typeParam T - Тип успешного значения.
|
|
6
|
+
* @typeParam E - Тип значения ошибки.
|
|
7
|
+
* @param result - `Result` для проверки.
|
|
8
|
+
* @param predicate - Предикат, применяемый к значению ошибки.
|
|
9
|
+
* @returns `true` when the value is `Err` and the predicate returns `true`.
|
|
10
|
+
* @since 0.1.0
|
|
11
|
+
* @see {@link isErr} - Performs the base error check.
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* import { Err, isErrAnd } from '@resultsafe/core-fp-result';
|
|
15
|
+
*
|
|
16
|
+
* const result = Err({ code: 503 });
|
|
17
|
+
* console.log(isErrAnd(result, (error) => error.code >= 500)); // true
|
|
18
|
+
* ```
|
|
19
|
+
* @public
|
|
20
|
+
*/
|
|
21
|
+
export declare const isErrAnd: <T, E>(result: Result<T, E>, predicate: (error: E) => boolean) => boolean;
|
|
22
|
+
//# sourceMappingURL=isErrAnd.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isErrAnd.d.ts","sourceRoot":"","sources":["../../../src/guards/isErrAnd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAIjD;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,EAAE,CAAC,EAC3B,QAAQ,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EACpB,WAAW,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,KAC/B,OAAmD,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Result } from '../shared-types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Проверяет, находится ли `Result` в ветке успеха.
|
|
4
|
+
*
|
|
5
|
+
* @typeParam T - Тип успешного значения.
|
|
6
|
+
* @typeParam E - Тип значения ошибки.
|
|
7
|
+
* @param result - `Result` для проверки.
|
|
8
|
+
* @returns `true` when `result.ok` equals `true`.
|
|
9
|
+
* @since 0.1.0
|
|
10
|
+
* @see {@link isErr} - Checks the error branch.
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* import { Ok, isOk } from '@resultsafe/core-fp-result';
|
|
14
|
+
*
|
|
15
|
+
* const result = Ok(10);
|
|
16
|
+
* console.log(isOk(result)); // true
|
|
17
|
+
* ```
|
|
18
|
+
* @public
|
|
19
|
+
*/
|
|
20
|
+
export declare const isOk: <T, E>(result: Result<T, E>) => result is {
|
|
21
|
+
ok: true;
|
|
22
|
+
value: T;
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=isOk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isOk.d.ts","sourceRoot":"","sources":["../../../src/guards/isOk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,IAAI,GAAI,CAAC,EAAE,CAAC,EACvB,QAAQ,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KACnB,MAAM,IAAI;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAwB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type Result } from '../shared-types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Проверяет, что `Result` успешен и удовлетворяет предикату.
|
|
4
|
+
*
|
|
5
|
+
* @typeParam T - Тип успешного значения.
|
|
6
|
+
* @typeParam E - Тип значения ошибки.
|
|
7
|
+
* @param result - `Result` для проверки.
|
|
8
|
+
* @param predicate - Предикат, применяемый к успешному значению.
|
|
9
|
+
* @returns `true` when the value is `Ok` and the predicate returns `true`.
|
|
10
|
+
* @since 0.1.0
|
|
11
|
+
* @see {@link isOk} - Performs the base success check.
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* import { Ok, isOkAnd } from '@resultsafe/core-fp-result';
|
|
15
|
+
*
|
|
16
|
+
* const result = Ok(8);
|
|
17
|
+
* console.log(isOkAnd(result, (value) => value % 2 === 0)); // true
|
|
18
|
+
* ```
|
|
19
|
+
* @public
|
|
20
|
+
*/
|
|
21
|
+
export declare const isOkAnd: <T, E>(result: Result<T, E>, predicate: (value: T) => boolean) => boolean;
|
|
22
|
+
//# sourceMappingURL=isOkAnd.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isOkAnd.d.ts","sourceRoot":"","sources":["../../../src/guards/isOkAnd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAIjD;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,CAAC,EAC1B,QAAQ,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EACpB,WAAW,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,KAC/B,OAAkD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Checks that an object owns a property key. @internal */
|
|
2
|
+
export declare const hasOwn: <K extends PropertyKey>(obj: Record<string, unknown>, key: K) => obj is Record<K, unknown>;
|
|
3
|
+
/** Checks that a value is a non-null object record. @internal */
|
|
4
|
+
export declare const isObject: (value: unknown) => value is Record<string, unknown>;
|
|
5
|
+
//# sourceMappingURL=object.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../../src/internal/object.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,eAAO,MAAM,MAAM,GAAI,CAAC,SAAS,WAAW,EAC1C,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,KAAK,CAAC,KACL,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE,OAAO,CAAmD,CAAC;AAE/E,iEAAiE;AACjE,eAAO,MAAM,QAAQ,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAC5B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** Represents an empty internal option value. @internal */
|
|
2
|
+
export declare const None: {
|
|
3
|
+
readonly some: false;
|
|
4
|
+
};
|
|
5
|
+
/** Wraps an internal option value as present. @internal */
|
|
6
|
+
export declare const Some: <T>(value: T) => {
|
|
7
|
+
readonly some: true;
|
|
8
|
+
readonly value: T;
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=option.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"option.d.ts","sourceRoot":"","sources":["../../../src/internal/option.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,eAAO,MAAM,IAAI;;CAA2B,CAAC;AAE7C,2DAA2D;AAC3D,eAAO,MAAM,IAAI,GAAI,CAAC,EAAE,OAAO,CAAC;;;CAAqC,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type Result } from '../shared-types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Цепляет вычисление, которое возвращает другой `Result`.
|
|
4
|
+
*
|
|
5
|
+
* @typeParam T - The input success type.
|
|
6
|
+
* @typeParam U - The output success type.
|
|
7
|
+
* @typeParam E - Общий тип ошибки.
|
|
8
|
+
* @param result - Исходный `Result`.
|
|
9
|
+
* @param fn - Функция, применяемая, когда `result` имеет `Ok`.
|
|
10
|
+
* @returns Преобразованный `Result` или исходный `Err`.
|
|
11
|
+
* @since 0.1.0
|
|
12
|
+
* @see {@link map} - Преобразует только успешное значение.
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { Ok, Err, andThen } from '@resultsafe/core-fp-result';
|
|
16
|
+
*
|
|
17
|
+
* const parsed = andThen(Ok('12'), (value) => {
|
|
18
|
+
* const n = Number(value);
|
|
19
|
+
* return Number.isNaN(n) ? Err('invalid') : Ok(n);
|
|
20
|
+
* });
|
|
21
|
+
* console.log(parsed.ok); // true
|
|
22
|
+
* ```
|
|
23
|
+
* @public
|
|
24
|
+
*/
|
|
25
|
+
export declare const andThen: <T, U, E>(result: Result<T, E>, fn: (value: T) => Result<U, E>) => Result<U, E>;
|
|
26
|
+
//# sourceMappingURL=andThen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"andThen.d.ts","sourceRoot":"","sources":["../../../src/methods/andThen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAIjD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAC7B,QAAQ,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EACpB,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAC7B,MAAM,CAAC,CAAC,EAAE,CAAC,CAAiE,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type Option } from '../shared-types.js';
|
|
2
|
+
import { type Result } from '../shared-types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Извлекает ветку ошибки в виде `Option`.
|
|
5
|
+
*
|
|
6
|
+
* @typeParam T - Тип успешного значения.
|
|
7
|
+
* @typeParam E - Тип значения ошибки.
|
|
8
|
+
* @param result - Исходный `Result`.
|
|
9
|
+
* @returns `Some(error)` для `Err`, иначе `None`.
|
|
10
|
+
* @since 0.1.0
|
|
11
|
+
* @see {@link ok} - Извлекает ветку успеха.
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* import { Err, err } from '@resultsafe/core-fp-result';
|
|
15
|
+
*
|
|
16
|
+
* const value = err(Err('boom'));
|
|
17
|
+
* console.log(value.some); // true
|
|
18
|
+
* ```
|
|
19
|
+
* @public
|
|
20
|
+
*/
|
|
21
|
+
export declare const err: <T, E>(result: Result<T, E>) => Option<E>;
|
|
22
|
+
//# sourceMappingURL=err.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"err.d.ts","sourceRoot":"","sources":["../../../src/methods/err.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAKjD;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,GAAG,GAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,MAAM,CAAC,CAAC,CACd,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type Result } from '../shared-types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Возвращает успешное значение или выбрасывает исключение с пользовательским сообщением.
|
|
4
|
+
*
|
|
5
|
+
* @typeParam T - Тип успешного значения.
|
|
6
|
+
* @typeParam E - Тип значения ошибки.
|
|
7
|
+
* @param result - Исходный `Result`.
|
|
8
|
+
* @param msg - Сообщение об ошибке, используемое когда `result` имеет `Err`.
|
|
9
|
+
* @returns Распакованное успешное значение.
|
|
10
|
+
* @throws Error - Выбрасывает исключение, когда `result` имеет `Err`.
|
|
11
|
+
* @since 0.1.0
|
|
12
|
+
* @see {@link expectErr} - Симметричный helper для ветки ошибки.
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { Ok, expect } from '@resultsafe/core-fp-result';
|
|
16
|
+
*
|
|
17
|
+
* const value = expect(Ok(5), 'must be ok');
|
|
18
|
+
* console.log(value); // 5
|
|
19
|
+
* ```
|
|
20
|
+
* @public
|
|
21
|
+
*/
|
|
22
|
+
export declare const expect: <T, E>(result: Result<T, E>, msg: string) => T;
|
|
23
|
+
//# sourceMappingURL=expect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expect.d.ts","sourceRoot":"","sources":["../../../src/methods/expect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAIjD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,MAAM,GAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,MAAM,KAAG,CAKhE,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type Result } from '../shared-types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Возвращает значение ошибки или выбрасывает исключение с пользовательским сообщением.
|
|
4
|
+
*
|
|
5
|
+
* @typeParam T - Тип успешного значения.
|
|
6
|
+
* @typeParam E - Тип значения ошибки.
|
|
7
|
+
* @param result - Исходный `Result`.
|
|
8
|
+
* @param msg - Сообщение об ошибке, используемое когда `result` имеет `Ok`.
|
|
9
|
+
* @returns Распакованное значение ошибки.
|
|
10
|
+
* @throws Error - Выбрасывает исключение, когда `result` имеет `Ok`.
|
|
11
|
+
* @since 0.1.0
|
|
12
|
+
* @see {@link expect} - Симметричный helper для ветки успеха.
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { Err, expectErr } from '@resultsafe/core-fp-result';
|
|
16
|
+
*
|
|
17
|
+
* const error = expectErr(Err('boom'), 'must be err');
|
|
18
|
+
* console.log(error); // boom
|
|
19
|
+
* ```
|
|
20
|
+
* @public
|
|
21
|
+
*/
|
|
22
|
+
export declare const expectErr: <T, E>(result: Result<T, E>, msg: string) => E;
|
|
23
|
+
//# sourceMappingURL=expectErr.d.ts.map
|