@canboat/canboatjs 3.0.2 → 3.2.2

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.
Files changed (222) hide show
  1. package/.github/workflows/publish.yml +18 -9
  2. package/.github/workflows/test.yml +2 -2
  3. package/.github/workflows/test_canboat_changes.yml +91 -0
  4. package/.husky/pre-commit +4 -0
  5. package/.mocharc.js +7 -0
  6. package/.prettierrc.json +5 -0
  7. package/README.md +5 -14
  8. package/dist/actisense-serial.d.ts +17 -0
  9. package/dist/actisense-serial.d.ts.map +1 -0
  10. package/dist/actisense-serial.js +569 -0
  11. package/dist/actisense-serial.js.map +1 -0
  12. package/dist/bin/actisense-file.d.ts +3 -0
  13. package/dist/bin/actisense-file.d.ts.map +1 -0
  14. package/dist/bin/actisense-file.js +49 -0
  15. package/dist/bin/actisense-file.js.map +1 -0
  16. package/dist/bin/actisense-n2k-tcp.d.ts +3 -0
  17. package/dist/bin/actisense-n2k-tcp.d.ts.map +1 -0
  18. package/dist/bin/actisense-n2k-tcp.js +46 -0
  19. package/dist/bin/actisense-n2k-tcp.js.map +1 -0
  20. package/dist/bin/actisense-serialjs.d.ts +3 -0
  21. package/dist/bin/actisense-serialjs.d.ts.map +1 -0
  22. package/dist/bin/actisense-serialjs.js +51 -0
  23. package/dist/bin/actisense-serialjs.js.map +1 -0
  24. package/dist/bin/analyzerjs.d.ts +3 -0
  25. package/dist/bin/analyzerjs.d.ts.map +1 -0
  26. package/dist/bin/analyzerjs.js +61 -0
  27. package/dist/bin/analyzerjs.js.map +1 -0
  28. package/dist/bin/candumpjs.d.ts +3 -0
  29. package/dist/bin/candumpjs.d.ts.map +1 -0
  30. package/dist/bin/candumpjs.js +73 -0
  31. package/dist/bin/candumpjs.js.map +1 -0
  32. package/dist/bin/cansend.d.ts +3 -0
  33. package/dist/bin/cansend.d.ts.map +1 -0
  34. package/dist/bin/cansend.js +123 -0
  35. package/dist/bin/cansend.js.map +1 -0
  36. package/dist/bin/ikonvert-serial.d.ts +3 -0
  37. package/dist/bin/ikonvert-serial.d.ts.map +1 -0
  38. package/dist/bin/ikonvert-serial.js +36 -0
  39. package/dist/bin/ikonvert-serial.js.map +1 -0
  40. package/dist/bin/to-pgn.d.ts +3 -0
  41. package/dist/bin/to-pgn.d.ts.map +1 -0
  42. package/dist/bin/to-pgn.js +57 -0
  43. package/dist/bin/to-pgn.js.map +1 -0
  44. package/dist/canId.d.ts +21 -0
  45. package/dist/canId.d.ts.map +1 -0
  46. package/dist/canId.js +66 -0
  47. package/dist/canId.js.map +1 -0
  48. package/dist/canId.test.d.ts +2 -0
  49. package/dist/canId.test.d.ts.map +1 -0
  50. package/dist/canId.test.js +58 -0
  51. package/dist/canId.test.js.map +1 -0
  52. package/dist/canbus.d.ts +17 -0
  53. package/dist/canbus.d.ts.map +1 -0
  54. package/dist/canbus.js +261 -0
  55. package/dist/canbus.js.map +1 -0
  56. package/dist/candevice.d.ts +23 -0
  57. package/dist/candevice.d.ts.map +1 -0
  58. package/dist/candevice.js +36 -0
  59. package/dist/candevice.js.map +1 -0
  60. package/dist/codes.d.ts +2 -0
  61. package/dist/codes.d.ts.map +1 -0
  62. package/dist/codes.js +24 -0
  63. package/dist/codes.js.map +1 -0
  64. package/dist/discovery.d.ts +17 -0
  65. package/dist/discovery.d.ts.map +1 -0
  66. package/dist/discovery.js +119 -0
  67. package/dist/discovery.js.map +1 -0
  68. package/dist/fromPgn.d.ts +51 -0
  69. package/dist/fromPgn.d.ts.map +1 -0
  70. package/dist/fromPgn.js +989 -0
  71. package/dist/fromPgn.js.map +1 -0
  72. package/dist/fromPgnStream.d.ts +17 -0
  73. package/dist/fromPgnStream.d.ts.map +1 -0
  74. package/dist/fromPgnStream.js +47 -0
  75. package/dist/fromPgnStream.js.map +1 -0
  76. package/dist/ikonvert.d.ts +17 -0
  77. package/dist/ikonvert.d.ts.map +1 -0
  78. package/dist/ikonvert.js +224 -0
  79. package/dist/ikonvert.js.map +1 -0
  80. package/dist/index.d.ts +31 -0
  81. package/dist/index.d.ts.map +1 -0
  82. package/dist/index.js +60 -0
  83. package/dist/index.js.map +1 -0
  84. package/dist/n2k-actisense.d.ts +24 -0
  85. package/dist/n2k-actisense.d.ts.map +1 -0
  86. package/dist/n2k-actisense.js +126 -0
  87. package/dist/n2k-actisense.js.map +1 -0
  88. package/dist/n2k-actisense.test.d.ts +2 -0
  89. package/dist/n2k-actisense.test.d.ts.map +1 -0
  90. package/dist/n2k-actisense.test.js +49 -0
  91. package/dist/n2k-actisense.test.js.map +1 -0
  92. package/dist/n2kDevice.d.ts +44 -0
  93. package/dist/n2kDevice.d.ts.map +1 -0
  94. package/dist/n2kDevice.js +436 -0
  95. package/dist/n2kDevice.js.map +1 -0
  96. package/dist/pgns.d.ts +22 -0
  97. package/dist/pgns.d.ts.map +1 -0
  98. package/dist/pgns.js +157 -0
  99. package/dist/pgns.js.map +1 -0
  100. package/dist/pgns.test.d.ts +2 -0
  101. package/dist/pgns.test.d.ts.map +1 -0
  102. package/dist/pgns.test.js +14 -0
  103. package/dist/pgns.test.js.map +1 -0
  104. package/dist/simpleCan.d.ts +17 -0
  105. package/dist/simpleCan.d.ts.map +1 -0
  106. package/dist/simpleCan.js +125 -0
  107. package/dist/simpleCan.js.map +1 -0
  108. package/dist/stringMsg.d.ts +33 -0
  109. package/dist/stringMsg.d.ts.map +1 -0
  110. package/dist/stringMsg.js +359 -0
  111. package/dist/stringMsg.js.map +1 -0
  112. package/dist/stringMsg.test.d.ts +2 -0
  113. package/dist/stringMsg.test.d.ts.map +1 -0
  114. package/dist/stringMsg.test.js +244 -0
  115. package/dist/stringMsg.test.js.map +1 -0
  116. package/dist/toPgn.d.ts +34 -0
  117. package/dist/toPgn.d.ts.map +1 -0
  118. package/dist/toPgn.js +500 -0
  119. package/dist/toPgn.js.map +1 -0
  120. package/dist/utilities.d.ts +28 -0
  121. package/dist/utilities.d.ts.map +1 -0
  122. package/dist/utilities.js +159 -0
  123. package/dist/utilities.js.map +1 -0
  124. package/dist/utilities.test.d.ts +2 -0
  125. package/dist/utilities.test.d.ts.map +1 -0
  126. package/dist/utilities.test.js +9 -0
  127. package/dist/utilities.test.js.map +1 -0
  128. package/dist/venus-mqtt.d.ts +11 -0
  129. package/dist/venus-mqtt.d.ts.map +1 -0
  130. package/dist/venus-mqtt.js +100 -0
  131. package/dist/venus-mqtt.js.map +1 -0
  132. package/dist/venus.d.ts +11 -0
  133. package/dist/venus.d.ts.map +1 -0
  134. package/dist/venus.js +71 -0
  135. package/dist/venus.js.map +1 -0
  136. package/dist/w2k01.d.ts +17 -0
  137. package/dist/w2k01.d.ts.map +1 -0
  138. package/dist/w2k01.js +119 -0
  139. package/dist/w2k01.js.map +1 -0
  140. package/dist/yddevice.d.ts +25 -0
  141. package/dist/yddevice.d.ts.map +1 -0
  142. package/dist/yddevice.js +43 -0
  143. package/dist/yddevice.js.map +1 -0
  144. package/dist/ydgw02.d.ts +17 -0
  145. package/dist/ydgw02.d.ts.map +1 -0
  146. package/dist/ydgw02.js +163 -0
  147. package/dist/ydgw02.js.map +1 -0
  148. package/dist/ydvr.d.ts +17 -0
  149. package/dist/ydvr.d.ts.map +1 -0
  150. package/dist/ydvr.js +120 -0
  151. package/dist/ydvr.js.map +1 -0
  152. package/eslint.config.js +58 -0
  153. package/jest.config.js +5 -0
  154. package/lib/actisense-serial.ts +644 -0
  155. package/lib/bin/actisense-file.ts +53 -0
  156. package/lib/bin/actisense-n2k-tcp.ts +50 -0
  157. package/lib/bin/actisense-serialjs.ts +55 -0
  158. package/{bin/analyzerjs → lib/bin/analyzerjs.ts} +16 -15
  159. package/{bin/candumpjs → lib/bin/candumpjs.ts} +19 -20
  160. package/lib/bin/cansend.ts +131 -0
  161. package/lib/bin/ikonvert-serial.ts +44 -0
  162. package/{bin/to-pgn → lib/bin/to-pgn.ts} +23 -17
  163. package/lib/bin/ydvr-file +33 -0
  164. package/lib/canId.test.js +35 -15
  165. package/lib/canId.ts +84 -0
  166. package/lib/canbus.ts +293 -0
  167. package/lib/candevice.ts +41 -0
  168. package/lib/codes.ts +21 -0
  169. package/lib/{discovery.js → discovery.ts} +32 -30
  170. package/lib/fromPgn.ts +1207 -0
  171. package/lib/{fromPgnStream.js → fromPgnStream.ts} +17 -12
  172. package/lib/{ikonvert.js → ikonvert.ts} +99 -94
  173. package/lib/index.ts +48 -0
  174. package/lib/n2k-actisense.test.js +31 -32
  175. package/lib/n2k-actisense.ts +152 -0
  176. package/lib/n2kDevice.ts +516 -0
  177. package/lib/pgns.test.ts +12 -0
  178. package/lib/pgns.ts +191 -0
  179. package/lib/simpleCan.ts +140 -0
  180. package/lib/stringMsg.test.js +58 -41
  181. package/lib/stringMsg.ts +464 -0
  182. package/lib/toPgn.ts +597 -0
  183. package/lib/utilities.ts +169 -0
  184. package/lib/venus-mqtt.js +69 -73
  185. package/lib/venus.js +8 -8
  186. package/lib/w2k01.ts +142 -0
  187. package/lib/{yddevice.js → yddevice.ts} +18 -16
  188. package/lib/{ydgw02.js → ydgw02.ts} +58 -51
  189. package/lib/ydvr.js +65 -147
  190. package/package.json +54 -18
  191. package/tsconfig.json +19 -0
  192. package/tsconfig.tsbuildinfo +1 -0
  193. package/CHANGELOG.md +0 -101
  194. package/bin/actisense-file +0 -47
  195. package/bin/actisense-n2k-tcp +0 -45
  196. package/bin/actisense-serialjs +0 -52
  197. package/bin/candumpanalyzerjs +0 -29
  198. package/bin/cansend +0 -130
  199. package/bin/ikonvert-serial +0 -50
  200. package/bin/ydgw-analyzerjs +0 -36
  201. package/bin/ydvr-file +0 -33
  202. package/index.js +0 -53
  203. package/ios_canboat.js/main.js +0 -2
  204. package/ios_canboat.js/main.js.LICENSE.txt +0 -17
  205. package/ios_canboat.js/main.js.map +0 -1
  206. package/lib/canId.js +0 -64
  207. package/lib/canbus.js +0 -278
  208. package/lib/candevice.js +0 -51
  209. package/lib/codes.js +0 -69
  210. package/lib/codes.test.js +0 -17
  211. package/lib/codesMfgs.json +0 -166
  212. package/lib/fromPgn.js +0 -1027
  213. package/lib/n2k-actisense.js +0 -108
  214. package/lib/n2kDevice.js +0 -390
  215. package/lib/pgns.js +0 -196
  216. package/lib/pgns.test.js +0 -13
  217. package/lib/serial.js +0 -647
  218. package/lib/simpleCan.js +0 -105
  219. package/lib/stringMsg.js +0 -339
  220. package/lib/toPgn.js +0 -518
  221. package/lib/utilities.js +0 -111
  222. package/lib/w2k01.js +0 -129
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canId.test.d.ts","sourceRoot":"","sources":["../lib/canId.test.js"],"names":[],"mappings":""}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ const { encodeCanId, parseCanId, parseEncode } = require('./canId');
3
+ /* globals describe test expect */
4
+ describe('parseCanId', () => {
5
+ test('Return object with canId broken into properties', () => {
6
+ expect(parseCanId(0x18eeff01)).toEqual({
7
+ canId: 0x18eeff01,
8
+ dst: 255,
9
+ src: 1,
10
+ pgn: 60928,
11
+ prio: 6
12
+ });
13
+ expect(parseCanId(0xcf004ee)).toEqual({
14
+ canId: 0xcf004ee,
15
+ dst: 255,
16
+ src: 0xee,
17
+ pgn: 0xf004,
18
+ prio: 0xc >> 2
19
+ });
20
+ expect(parseCanId(0x18ea2301)).toEqual({
21
+ canId: 0x18ea2301,
22
+ dst: 35,
23
+ src: 0x01,
24
+ pgn: 0xea00,
25
+ prio: 6
26
+ });
27
+ expect(parseCanId(0x09f8017f)).toEqual({
28
+ canId: 0x09f8017f,
29
+ dst: 255,
30
+ src: 127,
31
+ pgn: 129025,
32
+ prio: 2
33
+ });
34
+ expect(parseCanId(0x0df8057f)).toEqual({
35
+ canId: 0x0df8057f,
36
+ dst: 255,
37
+ src: 127,
38
+ pgn: 129029,
39
+ prio: 3
40
+ });
41
+ });
42
+ });
43
+ describe('encodeCanId', () => {
44
+ test('Return canId number from object', () => {
45
+ expect(encodeCanId({ src: 1, pgn: 60928, prio: 6, dst: 255 }).toString(2)).toBe((0x18eeff01).toString(2));
46
+ expect(encodeCanId({ src: 238, pgn: 61444, prio: 3 })).toBe(0xcf004ee);
47
+ });
48
+ });
49
+ describe('parseEncode', () => {
50
+ test('Return exactly same number after parse and encode', () => {
51
+ expect(parseEncode(0x18eeff01)).toBe(0x18eeff01);
52
+ expect(parseEncode(0xcf004ee)).toBe(0xcf004ee);
53
+ expect(parseEncode(0x18ea2301)).toBe(0x18ea2301);
54
+ expect(parseEncode(0x09f8017f)).toBe(0x09f8017f);
55
+ expect(parseEncode(0x0df8057f)).toBe(0x0df8057f);
56
+ });
57
+ });
58
+ //# sourceMappingURL=canId.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canId.test.js","sourceRoot":"","sources":["../lib/canId.test.js"],"names":[],"mappings":";AAAA,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;AAEnE,kCAAkC;AAElC,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,IAAI,CAAC,iDAAiD,EAAE,GAAG,EAAE;QAC3D,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;YACrC,KAAK,EAAE,UAAU;YACjB,GAAG,EAAE,GAAG;YACR,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,CAAC;SACR,CAAC,CAAA;QACF,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;YACpC,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,GAAG;YACR,GAAG,EAAE,IAAI;YACT,GAAG,EAAE,MAAM;YACX,IAAI,EAAE,GAAG,IAAI,CAAC;SACf,CAAC,CAAA;QACF,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;YACrC,KAAK,EAAE,UAAU;YACjB,GAAG,EAAE,EAAE;YACP,GAAG,EAAE,IAAI;YACT,GAAG,EAAE,MAAM;YACX,IAAI,EAAE,CAAC;SACR,CAAC,CAAA;QACF,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;YACrC,KAAK,EAAE,UAAU;YACjB,GAAG,EAAE,GAAG;YACR,GAAG,EAAE,GAAG;YACR,GAAG,EAAE,MAAM;YACX,IAAI,EAAE,CAAC;SACR,CAAC,CAAA;QACF,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;YACrC,KAAK,EAAE,UAAU;YACjB,GAAG,EAAE,GAAG;YACR,GAAG,EAAE,GAAG;YACR,GAAG,EAAE,MAAM;YACX,IAAI,EAAE,CAAC;SACR,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AACF,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC3C,MAAM,CACJ,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CACnE,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;QAChC,MAAM,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACxE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,IAAI,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC7D,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAChD,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAC9C,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAChD,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAChD,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAClD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Copyright 2018 Scott Bender (scott@scottbender.net)
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ export declare function CanbusStream(this: any, options: any): any;
17
+ //# sourceMappingURL=canbus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canbus.d.ts","sourceRoot":"","sources":["../lib/canbus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAaH,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,OAiFnD"}
package/dist/canbus.js ADDED
@@ -0,0 +1,261 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright 2018 Scott Bender (scott@scottbender.net)
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ var __importDefault = (this && this.__importDefault) || function (mod) {
18
+ return (mod && mod.__esModule) ? mod : { "default": mod };
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.CanbusStream = CanbusStream;
22
+ const utilities_1 = require("./utilities");
23
+ const stream_1 = require("stream");
24
+ const toPgn_1 = require("./toPgn");
25
+ const lodash_1 = __importDefault(require("lodash"));
26
+ const candevice_1 = require("./candevice");
27
+ const utilities_2 = require("./utilities");
28
+ const canId_1 = require("./canId");
29
+ const stringMsg_1 = require("./stringMsg");
30
+ const util_1 = __importDefault(require("util"));
31
+ function CanbusStream(options) {
32
+ if (this === undefined) {
33
+ return new CanbusStream(options);
34
+ }
35
+ this.debug = (0, utilities_1.createDebug)('canboatjs:canbus', options);
36
+ stream_1.Transform.call(this, {
37
+ objectMode: true
38
+ });
39
+ this.plainText = false;
40
+ this.options = options;
41
+ this.start();
42
+ this.setProviderStatus =
43
+ options.app && options.app.setProviderStatus
44
+ ? (msg) => {
45
+ options.app.setProviderStatus(options.providerId, msg);
46
+ }
47
+ : () => { };
48
+ this.setProviderError =
49
+ options.app && options.app.setProviderError
50
+ ? (msg) => {
51
+ options.app.setProviderError(options.providerId, msg);
52
+ }
53
+ : () => { };
54
+ if (options.fromStdIn) {
55
+ return;
56
+ }
57
+ try {
58
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
59
+ this.socketcan = require('socketcan');
60
+ }
61
+ catch (err) {
62
+ console.error(err);
63
+ const msg = 'unable to load native socketcan interface';
64
+ console.error(msg);
65
+ }
66
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
67
+ const that = this;
68
+ if (options.app) {
69
+ options.app.on(options.outEvent || 'nmea2000out', (msg) => {
70
+ that.sendPGN(msg);
71
+ });
72
+ options.app.on(options.jsonOutEvent || 'nmea2000JsonOut', (msg) => {
73
+ that.sendPGN(msg);
74
+ });
75
+ }
76
+ if (this.connect() == false) {
77
+ return;
78
+ }
79
+ const noDataReceivedTimeout = typeof options.noDataReceivedTimeout !== 'undefined'
80
+ ? options.noDataReceivedTimeout
81
+ : -1;
82
+ if (noDataReceivedTimeout > 0) {
83
+ this.noDataInterval = setInterval(() => {
84
+ if (this.channel &&
85
+ this.lastDataReceived &&
86
+ Date.now() - this.lastDataReceived > noDataReceivedTimeout * 1000) {
87
+ const channel = this.channel;
88
+ delete this.channel;
89
+ try {
90
+ channel.stop();
91
+ }
92
+ catch (_error) { }
93
+ this.setProviderError('No data received, retrying...');
94
+ if (this.options.app) {
95
+ console.error('No data received, retrying...');
96
+ }
97
+ this.connect();
98
+ }
99
+ }, noDataReceivedTimeout * 1000);
100
+ }
101
+ }
102
+ CanbusStream.prototype.connect = function () {
103
+ const canDevice = this.options.canDevice || 'can0';
104
+ try {
105
+ if (this.socketcan === undefined) {
106
+ this.setProviderError('unable to load native socketcan interface');
107
+ return false;
108
+ }
109
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
110
+ const that = this;
111
+ this.channel = this.socketcan.createRawChannelWithOptions(canDevice, {
112
+ non_block_send: true
113
+ });
114
+ this.channel.addListener('onStopped', () => {
115
+ if (this.channel) {
116
+ // stoped by us?
117
+ delete this.channel;
118
+ this.setProviderError('Stopped, Retrying...');
119
+ if (this.options.app) {
120
+ console.error('socketcan stopped, retrying...');
121
+ }
122
+ setTimeout(() => {
123
+ this.setProviderError('Reconnecting...');
124
+ this.connect();
125
+ }, 2000);
126
+ }
127
+ });
128
+ this.channel.addListener('onMessage', (msg) => {
129
+ const pgn = (0, canId_1.parseCanId)(msg.id);
130
+ if (this.noDataInterval) {
131
+ this.lastDataReceived = Date.now();
132
+ }
133
+ //always send address claims through
134
+ if (pgn.pgn != 60928 &&
135
+ that.candevice &&
136
+ that.candevice.cansend &&
137
+ pgn.src == that.candevice.address) {
138
+ return;
139
+ }
140
+ const timestamp = new Date().toISOString();
141
+ if (that.plainText) {
142
+ this.push((0, utilities_2.binToActisense)(pgn, timestamp, msg.data, msg.data.length));
143
+ }
144
+ else {
145
+ that.push({ pgn, length: msg.data.length, data: msg.data });
146
+ }
147
+ });
148
+ this.channel.start();
149
+ this.setProviderStatus('Connected to socketcan');
150
+ this.candevice = new candevice_1.CanDevice(this, this.options);
151
+ this.candevice.start();
152
+ return true;
153
+ }
154
+ catch (e) {
155
+ console.error(`unable to open canbus ${canDevice}: ${e}`);
156
+ console.error(e.stack);
157
+ this.setProviderError(e.message);
158
+ return false;
159
+ }
160
+ };
161
+ util_1.default.inherits(CanbusStream, stream_1.Transform);
162
+ CanbusStream.prototype.start = function () { };
163
+ CanbusStream.prototype.sendPGN = function (msg, force) {
164
+ if (this.candevice) {
165
+ //if ( !this.candevice.cansend && (_.isString(msg) || msg.pgn !== 59904) ) {
166
+ if (!this.candevice.cansend && force !== true) {
167
+ //we have not completed address claim yet
168
+ return;
169
+ }
170
+ this.debug('sending %j', msg);
171
+ if (this.options.app) {
172
+ this.options.app.emit('connectionwrite', {
173
+ providerId: this.options.providerId
174
+ });
175
+ }
176
+ const src = msg.pgn === 59904 || msg.forceSrc ? msg.src : this.candevice.address;
177
+ if (lodash_1.default.isString(msg)) {
178
+ const split = msg.split(',');
179
+ split[3] = src;
180
+ msg = split.join(',');
181
+ }
182
+ else {
183
+ msg.src = src;
184
+ if (lodash_1.default.isUndefined(msg.prio)) {
185
+ msg.prio = 3;
186
+ }
187
+ if (lodash_1.default.isUndefined(msg.dst)) {
188
+ msg.dst = 255;
189
+ }
190
+ }
191
+ if (this.socketCanWriter) {
192
+ if (lodash_1.default.isString(msg)) {
193
+ this.socketCanWriter.stdin.write(msg + '\n');
194
+ }
195
+ else {
196
+ const str = (0, stringMsg_1.toActisenseSerialFormat)(msg.pgn, (0, toPgn_1.toPgn)(msg), msg.dst, msg.src);
197
+ this.socketCanWriter.stdin.write(str + '\n');
198
+ }
199
+ }
200
+ else if (this.channel) {
201
+ let canid;
202
+ let buffer;
203
+ let pgn;
204
+ if (lodash_1.default.isObject(msg)) {
205
+ canid = (0, canId_1.encodeCanId)(msg);
206
+ buffer = (0, toPgn_1.toPgn)(msg);
207
+ pgn = msg;
208
+ }
209
+ else {
210
+ pgn = (0, stringMsg_1.parseActisense)(msg);
211
+ canid = (0, canId_1.encodeCanId)(pgn);
212
+ buffer = pgn.data;
213
+ }
214
+ if (this.debug.enabled) {
215
+ const str = (0, stringMsg_1.toActisenseSerialFormat)(pgn.pgn, buffer, pgn.dst, pgn.src);
216
+ this.debug(str);
217
+ }
218
+ if (buffer === undefined) {
219
+ this.debug("can't convert %j", msg);
220
+ return;
221
+ }
222
+ //seems as though 126720 should always be encoded this way
223
+ if (buffer.length > 8 || pgn.pgn == 126720) {
224
+ const pgns = (0, utilities_2.getPlainPGNs)(buffer);
225
+ pgns.forEach((pbuffer) => {
226
+ this.channel.send({ id: canid, ext: true, data: pbuffer });
227
+ });
228
+ }
229
+ else {
230
+ this.channel.send({ id: canid, ext: true, data: buffer });
231
+ }
232
+ }
233
+ }
234
+ };
235
+ CanbusStream.prototype._transform = function (chunk, encoding, done) {
236
+ done();
237
+ };
238
+ CanbusStream.prototype.end = function () {
239
+ if (this.channel) {
240
+ const channel = this.channel;
241
+ delete this.channel;
242
+ channel.stop();
243
+ }
244
+ if (this.noDataInterval) {
245
+ clearInterval(this.noDataInterval);
246
+ }
247
+ };
248
+ CanbusStream.prototype.pipe = function (pipeTo) {
249
+ if (!pipeTo.fromPgn) {
250
+ this.plainText = true;
251
+ }
252
+ /*
253
+ pipeTo.fromPgn.on('pgn', (pgn) => {
254
+ if ( this.candevice ) {
255
+ this.candevice.n2kMessage(pgn)
256
+ }
257
+ })
258
+ */
259
+ return CanbusStream.super_.prototype.pipe.call(this, pipeTo);
260
+ };
261
+ //# sourceMappingURL=canbus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canbus.js","sourceRoot":"","sources":["../lib/canbus.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Copyright 2018 Scott Bender (scott@scottbender.net) and Jouni Hartikainen (jouni.hartikainen@iki.fi)
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { PGN } from '@canboat/ts-pgns';
17
+ import { N2kDevice } from './n2kDevice';
18
+ export declare class CanDevice extends N2kDevice {
19
+ canbus: any;
20
+ constructor(canbus: any, options: any);
21
+ sendPGN(pgn: PGN, src?: number | undefined): void;
22
+ }
23
+ //# sourceMappingURL=candevice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"candevice.d.ts","sourceRoot":"","sources":["../lib/candevice.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAGvC,qBAAa,SAAU,SAAQ,SAAS;IACtC,MAAM,EAAE,GAAG,CAAA;gBAEC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG;IAYrC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,GAAE,MAAM,GAAG,SAAqB;CAKtD"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright 2018 Scott Bender (scott@scottbender.net) and Jouni Hartikainen (jouni.hartikainen@iki.fi)
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.CanDevice = void 0;
19
+ const n2kDevice_1 = require("./n2kDevice");
20
+ class CanDevice extends n2kDevice_1.N2kDevice {
21
+ canbus;
22
+ constructor(canbus, options) {
23
+ super(options, 'canboatjs:candevice');
24
+ this.canbus = canbus;
25
+ if (options.app) {
26
+ options.app.on(options.analyzerOutEvent || 'N2KAnalyzerOut', this.n2kMessage.bind(this));
27
+ }
28
+ }
29
+ sendPGN(pgn, src = undefined) {
30
+ pgn.src = src || this.address;
31
+ this.debug('Sending PGN %j', pgn);
32
+ this.canbus.sendPGN(pgn, true);
33
+ }
34
+ }
35
+ exports.CanDevice = CanDevice;
36
+ //# sourceMappingURL=candevice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"candevice.js","sourceRoot":"","sources":["../lib/candevice.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAGH,2CAAuC;AAGvC,MAAa,SAAU,SAAQ,qBAAS;IACtC,MAAM,CAAK;IAEX,YAAY,MAAW,EAAE,OAAY;QACnC,KAAK,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAA;QACrC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QAEpB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,EAAE,CACZ,OAAO,CAAC,gBAAgB,IAAI,gBAAgB,EAC5C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAC3B,CAAA;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAQ,EAAE,MAA0B,SAAS;QACnD,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,CAAC,OAAO,CAAA;QAC7B,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAA;QACjC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAChC,CAAC;CACF;AApBD,8BAoBC"}
@@ -0,0 +1,2 @@
1
+ export declare const defaultTransmitPGNs: number[];
2
+ //# sourceMappingURL=codes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codes.d.ts","sourceRoot":"","sources":["../lib/codes.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,mBAAmB,UAI/B,CAAA"}
package/dist/codes.js ADDED
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright 2025 Scott Bender <scott@scottbender.net>
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.defaultTransmitPGNs = void 0;
19
+ exports.defaultTransmitPGNs = [
20
+ 126992, 128267, 129794, 129038, 129041, 127505, 127506, 127508, 129026,
21
+ 129025, 129029, 127250, 130306, 126720, 127489, 127488, 130311, 130312,
22
+ 127257, 128259, 127502
23
+ ];
24
+ //# sourceMappingURL=codes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codes.js","sourceRoot":"","sources":["../lib/codes.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;AAEW,QAAA,mBAAmB,GAAG;IACjC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IACtE,MAAM,EAAE,MAAM,EAAE,MAAM;CACvB,CAAA"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Copyright 2019 Scott Bender <scott@scottbender.net>
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ export declare function discover(app: any): void;
17
+ //# sourceMappingURL=discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../lib/discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,QA+FhC"}
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright 2019 Scott Bender <scott@scottbender.net>
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ var __importDefault = (this && this.__importDefault) || function (mod) {
18
+ return (mod && mod.__esModule) ? mod : { "default": mod };
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.discover = discover;
22
+ const utilities_1 = require("./utilities");
23
+ const stringMsg_1 = require("./stringMsg");
24
+ const dgram_1 = __importDefault(require("dgram"));
25
+ const debug = (0, utilities_1.createDebug)('canboatjs:discovery');
26
+ function discover(app) {
27
+ if (app.config.settings.pipedProviders) {
28
+ const exists = app.config.settings.pipedProviders.find((provider) => {
29
+ return (provider.pipeElements &&
30
+ provider.pipeElements.length === 1 &&
31
+ provider.pipeElements[0].type == 'providers/simple' &&
32
+ provider.pipeElements[0].options &&
33
+ provider.pipeElements[0].options.type === 'NMEA2000' &&
34
+ provider.pipeElements[0].options.subOptions.type ===
35
+ 'ydwg02-udp-canboatjs' &&
36
+ provider.pipeElements[0].options.subOptions.port === '2002');
37
+ });
38
+ if (!exists) {
39
+ const socket = dgram_1.default.createSocket('udp4');
40
+ socket.on('message', (buffer, _remote) => {
41
+ const msg = buffer.toString('utf8');
42
+ if ((0, stringMsg_1.isYDRAW)(msg)) {
43
+ socket.close();
44
+ app.emit('discovered', {
45
+ id: 'YDGW-02-UDP',
46
+ pipeElements: [
47
+ {
48
+ type: 'providers/simple',
49
+ options: {
50
+ logging: false,
51
+ type: 'NMEA2000',
52
+ subOptions: {
53
+ type: 'ydwg02-udp-canboatjs',
54
+ port: '2002'
55
+ }
56
+ }
57
+ }
58
+ ]
59
+ });
60
+ }
61
+ });
62
+ socket.on('error', (error) => {
63
+ debug(error);
64
+ });
65
+ socket.on('close', () => {
66
+ debug('close');
67
+ });
68
+ debug('looking for YDGW over UDP');
69
+ try {
70
+ socket.bind(2002);
71
+ }
72
+ catch (ex) {
73
+ debug(ex);
74
+ }
75
+ setTimeout(() => {
76
+ if (socket) {
77
+ socket.close();
78
+ }
79
+ }, 5000);
80
+ }
81
+ }
82
+ /*
83
+ if ( app.config.settings.pipedProviders ) {
84
+ const exists = app.config.settings.pipedProviders.find(provider => {
85
+ return provider.pipeElements
86
+ && provider.pipeElements.length === 1
87
+ && provider.pipeElements[0].type == 'providers/simple'
88
+ && provider.pipeElements[0].options
89
+ && provider.pipeElements[0].options.type === 'NMEA2000'
90
+ && provider.pipeElements[0].options.subOptions.host === '192.168.88.99'
91
+ && provider.pipeElements[0].options.subOptions.port === '1457'
92
+ })
93
+
94
+ if ( !exists )
95
+ {
96
+ setTimeout(() =>
97
+ app.emit('discovered', {
98
+ id: 'TestDiscovered',
99
+ pipeElements: [
100
+ {
101
+ "type": "providers/simple",
102
+ "options": {
103
+ "logging": false,
104
+ "type": "NMEA2000",
105
+ "subOptions": {
106
+ "type": "ydwg02-canboatjs",
107
+ "host": "192.168.88.99",
108
+ "port": "1457"
109
+ }
110
+ }
111
+ }
112
+ ]
113
+ }), 5000)
114
+
115
+ }
116
+ }
117
+ */
118
+ }
119
+ //# sourceMappingURL=discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../lib/discovery.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;AAQH,4BA+FC;AArGD,2CAAyC;AACzC,2CAAqC;AACrC,kDAAyB;AAEzB,MAAM,KAAK,GAAG,IAAA,uBAAW,EAAC,qBAAqB,CAAC,CAAA;AAEhD,SAAgB,QAAQ,CAAC,GAAQ;IAC/B,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,QAAa,EAAE,EAAE;YACvE,OAAO,CACL,QAAQ,CAAC,YAAY;gBACrB,QAAQ,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;gBAClC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,kBAAkB;gBACnD,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO;gBAChC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,UAAU;gBACpD,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI;oBAC9C,sBAAsB;gBACxB,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,KAAK,MAAM,CAC5D,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,MAAM,GAAG,eAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;YACzC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,MAAc,EAAE,OAAY,EAAE,EAAE;gBACpD,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;gBACnC,IAAI,IAAA,mBAAO,EAAC,GAAG,CAAC,EAAE,CAAC;oBACjB,MAAM,CAAC,KAAK,EAAE,CAAA;oBACd,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE;wBACrB,EAAE,EAAE,aAAa;wBACjB,YAAY,EAAE;4BACZ;gCACE,IAAI,EAAE,kBAAkB;gCACxB,OAAO,EAAE;oCACP,OAAO,EAAE,KAAK;oCACd,IAAI,EAAE,UAAU;oCAChB,UAAU,EAAE;wCACV,IAAI,EAAE,sBAAsB;wCAC5B,IAAI,EAAE,MAAM;qCACb;iCACF;6BACF;yBACF;qBACF,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC,CAAC,CAAA;YACF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAU,EAAE,EAAE;gBAChC,KAAK,CAAC,KAAK,CAAC,CAAA;YACd,CAAC,CAAC,CAAA;YACF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACtB,KAAK,CAAC,OAAO,CAAC,CAAA;YAChB,CAAC,CAAC,CAAA;YACF,KAAK,CAAC,2BAA2B,CAAC,CAAA;YAClC,IAAI,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACnB,CAAC;YAAC,OAAO,EAAE,EAAE,CAAC;gBACZ,KAAK,CAAC,EAAE,CAAC,CAAA;YACX,CAAC;YACD,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,CAAC,KAAK,EAAE,CAAA;gBAChB,CAAC;YACH,CAAC,EAAE,IAAI,CAAC,CAAA;QACV,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAmCA;AACF,CAAC"}