{"ref":"artifact:marianfoo-ui5-errorhandler-sample","page":"/artifacts/marianfoo-ui5-errorhandler-sample","json":"/artifacts/marianfoo-ui5-errorhandler-sample.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"marianfoo-ui5-errorhandler-sample","name":"ui5-errorhandler-sample","artifact_type":"sample","ecosystem":"ui5","domain":"developer-experience","origin_ring":"independent","use_as":"reference","description":{"one_line":"Two UI5 apps in one repository consuming the same npm package two ways: once as a UI5 AMD module reached through a resource path the package declares, once as a plain JavaScript class converted at build time.","short":"Two UI5 apps consuming one npm package in two ways","what_it_solves":"An npm package reaches a UI5 app by two different routes, and this puts both side by side over one error handler. In `uimoduleui5` the package's own `ui5.yaml` maps `/resources/cc/errorhandler/` to its root, the app lists the package under `ui5.dependencies` in `package.json`, and `Component.js` requires `cc/errorhandler/ErrorHandler` the way it requires any framework module. In `uimodulenonui5` the same handler is written as a class over `sap/ui/base/Object` with `module.exports`, required by its package name, and [ui5-tooling-modules](artifact:ui5-community-ui5-tooling-modules) registered as middleware and task converts it; the README prints the class before and the generated `sap.ui.define` wrapper after, which is what the second route is there to show. The dependency block the README prints names `@marianfoo/ui5-errorhandler`, while `package.json` on the default branch declares `@marianfoo/ui5-cc-errorhandler`."},"links":{"repo":"https://github.com/marianfoo/ui5-errorhandler-sample"},"compat":{"runtimes":["node"]},"type_properties":{"form":{"value":"snippets","sources":[{"url":"https://github.com/marianfoo/ui5-errorhandler-sample","title":"ui5-errorhandler-sample — README","checked":"2026-10-18","quote":"Two examples are shown here"}]}},"demonstrates":["capability:ui5-build-tooling"],"maintainers":["actor:marianfoo"],"source_available":true,"drafted_with_ai":true,"provenance":{"discovered_via":[{"source":"source:github-orgs","channel":"marianfoo"}],"first_seen":"2026-09-25"},"history":[{"date":"2026-09-25","field":"entry","from":null,"to":"created","reason":"Its own README states the subject: \"This sample shows how to use npm packages\", with \"How to consume a UI5 AMD style module\" and \"How to consume a classic js class\" as the two examples. That places it on capability:ui5-build-tooling, where artifact:ui5-community-ui5-tooling-modules already sits, rather than anywhere near error handling: the error handler is the payload being consumed and not what the sample teaches. demonstrates rather than provides, because a sample is evidence. compat.runtimes is package.json's @ui5/cli devDependency. The last description sentence is the README's `\"@marianfoo/ui5-errorhandler\": \"^0.0.4\"` set against package.json's `\"@marianfoo/ui5-cc-errorhandler\": \"^0.0.1\"` on main, both read on 2026-09-25. The library itself, marianfoo/ui5-errorhandler, was read in the same batch and not drafted; see the manifest note. GitHub reported this repository as a fork on 2026-09-25 and its README credits easy-ui5 rather than an upstream repository, so no lineage is written here: the fork flag is crawled and lineage needs the maintainer's own sentence."}],"contributors":["actor:marcelschork","actor:marianfoo"]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"unknown","evidence":"no release data"},{"label":"Continuity","tier":"fair","evidence":"2 contributors"},{"label":"Repository","tier":"poor","evidence":"pushed 2022-02, not archived"}],"compatibility":[{"label":"Declared for","tier":"unknown","evidence":"no UI5 release lines in the atlas"},{"label":"Survived majors","tier":"unknown","evidence":"no UI5 release lines in the atlas"},{"label":"Maintainer's CI","tier":"fair","evidence":"no CI configured"}],"practice":[{"label":"Tests","tier":"good","evidence":"18 test files"},{"label":"Docs","tier":"good","evidence":"README 6 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":null,"unit":"installs/week"},{"value":0,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-26","npm":"not published under this name","stars":0,"forks":1,"open_issues":0,"archived":false,"pushed_at":"2022-02-20","license_spdx":null,"org_owned":false,"default_branch":"main","contributors":2,"tree_truncated":false,"test_files":18,"workflows":0,"other_ci":false,"readme_bytes":5885,"docs_files":0,"changelog":false,"license_file":false,"dts_files":0,"first_commit":"2022-02-19","last_commit":"2022-02-20","commits":7,"readme_path":"readme.md","readme_sha":"d7a9530d3b4b23a7576a711d289f7fe8cf7968a2","created_at":"2022-02-19T17:57:14Z","open_prs":0,"repo_read":"2026-10-26"},"edges":{"maintainers":[{"ref":"actor:marianfoo","name":"Marian Zeis","json":"/actors/marianfoo.json"}],"contributors":[{"ref":"actor:marcelschork","name":"Marcel Schork","json":"/actors/marcelschork.json"},{"ref":"actor:marianfoo","name":"Marian Zeis","json":"/actors/marianfoo.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}