{"ref":"artifact:abapify-promise","page":"/artifacts/abapify-promise","json":"/artifacts/abapify-promise.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"abapify-promise","name":"abapify/promise","artifact_type":"package","ecosystem":"abap","domain":"operations-and-runtime","origin_ring":"independent","description":{"one_line":"A Promise and async/await implementation for ABAP, modelled on JavaScript's Promise API, that runs a resolver as a background task and offers all, race, resolve, reject and all_settled.","short":"Promise and async/await implementation for ABAP","what_it_solves":"Creating a zcl_promise with a resolver runs that resolver as a serialised asynchronous task in the background, so the rest of the calling program keeps running instead of waiting on it immediately; a handler's on_fulfilled or on_rejected method, or an await call inside a class that inherits from zcl_abap_async, picks up the result once the task resolves or rejects. Promise=>all combines several promises into one that resolves with all their results, or rejects with the reason of whichever one rejects first, and the same class exposes race, resolve, reject and all_settled. The maintainer notes the benefit is small for a single promise and grows for a promise=>all call across several."},"links":{"repo":"https://github.com/abapify/promise"},"identity":{"license":"MIT"},"source_available":true,"maintainers":["actor:abapify"],"provides":[{"capability":"capability:parallel-processing","what_it_does":"Runs a caller-supplied resolver as a serialised asynchronous task and delivers its result back through a handler callback or an await call, combining several such tasks through promise=>all, race, resolve, reject and all_settled.","sources":[{"url":"https://github.com/abapify/promise","title":"abapify/promise — README","checked":"2026-09-14","quote":"What promise class does during inititalization - is creating an asyncronous task with serialized resolver instance."}]}],"drafted_with_ai":true,"provenance":{"discovered_via":[{"source":"source:dotabap"}],"first_seen":"2026-09-14"},"contributors":["actor:theplenkov"]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"unknown","evidence":"no release data"},{"label":"Continuity","tier":"fair","evidence":"1 contributor, org-owned"},{"label":"Repository","tier":"poor","evidence":"pushed 2023-10, 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":"fair","evidence":"README 4 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":null,"unit":"installs/week"},{"value":25,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-24","npm":"not published under this name","stars":25,"forks":5,"open_issues":1,"archived":false,"pushed_at":"2023-10-18","license_spdx":"MIT","org_owned":true,"default_branch":"main","created_at":"2022-06-22T14:46:23Z","open_prs":0,"tree_truncated":false,"test_files":0,"workflows":0,"other_ci":false,"readme_bytes":3757,"docs_files":0,"changelog":false,"license_file":true,"dts_files":0,"first_commit":"2022-06-22","last_commit":"2022-06-27","commits":12,"contributors":1,"readme_path":"README.md","readme_sha":"3fe71c59dccbcb5678baeb16833195ef31b2e2f9","repo_read":"2026-10-24"},"edges":{"maintainers":[{"ref":"actor:abapify","name":"abapify","json":"/actors/abapify.json"}],"contributors":[{"ref":"actor:theplenkov","name":"Petr Plenkov","json":"/actors/theplenkov.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}