@ikalogic/at1000 0.4.0 → 0.5.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 (128) hide show
  1. package/README.md +23 -0
  2. package/build/at1000-DbIvMQUc.cjs +8 -0
  3. package/build/at1000-DbIvMQUc.cjs.map +1 -0
  4. package/build/at1000-Zs18VzlP.mjs +8 -0
  5. package/build/at1000-Zs18VzlP.mjs.map +1 -0
  6. package/build/{at1000-B3HgANSi.d.mts → at1000-gm586Tc9.d.mts} +10 -16
  7. package/build/at1000-gm586Tc9.d.mts.map +1 -0
  8. package/build/{at1000-C6w5G8L4.d.cts → at1000-tUTVczQa.d.cts} +10 -16
  9. package/build/at1000-tUTVczQa.d.cts.map +1 -0
  10. package/build/browser.cjs +1 -1
  11. package/build/browser.cjs.map +1 -1
  12. package/build/browser.d.cts +5 -4
  13. package/build/browser.d.cts.map +1 -1
  14. package/build/browser.d.mts +5 -4
  15. package/build/browser.d.mts.map +1 -1
  16. package/build/browser.mjs +1 -1
  17. package/build/browser.mjs.map +1 -1
  18. package/build/{com-BLw4CGid.d.cts → com-DN1l6xqC.d.cts} +7 -3
  19. package/build/com-DN1l6xqC.d.cts.map +1 -0
  20. package/build/{com-BLw4CGid.d.mts → com-DN1l6xqC.d.mts} +7 -3
  21. package/build/com-DN1l6xqC.d.mts.map +1 -0
  22. package/build/com.cjs +1 -1
  23. package/build/com.cjs.map +1 -1
  24. package/build/com.d.cts +1 -1
  25. package/build/com.d.mts +1 -1
  26. package/build/com.mjs +1 -1
  27. package/build/com.mjs.map +1 -1
  28. package/build/common-BSrNhbq_.cjs +2 -0
  29. package/build/{common-BSabSaAU.cjs.map → common-BSrNhbq_.cjs.map} +1 -1
  30. package/build/{common-BY1vXz1l.d.cts → common-Cv6nZZS9.d.cts} +1 -2
  31. package/build/common-Cv6nZZS9.d.cts.map +1 -0
  32. package/build/{common-BY1vXz1l.d.mts → common-Cv6nZZS9.d.mts} +1 -2
  33. package/build/common-Cv6nZZS9.d.mts.map +1 -0
  34. package/build/{events-CBVQfojK.d.cts → events-Cf7iAMZP.d.cts} +4 -3
  35. package/build/events-Cf7iAMZP.d.cts.map +1 -0
  36. package/build/{events-CBVQfojK.d.mts → events-Cf7iAMZP.d.mts} +4 -3
  37. package/build/events-Cf7iAMZP.d.mts.map +1 -0
  38. package/build/events.cjs +1 -1
  39. package/build/events.d.cts +1 -1
  40. package/build/events.d.mts +1 -1
  41. package/build/events.mjs +1 -1
  42. package/build/{gpio-BuvDysYa.d.cts → gpio-CsxbjhA_.d.cts} +2 -3
  43. package/build/gpio-CsxbjhA_.d.cts.map +1 -0
  44. package/build/{gpio-DgQHE5fr.d.mts → gpio-Dk-s_yMc.d.mts} +2 -3
  45. package/build/gpio-Dk-s_yMc.d.mts.map +1 -0
  46. package/build/gpio.cjs +1 -1
  47. package/build/gpio.cjs.map +1 -1
  48. package/build/gpio.d.cts +2 -2
  49. package/build/gpio.d.mts +2 -2
  50. package/build/{hmi-BrdqKB3o.d.cts → hmi-B-potLdl.d.cts} +1 -2
  51. package/build/hmi-B-potLdl.d.cts.map +1 -0
  52. package/build/{hmi-BrdqKB3o.d.mts → hmi-B-potLdl.d.mts} +1 -2
  53. package/build/hmi-B-potLdl.d.mts.map +1 -0
  54. package/build/hmi.cjs +1 -1
  55. package/build/hmi.cjs.map +1 -1
  56. package/build/hmi.d.cts +1 -1
  57. package/build/hmi.d.mts +1 -1
  58. package/build/management.cjs +1 -1
  59. package/build/management.d.cts +20 -3
  60. package/build/management.d.cts.map +1 -1
  61. package/build/management.d.mts +20 -3
  62. package/build/management.d.mts.map +1 -1
  63. package/build/management.mjs +1 -1
  64. package/build/node.cjs +1 -1
  65. package/build/node.cjs.map +1 -1
  66. package/build/node.d.cts +16 -11
  67. package/build/node.d.cts.map +1 -1
  68. package/build/node.d.mts +16 -11
  69. package/build/node.d.mts.map +1 -1
  70. package/build/node.mjs +1 -1
  71. package/build/node.mjs.map +1 -1
  72. package/build/package-0hAwYBa1.cjs +2 -0
  73. package/build/package-0hAwYBa1.cjs.map +1 -0
  74. package/build/package-CU5MagIg.mjs +2 -0
  75. package/build/package-CU5MagIg.mjs.map +1 -0
  76. package/build/{power-FmknBUz2.d.cts → power-B8QFbKdP.d.cts} +2 -3
  77. package/build/power-B8QFbKdP.d.cts.map +1 -0
  78. package/build/{power-HWfK-Ybw.d.mts → power-BZmXOJyK.d.mts} +2 -3
  79. package/build/power-BZmXOJyK.d.mts.map +1 -0
  80. package/build/power.cjs +1 -1
  81. package/build/power.cjs.map +1 -1
  82. package/build/power.d.cts +2 -2
  83. package/build/power.d.mts +2 -2
  84. package/build/{relays-8EGNIK1T.d.cts → relays-TADiLsPk.d.cts} +1 -3
  85. package/build/relays-TADiLsPk.d.cts.map +1 -0
  86. package/build/{relays-8EGNIK1T.d.mts → relays-TADiLsPk.d.mts} +1 -3
  87. package/build/relays-TADiLsPk.d.mts.map +1 -0
  88. package/build/relays.cjs +1 -1
  89. package/build/relays.cjs.map +1 -1
  90. package/build/relays.d.cts +1 -1
  91. package/build/relays.d.mts +1 -1
  92. package/build/{session-D7TpUd6L.d.cts → session-qWW9mqWH.d.cts} +1 -2
  93. package/build/session-qWW9mqWH.d.cts.map +1 -0
  94. package/build/{session-D7TpUd6L.d.mts → session-qWW9mqWH.d.mts} +1 -2
  95. package/build/session-qWW9mqWH.d.mts.map +1 -0
  96. package/build/session.cjs +1 -1
  97. package/build/session.d.cts +1 -1
  98. package/build/session.d.mts +1 -1
  99. package/build/session.mjs +1 -1
  100. package/package.json +6 -2
  101. package/build/at1000-B3HgANSi.d.mts.map +0 -1
  102. package/build/at1000-B_udjy0I.cjs +0 -8
  103. package/build/at1000-B_udjy0I.cjs.map +0 -1
  104. package/build/at1000-BjVj0Ujk.mjs +0 -8
  105. package/build/at1000-BjVj0Ujk.mjs.map +0 -1
  106. package/build/at1000-C6w5G8L4.d.cts.map +0 -1
  107. package/build/com-BLw4CGid.d.cts.map +0 -1
  108. package/build/com-BLw4CGid.d.mts.map +0 -1
  109. package/build/common-BSabSaAU.cjs +0 -2
  110. package/build/common-BY1vXz1l.d.cts.map +0 -1
  111. package/build/common-BY1vXz1l.d.mts.map +0 -1
  112. package/build/events-CBVQfojK.d.cts.map +0 -1
  113. package/build/events-CBVQfojK.d.mts.map +0 -1
  114. package/build/gpio-BuvDysYa.d.cts.map +0 -1
  115. package/build/gpio-DgQHE5fr.d.mts.map +0 -1
  116. package/build/hmi-BrdqKB3o.d.cts.map +0 -1
  117. package/build/hmi-BrdqKB3o.d.mts.map +0 -1
  118. package/build/package-Bcvmz2Lx.cjs +0 -2
  119. package/build/package-Bcvmz2Lx.cjs.map +0 -1
  120. package/build/package-CN49oc-F.mjs +0 -2
  121. package/build/package-CN49oc-F.mjs.map +0 -1
  122. package/build/power-FmknBUz2.d.cts.map +0 -1
  123. package/build/power-HWfK-Ybw.d.mts.map +0 -1
  124. package/build/relays-8EGNIK1T.d.cts.map +0 -1
  125. package/build/relays-8EGNIK1T.d.mts.map +0 -1
  126. package/build/session-D7TpUd6L.d.cts.map +0 -1
  127. package/build/session-D7TpUd6L.d.mts.map +0 -1
  128. /package/build/{chunk-CMqjfN_6.cjs → rolldown-runtime-CMqjfN_6.cjs} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.cts","names":[],"sources":["../src/browser.ts"],"mappings":";;;;;cASa,MAAA,SAAe,UAAA;EAAA,gBACV,UAAA;EAO+C;;;;;EAAA,OAAlD,IAAA,CAAK,MAAA,EAAQ,gBAAA,WAA2B,OAAA,GAAU,WAAA,GAAc,OAAA,CAAQ,MAAA;AAAA"}
1
+ {"version":3,"file":"browser.d.cts","names":[],"sources":["../src/browser.ts"],"mappings":";;;;cASa,eAAe;kBACV;;SAGT;;;;;;SASM,KAAK,cAAc,UAAU,cAAc,QAAQ"}
@@ -1,17 +1,18 @@
1
1
  import { ProjectTemplate } from "./management.mjs";
2
- import { a as format_host_for_url, i as OpenOptions, n as ApiError, o as host_without_port, r as DiscoveredDevice, t as AT1000Base } from "./at1000-B3HgANSi.mjs";
3
-
2
+ import { a as host_without_port, i as format_host_for_url, n as ApiError, r as OpenOptions, t as AT1000Base } from "./at1000-gm586Tc9.mjs";
4
3
  //#region src/browser.d.ts
5
4
  /** @hideconstructor */
6
5
  declare class AT1000 extends AT1000Base {
7
6
  static readonly apiVersion: string;
7
+ /** The browser never runs on-device; standalone mode is unavailable. */
8
+ static isStandalone(): boolean;
8
9
  /**
9
10
  * Opens a device, taking exclusive (remote-kind) access. The browser entry has
10
11
  * no in-container detection and no label default; the server falls back to the
11
12
  * client IP for the holder label.
12
13
  */
13
- static open(device: DiscoveredDevice | string, options?: OpenOptions): Promise<AT1000>;
14
+ static open(host: string, options?: OpenOptions): Promise<AT1000>;
14
15
  }
15
16
  //#endregion
16
- export { AT1000, ApiError, type DiscoveredDevice, type OpenOptions, type ProjectTemplate, format_host_for_url, host_without_port };
17
+ export { AT1000, ApiError, type OpenOptions, type ProjectTemplate, format_host_for_url, host_without_port };
17
18
  //# sourceMappingURL=browser.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.mts","names":[],"sources":["../src/browser.ts"],"mappings":";;;;;cASa,MAAA,SAAe,UAAA;EAAA,gBACV,UAAA;EAO+C;;;;;EAAA,OAAlD,IAAA,CAAK,MAAA,EAAQ,gBAAA,WAA2B,OAAA,GAAU,WAAA,GAAc,OAAA,CAAQ,MAAA;AAAA"}
1
+ {"version":3,"file":"browser.d.mts","names":[],"sources":["../src/browser.ts"],"mappings":";;;;cASa,eAAe;kBACV;;SAGT;;;;;;SASM,KAAK,cAAc,UAAU,cAAc,QAAQ"}
package/build/browser.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{t as e}from"./package-CN49oc-F.mjs";import{i as t,n,r,t as i}from"./at1000-BjVj0Ujk.mjs";var a=class extends i{static apiVersion=e;static async open(e,t){return await i.openBase(e,t)}};export{a as AT1000,n as ApiError,r as format_host_for_url,t as host_without_port};
1
+ import{t as e}from"./package-CU5MagIg.mjs";import{i as t,n,r,t as i}from"./at1000-Zs18VzlP.mjs";var a=class extends i{static apiVersion=e;static isStandalone(){return!1}static async open(e,t){return await i.openBase(e,t)}};export{a as AT1000,n as ApiError,r as format_host_for_url,t as host_without_port};
2
2
  //# sourceMappingURL=browser.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser.mjs","names":[],"sources":["../src/browser.ts"],"sourcesContent":["import { version } from '../package.json';\nimport { AT1000Base, type DiscoveredDevice, type OpenOptions } from './at1000';\n\nexport type { ProjectTemplate } from './api/management';\nexport { ApiError } from './at1000';\nexport { format_host_for_url, host_without_port } from './at1000';\nexport type { DiscoveredDevice, OpenOptions } from './at1000';\n\n/** @hideconstructor */\nexport class AT1000 extends AT1000Base {\n static readonly apiVersion = version;\n\n /**\n * Opens a device, taking exclusive (remote-kind) access. The browser entry has\n * no in-container detection and no label default; the server falls back to the\n * client IP for the holder label.\n */\n static async open(device: DiscoveredDevice | string, options?: OpenOptions): Promise<AT1000> {\n // AT1000 adds no instance state over AT1000Base; the cast is the create-era convention.\n return (await AT1000Base.openBase(device, options)) as AT1000;\n }\n}\n"],"mappings":"gGASA,IAAa,EAAb,cAA4B,CAAW,CACrC,OAAgB,WAAa,EAO7B,aAAa,KAAK,EAAmC,EAAwC,CAE3F,OAAQ,MAAM,EAAW,SAAS,EAAQ,CAAO,CACnD,CACF"}
1
+ {"version":3,"file":"browser.mjs","names":[],"sources":["../src/browser.ts"],"sourcesContent":["import { version } from '../package.json';\nimport { AT1000Base, type OpenOptions } from './at1000';\n\nexport type { ProjectTemplate } from './api/management';\nexport { ApiError } from './at1000';\nexport { format_host_for_url, host_without_port } from './at1000';\nexport type { OpenOptions } from './at1000';\n\n/** @hideconstructor */\nexport class AT1000 extends AT1000Base {\n static readonly apiVersion = version;\n\n /** The browser never runs on-device; standalone mode is unavailable. */\n static isStandalone(): boolean {\n return false;\n }\n\n /**\n * Opens a device, taking exclusive (remote-kind) access. The browser entry has\n * no in-container detection and no label default; the server falls back to the\n * client IP for the holder label.\n */\n static async open(host: string, options?: OpenOptions): Promise<AT1000> {\n // AT1000 adds no instance state over AT1000Base; the cast is the create-era convention.\n return (await AT1000Base.openBase(host, options)) as AT1000;\n }\n}\n"],"mappings":"gGASA,IAAa,EAAb,cAA4B,CAAW,CACrC,OAAgB,WAAa,EAG7B,OAAO,cAAwB,CAC7B,MAAO,EACT,CAOA,aAAa,KAAK,EAAc,EAAwC,CAEtE,OAAQ,MAAM,EAAW,SAAS,EAAM,CAAO,CACjD,CACF"}
@@ -1,12 +1,14 @@
1
1
  import { UpFetch } from "up-fetch";
2
2
  import * as v from "valibot";
3
-
4
3
  //#region src/api/com.d.ts
5
4
  declare const canFrame: v.ObjectSchema<{
6
5
  readonly id: v.NumberSchema<undefined>;
7
6
  readonly extended_id: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
8
7
  readonly rtr: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
9
- readonly data: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.NumberSchema<undefined>, undefined>, v.MinLengthAction<number[], 0, undefined>, v.MaxLengthAction<number[], 8, undefined>]>, readonly []>; /** Transmit-only: max ms to wait for a free TX buffer. Omit for the server default (1000 ms). */
8
+ /** RTR-only: requested data length (0-8). The server rejects `dlc` on data frames and non-empty `data` on RTR frames. */
9
+ readonly dlc: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 8, undefined>]>, undefined>;
10
+ readonly data: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.NumberSchema<undefined>, undefined>, v.MinLengthAction<number[], 0, undefined>, v.MaxLengthAction<number[], 8, undefined>]>, readonly []>;
11
+ /** Transmit-only: max ms to wait for a free TX buffer. Omit for the server default (1000 ms). */
10
12
  readonly timeout: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 5000, undefined>]>, undefined>;
11
13
  }, undefined>;
12
14
  type CanFrame = v.InferOutput<typeof canFrame>;
@@ -1228,6 +1230,8 @@ declare class Can {
1228
1230
  * Each frame may carry an optional `timeout` (milliseconds, 1-5000) bounding how
1229
1231
  * long the device waits for a free hardware TX buffer before that frame fails.
1230
1232
  * Omit it to use the server default (1000 ms).
1233
+ *
1234
+ * RTR frames set `dlc` (0-8) to request a data length instead of carrying `data`.
1231
1235
  * @param data A single frame, or an array of frames to transmit as a batch.
1232
1236
  * @returns The transmitted frame, or the array of transmitted frames, mirroring the input.
1233
1237
  */
@@ -1429,4 +1433,4 @@ declare class Uart {
1429
1433
  }
1430
1434
  //#endregion
1431
1435
  export { UartConfig as A, rs485Config as B, SerialParity as C, SpiConfigPatch as D, SpiConfig as E, UsbState as F, uartConfig as H, canConfig as I, canFrame as L, UartEnableConfig as M, UsbDevice as N, SpiEnableConfig as O, UsbInterface as P, i2cConfig as R, SerialDataInput as S, Spi as T, spiConfig as V, Rs485 as _, CanFrame as a, Rs485EnableConfig as b, ComUsb as c, I2cConfigPatch as d, I2cEnableConfig as f, Rs232EnableConfig as g, Rs232ConfigPatch as h, CanEnableConfig as i, UartConfigPatch as j, Uart as k, I2c as l, Rs232Config as m, CanConfig as n, CanFrameInput as o, Rs232 as p, CanConfigPatch as r, ComApi as s, Can as t, I2cConfig as u, Rs485Config as v, SerialStopBits as w, SerialData as x, Rs485ConfigPatch as y, rs232Config as z };
1432
- //# sourceMappingURL=com-BLw4CGid.d.cts.map
1436
+ //# sourceMappingURL=com-DN1l6xqC.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"com-DN1l6xqC.d.cts","names":[],"sources":["../src/api/com.ts"],"mappings":"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"}
@@ -1,12 +1,14 @@
1
1
  import { UpFetch } from "up-fetch";
2
2
  import * as v from "valibot";
3
-
4
3
  //#region src/api/com.d.ts
5
4
  declare const canFrame: v.ObjectSchema<{
6
5
  readonly id: v.NumberSchema<undefined>;
7
6
  readonly extended_id: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
8
7
  readonly rtr: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
9
- readonly data: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.NumberSchema<undefined>, undefined>, v.MinLengthAction<number[], 0, undefined>, v.MaxLengthAction<number[], 8, undefined>]>, readonly []>; /** Transmit-only: max ms to wait for a free TX buffer. Omit for the server default (1000 ms). */
8
+ /** RTR-only: requested data length (0-8). The server rejects `dlc` on data frames and non-empty `data` on RTR frames. */
9
+ readonly dlc: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 8, undefined>]>, undefined>;
10
+ readonly data: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.NumberSchema<undefined>, undefined>, v.MinLengthAction<number[], 0, undefined>, v.MaxLengthAction<number[], 8, undefined>]>, readonly []>;
11
+ /** Transmit-only: max ms to wait for a free TX buffer. Omit for the server default (1000 ms). */
10
12
  readonly timeout: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 5000, undefined>]>, undefined>;
11
13
  }, undefined>;
12
14
  type CanFrame = v.InferOutput<typeof canFrame>;
