{"ref":"artifact:marianfoo-ui5-middleware-odata-recorder","page":"/artifacts/marianfoo-ui5-middleware-odata-recorder","json":"/artifacts/marianfoo-ui5-middleware-odata-recorder.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"marianfoo-ui5-middleware-odata-recorder","name":"ui5-middleware-odata-recorder","artifact_type":"build-tool","ecosystem":"ui5","domain":"developer-experience","origin_ring":"independent","description":{"one_line":"A UI5 server middleware that records the OData traffic a running app makes against a real backend and writes entity JSON files and metadata.xml that the Fiori elements mock server can replay.","short":"UI5 middleware recording OData traffic as mock server datasets","what_it_solves":"Mock data for a Fiori app is usually written by hand from the metadata, which is the part that goes out of date first. This records it from a real backend instead: the middleware sits behind the Fiori tools proxy in `ui5.yaml`, recording starts from `?__record=1` on the URL or from its own `/__recorder/start` endpoint, and stopping writes entity JSON files and `metadata.xml` into the target directory configured per service alias, version and base path. A `recordingId` suffixes the filenames, so datasets for several SAP clients or several scenarios sit side by side and replay is chosen by the same parameter. `removeSelectParams` strips `$select` from the recorded requests so the files hold full entities rather than whatever the app happened to project, and `redact` drops named fields on the way out. Replay is the UI5 server started against a mock configuration, with no backend at all.","when_not_to_use":"It records what the app actually asked for, so an entity no recorded journey touched is not in the dataset and replay will not answer for it. Its own README asks for `fiori-tools-appreload` to be disabled while recording, because a reload loop is what happens otherwise."},"links":{"npm":"https://www.npmjs.com/package/ui5-middleware-odata-recorder","repo":"https://github.com/marianfoo/ui5-middleware-odata-recorder"},"identity":{"author":"Marian Zeis","license":"Apache-2.0"},"source_available":true,"compat":{"runtimes":["build-time"],"typed":true},"type_properties":{"distribution":{"value":["npm"],"sources":[{"url":"https://github.com/marianfoo/ui5-middleware-odata-recorder","title":"ui5-middleware-odata-recorder — README","checked":"2026-10-18","quote":"npm install --save-dev ui5-middleware-odata-recorder"}]}},"provides":[{"capability":"capability:ui5-build-tooling","what_it_does":"A custom server middleware in `ui5.yaml`, placed after the Fiori tools proxy, controlled either by URL parameters on the served app or by its own REST endpoints for start, status and stop.","sources":[{"url":"https://www.npmjs.com/package/ui5-middleware-odata-recorder","title":"ui5-middleware-odata-recorder — npm","checked":"2026-09-18","quote":"UI5 custom server middleware to record OData traffic for mockserver replay"},{"url":"https://github.com/marianfoo/ui5-middleware-odata-recorder","title":"marianfoo/ui5-middleware-odata-recorder — README, Key Features","checked":"2026-09-18","quote":"**Easy Control**: REST API endpoints or URL parameters to start/stop recording"}]},{"capability":"capability:ui5-testing","what_it_does":"Produces the datasets and metadata the Fiori elements mock server replays, so a journey can be re-run against recorded responses instead of a live backend.","sources":[{"url":"https://github.com/marianfoo/ui5-middleware-odata-recorder","title":"marianfoo/ui5-middleware-odata-recorder — README","checked":"2026-09-18","quote":"Perfect for offline development, testing, and creating mock data without backend dependencies."},{"url":"https://github.com/marianfoo/ui5-middleware-odata-recorder","title":"marianfoo/ui5-middleware-odata-recorder — README, Key Features","checked":"2026-09-18","quote":"**Ready-to-Use**: Generates files compatible with SAP FE Mockserver"}]}],"maintainers":["actor:marianfoo"],"provenance":{"discovered_via":[{"source":"source:github","channel":"marianfoo"}],"first_seen":"2026-09-18"},"history":[{"date":"2026-09-18","field":"entry","from":null,"to":"created","reason":"Read out of the marianfoo account listing. Two provides edges because the two halves are different claims: it is a UI5 server middleware, and what it produces is the mock-server dataset that capability:ui5-testing's core coverage already names as the framework's backend stand-in."}],"drafted_with_ai":true,"contributors":["actor:marianfoo"]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"fair","evidence":"11 months since release"},{"label":"Continuity","tier":"fair","evidence":"one contributor, personally owned"},{"label":"Repository","tier":"fair","evidence":"pushed 2025-11, 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":"workflows present, no completed run on the default branch"}],"practice":[{"label":"Tests","tier":"good","evidence":"84 test files, npm test"},{"label":"Docs","tier":"good","evidence":"docs/ with 8 pages, README 4 KB"},{"label":"Changelog","tier":"good","evidence":"CHANGELOG in the repo"}],"reach":[{"value":2,"unit":"installs/week"},{"value":0,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-26","latest_version":"0.0.13","majors":{"0.0":{"version":"0.0.2","date":"2025-10-01"}},"license":"Apache-2.0","first_release":"2025-10-01","last_release":"2025-11-12","releases":12,"cadence_days":0,"maintainers":1,"repository":"git+https://github.com/marianfoo/ui5-odata-recorder.git","repository_directory":null,"peer_cds":null,"dependencies":2,"node_engine":">=20.0.0","test_script":true,"types":true,"downloads_weekly":2,"downloads_monthly":44,"stars":0,"forks":0,"open_issues":0,"archived":false,"pushed_at":"2025-11-12","license_spdx":"Apache-2.0","org_owned":false,"default_branch":"main","created_at":"2025-10-01T14:35:32Z","open_prs":0,"tree_truncated":false,"test_files":84,"workflows":1,"other_ci":false,"readme_bytes":4491,"docs_files":8,"changelog":true,"license_file":true,"dts_files":0,"first_commit":"2025-10-01","last_commit":"2025-11-12","commits":30,"contributors":1,"readme_path":"README.md","readme_sha":"579b399766c5dfaefa5c1460c22e1402ee2b80f2","months_since_release":11,"dormant":false,"repo_read":"2026-10-26"},"release_notes":{"license":"Apache-2.0","quotable":true,"source":{"kind":"repo","path":"CHANGELOG.md","ref":"main","url":"https://github.com/marianfoo/ui5-middleware-odata-recorder/blob/main/CHANGELOG.md"},"format":"keep-a-changelog","releases":[{"version":"0.0.12","date":"2025-11-12","date_source":"heading","heading":"[0.0.12] - 2025-11-12","url":"https://github.com/marianfoo/ui5-middleware-odata-recorder/blob/main/CHANGELOG.md#0012---2025-11-12","sections":[{"kind":"fix","heading":"Fixed","items":4},{"kind":"change","heading":"Changed","items":2},{"kind":"other","heading":"Impact","items":0}],"hash":"7d0e7377e6783a9f"},{"version":"0.0.11","date":"2025-11-11","date_source":"heading","heading":"[0.0.11] - 2025-11-11","url":"https://github.com/marianfoo/ui5-middleware-odata-recorder/blob/main/CHANGELOG.md#0011---2025-11-11","sections":[{"kind":"feature","heading":"Added","items":4},{"kind":"fix","heading":"Fixed","items":3}],"hash":"551e19ac067690be"},{"version":"0.0.10","date":"2025-11-10","date_source":"heading","heading":"[0.0.10] - 2025-11-10","url":"https://github.com/marianfoo/ui5-middleware-odata-recorder/blob/main/CHANGELOG.md#0010---2025-11-10","sections":[{"kind":"feature","heading":"Added","items":2}],"hash":"10c21e4a6ca04318"}],"versions":[{"version":"0.0.13","date":"2025-11-12"},{"version":"0.0.12","date":"2025-11-12"},{"version":"0.0.11","date":"2025-11-12"},{"version":"0.0.10","date":"2025-11-12"},{"version":"0.0.9","date":"2025-11-11"},{"version":"0.0.8","date":"2025-11-11"},{"version":"0.0.7","date":"2025-10-24"},{"version":"0.0.6","date":"2025-10-08"},{"version":"0.0.5","date":"2025-10-08"},{"version":"0.0.4","date":"2025-10-08"},{"version":"0.0.3","date":"2025-10-08"},{"version":"0.0.2","date":"2025-10-01"}],"crawled_at":"2026-10-25"},"edges":{"maintainers":[{"ref":"actor:marianfoo","name":"Marian Zeis","json":"/actors/marianfoo.json"}],"contributors":[{"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":[]}}