{"ref":"artifact:miyasuta-attachment-reuse-controls-sample","page":"/artifacts/miyasuta-attachment-reuse-controls-sample","json":"/artifacts/miyasuta-attachment-reuse-controls-sample.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"miyasuta-attachment-reuse-controls-sample","name":"attachment-reuse-controls-sample","artifact_type":"sample","ecosystem":"cap","flavors":[{"key":"node","source":{"url":"https://github.com/miyasuta/attachment-reuse-controls-sample","title":"miyasuta/attachment-reuse-controls-sample — README","checked":"2026-09-13","quote":"- Runtime: SAP Cloud Application Programming Model (CAP), Node.js"}}],"domain":"data-and-persistence","origin_ring":"independent","description":{"one_line":"A CAP Node.js service on [@cap-js/attachments](artifact:cap-js-attachments) with a Fiori Elements object page that embeds the [ui5-upload-controls](artifact:miyasuta-ui5-upload-controls) library as a custom section.","short":"Fiori Elements page embedding upload controls on @cap-js/attachments","what_it_solves":"The working end of the control library: the backend is any CAP service using the attachments plugin, and the control resolves the navigation path from its binding context after being handed the service URL and path as properties. The library itself is a git submodule, so the sample shows the seam rather than a copy."},"links":{"repo":"https://github.com/miyasuta/attachment-reuse-controls-sample"},"type_properties":{"form":{"value":"reference-application","sources":[{"url":"https://github.com/miyasuta/attachment-reuse-controls-sample","title":"attachment-reuse-controls-sample — README","checked":"2026-10-18","quote":"A sample project demonstrating reusable UI5 file upload controls integrated with a CAP backend using the `@cap-js/attachments` plugin."}]}},"demonstrates":["capability:attachments"],"requires":["artifact:cap-js-attachments","artifact:miyasuta-ui5-upload-controls"],"maintainers":["actor:mio-yasutake"],"provenance":{"discovered_via":[{"source":"source:github","channel":"miyasuta"}],"first_seen":"2026-09-07"},"contributors":["actor:mio-yasutake"],"drafted_with_ai":true},"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":"good","evidence":"pushed 2026-04, not archived"}],"compatibility":[{"label":"Declared for","tier":"fair","evidence":"nothing declared"},{"label":"Survived majors","tier":"unknown","evidence":"no release dates"},{"label":"Maintainer's CI","tier":"fair","evidence":"no CI configured"}],"practice":[{"label":"Tests","tier":"good","evidence":"41 test files"},{"label":"Docs","tier":"good","evidence":"docs/ with 3 pages, README 4 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":null,"unit":"installs/week"},{"value":1,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-26","npm":"not published under this name","stars":1,"forks":0,"open_issues":0,"archived":false,"pushed_at":"2026-04-06","license_spdx":null,"org_owned":false,"default_branch":"main","contributors":1,"tree_truncated":false,"test_files":41,"workflows":0,"other_ci":false,"readme_bytes":3702,"docs_files":3,"changelog":false,"license_file":false,"dts_files":0,"readme_path":"README.md","readme_sha":"a9874ca9ec7a6ff34ff35fb61790e0160ec9e9f6","created_at":"2026-03-20T21:30:38Z","open_prs":0,"first_commit":"2026-03-20","last_commit":"2026-04-06","commits":67,"repo_read":"2026-10-26"},"edges":{"maintainers":[{"ref":"actor:mio-yasutake","name":"Mio Yasutake","json":"/actors/mio-yasutake.json"}],"contributors":[{"ref":"actor:mio-yasutake","name":"Mio Yasutake","json":"/actors/mio-yasutake.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}