@@ -1228,6 +1230,8 @@ declare class Can {
1228
1230
  * Each frame may carry an optional `timeout` (milliseconds, 1-5000) bounding how
1229
1231
  * long the device waits for a free hardware TX buffer before that frame fails.
1230
1232
  * Omit it to use the server default (1000 ms).
1233
+ *
1234
+ * RTR frames set `dlc` (0-8) to request a data length instead of carrying `data`.
1231
1235
  * @param data A single frame, or an array of frames to transmit as a batch.
1232
1236
  * @returns The transmitted frame, or the array of transmitted frames, mirroring the input.
1233
1237
  */
@@ -1429,4 +1433,4 @@ declare class Uart {
1429
1433
  }
1430
1434
  //#endregion
1431
1435
  export { UartConfig as A, rs485Config as B, SerialParity as C, SpiConfigPatch as D, SpiConfig as E, UsbState as F, uartConfig as H, canConfig as I, canFrame as L, UartEnableConfig as M, UsbDevice as N, SpiEnableConfig as O, UsbInterface as P, i2cConfig as R, SerialDataInput as S, Spi as T, spiConfig as V, Rs485 as _, CanFrame as a, Rs485EnableConfig as b, ComUsb as c, I2cConfigPatch as d, I2cEnableConfig as f, Rs232EnableConfig as g, Rs232ConfigPatch as h, CanEnableConfig as i, UartConfigPatch as j, Uart as k, I2c as l, Rs232Config as m, CanConfig as n, CanFrameInput as o, Rs232 as p, CanConfigPatch as r, ComApi as s, Can as t, I2cConfig as u, Rs485Config as v, SerialStopBits as w, SerialData as x, Rs485ConfigPatch as y, rs232Config as z };
1432
- //# sourceMappingURL=com-BLw4CGid.d.mts.map
1436
+ //# sourceMappingURL=com-DN1l6xqC.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"com-DN1l6xqC.d.mts","names":[],"sources":["../src/api/com.ts"],"mappings":"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"}
package/build/com.cjs CHANGED
@@ -1,2 +1,2 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./chunk-CMqjfN_6.cjs");let t=require("valibot");t=e.t(t,1);const n=t.object({id:t.number(),extended_id:t.optional(t.boolean(),!1),rtr:t.optional(t.boolean(),!1),data:t.optional(t.pipe(t.array(t.number()),t.minLength(0),t.maxLength(8)),[]),timeout:t.optional(t.pipe(t.number(),t.integer(),t.minValue(1),t.maxValue(5e3)))}),r=t.pipe(t.union([t.pipe(t.string(),t.maxLength(65536)),t.pipe(t.array(t.pipe(t.number(),t.minValue(0),t.maxValue(255))),t.maxLength(65536))]),t.transform(e=>typeof e==`string`?e.split(``).map(e=>{let t=e.charCodeAt(0);return t>127?63:t}):e)),i=t.object({address:t.number(),start:t.boolean(),stop:t.boolean(),nack_last_byte:t.boolean()}),a=t.intersect([t.partial(i,[`start`,`stop`,`nack_last_byte`]),t.object({length:t.pipe(t.number(),t.minValue(1),t.maxValue(1024))})]),o=t.intersect([t.partial(i,[`start`,`stop`,`nack_last_byte`]),t.object({data:r})]),s=t.object({enabled:t.boolean(),baud_rate:t.picklist([5e3,1e4,2e4,31250,33e3,4e4,5e4,8e4,83300,95e3,1e5,125e3,2e5,25e4,5e5,1e6]),termination_resistors:t.boolean(),rx_filter:t.object({extended_id:t.boolean(),id:t.number(),mask:t.number()})}),c=t.partial(s);t.omit(c,[`enabled`]);const l=t.picklist([`none`,`odd`,`even`,`mark`,`space`]),u=t.picklist([`1`,`1.5`,`2`]),d=t.object({enabled:t.boolean(),baud_rate:t.pipe(t.number(),t.minValue(50),t.maxValue(1e6)),data_bits:t.pipe(t.number(),t.minValue(7),t.maxValue(8)),stop_bits:u,parity:l}),f=t.partial(d);t.omit(f,[`enabled`]);const p=t.object({enabled:t.boolean(),baud_rate:t.pipe(t.number(),t.minValue(300),t.maxValue(2e7)),data_bits:t.pipe(t.number(),t.minValue(7),t.maxValue(8)),stop_bits:u,parity:l,termination_resistors:t.boolean()}),m=t.partial(p);t.omit(m,[`enabled`]);const h=t.object({enabled:t.boolean(),baud_rate:t.pipe(t.number(),t.minValue(300),t.maxValue(1e7)),vcc:t.pipe(t.number(),t.minValue(1.6),t.maxValue(5)),mode:t.pipe(t.number(),t.minValue(0),t.maxValue(3))}),g=t.partial(h);t.omit(g,[`enabled`]);const _=t.object({enabled:t.boolean(),baud_rate:t.picklist([1e5,4e5,1e6]),vcc:t.pipe(t.number(),t.minValue(1.6),t.maxValue(5))}),v=t.partial(_);t.omit(v,[`enabled`]);const y=t.object({enabled:t.boolean(),baud_rate:t.pipe(t.number(),t.minValue(300),t.maxValue(12e6)),vcc:t.pipe(t.number(),t.minValue(1.6),t.maxValue(5)),data_bits:t.pipe(t.number(),t.minValue(7),t.maxValue(8)),stop_bits:u,parity:l}),b=t.partial(y);t.omit(b,[`enabled`]);const x=t.object({number:t.number(),class:t.number(),subclass:t.number(),protocol:t.number(),num_endpoints:t.number()}),S=t.object({vendor_id:t.number(),product_id:t.number(),device_class:t.number(),device_subclass:t.number(),device_protocol:t.number(),usb_version:t.string(),speed:t.string(),manufacturer:t.optional(t.nullable(t.string())),product:t.optional(t.nullable(t.string())),serial_number:t.optional(t.nullable(t.string())),bus:t.number(),port:t.number(),address:t.number(),num_configurations:t.number(),interfaces:t.array(x)}),C=t.object({devices:t.array(S)});var w=class{fetch;constructor(e){this.fetch=e}reset(){return this.fetch(`/com/reset`,{method:`POST`,parseResponse:()=>{}})}can(e){return new E(this.fetch,e)}rs232(e){return new D(this.fetch,e)}rs485(e){return new O(this.fetch,e)}spi(e){return new k(this.fetch,e)}i2c(e){return new A(this.fetch,e)}uart(e){return new j(this.fetch,e)}usb(e){return new T(this.fetch,e)}},T=class{fetch;id;constructor(e,t){this.fetch=e,this.id=t}state(){return this.fetch(`/com/usb/${this.id}/state`,{schema:C})}},E=class{fetch;id;constructor(e,t){this.fetch=e,this.id=t}configure(e){return this.fetch(`/com/can/${this.id}/config`,{method:`PATCH`,body:t.parse(c,e),schema:s})}enable(e={}){return this.configure({...e,enabled:!0})}disable(){return this.configure({enabled:!1})}tx(e){return Array.isArray(e)?this.fetch(`/com/can/${this.id}/write`,{method:`POST`,body:e.map(e=>t.parse(n,e)),schema:t.array(n)}):this.fetch(`/com/can/${this.id}/write`,{method:`POST`,body:t.parse(n,e),schema:n})}start_rx(){return this.fetch(`/com/can/${this.id}/start_rx`,{method:`POST`,parseResponse:()=>{}})}stop_rx(){return this.fetch(`/com/can/${this.id}/stop_rx`,{method:`POST`,parseResponse:()=>{}})}rx(){return this.fetch(`/com/can/${this.id}/read`,{schema:t.array(n)})}},D=class{fetch;id;constructor(e,t){this.fetch=e,this.id=t}configure(e){return this.fetch(`/com/rs232/${this.id}/config`,{method:`PATCH`,body:t.parse(f,e),schema:d})}enable(e={}){return this.configure({...e,enabled:!0})}disable(){return this.configure({enabled:!1})}tx(e){return this.fetch(`/com/rs232/${this.id}/write`,{method:`POST`,body:t.parse(r,e),schema:r})}start_rx(){return this.fetch(`/com/rs232/${this.id}/start_rx`,{method:`POST`,parseResponse:()=>{}})}stop_rx(){return this.fetch(`/com/rs232/${this.id}/stop_rx`,{method:`POST`,parseResponse:()=>{}})}rx(){return this.fetch(`/com/rs232/${this.id}/read`,{schema:r})}},O=class{fetch;id;constructor(e,t){this.fetch=e,this.id=t}configure(e){return this.fetch(`/com/rs485/${this.id}/config`,{method:`PATCH`,body:t.parse(m,e),schema:p})}enable(e={}){return this.configure({...e,enabled:!0})}disable(){return this.configure({enabled:!1})}tx(e){return this.fetch(`/com/rs485/${this.id}/write`,{method:`POST`,body:t.parse(r,e),schema:r})}start_rx(){return this.fetch(`/com/rs485/${this.id}/start_rx`,{method:`POST`,parseResponse:()=>{}})}stop_rx(){return this.fetch(`/com/rs485/${this.id}/stop_rx`,{method:`POST`,parseResponse:()=>{}})}rx(){return this.fetch(`/com/rs485/${this.id}/read`,{schema:r})}},k=class{fetch;id;constructor(e,t){this.fetch=e,this.id=t}configure(e){return this.fetch(`/com/spi/${this.id}/config`,{method:`PATCH`,body:t.parse(g,e),schema:h})}enable(e={}){return this.configure({...e,enabled:!0})}disable(){return this.configure({enabled:!1})}trx(e){return this.fetch(`/com/spi/${this.id}/write_read`,{method:`POST`,body:t.parse(r,e),schema:r})}},A=class{fetch;id;constructor(e,t){this.fetch=e,this.id=t}configure(e){return this.fetch(`/com/i2c/${this.id}/config`,{method:`PATCH`,body:t.parse(v,e),schema:_})}enable(e={}){return this.configure({...e,enabled:!0})}disable(){return this.configure({enabled:!1})}tx(e){return this.fetch(`/com/i2c/${this.id}/write`,{method:`POST`,body:t.parse(o,e),parseResponse:async e=>{let t=await e.text();return parseInt(t,10)}})}rx(e){return this.fetch(`/com/i2c/${this.id}/read`,{method:`POST`,body:t.parse(a,e),schema:r})}},j=class{fetch;id;constructor(e,t){this.fetch=e,this.id=t}configure(e){return this.fetch(`/com/uart/${this.id}/config`,{method:`PATCH`,body:t.parse(b,e),schema:y})}enable(e={}){return this.configure({...e,enabled:!0})}disable(){return this.configure({enabled:!1})}tx(e){return this.fetch(`/com/uart/${this.id}/write`,{method:`POST`,body:t.parse(r,e),schema:r})}start_rx(){return this.fetch(`/com/uart/${this.id}/start_rx`,{method:`POST`,parseResponse:()=>{}})}stop_rx(){return this.fetch(`/com/uart/${this.id}/stop_rx`,{method:`POST`,parseResponse:()=>{}})}rx(){return this.fetch(`/com/uart/${this.id}/read`,{schema:r})}};exports.Can=E,exports.ComApi=w,exports.ComUsb=T,exports.I2c=A,exports.Rs232=D,exports.Rs485=O,exports.Spi=k,exports.Uart=j,exports.canConfig=s,exports.canFrame=n,exports.i2cConfig=_,exports.rs232Config=d,exports.rs485Config=p,exports.spiConfig=h,exports.uartConfig=y;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./rolldown-runtime-CMqjfN_6.cjs");let t=require("valibot");t=e.t(t,1);const n=t.object({id:t.number(),extended_id:t.optional(t.boolean(),!1),rtr:t.optional(t.boolean(),!1),dlc:t.optional(t.pipe(t.number(),t.integer(),t.minValue(0),t.maxValue(8))),data:t.optional(t.pipe(t.array(t.number()),t.minLength(0),t.maxLength(8)),[]),timeout:t.optional(t.pipe(t.number(),t.integer(),t.minValue(1),t.maxValue(5e3)))}),r=t.pipe(t.union([t.pipe(t.string(),t.maxLength(65536)),t.pipe(t.array(t.pipe(t.number(),t.minValue(0),t.maxValue(255))),t.maxLength(65536))]),t.transform(e=>typeof e==`string`?e.split(``).map(e=>{let t=e.charCodeAt(0);return t>127?63:t}):e)),i=t.object({address:t.number(),start:t.boolean(),stop:t.boolean(),nack_last_byte:t.boolean()}),a=t.intersect([t.partial(i,[`start`,`stop`,`nack_last_byte`]),t.object({length:t.pipe(t.number(),t.minValue(1),t.maxValue(1024))})]),o=t.intersect([t.partial(i,[`start`,`stop`,`nack_last_byte`]),t.object({data:r})]),s=t.object({enabled:t.boolean(),baud_rate:t.picklist([5e3,1e4,2e4,31250,33e3,4e4,5e4,8e4,83300,95e3,1e5,125e3,2e5,25e4,5e5,1e6]),termination_resistors:t.boolean(),rx_filter:t.object({extended_id:t.boolean(),id:t.number(),mask:t.number()})}),c=t.partial(s);t.omit(c,[`enabled`]);const l=t.picklist([`none`,`odd`,`even`,`mark`,`space`]),u=t.picklist([`1`,`1.5`,`2`]),d=t.object({enabled:t.boolean(),baud_rate:t.pipe(t.number(),t.minValue(50),t.maxValue(1e6)),data_bits:t.pipe(t.number(),t.minValue(7),t.maxValue(8)),stop_bits:u,parity:l}),f=t.partial(d);t.omit(f,[`enabled`]);const p=t.object({enabled:t.boolean(),baud_rate:t.pipe(t.number(),t.minValue(300),t.maxValue(2e7)),data_bits:t.pipe(t.number(),t.minValue(7),t.maxValue(8)),stop_bits:u,parity:l,termination_resistors:t.boolean()}),m=t.partial(p);t.omit(m,[`enabled`]);const h=t.object({enabled:t.boolean(),baud_rate:t.pipe(t.number(),t.minValue(300),t.maxValue(1e7)),vcc:t.pipe(t.number(),t.minValue(1.6),t.maxValue(5)),mode:t.pipe(t.number(),t.minValue(0),t.maxValue(3))}),g=t.partial(h);t.omit(g,[`enabled`]);const _=t.object({enabled:t.boolean(),baud_rate:t.picklist([1e5,4e5,1e6]),vcc:t.pipe(t.number(),t.minValue(1.6),t.maxValue(5))}),v=t.partial(_);t.omit(v,[`enabled`]);const y=t.object({enabled:t.boolean(),baud_rate:t.pipe(t.number(),t.minValue(300),t.maxValue(12e6)),vcc:t.pipe(t.number(),t.minValue(1.6),t.maxValue(5)),data_bits:t.pipe(t.number(),t.minValue(7),t.maxValue(8)),stop_bits:u,parity:l}),b=t.partial(y);t.omit(b,[`enabled`]);const x=t.object({number:t.number(),class:t.number(),subclass:t.number(),protocol:t.number(),num_endpoints:t.number()}),S=t.object({vendor_id:t.number(),product_id:t.number(),device_class:t.number(),device_subclass:t.number(),device_protocol:t.number(),usb_version:t.string(),speed:t.string(),manufacturer:t.optional(t.nullable(t.string())),product:t.optional(t.nullable(t.string())),serial_number:t.optional(t.nullable(t.string())),bus:t.number(),port:t.number(),address:t.number(),num_configurations:t.number(),interfaces:t.array(x)}),C=t.object({devices:t.array(S)});var w=class{fetch;constructor(e){this.fetch=e}reset(){return this.fetch(`/com/reset`,{method:`POST`,parseResponse:()=>{}})}can(e){return new E(this.fetch,e)}rs232(e){return new D(this.fetch,e)}rs485(e){return new O(this.fetch,e)}spi(e){return new k(this.fetch,e)}i2c(e){return new A(this.fetch,e)}uart(e){return new j(this.fetch,e)}usb(e){return new T(this.fetch,e)}},T=class{fetch;id;constructor(e,t){this.fetch=e,this.id=t}state(){return this.fetch(`/com/usb/${this.id}/state`,{schema:C})}},E=class{fetch;id;constructor(e,t){this.fetch=e,this.id=t}configure(e){return this.fetch(`/com/can/${this.id}/config`,{method:`PATCH`,body:t.parse(c,e),schema:s})}enable(e={}){return this.configure({...e,enabled:!0})}disable(){return this.configure({enabled:!1})}tx(e){return Array.isArray(e)?this.fetch(`/com/can/${this.id}/write`,{method:`POST`,body:e.map(e=>t.parse(n,e)),schema:t.array(n)}):this.fetch(`/com/can/${this.id}/write`,{method:`POST`,body:t.parse(n,e),schema:n})}start_rx(){return this.fetch(`/com/can/${this.id}/start_rx`,{method:`POST`,parseResponse:()=>{}})}stop_rx(){return this.fetch(`/com/can/${this.id}/stop_rx`,{method:`POST`,parseResponse:()=>{}})}rx(){return this.fetch(`/com/can/${this.id}/read`,{schema:t.array(n)})}},D=class{fetch;id;constructor(e,t){this.fetch=e,this.id=t}configure(e){return this.fetch(`/com/rs232/${this.id}/config`,{method:`PATCH`,body:t.parse(f,e),schema:d})}enable(e={}){return this.configure({...e,enabled:!0})}disable(){return this.configure({enabled:!1})}tx(e){return this.fetch(`/com/rs232/${this.id}/write`,{method:`POST`,body:t.parse(r,e),schema:r})}start_rx(){return this.fetch(`/com/rs232/${this.id}/start_rx`,{method:`POST`,parseResponse:()=>{}})}stop_rx(){return this.fetch(`/com/rs232/${this.id}/stop_rx`,{method:`POST`,parseResponse:()=>{}})}rx(){return this.fetch(`/com/rs232/${this.id}/read`,{schema:r})}},O=class{fetch;id;constructor(e,t){this.fetch=e,this.id=t}configure(e){return this.fetch(`/com/rs485/${this.id}/config`,{method:`PATCH`,body:t.parse(m,e),schema:p})}enable(e={}){return this.configure({...e,enabled:!0})}disable(){return this.configure({enabled:!1})}tx(e){return this.fetch(`/com/rs485/${this.id}/write`,{method:`POST`,body:t.parse(r,e),schema:r})}start_rx(){return this.fetch(`/com/rs485/${this.id}/start_rx`,{method:`POST`,parseResponse:()=>{}})}stop_rx(){return this.fetch(`/com/rs485/${this.id}/stop_rx`,{method:`POST`,parseResponse:()=>{}})}rx(){return this.fetch(`/com/rs485/${this.id}/read`,{schema:r})}},k=class{fetch;id;constructor(e,t){this.fetch=e,this.id=t}configure(e){return this.fetch(`/com/spi/${this.id}/config`,{method:`PATCH`,body:t.parse(g,e),schema:h})}enable(e={}){return this.configure({...e,enabled:!0})}disable(){return this.configure({enabled:!1})}trx(e){return this.fetch(`/com/spi/${this.id}/write_read`,{method:`POST`,body:t.parse(r,e),schema:r})}},A=class{fetch;id;constructor(e,t){this.fetch=e,this.id=t}configure(e){return this.fetch(`/com/i2c/${this.id}/config`,{method:`PATCH`,body:t.parse(v,e),schema:_})}enable(e={}){return this.configure({...e,enabled:!0})}disable(){return this.configure({enabled:!1})}tx(e){return this.fetch(`/com/i2c/${this.id}/write`,{method:`POST`,body:t.parse(o,e),parseResponse:async e=>{let t=await e.text();return parseInt(t,10)}})}rx(e){return this.fetch(`/com/i2c/${this.id}/read`,{method:`POST`,body:t.parse(a,e),schema:r})}},j=class{fetch;id;constructor(e,t){this.fetch=e,this.id=t}configure(e){return this.fetch(`/com/uart/${this.id}/config`,{method:`PATCH`,body:t.parse(b,e),schema:y})}enable(e={}){return this.configure({...e,enabled:!0})}disable(){return this.configure({enabled:!1})}tx(e){return this.fetch(`/com/uart/${this.id}/write`,{method:`POST`,body:t.parse(r,e),schema:r})}start_rx(){return this.fetch(`/com/uart/${this.id}/start_rx`,{method:`POST`,parseResponse:()=>{}})}stop_rx(){return this.fetch(`/com/uart/${this.id}/stop_rx`,{method:`POST`,parseResponse:()=>{}})}rx(){return this.fetch(`/com/uart/${this.id}/read`,{schema:r})}};exports.Can=E,exports.ComApi=w,exports.ComUsb=T,exports.I2c=A,exports.Rs232=D,exports.Rs485=O,exports.Spi=k,exports.Uart=j,exports.canConfig=s,exports.canFrame=n,exports.i2cConfig=_,exports.rs232Config=d,exports.rs485Config=p,exports.spiConfig=h,exports.uartConfig=y;
2
2
  //# sourceMappingURL=com.cjs.map
