{"ref":"artifact:marianfoo-open-rfc","page":"/artifacts/marianfoo-open-rfc","json":"/artifacts/marianfoo-open-rfc.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"marianfoo-open-rfc","name":"open-rfc","artifact_type":"package","ecosystem":"cap","serves_ecosystems":["cap"],"domain":"integration-and-messaging","origin_ring":"independent","description":{"one_line":"An SDK-free TypeScript and JavaScript client for SAP classic synchronous RFC on Node.js, with no native addon and no runtime dependencies, that works as a drop-in under [@sap/cds-rfc](artifact:sap-cds-rfc) through an npm override.","short":"SDK-free TypeScript client for SAP synchronous RFC on Node.js","what_it_solves":"Removes the proprietary SAP NW RFC SDK from the dependency chain. Zero runtime dependencies, no native addon and no post-install download, and it works as a drop-in under [@sap/cds-rfc](artifact:sap-cds-rfc) through an npm override.","when_not_to_use":"The maintainer states 0.x is beta with no production SLA, and scopes support deliberately narrowly: direct application-server transport, classic serialization and password authentication on S/4HANA 2023 and NetWeaver 7.50. Anything outside that is untested rather than unsupported."},"links":{"npm":"https://www.npmjs.com/package/open-rfc","repo":"https://github.com/marianfoo/open-rfc","docs":"https://marianfoo.github.io/open-rfc/"},"identity":{"author":"Marian Zeis","license":"Apache-2.0"},"compat":{"runtimes":["node"],"typed":true},"type_properties":{"placement":{"value":"own-process","sources":[{"url":"https://github.com/marianfoo/open-rfc","title":"open-rfc — README","checked":"2026-10-18","quote":"`open-rfc` is an SDK-free TypeScript and JavaScript client for SAP classic synchronous RFC on Node.js."}]},"distribution":{"value":["npm"],"sources":[{"url":"https://github.com/marianfoo/open-rfc","title":"open-rfc — README","checked":"2026-10-18","quote":"npm install open-rfc"}]}},"provides":["capability:rfc-connectivity"],"alternative_to":["artifact:sap-cds-rfc"],"provenance":{"discovered_via":[{"source":"source:github"},{"source":"source:maintainer"}],"first_seen":"2026-08-31"},"maintainers":["actor:marianfoo"],"contributors":["actor:marianfoo"],"history":[{"date":"2026-09-10","field":"serves_ecosystems","from":"cap, abap","to":"cap","reason":"A Node.js RFC client serves whoever calls a function module, and that is a CAP or Node developer; an ABAP developer exposes the module and never installs this. It was listed behind the ABAP door with no concern there to answer."}],"drafted_with_ai":true,"requires":[{"ref":"artifact:btp-connectivity","for":"routing a direct explicit-user RFC connection to the SAP gateway through the Connectivity service's SOCKS5 endpoint","requirement":"conditional","condition":"BTP Connectivity SOCKS5/TCP routing for a direct explicit-user connection is used","basis":"binding","role":"connectivity-proxy","sources":[{"url":"https://github.com/marianfoo/open-rfc","title":"open-rfc README","checked":"2026-10-18","quote":"It requires the Connectivity binding's SOCKS5 endpoint,\n  a Cloud Connector TCP mapping to the SAP gateway, and the explicit\n  `connectivity_socks5_*` parameters documented on the site."}]}],"connects":[{"ref":"external:sap-s4hana","kind":"data","for":"making classic synchronous RFC calls against a target ABAP system","protocols":["rfc"],"direction":"outbound","sources":[{"url":"https://github.com/marianfoo/open-rfc","title":"open-rfc README","checked":"2026-10-18","quote":"The beta support boundary is deliberately narrow: direct application-server\ntransport, classic serialization, and password authentication on SAP S/4HANA\n2023 and SAP NetWeaver 7.50."}]}]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"good","evidence":"released this month"},{"label":"Continuity","tier":"good","evidence":"5 contributors, 1 publisher"},{"label":"Repository","tier":"good","evidence":"pushed 2026-10, not archived"}],"compatibility":[{"label":"Declared for","tier":"fair","evidence":"nothing declared"},{"label":"Survived majors","tier":"unknown","evidence":"first released after @sap/cds 10 shipped"},{"label":"Maintainer's CI","tier":"good","evidence":"Documentation green, 2026-10-14"}],"practice":[{"label":"Tests","tier":"good","evidence":"84 test files, npm test"},{"label":"Docs","tier":"good","evidence":"docs/ with 10 pages, docs site, README 19 KB"},{"label":"Changelog","tier":"good","evidence":"CHANGELOG in the repo"}],"reach":[{"value":664,"unit":"installs/week"},{"value":18,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-26","latest_version":"0.2.5","majors":{"0.2":{"version":"0.2.0","date":"2026-08-07"}},"license":"Apache-2.0","first_release":"2026-08-07","last_release":"2026-10-14","releases":5,"cadence_days":21,"maintainers":1,"repository":"git+https://github.com/marianfoo/open-rfc.git","peer_cds":null,"test_script":true,"types":true,"downloads_weekly":664,"stars":18,"forks":6,"open_issues":2,"archived":false,"pushed_at":"2026-10-14","license_spdx":"Apache-2.0","org_owned":false,"default_branch":"main","contributors":5,"tree_truncated":false,"test_files":84,"workflows":3,"other_ci":false,"readme_bytes":19567,"docs_files":10,"changelog":true,"license_file":true,"dts_files":0,"ci_status":"success","ci_run_at":"2026-10-14","ci_workflow":"Documentation","ci_event":"push","readme_path":"README.md","readme_sha":"ef28e162200c0fe1ec56e3ff6dcddaa8ab9c1025","months_since_release":0,"dormant":false,"repository_directory":null,"dependencies":0,"node_engine":"^22.14.0 || ^24.0.0","downloads_monthly":5748,"created_at":"2026-08-07T07:47:20Z","open_prs":1,"first_commit":"2026-08-07","last_commit":"2026-10-14","commits":43,"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/open-rfc/blob/main/CHANGELOG.md"},"format":"conventional","releases":[{"version":"0.2.5","date":"2026-10-14","date_source":"heading","heading":"0.2.5 (2026-10-14)","url":"https://github.com/marianfoo/open-rfc/blob/main/CHANGELOG.md#025-2026-10-14","sections":[{"kind":"fix","heading":"Bug Fixes","items":4}],"hash":"e7c945916e1f5168"},{"version":"0.2.4","date":"2026-09-23","date_source":"heading","heading":"0.2.4 (2026-09-23)","url":"https://github.com/marianfoo/open-rfc/blob/main/CHANGELOG.md#024-2026-09-23","sections":[{"kind":"feature","heading":"Features","items":10},{"kind":"fix","heading":"Bug Fixes","items":9}],"hash":"8c62833b63f541a3"},{"version":"0.2.3","date":"2026-08-10","date_source":"heading","heading":"0.2.3 (2026-08-10)","url":"https://github.com/marianfoo/open-rfc/blob/main/CHANGELOG.md#023-2026-08-10","sections":[{"kind":"feature","heading":"Features","items":1},{"kind":"fix","heading":"Bug Fixes","items":1}],"hash":"782f320513ec6f8a"},{"version":"0.2.2","date":"2026-08-07","date_source":"heading","heading":"0.2.2 (2026-08-07)","url":"https://github.com/marianfoo/open-rfc/blob/main/CHANGELOG.md#022-2026-08-07","sections":[{"kind":"fix","heading":"Bug Fixes","items":1}],"hash":"8a1d68542b026671"},{"version":"0.2.1","date":"2026-08-07","date_source":"heading","heading":"0.2.1 (2026-08-07)","url":"https://github.com/marianfoo/open-rfc/blob/main/CHANGELOG.md#021-2026-08-07","sections":[{"kind":"fix","heading":"Bug Fixes","items":1}],"hash":"2c8bb0a923dad7f3"},{"version":"0.2.0","date":"2026-08-07","date_source":"registry","heading":"[0.2.0]","url":"https://github.com/marianfoo/open-rfc/blob/main/CHANGELOG.md#020","sections":[{"kind":"feature","heading":"Added","items":6},{"kind":"change","heading":"Changed","items":6},{"kind":"other","heading":"Experimental and unsupported","items":1},{"kind":"security","heading":"Security","items":3}],"hash":"396c9b1258caeb76"}],"versions":[{"version":"0.2.5","date":"2026-10-14"},{"version":"0.2.4","date":"2026-09-23"},{"version":"0.2.3","date":"2026-08-10"},{"version":"0.2.2","date":"2026-08-07"},{"version":"0.2.0","date":"2026-08-07"}],"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":[{"ref":"content:introducing-open-rfc-calling-sap-rfc-from-nodejs-without-the-sdk","name":"Introducing open-rfc: Calling SAP RFC from Node.js Without the SDK","json":"/content/introducing-open-rfc-calling-sap-rfc-from-nodejs-without-the-sdk.json"}],"alternative_to_this":[{"ref":"artifact:sap-cds-rfc","name":"@sap/cds-rfc","json":"/artifacts/sap-cds-rfc.json"}],"needed_by":[{"ref":"artifact:arc-mcp-arc-1-extension-sample","name":"arc-1-extension-sample","json":"/artifacts/arc-mcp-arc-1-extension-sample.json","requirement":"conditional","condition":"`Custom_RfcSystemInfo` is used"},{"ref":"artifact:romankorim-sap-mcp-server","name":"sap-mcp-server","json":"/artifacts/romankorim-sap-mcp-server.json","requirement":"required","role":"rfc-protocol"}],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}