{"_id":"@emdzej/ediabasx-client","_rev":"6-e8d3b1fade769ee3f0bb47757105f6b4","name":"@emdzej/ediabasx-client","dist-tags":{"latest":"0.8.0"},"versions":{"0.6.0":{"name":"@emdzej/ediabasx-client","version":"0.6.0","_id":"@emdzej/ediabasx-client@0.6.0","maintainers":[{"name":"emdzej","email":"michal@jaskolski.pro"}],"homepage":"https://github.com/emdzej/ediabasx#readme","bugs":{"url":"https://github.com/emdzej/ediabasx/issues"},"dist":{"shasum":"e620aef9570b6c052268622e46dfbf21c64c3bae","tarball":"https://registry.npmjs.org/@emdzej/ediabasx-client/-/ediabasx-client-0.6.0.tgz","fileCount":15,"integrity":"sha512-vRCKZGRgOSNDZLP6FZvXRbXCr4y/AAhO0ih+w6I8VgLXVuKowFuBQ2qO0Odsv+z0GLwrpE51GRIzvhMEql606g==","signatures":[{"sig":"MEYCIQDVYoZzvvyQy/Mz3SxEBHK9b0JnpXSYmGSV2/vP5q9AnAIhALdd8xiAnC93RxrAQKkh3RT+i4a6ZgpPw6xuaDdMTnHx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49965},"main":"dist/index.js","type":"module","_from":"file:emdzej-ediabasx-client-0.6.0.tgz","types":"dist/index.d.ts","exports":{".":"./dist/index.js","./client":{"types":"./dist/ediabas-client.d.ts","default":"./dist/ediabas-client.js"}},"scripts":{"dev":"tsc -p tsconfig.json -w --preserveWatchOutput","lint":"eslint .","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.json","typecheck":"tsc --noEmit"},"_npmUser":{"name":"emdzej","email":"michal@jaskolski.pro"},"_resolved":"/private/var/folders/7h/x_w_580x4s9dq3sq11tpvzkwy3nbj8/T/6a8a200c9f912e5f596bb48b6cb07976/emdzej-ediabasx-client-0.6.0.tgz","_integrity":"sha512-vRCKZGRgOSNDZLP6FZvXRbXCr4y/AAhO0ih+w6I8VgLXVuKowFuBQ2qO0Odsv+z0GLwrpE51GRIzvhMEql606g==","repository":{"url":"git+https://github.com/emdzej/ediabasx.git","type":"git"},"_npmVersion":"11.16.0","description":"EdiabasX client — remote (JSON-RPC) and embedded (in-process) implementations of IEdiabas.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@emdzej/ediabasx-core":"0.6.0","@emdzej/ediabasx-ediabas":"0.6.0","@emdzej/ediabasx-host-config":"0.6.0","@emdzej/ediabasx-interface-base":"0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^22.13.5"},"_npmOperationalInternal":{"tmp":"tmp/ediabasx-client_0.6.0_1780499526488_0.03579865680790517","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@emdzej/ediabasx-client","version":"0.6.1","_id":"@emdzej/ediabasx-client@0.6.1","maintainers":[{"name":"emdzej","email":"michal@jaskolski.pro"}],"homepage":"https://github.com/emdzej/ediabasx#readme","bugs":{"url":"https://github.com/emdzej/ediabasx/issues"},"dist":{"shasum":"eea105650b128b62a076488451e85d7de87dc084","tarball":"https://registry.npmjs.org/@emdzej/ediabasx-client/-/ediabasx-client-0.6.1.tgz","fileCount":15,"integrity":"sha512-Y3ZkdpMcpLmQUi3wFXYfcd2KJ4+BQoWzt7mbhtn33cyh0C0UT5bfsf39715WZPg83nh8ai9vrU+QWe7Lurku/Q==","signatures":[{"sig":"MEUCIDbOWW1nMLvvbMYxE9yZfMBcg9okdKX6qAcGJFOfXaS5AiEA5CZIhuqy/TdzTaL5LizyGVxKZmkr/9WHWGz9EJC3Cck=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57508},"main":"dist/index.js","type":"module","_from":"file:emdzej-ediabasx-client-0.6.1.tgz","types":"dist/index.d.ts","exports":{".":"./dist/index.js","./client":{"types":"./dist/ediabas-client.d.ts","default":"./dist/ediabas-client.js"}},"scripts":{"dev":"tsc -p tsconfig.json -w --preserveWatchOutput","lint":"eslint .","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.json","typecheck":"tsc --noEmit"},"_npmUser":{"name":"emdzej","email":"michal@jaskolski.pro"},"_resolved":"/private/var/folders/7h/x_w_580x4s9dq3sq11tpvzkwy3nbj8/T/76ba48caa66917762c04feb90cf6715d/emdzej-ediabasx-client-0.6.1.tgz","_integrity":"sha512-Y3ZkdpMcpLmQUi3wFXYfcd2KJ4+BQoWzt7mbhtn33cyh0C0UT5bfsf39715WZPg83nh8ai9vrU+QWe7Lurku/Q==","repository":{"url":"git+https://github.com/emdzej/ediabasx.git","type":"git"},"_npmVersion":"11.16.0","description":"EdiabasX client — remote (JSON-RPC) and embedded (in-process) implementations of IEdiabas.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@emdzej/ediabasx-core":"0.6.1","@emdzej/ediabasx-ediabas":"0.6.1","@emdzej/ediabasx-host-config":"0.6.1","@emdzej/ediabasx-interface-base":"0.6.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^22.13.5"},"_npmOperationalInternal":{"tmp":"tmp/ediabasx-client_0.6.1_1780604610899_0.02118357772312729","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"@emdzej/ediabasx-client","version":"0.6.2","_id":"@emdzej/ediabasx-client@0.6.2","maintainers":[{"name":"emdzej","email":"michal@jaskolski.pro"}],"homepage":"https://github.com/emdzej/ediabasx#readme","bugs":{"url":"https://github.com/emdzej/ediabasx/issues"},"dist":{"shasum":"ff085362c51e19669b9299d1b94db6e71c7e3f62","tarball":"https://registry.npmjs.org/@emdzej/ediabasx-client/-/ediabasx-client-0.6.2.tgz","fileCount":19,"integrity":"sha512-F9QREME26OLePkHrro8JCIZkFi1Ehn+Bgtm+pwRVZroinofi7mfB0FNfuHIiCKQOfBUJVzxIpyxyKVo96evN7g==","signatures":[{"sig":"MEQCIEwWWiIBeqLIYrU0w612rvwHprHRvV2hUmE0c5JqSrB9AiBVZaziTQSHAkmvOBQHFGHtuNjSfsPyM9mDN+F2p4YlRA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63510},"main":"dist/index.js","type":"module","_from":"file:emdzej-ediabasx-client-0.6.2.tgz","types":"dist/index.d.ts","exports":{".":"./dist/index.js","./client":{"types":"./dist/ediabas-client.d.ts","default":"./dist/ediabas-client.js"}},"scripts":{"dev":"tsc -p tsconfig.json -w --preserveWatchOutput","lint":"eslint .","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.json","typecheck":"tsc --noEmit"},"_npmUser":{"name":"emdzej","email":"michal@jaskolski.pro"},"_resolved":"/private/var/folders/7h/x_w_580x4s9dq3sq11tpvzkwy3nbj8/T/d4854001839a48064a3174096d5ac95e/emdzej-ediabasx-client-0.6.2.tgz","_integrity":"sha512-F9QREME26OLePkHrro8JCIZkFi1Ehn+Bgtm+pwRVZroinofi7mfB0FNfuHIiCKQOfBUJVzxIpyxyKVo96evN7g==","repository":{"url":"git+https://github.com/emdzej/ediabasx.git","type":"git"},"_npmVersion":"11.16.0","description":"EdiabasX client — remote (JSON-RPC) and embedded (in-process) implementations of IEdiabas.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@emdzej/ediabasx-core":"0.6.2","@emdzej/ediabasx-ediabas":"0.6.2","@emdzej/ediabasx-host-config":"0.6.2","@emdzej/ediabasx-interface-base":"0.6.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^22.13.5"},"_npmOperationalInternal":{"tmp":"tmp/ediabasx-client_0.6.2_1780649491553_0.6092032224082744","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@emdzej/ediabasx-client","version":"0.7.0","_id":"@emdzej/ediabasx-client@0.7.0","maintainers":[{"name":"emdzej","email":"michal@jaskolski.pro"}],"homepage":"https://github.com/emdzej/ediabasx#readme","bugs":{"url":"https://github.com/emdzej/ediabasx/issues"},"dist":{"shasum":"69401fea29c73ee1a477b1bee68f60191930b5ec","tarball":"https://registry.npmjs.org/@emdzej/ediabasx-client/-/ediabasx-client-0.7.0.tgz","fileCount":19,"integrity":"sha512-wpjErw4jxlkCogu3yQT2+ug2C0F5uBuIiPQX7Xyha33IOW3FANwxVF/ygQhJSnGrzEfny1IE89UoYbts5//08g==","signatures":[{"sig":"MEYCIQCP8MdYZd+VXCO3RQsgs0vrGaO6D26l8l+auPwEAkdoOgIhAM6VGMpS2LcqjCeRcWp3xn0qpgFydRlktu5YPxyzg2am","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65581},"main":"dist/index.js","type":"module","_from":"file:emdzej-ediabasx-client-0.7.0.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"dev":"tsc -p tsconfig.json -w --preserveWatchOutput","lint":"eslint .","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.json","typecheck":"tsc --noEmit"},"_npmUser":{"name":"emdzej","email":"michal@jaskolski.pro"},"_resolved":"/private/var/folders/7h/x_w_580x4s9dq3sq11tpvzkwy3nbj8/T/6ee43cf15c32506b178a0a1be9c3e0ec/emdzej-ediabasx-client-0.7.0.tgz","_integrity":"sha512-wpjErw4jxlkCogu3yQT2+ug2C0F5uBuIiPQX7Xyha33IOW3FANwxVF/ygQhJSnGrzEfny1IE89UoYbts5//08g==","repository":{"url":"git+https://github.com/emdzej/ediabasx.git","type":"git"},"_npmVersion":"11.16.0","description":"EdiabasX client — remote (JSON-RPC) and embedded (in-process) implementations of IEdiabas.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@emdzej/ediabasx-core":"0.7.0","@emdzej/ediabasx-ediabas":"0.7.0","@emdzej/ediabasx-interface-base":"0.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^22.13.5"},"_npmOperationalInternal":{"tmp":"tmp/ediabasx-client_0.7.0_1780655266084_0.761468155620622","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@emdzej/ediabasx-client","version":"0.7.1","_id":"@emdzej/ediabasx-client@0.7.1","maintainers":[{"name":"emdzej","email":"michal@jaskolski.pro"}],"homepage":"https://github.com/emdzej/ediabasx#readme","bugs":{"url":"https://github.com/emdzej/ediabasx/issues"},"dist":{"shasum":"69e7cc31d2635b0224c21ea1b426a599e96e19b4","tarball":"https://registry.npmjs.org/@emdzej/ediabasx-client/-/ediabasx-client-0.7.1.tgz","fileCount":23,"integrity":"sha512-rlpZiPay5TzFEdnid8FtfG23X6R1s5OGl9SFPe5ZLiFFvyOeOgEDpTgYyDc5CFCbM1u3CDEd2XaNJFNac8ghGQ==","signatures":[{"sig":"MEUCIF0PwE1oU7ekRUtprOHPc1fkH3Co9aGzbCez/fr/x49FAiEA+5S3PY3gnKnnN8G5U7MftpMw1l6Tc5y942Y1X0TVRaQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79865},"main":"dist/index.js","type":"module","_from":"file:emdzej-ediabasx-client-0.7.1.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"dev":"tsc -p tsconfig.json -w --preserveWatchOutput","lint":"eslint .","test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.json","typecheck":"tsc --noEmit"},"_npmUser":{"name":"emdzej","email":"michal@jaskolski.pro"},"_resolved":"/private/var/folders/7h/x_w_580x4s9dq3sq11tpvzkwy3nbj8/T/2a625849dfbe8251412935606941fce5/emdzej-ediabasx-client-0.7.1.tgz","_integrity":"sha512-rlpZiPay5TzFEdnid8FtfG23X6R1s5OGl9SFPe5ZLiFFvyOeOgEDpTgYyDc5CFCbM1u3CDEd2XaNJFNac8ghGQ==","repository":{"url":"git+https://github.com/emdzej/ediabasx.git","type":"git"},"_npmVersion":"11.16.0","description":"EdiabasX client — remote (JSON-RPC) and embedded (in-process) implementations of IEdiabas.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"@emdzej/ediabasx-core":"0.7.1","@emdzej/ediabasx-ediabas":"0.7.1","@emdzej/ediabasx-interface-base":"0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^22.13.5"},"_npmOperationalInternal":{"tmp":"tmp/ediabasx-client_0.7.1_1780679491443_0.3327567090558041","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@emdzej/ediabasx-client","version":"0.8.0","description":"EdiabasX client — remote (JSON-RPC) and embedded (in-process) implementations of IEdiabas.","type":"module","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"dependencies":{"@emdzej/ediabasx-ediabas":"0.8.0","@emdzej/ediabasx-core":"0.8.0","@emdzej/ediabasx-interface-base":"0.8.0"},"devDependencies":{"@types/node":"^22.13.5"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/emdzej/ediabasx.git"},"scripts":{"build":"tsc -p tsconfig.json","test":"vitest run --passWithNoTests","lint":"eslint .","typecheck":"tsc --noEmit","dev":"tsc -p tsconfig.json -w --preserveWatchOutput"},"_id":"@emdzej/ediabasx-client@0.8.0","bugs":{"url":"https://github.com/emdzej/ediabasx/issues"},"homepage":"https://github.com/emdzej/ediabasx#readme","_integrity":"sha512-pIMYdRN5OgrfEKAfjBrQTXK69UpgyYWWAFvWnu/cdNaC3cvjlzmV4zAyiC7JoXXeOdfLsCW42gcn442ynIRTOA==","_resolved":"/private/var/folders/7h/x_w_580x4s9dq3sq11tpvzkwy3nbj8/T/fbc120ef6d46e5757e27dee04edac998/emdzej-ediabasx-client-0.8.0.tgz","_from":"file:emdzej-ediabasx-client-0.8.0.tgz","_nodeVersion":"22.22.1","_npmVersion":"11.16.0","dist":{"integrity":"sha512-pIMYdRN5OgrfEKAfjBrQTXK69UpgyYWWAFvWnu/cdNaC3cvjlzmV4zAyiC7JoXXeOdfLsCW42gcn442ynIRTOA==","shasum":"841aadd284821602ae59485ddbaa1eb12f93b5b9","tarball":"https://registry.npmjs.org/@emdzej/ediabasx-client/-/ediabasx-client-0.8.0.tgz","fileCount":23,"unpackedSize":79865,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHSylLeFx0qXcxyKHyFSYo+VFHfHXfXlKV5rKWnuDP6LAiEAhbPgCsvUZRAZKOWeZuKNlbfjhNrq9Js44Ihjvjds1/A="}]},"_npmUser":{"name":"emdzej","email":"michal@jaskolski.pro"},"directories":{},"maintainers":[{"name":"emdzej","email":"michal@jaskolski.pro"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ediabasx-client_0.8.0_1783328618941_0.2487411567055109"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-03T15:12:06.303Z","modified":"2026-07-06T09:03:39.203Z","0.6.0":"2026-06-03T15:12:06.648Z","0.6.1":"2026-06-04T20:23:31.019Z","0.6.2":"2026-06-05T08:51:31.763Z","0.7.0":"2026-06-05T10:27:46.222Z","0.7.1":"2026-06-05T17:11:31.582Z","0.8.0":"2026-07-06T09:03:39.107Z"},"bugs":{"url":"https://github.com/emdzej/ediabasx/issues"},"homepage":"https://github.com/emdzej/ediabasx#readme","repository":{"type":"git","url":"git+https://github.com/emdzej/ediabasx.git"},"description":"EdiabasX client — remote (JSON-RPC) and embedded (in-process) implementations of IEdiabas.","maintainers":[{"name":"emdzej","email":"michal@jaskolski.pro"}],"readme":"# @emdzej/ediabasx-client\n\nRemote and in-process implementations of the [`IEdiabas`](../core/src/ediabas-api.ts) interface from [`@emdzej/ediabasx-core`](../core). Gives consumers a unified API regardless of whether the EDIABAS runtime is local or on a remote server.\n\n## Install\n\n```bash\npnpm add @emdzej/ediabasx-client\n```\n\n## EdiabasClient (remote)\n\nConnects to an [`EdiabasServer`](../ediabasx-server) over TCP or WebSocket. No local SGBD files needed — the server resolves ECU names.\n\n```ts\nimport { EdiabasClient } from \"@emdzej/ediabasx-client\";\n\nconst client = new EdiabasClient({\n  host: \"192.168.1.50\",\n  port: 6802,\n  transport: \"websocket\", // or \"tcp\"\n});\n\nawait client.init();\nconst response = await client.job(\"IKE\", \"IDENT\");\n\n// `response.sets` matches the native EDIABAS C-API shape (see\n// @emdzej/ediabasx-ediabas README — \"Result-set shape\"):\n//\n//   sets[0]    — system set (VARIANTE, OBJECT, JOBNAME, SAETZE +\n//                persistent metadata: ECU, ORIGIN, REVISION, JOB_STATUS, …)\n//   sets[1..N] — data sets emitted by the bytecode\nfor (let i = 1; i < response.sets.length; i++) {\n  for (const [name, entry] of Object.entries(response.sets[i])) {\n    console.log(`${name}: ${entry.value}`);\n  }\n}\n\n// Granular accessors mirror the native EDIABAS C API:\n//   resultText(\"VARIANTE\", 0, …) reads from the system set\n//   resultText(name, 1..N, …)    reads from data sets 1..N\n//   resultSets()                 returns the **data**-set count\n//                                (== sets.length - 1), matching apiResultSets\nconsole.log(client.resultText(\"VARIANTE\", 0));  // resolved variant name\nconsole.log(client.resultSets());\n\nawait client.end();\n```\n\nEach `EdiabasResultEntry` carries `name`, `type`, `value`, plus optional `unit` and `comment` — all five fields propagate through the JSON-RPC wire untouched.\n\nThe WebSocket transport uses `globalThis.WebSocket` (Node 22+ / browsers) — no native dependencies. TCP uses a dynamic `import(\"node:net\")` so the module stays browser-bundleable when only the WebSocket path is used.\n\n### Pre-connected WebSocket (Bimmerz Connect)\n\nPass a `socket` option to use a pre-connected `WebSocket` instead of creating one internally — used for relay-mediated connections via `@emdzej/swsrs-client`:\n\n```ts\nimport { dial } from \"@emdzej/swsrs-client\";\n\nconst peer = await dial({ relayURL: \"wss://connect.bimmerz.app\", sessionId, token });\nconst client = new EdiabasClient({ transport: \"websocket\", socket: peer.socket });\nawait client.init();\n```\n\n## EmbeddedEdiabas (in-process)\n\nWraps the [`Ediabas`](../ediabas) class behind the same `IEdiabas` interface. Use this when the cable and SGBD files are local but you want the unified API.\n\n```ts\nimport { EmbeddedEdiabas } from \"@emdzej/ediabasx-client\";\nimport { createInterface } from \"@emdzej/ediabasx-interfaces\";\n\nconst iface = createInterface(\"kdcan\", {\n  port: \"/dev/cu.usbserial-A50285BI\",\n  baudRate: 9600,\n});\n\nconst ediabas = new EmbeddedEdiabas({\n  sgbdPath: \"/path/to/ecu/files\",\n  interface: iface,\n});\n\nawait ediabas.init();\nconst response = await ediabas.job(\"IKE\", \"IDENT\");\nconsole.log(ediabas.resultText(\"VARIANTE\", 0));\nawait ediabas.end();\n```\n\n## Binary params (`apiJobData`)\n\n`job(ecu, name, params)` covers both the indexed-string channel (`apiJob` — `pari` / `pars` opcodes) and the binary channel (`apiJobData` — `pary` / `parb` / `parw` / `parl` / `parr`). The element type carries the channel:\n\n```ts\n// All string params — semicolon shorthand for indexed slots.\nawait ediabas.job(\"KMBI_E60\", \"STATUS_LESEN\", \"param1;param2\");\n\n// Single binary buffer — apiJobData. Required for binbuf-using SGBDs\n// like NCS coding (C_S_LESEN / C_S_SCHREIBEN / C_S_AUFTRAG).\nawait ediabas.job(\"KMBI_E60\", \"C_S_AUFTRAG\", new Uint8Array([0x06, 0x10, /*…*/]));\n\n// Mixed — interleave string and binary params in one call.\nawait ediabas.job(\"KMBI_E60\", \"JOB\", [\"prefix\", new Uint8Array([0xDE, 0xAD]), \"suffix\"]);\n```\n\nSame shape for `EdiabasClient` — the wire encoding base64s binary entries automatically.\n\n## Choosing between them\n\n| | `EdiabasClient` | `EmbeddedEdiabas` |\n|---|---|---|\n| SGBD files | On the server | Local |\n| Hardware interface | On the server | Local |\n| Network round-trip | Yes | No |\n| Browser-compatible | Yes (WebSocket) | No (`node:fs`) |\n| Use case | Remote diagnostics, web UIs | CLI tools, local scripts |\n\nBoth implement `IEdiabas` — swap one for the other without changing calling code.\n\n## See also\n\n- [`@emdzej/ediabasx-server`](../ediabasx-server) — the JSON-RPC server that `EdiabasClient` talks to.\n- [`@emdzej/ediabasx-core`](../core) — the `IEdiabas` interface definition and wire types.\n\n## License\n\n[PolyForm Noncommercial 1.0.0](../../LICENSE).\n","readmeFilename":"README.md"}