package/build/com.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"com.cjs","names":["v"],"sources":["../src/api/com.ts"],"sourcesContent":["import type { UpFetch } from 'up-fetch';\nimport * as v from 'valibot';\n\nexport const canFrame = v.object({\n id: v.number(),\n extended_id: v.optional(v.boolean(), false),\n rtr: v.optional(v.boolean(), false),\n data: v.optional(v.pipe(v.array(v.number()), v.minLength(0), v.maxLength(8)), []),\n /** Transmit-only: max ms to wait for a free TX buffer. Omit for the server default (1000 ms). */\n timeout: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(5000))),\n});\nexport type CanFrame = v.InferOutput<typeof canFrame>;\nexport type CanFrameInput = v.InferInput<typeof canFrame>;\n\nconst serialData = v.pipe(\n // 1. Validate Input: String OR Array of Bytes (0-255), both max length 65536\n // Server enforces per-endpoint limits (e.g. SPI max transfer = 65536 bytes)\n v.union([\n v.pipe(v.string(), v.maxLength(65536)),\n v.pipe(v.array(v.pipe(v.number(), v.minValue(0), v.maxValue(255))), v.maxLength(65536)),\n ]),\n // 2. Transform: Convert String to ASCII bytes or pass Array as is\n v.transform((input) => {\n if (typeof input === 'string') {\n return input.split('').map((char) => {\n const code = char.charCodeAt(0);\n // Replace UTF8/Non-ASCII (>127) with \"?\" (ASCII 63)\n return code > 127 ? 63 : code;\n });\n }\n return input;\n }),\n);\nexport type SerialData = v.InferOutput<typeof serialData>;\nexport type SerialDataInput = v.InferInput<typeof serialData>;\n\nconst i2cTransactionBase = v.object({\n address: v.number(),\n start: v.boolean(),\n stop: v.boolean(),\n nack_last_byte: v.boolean(),\n});\nconst i2cTransactionRead = v.intersect([\n v.partial(i2cTransactionBase, ['start', 'stop', 'nack_last_byte']),\n v.object({ length: v.pipe(v.number(), v.minValue(1), v.maxValue(1024)) }),\n]);\ntype I2cTransactionRead = v.InferOutput<typeof i2cTransactionRead>;\nconst i2cTransactionWrite = v.intersect([\n v.partial(i2cTransactionBase, ['start', 'stop', 'nack_last_byte']),\n v.object({ data: serialData }),\n]);\ntype I2cTransactionWrite = v.InferOutput<typeof i2cTransactionWrite>;\n\nexport const canConfig = v.object({\n enabled: v.boolean(),\n baud_rate: v.picklist([5_000, 10_000, 20_000, 31_250, 33_000, 40_000, 50_000, 80_000, 83_300,\n 95_000, 100_000, 125_000, 200_000, 250_000, 500_000, 1_000_000]),\n termination_resistors: v.boolean(),\n rx_filter: v.object({ extended_id: v.boolean(), id: v.number(), mask: v.number() }),\n});\nexport type CanConfig = v.InferOutput<typeof canConfig>;\nconst canConfigPatch = v.partial(canConfig);\nexport type CanConfigPatch = v.InferOutput<typeof canConfigPatch>;\nconst canEnableConfig = v.omit(canConfigPatch, ['enabled']);\nexport type CanEnableConfig = v.InferOutput<typeof canEnableConfig>;\n\nconst serialParity = v.picklist(['none', 'odd', 'even', 'mark', 'space']);\nexport type SerialParity = v.InferOutput<typeof serialParity>;\n\nconst serialStopBits = v.picklist(['1', '1.5', '2']);\nexport type SerialStopBits = v.InferOutput<typeof serialStopBits>;\n\nexport const rs232Config = v.object({\n enabled: v.boolean(),\n baud_rate: v.pipe(v.number(), v.minValue(50), v.maxValue(1_000_000)),\n data_bits: v.pipe(v.number(), v.minValue(7), v.maxValue(8)),\n stop_bits: serialStopBits,\n parity: serialParity,\n});\nexport type Rs232Config = v.InferOutput<typeof rs232Config>;\nconst rs232ConfigPatch = v.partial(rs232Config);\nexport type Rs232ConfigPatch = v.InferOutput<typeof rs232ConfigPatch>;\nconst rs232EnableConfig = v.omit(rs232ConfigPatch, ['enabled']);\nexport type Rs232EnableConfig = v.InferOutput<typeof rs232EnableConfig>;\n\nexport const rs485Config = v.object({\n enabled: v.boolean(),\n baud_rate: v.pipe(v.number(), v.minValue(300), v.maxValue(20_000_000)),\n data_bits: v.pipe(v.number(), v.minValue(7), v.maxValue(8)),\n stop_bits: serialStopBits,\n parity: serialParity,\n termination_resistors: v.boolean(),\n});\nexport type Rs485Config = v.InferOutput<typeof rs485Config>;\nconst rs485ConfigPatch = v.partial(rs485Config);\nexport type Rs485ConfigPatch = v.InferOutput<typeof rs485ConfigPatch>;\nconst rs485EnableConfig = v.omit(rs485ConfigPatch, ['enabled']);\nexport type Rs485EnableConfig = v.InferOutput<typeof rs485EnableConfig>;\n\nexport const spiConfig = v.object({\n enabled: v.boolean(),\n baud_rate: v.pipe(v.number(), v.minValue(300), v.maxValue(10_000_000)),\n vcc: v.pipe(v.number(), v.minValue(1.6), v.maxValue(5)),\n mode: v.pipe(v.number(), v.minValue(0), v.maxValue(3)),\n});\nexport type SpiConfig = v.InferOutput<typeof spiConfig>;\nconst spiConfigPatch = v.partial(spiConfig);\nexport type SpiConfigPatch = v.InferOutput<typeof spiConfigPatch>;\nconst spiEnableConfig = v.omit(spiConfigPatch, ['enabled']);\nexport type SpiEnableConfig = v.InferOutput<typeof spiEnableConfig>;\n\nexport const i2cConfig = v.object({\n enabled: v.boolean(),\n baud_rate: v.picklist([100_000, 400_000, 1_000_000]),\n vcc: v.pipe(v.number(), v.minValue(1.6), v.maxValue(5)),\n});\nexport type I2cConfig = v.InferOutput<typeof i2cConfig>;\nconst i2cConfigPatch = v.partial(i2cConfig);\nexport type I2cConfigPatch = v.InferOutput<typeof i2cConfigPatch>;\nconst i2cEnableConfig = v.omit(i2cConfigPatch, ['enabled']);\nexport type I2cEnableConfig = v.InferOutput<typeof i2cEnableConfig>;\n\nexport const uartConfig = v.object({\n enabled: v.boolean(),\n baud_rate: v.pipe(v.number(), v.minValue(300), v.maxValue(12_000_000)),\n vcc: v.pipe(v.number(), v.minValue(1.6), v.maxValue(5)),\n data_bits: v.pipe(v.number(), v.minValue(7), v.maxValue(8)),\n stop_bits: serialStopBits,\n parity: serialParity,\n});\nexport type UartConfig = v.InferOutput<typeof uartConfig>;\nconst uartConfigPatch = v.partial(uartConfig);\nexport type UartConfigPatch = v.InferOutput<typeof uartConfigPatch>;\nconst uartEnableConfig = v.omit(uartConfigPatch, ['enabled']);\nexport type UartEnableConfig = v.InferOutput<typeof uartEnableConfig>;\n\nconst usbInterface = v.object({\n number: v.number(),\n class: v.number(),\n subclass: v.number(),\n protocol: v.number(),\n num_endpoints: v.number(),\n});\nexport type UsbInterface = v.InferOutput<typeof usbInterface>;\n\nconst usbDevice = v.object({\n vendor_id: v.number(),\n product_id: v.number(),\n device_class: v.number(),\n device_subclass: v.number(),\n device_protocol: v.number(),\n usb_version: v.string(),\n speed: v.string(),\n manufacturer: v.optional(v.nullable(v.string())),\n product: v.optional(v.nullable(v.string())),\n serial_number: v.optional(v.nullable(v.string())),\n bus: v.number(),\n port: v.number(),\n address: v.number(),\n num_configurations: v.number(),\n interfaces: v.array(usbInterface),\n});\nexport type UsbDevice = v.InferOutput<typeof usbDevice>;\n\nconst usbState = v.object({ devices: v.array(usbDevice) });\nexport type UsbState = v.InferOutput<typeof usbState>;\n\n/** @hideconstructor */\nexport class ComApi {\n constructor(private readonly fetch: UpFetch) {}\n\n /**\n * Resets the communication interfaces.\n */\n reset(): Promise<void> {\n return this.fetch('/com/reset', { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Access a specific CAN interface by id.\n * @param id The CAN interface id.\n * @returns The CAN instance.\n */\n can(id: number): Can {\n return new Can(this.fetch, id);\n }\n\n /**\n * Access a specific RS232 interface by id.\n * @param id The RS232 interface id.\n * @returns The RS232 instance.\n */\n rs232(id: number): Rs232 {\n return new Rs232(this.fetch, id);\n }\n\n /**\n * Access a specific RS485 interface by id.\n * @param id The RS485 interface id.\n * @returns The RS485 instance.\n */\n rs485(id: number): Rs485 {\n return new Rs485(this.fetch, id);\n }\n\n /**\n * Access a specific SPI interface by id.\n * @param id The SPI interface id.\n * @returns The SPI instance.\n */\n spi(id: number): Spi {\n return new Spi(this.fetch, id);\n }\n\n /**\n * Access a specific I2C interface by id.\n * @param id The I2C interface id.\n * @returns The I2C instance.\n */\n i2c(id: number): I2c {\n return new I2c(this.fetch, id);\n }\n\n /**\n * Access a specific UART interface by id.\n * @param id The UART interface id.\n * @returns The UART instance.\n */\n uart(id: number): Uart {\n return new Uart(this.fetch, id);\n }\n\n /**\n * Access a specific USB interface by id.\n * @param id The USB interface id.\n * @returns The ComUsb instance.\n */\n usb(id: number): ComUsb {\n return new ComUsb(this.fetch, id);\n }\n}\n\n/** @hideconstructor */\nexport class ComUsb {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Returns the current state of the USB port, including all connected devices.\n * @returns The USB port state with device information.\n */\n state(): Promise<UsbState> {\n return this.fetch(`/com/usb/${this.id}/state`, { schema: usbState });\n }\n}\n\n/** @hideconstructor */\nexport class Can {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Configures the CAN interface.\n * @param config The configuration to apply.\n * @returns The updated configuration.\n */\n configure(config: CanConfigPatch): Promise<CanConfig> {\n return this.fetch(`/com/can/${this.id}/config`, {\n method: 'PATCH',\n body: v.parse(canConfigPatch, config),\n schema: canConfig,\n });\n }\n\n /**\n * Enables the CAN interface.\n * @param config Optional configuration to apply while enabling.\n * @returns The updated configuration.\n */\n enable(config: CanEnableConfig = {}): Promise<CanConfig> {\n return this.configure({ ...config, enabled: true });\n }\n\n /**\n * Disables the CAN interface.\n * @returns The updated configuration.\n */\n disable(): Promise<CanConfig> {\n return this.configure({ enabled: false });\n }\n\n /**\n * Transmits one or more frames over the CAN interface.\n *\n * Each frame may carry an optional `timeout` (milliseconds, 1-5000) bounding how\n * long the device waits for a free hardware TX buffer before that frame fails.\n * Omit it to use the server default (1000 ms).\n * @param data A single frame, or an array of frames to transmit as a batch.\n * @returns The transmitted frame, or the array of transmitted frames, mirroring the input.\n */\n tx(data: CanFrameInput): Promise<CanFrame>;\n tx(data: CanFrameInput[]): Promise<CanFrame[]>;\n tx(data: CanFrameInput | CanFrameInput[]): Promise<CanFrame | CanFrame[]> {\n if (Array.isArray(data)) {\n return this.fetch(`/com/can/${this.id}/write`, {\n method: 'POST',\n body: data.map((frame) => v.parse(canFrame, frame)),\n schema: v.array(canFrame),\n });\n }\n return this.fetch(`/com/can/${this.id}/write`, {\n method: 'POST',\n body: v.parse(canFrame, data),\n schema: canFrame,\n });\n }\n\n /**\n * Starts receiving data over the CAN interface.\n */\n start_rx(): Promise<void> {\n return this.fetch(`/com/can/${this.id}/start_rx`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Stops receiving data over the CAN interface.\n */\n stop_rx(): Promise<void> {\n return this.fetch(`/com/can/${this.id}/stop_rx`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Reads data from the CAN interface.\n * @returns An array of can frames.\n */\n rx(): Promise<CanFrame[]> {\n return this.fetch(`/com/can/${this.id}/read`, { schema: v.array(canFrame) });\n }\n}\n\n/** @hideconstructor */\nexport class Rs232 {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Configures the RS232 interface.\n * @param config The configuration to apply.\n * @returns The updated configuration.\n */\n configure(config: Rs232ConfigPatch): Promise<Rs232Config> {\n return this.fetch(`/com/rs232/${this.id}/config`, {\n method: 'PATCH',\n body: v.parse(rs232ConfigPatch, config),\n schema: rs232Config,\n });\n }\n\n /**\n * Enables the RS232 interface.\n * @param config Optional configuration to apply while enabling.\n * @returns The updated configuration.\n */\n enable(config: Rs232EnableConfig = {}): Promise<Rs232Config> {\n return this.configure({ ...config, enabled: true });\n }\n\n /**\n * Disables the RS232 interface.\n * @returns The updated configuration.\n */\n disable(): Promise<Rs232Config> {\n return this.configure({ enabled: false });\n }\n\n /**\n * Transmits data over the RS232 interface.\n * @param data The data to transmit (byte array or string).\n * @returns The transmitted data.\n */\n tx(data: SerialDataInput): Promise<SerialData> {\n return this.fetch(`/com/rs232/${this.id}/write`, {\n method: 'POST',\n body: v.parse(serialData, data),\n schema: serialData,\n });\n }\n\n /**\n * Starts receiving data over the RS232 interface.\n */\n start_rx(): Promise<void> {\n return this.fetch(`/com/rs232/${this.id}/start_rx`, {\n method: 'POST',\n parseResponse: () => {},\n });\n }\n\n /**\n * Stops receiving data over the RS232 interface.\n */\n stop_rx(): Promise<void> {\n return this.fetch(`/com/rs232/${this.id}/stop_rx`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Reads data from the RS232 interface.\n * @returns An array containing the received data.\n */\n rx(): Promise<SerialData> {\n return this.fetch(`/com/rs232/${this.id}/read`, { schema: serialData });\n }\n}\n\n/** @hideconstructor */\nexport class Rs485 {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Configures the RS485 interface.\n * @param config The configuration to apply.\n * @returns The updated configuration.\n */\n configure(config: Rs485ConfigPatch): Promise<Rs485Config> {\n return this.fetch(`/com/rs485/${this.id}/config`, {\n method: 'PATCH',\n body: v.parse(rs485ConfigPatch, config),\n schema: rs485Config,\n });\n }\n\n /**\n * Enables the RS485 interface.\n * @param config Optional configuration to apply while enabling.\n * @returns The updated configuration.\n */\n enable(config: Rs485EnableConfig = {}): Promise<Rs485Config> {\n return this.configure({ ...config, enabled: true });\n }\n\n /**\n * Disables the RS485 interface.\n * @returns The updated configuration.\n */\n disable(): Promise<Rs485Config> {\n return this.configure({ enabled: false });\n }\n\n /**\n * Transmits data over the RS485 interface.\n * @param data The data to transmit (byte array or string).\n * @returns The transmitted data.\n */\n tx(data: SerialDataInput): Promise<SerialData> {\n return this.fetch(`/com/rs485/${this.id}/write`, {\n method: 'POST',\n body: v.parse(serialData, data),\n schema: serialData,\n });\n }\n\n /**\n * Starts receiving data over the RS485 interface.\n */\n start_rx(): Promise<void> {\n return this.fetch(`/com/rs485/${this.id}/start_rx`, {\n method: 'POST',\n parseResponse: () => {},\n });\n }\n\n /**\n * Stops receiving data over the RS485 interface.\n */\n stop_rx(): Promise<void> {\n return this.fetch(`/com/rs485/${this.id}/stop_rx`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Reads data from the RS485 interface.\n * @returns The received data.\n */\n rx(): Promise<SerialData> {\n return this.fetch(`/com/rs485/${this.id}/read`, { schema: serialData });\n }\n}\n\n/** @hideconstructor */\nexport class Spi {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Configures the SPI interface.\n * @param config The configuration to apply.\n * @returns The updated configuration.\n */\n configure(config: SpiConfigPatch): Promise<SpiConfig> {\n return this.fetch(`/com/spi/${this.id}/config`, {\n method: 'PATCH',\n body: v.parse(spiConfigPatch, config),\n schema: spiConfig,\n });\n }\n\n /**\n * Enables the SPI interface.\n * @param config Optional configuration to apply while enabling.\n * @returns The updated configuration.\n */\n enable(config: SpiEnableConfig = {}): Promise<SpiConfig> {\n return this.configure({ ...config, enabled: true });\n }\n\n /**\n * Disables the SPI interface.\n * @returns The updated configuration.\n */\n disable(): Promise<SpiConfig> {\n return this.configure({ enabled: false });\n }\n\n /**\n * Transmits data over the SPI interface and receives the response.\n * @param data The data to transmit (byte array or string).\n * @returns The received response data.\n */\n trx(data: SerialDataInput): Promise<SerialData> {\n return this.fetch(`/com/spi/${this.id}/write_read`, {\n method: 'POST',\n body: v.parse(serialData, data),\n schema: serialData,\n });\n }\n}\n\n/** @hideconstructor */\nexport class I2c {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Configures the I2C interface.\n * @param config The configuration to apply.\n * @returns The updated configuration.\n */\n configure(config: I2cConfigPatch): Promise<I2cConfig> {\n return this.fetch(`/com/i2c/${this.id}/config`, {\n method: 'PATCH',\n body: v.parse(i2cConfigPatch, config),\n schema: i2cConfig,\n });\n }\n\n /**\n * Enables the I2C interface.\n * @param config Optional configuration to apply while enabling.\n * @returns The updated configuration.\n */\n enable(config: I2cEnableConfig = {}): Promise<I2cConfig> {\n return this.configure({ ...config, enabled: true });\n }\n\n /**\n * Disables the I2C interface.\n * @returns The updated configuration.\n */\n disable(): Promise<I2cConfig> {\n return this.configure({ enabled: false });\n }\n\n tx(transaction: I2cTransactionWrite): Promise<number> {\n return this.fetch(`/com/i2c/${this.id}/write`, {\n method: 'POST',\n body: v.parse(i2cTransactionWrite, transaction),\n parseResponse: async (response) => {\n const text = await response.text();\n return parseInt(text, 10);\n },\n });\n }\n\n rx(transaction: I2cTransactionRead): Promise<SerialData> {\n return this.fetch(`/com/i2c/${this.id}/read`, {\n method: 'POST',\n body: v.parse(i2cTransactionRead, transaction),\n schema: serialData,\n });\n }\n}\n\n/** @hideconstructor */\nexport class Uart {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Configures the UART interface.\n * @param config The configuration to apply.\n * @returns The updated configuration.\n */\n configure(config: UartConfigPatch): Promise<UartConfig> {\n return this.fetch(`/com/uart/${this.id}/config`, {\n method: 'PATCH',\n body: v.parse(uartConfigPatch, config),\n schema: uartConfig,\n });\n }\n\n /**\n * Enables the UART interface.\n * @param config Optional configuration to apply while enabling.\n * @returns The updated configuration.\n */\n enable(config: UartEnableConfig = {}): Promise<UartConfig> {\n return this.configure({ ...config, enabled: true });\n }\n\n /**\n * Disables the UART interface.\n * @returns The updated configuration.\n */\n disable(): Promise<UartConfig> {\n return this.configure({ enabled: false });\n }\n\n /**\n * Transmits data over the UART interface.\n * @param data The data to transmit (byte array or string).\n * @returns The received response data.\n */\n tx(data: SerialDataInput): Promise<SerialData> {\n return this.fetch(`/com/uart/${this.id}/write`, {\n method: 'POST',\n body: v.parse(serialData, data),\n schema: serialData,\n });\n }\n\n /**\n * Starts receiving data over the UART interface.\n */\n start_rx(): Promise<void> {\n return this.fetch(`/com/uart/${this.id}/start_rx`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Stops receiving data over the UART interface.\n */\n stop_rx(): Promise<void> {\n return this.fetch(`/com/uart/${this.id}/stop_rx`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Reads data from the UART interface.\n * @returns The received data.\n */\n rx(): Promise<SerialData> {\n return this.fetch(`/com/uart/${this.id}/read`, { schema: serialData });\n }\n}\n"],"mappings":"+IAGA,MAAa,EAAWA,EAAE,OAAO,CAC/B,GAAIA,EAAE,OAAO,EACb,YAAaA,EAAE,SAASA,EAAE,QAAQ,EAAG,EAAK,EAC1C,IAAKA,EAAE,SAASA,EAAE,QAAQ,EAAG,EAAK,EAClC,KAAMA,EAAE,SAASA,EAAE,KAAKA,EAAE,MAAMA,EAAE,OAAO,CAAC,EAAGA,EAAE,UAAU,CAAC,EAAGA,EAAE,UAAU,CAAC,CAAC,EAAG,CAAC,CAAC,EAEhF,QAASA,EAAE,SAASA,EAAE,KAAKA,EAAE,OAAO,EAAGA,EAAE,QAAQ,EAAGA,EAAE,SAAS,CAAC,EAAGA,EAAE,SAAS,GAAI,CAAC,CAAC,CACtF,CAAC,EAIK,EAAaA,EAAE,KAGnBA,EAAE,MAAM,CACNA,EAAE,KAAKA,EAAE,OAAO,EAAGA,EAAE,UAAU,KAAK,CAAC,EACrCA,EAAE,KAAKA,EAAE,MAAMA,EAAE,KAAKA,EAAE,OAAO,EAAGA,EAAE,SAAS,CAAC,EAAGA,EAAE,SAAS,GAAG,CAAC,CAAC,EAAGA,EAAE,UAAU,KAAK,CAAC,CACxF,CAAC,EAEDA,EAAE,UAAW,GACP,OAAO,GAAU,SACZ,EAAM,MAAM,EAAE,CAAC,CAAC,IAAK,GAAS,CACnC,IAAM,EAAO,EAAK,WAAW,CAAC,EAE9B,OAAO,EAAO,IAAM,GAAK,CAC3B,CAAC,EAEI,CACR,CACH,EAIM,EAAqBA,EAAE,OAAO,CAClC,QAASA,EAAE,OAAO,EAClB,MAAOA,EAAE,QAAQ,EACjB,KAAMA,EAAE,QAAQ,EAChB,eAAgBA,EAAE,QAAQ,CAC5B,CAAC,EACK,EAAqBA,EAAE,UAAU,CACrCA,EAAE,QAAQ,EAAoB,CAAC,QAAS,OAAQ,gBAAgB,CAAC,EACjEA,EAAE,OAAO,CAAE,OAAQA,EAAE,KAAKA,EAAE,OAAO,EAAGA,EAAE,SAAS,CAAC,EAAGA,EAAE,SAAS,IAAI,CAAC,CAAE,CAAC,CAC1E,CAAC,EAEK,EAAsBA,EAAE,UAAU,CACtCA,EAAE,QAAQ,EAAoB,CAAC,QAAS,OAAQ,gBAAgB,CAAC,EACjEA,EAAE,OAAO,CAAE,KAAM,CAAW,CAAC,CAC/B,CAAC,EAGY,EAAYA,EAAE,OAAO,CAChC,QAASA,EAAE,QAAQ,EACnB,UAAWA,EAAE,SAAS,CAAC,IAAO,IAAQ,IAAQ,MAAQ,KAAQ,IAAQ,IAAQ,IAAQ,MACpF,KAAQ,IAAS,MAAS,IAAS,KAAS,IAAS,GAAS,CAAC,EACjE,sBAAuBA,EAAE,QAAQ,EACjC,UAAWA,EAAE,OAAO,CAAE,YAAaA,EAAE,QAAQ,EAAG,GAAIA,EAAE,OAAO,EAAG,KAAMA,EAAE,OAAO,CAAE,CAAC,CACpF,CAAC,EAEK,EAAiBA,EAAE,QAAQ,CAAS,EAElBA,EAAE,KAAK,EAAgB,CAAC,SAAS,CAAC,EAG1D,MAAM,EAAeA,EAAE,SAAS,CAAC,OAAQ,MAAO,OAAQ,OAAQ,OAAO,CAAC,EAGlE,EAAiBA,EAAE,SAAS,CAAC,IAAK,MAAO,GAAG,CAAC,EAGtC,EAAcA,EAAE,OAAO,CAClC,QAASA,EAAE,QAAQ,EACnB,UAAWA,EAAE,KAAKA,EAAE,OAAO,EAAGA,EAAE,SAAS,EAAE,EAAGA,EAAE,SAAS,GAAS,CAAC,EACnE,UAAWA,EAAE,KAAKA,EAAE,OAAO,EAAGA,EAAE,SAAS,CAAC,EAAGA,EAAE,SAAS,CAAC,CAAC,EAC1D,UAAW,EACX,OAAQ,CACV,CAAC,EAEK,EAAmBA,EAAE,QAAQ,CAAW,EAEpBA,EAAE,KAAK,EAAkB,CAAC,SAAS,CAAC,EAG9D,MAAa,EAAcA,EAAE,OAAO,CAClC,QAASA,EAAE,QAAQ,EACnB,UAAWA,EAAE,KAAKA,EAAE,OAAO,EAAGA,EAAE,SAAS,GAAG,EAAGA,EAAE,SAAS,GAAU,CAAC,EACrE,UAAWA,EAAE,KAAKA,EAAE,OAAO,EAAGA,EAAE,SAAS,CAAC,EAAGA,EAAE,SAAS,CAAC,CAAC,EAC1D,UAAW,EACX,OAAQ,EACR,sBAAuBA,EAAE,QAAQ,CACnC,CAAC,EAEK,EAAmBA,EAAE,QAAQ,CAAW,EAEpBA,EAAE,KAAK,EAAkB,CAAC,SAAS,CAAC,EAG9D,MAAa,EAAYA,EAAE,OAAO,CAChC,QAASA,EAAE,QAAQ,EACnB,UAAWA,EAAE,KAAKA,EAAE,OAAO,EAAGA,EAAE,SAAS,GAAG,EAAGA,EAAE,SAAS,GAAU,CAAC,EACrE,IAAKA,EAAE,KAAKA,EAAE,OAAO,EAAGA,EAAE,SAAS,GAAG,EAAGA,EAAE,SAAS,CAAC,CAAC,EACtD,KAAMA,EAAE,KAAKA,EAAE,OAAO,EAAGA,EAAE,SAAS,CAAC,EAAGA,EAAE,SAAS,CAAC,CAAC,CACvD,CAAC,EAEK,EAAiBA,EAAE,QAAQ,CAAS,EAElBA,EAAE,KAAK,EAAgB,CAAC,SAAS,CAAC,EAG1D,MAAa,EAAYA,EAAE,OAAO,CAChC,QAASA,EAAE,QAAQ,EACnB,UAAWA,EAAE,SAAS,CAAC,IAAS,IAAS,GAAS,CAAC,EACnD,IAAKA,EAAE,KAAKA,EAAE,OAAO,EAAGA,EAAE,SAAS,GAAG,EAAGA,EAAE,SAAS,CAAC,CAAC,CACxD,CAAC,EAEK,EAAiBA,EAAE,QAAQ,CAAS,EAElBA,EAAE,KAAK,EAAgB,CAAC,SAAS,CAAC,EAG1D,MAAa,EAAaA,EAAE,OAAO,CACjC,QAASA,EAAE,QAAQ,EACnB,UAAWA,EAAE,KAAKA,EAAE,OAAO,EAAGA,EAAE,SAAS,GAAG,EAAGA,EAAE,SAAS,IAAU,CAAC,EACrE,IAAKA,EAAE,KAAKA,EAAE,OAAO,EAAGA,EAAE,SAAS,GAAG,EAAGA,EAAE,SAAS,CAAC,CAAC,EACtD,UAAWA,EAAE,KAAKA,EAAE,OAAO,EAAGA,EAAE,SAAS,CAAC,EAAGA,EAAE,SAAS,CAAC,CAAC,EAC1D,UAAW,EACX,OAAQ,CACV,CAAC,EAEK,EAAkBA,EAAE,QAAQ,CAAU,EAEnBA,EAAE,KAAK,EAAiB,CAAC,SAAS,CAAC,EAG5D,MAAM,EAAeA,EAAE,OAAO,CAC5B,OAAQA,EAAE,OAAO,EACjB,MAAOA,EAAE,OAAO,EAChB,SAAUA,EAAE,OAAO,EACnB,SAAUA,EAAE,OAAO,EACnB,cAAeA,EAAE,OAAO,CAC1B,CAAC,EAGK,EAAYA,EAAE,OAAO,CACzB,UAAWA,EAAE,OAAO,EACpB,WAAYA,EAAE,OAAO,EACrB,aAAcA,EAAE,OAAO,EACvB,gBAAiBA,EAAE,OAAO,EAC1B,gBAAiBA,EAAE,OAAO,EAC1B,YAAaA,EAAE,OAAO,EACtB,MAAOA,EAAE,OAAO,EAChB,aAAcA,EAAE,SAASA,EAAE,SAASA,EAAE,OAAO,CAAC,CAAC,EAC/C,QAASA,EAAE,SAASA,EAAE,SAASA,EAAE,OAAO,CAAC,CAAC,EAC1C,cAAeA,EAAE,SAASA,EAAE,SAASA,EAAE,OAAO,CAAC,CAAC,EAChD,IAAKA,EAAE,OAAO,EACd,KAAMA,EAAE,OAAO,EACf,QAASA,EAAE,OAAO,EAClB,mBAAoBA,EAAE,OAAO,EAC7B,WAAYA,EAAE,MAAM,CAAY,CAClC,CAAC,EAGK,EAAWA,EAAE,OAAO,CAAE,QAASA,EAAE,MAAM,CAAS,CAAE,CAAC,EAIzD,IAAa,EAAb,KAAoB,CACW,MAA7B,YAAY,EAAiC,CAAhB,KAAA,MAAA,CAAiB,CAK9C,OAAuB,CACrB,OAAO,KAAK,MAAM,aAAc,CAAE,OAAQ,OAAQ,kBAAqB,CAAC,CAAE,CAAC,CAC7E,CAOA,IAAI,EAAiB,CACnB,OAAO,IAAI,EAAI,KAAK,MAAO,CAAE,CAC/B,CAOA,MAAM,EAAmB,CACvB,OAAO,IAAI,EAAM,KAAK,MAAO,CAAE,CACjC,CAOA,MAAM,EAAmB,CACvB,OAAO,IAAI,EAAM,KAAK,MAAO,CAAE,CACjC,CAOA,IAAI,EAAiB,CACnB,OAAO,IAAI,EAAI,KAAK,MAAO,CAAE,CAC/B,CAOA,IAAI,EAAiB,CACnB,OAAO,IAAI,EAAI,KAAK,MAAO,CAAE,CAC/B,CAOA,KAAK,EAAkB,CACrB,OAAO,IAAI,EAAK,KAAK,MAAO,CAAE,CAChC,CAOA,IAAI,EAAoB,CACtB,OAAO,IAAI,EAAO,KAAK,MAAO,CAAE,CAClC,CACF,EAGa,EAAb,KAAoB,CACW,MAAgC,GAA7D,YAAY,EAAiC,EAA4B,CAA5C,KAAA,MAAA,EAAgC,KAAA,GAAA,CAAa,CAM1E,OAA2B,CACzB,OAAO,KAAK,MAAM,YAAY,KAAK,GAAG,QAAS,CAAE,OAAQ,CAAS,CAAC,CACrE,CACF,EAGa,EAAb,KAAiB,CACc,MAAgC,GAA7D,YAAY,EAAiC,EAA4B,CAA5C,KAAA,MAAA,EAAgC,KAAA,GAAA,CAAa,CAO1E,UAAU,EAA4C,CACpD,OAAO,KAAK,MAAM,YAAY,KAAK,GAAG,SAAU,CAC9C,OAAQ,QACR,KAAMA,EAAE,MAAM,EAAgB,CAAM,EACpC,OAAQ,CACV,CAAC,CACH,CAOA,OAAO,EAA0B,CAAC,EAAuB,CACvD,OAAO,KAAK,UAAU,CAAE,GAAG,EAAQ,QAAS,EAAK,CAAC,CACpD,CAMA,SAA8B,CAC5B,OAAO,KAAK,UAAU,CAAE,QAAS,EAAM,CAAC,CAC1C,CAaA,GAAG,EAAuE,CAQxE,OAPI,MAAM,QAAQ,CAAI,EACb,KAAK,MAAM,YAAY,KAAK,GAAG,QAAS,CAC7C,OAAQ,OACR,KAAM,EAAK,IAAK,GAAUA,EAAE,MAAM,EAAU,CAAK,CAAC,EAClD,OAAQA,EAAE,MAAM,CAAQ,CAC1B,CAAC,EAEI,KAAK,MAAM,YAAY,KAAK,GAAG,QAAS,CAC7C,OAAQ,OACR,KAAMA,EAAE,MAAM,EAAU,CAAI,EAC5B,OAAQ,CACV,CAAC,CACH,CAKA,UAA0B,CACxB,OAAO,KAAK,MAAM,YAAY,KAAK,GAAG,WAAY,CAAE,OAAQ,OAAQ,kBAAqB,CAAC,CAAE,CAAC,CAC/F,CAKA,SAAyB,CACvB,OAAO,KAAK,MAAM,YAAY,KAAK,GAAG,UAAW,CAAE,OAAQ,OAAQ,kBAAqB,CAAC,CAAE,CAAC,CAC9F,CAMA,IAA0B,CACxB,OAAO,KAAK,MAAM,YAAY,KAAK,GAAG,OAAQ,CAAE,OAAQA,EAAE,MAAM,CAAQ,CAAE,CAAC,CAC7E,CACF,EAGa,EAAb,KAAmB,CACY,MAAgC,GAA7D,YAAY,EAAiC,EAA4B,CAA5C,KAAA,MAAA,EAAgC,KAAA,GAAA,CAAa,CAO1E,UAAU,EAAgD,CACxD,OAAO,KAAK,MAAM,cAAc,KAAK,GAAG,SAAU,CAChD,OAAQ,QACR,KAAMA,EAAE,MAAM,EAAkB,CAAM,EACtC,OAAQ,CACV,CAAC,CACH,CAOA,OAAO,EAA4B,CAAC,EAAyB,CAC3D,OAAO,KAAK,UAAU,CAAE,GAAG,EAAQ,QAAS,EAAK,CAAC,CACpD,CAMA,SAAgC,CAC9B,OAAO,KAAK,UAAU,CAAE,QAAS,EAAM,CAAC,CAC1C,CAOA,GAAG,EAA4C,CAC7C,OAAO,KAAK,MAAM,cAAc,KAAK,GAAG,QAAS,CAC/C,OAAQ,OACR,KAAMA,EAAE,MAAM,EAAY,CAAI,EAC9B,OAAQ,CACV,CAAC,CACH,CAKA,UAA0B,CACxB,OAAO,KAAK,MAAM,cAAc,KAAK,GAAG,WAAY,CAClD,OAAQ,OACR,kBAAqB,CAAC,CACxB,CAAC,CACH,CAKA,SAAyB,CACvB,OAAO,KAAK,MAAM,cAAc,KAAK,GAAG,UAAW,CAAE,OAAQ,OAAQ,kBAAqB,CAAC,CAAE,CAAC,CAChG,CAMA,IAA0B,CACxB,OAAO,KAAK,MAAM,cAAc,KAAK,GAAG,OAAQ,CAAE,OAAQ,CAAW,CAAC,CACxE,CACF,EAGa,EAAb,KAAmB,CACY,MAAgC,GAA7D,YAAY,EAAiC,EAA4B,CAA5C,KAAA,MAAA,EAAgC,KAAA,GAAA,CAAa,CAO1E,UAAU,EAAgD,CACxD,OAAO,KAAK,MAAM,cAAc,KAAK,GAAG,SAAU,CAChD,OAAQ,QACR,KAAMA,EAAE,MAAM,EAAkB,CAAM,EACtC,OAAQ,CACV,CAAC,CACH,CAOA,OAAO,EAA4B,CAAC,EAAyB,CAC3D,OAAO,KAAK,UAAU,CAAE,GAAG,EAAQ,QAAS,EAAK,CAAC,CACpD,CAMA,SAAgC,CAC9B,OAAO,KAAK,UAAU,CAAE,QAAS,EAAM,CAAC,CAC1C,CAOA,GAAG,EAA4C,CAC7C,OAAO,KAAK,MAAM,cAAc,KAAK,GAAG,QAAS,CAC/C,OAAQ,OACR,KAAMA,EAAE,MAAM,EAAY,CAAI,EAC9B,OAAQ,CACV,CAAC,CACH,CAKA,UAA0B,CACxB,OAAO,KAAK,MAAM,cAAc,KAAK,GAAG,WAAY,CAClD,OAAQ,OACR,kBAAqB,CAAC,CACxB,CAAC,CACH,CAKA,SAAyB,CACvB,OAAO,KAAK,MAAM,cAAc,KAAK,GAAG,UAAW,CAAE,OAAQ,OAAQ,kBAAqB,CAAC,CAAE,CAAC,CAChG,CAMA,IAA0B,CACxB,OAAO,KAAK,MAAM,cAAc,KAAK,GAAG,OAAQ,CAAE,OAAQ,CAAW,CAAC,CACxE,CACF,EAGa,EAAb,KAAiB,CACc,MAAgC,GAA7D,YAAY,EAAiC,EAA4B,CAA5C,KAAA,MAAA,EAAgC,KAAA,GAAA,CAAa,CAO1E,UAAU,EAA4C,CACpD,OAAO,KAAK,MAAM,YAAY,KAAK,GAAG,SAAU,CAC9C,OAAQ,QACR,KAAMA,EAAE,MAAM,EAAgB,CAAM,EACpC,OAAQ,CACV,CAAC,CACH,CAOA,OAAO,EAA0B,CAAC,EAAuB,CACvD,OAAO,KAAK,UAAU,CAAE,GAAG,EAAQ,QAAS,EAAK,CAAC,CACpD,CAMA,SAA8B,CAC5B,OAAO,KAAK,UAAU,CAAE,QAAS,EAAM,CAAC,CAC1C,CAOA,IAAI,EAA4C,CAC9C,OAAO,KAAK,MAAM,YAAY,KAAK,GAAG,aAAc,CAClD,OAAQ,OACR,KAAMA,EAAE,MAAM,EAAY,CAAI,EAC9B,OAAQ,CACV,CAAC,CACH,CACF,EAGa,EAAb,KAAiB,CACc,MAAgC,GAA7D,YAAY,EAAiC,EAA4B,CAA5C,KAAA,MAAA,EAAgC,KAAA,GAAA,CAAa,CAO1E,UAAU,EAA4C,CACpD,OAAO,KAAK,MAAM,YAAY,KAAK,GAAG,SAAU,CAC9C,OAAQ,QACR,KAAMA,EAAE,MAAM,EAAgB,CAAM,EACpC,OAAQ,CACV,CAAC,CACH,CAOA,OAAO,EAA0B,CAAC,EAAuB,CACvD,OAAO,KAAK,UAAU,CAAE,GAAG,EAAQ,QAAS,EAAK,CAAC,CACpD,CAMA,SAA8B,CAC5B,OAAO,KAAK,UAAU,CAAE,QAAS,EAAM,CAAC,CAC1C,CAEA,GAAG,EAAmD,CACpD,OAAO,KAAK,MAAM,YAAY,KAAK,GAAG,QAAS,CAC7C,OAAQ,OACR,KAAMA,EAAE,MAAM,EAAqB,CAAW,EAC9C,cAAe,KAAO,IAAa,CACjC,IAAM,EAAO,MAAM,EAAS,KAAK,EACjC,OAAO,SAAS,EAAM,EAAE,CAC1B,CACF,CAAC,CACH,CAEA,GAAG,EAAsD,CACvD,OAAO,KAAK,MAAM,YAAY,KAAK,GAAG,OAAQ,CAC5C,OAAQ,OACR,KAAMA,EAAE,MAAM,EAAoB,CAAW,EAC7C,OAAQ,CACV,CAAC,CACH,CACF,EAGa,EAAb,KAAkB,CACa,MAAgC,GAA7D,YAAY,EAAiC,EAA4B,CAA5C,KAAA,MAAA,EAAgC,KAAA,GAAA,CAAa,CAO1E,UAAU,EAA8C,CACtD,OAAO,KAAK,MAAM,aAAa,KAAK,GAAG,SAAU,CAC/C,OAAQ,QACR,KAAMA,EAAE,MAAM,EAAiB,CAAM,EACrC,OAAQ,CACV,CAAC,CACH,CAOA,OAAO,EAA2B,CAAC,EAAwB,CACzD,OAAO,KAAK,UAAU,CAAE,GAAG,EAAQ,QAAS,EAAK,CAAC,CACpD,CAMA,SAA+B,CAC7B,OAAO,KAAK,UAAU,CAAE,QAAS,EAAM,CAAC,CAC1C,CAOA,GAAG,EAA4C,CAC7C,OAAO,KAAK,MAAM,aAAa,KAAK,GAAG,QAAS,CAC9C,OAAQ,OACR,KAAMA,EAAE,MAAM,EAAY,CAAI,EAC9B,OAAQ,CACV,CAAC,CACH,CAKA,UAA0B,CACxB,OAAO,KAAK,MAAM,aAAa,KAAK,GAAG,WAAY,CAAE,OAAQ,OAAQ,kBAAqB,CAAC,CAAE,CAAC,CAChG,CAKA,SAAyB,CACvB,OAAO,KAAK,MAAM,aAAa,KAAK,GAAG,UAAW,CAAE,OAAQ,OAAQ,kBAAqB,CAAC,CAAE,CAAC,CAC/F,CAMA,IAA0B,CACxB,OAAO,KAAK,MAAM,aAAa,KAAK,GAAG,OAAQ,CAAE,OAAQ,CAAW,CAAC,CACvE,CACF"}
1
+ {"version":3,"file":"com.cjs","names":["v"],"sources":["../src/api/com.ts"],"sourcesContent":["import type { UpFetch } from 'up-fetch';\nimport * as v from 'valibot';\n\nexport const canFrame = v.object({\n id: v.number(),\n extended_id: v.optional(v.boolean(), false),\n rtr: v.optional(v.boolean(), false),\n /** RTR-only: requested data length (0-8). The server rejects `dlc` on data frames and non-empty `data` on RTR frames. */\n dlc: v.optional(v.pipe(v.number(), v.integer(), v.minValue(0), v.maxValue(8))),\n data: v.optional(v.pipe(v.array(v.number()), v.minLength(0), v.maxLength(8)), []),\n /** Transmit-only: max ms to wait for a free TX buffer. Omit for the server default (1000 ms). */\n timeout: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(5000))),\n});\nexport type CanFrame = v.InferOutput<typeof canFrame>;\nexport type CanFrameInput = v.InferInput<typeof canFrame>;\n\nconst serialData = v.pipe(\n // 1. Validate Input: String OR Array of Bytes (0-255), both max length 65536\n // Server enforces per-endpoint limits (e.g. SPI max transfer = 65536 bytes)\n v.union([\n v.pipe(v.string(), v.maxLength(65536)),\n v.pipe(v.array(v.pipe(v.number(), v.minValue(0), v.maxValue(255))), v.maxLength(65536)),\n ]),\n // 2. Transform: Convert String to ASCII bytes or pass Array as is\n v.transform((input) => {\n if (typeof input === 'string') {\n return input.split('').map((char) => {\n const code = char.charCodeAt(0);\n // Replace UTF8/Non-ASCII (>127) with \"?\" (ASCII 63)\n return code > 127 ? 63 : code;\n });\n }\n return input;\n }),\n);\nexport type SerialData = v.InferOutput<typeof serialData>;\nexport type SerialDataInput = v.InferInput<typeof serialData>;\n\nconst i2cTransactionBase = v.object({\n address: v.number(),\n start: v.boolean(),\n stop: v.boolean(),\n nack_last_byte: v.boolean(),\n});\nconst i2cTransactionRead = v.intersect([\n v.partial(i2cTransactionBase, ['start', 'stop', 'nack_last_byte']),\n v.object({ length: v.pipe(v.number(), v.minValue(1), v.maxValue(1024)) }),\n]);\ntype I2cTransactionRead = v.InferOutput<typeof i2cTransactionRead>;\nconst i2cTransactionWrite = v.intersect([\n v.partial(i2cTransactionBase, ['start', 'stop', 'nack_last_byte']),\n v.object({ data: serialData }),\n]);\ntype I2cTransactionWrite = v.InferOutput<typeof i2cTransactionWrite>;\n\nexport const canConfig = v.object({\n enabled: v.boolean(),\n baud_rate: v.picklist([5_000, 10_000, 20_000, 31_250, 33_000, 40_000, 50_000, 80_000, 83_300,\n 95_000, 100_000, 125_000, 200_000, 250_000, 500_000, 1_000_000]),\n termination_resistors: v.boolean(),\n rx_filter: v.object({ extended_id: v.boolean(), id: v.number(), mask: v.number() }),\n});\nexport type CanConfig = v.InferOutput<typeof canConfig>;\nconst canConfigPatch = v.partial(canConfig);\nexport type CanConfigPatch = v.InferOutput<typeof canConfigPatch>;\nconst canEnableConfig = v.omit(canConfigPatch, ['enabled']);\nexport type CanEnableConfig = v.InferOutput<typeof canEnableConfig>;\n\nconst serialParity = v.picklist(['none', 'odd', 'even', 'mark', 'space']);\nexport type SerialParity = v.InferOutput<typeof serialParity>;\n\nconst serialStopBits = v.picklist(['1', '1.5', '2']);\nexport type SerialStopBits = v.InferOutput<typeof serialStopBits>;\n\nexport const rs232Config = v.object({\n enabled: v.boolean(),\n baud_rate: v.pipe(v.number(), v.minValue(50), v.maxValue(1_000_000)),\n data_bits: v.pipe(v.number(), v.minValue(7), v.maxValue(8)),\n stop_bits: serialStopBits,\n parity: serialParity,\n});\nexport type Rs232Config = v.InferOutput<typeof rs232Config>;\nconst rs232ConfigPatch = v.partial(rs232Config);\nexport type Rs232ConfigPatch = v.InferOutput<typeof rs232ConfigPatch>;\nconst rs232EnableConfig = v.omit(rs232ConfigPatch, ['enabled']);\nexport type Rs232EnableConfig = v.InferOutput<typeof rs232EnableConfig>;\n\nexport const rs485Config = v.object({\n enabled: v.boolean(),\n baud_rate: v.pipe(v.number(), v.minValue(300), v.maxValue(20_000_000)),\n data_bits: v.pipe(v.number(), v.minValue(7), v.maxValue(8)),\n stop_bits: serialStopBits,\n parity: serialParity,\n termination_resistors: v.boolean(),\n});\nexport type Rs485Config = v.InferOutput<typeof rs485Config>;\nconst rs485ConfigPatch = v.partial(rs485Config);\nexport type Rs485ConfigPatch = v.InferOutput<typeof rs485ConfigPatch>;\nconst rs485EnableConfig = v.omit(rs485ConfigPatch, ['enabled']);\nexport type Rs485EnableConfig = v.InferOutput<typeof rs485EnableConfig>;\n\nexport const spiConfig = v.object({\n enabled: v.boolean(),\n baud_rate: v.pipe(v.number(), v.minValue(300), v.maxValue(10_000_000)),\n vcc: v.pipe(v.number(), v.minValue(1.6), v.maxValue(5)),\n mode: v.pipe(v.number(), v.minValue(0), v.maxValue(3)),\n});\nexport type SpiConfig = v.InferOutput<typeof spiConfig>;\nconst spiConfigPatch = v.partial(spiConfig);\nexport type SpiConfigPatch = v.InferOutput<typeof spiConfigPatch>;\nconst spiEnableConfig = v.omit(spiConfigPatch, ['enabled']);\nexport type SpiEnableConfig = v.InferOutput<typeof spiEnableConfig>;\n\nexport const i2cConfig = v.object({\n enabled: v.boolean(),\n baud_rate: v.picklist([100_000, 400_000, 1_000_000]),\n vcc: v.pipe(v.number(), v.minValue(1.6), v.maxValue(5)),\n});\nexport type I2cConfig = v.InferOutput<typeof i2cConfig>;\nconst i2cConfigPatch = v.partial(i2cConfig);\nexport type I2cConfigPatch = v.InferOutput<typeof i2cConfigPatch>;\nconst i2cEnableConfig = v.omit(i2cConfigPatch, ['enabled']);\nexport type I2cEnableConfig = v.InferOutput<typeof i2cEnableConfig>;\n\nexport const uartConfig = v.object({\n enabled: v.boolean(),\n baud_rate: v.pipe(v.number(), v.minValue(300), v.maxValue(12_000_000)),\n vcc: v.pipe(v.number(), v.minValue(1.6), v.maxValue(5)),\n data_bits: v.pipe(v.number(), v.minValue(7), v.maxValue(8)),\n stop_bits: serialStopBits,\n parity: serialParity,\n});\nexport type UartConfig = v.InferOutput<typeof uartConfig>;\nconst uartConfigPatch = v.partial(uartConfig);\nexport type UartConfigPatch = v.InferOutput<typeof uartConfigPatch>;\nconst uartEnableConfig = v.omit(uartConfigPatch, ['enabled']);\nexport type UartEnableConfig = v.InferOutput<typeof uartEnableConfig>;\n\nconst usbInterface = v.object({\n number: v.number(),\n class: v.number(),\n subclass: v.number(),\n protocol: v.number(),\n num_endpoints: v.number(),\n});\nexport type UsbInterface = v.InferOutput<typeof usbInterface>;\n\nconst usbDevice = v.object({\n vendor_id: v.number(),\n product_id: v.number(),\n device_class: v.number(),\n device_subclass: v.number(),\n device_protocol: v.number(),\n usb_version: v.string(),\n speed: v.string(),\n manufacturer: v.optional(v.nullable(v.string())),\n product: v.optional(v.nullable(v.string())),\n serial_number: v.optional(v.nullable(v.string())),\n bus: v.number(),\n port: v.number(),\n address: v.number(),\n num_configurations: v.number(),\n interfaces: v.array(usbInterface),\n});\nexport type UsbDevice = v.InferOutput<typeof usbDevice>;\n\nconst usbState = v.object({ devices: v.array(usbDevice) });\nexport type UsbState = v.InferOutput<typeof usbState>;\n\n/** @hideconstructor */\nexport class ComApi {\n constructor(private readonly fetch: UpFetch) {}\n\n /**\n * Resets the communication interfaces.\n */\n reset(): Promise<void> {\n return this.fetch('/com/reset', { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Access a specific CAN interface by id.\n * @param id The CAN interface id.\n * @returns The CAN instance.\n */\n can(id: number): Can {\n return new Can(this.fetch, id);\n }\n\n /**\n * Access a specific RS232 interface by id.\n * @param id The RS232 interface id.\n * @returns The RS232 instance.\n */\n rs232(id: number): Rs232 {\n return new Rs232(this.fetch, id);\n }\n\n /**\n * Access a specific RS485 interface by id.\n * @param id The RS485 interface id.\n * @returns The RS485 instance.\n */\n rs485(id: number): Rs485 {\n return new Rs485(this.fetch, id);\n }\n\n /**\n * Access a specific SPI interface by id.\n * @param id The SPI interface id.\n * @returns The SPI instance.\n */\n spi(id: number): Spi {\n return new Spi(this.fetch, id);\n }\n\n /**\n * Access a specific I2C interface by id.\n * @param id The I2C interface id.\n * @returns The I2C instance.\n */\n i2c(id: number): I2c {\n return new I2c(this.fetch, id);\n }\n\n /**\n * Access a specific UART interface by id.\n * @param id The UART interface id.\n * @returns The UART instance.\n */\n uart(id: number): Uart {\n return new Uart(this.fetch, id);\n }\n\n /**\n * Access a specific USB interface by id.\n * @param id The USB interface id.\n * @returns The ComUsb instance.\n */\n usb(id: number): ComUsb {\n return new ComUsb(this.fetch, id);\n }\n}\n\n/** @hideconstructor */\nexport class ComUsb {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Returns the current state of the USB port, including all connected devices.\n * @returns The USB port state with device information.\n */\n state(): Promise<UsbState> {\n return this.fetch(`/com/usb/${this.id}/state`, { schema: usbState });\n }\n}\n\n/** @hideconstructor */\nexport class Can {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Configures the CAN interface.\n * @param config The configuration to apply.\n * @returns The updated configuration.\n */\n configure(config: CanConfigPatch): Promise<CanConfig> {\n return this.fetch(`/com/can/${this.id}/config`, {\n method: 'PATCH',\n body: v.parse(canConfigPatch, config),\n schema: canConfig,\n });\n }\n\n /**\n * Enables the CAN interface.\n * @param config Optional configuration to apply while enabling.\n * @returns The updated configuration.\n */\n enable(config: CanEnableConfig = {}): Promise<CanConfig> {\n return this.configure({ ...config, enabled: true });\n }\n\n /**\n * Disables the CAN interface.\n * @returns The updated configuration.\n */\n disable(): Promise<CanConfig> {\n return this.configure({ enabled: false });\n }\n\n /**\n * Transmits one or more frames over the CAN interface.\n *\n * Each frame may carry an optional `timeout` (milliseconds, 1-5000) bounding how\n * long the device waits for a free hardware TX buffer before that frame fails.\n * Omit it to use the server default (1000 ms).\n *\n * RTR frames set `dlc` (0-8) to request a data length instead of carrying `data`.\n * @param data A single frame, or an array of frames to transmit as a batch.\n * @returns The transmitted frame, or the array of transmitted frames, mirroring the input.\n */\n tx(data: CanFrameInput): Promise<CanFrame>;\n tx(data: CanFrameInput[]): Promise<CanFrame[]>;\n tx(data: CanFrameInput | CanFrameInput[]): Promise<CanFrame | CanFrame[]> {\n if (Array.isArray(data)) {\n return this.fetch(`/com/can/${this.id}/write`, {\n method: 'POST',\n body: data.map((frame) => v.parse(canFrame, frame)),\n schema: v.array(canFrame),\n });\n }\n return this.fetch(`/com/can/${this.id}/write`, {\n method: 'POST',\n body: v.parse(canFrame, data),\n schema: canFrame,\n });\n }\n\n /**\n * Starts receiving data over the CAN interface.\n */\n start_rx(): Promise<void> {\n return this.fetch(`/com/can/${this.id}/start_rx`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Stops receiving data over the CAN interface.\n */\n stop_rx(): Promise<void> {\n return this.fetch(`/com/can/${this.id}/stop_rx`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Reads data from the CAN interface.\n * @returns An array of can frames.\n */\n rx(): Promise<CanFrame[]> {\n return this.fetch(`/com/can/${this.id}/read`, { schema: v.array(canFrame) });\n }\n}\n\n/** @hideconstructor */\nexport class Rs232 {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Configures the RS232 interface.\n * @param config The configuration to apply.\n * @returns The updated configuration.\n */\n configure(config: Rs232ConfigPatch): Promise<Rs232Config> {\n return this.fetch(`/com/rs232/${this.id}/config`, {\n method: 'PATCH',\n body: v.parse(rs232ConfigPatch, config),\n schema: rs232Config,\n });\n }\n\n /**\n * Enables the RS232 interface.\n * @param config Optional configuration to apply while enabling.\n * @returns The updated configuration.\n */\n enable(config: Rs232EnableConfig = {}): Promise<Rs232Config> {\n return this.configure({ ...config, enabled: true });\n }\n\n /**\n * Disables the RS232 interface.\n * @returns The updated configuration.\n */\n disable(): Promise<Rs232Config> {\n return this.configure({ enabled: false });\n }\n\n /**\n * Transmits data over the RS232 interface.\n * @param data The data to transmit (byte array or string).\n * @returns The transmitted data.\n */\n tx(data: SerialDataInput): Promise<SerialData> {\n return this.fetch(`/com/rs232/${this.id}/write`, {\n method: 'POST',\n body: v.parse(serialData, data),\n schema: serialData,\n });\n }\n\n /**\n * Starts receiving data over the RS232 interface.\n */\n start_rx(): Promise<void> {\n return this.fetch(`/com/rs232/${this.id}/start_rx`, {\n method: 'POST',\n parseResponse: () => {},\n });\n }\n\n /**\n * Stops receiving data over the RS232 interface.\n */\n stop_rx(): Promise<void> {\n return this.fetch(`/com/rs232/${this.id}/stop_rx`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Reads data from the RS232 interface.\n * @returns An array containing the received data.\n */\n rx(): Promise<SerialData> {\n return this.fetch(`/com/rs232/${this.id}/read`, { schema: serialData });\n }\n}\n\n/** @hideconstructor */\nexport class Rs485 {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Configures the RS485 interface.\n * @param config The configuration to apply.\n * @returns The updated configuration.\n */\n configure(config: Rs485ConfigPatch): Promise<Rs485Config> {\n return this.fetch(`/com/rs485/${this.id}/config`, {\n method: 'PATCH',\n body: v.parse(rs485ConfigPatch, config),\n schema: rs485Config,\n });\n }\n\n /**\n * Enables the RS485 interface.\n * @param config Optional configuration to apply while enabling.\n * @returns The updated configuration.\n */\n enable(config: Rs485EnableConfig = {}): Promise<Rs485Config> {\n return this.configure({ ...config, enabled: true });\n }\n\n /**\n * Disables the RS485 interface.\n * @returns The updated configuration.\n */\n disable(): Promise<Rs485Config> {\n return this.configure({ enabled: false });\n }\n\n /**\n * Transmits data over the RS485 interface.\n * @param data The data to transmit (byte array or string).\n * @returns The transmitted data.\n */\n tx(data: SerialDataInput): Promise<SerialData> {\n return this.fetch(`/com/rs485/${this.id}/write`, {\n method: 'POST',\n body: v.parse(serialData, data),\n schema: serialData,\n });\n }\n\n /**\n * Starts receiving data over the RS485 interface.\n */\n start_rx(): Promise<void> {\n return this.fetch(`/com/rs485/${this.id}/start_rx`, {\n method: 'POST',\n parseResponse: () => {},\n });\n }\n\n /**\n * Stops receiving data over the RS485 interface.\n */\n stop_rx(): Promise<void> {\n return this.fetch(`/com/rs485/${this.id}/stop_rx`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Reads data from the RS485 interface.\n * @returns The received data.\n */\n rx(): Promise<SerialData> {\n return this.fetch(`/com/rs485/${this.id}/read`, { schema: serialData });\n }\n}\n\n/** @hideconstructor */\nexport class Spi {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Configures the SPI interface.\n * @param config The configuration to apply.\n * @returns The updated configuration.\n */\n configure(config: SpiConfigPatch): Promise<SpiConfig> {\n return this.fetch(`/com/spi/${this.id}/config`, {\n method: 'PATCH',\n body: v.parse(spiConfigPatch, config),\n schema: spiConfig,\n });\n }\n\n /**\n * Enables the SPI interface.\n * @param config Optional configuration to apply while enabling.\n * @returns The updated configuration.\n */\n enable(config: SpiEnableConfig = {}): Promise<SpiConfig> {\n return this.configure({ ...config, enabled: true });\n }\n\n /**\n * Disables the SPI interface.\n * @returns The updated configuration.\n */\n disable(): Promise<SpiConfig> {\n return this.configure({ enabled: false });\n }\n\n /**\n * Transmits data over the SPI interface and receives the response.\n * @param data The data to transmit (byte array or string).\n * @returns The received response data.\n */\n trx(data: SerialDataInput): Promise<SerialData> {\n return this.fetch(`/com/spi/${this.id}/write_read`, {\n method: 'POST',\n body: v.parse(serialData, data),\n schema: serialData,\n });\n }\n}\n\n/** @hideconstructor */\nexport class I2c {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Configures the I2C interface.\n * @param config The configuration to apply.\n * @returns The updated configuration.\n */\n configure(config: I2cConfigPatch): Promise<I2cConfig> {\n return this.fetch(`/com/i2c/${this.id}/config`, {\n method: 'PATCH',\n body: v.parse(i2cConfigPatch, config),\n schema: i2cConfig,\n });\n }\n\n /**\n * Enables the I2C interface.\n * @param config Optional configuration to apply while enabling.\n * @returns The updated configuration.\n */\n enable(config: I2cEnableConfig = {}): Promise<I2cConfig> {\n return this.configure({ ...config, enabled: true });\n }\n\n /**\n * Disables the I2C interface.\n * @returns The updated configuration.\n */\n disable(): Promise<I2cConfig> {\n return this.configure({ enabled: false });\n }\n\n tx(transaction: I2cTransactionWrite): Promise<number> {\n return this.fetch(`/com/i2c/${this.id}/write`, {\n method: 'POST',\n body: v.parse(i2cTransactionWrite, transaction),\n parseResponse: async (response) => {\n const text = await response.text();\n return parseInt(text, 10);\n },\n });\n }\n\n rx(transaction: I2cTransactionRead): Promise<SerialData> {\n return this.fetch(`/com/i2c/${this.id}/read`, {\n method: 'POST',\n body: v.parse(i2cTransactionRead, transaction),\n schema: serialData,\n });\n }\n}\n\n/** @hideconstructor */\nexport class Uart {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Configures the UART interface.\n * @param config The configuration to apply.\n * @returns The updated configuration.\n */\n configure(config: UartConfigPatch): Promise<UartConfig> {\n return this.fetch(`/com/uart/${this.id}/config`, {\n method: 'PATCH',\n body: v.parse(uartConfigPatch, config),\n schema: uartConfig,\n });\n }\n\n /**\n * Enables the UART interface.\n * @param config Optional configuration to apply while enabling.\n * @returns The updated configuration.\n */\n enable(config: UartEnableConfig = {}): Promise<UartConfig> {\n return this.configure({ ...config, enabled: true });\n }\n\n /**\n * Disables the UART interface.\n * @returns The updated configuration.\n */\n disable(): Promise<UartConfig> {\n return this.configure({ enabled: false });\n }\n\n /**\n * Transmits data over the UART interface.\n * @param data The data to transmit (byte array or string).\n * @returns The received response data.\n */\n tx(data: SerialDataInput): Promise<SerialData> {\n return this.fetch(`/com/uart/${this.id}/write`, {\n method: 'POST',\n body: v.parse(serialData, data),\n schema: serialData,\n });\n }\n\n /**\n * Starts receiving data over the UART interface.\n */\n start_rx(): Promise<void> {\n return this.fetch(`/com/uart/${this.id}/start_rx`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Stops receiving data over the UART interface.\n */\n stop_rx(): Promise<void> {\n return this.fetch(`/com/uart/${this.id}/stop_rx`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Reads data from the UART interface.\n * @returns The received data.\n */\n rx(): Promise<SerialData> {\n return this.fetch(`/com/uart/${this.id}/read`, { schema: serialData });\n }\n}\n"],"mappings":"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"}
package/build/com.d.cts CHANGED
@@ -1,2 +1,2 @@
1
- import { A as UartConfig, B as rs485Config, C as SerialParity, D as SpiConfigPatch, E as SpiConfig, F as UsbState, H as uartConfig, I as canConfig, L as canFrame, M as UartEnableConfig, N as UsbDevice, O as SpiEnableConfig, P as UsbInterface, R as i2cConfig, S as SerialDataInput, T as Spi, V as spiConfig, _ as Rs485, a as CanFrame, b as Rs485EnableConfig, c as ComUsb, d as I2cConfigPatch, f as I2cEnableConfig, g as Rs232EnableConfig, h as Rs232ConfigPatch, i as CanEnableConfig, j as UartConfigPatch, k as Uart, l as I2c, m as Rs232Config, n as CanConfig, o as CanFrameInput, p as Rs232, r as CanConfigPatch, s as ComApi, t as Can, u as I2cConfig, v as Rs485Config, w as SerialStopBits, x as SerialData, y as Rs485ConfigPatch, z as rs232Config } from "./com-BLw4CGid.cjs";
1
+ import { A as UartConfig, B as rs485Config, C as SerialParity, D as SpiConfigPatch, E as SpiConfig, F as UsbState, H as uartConfig, I as canConfig, L as canFrame, M as UartEnableConfig, N as UsbDevice, O as SpiEnableConfig, P as UsbInterface, R as i2cConfig, S as SerialDataInput, T as Spi, V as spiConfig, _ as Rs485, a as CanFrame, b as Rs485EnableConfig, c as ComUsb, d as I2cConfigPatch, f as I2cEnableConfig, g as Rs232EnableConfig, h as Rs232ConfigPatch, i as CanEnableConfig, j as UartConfigPatch, k as Uart, l as I2c, m as Rs232Config, n as CanConfig, o as CanFrameInput, p as Rs232, r as CanConfigPatch, s as ComApi, t as Can, u as I2cConfig, v as Rs485Config, w as SerialStopBits, x as SerialData, y as Rs485ConfigPatch, z as rs232Config } from "./com-DN1l6xqC.cjs";
2
2
  export { Can, CanConfig, CanConfigPatch, CanEnableConfig, CanFrame, CanFrameInput, ComApi, ComUsb, I2c, I2cConfig, I2cConfigPatch, I2cEnableConfig, Rs232, Rs232Config, Rs232ConfigPatch, Rs232EnableConfig, Rs485, Rs485Config, Rs485ConfigPatch, Rs485EnableConfig, SerialData, SerialDataInput, SerialParity, SerialStopBits, Spi, SpiConfig, SpiConfigPatch, SpiEnableConfig, Uart, UartConfig, UartConfigPatch, UartEnableConfig, UsbDevice, UsbInterface, UsbState, canConfig, canFrame, i2cConfig, rs232Config, rs485Config, spiConfig, uartConfig };
