{"ref":"artifact:furkancosgun-either-for-abap","page":"/artifacts/furkancosgun-either-for-abap","json":"/artifacts/furkancosgun-either-for-abap.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"furkancosgun-either-for-abap","name":"EITHER-FOR-ABAP","artifact_type":"package","ecosystem":"abap","domain":"protocols-and-apis","origin_ring":"independent","description":{"one_line":"An ABAP class implementing the Either pattern, holding a success value or an error from a method call in one object, with checks for which side it holds and exceptions for misuse.","short":"ABAP class implementing the Either pattern","what_it_solves":"zcl_either holds one of two values: a right for a successful result, or a left for an error. A caller builds one with left, right, or cond, which picks between the two on a boolean condition, then asks is_left or is_right which side it holds and reads it back with get_left or get_right. The class raises zcx_either_invalid_type when a value does not fit the side it is given to, and zcx_either_invalid_access when the wrong side is read. It covers building and reading that one object; what happens after a caller finds a left value is left to the caller."},"links":{"repo":"https://github.com/furkancosgun/EITHER-FOR-ABAP"},"identity":{"license":"MIT"},"source_available":true,"provides":[{"capability":"capability:error-handling","what_it_does":"Wraps a method's outcome as a right (success) or left (error) value on zcl_either, checked with is_left and is_right and read with get_left and get_right.","sources":[{"url":"https://github.com/furkancosgun/EITHER-FOR-ABAP","title":"furkancosgun/EITHER-FOR-ABAP — README","checked":"2026-09-14","quote":"The `Either` pattern represents the outcome of an operation with two possible results: a successful result (`right`) or an error message (`left`)."}]}],"maintainers":["actor:furkancosgun"],"drafted_with_ai":true,"provenance":{"discovered_via":[{"source":"source:dotabap"}],"first_seen":"2026-09-14"},"contributors":["actor:furkancosgun"]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"unknown","evidence":"no release data"},{"label":"Continuity","tier":"fair","evidence":"one contributor, personally owned"},{"label":"Repository","tier":"poor","evidence":"pushed 2024-08, not archived"}],"compatibility":[{"label":"Declared for","tier":"fair","evidence":"nothing declared"},{"label":"Survived majors","tier":"unknown","evidence":"not read on ABAP: its lines run side by side"},{"label":"Maintainer's CI","tier":"fair","evidence":"no CI configured"}],"practice":[{"label":"Tests","tier":"poor","evidence":"none found in the tree"},{"label":"Docs","tier":"good","evidence":"README 7 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":null,"unit":"installs/week"},{"value":6,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-26","npm":"not published under this name","stars":6,"forks":0,"open_issues":0,"archived":false,"pushed_at":"2024-08-28","license_spdx":"MIT","org_owned":false,"default_branch":"main","created_at":"2024-08-28T08:22:52Z","open_prs":0,"tree_truncated":false,"test_files":0,"workflows":0,"other_ci":false,"readme_bytes":7166,"docs_files":0,"changelog":false,"license_file":true,"dts_files":0,"first_commit":"2024-08-28","last_commit":"2024-08-28","commits":5,"contributors":1,"readme_path":"README.md","readme_sha":"a98ecb5b688354911fb40d0ba8271f42df564044","repo_read":"2026-10-26"},"edges":{"maintainers":[{"ref":"actor:furkancosgun","name":"Furkan COSGUN","json":"/actors/furkancosgun.json"}],"contributors":[{"ref":"actor:furkancosgun","name":"Furkan COSGUN","json":"/actors/furkancosgun.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}