@emdzej/bimmerz-rpc-can 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/client.d.ts CHANGED
@@ -33,7 +33,14 @@ export declare class CanClient {
33
33
  /** Subscribe to revocation events (cooperative `open` from another client). */
34
34
  onRevoked(handler: (ev: CanRevokedEvent) => void): Unsubscribe;
35
35
  }
36
- /** Convenience: build the WS URL, open it, and wrap in a CanClient. */
36
+ /**
37
+ * Convenience: open `url` and wrap the connection in a CanClient.
38
+ *
39
+ * If the first connect fails the client is closed before the error is
40
+ * rethrown. The caller never receives `rpc` in that case, so with
41
+ * `autoReconnect` on nothing else could stop its retry loop — an unplugged
42
+ * dongle meant a new WebSocket every `reconnectDelayMs`, for ever.
43
+ */
37
44
  export declare function connectCan(url: string, options?: RpcClientOptions): Promise<{
38
45
  can: CanClient;
39
46
  rpc: RpcClient;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,SAAS,EACT,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAGjB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,QAAQ,EACR,kBAAkB,EAClB,UAAU,EACV,eAAe,EAChB,MAAM,YAAY,CAAC;AA0BpB,qBAAa,SAAS;aACQ,GAAG,EAAE,SAAS;gBAAd,GAAG,EAAE,SAAS;IAE1C,0EAA0E;IACpE,IAAI,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAIxD,sEAAsE;IAChE,SAAS,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IAIlE,mCAAmC;IAC7B,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAA;KAAE,CAAC;IAIrD,oEAAoE;IAC9D,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAMhE,iCAAiC;IAC3B,OAAO,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAA;KAAE,CAAC;IAIzC,kFAAkF;IAC5E,KAAK,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAA;KAAE,CAAC;IAIvC,yEAAyE;IACzE,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,WAAW;IAYvD,+EAA+E;IAC/E,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,eAAe,KAAK,IAAI,GAAG,WAAW;CAG/D;AAED,uEAAuE;AACvE,wBAAsB,UAAU,CAC9B,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC;IAAE,GAAG,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,SAAS,CAAA;CAAE,CAAC,CAI7C"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,SAAS,EACT,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAGjB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,QAAQ,EACR,kBAAkB,EAClB,UAAU,EACV,eAAe,EAChB,MAAM,YAAY,CAAC;AA0BpB,qBAAa,SAAS;aACQ,GAAG,EAAE,SAAS;gBAAd,GAAG,EAAE,SAAS;IAE1C,0EAA0E;IACpE,IAAI,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAIxD,sEAAsE;IAChE,SAAS,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IAIlE,mCAAmC;IAC7B,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAA;KAAE,CAAC;IAIrD,oEAAoE;IAC9D,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAMhE,iCAAiC;IAC3B,OAAO,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAA;KAAE,CAAC;IAIzC,kFAAkF;IAC5E,KAAK,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAA;KAAE,CAAC;IAIvC,yEAAyE;IACzE,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,WAAW;IAYvD,+EAA+E;IAC/E,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,eAAe,KAAK,IAAI,GAAG,WAAW;CAG/D;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC;IAAE,GAAG,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,SAAS,CAAA;CAAE,CAAC,CAS7C"}
package/dist/client.js CHANGED
@@ -62,10 +62,23 @@ export class CanClient {
62
62
  return this.rpc.on("can.revoked", handler);
63
63
  }
64
64
  }
65
- /** Convenience: build the WS URL, open it, and wrap in a CanClient. */
65
+ /**
66
+ * Convenience: open `url` and wrap the connection in a CanClient.
67
+ *
68
+ * If the first connect fails the client is closed before the error is
69
+ * rethrown. The caller never receives `rpc` in that case, so with
70
+ * `autoReconnect` on nothing else could stop its retry loop — an unplugged
71
+ * dongle meant a new WebSocket every `reconnectDelayMs`, for ever.
72
+ */
66
73
  export async function connectCan(url, options) {
67
74
  const rpc = new RpcClient(url, options);
68
- await rpc.connect();
75
+ try {
76
+ await rpc.connect();
77
+ }
78
+ catch (e) {
79
+ rpc.close();
80
+ throw e;
81
+ }
69
82
  return { can: new CanClient(rpc), rpc };
70
83
  }