package/build/com.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { A as UartConfig, B as rs485Config, C as SerialParity, D as SpiConfigPatch, E as SpiConfig, F as UsbState, H as uartConfig, I as canConfig, L as canFrame, M as UartEnableConfig, N as UsbDevice, O as SpiEnableConfig, P as UsbInterface, R as i2cConfig, S as SerialDataInput, T as Spi, V as spiConfig, _ as Rs485, a as CanFrame, b as Rs485EnableConfig, c as ComUsb, d as I2cConfigPatch, f as I2cEnableConfig, g as Rs232EnableConfig, h as Rs232ConfigPatch, i as CanEnableConfig, j as UartConfigPatch, k as Uart, l as I2c, m as Rs232Config, n as CanConfig, o as CanFrameInput, p as Rs232, r as CanConfigPatch, s as ComApi, t as Can, u as I2cConfig, v as Rs485Config, w as SerialStopBits, x as SerialData, y as Rs485ConfigPatch, z as rs232Config } from "./com-BLw4CGid.mjs";
1
+ import { A as UartConfig, B as rs485Config, C as SerialParity, D as SpiConfigPatch, E as SpiConfig, F as UsbState, H as uartConfig, I as canConfig, L as canFrame, M as UartEnableConfig, N as UsbDevice, O as SpiEnableConfig, P as UsbInterface, R as i2cConfig, S as SerialDataInput, T as Spi, V as spiConfig, _ as Rs485, a as CanFrame, b as Rs485EnableConfig, c as ComUsb, d as I2cConfigPatch, f as I2cEnableConfig, g as Rs232EnableConfig, h as Rs232ConfigPatch, i as CanEnableConfig, j as UartConfigPatch, k as Uart, l as I2c, m as Rs232Config, n as CanConfig, o as CanFrameInput, p as Rs232, r as CanConfigPatch, s as ComApi, t as Can, u as I2cConfig, v as Rs485Config, w as SerialStopBits, x as SerialData, y as Rs485ConfigPatch, z as rs232Config } from "./com-DN1l6xqC.mjs";
2
2
  export { Can, CanConfig, CanConfigPatch, CanEnableConfig, CanFrame, CanFrameInput, ComApi, ComUsb, I2c, I2cConfig, I2cConfigPatch, I2cEnableConfig, Rs232, Rs232Config, Rs232ConfigPatch, Rs232EnableConfig, Rs485, Rs485Config, Rs485ConfigPatch, Rs485EnableConfig, SerialData, SerialDataInput, SerialParity, SerialStopBits, Spi, SpiConfig, SpiConfigPatch, SpiEnableConfig, Uart, UartConfig, UartConfigPatch, UartEnableConfig, UsbDevice, UsbInterface, UsbState, canConfig, canFrame, i2cConfig, rs232Config, rs485Config, spiConfig, uartConfig };
package/build/com.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import*as e from"valibot";const t=e.object({id:e.number(),extended_id:e.optional(e.boolean(),!1),rtr:e.optional(e.boolean(),!1),data:e.optional(e.pipe(e.array(e.number()),e.minLength(0),e.maxLength(8)),[]),timeout:e.optional(e.pipe(e.number(),e.integer(),e.minValue(1),e.maxValue(5e3)))}),n=e.pipe(e.union([e.pipe(e.string(),e.maxLength(65536)),e.pipe(e.array(e.pipe(e.number(),e.minValue(0),e.maxValue(255))),e.maxLength(65536))]),e.transform(e=>typeof e==`string`?e.split(``).map(e=>{let t=e.charCodeAt(0);return t>127?63:t}):e)),r=e.object({address:e.number(),start:e.boolean(),stop:e.boolean(),nack_last_byte:e.boolean()}),i=e.intersect([e.partial(r,[`start`,`stop`,`nack_last_byte`]),e.object({length:e.pipe(e.number(),e.minValue(1),e.maxValue(1024))})]),a=e.intersect([e.partial(r,[`start`,`stop`,`nack_last_byte`]),e.object({data:n})]),o=e.object({enabled:e.boolean(),baud_rate:e.picklist([5e3,1e4,2e4,31250,33e3,4e4,5e4,8e4,83300,95e3,1e5,125e3,2e5,25e4,5e5,1e6]),termination_resistors:e.boolean(),rx_filter:e.object({extended_id:e.boolean(),id:e.number(),mask:e.number()})}),s=e.partial(o);e.omit(s,[`enabled`]);const c=e.picklist([`none`,`odd`,`even`,`mark`,`space`]),l=e.picklist([`1`,`1.5`,`2`]),u=e.object({enabled:e.boolean(),baud_rate:e.pipe(e.number(),e.minValue(50),e.maxValue(1e6)),data_bits:e.pipe(e.number(),e.minValue(7),e.maxValue(8)),stop_bits:l,parity:c}),d=e.partial(u);e.omit(d,[`enabled`]);const f=e.object({enabled:e.boolean(),baud_rate:e.pipe(e.number(),e.minValue(300),e.maxValue(2e7)),data_bits:e.pipe(e.number(),e.minValue(7),e.maxValue(8)),stop_bits:l,parity:c,termination_resistors:e.boolean()}),p=e.partial(f);e.omit(p,[`enabled`]);const m=e.object({enabled:e.boolean(),baud_rate:e.pipe(e.number(),e.minValue(300),e.maxValue(1e7)),vcc:e.pipe(e.number(),e.minValue(1.6),e.maxValue(5)),mode:e.pipe(e.number(),e.minValue(0),e.maxValue(3))}),h=e.partial(m);e.omit(h,[`enabled`]);const g=e.object({enabled:e.boolean(),baud_rate:e.picklist([1e5,4e5,1e6]),vcc:e.pipe(e.number(),e.minValue(1.6),e.maxValue(5))}),_=e.partial(g);e.omit(_,[`enabled`]);const v=e.object({enabled:e.boolean(),baud_rate:e.pipe(e.number(),e.minValue(300),e.maxValue(12e6)),vcc:e.pipe(e.number(),e.minValue(1.6),e.maxValue(5)),data_bits:e.pipe(e.number(),e.minValue(7),e.maxValue(8)),stop_bits:l,parity:c}),y=e.partial(v);e.omit(y,[`enabled`]);const b=e.object({number:e.number(),class:e.number(),subclass:e.number(),protocol:e.number(),num_endpoints:e.number()}),x=e.object({vendor_id:e.number(),product_id:e.number(),device_class:e.number(),device_subclass:e.number(),device_protocol:e.number(),usb_version:e.string(),speed:e.string(),manufacturer:e.optional(e.nullable(e.string())),product:e.optional(e.nullable(e.string())),serial_number:e.optional(e.nullable(e.string())),bus:e.number(),port:e.number(),address:e.number(),num_configurations:e.number(),interfaces:e.array(b)}),S=e.object({devices:e.array(x)});var C=class{fetch;constructor(e){this.fetch=e}reset(){return this.fetch(`/com/reset`,{method:`POST`,parseResponse:()=>{}})}can(e){return new T(this.fetch,e)}rs232(e){return new E(this.fetch,e)}rs485(e){return new D(this.fetch,e)}spi(e){return new O(this.fetch,e)}i2c(e){return new k(this.fetch,e)}uart(e){return new A(this.fetch,e)}usb(e){return new w(this.fetch,e)}},w=class{fetch;id;constructor(e,t){this.fetch=e,this.id=t}state(){return this.fetch(`/com/usb/${this.id}/state`,{schema:S})}},T=class{fetch;id;constructor(e,t){this.fetch=e,this.id=t}configure(t){return this.fetch(`/com/can/${this.id}/config`,{method:`PATCH`,body:e.parse(s,t),schema:o})}enable(e={}){return this.configure({...e,enabled:!0})}disable(){return this.configure({enabled:!1})}tx(n){return Array.isArray(n)?this.fetch(`/com/can/${this.id}/write`,{method:`POST`,body:n.map(n=>e.parse(t,n)),schema:e.array(t)}):this.fetch(`/com/can/${this.id}/write`,{method:`POST`,body:e.parse(t,n),schema:t})}start_rx(){return this.fetch(`/com/can/${this.id}/start_rx`,{method:`POST`,parseResponse:()=>{}})}stop_rx(){return this.fetch(`/com/can/${this.id}/stop_rx`,{method:`POST`,parseResponse:()=>{}})}rx(){return this.fetch(`/com/can/${this.id}/read`,{schema:e.array(t)})}},E=class{fetch;id;constructor(e,t){this.fetch=e,this.id=t}configure(t){return this.fetch(`/com/rs232/${this.id}/config`,{method:`PATCH`,body:e.parse(d,t),schema:u})}enable(e={}){return this.configure({...e,enabled:!0})}disable(){return this.configure({enabled:!1})}tx(t){return this.fetch(`/com/rs232/${this.id}/write`,{method:`POST`,body:e.parse(n,t),schema:n})}start_rx(){return this.fetch(`/com/rs232/${this.id}/start_rx`,{method:`POST`,parseResponse:()=>{}})}stop_rx(){return this.fetch(`/com/rs232/${this.id}/stop_rx`,{method:`POST`,parseResponse:()=>{}})}rx(){return this.fetch(`/com/rs232/${this.id}/read`,{schema:n})}},D=class{fetch;id;constructor(e,t){this.fetch=e,this.id=t}configure(t){return this.fetch(`/com/rs485/${this.id}/config`,{method:`PATCH`,body:e.parse(p,t),schema:f})}enable(e={}){return this.configure({...e,enabled:!0})}disable(){return this.configure({enabled:!1})}tx(t){return this.fetch(`/com/rs485/${this.id}/write`,{method:`POST`,body:e.parse(n,t),schema:n})}start_rx(){return this.fetch(`/com/rs485/${this.id}/start_rx`,{method:`POST`,parseResponse:()=>{}})}stop_rx(){return this.fetch(`/com/rs485/${this.id}/stop_rx`,{method:`POST`,parseResponse:()=>{}})}rx(){return this.fetch(`/com/rs485/${this.id}/read`,{schema:n})}},O=class{fetch;id;constructor(e,t){this.fetch=e,this.id=t}configure(t){return this.fetch(`/com/spi/${this.id}/config`,{method:`PATCH`,body:e.parse(h,t),schema:m})}enable(e={}){return this.configure({...e,enabled:!0})}disable(){return this.configure({enabled:!1})}trx(t){return this.fetch(`/com/spi/${this.id}/write_read`,{method:`POST`,body:e.parse(n,t),schema:n})}},k=class{fetch;id;constructor(e,t){this.fetch=e,this.id=t}configure(t){return this.fetch(`/com/i2c/${this.id}/config`,{method:`PATCH`,body:e.parse(_,t),schema:g})}enable(e={}){return this.configure({...e,enabled:!0})}disable(){return this.configure({enabled:!1})}tx(t){return this.fetch(`/com/i2c/${this.id}/write`,{method:`POST`,body:e.parse(a,t),parseResponse:async e=>{let t=await e.text();return parseInt(t,10)}})}rx(t){return this.fetch(`/com/i2c/${this.id}/read`,{method:`POST`,body:e.parse(i,t),schema:n})}},A=class{fetch;id;constructor(e,t){this.fetch=e,this.id=t}configure(t){return this.fetch(`/com/uart/${this.id}/config`,{method:`PATCH`,body:e.parse(y,t),schema:v})}enable(e={}){return this.configure({...e,enabled:!0})}disable(){return this.configure({enabled:!1})}tx(t){return this.fetch(`/com/uart/${this.id}/write`,{method:`POST`,body:e.parse(n,t),schema:n})}start_rx(){return this.fetch(`/com/uart/${this.id}/start_rx`,{method:`POST`,parseResponse:()=>{}})}stop_rx(){return this.fetch(`/com/uart/${this.id}/stop_rx`,{method:`POST`,parseResponse:()=>{}})}rx(){return this.fetch(`/com/uart/${this.id}/read`,{schema:n})}};export{T as Can,C as ComApi,w as ComUsb,k as I2c,E as Rs232,D as Rs485,O as Spi,A as Uart,o as canConfig,t as canFrame,g as i2cConfig,u as rs232Config,f as rs485Config,m as spiConfig,v as uartConfig};
1
+ import*as e from"valibot";const t=e.object({id:e.number(),extended_id:e.optional(e.boolean(),!1),rtr:e.optional(e.boolean(),!1),dlc:e.optional(e.pipe(e.number(),e.integer(),e.minValue(0),e.maxValue(8))),data:e.optional(e.pipe(e.array(e.number()),e.minLength(0),e.maxLength(8)),[]),timeout:e.optional(e.pipe(e.number(),e.integer(),e.minValue(1),e.maxValue(5e3)))}),n=e.pipe(e.union([e.pipe(e.string(),e.maxLength(65536)),e.pipe(e.array(e.pipe(e.number(),e.minValue(0),e.maxValue(255))),e.maxLength(65536))]),e.transform(e=>typeof e==`string`?e.split(``).map(e=>{let t=e.charCodeAt(0);return t>127?63:t}):e)),r=e.object({address:e.number(),start:e.boolean(),stop:e.boolean(),nack_last_byte:e.boolean()}),i=e.intersect([e.partial(r,[`start`,`stop`,`nack_last_byte`]),e.object({length:e.pipe(e.number(),e.minValue(1),e.maxValue(1024))})]),a=e.intersect([e.partial(r,[`start`,`stop`,`nack_last_byte`]),e.object({data:n})]),o=e.object({enabled:e.boolean(),baud_rate:e.picklist([5e3,1e4,2e4,31250,33e3,4e4,5e4,8e4,83300,95e3,1e5,125e3,2e5,25e4,5e5,1e6]),termination_resistors:e.boolean(),rx_filter:e.object({extended_id:e.boolean(),id:e.number(),mask:e.number()})}),s=e.partial(o);e.omit(s,[`enabled`]);const c=e.picklist([`none`,`odd`,`even`,`mark`,`space`]),l=e.picklist([`1`,`1.5`,`2`]),u=e.object({enabled:e.boolean(),baud_rate:e.pipe(e.number(),e.minValue(50),e.maxValue(1e6)),data_bits:e.pipe(e.number(),e.minValue(7),e.maxValue(8)),stop_bits:l,parity:c}),d=e.partial(u);e.omit(d,[`enabled`]);const f=e.object({enabled:e.boolean(),baud_rate:e.pipe(e.number(),e.minValue(300),e.maxValue(2e7)),data_bits:e.pipe(e.number(),e.minValue(7),e.maxValue(8)),stop_bits:l,parity:c,termination_resistors:e.boolean()}),p=e.partial(f);e.omit(p,[`enabled`]);const m=e.object({enabled:e.boolean(),baud_rate:e.pipe(e.number(),e.minValue(300),e.maxValue(1e7)),vcc:e.pipe(e.number(),e.minValue(1.6),e.maxValue(5)),mode:e.pipe(e.number(),e.minValue(0),e.maxValue(3))}),h=e.partial(m);e.omit(h,[`enabled`]);const g=e.object({enabled:e.boolean(),baud_rate:e.picklist([1e5,4e5,1e6]),vcc:e.pipe(e.number(),e.minValue(1.6),e.maxValue(5))}),_=e.partial(g);e.omit(_,[`enabled`]);const v=e.object({enabled:e.boolean(),baud_rate:e.pipe(e.number(),e.minValue(300),e.maxValue(12e6)),vcc:e.pipe(e.number(),e.minValue(1.6),e.maxValue(5)),data_bits:e.pipe(e.number(),e.minValue(7),e.maxValue(8)),stop_bits:l,parity:c}),y=e.partial(v);e.omit(y,[`enabled`]);const b=e.object({number:e.number(),class:e.number(),subclass:e.number(),protocol:e.number(),num_endpoints:e.number()}),x=e.object({vendor_id:e.number(),product_id:e.number(),device_class:e.number(),device_subclass:e.number(),device_protocol:e.number(),usb_version:e.string(),speed:e.string(),manufacturer:e.optional(e.nullable(e.string())),product:e.optional(e.nullable(e.string())),serial_number:e.optional(e.nullable(e.string())),bus:e.number(),port:e.number(),address:e.number(),num_configurations:e.number(),interfaces:e.array(b)}),S=e.object({devices:e.array(x)});var C=class{fetch;constructor(e){this.fetch=e}reset(){return this.fetch(`/com/reset`,{method:`POST`,parseResponse:()=>{}})}can(e){return new T(this.fetch,e)}rs232(e){return new E(this.fetch,e)}rs485(e){return new D(this.fetch,e)}spi(e){return new O(this.fetch,e)}i2c(e){return new k(this.fetch,e)}uart(e){return new A(this.fetch,e)}usb(e){return new w(this.fetch,e)}},w=class{fetch;id;constructor(e,t){this.fetch=e,this.id=t}state(){return this.fetch(`/com/usb/${this.id}/state`,{schema:S})}},T=class{fetch;id;constructor(e,t){this.fetch=e,this.id=t}configure(t){return this.fetch(`/com/can/${this.id}/config`,{method:`PATCH`,body:e.parse(s,t),schema:o})}enable(e={}){return this.configure({...e,enabled:!0})}disable(){return this.configure({enabled:!1})}tx(n){return Array.isArray(n)?this.fetch(`/com/can/${this.id}/write`,{method:`POST`,body:n.map(n=>e.parse(t,n)),schema:e.array(t)}):this.fetch(`/com/can/${this.id}/write`,{method:`POST`,body:e.parse(t,n),schema:t})}start_rx(){return this.fetch(`/com/can/${this.id}/start_rx`,{method:`POST`,parseResponse:()=>{}})}stop_rx(){return this.fetch(`/com/can/${this.id}/stop_rx`,{method:`POST`,parseResponse:()=>{}})}rx(){return this.fetch(`/com/can/${this.id}/read`,{schema:e.array(t)})}},E=class{fetch;id;constructor(e,t){this.fetch=e,this.id=t}configure(t){return this.fetch(`/com/rs232/${this.id}/config`,{method:`PATCH`,body:e.parse(d,t),schema:u})}enable(e={}){return this.configure({...e,enabled:!0})}disable(){return this.configure({enabled:!1})}tx(t){return this.fetch(`/com/rs232/${this.id}/write`,{method:`POST`,body:e.parse(n,t),schema:n})}start_rx(){return this.fetch(`/com/rs232/${this.id}/start_rx`,{method:`POST`,parseResponse:()=>{}})}stop_rx(){return this.fetch(`/com/rs232/${this.id}/stop_rx`,{method:`POST`,parseResponse:()=>{}})}rx(){return this.fetch(`/com/rs232/${this.id}/read`,{schema:n})}},D=class{fetch;id;constructor(e,t){this.fetch=e,this.id=t}configure(t){return this.fetch(`/com/rs485/${this.id}/config`,{method:`PATCH`,body:e.parse(p,t),schema:f})}enable(e={}){return this.configure({...e,enabled:!0})}disable(){return this.configure({enabled:!1})}tx(t){return this.fetch(`/com/rs485/${this.id}/write`,{method:`POST`,body:e.parse(n,t),schema:n})}start_rx(){return this.fetch(`/com/rs485/${this.id}/start_rx`,{method:`POST`,parseResponse:()=>{}})}stop_rx(){return this.fetch(`/com/rs485/${this.id}/stop_rx`,{method:`POST`,parseResponse:()=>{}})}rx(){return this.fetch(`/com/rs485/${this.id}/read`,{schema:n})}},O=class{fetch;id;constructor(e,t){this.fetch=e,this.id=t}configure(t){return this.fetch(`/com/spi/${this.id}/config`,{method:`PATCH`,body:e.parse(h,t),schema:m})}enable(e={}){return this.configure({...e,enabled:!0})}disable(){return this.configure({enabled:!1})}trx(t){return this.fetch(`/com/spi/${this.id}/write_read`,{method:`POST`,body:e.parse(n,t),schema:n})}},k=class{fetch;id;constructor(e,t){this.fetch=e,this.id=t}configure(t){return this.fetch(`/com/i2c/${this.id}/config`,{method:`PATCH`,body:e.parse(_,t),schema:g})}enable(e={}){return this.configure({...e,enabled:!0})}disable(){return this.configure({enabled:!1})}tx(t){return this.fetch(`/com/i2c/${this.id}/write`,{method:`POST`,body:e.parse(a,t),parseResponse:async e=>{let t=await e.text();return parseInt(t,10)}})}rx(t){return this.fetch(`/com/i2c/${this.id}/read`,{method:`POST`,body:e.parse(i,t),schema:n})}},A=class{fetch;id;constructor(e,t){this.fetch=e,this.id=t}configure(t){return this.fetch(`/com/uart/${this.id}/config`,{method:`PATCH`,body:e.parse(y,t),schema:v})}enable(e={}){return this.configure({...e,enabled:!0})}disable(){return this.configure({enabled:!1})}tx(t){return this.fetch(`/com/uart/${this.id}/write`,{method:`POST`,body:e.parse(n,t),schema:n})}start_rx(){return this.fetch(`/com/uart/${this.id}/start_rx`,{method:`POST`,parseResponse:()=>{}})}stop_rx(){return this.fetch(`/com/uart/${this.id}/stop_rx`,{method:`POST`,parseResponse:()=>{}})}rx(){return this.fetch(`/com/uart/${this.id}/read`,{schema:n})}};export{T as Can,C as ComApi,w as ComUsb,k as I2c,E as Rs232,D as Rs485,O as Spi,A as Uart,o as canConfig,t as canFrame,g as i2cConfig,u as rs232Config,f as rs485Config,m as spiConfig,v as uartConfig};
2
2
  //# sourceMappingURL=com.mjs.map