71
84
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,SAAS,EAGT,YAAY,EACZ,YAAY,GACb,MAAM,0BAA0B,CAAC;AA2BlC,SAAS,WAAW,CAAC,CAAW;IAC9B,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,KAAK;QACnB,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,KAAK;QACnB,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;KAC3B,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,SAAS;IACQ;IAA5B,YAA4B,GAAc;QAAd,QAAG,GAAH,GAAG,CAAW;IAAG,CAAC;IAE9C,0EAA0E;IAC1E,KAAK,CAAC,IAAI,CAAC,IAAoB;QAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAgB,UAAU,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,sEAAsE;IACtE,KAAK,CAAC,SAAS,CAAC,IAAyB;QACvC,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAgB,eAAe,EAAE,IAAI,CAAC,CAAC;IAChE,CAAC;IAED,mCAAmC;IACnC,KAAK,CAAC,IAAI,CAAC,KAAe;QACxB,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAkB,UAAU,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,oEAAoE;IACpE,KAAK,CAAC,SAAS,CAAC,MAAkB;QAChC,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAqB,eAAe,EAAE;YAC3D,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;SAChC,CAAC,CAAC;IACL,CAAC;IAED,iCAAiC;IACjC,KAAK,CAAC,OAAO;QACX,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAkB,aAAa,EAAE,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,kFAAkF;IAClF,KAAK,CAAC,KAAK;QACT,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAkB,WAAW,EAAE,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,yEAAyE;IACzE,IAAI,CAAC,OAAoC;QACvC,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAY,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;YACjD,OAAO,CAAC;gBACN,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC;gBAC/B,EAAE,EAAE,MAAM,CAAC,EAAE;aACd,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,+EAA+E;IAC/E,SAAS,CAAC,OAAsC;QAC9C,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAkB,aAAa,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;CACF;AAED,uEAAuE;AACvE,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,GAAW,EACX,OAA0B;IAE1B,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACxC,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;IACpB,OAAO,EAAE,GAAG,EAAE,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC;AAC1C,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,SAAS,EAGT,YAAY,EACZ,YAAY,GACb,MAAM,0BAA0B,CAAC;AA2BlC,SAAS,WAAW,CAAC,CAAW;IAC9B,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,KAAK;QACnB,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,KAAK;QACnB,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;KAC3B,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,SAAS;IACQ;IAA5B,YAA4B,GAAc;QAAd,QAAG,GAAH,GAAG,CAAW;IAAG,CAAC;IAE9C,0EAA0E;IAC1E,KAAK,CAAC,IAAI,CAAC,IAAoB;QAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAgB,UAAU,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,sEAAsE;IACtE,KAAK,CAAC,SAAS,CAAC,IAAyB;QACvC,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAgB,eAAe,EAAE,IAAI,CAAC,CAAC;IAChE,CAAC;IAED,mCAAmC;IACnC,KAAK,CAAC,IAAI,CAAC,KAAe;QACxB,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAkB,UAAU,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,oEAAoE;IACpE,KAAK,CAAC,SAAS,CAAC,MAAkB;QAChC,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAqB,eAAe,EAAE;YAC3D,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;SAChC,CAAC,CAAC;IACL,CAAC;IAED,iCAAiC;IACjC,KAAK,CAAC,OAAO;QACX,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAkB,aAAa,EAAE,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,kFAAkF;IAClF,KAAK,CAAC,KAAK;QACT,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAkB,WAAW,EAAE,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,yEAAyE;IACzE,IAAI,CAAC,OAAoC;QACvC,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAY,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;YACjD,OAAO,CAAC;gBACN,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC;gBAC/B,EAAE,EAAE,MAAM,CAAC,EAAE;aACd,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,+EAA+E;IAC/E,SAAS,CAAC,OAAsC;QAC9C,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAkB,aAAa,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,GAAW,EACX,OAA0B;IAE1B,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACxC,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,GAAG,CAAC,KAAK,EAAE,CAAC;QACZ,MAAM,CAAC,CAAC;IACV,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC;AAC1C,CAAC"}
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "@emdzej/bimmerz-rpc-can",
3
- "version": "0.1.0",
3
+ "version": "0.3.0",
4
4
  "type": "module",
5
5
  "description": "Typed client for the bimmerz-box dongle's /rpc/can/<n> endpoint. Classical CAN frames, no FD. Built on @emdzej/bimmerz-rpc-core.",
6
+ "license": "PolyForm-Noncommercial-1.0.0",
6
7
  "main": "dist/index.js",
7
8
  "types": "dist/index.d.ts",
8
9
  "exports": {
@@ -16,18 +17,19 @@
16
17
  "dist"
17
18
  ],
18
19
  "dependencies": {
19
- "@emdzej/bimmerz-rpc-core": "0.1.0"
20
+ "@emdzej/bimmerz-rpc-core": "0.3.0"
20
21
  },
21
22
  "devDependencies": {
22
23
  "@types/node": "^22.13.1",
23
- "typescript": "^5.7.3"
24
+ "typescript": "^5.7.3",
25
+ "vitest": "^5.0.1"
24
26
  },
25
27
  "publishConfig": {
26
28
  "access": "public"
27
29
  },
28
30
  "repository": {
29
31
  "type": "git",
30
- "url": "https://github.com/emdzej/bimmerz.git",
32
+ "url": "https://github.com/emdzej/bimmerz-core.git",
31
33
  "directory": "packages/rpc-can"
32
34
  },
33
35
  "scripts": {
@@ -35,6 +37,7 @@
35
37
  "dev": "tsc --watch",
36
38
  "lint": "eslint .",
37
39
  "typecheck": "tsc --noEmit",
40
+ "test": "vitest run",
38
41
  "clean": "rm -rf dist .turbo *.tsbuildinfo"
39
42
  }
40
43
  }