package/build/com.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"com.mjs","names":[],"sources":["../src/api/com.ts"],"sourcesContent":["import type { UpFetch } from 'up-fetch';\nimport * as v from 'valibot';\n\nexport const canFrame = v.object({\n id: v.number(),\n extended_id: v.optional(v.boolean(), false),\n rtr: v.optional(v.boolean(), false),\n data: v.optional(v.pipe(v.array(v.number()), v.minLength(0), v.maxLength(8)), []),\n /** Transmit-only: max ms to wait for a free TX buffer. Omit for the server default (1000 ms). */\n timeout: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(5000))),\n});\nexport type CanFrame = v.InferOutput<typeof canFrame>;\nexport type CanFrameInput = v.InferInput<typeof canFrame>;\n\nconst serialData = v.pipe(\n // 1. Validate Input: String OR Array of Bytes (0-255), both max length 65536\n // Server enforces per-endpoint limits (e.g. SPI max transfer = 65536 bytes)\n v.union([\n v.pipe(v.string(), v.maxLength(65536)),\n v.pipe(v.array(v.pipe(v.number(), v.minValue(0), v.maxValue(255))), v.maxLength(65536)),\n ]),\n // 2. Transform: Convert String to ASCII bytes or pass Array as is\n v.transform((input) => {\n if (typeof input === 'string') {\n return input.split('').map((char) => {\n const code = char.charCodeAt(0);\n // Replace UTF8/Non-ASCII (>127) with \"?\" (ASCII 63)\n return code > 127 ? 63 : code;\n });\n }\n return input;\n }),\n);\nexport type SerialData = v.InferOutput<typeof serialData>;\nexport type SerialDataInput = v.InferInput<typeof serialData>;\n\nconst i2cTransactionBase = v.object({\n address: v.number(),\n start: v.boolean(),\n stop: v.boolean(),\n nack_last_byte: v.boolean(),\n});\nconst i2cTransactionRead = v.intersect([\n v.partial(i2cTransactionBase, ['start', 'stop', 'nack_last_byte']),\n v.object({ length: v.pipe(v.number(), v.minValue(1), v.maxValue(1024)) }),\n]);\ntype I2cTransactionRead = v.InferOutput<typeof i2cTransactionRead>;\nconst i2cTransactionWrite = v.intersect([\n v.partial(i2cTransactionBase, ['start', 'stop', 'nack_last_byte']),\n v.object({ data: serialData }),\n]);\ntype I2cTransactionWrite = v.InferOutput<typeof i2cTransactionWrite>;\n\nexport const canConfig = v.object({\n enabled: v.boolean(),\n baud_rate: v.picklist([5_000, 10_000, 20_000, 31_250, 33_000, 40_000, 50_000, 80_000, 83_300,\n 95_000, 100_000, 125_000, 200_000, 250_000, 500_000, 1_000_000]),\n termination_resistors: v.boolean(),\n rx_filter: v.object({ extended_id: v.boolean(), id: v.number(), mask: v.number() }),\n});\nexport type CanConfig = v.InferOutput<typeof canConfig>;\nconst canConfigPatch = v.partial(canConfig);\nexport type CanConfigPatch = v.InferOutput<typeof canConfigPatch>;\nconst canEnableConfig = v.omit(canConfigPatch, ['enabled']);\nexport type CanEnableConfig = v.InferOutput<typeof canEnableConfig>;\n\nconst serialParity = v.picklist(['none', 'odd', 'even', 'mark', 'space']);\nexport type SerialParity = v.InferOutput<typeof serialParity>;\n\nconst serialStopBits = v.picklist(['1', '1.5', '2']);\nexport type SerialStopBits = v.InferOutput<typeof serialStopBits>;\n\nexport const rs232Config = v.object({\n enabled: v.boolean(),\n baud_rate: v.pipe(v.number(), v.minValue(50), v.maxValue(1_000_000)),\n data_bits: v.pipe(v.number(), v.minValue(7), v.maxValue(8)),\n stop_bits: serialStopBits,\n parity: serialParity,\n});\nexport type Rs232Config = v.InferOutput<typeof rs232Config>;\nconst rs232ConfigPatch = v.partial(rs232Config);\nexport type Rs232ConfigPatch = v.InferOutput<typeof rs232ConfigPatch>;\nconst rs232EnableConfig = v.omit(rs232ConfigPatch, ['enabled']);\nexport type Rs232EnableConfig = v.InferOutput<typeof rs232EnableConfig>;\n\nexport const rs485Config = v.object({\n enabled: v.boolean(),\n baud_rate: v.pipe(v.number(), v.minValue(300), v.maxValue(20_000_000)),\n data_bits: v.pipe(v.number(), v.minValue(7), v.maxValue(8)),\n stop_bits: serialStopBits,\n parity: serialParity,\n termination_resistors: v.boolean(),\n});\nexport type Rs485Config = v.InferOutput<typeof rs485Config>;\nconst rs485ConfigPatch = v.partial(rs485Config);\nexport type Rs485ConfigPatch = v.InferOutput<typeof rs485ConfigPatch>;\nconst rs485EnableConfig = v.omit(rs485ConfigPatch, ['enabled']);\nexport type Rs485EnableConfig = v.InferOutput<typeof rs485EnableConfig>;\n\nexport const spiConfig = v.object({\n enabled: v.boolean(),\n baud_rate: v.pipe(v.number(), v.minValue(300), v.maxValue(10_000_000)),\n vcc: v.pipe(v.number(), v.minValue(1.6), v.maxValue(5)),\n mode: v.pipe(v.number(), v.minValue(0), v.maxValue(3)),\n});\nexport type SpiConfig = v.InferOutput<typeof spiConfig>;\nconst spiConfigPatch = v.partial(spiConfig);\nexport type SpiConfigPatch = v.InferOutput<typeof spiConfigPatch>;\nconst spiEnableConfig = v.omit(spiConfigPatch, ['enabled']);\nexport type SpiEnableConfig = v.InferOutput<typeof spiEnableConfig>;\n\nexport const i2cConfig = v.object({\n enabled: v.boolean(),\n baud_rate: v.picklist([100_000, 400_000, 1_000_000]),\n vcc: v.pipe(v.number(), v.minValue(1.6), v.maxValue(5)),\n});\nexport type I2cConfig = v.InferOutput<typeof i2cConfig>;\nconst i2cConfigPatch = v.partial(i2cConfig);\nexport type I2cConfigPatch = v.InferOutput<typeof i2cConfigPatch>;\nconst i2cEnableConfig = v.omit(i2cConfigPatch, ['enabled']);\nexport type I2cEnableConfig = v.InferOutput<typeof i2cEnableConfig>;\n\nexport const uartConfig = v.object({\n enabled: v.boolean(),\n baud_rate: v.pipe(v.number(), v.minValue(300), v.maxValue(12_000_000)),\n vcc: v.pipe(v.number(), v.minValue(1.6), v.maxValue(5)),\n data_bits: v.pipe(v.number(), v.minValue(7), v.maxValue(8)),\n stop_bits: serialStopBits,\n parity: serialParity,\n});\nexport type UartConfig = v.InferOutput<typeof uartConfig>;\nconst uartConfigPatch = v.partial(uartConfig);\nexport type UartConfigPatch = v.InferOutput<typeof uartConfigPatch>;\nconst uartEnableConfig = v.omit(uartConfigPatch, ['enabled']);\nexport type UartEnableConfig = v.InferOutput<typeof uartEnableConfig>;\n\nconst usbInterface = v.object({\n number: v.number(),\n class: v.number(),\n subclass: v.number(),\n protocol: v.number(),\n num_endpoints: v.number(),\n});\nexport type UsbInterface = v.InferOutput<typeof usbInterface>;\n\nconst usbDevice = v.object({\n vendor_id: v.number(),\n product_id: v.number(),\n device_class: v.number(),\n device_subclass: v.number(),\n device_protocol: v.number(),\n usb_version: v.string(),\n speed: v.string(),\n manufacturer: v.optional(v.nullable(v.string())),\n product: v.optional(v.nullable(v.string())),\n serial_number: v.optional(v.nullable(v.string())),\n bus: v.number(),\n port: v.number(),\n address: v.number(),\n num_configurations: v.number(),\n interfaces: v.array(usbInterface),\n});\nexport type UsbDevice = v.InferOutput<typeof usbDevice>;\n\nconst usbState = v.object({ devices: v.array(usbDevice) });\nexport type UsbState = v.InferOutput<typeof usbState>;\n\n/** @hideconstructor */\nexport class ComApi {\n constructor(private readonly fetch: UpFetch) {}\n\n /**\n * Resets the communication interfaces.\n */\n reset(): Promise<void> {\n return this.fetch('/com/reset', { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Access a specific CAN interface by id.\n * @param id The CAN interface id.\n * @returns The CAN instance.\n */\n can(id: number): Can {\n return new Can(this.fetch, id);\n }\n\n /**\n * Access a specific RS232 interface by id.\n * @param id The RS232 interface id.\n * @returns The RS232 instance.\n */\n rs232(id: number): Rs232 {\n return new Rs232(this.fetch, id);\n }\n\n /**\n * Access a specific RS485 interface by id.\n * @param id The RS485 interface id.\n * @returns The RS485 instance.\n */\n rs485(id: number): Rs485 {\n return new Rs485(this.fetch, id);\n }\n\n /**\n * Access a specific SPI interface by id.\n * @param id The SPI interface id.\n * @returns The SPI instance.\n */\n spi(id: number): Spi {\n return new Spi(this.fetch, id);\n }\n\n /**\n * Access a specific I2C interface by id.\n * @param id The I2C interface id.\n * @returns The I2C instance.\n */\n i2c(id: number): I2c {\n return new I2c(this.fetch, id);\n }\n\n /**\n * Access a specific UART interface by id.\n * @param id The UART interface id.\n * @returns The UART instance.\n */\n uart(id: number): Uart {\n return new Uart(this.fetch, id);\n }\n\n /**\n * Access a specific USB interface by id.\n * @param id The USB interface id.\n * @returns The ComUsb instance.\n */\n usb(id: number): ComUsb {\n return new ComUsb(this.fetch, id);\n }\n}\n\n/** @hideconstructor */\nexport class ComUsb {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Returns the current state of the USB port, including all connected devices.\n * @returns The USB port state with device information.\n */\n state(): Promise<UsbState> {\n return this.fetch(`/com/usb/${this.id}/state`, { schema: usbState });\n }\n}\n\n/** @hideconstructor */\nexport class Can {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Configures the CAN interface.\n * @param config The configuration to apply.\n * @returns The updated configuration.\n */\n configure(config: CanConfigPatch): Promise<CanConfig> {\n return this.fetch(`/com/can/${this.id}/config`, {\n method: 'PATCH',\n body: v.parse(canConfigPatch, config),\n schema: canConfig,\n });\n }\n\n /**\n * Enables the CAN interface.\n * @param config Optional configuration to apply while enabling.\n * @returns The updated configuration.\n */\n enable(config: CanEnableConfig = {}): Promise<CanConfig> {\n return this.configure({ ...config, enabled: true });\n }\n\n /**\n * Disables the CAN interface.\n * @returns The updated configuration.\n */\n disable(): Promise<CanConfig> {\n return this.configure({ enabled: false });\n }\n\n /**\n * Transmits one or more frames over the CAN interface.\n *\n * Each frame may carry an optional `timeout` (milliseconds, 1-5000) bounding how\n * long the device waits for a free hardware TX buffer before that frame fails.\n * Omit it to use the server default (1000 ms).\n * @param data A single frame, or an array of frames to transmit as a batch.\n * @returns The transmitted frame, or the array of transmitted frames, mirroring the input.\n */\n tx(data: CanFrameInput): Promise<CanFrame>;\n tx(data: CanFrameInput[]): Promise<CanFrame[]>;\n tx(data: CanFrameInput | CanFrameInput[]): Promise<CanFrame | CanFrame[]> {\n if (Array.isArray(data)) {\n return this.fetch(`/com/can/${this.id}/write`, {\n method: 'POST',\n body: data.map((frame) => v.parse(canFrame, frame)),\n schema: v.array(canFrame),\n });\n }\n return this.fetch(`/com/can/${this.id}/write`, {\n method: 'POST',\n body: v.parse(canFrame, data),\n schema: canFrame,\n });\n }\n\n /**\n * Starts receiving data over the CAN interface.\n */\n start_rx(): Promise<void> {\n return this.fetch(`/com/can/${this.id}/start_rx`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Stops receiving data over the CAN interface.\n */\n stop_rx(): Promise<void> {\n return this.fetch(`/com/can/${this.id}/stop_rx`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Reads data from the CAN interface.\n * @returns An array of can frames.\n */\n rx(): Promise<CanFrame[]> {\n return this.fetch(`/com/can/${this.id}/read`, { schema: v.array(canFrame) });\n }\n}\n\n/** @hideconstructor */\nexport class Rs232 {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Configures the RS232 interface.\n * @param config The configuration to apply.\n * @returns The updated configuration.\n */\n configure(config: Rs232ConfigPatch): Promise<Rs232Config> {\n return this.fetch(`/com/rs232/${this.id}/config`, {\n method: 'PATCH',\n body: v.parse(rs232ConfigPatch, config),\n schema: rs232Config,\n });\n }\n\n /**\n * Enables the RS232 interface.\n * @param config Optional configuration to apply while enabling.\n * @returns The updated configuration.\n */\n enable(config: Rs232EnableConfig = {}): Promise<Rs232Config> {\n return this.configure({ ...config, enabled: true });\n }\n\n /**\n * Disables the RS232 interface.\n * @returns The updated configuration.\n */\n disable(): Promise<Rs232Config> {\n return this.configure({ enabled: false });\n }\n\n /**\n * Transmits data over the RS232 interface.\n * @param data The data to transmit (byte array or string).\n * @returns The transmitted data.\n */\n tx(data: SerialDataInput): Promise<SerialData> {\n return this.fetch(`/com/rs232/${this.id}/write`, {\n method: 'POST',\n body: v.parse(serialData, data),\n schema: serialData,\n });\n }\n\n /**\n * Starts receiving data over the RS232 interface.\n */\n start_rx(): Promise<void> {\n return this.fetch(`/com/rs232/${this.id}/start_rx`, {\n method: 'POST',\n parseResponse: () => {},\n });\n }\n\n /**\n * Stops receiving data over the RS232 interface.\n */\n stop_rx(): Promise<void> {\n return this.fetch(`/com/rs232/${this.id}/stop_rx`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Reads data from the RS232 interface.\n * @returns An array containing the received data.\n */\n rx(): Promise<SerialData> {\n return this.fetch(`/com/rs232/${this.id}/read`, { schema: serialData });\n }\n}\n\n/** @hideconstructor */\nexport class Rs485 {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Configures the RS485 interface.\n * @param config The configuration to apply.\n * @returns The updated configuration.\n */\n configure(config: Rs485ConfigPatch): Promise<Rs485Config> {\n return this.fetch(`/com/rs485/${this.id}/config`, {\n method: 'PATCH',\n body: v.parse(rs485ConfigPatch, config),\n schema: rs485Config,\n });\n }\n\n /**\n * Enables the RS485 interface.\n * @param config Optional configuration to apply while enabling.\n * @returns The updated configuration.\n */\n enable(config: Rs485EnableConfig = {}): Promise<Rs485Config> {\n return this.configure({ ...config, enabled: true });\n }\n\n /**\n * Disables the RS485 interface.\n * @returns The updated configuration.\n */\n disable(): Promise<Rs485Config> {\n return this.configure({ enabled: false });\n }\n\n /**\n * Transmits data over the RS485 interface.\n * @param data The data to transmit (byte array or string).\n * @returns The transmitted data.\n */\n tx(data: SerialDataInput): Promise<SerialData> {\n return this.fetch(`/com/rs485/${this.id}/write`, {\n method: 'POST',\n body: v.parse(serialData, data),\n schema: serialData,\n });\n }\n\n /**\n * Starts receiving data over the RS485 interface.\n */\n start_rx(): Promise<void> {\n return this.fetch(`/com/rs485/${this.id}/start_rx`, {\n method: 'POST',\n parseResponse: () => {},\n });\n }\n\n /**\n * Stops receiving data over the RS485 interface.\n */\n stop_rx(): Promise<void> {\n return this.fetch(`/com/rs485/${this.id}/stop_rx`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Reads data from the RS485 interface.\n * @returns The received data.\n */\n rx(): Promise<SerialData> {\n return this.fetch(`/com/rs485/${this.id}/read`, { schema: serialData });\n }\n}\n\n/** @hideconstructor */\nexport class Spi {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Configures the SPI interface.\n * @param config The configuration to apply.\n * @returns The updated configuration.\n */\n configure(config: SpiConfigPatch): Promise<SpiConfig> {\n return this.fetch(`/com/spi/${this.id}/config`, {\n method: 'PATCH',\n body: v.parse(spiConfigPatch, config),\n schema: spiConfig,\n });\n }\n\n /**\n * Enables the SPI interface.\n * @param config Optional configuration to apply while enabling.\n * @returns The updated configuration.\n */\n enable(config: SpiEnableConfig = {}): Promise<SpiConfig> {\n return this.configure({ ...config, enabled: true });\n }\n\n /**\n * Disables the SPI interface.\n * @returns The updated configuration.\n */\n disable(): Promise<SpiConfig> {\n return this.configure({ enabled: false });\n }\n\n /**\n * Transmits data over the SPI interface and receives the response.\n * @param data The data to transmit (byte array or string).\n * @returns The received response data.\n */\n trx(data: SerialDataInput): Promise<SerialData> {\n return this.fetch(`/com/spi/${this.id}/write_read`, {\n method: 'POST',\n body: v.parse(serialData, data),\n schema: serialData,\n });\n }\n}\n\n/** @hideconstructor */\nexport class I2c {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Configures the I2C interface.\n * @param config The configuration to apply.\n * @returns The updated configuration.\n */\n configure(config: I2cConfigPatch): Promise<I2cConfig> {\n return this.fetch(`/com/i2c/${this.id}/config`, {\n method: 'PATCH',\n body: v.parse(i2cConfigPatch, config),\n schema: i2cConfig,\n });\n }\n\n /**\n * Enables the I2C interface.\n * @param config Optional configuration to apply while enabling.\n * @returns The updated configuration.\n */\n enable(config: I2cEnableConfig = {}): Promise<I2cConfig> {\n return this.configure({ ...config, enabled: true });\n }\n\n /**\n * Disables the I2C interface.\n * @returns The updated configuration.\n */\n disable(): Promise<I2cConfig> {\n return this.configure({ enabled: false });\n }\n\n tx(transaction: I2cTransactionWrite): Promise<number> {\n return this.fetch(`/com/i2c/${this.id}/write`, {\n method: 'POST',\n body: v.parse(i2cTransactionWrite, transaction),\n parseResponse: async (response) => {\n const text = await response.text();\n return parseInt(text, 10);\n },\n });\n }\n\n rx(transaction: I2cTransactionRead): Promise<SerialData> {\n return this.fetch(`/com/i2c/${this.id}/read`, {\n method: 'POST',\n body: v.parse(i2cTransactionRead, transaction),\n schema: serialData,\n });\n }\n}\n\n/** @hideconstructor */\nexport class Uart {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Configures the UART interface.\n * @param config The configuration to apply.\n * @returns The updated configuration.\n */\n configure(config: UartConfigPatch): Promise<UartConfig> {\n return this.fetch(`/com/uart/${this.id}/config`, {\n method: 'PATCH',\n body: v.parse(uartConfigPatch, config),\n schema: uartConfig,\n });\n }\n\n /**\n * Enables the UART interface.\n * @param config Optional configuration to apply while enabling.\n * @returns The updated configuration.\n */\n enable(config: UartEnableConfig = {}): Promise<UartConfig> {\n return this.configure({ ...config, enabled: true });\n }\n\n /**\n * Disables the UART interface.\n * @returns The updated configuration.\n */\n disable(): Promise<UartConfig> {\n return this.configure({ enabled: false });\n }\n\n /**\n * Transmits data over the UART interface.\n * @param data The data to transmit (byte array or string).\n * @returns The received response data.\n */\n tx(data: SerialDataInput): Promise<SerialData> {\n return this.fetch(`/com/uart/${this.id}/write`, {\n method: 'POST',\n body: v.parse(serialData, data),\n schema: serialData,\n });\n }\n\n /**\n * Starts receiving data over the UART interface.\n */\n start_rx(): Promise<void> {\n return this.fetch(`/com/uart/${this.id}/start_rx`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Stops receiving data over the UART interface.\n */\n stop_rx(): Promise<void> {\n return this.fetch(`/com/uart/${this.id}/stop_rx`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Reads data from the UART interface.\n * @returns The received data.\n */\n rx(): Promise<SerialData> {\n return this.fetch(`/com/uart/${this.id}/read`, { schema: serialData });\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"com.mjs","names":[],"sources":["../src/api/com.ts"],"sourcesContent":["import type { UpFetch } from 'up-fetch';\nimport * as v from 'valibot';\n\nexport const canFrame = v.object({\n id: v.number(),\n extended_id: v.optional(v.boolean(), false),\n rtr: v.optional(v.boolean(), false),\n /** RTR-only: requested data length (0-8). The server rejects `dlc` on data frames and non-empty `data` on RTR frames. */\n dlc: v.optional(v.pipe(v.number(), v.integer(), v.minValue(0), v.maxValue(8))),\n data: v.optional(v.pipe(v.array(v.number()), v.minLength(0), v.maxLength(8)), []),\n /** Transmit-only: max ms to wait for a free TX buffer. Omit for the server default (1000 ms). */\n timeout: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(5000))),\n});\nexport type CanFrame = v.InferOutput<typeof canFrame>;\nexport type CanFrameInput = v.InferInput<typeof canFrame>;\n\nconst serialData = v.pipe(\n // 1. Validate Input: String OR Array of Bytes (0-255), both max length 65536\n // Server enforces per-endpoint limits (e.g. SPI max transfer = 65536 bytes)\n v.union([\n v.pipe(v.string(), v.maxLength(65536)),\n v.pipe(v.array(v.pipe(v.number(), v.minValue(0), v.maxValue(255))), v.maxLength(65536)),\n ]),\n // 2. Transform: Convert String to ASCII bytes or pass Array as is\n v.transform((input) => {\n if (typeof input === 'string') {\n return input.split('').map((char) => {\n const code = char.charCodeAt(0);\n // Replace UTF8/Non-ASCII (>127) with \"?\" (ASCII 63)\n return code > 127 ? 63 : code;\n });\n }\n return input;\n }),\n);\nexport type SerialData = v.InferOutput<typeof serialData>;\nexport type SerialDataInput = v.InferInput<typeof serialData>;\n\nconst i2cTransactionBase = v.object({\n address: v.number(),\n start: v.boolean(),\n stop: v.boolean(),\n nack_last_byte: v.boolean(),\n});\nconst i2cTransactionRead = v.intersect([\n v.partial(i2cTransactionBase, ['start', 'stop', 'nack_last_byte']),\n v.object({ length: v.pipe(v.number(), v.minValue(1), v.maxValue(1024)) }),\n]);\ntype I2cTransactionRead = v.InferOutput<typeof i2cTransactionRead>;\nconst i2cTransactionWrite = v.intersect([\n v.partial(i2cTransactionBase, ['start', 'stop', 'nack_last_byte']),\n v.object({ data: serialData }),\n]);\ntype I2cTransactionWrite = v.InferOutput<typeof i2cTransactionWrite>;\n\nexport const canConfig = v.object({\n enabled: v.boolean(),\n baud_rate: v.picklist([5_000, 10_000, 20_000, 31_250, 33_000, 40_000, 50_000, 80_000, 83_300,\n 95_000, 100_000, 125_000, 200_000, 250_000, 500_000, 1_000_000]),\n termination_resistors: v.boolean(),\n rx_filter: v.object({ extended_id: v.boolean(), id: v.number(), mask: v.number() }),\n});\nexport type CanConfig = v.InferOutput<typeof canConfig>;\nconst canConfigPatch = v.partial(canConfig);\nexport type CanConfigPatch = v.InferOutput<typeof canConfigPatch>;\nconst canEnableConfig = v.omit(canConfigPatch, ['enabled']);\nexport type CanEnableConfig = v.InferOutput<typeof canEnableConfig>;\n\nconst serialParity = v.picklist(['none', 'odd', 'even', 'mark', 'space']);\nexport type SerialParity = v.InferOutput<typeof serialParity>;\n\nconst serialStopBits = v.picklist(['1', '1.5', '2']);\nexport type SerialStopBits = v.InferOutput<typeof serialStopBits>;\n\nexport const rs232Config = v.object({\n enabled: v.boolean(),\n baud_rate: v.pipe(v.number(), v.minValue(50), v.maxValue(1_000_000)),\n data_bits: v.pipe(v.number(), v.minValue(7), v.maxValue(8)),\n stop_bits: serialStopBits,\n parity: serialParity,\n});\nexport type Rs232Config = v.InferOutput<typeof rs232Config>;\nconst rs232ConfigPatch = v.partial(rs232Config);\nexport type Rs232ConfigPatch = v.InferOutput<typeof rs232ConfigPatch>;\nconst rs232EnableConfig = v.omit(rs232ConfigPatch, ['enabled']);\nexport type Rs232EnableConfig = v.InferOutput<typeof rs232EnableConfig>;\n\nexport const rs485Config = v.object({\n enabled: v.boolean(),\n baud_rate: v.pipe(v.number(), v.minValue(300), v.maxValue(20_000_000)),\n data_bits: v.pipe(v.number(), v.minValue(7), v.maxValue(8)),\n stop_bits: serialStopBits,\n parity: serialParity,\n termination_resistors: v.boolean(),\n});\nexport type Rs485Config = v.InferOutput<typeof rs485Config>;\nconst rs485ConfigPatch = v.partial(rs485Config);\nexport type Rs485ConfigPatch = v.InferOutput<typeof rs485ConfigPatch>;\nconst rs485EnableConfig = v.omit(rs485ConfigPatch, ['enabled']);\nexport type Rs485EnableConfig = v.InferOutput<typeof rs485EnableConfig>;\n\nexport const spiConfig = v.object({\n enabled: v.boolean(),\n baud_rate: v.pipe(v.number(), v.minValue(300), v.maxValue(10_000_000)),\n vcc: v.pipe(v.number(), v.minValue(1.6), v.maxValue(5)),\n mode: v.pipe(v.number(), v.minValue(0), v.maxValue(3)),\n});\nexport type SpiConfig = v.InferOutput<typeof spiConfig>;\nconst spiConfigPatch = v.partial(spiConfig);\nexport type SpiConfigPatch = v.InferOutput<typeof spiConfigPatch>;\nconst spiEnableConfig = v.omit(spiConfigPatch, ['enabled']);\nexport type SpiEnableConfig = v.InferOutput<typeof spiEnableConfig>;\n\nexport const i2cConfig = v.object({\n enabled: v.boolean(),\n baud_rate: v.picklist([100_000, 400_000, 1_000_000]),\n vcc: v.pipe(v.number(), v.minValue(1.6), v.maxValue(5)),\n});\nexport type I2cConfig = v.InferOutput<typeof i2cConfig>;\nconst i2cConfigPatch = v.partial(i2cConfig);\nexport type I2cConfigPatch = v.InferOutput<typeof i2cConfigPatch>;\nconst i2cEnableConfig = v.omit(i2cConfigPatch, ['enabled']);\nexport type I2cEnableConfig = v.InferOutput<typeof i2cEnableConfig>;\n\nexport const uartConfig = v.object({\n enabled: v.boolean(),\n baud_rate: v.pipe(v.number(), v.minValue(300), v.maxValue(12_000_000)),\n vcc: v.pipe(v.number(), v.minValue(1.6), v.maxValue(5)),\n data_bits: v.pipe(v.number(), v.minValue(7), v.maxValue(8)),\n stop_bits: serialStopBits,\n parity: serialParity,\n});\nexport type UartConfig = v.InferOutput<typeof uartConfig>;\nconst uartConfigPatch = v.partial(uartConfig);\nexport type UartConfigPatch = v.InferOutput<typeof uartConfigPatch>;\nconst uartEnableConfig = v.omit(uartConfigPatch, ['enabled']);\nexport type UartEnableConfig = v.InferOutput<typeof uartEnableConfig>;\n\nconst usbInterface = v.object({\n number: v.number(),\n class: v.number(),\n subclass: v.number(),\n protocol: v.number(),\n num_endpoints: v.number(),\n});\nexport type UsbInterface = v.InferOutput<typeof usbInterface>;\n\nconst usbDevice = v.object({\n vendor_id: v.number(),\n product_id: v.number(),\n device_class: v.number(),\n device_subclass: v.number(),\n device_protocol: v.number(),\n usb_version: v.string(),\n speed: v.string(),\n manufacturer: v.optional(v.nullable(v.string())),\n product: v.optional(v.nullable(v.string())),\n serial_number: v.optional(v.nullable(v.string())),\n bus: v.number(),\n port: v.number(),\n address: v.number(),\n num_configurations: v.number(),\n interfaces: v.array(usbInterface),\n});\nexport type UsbDevice = v.InferOutput<typeof usbDevice>;\n\nconst usbState = v.object({ devices: v.array(usbDevice) });\nexport type UsbState = v.InferOutput<typeof usbState>;\n\n/** @hideconstructor */\nexport class ComApi {\n constructor(private readonly fetch: UpFetch) {}\n\n /**\n * Resets the communication interfaces.\n */\n reset(): Promise<void> {\n return this.fetch('/com/reset', { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Access a specific CAN interface by id.\n * @param id The CAN interface id.\n * @returns The CAN instance.\n */\n can(id: number): Can {\n return new Can(this.fetch, id);\n }\n\n /**\n * Access a specific RS232 interface by id.\n * @param id The RS232 interface id.\n * @returns The RS232 instance.\n */\n rs232(id: number): Rs232 {\n return new Rs232(this.fetch, id);\n }\n\n /**\n * Access a specific RS485 interface by id.\n * @param id The RS485 interface id.\n * @returns The RS485 instance.\n */\n rs485(id: number): Rs485 {\n return new Rs485(this.fetch, id);\n }\n\n /**\n * Access a specific SPI interface by id.\n * @param id The SPI interface id.\n * @returns The SPI instance.\n */\n spi(id: number): Spi {\n return new Spi(this.fetch, id);\n }\n\n /**\n * Access a specific I2C interface by id.\n * @param id The I2C interface id.\n * @returns The I2C instance.\n */\n i2c(id: number): I2c {\n return new I2c(this.fetch, id);\n }\n\n /**\n * Access a specific UART interface by id.\n * @param id The UART interface id.\n * @returns The UART instance.\n */\n uart(id: number): Uart {\n return new Uart(this.fetch, id);\n }\n\n /**\n * Access a specific USB interface by id.\n * @param id The USB interface id.\n * @returns The ComUsb instance.\n */\n usb(id: number): ComUsb {\n return new ComUsb(this.fetch, id);\n }\n}\n\n/** @hideconstructor */\nexport class ComUsb {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Returns the current state of the USB port, including all connected devices.\n * @returns The USB port state with device information.\n */\n state(): Promise<UsbState> {\n return this.fetch(`/com/usb/${this.id}/state`, { schema: usbState });\n }\n}\n\n/** @hideconstructor */\nexport class Can {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Configures the CAN interface.\n * @param config The configuration to apply.\n * @returns The updated configuration.\n */\n configure(config: CanConfigPatch): Promise<CanConfig> {\n return this.fetch(`/com/can/${this.id}/config`, {\n method: 'PATCH',\n body: v.parse(canConfigPatch, config),\n schema: canConfig,\n });\n }\n\n /**\n * Enables the CAN interface.\n * @param config Optional configuration to apply while enabling.\n * @returns The updated configuration.\n */\n enable(config: CanEnableConfig = {}): Promise<CanConfig> {\n return this.configure({ ...config, enabled: true });\n }\n\n /**\n * Disables the CAN interface.\n * @returns The updated configuration.\n */\n disable(): Promise<CanConfig> {\n return this.configure({ enabled: false });\n }\n\n /**\n * Transmits one or more frames over the CAN interface.\n *\n * Each frame may carry an optional `timeout` (milliseconds, 1-5000) bounding how\n * long the device waits for a free hardware TX buffer before that frame fails.\n * Omit it to use the server default (1000 ms).\n *\n * RTR frames set `dlc` (0-8) to request a data length instead of carrying `data`.\n * @param data A single frame, or an array of frames to transmit as a batch.\n * @returns The transmitted frame, or the array of transmitted frames, mirroring the input.\n */\n tx(data: CanFrameInput): Promise<CanFrame>;\n tx(data: CanFrameInput[]): Promise<CanFrame[]>;\n tx(data: CanFrameInput | CanFrameInput[]): Promise<CanFrame | CanFrame[]> {\n if (Array.isArray(data)) {\n return this.fetch(`/com/can/${this.id}/write`, {\n method: 'POST',\n body: data.map((frame) => v.parse(canFrame, frame)),\n schema: v.array(canFrame),\n });\n }\n return this.fetch(`/com/can/${this.id}/write`, {\n method: 'POST',\n body: v.parse(canFrame, data),\n schema: canFrame,\n });\n }\n\n /**\n * Starts receiving data over the CAN interface.\n */\n start_rx(): Promise<void> {\n return this.fetch(`/com/can/${this.id}/start_rx`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Stops receiving data over the CAN interface.\n */\n stop_rx(): Promise<void> {\n return this.fetch(`/com/can/${this.id}/stop_rx`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Reads data from the CAN interface.\n * @returns An array of can frames.\n */\n rx(): Promise<CanFrame[]> {\n return this.fetch(`/com/can/${this.id}/read`, { schema: v.array(canFrame) });\n }\n}\n\n/** @hideconstructor */\nexport class Rs232 {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Configures the RS232 interface.\n * @param config The configuration to apply.\n * @returns The updated configuration.\n */\n configure(config: Rs232ConfigPatch): Promise<Rs232Config> {\n return this.fetch(`/com/rs232/${this.id}/config`, {\n method: 'PATCH',\n body: v.parse(rs232ConfigPatch, config),\n schema: rs232Config,\n });\n }\n\n /**\n * Enables the RS232 interface.\n * @param config Optional configuration to apply while enabling.\n * @returns The updated configuration.\n */\n enable(config: Rs232EnableConfig = {}): Promise<Rs232Config> {\n return this.configure({ ...config, enabled: true });\n }\n\n /**\n * Disables the RS232 interface.\n * @returns The updated configuration.\n */\n disable(): Promise<Rs232Config> {\n return this.configure({ enabled: false });\n }\n\n /**\n * Transmits data over the RS232 interface.\n * @param data The data to transmit (byte array or string).\n * @returns The transmitted data.\n */\n tx(data: SerialDataInput): Promise<SerialData> {\n return this.fetch(`/com/rs232/${this.id}/write`, {\n method: 'POST',\n body: v.parse(serialData, data),\n schema: serialData,\n });\n }\n\n /**\n * Starts receiving data over the RS232 interface.\n */\n start_rx(): Promise<void> {\n return this.fetch(`/com/rs232/${this.id}/start_rx`, {\n method: 'POST',\n parseResponse: () => {},\n });\n }\n\n /**\n * Stops receiving data over the RS232 interface.\n */\n stop_rx(): Promise<void> {\n return this.fetch(`/com/rs232/${this.id}/stop_rx`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Reads data from the RS232 interface.\n * @returns An array containing the received data.\n */\n rx(): Promise<SerialData> {\n return this.fetch(`/com/rs232/${this.id}/read`, { schema: serialData });\n }\n}\n\n/** @hideconstructor */\nexport class Rs485 {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Configures the RS485 interface.\n * @param config The configuration to apply.\n * @returns The updated configuration.\n */\n configure(config: Rs485ConfigPatch): Promise<Rs485Config> {\n return this.fetch(`/com/rs485/${this.id}/config`, {\n method: 'PATCH',\n body: v.parse(rs485ConfigPatch, config),\n schema: rs485Config,\n });\n }\n\n /**\n * Enables the RS485 interface.\n * @param config Optional configuration to apply while enabling.\n * @returns The updated configuration.\n */\n enable(config: Rs485EnableConfig = {}): Promise<Rs485Config> {\n return this.configure({ ...config, enabled: true });\n }\n\n /**\n * Disables the RS485 interface.\n * @returns The updated configuration.\n */\n disable(): Promise<Rs485Config> {\n return this.configure({ enabled: false });\n }\n\n /**\n * Transmits data over the RS485 interface.\n * @param data The data to transmit (byte array or string).\n * @returns The transmitted data.\n */\n tx(data: SerialDataInput): Promise<SerialData> {\n return this.fetch(`/com/rs485/${this.id}/write`, {\n method: 'POST',\n body: v.parse(serialData, data),\n schema: serialData,\n });\n }\n\n /**\n * Starts receiving data over the RS485 interface.\n */\n start_rx(): Promise<void> {\n return this.fetch(`/com/rs485/${this.id}/start_rx`, {\n method: 'POST',\n parseResponse: () => {},\n });\n }\n\n /**\n * Stops receiving data over the RS485 interface.\n */\n stop_rx(): Promise<void> {\n return this.fetch(`/com/rs485/${this.id}/stop_rx`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Reads data from the RS485 interface.\n * @returns The received data.\n */\n rx(): Promise<SerialData> {\n return this.fetch(`/com/rs485/${this.id}/read`, { schema: serialData });\n }\n}\n\n/** @hideconstructor */\nexport class Spi {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Configures the SPI interface.\n * @param config The configuration to apply.\n * @returns The updated configuration.\n */\n configure(config: SpiConfigPatch): Promise<SpiConfig> {\n return this.fetch(`/com/spi/${this.id}/config`, {\n method: 'PATCH',\n body: v.parse(spiConfigPatch, config),\n schema: spiConfig,\n });\n }\n\n /**\n * Enables the SPI interface.\n * @param config Optional configuration to apply while enabling.\n * @returns The updated configuration.\n */\n enable(config: SpiEnableConfig = {}): Promise<SpiConfig> {\n return this.configure({ ...config, enabled: true });\n }\n\n /**\n * Disables the SPI interface.\n * @returns The updated configuration.\n */\n disable(): Promise<SpiConfig> {\n return this.configure({ enabled: false });\n }\n\n /**\n * Transmits data over the SPI interface and receives the response.\n * @param data The data to transmit (byte array or string).\n * @returns The received response data.\n */\n trx(data: SerialDataInput): Promise<SerialData> {\n return this.fetch(`/com/spi/${this.id}/write_read`, {\n method: 'POST',\n body: v.parse(serialData, data),\n schema: serialData,\n });\n }\n}\n\n/** @hideconstructor */\nexport class I2c {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Configures the I2C interface.\n * @param config The configuration to apply.\n * @returns The updated configuration.\n */\n configure(config: I2cConfigPatch): Promise<I2cConfig> {\n return this.fetch(`/com/i2c/${this.id}/config`, {\n method: 'PATCH',\n body: v.parse(i2cConfigPatch, config),\n schema: i2cConfig,\n });\n }\n\n /**\n * Enables the I2C interface.\n * @param config Optional configuration to apply while enabling.\n * @returns The updated configuration.\n */\n enable(config: I2cEnableConfig = {}): Promise<I2cConfig> {\n return this.configure({ ...config, enabled: true });\n }\n\n /**\n * Disables the I2C interface.\n * @returns The updated configuration.\n */\n disable(): Promise<I2cConfig> {\n return this.configure({ enabled: false });\n }\n\n tx(transaction: I2cTransactionWrite): Promise<number> {\n return this.fetch(`/com/i2c/${this.id}/write`, {\n method: 'POST',\n body: v.parse(i2cTransactionWrite, transaction),\n parseResponse: async (response) => {\n const text = await response.text();\n return parseInt(text, 10);\n },\n });\n }\n\n rx(transaction: I2cTransactionRead): Promise<SerialData> {\n return this.fetch(`/com/i2c/${this.id}/read`, {\n method: 'POST',\n body: v.parse(i2cTransactionRead, transaction),\n schema: serialData,\n });\n }\n}\n\n/** @hideconstructor */\nexport class Uart {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Configures the UART interface.\n * @param config The configuration to apply.\n * @returns The updated configuration.\n */\n configure(config: UartConfigPatch): Promise<UartConfig> {\n return this.fetch(`/com/uart/${this.id}/config`, {\n method: 'PATCH',\n body: v.parse(uartConfigPatch, config),\n schema: uartConfig,\n });\n }\n\n /**\n * Enables the UART interface.\n * @param config Optional configuration to apply while enabling.\n * @returns The updated configuration.\n */\n enable(config: UartEnableConfig = {}): Promise<UartConfig> {\n return this.configure({ ...config, enabled: true });\n }\n\n /**\n * Disables the UART interface.\n * @returns The updated configuration.\n */\n disable(): Promise<UartConfig> {\n return this.configure({ enabled: false });\n }\n\n /**\n * Transmits data over the UART interface.\n * @param data The data to transmit (byte array or string).\n * @returns The received response data.\n */\n tx(data: SerialDataInput): Promise<SerialData> {\n return this.fetch(`/com/uart/${this.id}/write`, {\n method: 'POST',\n body: v.parse(serialData, data),\n schema: serialData,\n });\n }\n\n /**\n * Starts receiving data over the UART interface.\n */\n start_rx(): Promise<void> {\n return this.fetch(`/com/uart/${this.id}/start_rx`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Stops receiving data over the UART interface.\n */\n stop_rx(): Promise<void> {\n return this.fetch(`/com/uart/${this.id}/stop_rx`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Reads data from the UART interface.\n * @returns The received data.\n */\n rx(): Promise<SerialData> {\n return this.fetch(`/com/uart/${this.id}/read`, { schema: serialData });\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ const e=require("./rolldown-runtime-CMqjfN_6.cjs");let t=require("valibot");t=e.t(t,1);const n=t.pipe(t.number(),t.minValue(-25),t.maxValue(25)),r=t.pipe(t.number(),t.minValue(0),t.maxValue(24)),i=t.pipe(t.union([t.boolean(),t.number()]),t.toBoolean());Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return n}});
2
+ //# sourceMappingURL=common-BSrNhbq_.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"common-BSabSaAU.cjs","names":["v"],"sources":["../src/api/common.ts"],"sourcesContent":["import * as v from 'valibot';\n\nexport const analogLevel = v.pipe(v.number(), v.minValue(-25), v.maxValue(25));\nexport const analogOutputLevel = v.pipe(v.number(), v.minValue(0), v.maxValue(24));\nexport const digitalLevel = v.pipe(v.union([v.boolean(), v.number()]), v.toBoolean());\n\nexport type AnalogLevel = v.InferOutput<typeof analogLevel>;\nexport type AnalogOutputLevel = v.InferOutput<typeof analogOutputLevel>;\nexport type DigitalLevel = v.InferInput<typeof digitalLevel>;\n"],"mappings":"4EAEA,MAAa,EAAcA,EAAE,KAAKA,EAAE,OAAO,EAAGA,EAAE,SAAS,GAAG,EAAGA,EAAE,SAAS,EAAE,CAAC,EAChE,EAAoBA,EAAE,KAAKA,EAAE,OAAO,EAAGA,EAAE,SAAS,CAAC,EAAGA,EAAE,SAAS,EAAE,CAAC,EACpE,EAAeA,EAAE,KAAKA,EAAE,MAAM,CAACA,EAAE,QAAQ,EAAGA,EAAE,OAAO,CAAC,CAAC,EAAGA,EAAE,UAAU,CAAC"}
1
+ {"version":3,"file":"common-BSrNhbq_.cjs","names":["v"],"sources":["../src/api/common.ts"],"sourcesContent":["import * as v from 'valibot';\n\nexport const analogLevel = v.pipe(v.number(), v.minValue(-25), v.maxValue(25));\nexport const analogOutputLevel = v.pipe(v.number(), v.minValue(0), v.maxValue(24));\nexport const digitalLevel = v.pipe(v.union([v.boolean(), v.number()]), v.toBoolean());\n\nexport type AnalogLevel = v.InferOutput<typeof analogLevel>;\nexport type AnalogOutputLevel = v.InferOutput<typeof analogOutputLevel>;\nexport type DigitalLevel = v.InferInput<typeof digitalLevel>;\n"],"mappings":"uFAEA,MAAa,EAAcA,EAAE,KAAKA,EAAE,OAAO,EAAGA,EAAE,SAAS,GAAG,EAAGA,EAAE,SAAS,EAAE,CAAC,EAChE,EAAoBA,EAAE,KAAKA,EAAE,OAAO,EAAGA,EAAE,SAAS,CAAC,EAAGA,EAAE,SAAS,EAAE,CAAC,EACpE,EAAeA,EAAE,KAAKA,EAAE,MAAM,CAACA,EAAE,QAAQ,EAAGA,EAAE,OAAO,CAAC,CAAC,EAAGA,EAAE,UAAU,CAAC"}
@@ -1,8 +1,7 @@
1
1
  import * as v from "valibot";
2
-
3
2
  //#region src/api/common.d.ts
4
3
  declare const analogOutputLevel: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 24, undefined>]>;
5
4
  type AnalogOutputLevel = v.InferOutput<typeof analogOutputLevel>;
6
5
  //#endregion
7
6
  export { AnalogOutputLevel as t };
8
- //# sourceMappingURL=common-BY1vXz1l.d.cts.map
7
+ //# sourceMappingURL=common-Cv6nZZS9.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common-Cv6nZZS9.d.cts","names":[],"sources":["../src/api/common.ts"],"mappings":";;cAGa,mBAAiB,EAAA,yBAAA,EAAA,yBAAA,EAAA,sCAAA,EAAA;KAIlB,oBAAoB,EAAE,mBAAmB"}
@@ -1,8 +1,7 @@
1
1
  import * as v from "valibot";
2
-
3
2
  //#region src/api/common.d.ts
4
3
  declare const analogOutputLevel: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 24, undefined>]>;
5
4
  type AnalogOutputLevel = v.InferOutput<typeof analogOutputLevel>;
6
5
  //#endregion
7
6
  export { AnalogOutputLevel as t };
8
- //# sourceMappingURL=common-BY1vXz1l.d.mts.map
7
+ //# sourceMappingURL=common-Cv6nZZS9.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common-Cv6nZZS9.d.mts","names":[],"sources":["../src/api/common.ts"],"mappings":";;cAGa,mBAAiB,EAAA,yBAAA,EAAA,yBAAA,EAAA,sCAAA,EAAA;KAIlB,oBAAoB,EAAE,mBAAmB"}