webserial-core 1.0.8 → 1.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Core.d.ts +6 -2
- package/dist/Core.d.ts.map +1 -1
- package/dist/Devices.d.ts +6 -0
- package/dist/Devices.d.ts.map +1 -1
- package/dist/Dispatcher.d.ts +5 -0
- package/dist/Dispatcher.d.ts.map +1 -1
- package/dist/webserial-core.js +168 -114
- package/dist/webserial-core.umd.cjs +2 -2
- package/package.json +4 -4
package/dist/Core.d.ts
CHANGED
|
@@ -26,6 +26,8 @@ interface QueueData {
|
|
|
26
26
|
action: string;
|
|
27
27
|
}
|
|
28
28
|
type SerialData = {
|
|
29
|
+
aux_connecting: string;
|
|
30
|
+
connecting: boolean;
|
|
29
31
|
connected: boolean;
|
|
30
32
|
port: SerialPort | null;
|
|
31
33
|
last_action: string | null;
|
|
@@ -86,6 +88,7 @@ interface ICore {
|
|
|
86
88
|
set serialConfigPort(config_port: SerialOptions);
|
|
87
89
|
get serialConfigPort(): SerialOptions;
|
|
88
90
|
get isConnected(): boolean;
|
|
91
|
+
get isConnecting(): boolean;
|
|
89
92
|
get isDisconnected(): boolean;
|
|
90
93
|
get useRTSCTS(): boolean;
|
|
91
94
|
set useRTSCTS(value: boolean);
|
|
@@ -109,7 +112,7 @@ interface ICore {
|
|
|
109
112
|
set bypassSerialBytesConnection(value: boolean);
|
|
110
113
|
timeout(bytes: string[], event: string): Promise<void>;
|
|
111
114
|
disconnect(detail?: null): Promise<void>;
|
|
112
|
-
connect(): Promise<
|
|
115
|
+
connect(): Promise<boolean>;
|
|
113
116
|
serialDisconnect(): Promise<void>;
|
|
114
117
|
serialPortsSaved(ports: SerialPort[]): Promise<void>;
|
|
115
118
|
serialErrors(error: unknown | Error | DOMException): void;
|
|
@@ -158,6 +161,7 @@ export declare class Core extends Dispatcher implements ICore {
|
|
|
158
161
|
get useRTSCTS(): boolean;
|
|
159
162
|
set useRTSCTS(value: boolean);
|
|
160
163
|
get isConnected(): boolean;
|
|
164
|
+
get isConnecting(): boolean;
|
|
161
165
|
get isDisconnected(): boolean;
|
|
162
166
|
get deviceNumber(): number;
|
|
163
167
|
get uuid(): string;
|
|
@@ -179,7 +183,7 @@ export declare class Core extends Dispatcher implements ICore {
|
|
|
179
183
|
set bypassSerialBytesConnection(value: boolean);
|
|
180
184
|
timeout(bytes: string | Uint8Array | Array<string> | Array<number>, event: string): Promise<void>;
|
|
181
185
|
disconnect(detail?: null): Promise<void>;
|
|
182
|
-
connect(): Promise<
|
|
186
|
+
connect(): Promise<boolean>;
|
|
183
187
|
serialDisconnect(): Promise<void>;
|
|
184
188
|
getResponseAsArrayBuffer(): void;
|
|
185
189
|
getResponseAsArrayHex(): void;
|
package/dist/Core.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Core.d.ts","sourceRoot":"","sources":["../lib/Core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAI7C,UAAU,SAAS;IACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC;IAC1E,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,KAAK,gBAAgB,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,aAAa,CAAC;AAEnE,UAAU,cAAc;IACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,UAAU,CAAC;IACnB,EAAE,EAAE,gBAAgB,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,OAAO,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;IAChC,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,UAAU,SAAS;IACjB,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,KAAK,UAAU,GAAG;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;IACvD,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACjC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAClC,YAAY,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;IAChD,aAAa,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;IACjD,YAAY,EAAE,OAAO,CAAC;IACtB,qBAAqB,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IAC1E,sBAAsB,EAAE,MAAM,CAAC;IAC/B,gBAAgB,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IACnE,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,WAAW,EAAE,aAAa,CAAC;IAC3B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,aAAa,EAAE,GAAG,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,UAAU,YAAY;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,UAAU,OAAO;IACf,cAAc,EAAE,MAAM,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;CACxD;AAED,UAAU,iBAAiB;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,2BAA2B,EAAE,OAAO,CAAC;IACrC,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,SAAS,CAAC;IACtB,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,iBAAiB,CAAC;CAC7B,CAAC;AAEF,UAAU,qBAAqB;IAC7B,OAAO,CAAC,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC;IACpC,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wBAAwB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3C,2BAA2B,CAAC,EAAE,OAAO,CAAC;CACvC;AAWD,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;CAC3D;AAED,UAAU,KAAK;IACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1B,IAAI,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAE9C,IAAI,aAAa,CAAC,OAAO,EAAE,gBAAgB,EAAE,EAAE;IAE/C,IAAI,aAAa,IAAI,gBAAgB,EAAE,CAAC;IAExC,IAAI,gBAAgB,CAAC,WAAW,EAAE,aAAa,EAAE;IAEjD,IAAI,gBAAgB,IAAI,aAAa,CAAC;IAEtC,IAAI,WAAW,IAAI,OAAO,CAAC;IAE3B,IAAI,cAAc,IAAI,OAAO,CAAC;IAE9B,IAAI,SAAS,IAAI,OAAO,CAAC;IAEzB,IAAI,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE;IAE9B,IAAI,YAAY,IAAI,MAAM,CAAC;IAE3B,IAAI,IAAI,IAAI,MAAM,CAAC;IAEnB,IAAI,UAAU,IAAI,MAAM,CAAC;IAEzB,IAAI,KAAK,IAAI,SAAS,EAAE,CAAC;IAEzB,IAAI,0BAA0B,IAAI,MAAM,CAAC;IAEzC,IAAI,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE;IAE9C,IAAI,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAAC;IAEvC,IAAI,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE;IAE7C,IAAI,iBAAiB,IAAI,OAAO,CAAC;IAEjC,IAAI,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE;IAEtC,IAAI,qBAAqB,IAAI,OAAO,CAAC;IAErC,IAAI,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE;IAE1C,IAAI,oBAAoB,IAAI,OAAO,CAAC;IAEpC,IAAI,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE;IAEzC,IAAI,eAAe,IAAI,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAE9C,IAAI,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,EAAE;IAErD,IAAI,2BAA2B,IAAI,OAAO,CAAC;IAE3C,IAAI,2BAA2B,CAAC,KAAK,EAAE,OAAO,EAAE;IAEhD,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvD,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzC,OAAO,IAAI,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"Core.d.ts","sourceRoot":"","sources":["../lib/Core.ts"],"names":[],"mappings":"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"}
|
package/dist/Devices.d.ts
CHANGED
|
@@ -19,6 +19,12 @@ export declare class Devices extends Dispatcher {
|
|
|
19
19
|
static getList(): Core[];
|
|
20
20
|
static getByNumber(type: string, device_number: number): Core | null;
|
|
21
21
|
static getCustom(type: string, device_number?: number): Core | null;
|
|
22
|
+
static connectToAll(): Promise<boolean>;
|
|
23
|
+
static disconnectAll(): Promise<boolean>;
|
|
24
|
+
static areAllConnected(): Promise<boolean>;
|
|
25
|
+
static areAllDisconnected(): Promise<boolean>;
|
|
26
|
+
static getAllConnected(): Promise<Core[]>;
|
|
27
|
+
static getAllDisconnected(): Promise<Core[]>;
|
|
22
28
|
}
|
|
23
29
|
export {};
|
|
24
30
|
//# sourceMappingURL=Devices.d.ts.map
|
package/dist/Devices.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Devices.d.ts","sourceRoot":"","sources":["../lib/Devices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,UAAU,OAAO;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,UAAU,QAAQ;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,qBAAa,OAAQ,SAAQ,UAAU;IACrC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAM;;WAYhB,eAAe,CAAC,MAAM,GAAE,IAAI,GAAG,IAAW,GAAG,IAAI;WAOjD,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;WAO7B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;WAMhC,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,MAAM;WAoBzB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;WAUnC,MAAM,CAAC,IAAI,GAAE,MAAM,GAAG,IAAW,GAAG,OAAO,GAAG,QAAQ;WAOtD,OAAO,IAAI,IAAI,EAAE;WAWjB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;WAO7D,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,GAAE,MAAU,GAAG,IAAI,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"Devices.d.ts","sourceRoot":"","sources":["../lib/Devices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,UAAU,OAAO;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,UAAU,QAAQ;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,qBAAa,OAAQ,SAAQ,UAAU;IACrC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAM;;WAYhB,eAAe,CAAC,MAAM,GAAE,IAAI,GAAG,IAAW,GAAG,IAAI;WAOjD,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;WAO7B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;WAMhC,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,MAAM;WAoBzB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;WAUnC,MAAM,CAAC,IAAI,GAAE,MAAM,GAAG,IAAW,GAAG,OAAO,GAAG,QAAQ;WAOtD,OAAO,IAAI,IAAI,EAAE;WAWjB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;WAO7D,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,GAAE,MAAU,GAAG,IAAI,GAAG,IAAI;WAOzD,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;WAWhC,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;WAWjC,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;WAUnC,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;WAUtC,eAAe,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;WAKlC,kBAAkB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;CAI1D"}
|
package/dist/Dispatcher.d.ts
CHANGED
|
@@ -19,12 +19,17 @@ interface Listeners {
|
|
|
19
19
|
export declare class Dispatcher extends EventTarget implements IDispatcher {
|
|
20
20
|
__listeners__: Listeners;
|
|
21
21
|
__debug__: boolean;
|
|
22
|
+
__listenersCallbacks__: {
|
|
23
|
+
key: string;
|
|
24
|
+
callback: EventListenerOrEventListenerObject;
|
|
25
|
+
}[];
|
|
22
26
|
dispatch(type: string, data?: DataType): void;
|
|
23
27
|
dispatchAsync(type: string, data?: null, ms?: number): void;
|
|
24
28
|
on(type: string, callback: EventListenerOrEventListenerObject): void;
|
|
25
29
|
off(type: string, callback: EventListenerOrEventListenerObject): void;
|
|
26
30
|
serialRegisterAvailableListener(type: string): void;
|
|
27
31
|
get availableListeners(): AvailableListeners;
|
|
32
|
+
removeAllListeners(): void;
|
|
28
33
|
}
|
|
29
34
|
export {};
|
|
30
35
|
//# sourceMappingURL=Dispatcher.d.ts.map
|
package/dist/Dispatcher.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dispatcher.d.ts","sourceRoot":"","sources":["../lib/Dispatcher.ts"],"names":[],"mappings":"AAEA,KAAK,iBAAiB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC;AAC9D,KAAK,kBAAkB,GAAG,iBAAiB,EAAE,CAAC;AAE9C,KAAK,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC;AAE1D,UAAU,WAAW;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAE9C,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAEhD,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAEjD,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpD,kBAAkB,EAAE,kBAAkB,CAAC;CACxC;AAED,UAAU,SAAS;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAEvB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,qBAAa,UAAW,SAAQ,WAAY,YAAW,WAAW;IAChE,aAAa,EAAE,SAAS,CAEtB;IACF,SAAS,EAAE,OAAO,CAAS;
|
|
1
|
+
{"version":3,"file":"Dispatcher.d.ts","sourceRoot":"","sources":["../lib/Dispatcher.ts"],"names":[],"mappings":"AAEA,KAAK,iBAAiB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC;AAC9D,KAAK,kBAAkB,GAAG,iBAAiB,EAAE,CAAC;AAE9C,KAAK,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC;AAE1D,UAAU,WAAW;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAE9C,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAEhD,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAEjD,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpD,kBAAkB,EAAE,kBAAkB,CAAC;CACxC;AAED,UAAU,SAAS;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAEvB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,qBAAa,UAAW,SAAQ,WAAY,YAAW,WAAW;IAChE,aAAa,EAAE,SAAS,CAEtB;IACF,SAAS,EAAE,OAAO,CAAS;IAE3B,sBAAsB,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,kCAAkC,CAAA;KAAE,EAAE,CAAM;IAEtF,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,QAAe;IAQ5C,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,OAAO,EAAE,EAAE,SAAM;IAQjD,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,kCAAkC;IAS7D,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,kCAAkC;IAQ9D,+BAA+B,CAAC,IAAI,EAAE,MAAM;IAMnD,IAAI,kBAAkB,IAAI,kBAAkB,CAQ3C;IAEM,kBAAkB,IAAI,IAAI;CASlC"}
|
package/dist/webserial-core.js
CHANGED
|
@@ -1,23 +1,24 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
1
|
+
var Q = Object.defineProperty;
|
|
2
|
+
var S = (l) => {
|
|
3
3
|
throw TypeError(l);
|
|
4
4
|
};
|
|
5
|
-
var
|
|
6
|
-
var g = (l, s, e) =>
|
|
7
|
-
var E = (l, s, e) => s.has(l) ?
|
|
8
|
-
var
|
|
5
|
+
var V = (l, s, e) => s in l ? Q(l, s, { enumerable: !0, configurable: !0, writable: !0, value: e }) : l[s] = e;
|
|
6
|
+
var g = (l, s, e) => V(l, typeof s != "symbol" ? s + "" : s, e), z = (l, s, e) => s.has(l) || S("Cannot " + e);
|
|
7
|
+
var E = (l, s, e) => s.has(l) ? S("Cannot add the same private member more than once") : s instanceof WeakSet ? s.add(l) : s.set(l, e);
|
|
8
|
+
var o = (l, s, e) => (z(l, s, "access private method"), e);
|
|
9
9
|
class A extends CustomEvent {
|
|
10
10
|
constructor(s, e) {
|
|
11
11
|
super(s, e);
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
|
-
class
|
|
14
|
+
class k extends EventTarget {
|
|
15
15
|
constructor() {
|
|
16
16
|
super(...arguments);
|
|
17
17
|
g(this, "__listeners__", {
|
|
18
18
|
debug: !1
|
|
19
19
|
});
|
|
20
20
|
g(this, "__debug__", !1);
|
|
21
|
+
g(this, "__listenersCallbacks__", []);
|
|
21
22
|
}
|
|
22
23
|
dispatch(e, t = null) {
|
|
23
24
|
const i = new A(e, { detail: t });
|
|
@@ -30,10 +31,10 @@ class L extends EventTarget {
|
|
|
30
31
|
}, i);
|
|
31
32
|
}
|
|
32
33
|
on(e, t) {
|
|
33
|
-
typeof this.__listeners__[e] < "u" && !this.__listeners__[e] && (this.__listeners__[e] = !0), this.addEventListener(e, t);
|
|
34
|
+
typeof this.__listeners__[e] < "u" && !this.__listeners__[e] && (this.__listeners__[e] = !0), this.__listenersCallbacks__.push({ key: e, callback: t }), this.addEventListener(e, t);
|
|
34
35
|
}
|
|
35
36
|
off(e, t) {
|
|
36
|
-
this.removeEventListener(e, t);
|
|
37
|
+
this.__listenersCallbacks__ = this.__listenersCallbacks__.filter((i) => !(i.key === e && i.callback === t)), this.removeEventListener(e, t);
|
|
37
38
|
}
|
|
38
39
|
serialRegisterAvailableListener(e) {
|
|
39
40
|
this.__listeners__[e] || (this.__listeners__[e] = !1);
|
|
@@ -44,59 +45,98 @@ class L extends EventTarget {
|
|
|
44
45
|
listening: this.__listeners__[t]
|
|
45
46
|
}));
|
|
46
47
|
}
|
|
48
|
+
removeAllListeners() {
|
|
49
|
+
for (const e of this.__listenersCallbacks__)
|
|
50
|
+
this.removeEventListener(e.key, e.callback);
|
|
51
|
+
this.__listenersCallbacks__ = [], this.__listeners__ = {
|
|
52
|
+
debug: !1
|
|
53
|
+
};
|
|
54
|
+
}
|
|
47
55
|
}
|
|
48
|
-
const
|
|
56
|
+
const a = class a extends k {
|
|
49
57
|
constructor() {
|
|
50
58
|
super(), ["change"].forEach((e) => {
|
|
51
59
|
this.serialRegisterAvailableListener(e);
|
|
52
60
|
});
|
|
53
61
|
}
|
|
54
62
|
static $dispatchChange(s = null) {
|
|
55
|
-
s && s.$checkAndDispatchConnection(),
|
|
63
|
+
s && s.$checkAndDispatchConnection(), a.instance.dispatch("change", { devices: a.devices, dispatcher: s });
|
|
56
64
|
}
|
|
57
65
|
static typeError(s) {
|
|
58
66
|
const e = new Error();
|
|
59
67
|
throw e.message = `Type ${s} is not supported`, e.name = "DeviceTypeError", e;
|
|
60
68
|
}
|
|
61
69
|
static registerType(s) {
|
|
62
|
-
typeof
|
|
70
|
+
typeof a.devices[s] > "u" && (a.devices = { ...a.devices, [s]: {} });
|
|
63
71
|
}
|
|
64
72
|
static add(s) {
|
|
65
73
|
const e = s.typeDevice;
|
|
66
|
-
typeof
|
|
74
|
+
typeof a.devices[e] > "u" && a.registerType(e);
|
|
67
75
|
const t = s.uuid;
|
|
68
|
-
if (typeof
|
|
76
|
+
if (typeof a.devices[e] > "u" && a.typeError(e), a.devices[e][t])
|
|
69
77
|
throw new Error(`Device with id ${t} already exists`);
|
|
70
|
-
return
|
|
78
|
+
return a.devices[e][t] = s, a.$dispatchChange(s), Object.keys(a.devices[e]).indexOf(t);
|
|
71
79
|
}
|
|
72
80
|
static get(s, e) {
|
|
73
|
-
return typeof
|
|
81
|
+
return typeof a.devices[s] > "u" && a.registerType(s), typeof a.devices[s] > "u" && a.typeError(s), a.devices[s][e];
|
|
74
82
|
}
|
|
75
83
|
static getAll(s = null) {
|
|
76
|
-
return s === null ?
|
|
84
|
+
return s === null ? a.devices : (typeof a.devices[s] > "u" && a.typeError(s), a.devices[s]);
|
|
77
85
|
}
|
|
78
86
|
static getList() {
|
|
79
|
-
return Object.values(
|
|
87
|
+
return Object.values(a.devices).map((e) => Object.values(e)).flat();
|
|
80
88
|
}
|
|
81
89
|
static getByNumber(s, e) {
|
|
82
|
-
return typeof
|
|
90
|
+
return typeof a.devices[s] > "u" && a.typeError(s), Object.values(a.devices[s]).find((i) => i.deviceNumber === e) ?? null;
|
|
83
91
|
}
|
|
84
92
|
static getCustom(s, e = 1) {
|
|
85
|
-
return typeof
|
|
93
|
+
return typeof a.devices[s] > "u" && a.typeError(s), Object.values(a.devices[s]).find((i) => i.deviceNumber === e) ?? null;
|
|
94
|
+
}
|
|
95
|
+
static async connectToAll() {
|
|
96
|
+
const s = a.getList();
|
|
97
|
+
for (const e of s)
|
|
98
|
+
e.isConnected || await e.connect().catch(console.warn);
|
|
99
|
+
return Promise.resolve(a.areAllConnected());
|
|
100
|
+
}
|
|
101
|
+
static async disconnectAll() {
|
|
102
|
+
const s = a.getList();
|
|
103
|
+
for (const e of s)
|
|
104
|
+
e.isDisconnected || await e.disconnect().catch(console.warn);
|
|
105
|
+
return Promise.resolve(a.areAllDisconnected());
|
|
106
|
+
}
|
|
107
|
+
static async areAllConnected() {
|
|
108
|
+
const s = a.getList();
|
|
109
|
+
for (const e of s)
|
|
110
|
+
if (!e.isConnected) return Promise.resolve(!1);
|
|
111
|
+
return Promise.resolve(!0);
|
|
112
|
+
}
|
|
113
|
+
static async areAllDisconnected() {
|
|
114
|
+
const s = a.getList();
|
|
115
|
+
for (const e of s)
|
|
116
|
+
if (!e.isDisconnected) return Promise.resolve(!1);
|
|
117
|
+
return Promise.resolve(!0);
|
|
118
|
+
}
|
|
119
|
+
static async getAllConnected() {
|
|
120
|
+
const s = a.getList();
|
|
121
|
+
return Promise.resolve(s.filter((e) => e.isConnected));
|
|
122
|
+
}
|
|
123
|
+
static async getAllDisconnected() {
|
|
124
|
+
const s = a.getList();
|
|
125
|
+
return Promise.resolve(s.filter((e) => e.isDisconnected));
|
|
86
126
|
}
|
|
87
127
|
};
|
|
88
|
-
g(
|
|
89
|
-
let h =
|
|
128
|
+
g(a, "instance"), g(a, "devices", {});
|
|
129
|
+
let h = a;
|
|
90
130
|
h.instance || (h.instance = new h());
|
|
91
|
-
function
|
|
131
|
+
function L(l = 100) {
|
|
92
132
|
return new Promise(
|
|
93
133
|
(s) => setTimeout(() => s(), l)
|
|
94
134
|
);
|
|
95
135
|
}
|
|
96
|
-
function
|
|
136
|
+
function G() {
|
|
97
137
|
return "serial" in navigator;
|
|
98
138
|
}
|
|
99
|
-
const
|
|
139
|
+
const C = {
|
|
100
140
|
baudRate: 9600,
|
|
101
141
|
dataBits: 8,
|
|
102
142
|
stopBits: 1,
|
|
@@ -104,17 +144,17 @@ const v = {
|
|
|
104
144
|
bufferSize: 32768,
|
|
105
145
|
flowControl: "none"
|
|
106
146
|
};
|
|
107
|
-
var n, y,
|
|
108
|
-
class
|
|
147
|
+
var n, y, w, P, x, B, f, D, U, I, $, R, M, m, q, N, O, F, H, j, W;
|
|
148
|
+
class K extends k {
|
|
109
149
|
constructor({
|
|
110
150
|
filters: e = null,
|
|
111
|
-
config_port: t =
|
|
151
|
+
config_port: t = C,
|
|
112
152
|
no_device: i = 1,
|
|
113
153
|
device_listen_on_channel: r = 1,
|
|
114
|
-
bypassSerialBytesConnection:
|
|
154
|
+
bypassSerialBytesConnection: _ = !1
|
|
115
155
|
} = {
|
|
116
156
|
filters: null,
|
|
117
|
-
config_port:
|
|
157
|
+
config_port: C,
|
|
118
158
|
no_device: 1,
|
|
119
159
|
device_listen_on_channel: 1,
|
|
120
160
|
bypassSerialBytesConnection: !1
|
|
@@ -133,6 +173,8 @@ class G extends L {
|
|
|
133
173
|
no_code: 0
|
|
134
174
|
},
|
|
135
175
|
serial: {
|
|
176
|
+
aux_connecting: "idle",
|
|
177
|
+
connecting: !1,
|
|
136
178
|
connected: !1,
|
|
137
179
|
port: null,
|
|
138
180
|
last_action: null,
|
|
@@ -156,7 +198,7 @@ class G extends L {
|
|
|
156
198
|
delay_first_connection: 200,
|
|
157
199
|
bytes_connection: null,
|
|
158
200
|
filters: [],
|
|
159
|
-
config_port:
|
|
201
|
+
config_port: C,
|
|
160
202
|
queue: [],
|
|
161
203
|
auto_response: ["DD", "DD"],
|
|
162
204
|
free_timeout_ms: 50,
|
|
@@ -182,7 +224,7 @@ class G extends L {
|
|
|
182
224
|
});
|
|
183
225
|
if (!("serial" in navigator))
|
|
184
226
|
throw new Error("Web Serial not supported");
|
|
185
|
-
e && (this.serialFilters = e), t && (this.serialConfigPort = t),
|
|
227
|
+
e && (this.serialFilters = e), t && (this.serialConfigPort = t), _ && (this.__internal__.bypassSerialBytesConnection = _), i && o(this, n, j).call(this, i), r && ["number", "string"].includes(typeof r) && (this.listenOnChannel = r), o(this, n, N).call(this), o(this, n, O).call(this);
|
|
186
228
|
}
|
|
187
229
|
set listenOnChannel(e) {
|
|
188
230
|
if (typeof e == "string" && (e = parseInt(e)), isNaN(e) || e < 1 || e > 255)
|
|
@@ -216,12 +258,15 @@ class G extends L {
|
|
|
216
258
|
this.__internal__.serial.useRTSCTS = e;
|
|
217
259
|
}
|
|
218
260
|
get isConnected() {
|
|
219
|
-
const e = this.__internal__.serial.connected, t =
|
|
220
|
-
return e && !t &&
|
|
261
|
+
const e = this.__internal__.serial.connected, t = o(this, n, y).call(this, this.__internal__.serial.port);
|
|
262
|
+
return e && !t && o(this, n, w).call(this, { error: "Port is closed, not readable or writable." }), this.__internal__.serial.connected = t, this.__internal__.serial.connected;
|
|
263
|
+
}
|
|
264
|
+
get isConnecting() {
|
|
265
|
+
return this.__internal__.serial.connecting;
|
|
221
266
|
}
|
|
222
267
|
get isDisconnected() {
|
|
223
|
-
const e = this.__internal__.serial.connected, t =
|
|
224
|
-
return !e && t && (this.dispatch("serial:connected"), h.$dispatchChange(this)), this.__internal__.serial.connected = t, !this.__internal__.serial.connected;
|
|
268
|
+
const e = this.__internal__.serial.connected, t = o(this, n, y).call(this, this.__internal__.serial.port);
|
|
269
|
+
return !e && t && (this.dispatch("serial:connected"), o(this, n, m).call(this, !1), h.$dispatchChange(this)), this.__internal__.serial.connected = t, !this.__internal__.serial.connected;
|
|
225
270
|
}
|
|
226
271
|
get deviceNumber() {
|
|
227
272
|
return this.__internal__.device_number;
|
|
@@ -299,14 +344,18 @@ class G extends L {
|
|
|
299
344
|
});
|
|
300
345
|
}
|
|
301
346
|
async disconnect(e = null) {
|
|
302
|
-
await this.serialDisconnect(),
|
|
347
|
+
await this.serialDisconnect(), o(this, n, w).call(this, e);
|
|
303
348
|
}
|
|
304
349
|
async connect() {
|
|
305
|
-
return this.isConnected ?
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
350
|
+
return this.isConnected ? !0 : (this.__internal__.serial.aux_connecting = "idle", new Promise((e, t) => {
|
|
351
|
+
G() || t("Web Serial not supported");
|
|
352
|
+
const i = o(this, n, P).bind(this);
|
|
353
|
+
this.on("serial:connecting", i);
|
|
354
|
+
const r = setInterval(() => {
|
|
355
|
+
this.__internal__.serial.aux_connecting === "finished" ? (clearInterval(r), this.__internal__.serial.aux_connecting = "idle", this.off("serial:connecting", i), this.isConnected ? e(!0) : t(`${this.typeDevice} device ${this.deviceNumber} not connected`)) : this.__internal__.serial.aux_connecting === "connecting" && (this.__internal__.serial.aux_connecting = "idle", this.dispatch("serial:connecting", { active: !0 }));
|
|
356
|
+
}, 100);
|
|
357
|
+
this.serialConnect();
|
|
358
|
+
}));
|
|
310
359
|
}
|
|
311
360
|
async serialDisconnect() {
|
|
312
361
|
try {
|
|
@@ -391,8 +440,8 @@ class G extends L {
|
|
|
391
440
|
}
|
|
392
441
|
async serialConnect() {
|
|
393
442
|
try {
|
|
394
|
-
this.
|
|
395
|
-
const e = await
|
|
443
|
+
o(this, n, m).call(this, !0);
|
|
444
|
+
const e = await o(this, n, D).call(this);
|
|
396
445
|
if (e.length > 0)
|
|
397
446
|
await this.serialPortsSaved(e);
|
|
398
447
|
else {
|
|
@@ -407,21 +456,22 @@ class G extends L {
|
|
|
407
456
|
await t.open(this.serialConfigPort);
|
|
408
457
|
const i = this;
|
|
409
458
|
t.onconnect = (r) => {
|
|
410
|
-
|
|
459
|
+
var _;
|
|
460
|
+
i.dispatch("serial:connected", r), o(_ = i, n, m).call(_, !1), h.$dispatchChange(this), i.__internal__.serial.queue.length > 0 && i.dispatch("internal:queue", {});
|
|
411
461
|
}, t.ondisconnect = async () => {
|
|
412
462
|
await i.disconnect();
|
|
413
|
-
}, await
|
|
463
|
+
}, await L(this.__internal__.serial.delay_first_connection), this.__internal__.timeout.until_response = setTimeout(async () => {
|
|
414
464
|
await i.timeout(i.__internal__.serial.bytes_connection ?? [], "connection:start");
|
|
415
|
-
}, this.__internal__.time.response_connection), this.__internal__.serial.last_action = "connect", await
|
|
465
|
+
}, this.__internal__.time.response_connection), this.__internal__.serial.last_action = "connect", await o(this, n, x).call(this, this.__internal__.serial.bytes_connection ?? []), this.dispatch("serial:sent", {
|
|
416
466
|
action: "connect",
|
|
417
467
|
bytes: this.__internal__.serial.bytes_connection
|
|
418
|
-
}), this.__internal__.auto_response &&
|
|
468
|
+
}), this.__internal__.auto_response && o(this, n, f).call(this, this.__internal__.serial.auto_response), await o(this, n, M).call(this);
|
|
419
469
|
} catch (e) {
|
|
420
|
-
this.serialErrors(e);
|
|
470
|
+
o(this, n, m).call(this, !1), this.serialErrors(e);
|
|
421
471
|
}
|
|
422
472
|
}
|
|
423
473
|
async serialForget() {
|
|
424
|
-
return await
|
|
474
|
+
return await o(this, n, q).call(this);
|
|
425
475
|
}
|
|
426
476
|
decToHex(e) {
|
|
427
477
|
return typeof e == "string" && (e = parseInt(e, 10)), e.toString(16);
|
|
@@ -466,7 +516,7 @@ class G extends L {
|
|
|
466
516
|
}
|
|
467
517
|
serialSetConnectionConstant(e = 1) {
|
|
468
518
|
if (this.__internal__.bypassSerialBytesConnection) return this.__internal__.serial.bytes_connection;
|
|
469
|
-
throw
|
|
519
|
+
throw new Error(`Method not implemented 'serialSetConnectionConstant' to listen on channel ${e}`);
|
|
470
520
|
}
|
|
471
521
|
serialMessage(e) {
|
|
472
522
|
throw console.log(e), this.dispatch("serial:message", { code: e }), new Error("Method not implemented 'serialMessage'");
|
|
@@ -493,7 +543,7 @@ class G extends L {
|
|
|
493
543
|
});
|
|
494
544
|
}
|
|
495
545
|
softReload() {
|
|
496
|
-
|
|
546
|
+
o(this, n, W).call(this), this.dispatch("serial:soft-reload", {});
|
|
497
547
|
}
|
|
498
548
|
async sendConnect() {
|
|
499
549
|
if (!this.__internal__.serial.bytes_connection)
|
|
@@ -551,8 +601,8 @@ class G extends L {
|
|
|
551
601
|
asciiToHex(e) {
|
|
552
602
|
const t = [];
|
|
553
603
|
for (let i = 0, r = e.length; i < r; i++) {
|
|
554
|
-
const
|
|
555
|
-
t.push(
|
|
604
|
+
const _ = Number(e.charCodeAt(i)).toString(16);
|
|
605
|
+
t.push(_);
|
|
556
606
|
}
|
|
557
607
|
return t.join("");
|
|
558
608
|
}
|
|
@@ -562,14 +612,16 @@ class G extends L {
|
|
|
562
612
|
}
|
|
563
613
|
n = new WeakSet(), y = function(e) {
|
|
564
614
|
return !!(e && e.readable && e.writable);
|
|
565
|
-
},
|
|
615
|
+
}, w = function(e = null) {
|
|
566
616
|
this.__internal__.serial.connected = !1, this.__internal__.aux_port_connector = 0, this.dispatch("serial:disconnected", e), h.$dispatchChange(this);
|
|
617
|
+
}, P = function(e) {
|
|
618
|
+
this.__internal__.serial.aux_connecting = e.detail.active ? "connecting" : "finished";
|
|
567
619
|
}, x = async function(e) {
|
|
568
620
|
const t = this.__internal__.serial.port;
|
|
569
621
|
if (!t || t && (!t.readable || !t.writable))
|
|
570
|
-
throw
|
|
622
|
+
throw o(this, n, w).call(this, { error: "Port is closed, not readable or writable." }), new Error("The port is closed or is not readable/writable");
|
|
571
623
|
const i = this.validateBytes(e);
|
|
572
|
-
if (this.useRTSCTS && await
|
|
624
|
+
if (this.useRTSCTS && await o(this, n, B).call(this, t, 5e3), t.writable === null) return;
|
|
573
625
|
const r = t.writable.getWriter();
|
|
574
626
|
await r.write(i), r.releaseLock();
|
|
575
627
|
}, B = async function(e, t = 5e3) {
|
|
@@ -579,21 +631,21 @@ n = new WeakSet(), y = function(e) {
|
|
|
579
631
|
throw new Error("Timeout waiting for clearToSend signal");
|
|
580
632
|
const { clearToSend: r } = await e.getSignals();
|
|
581
633
|
if (r) return;
|
|
582
|
-
await
|
|
634
|
+
await L(100);
|
|
583
635
|
}
|
|
584
|
-
},
|
|
636
|
+
}, f = function(e = new Uint8Array([]), t = !1) {
|
|
585
637
|
if (e && e.length > 0) {
|
|
586
638
|
const i = this.__internal__.serial.connected;
|
|
587
|
-
if (this.__internal__.serial.connected =
|
|
639
|
+
if (this.__internal__.serial.connected = o(this, n, y).call(this, this.__internal__.serial.port), h.$dispatchChange(this), !i && this.__internal__.serial.connected && (this.dispatch("serial:connected"), o(this, n, m).call(this, !1)), this.__internal__.interval.reconnection && (clearInterval(this.__internal__.interval.reconnection), this.__internal__.interval.reconnection = 0), this.__internal__.timeout.until_response && (clearTimeout(this.__internal__.timeout.until_response), this.__internal__.timeout.until_response = 0), this.__internal__.serial.response.as === "hex")
|
|
588
640
|
t ? this.serialCorruptMessage(this.parseUint8ToHex(e)) : this.serialMessage(this.parseUint8ToHex(e));
|
|
589
641
|
else if (this.__internal__.serial.response.as === "uint8")
|
|
590
642
|
t ? this.serialCorruptMessage(e) : this.serialMessage(e);
|
|
591
643
|
else if (this.__internal__.serial.response.as === "string") {
|
|
592
644
|
const r = this.parseUint8ArrayToString(e);
|
|
593
645
|
if (this.__internal__.serial.response.limiter !== null) {
|
|
594
|
-
const
|
|
595
|
-
for (const
|
|
596
|
-
c
|
|
646
|
+
const _ = r.split(this.__internal__.serial.response.limiter);
|
|
647
|
+
for (const c in _)
|
|
648
|
+
_[c] && (t ? this.serialCorruptMessage(_[c]) : this.serialMessage(_[c]));
|
|
597
649
|
} else
|
|
598
650
|
t ? this.serialCorruptMessage(r) : this.serialMessage(r);
|
|
599
651
|
} else {
|
|
@@ -602,34 +654,34 @@ n = new WeakSet(), y = function(e) {
|
|
|
602
654
|
}
|
|
603
655
|
}
|
|
604
656
|
this.__internal__.serial.queue.length !== 0 && this.dispatch("internal:queue", {});
|
|
605
|
-
},
|
|
657
|
+
}, D = async function() {
|
|
606
658
|
const e = this.serialFilters, t = await navigator.serial.getPorts({ filters: e });
|
|
607
659
|
return e.length === 0 ? t : t.filter((r) => {
|
|
608
|
-
const
|
|
609
|
-
return e.some((
|
|
610
|
-
}).filter((r) => !
|
|
660
|
+
const _ = r.getInfo();
|
|
661
|
+
return e.some((c) => _.usbProductId === c.usbProductId && _.usbVendorId === c.usbVendorId);
|
|
662
|
+
}).filter((r) => !o(this, n, y).call(this, r));
|
|
611
663
|
}, U = function(e) {
|
|
612
664
|
if (e) {
|
|
613
665
|
const t = this.__internal__.serial.response.buffer, i = new Uint8Array(t.length + e.byteLength);
|
|
614
666
|
i.set(t, 0), i.set(new Uint8Array(e), t.length), this.__internal__.serial.response.buffer = i;
|
|
615
667
|
}
|
|
616
|
-
},
|
|
668
|
+
}, I = async function() {
|
|
617
669
|
this.__internal__.serial.time_until_send_bytes && (clearTimeout(this.__internal__.serial.time_until_send_bytes), this.__internal__.serial.time_until_send_bytes = 0), this.__internal__.serial.time_until_send_bytes = setTimeout(() => {
|
|
618
|
-
this.__internal__.serial.response.buffer &&
|
|
670
|
+
this.__internal__.serial.response.buffer && o(this, n, f).call(this, this.__internal__.serial.response.buffer), this.__internal__.serial.response.buffer = new Uint8Array(0);
|
|
619
671
|
}, this.__internal__.serial.free_timeout_ms || 50);
|
|
620
|
-
},
|
|
672
|
+
}, $ = async function() {
|
|
621
673
|
const e = this.__internal__.serial.response.length;
|
|
622
674
|
let t = this.__internal__.serial.response.buffer;
|
|
623
675
|
if (this.__internal__.serial.time_until_send_bytes && (clearTimeout(this.__internal__.serial.time_until_send_bytes), this.__internal__.serial.time_until_send_bytes = 0), !(e === null || !t || t.length === 0)) {
|
|
624
676
|
for (; t.length >= e; ) {
|
|
625
677
|
const i = t.slice(0, e);
|
|
626
|
-
|
|
678
|
+
o(this, n, f).call(this, i), t = t.slice(e);
|
|
627
679
|
}
|
|
628
680
|
this.__internal__.serial.response.buffer = t, t.length > 0 && (this.__internal__.serial.time_until_send_bytes = setTimeout(() => {
|
|
629
|
-
|
|
681
|
+
o(this, n, f).call(this, this.__internal__.serial.response.buffer, !0);
|
|
630
682
|
}, this.__internal__.serial.free_timeout_ms || 50));
|
|
631
683
|
}
|
|
632
|
-
},
|
|
684
|
+
}, R = async function() {
|
|
633
685
|
const {
|
|
634
686
|
limiter: e,
|
|
635
687
|
prefixLimiter: t = !1,
|
|
@@ -640,8 +692,8 @@ n = new WeakSet(), y = function(e) {
|
|
|
640
692
|
const r = this.__internal__.serial.response.buffer;
|
|
641
693
|
if (!e || !r || r.length === 0) return;
|
|
642
694
|
this.__internal__.serial.time_until_send_bytes && (clearTimeout(this.__internal__.serial.time_until_send_bytes), this.__internal__.serial.time_until_send_bytes = 0);
|
|
643
|
-
let
|
|
644
|
-
const
|
|
695
|
+
let c = new TextDecoder().decode(r);
|
|
696
|
+
const b = [];
|
|
645
697
|
if (typeof e == "string") {
|
|
646
698
|
let u;
|
|
647
699
|
if (t && i)
|
|
@@ -652,37 +704,37 @@ n = new WeakSet(), y = function(e) {
|
|
|
652
704
|
u = new RegExp(`([^${e}]+)${e}`, "g");
|
|
653
705
|
else
|
|
654
706
|
return;
|
|
655
|
-
let
|
|
656
|
-
for (; (
|
|
657
|
-
|
|
658
|
-
|
|
707
|
+
let p, d = 0;
|
|
708
|
+
for (; (p = u.exec(c)) !== null; )
|
|
709
|
+
b.push(new TextEncoder().encode(p[1])), d = u.lastIndex;
|
|
710
|
+
c = c.slice(d);
|
|
659
711
|
} else if (e instanceof RegExp) {
|
|
660
|
-
let u,
|
|
712
|
+
let u, p = 0;
|
|
661
713
|
if (t && i) {
|
|
662
714
|
const d = new RegExp(`${e.source}(.*?)${e.source}`, "g");
|
|
663
|
-
for (; (u = d.exec(
|
|
664
|
-
|
|
715
|
+
for (; (u = d.exec(c)) !== null; )
|
|
716
|
+
b.push(new TextEncoder().encode(u[1])), p = d.lastIndex;
|
|
665
717
|
} else if (i)
|
|
666
|
-
for (; (u = e.exec(
|
|
667
|
-
const d = u.index,
|
|
668
|
-
|
|
718
|
+
for (; (u = e.exec(c)) !== null; ) {
|
|
719
|
+
const d = u.index, v = c.slice(p, d);
|
|
720
|
+
b.push(new TextEncoder().encode(v)), p = e.lastIndex;
|
|
669
721
|
}
|
|
670
722
|
else if (t) {
|
|
671
|
-
const d =
|
|
723
|
+
const d = c.split(e);
|
|
672
724
|
d.shift();
|
|
673
|
-
for (const
|
|
674
|
-
|
|
675
|
-
|
|
725
|
+
for (const v of d)
|
|
726
|
+
b.push(new TextEncoder().encode(v));
|
|
727
|
+
c = "";
|
|
676
728
|
}
|
|
677
|
-
|
|
729
|
+
c = c.slice(p);
|
|
678
730
|
}
|
|
679
|
-
for (const u of
|
|
680
|
-
|
|
681
|
-
const
|
|
682
|
-
this.__internal__.serial.response.buffer =
|
|
683
|
-
|
|
731
|
+
for (const u of b)
|
|
732
|
+
o(this, n, f).call(this, u);
|
|
733
|
+
const T = new TextEncoder().encode(c);
|
|
734
|
+
this.__internal__.serial.response.buffer = T, T.length > 0 && (this.__internal__.serial.time_until_send_bytes = setTimeout(() => {
|
|
735
|
+
o(this, n, f).call(this, this.__internal__.serial.response.buffer, !0), this.__internal__.serial.response.buffer = new Uint8Array(0);
|
|
684
736
|
}, this.__internal__.serial.free_timeout_ms ?? 50));
|
|
685
|
-
},
|
|
737
|
+
}, M = async function() {
|
|
686
738
|
const e = this.__internal__.serial.port;
|
|
687
739
|
if (!e || !e.readable) throw new Error("Port is not readable");
|
|
688
740
|
const t = e.readable.getReader();
|
|
@@ -691,16 +743,18 @@ n = new WeakSet(), y = function(e) {
|
|
|
691
743
|
for (; this.__internal__.serial.keep_reading; ) {
|
|
692
744
|
const { value: i, done: r } = await t.read();
|
|
693
745
|
if (r) break;
|
|
694
|
-
|
|
746
|
+
o(this, n, U).call(this, i), this.__internal__.serial.response.delimited ? await o(this, n, R).call(this) : this.__internal__.serial.response.length === null ? await o(this, n, I).call(this) : await o(this, n, $).call(this);
|
|
695
747
|
}
|
|
696
748
|
} catch (i) {
|
|
697
749
|
this.serialErrors(i);
|
|
698
750
|
} finally {
|
|
699
751
|
t.releaseLock(), this.__internal__.serial.keep_reading = !0, this.__internal__.serial.port && await this.__internal__.serial.port.close();
|
|
700
752
|
}
|
|
701
|
-
},
|
|
753
|
+
}, m = function(e) {
|
|
754
|
+
e !== this.__internal__.serial.connecting && (this.__internal__.serial.connecting = e, e ? this.dispatch("serial:connecting", { active: !0 }) : this.dispatch("serial:connecting", { active: !1 }));
|
|
755
|
+
}, q = async function() {
|
|
702
756
|
return typeof window > "u" ? !1 : "serial" in navigator && "forget" in SerialPort.prototype && this.__internal__.serial.port ? (await this.__internal__.serial.port.forget(), !0) : !1;
|
|
703
|
-
},
|
|
757
|
+
}, N = function() {
|
|
704
758
|
[
|
|
705
759
|
"serial:connected",
|
|
706
760
|
"serial:connecting",
|
|
@@ -720,21 +774,21 @@ n = new WeakSet(), y = function(e) {
|
|
|
720
774
|
].forEach((t) => {
|
|
721
775
|
this.serialRegisterAvailableListener(t);
|
|
722
776
|
});
|
|
723
|
-
},
|
|
777
|
+
}, O = function() {
|
|
724
778
|
const e = this;
|
|
725
779
|
this.on("internal:queue", async () => {
|
|
726
780
|
var t;
|
|
727
|
-
await
|
|
728
|
-
}),
|
|
729
|
-
},
|
|
781
|
+
await o(t = e, n, H).call(t);
|
|
782
|
+
}), o(this, n, F).call(this);
|
|
783
|
+
}, F = function() {
|
|
730
784
|
const e = this;
|
|
731
785
|
navigator.serial.addEventListener("connect", async () => {
|
|
732
786
|
e.isDisconnected && await e.serialConnect().catch(() => {
|
|
733
787
|
});
|
|
734
788
|
});
|
|
735
|
-
},
|
|
736
|
-
if (!
|
|
737
|
-
|
|
789
|
+
}, H = async function() {
|
|
790
|
+
if (!o(this, n, y).call(this, this.__internal__.serial.port)) {
|
|
791
|
+
o(this, n, w).call(this, { error: "Port is closed, not readable or writable." }), await this.serialConnect();
|
|
738
792
|
return;
|
|
739
793
|
}
|
|
740
794
|
if (this.__internal__.timeout.until_response || this.__internal__.serial.queue.length === 0) return;
|
|
@@ -742,23 +796,23 @@ n = new WeakSet(), y = function(e) {
|
|
|
742
796
|
let t = this.__internal__.time.response_general;
|
|
743
797
|
if (e.action === "connect" && (t = this.__internal__.time.response_connection), this.__internal__.timeout.until_response = setTimeout(async () => {
|
|
744
798
|
await this.timeout(e.bytes, e.action);
|
|
745
|
-
}, t), this.__internal__.serial.last_action = e.action ?? "unknown", await
|
|
799
|
+
}, t), this.__internal__.serial.last_action = e.action ?? "unknown", await o(this, n, x).call(this, e.bytes), this.dispatch("serial:sent", {
|
|
746
800
|
action: e.action,
|
|
747
801
|
bytes: e.bytes
|
|
748
802
|
}), this.__internal__.auto_response) {
|
|
749
803
|
let r = new Uint8Array(0);
|
|
750
804
|
try {
|
|
751
805
|
r = this.validateBytes(this.__internal__.serial.auto_response);
|
|
752
|
-
} catch (
|
|
753
|
-
this.serialErrors(
|
|
806
|
+
} catch (_) {
|
|
807
|
+
this.serialErrors(_);
|
|
754
808
|
}
|
|
755
|
-
|
|
809
|
+
o(this, n, f).call(this, r);
|
|
756
810
|
}
|
|
757
811
|
const i = [...this.__internal__.serial.queue];
|
|
758
812
|
this.__internal__.serial.queue = i.splice(1);
|
|
759
|
-
},
|
|
813
|
+
}, j = function(e = 1) {
|
|
760
814
|
this.__internal__.device_number = e, !this.__internal__.bypassSerialBytesConnection && (this.__internal__.serial.bytes_connection = this.serialSetConnectionConstant(e));
|
|
761
|
-
},
|
|
815
|
+
}, W = function() {
|
|
762
816
|
this.__internal__.last_error = {
|
|
763
817
|
message: null,
|
|
764
818
|
action: null,
|
|
@@ -767,7 +821,7 @@ n = new WeakSet(), y = function(e) {
|
|
|
767
821
|
};
|
|
768
822
|
};
|
|
769
823
|
export {
|
|
770
|
-
|
|
824
|
+
K as Core,
|
|
771
825
|
h as Devices,
|
|
772
|
-
|
|
826
|
+
k as Dispatcher
|
|
773
827
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(function(l,_){typeof exports=="object"&&typeof module<"u"?_(exports):typeof define=="function"&&define.amd?define(["exports"],_):(l=typeof globalThis<"u"?globalThis:l||self,_(l.WebSerialCore={}))})(this,function(l){"use strict";var V=Object.defineProperty;var L=l=>{throw TypeError(l)};var z=(l,_,d)=>_ in l?V(l,_,{enumerable:!0,configurable:!0,writable:!0,value:d}):l[_]=d;var m=(l,_,d)=>z(l,typeof _!="symbol"?_+"":_,d),G=(l,_,d)=>_.has(l)||L("Cannot "+d);var B=(l,_,d)=>_.has(l)?L("Cannot add the same private member more than once"):_ instanceof WeakSet?_.add(l):_.set(l,d);var a=(l,_,d)=>(G(l,_,"access private method"),d);var s,b,C,E,$,g,D,U,k,P,I,R,M,q,N,O,H,F,j;class _ extends CustomEvent{constructor(r,e){super(r,e)}}class d extends EventTarget{constructor(){super(...arguments);m(this,"__listeners__",{debug:!1});m(this,"__debug__",!1)}dispatch(e,t=null){const i=new _(e,{detail:t});this.dispatchEvent(i),this.__debug__&&this.dispatchEvent(new _("debug",{detail:{type:e,data:t}}))}dispatchAsync(e,t=null,i=100){const n=this;setTimeout(()=>{n.dispatch(e,t)},i)}on(e,t){typeof this.__listeners__[e]<"u"&&!this.__listeners__[e]&&(this.__listeners__[e]=!0),this.addEventListener(e,t)}off(e,t){this.removeEventListener(e,t)}serialRegisterAvailableListener(e){this.__listeners__[e]||(this.__listeners__[e]=!1)}get availableListeners(){return Object.keys(this.__listeners__).sort().map(t=>({type:t,listening:this.__listeners__[t]}))}}const o=class o extends d{constructor(){super(),["change"].forEach(e=>{this.serialRegisterAvailableListener(e)})}static $dispatchChange(r=null){r&&r.$checkAndDispatchConnection(),o.instance.dispatch("change",{devices:o.devices,dispatcher:r})}static typeError(r){const e=new Error;throw e.message=`Type ${r} is not supported`,e.name="DeviceTypeError",e}static registerType(r){typeof o.devices[r]>"u"&&(o.devices[r]={})}static add(r){const e=r.typeDevice;typeof o.devices[e]>"u"&&(o.devices[e]={});const t=r.uuid;if(typeof o.devices[e]>"u"&&o.typeError(e),o.devices[e][t])throw new Error(`Device with id ${t} already exists`);return o.devices[e][t]=r,o.$dispatchChange(r),Object.keys(o.devices[e]).indexOf(t)}static get(r,e){return typeof o.devices[r]>"u"&&(o.devices[r]={}),typeof o.devices[r]>"u"&&o.typeError(r),o.devices[r][e]}static getAll(r=null){return r===null?o.devices:(typeof o.devices[r]>"u"&&o.typeError(r),o.devices[r])}static getList(){return Object.values(o.devices).map(e=>Object.values(e)).flat()}static getByNumber(r,e){return typeof o.devices[r]>"u"&&o.typeError(r),Object.values(o.devices[r]).find(i=>i.deviceNumber===e)??null}static getCustom(r,e=1){return typeof o.devices[r]>"u"&&o.typeError(r),Object.values(o.devices[r]).find(i=>i.deviceNumber===e)??null}};m(o,"instance"),m(o,"devices",{});let h=o;h.instance||(h.instance=new h);function x(v=100){return new Promise(r=>setTimeout(()=>r(),v))}function W(){return"serial"in navigator}const S={baudRate:9600,dataBits:8,stopBits:1,parity:"none",bufferSize:32768,flowControl:"none"};class Q extends d{constructor({filters:e=null,config_port:t=S,no_device:i=1,device_listen_on_channel:n=1,bypassSerialBytesConnection:u=!1}={filters:null,config_port:S,no_device:1,device_listen_on_channel:1,bypassSerialBytesConnection:!1}){super();B(this,s);m(this,"__internal__",{bypassSerialBytesConnection:!1,auto_response:!1,device_number:1,aux_port_connector:0,last_error:{message:null,action:null,code:null,no_code:0},serial:{connected:!1,port:null,last_action:null,response:{length:null,buffer:new Uint8Array([]),as:"uint8",replacer:/[\n\r]+/g,limiter:null,prefixLimiter:!1,sufixLimiter:!0,delimited:!1},reader:null,input_done:null,output_done:null,input_stream:null,output_stream:null,keep_reading:!0,time_until_send_bytes:void 0,delay_first_connection:200,bytes_connection:null,filters:[],config_port:S,queue:[],auto_response:["DD","DD"],free_timeout_ms:50,useRTSCTS:!1},device:{type:"unknown",id:window.crypto.randomUUID(),listen_on_port:null},time:{response_connection:500,response_general:2e3},timeout:{until_response:0},interval:{reconnection:0}});if(!("serial"in navigator))throw new Error("Web Serial not supported");e&&(this.serialFilters=e),t&&(this.serialConfigPort=t),u&&(this.__internal__.bypassSerialBytesConnection=u),i&&a(this,s,F).call(this,i),n&&["number","string"].includes(typeof n)&&(this.listenOnChannel=n),a(this,s,q).call(this),a(this,s,N).call(this)}set listenOnChannel(e){if(typeof e=="string"&&(e=parseInt(e)),isNaN(e)||e<1||e>255)throw new Error("Invalid port number");this.__internal__.device.listen_on_port=e,!this.__internal__.bypassSerialBytesConnection&&(this.__internal__.serial.bytes_connection=this.serialSetConnectionConstant(e))}get lastAction(){return this.__internal__.serial.last_action}get listenOnChannel(){return this.__internal__.device.listen_on_port??1}set serialFilters(e){if(this.isConnected)throw new Error("Cannot change serial filters while connected");this.__internal__.serial.filters=e}get serialFilters(){return this.__internal__.serial.filters}set serialConfigPort(e){if(this.isConnected)throw new Error("Cannot change serial filters while connected");this.__internal__.serial.config_port=e}get serialConfigPort(){return this.__internal__.serial.config_port}get useRTSCTS(){return this.__internal__.serial.useRTSCTS}set useRTSCTS(e){this.__internal__.serial.useRTSCTS=e}get isConnected(){const e=this.__internal__.serial.connected,t=a(this,s,b).call(this,this.__internal__.serial.port);return e&&!t&&a(this,s,C).call(this,{error:"Port is closed, not readable or writable."}),this.__internal__.serial.connected=t,this.__internal__.serial.connected}get isDisconnected(){const e=this.__internal__.serial.connected,t=a(this,s,b).call(this,this.__internal__.serial.port);return!e&&t&&(this.dispatch("serial:connected"),h.$dispatchChange(this)),this.__internal__.serial.connected=t,!this.__internal__.serial.connected}get deviceNumber(){return this.__internal__.device_number}get uuid(){return this.__internal__.device.id}get typeDevice(){return this.__internal__.device.type}get queue(){return this.__internal__.serial.queue}get responseDelimited(){return this.__internal__.serial.response.delimited}set responseDelimited(e){if(typeof e!="boolean")throw new Error("responseDelimited must be a boolean");this.__internal__.serial.response.delimited=e}get responsePrefixLimited(){return this.__internal__.serial.response.prefixLimiter}set responsePrefixLimited(e){if(typeof e!="boolean")throw new Error("responsePrefixLimited must be a boolean");this.__internal__.serial.response.prefixLimiter=e}get responseSufixLimited(){return this.__internal__.serial.response.sufixLimiter}set responseSufixLimited(e){if(typeof e!="boolean")throw new Error("responseSufixLimited must be a boolean");this.__internal__.serial.response.sufixLimiter=e}get responseLimiter(){return this.__internal__.serial.response.limiter}set responseLimiter(e){if(typeof e!="string"&&!(e instanceof RegExp))throw new Error("responseLimiter must be a string or a RegExp");this.__internal__.serial.response.limiter=e}get fixedBytesMessage(){return this.__internal__.serial.response.length}set fixedBytesMessage(e){if(e!==null&&(typeof e!="number"||e<1))throw new Error("Invalid length for fixed bytes message");this.__internal__.serial.response.length=e}get timeoutBeforeResponseBytes(){return this.__internal__.serial.free_timeout_ms||50}set timeoutBeforeResponseBytes(e){if(e!==void 0&&(typeof e!="number"||e<1))throw new Error("Invalid timeout for response bytes");this.__internal__.serial.free_timeout_ms=e??50}get bypassSerialBytesConnection(){return this.__internal__.bypassSerialBytesConnection}set bypassSerialBytesConnection(e){if(typeof e!="boolean")throw new Error("bypassSerialBytesConnection must be a boolean");this.__internal__.bypassSerialBytesConnection=e}async timeout(e,t){this.__internal__.last_error.message="Operation response timed out.",this.__internal__.last_error.action=t,this.__internal__.last_error.code=e,this.__internal__.timeout.until_response&&(clearTimeout(this.__internal__.timeout.until_response),this.__internal__.timeout.until_response=0),t==="connect"?(this.__internal__.serial.connected=!1,this.dispatch("serial:reconnect",{}),h.$dispatchChange(this)):t==="connection:start"&&(await this.serialDisconnect(),this.__internal__.serial.connected=!1,this.__internal__.aux_port_connector+=1,h.$dispatchChange(this),await this.serialConnect()),this.dispatch("serial:timeout",{...this.__internal__.last_error,bytes:e,action:t})}async disconnect(e=null){await this.serialDisconnect(),a(this,s,C).call(this,e)}async connect(){return this.isConnected?`${this.typeDevice} device ${this.deviceNumber} already connected`:new Promise((e,t)=>{W()||t("Web Serial not supported"),setTimeout(async()=>{await x(499),await this.serialConnect(),this.isConnected?e(`${this.typeDevice} device ${this.deviceNumber} connected`):t(`${this.typeDevice} device ${this.deviceNumber} not connected`)},1)})}async serialDisconnect(){try{const e=this.__internal__.serial.reader,t=this.__internal__.serial.output_stream;e&&(await e.cancel().catch(n=>this.serialErrors(n)),await this.__internal__.serial.input_done),t&&(await t.getWriter().close(),await this.__internal__.serial.output_done),this.__internal__.serial.connected&&this.__internal__.serial&&this.__internal__.serial.port&&await this.__internal__.serial.port.close()}catch(e){this.serialErrors(e)}finally{this.__internal__.serial.reader=null,this.__internal__.serial.input_done=null,this.__internal__.serial.output_stream=null,this.__internal__.serial.output_done=null,this.__internal__.serial.connected=!1,this.__internal__.serial.port=null,h.$dispatchChange(this)}}getResponseAsArrayBuffer(){this.__internal__.serial.response.as="arraybuffer"}getResponseAsArrayHex(){this.__internal__.serial.response.as="hex"}getResponseAsUint8Array(){this.__internal__.serial.response.as="uint8"}getResponseAsString(){this.__internal__.serial.response.as="string"}async serialPortsSaved(e){const t=this.serialFilters;if(this.__internal__.aux_port_connector<e.length){const i=this.__internal__.aux_port_connector;this.__internal__.serial.port=e[i]}else this.__internal__.aux_port_connector=0,this.__internal__.serial.port=await navigator.serial.requestPort({filters:t});if(!this.__internal__.serial.port)throw new Error("Select another port please")}serialErrors(e){const t=e.toString().toLowerCase();switch(!0){case t.includes("must be handling a user gesture to show a permission request"):case t.includes("the port is closed."):case t.includes("the port is closed or is not writable"):case t.includes("the port is closed or is not readable"):case t.includes("the port is closed or is not readable/writable"):case t.includes("select another port please"):case t.includes("no port selected by the user"):case t.includes("this readable stream reader has been released and cannot be used to cancel its previous owner stream"):this.dispatch("serial:need-permission",{}),h.$dispatchChange(this);break;case t.includes("the port is already open."):case t.includes("failed to open serial port"):this.serialDisconnect().then(async()=>{this.__internal__.aux_port_connector+=1,await this.serialConnect()});break;case t.includes("cannot read properties of undefined (reading 'writable')"):case t.includes("cannot read properties of null (reading 'writable')"):case t.includes("cannot read property 'writable' of null"):case t.includes("cannot read property 'writable' of undefined"):this.serialDisconnect().then(async()=>{await this.serialConnect()});break;case t.includes("'close' on 'serialport': a call to close() is already in progress."):break;case t.includes("failed to execute 'open' on 'serialport': a call to open() is already in progress."):break;case t.includes("the port is already closed."):break;case t.includes("the device has been lost"):this.dispatch("serial:lost",{}),h.$dispatchChange(this);break;case t.includes("navigator.serial is undefined"):this.dispatch("serial:unsupported",{});break;default:console.error(e);break}this.dispatch("serial:error",e)}async serialConnect(){try{this.dispatch("serial:connecting",{});const e=await a(this,s,D).call(this);if(e.length>0)await this.serialPortsSaved(e);else{const n=this.serialFilters;this.__internal__.serial.port=await navigator.serial.requestPort({filters:n})}const t=this.__internal__.serial.port;if(!t)throw new Error("No port selected by the user");await t.open(this.serialConfigPort);const i=this;t.onconnect=n=>{console.log(n),i.dispatch("serial:connected",n),h.$dispatchChange(this),i.__internal__.serial.queue.length>0&&i.dispatch("internal:queue",{})},t.ondisconnect=async()=>{await i.disconnect()},await x(this.__internal__.serial.delay_first_connection),this.__internal__.timeout.until_response=setTimeout(async()=>{await i.timeout(i.__internal__.serial.bytes_connection??[],"connection:start")},this.__internal__.time.response_connection),this.__internal__.serial.last_action="connect",await a(this,s,E).call(this,this.__internal__.serial.bytes_connection??[]),this.dispatch("serial:sent",{action:"connect",bytes:this.__internal__.serial.bytes_connection}),this.__internal__.auto_response&&a(this,s,g).call(this,this.__internal__.serial.auto_response),await a(this,s,R).call(this)}catch(e){this.serialErrors(e)}}async serialForget(){return await a(this,s,M).call(this)}decToHex(e){return typeof e=="string"&&(e=parseInt(e,10)),e.toString(16)}hexToDec(e){return parseInt(e,16)}hexMaker(e="00",t=2){return e.toString().padStart(t,"0").toLowerCase()}add0x(e){const t=[];return e.forEach((i,n)=>{t[n]="0x"+i}),t}bytesToHex(e){return this.add0x(Array.from(e,t=>this.hexMaker(t)))}validateBytes(e){let t=new Uint8Array(0);if(e instanceof Uint8Array)t=e;else if(typeof e=="string")t=this.parseStringToTextEncoder(e);else if(Array.isArray(e)&&typeof e[0]=="string")t=this.stringArrayToUint8Array(e);else if(Array.isArray(e)&&typeof e[0]=="number")t=new Uint8Array(e);else throw new Error("Invalid data type");return t}async appendToQueue(e,t){const i=this.validateBytes(e);if(["connect","connection:start"].includes(t)){if(this.__internal__.serial.connected)return;await this.serialConnect();return}this.__internal__.serial.queue.push({bytes:i,action:t}),this.dispatch("internal:queue",{})}serialSetConnectionConstant(e=1){if(this.__internal__.bypassSerialBytesConnection)return this.__internal__.serial.bytes_connection;throw console.warn("wtf?",this.bypassSerialBytesConnection),new Error(`Method not implemented 'serialSetConnectionConstant' to listen on channel ${e}`)}serialMessage(e){throw console.log(e),this.dispatch("serial:message",{code:e}),new Error("Method not implemented 'serialMessage'")}serialCorruptMessage(e){throw console.log(e),this.dispatch("serial:corrupt-message",{code:e}),new Error("Method not implemented 'serialCorruptMessage'")}clearSerialQueue(){this.__internal__.serial.queue=[]}sumHex(e){let t=0;return e.forEach(i=>{t+=parseInt(i,16)}),t.toString(16)}toString(){return JSON.stringify({__class:this.typeDevice,device_number:this.deviceNumber,uuid:this.uuid,connected:this.isConnected,connection:this.__internal__.serial.bytes_connection})}softReload(){a(this,s,j).call(this),this.dispatch("serial:soft-reload",{})}async sendConnect(){if(!this.__internal__.serial.bytes_connection)throw new Error("No connection bytes defined");await this.appendToQueue(this.__internal__.serial.bytes_connection,"connect")}async sendCustomCode({code:e=[]}={code:[]}){if(!e)throw new Error("No data to send");this.__internal__.bypassSerialBytesConnection&&(this.__internal__.serial.bytes_connection=this.validateBytes(e)),await this.appendToQueue(e,"custom")}stringToArrayHex(e){return Array.from(e).map(t=>t.charCodeAt(0).toString(16))}stringToArrayBuffer(e,t=`
|
|
1
|
+
(function(l,_){typeof exports=="object"&&typeof module<"u"?_(exports):typeof define=="function"&&define.amd?define(["exports"],_):(l=typeof globalThis<"u"?globalThis:l||self,_(l.WebSerialCore={}))})(this,function(l){"use strict";var G=Object.defineProperty;var k=l=>{throw TypeError(l)};var J=(l,_,d)=>_ in l?G(l,_,{enumerable:!0,configurable:!0,writable:!0,value:d}):l[_]=d;var m=(l,_,d)=>J(l,typeof _!="symbol"?_+"":_,d),K=(l,_,d)=>_.has(l)||k("Cannot "+d);var P=(l,_,d)=>_.has(l)?k("Cannot add the same private member more than once"):_ instanceof WeakSet?_.add(l):_.set(l,d);var o=(l,_,d)=>(K(l,_,"access private method"),d);var n,b,C,D,E,B,g,U,I,$,R,M,q,w,N,O,F,H,j,W,Q;class _ extends CustomEvent{constructor(s,e){super(s,e)}}class d extends EventTarget{constructor(){super(...arguments);m(this,"__listeners__",{debug:!1});m(this,"__debug__",!1);m(this,"__listenersCallbacks__",[])}dispatch(e,t=null){const i=new _(e,{detail:t});this.dispatchEvent(i),this.__debug__&&this.dispatchEvent(new _("debug",{detail:{type:e,data:t}}))}dispatchAsync(e,t=null,i=100){const r=this;setTimeout(()=>{r.dispatch(e,t)},i)}on(e,t){typeof this.__listeners__[e]<"u"&&!this.__listeners__[e]&&(this.__listeners__[e]=!0),this.__listenersCallbacks__.push({key:e,callback:t}),this.addEventListener(e,t)}off(e,t){this.__listenersCallbacks__=this.__listenersCallbacks__.filter(i=>!(i.key===e&&i.callback===t)),this.removeEventListener(e,t)}serialRegisterAvailableListener(e){this.__listeners__[e]||(this.__listeners__[e]=!1)}get availableListeners(){return Object.keys(this.__listeners__).sort().map(t=>({type:t,listening:this.__listeners__[t]}))}removeAllListeners(){for(const e of this.__listenersCallbacks__)this.removeEventListener(e.key,e.callback);this.__listenersCallbacks__=[],this.__listeners__={debug:!1}}}const a=class a extends d{constructor(){super(),["change"].forEach(e=>{this.serialRegisterAvailableListener(e)})}static $dispatchChange(s=null){s&&s.$checkAndDispatchConnection(),a.instance.dispatch("change",{devices:a.devices,dispatcher:s})}static typeError(s){const e=new Error;throw e.message=`Type ${s} is not supported`,e.name="DeviceTypeError",e}static registerType(s){typeof a.devices[s]>"u"&&(a.devices={...a.devices,[s]:{}})}static add(s){const e=s.typeDevice;typeof a.devices[e]>"u"&&a.registerType(e);const t=s.uuid;if(typeof a.devices[e]>"u"&&a.typeError(e),a.devices[e][t])throw new Error(`Device with id ${t} already exists`);return a.devices[e][t]=s,a.$dispatchChange(s),Object.keys(a.devices[e]).indexOf(t)}static get(s,e){return typeof a.devices[s]>"u"&&a.registerType(s),typeof a.devices[s]>"u"&&a.typeError(s),a.devices[s][e]}static getAll(s=null){return s===null?a.devices:(typeof a.devices[s]>"u"&&a.typeError(s),a.devices[s])}static getList(){return Object.values(a.devices).map(e=>Object.values(e)).flat()}static getByNumber(s,e){return typeof a.devices[s]>"u"&&a.typeError(s),Object.values(a.devices[s]).find(i=>i.deviceNumber===e)??null}static getCustom(s,e=1){return typeof a.devices[s]>"u"&&a.typeError(s),Object.values(a.devices[s]).find(i=>i.deviceNumber===e)??null}static async connectToAll(){const s=a.getList();for(const e of s)e.isConnected||await e.connect().catch(console.warn);return Promise.resolve(a.areAllConnected())}static async disconnectAll(){const s=a.getList();for(const e of s)e.isDisconnected||await e.disconnect().catch(console.warn);return Promise.resolve(a.areAllDisconnected())}static async areAllConnected(){const s=a.getList();for(const e of s)if(!e.isConnected)return Promise.resolve(!1);return Promise.resolve(!0)}static async areAllDisconnected(){const s=a.getList();for(const e of s)if(!e.isDisconnected)return Promise.resolve(!1);return Promise.resolve(!0)}static async getAllConnected(){const s=a.getList();return Promise.resolve(s.filter(e=>e.isConnected))}static async getAllDisconnected(){const s=a.getList();return Promise.resolve(s.filter(e=>e.isDisconnected))}};m(a,"instance"),m(a,"devices",{});let u=a;u.instance||(u.instance=new u);function A(x=100){return new Promise(s=>setTimeout(()=>s(),x))}function V(){return"serial"in navigator}const T={baudRate:9600,dataBits:8,stopBits:1,parity:"none",bufferSize:32768,flowControl:"none"};class z extends d{constructor({filters:e=null,config_port:t=T,no_device:i=1,device_listen_on_channel:r=1,bypassSerialBytesConnection:c=!1}={filters:null,config_port:T,no_device:1,device_listen_on_channel:1,bypassSerialBytesConnection:!1}){super();P(this,n);m(this,"__internal__",{bypassSerialBytesConnection:!1,auto_response:!1,device_number:1,aux_port_connector:0,last_error:{message:null,action:null,code:null,no_code:0},serial:{aux_connecting:"idle",connecting:!1,connected:!1,port:null,last_action:null,response:{length:null,buffer:new Uint8Array([]),as:"uint8",replacer:/[\n\r]+/g,limiter:null,prefixLimiter:!1,sufixLimiter:!0,delimited:!1},reader:null,input_done:null,output_done:null,input_stream:null,output_stream:null,keep_reading:!0,time_until_send_bytes:void 0,delay_first_connection:200,bytes_connection:null,filters:[],config_port:T,queue:[],auto_response:["DD","DD"],free_timeout_ms:50,useRTSCTS:!1},device:{type:"unknown",id:window.crypto.randomUUID(),listen_on_port:null},time:{response_connection:500,response_general:2e3},timeout:{until_response:0},interval:{reconnection:0}});if(!("serial"in navigator))throw new Error("Web Serial not supported");e&&(this.serialFilters=e),t&&(this.serialConfigPort=t),c&&(this.__internal__.bypassSerialBytesConnection=c),i&&o(this,n,W).call(this,i),r&&["number","string"].includes(typeof r)&&(this.listenOnChannel=r),o(this,n,O).call(this),o(this,n,F).call(this)}set listenOnChannel(e){if(typeof e=="string"&&(e=parseInt(e)),isNaN(e)||e<1||e>255)throw new Error("Invalid port number");this.__internal__.device.listen_on_port=e,!this.__internal__.bypassSerialBytesConnection&&(this.__internal__.serial.bytes_connection=this.serialSetConnectionConstant(e))}get lastAction(){return this.__internal__.serial.last_action}get listenOnChannel(){return this.__internal__.device.listen_on_port??1}set serialFilters(e){if(this.isConnected)throw new Error("Cannot change serial filters while connected");this.__internal__.serial.filters=e}get serialFilters(){return this.__internal__.serial.filters}set serialConfigPort(e){if(this.isConnected)throw new Error("Cannot change serial filters while connected");this.__internal__.serial.config_port=e}get serialConfigPort(){return this.__internal__.serial.config_port}get useRTSCTS(){return this.__internal__.serial.useRTSCTS}set useRTSCTS(e){this.__internal__.serial.useRTSCTS=e}get isConnected(){const e=this.__internal__.serial.connected,t=o(this,n,b).call(this,this.__internal__.serial.port);return e&&!t&&o(this,n,C).call(this,{error:"Port is closed, not readable or writable."}),this.__internal__.serial.connected=t,this.__internal__.serial.connected}get isConnecting(){return this.__internal__.serial.connecting}get isDisconnected(){const e=this.__internal__.serial.connected,t=o(this,n,b).call(this,this.__internal__.serial.port);return!e&&t&&(this.dispatch("serial:connected"),o(this,n,w).call(this,!1),u.$dispatchChange(this)),this.__internal__.serial.connected=t,!this.__internal__.serial.connected}get deviceNumber(){return this.__internal__.device_number}get uuid(){return this.__internal__.device.id}get typeDevice(){return this.__internal__.device.type}get queue(){return this.__internal__.serial.queue}get responseDelimited(){return this.__internal__.serial.response.delimited}set responseDelimited(e){if(typeof e!="boolean")throw new Error("responseDelimited must be a boolean");this.__internal__.serial.response.delimited=e}get responsePrefixLimited(){return this.__internal__.serial.response.prefixLimiter}set responsePrefixLimited(e){if(typeof e!="boolean")throw new Error("responsePrefixLimited must be a boolean");this.__internal__.serial.response.prefixLimiter=e}get responseSufixLimited(){return this.__internal__.serial.response.sufixLimiter}set responseSufixLimited(e){if(typeof e!="boolean")throw new Error("responseSufixLimited must be a boolean");this.__internal__.serial.response.sufixLimiter=e}get responseLimiter(){return this.__internal__.serial.response.limiter}set responseLimiter(e){if(typeof e!="string"&&!(e instanceof RegExp))throw new Error("responseLimiter must be a string or a RegExp");this.__internal__.serial.response.limiter=e}get fixedBytesMessage(){return this.__internal__.serial.response.length}set fixedBytesMessage(e){if(e!==null&&(typeof e!="number"||e<1))throw new Error("Invalid length for fixed bytes message");this.__internal__.serial.response.length=e}get timeoutBeforeResponseBytes(){return this.__internal__.serial.free_timeout_ms||50}set timeoutBeforeResponseBytes(e){if(e!==void 0&&(typeof e!="number"||e<1))throw new Error("Invalid timeout for response bytes");this.__internal__.serial.free_timeout_ms=e??50}get bypassSerialBytesConnection(){return this.__internal__.bypassSerialBytesConnection}set bypassSerialBytesConnection(e){if(typeof e!="boolean")throw new Error("bypassSerialBytesConnection must be a boolean");this.__internal__.bypassSerialBytesConnection=e}async timeout(e,t){this.__internal__.last_error.message="Operation response timed out.",this.__internal__.last_error.action=t,this.__internal__.last_error.code=e,this.__internal__.timeout.until_response&&(clearTimeout(this.__internal__.timeout.until_response),this.__internal__.timeout.until_response=0),t==="connect"?(this.__internal__.serial.connected=!1,this.dispatch("serial:reconnect",{}),u.$dispatchChange(this)):t==="connection:start"&&(await this.serialDisconnect(),this.__internal__.serial.connected=!1,this.__internal__.aux_port_connector+=1,u.$dispatchChange(this),await this.serialConnect()),this.dispatch("serial:timeout",{...this.__internal__.last_error,bytes:e,action:t})}async disconnect(e=null){await this.serialDisconnect(),o(this,n,C).call(this,e)}async connect(){return this.isConnected?!0:(this.__internal__.serial.aux_connecting="idle",new Promise((e,t)=>{V()||t("Web Serial not supported");const i=o(this,n,D).bind(this);this.on("serial:connecting",i);const r=setInterval(()=>{this.__internal__.serial.aux_connecting==="finished"?(clearInterval(r),this.__internal__.serial.aux_connecting="idle",this.off("serial:connecting",i),this.isConnected?e(!0):t(`${this.typeDevice} device ${this.deviceNumber} not connected`)):this.__internal__.serial.aux_connecting==="connecting"&&(this.__internal__.serial.aux_connecting="idle",this.dispatch("serial:connecting",{active:!0}))},100);this.serialConnect()}))}async serialDisconnect(){try{const e=this.__internal__.serial.reader,t=this.__internal__.serial.output_stream;e&&(await e.cancel().catch(r=>this.serialErrors(r)),await this.__internal__.serial.input_done),t&&(await t.getWriter().close(),await this.__internal__.serial.output_done),this.__internal__.serial.connected&&this.__internal__.serial&&this.__internal__.serial.port&&await this.__internal__.serial.port.close()}catch(e){this.serialErrors(e)}finally{this.__internal__.serial.reader=null,this.__internal__.serial.input_done=null,this.__internal__.serial.output_stream=null,this.__internal__.serial.output_done=null,this.__internal__.serial.connected=!1,this.__internal__.serial.port=null,u.$dispatchChange(this)}}getResponseAsArrayBuffer(){this.__internal__.serial.response.as="arraybuffer"}getResponseAsArrayHex(){this.__internal__.serial.response.as="hex"}getResponseAsUint8Array(){this.__internal__.serial.response.as="uint8"}getResponseAsString(){this.__internal__.serial.response.as="string"}async serialPortsSaved(e){const t=this.serialFilters;if(this.__internal__.aux_port_connector<e.length){const i=this.__internal__.aux_port_connector;this.__internal__.serial.port=e[i]}else this.__internal__.aux_port_connector=0,this.__internal__.serial.port=await navigator.serial.requestPort({filters:t});if(!this.__internal__.serial.port)throw new Error("Select another port please")}serialErrors(e){const t=e.toString().toLowerCase();switch(!0){case t.includes("must be handling a user gesture to show a permission request"):case t.includes("the port is closed."):case t.includes("the port is closed or is not writable"):case t.includes("the port is closed or is not readable"):case t.includes("the port is closed or is not readable/writable"):case t.includes("select another port please"):case t.includes("no port selected by the user"):case t.includes("this readable stream reader has been released and cannot be used to cancel its previous owner stream"):this.dispatch("serial:need-permission",{}),u.$dispatchChange(this);break;case t.includes("the port is already open."):case t.includes("failed to open serial port"):this.serialDisconnect().then(async()=>{this.__internal__.aux_port_connector+=1,await this.serialConnect()});break;case t.includes("cannot read properties of undefined (reading 'writable')"):case t.includes("cannot read properties of null (reading 'writable')"):case t.includes("cannot read property 'writable' of null"):case t.includes("cannot read property 'writable' of undefined"):this.serialDisconnect().then(async()=>{await this.serialConnect()});break;case t.includes("'close' on 'serialport': a call to close() is already in progress."):break;case t.includes("failed to execute 'open' on 'serialport': a call to open() is already in progress."):break;case t.includes("the port is already closed."):break;case t.includes("the device has been lost"):this.dispatch("serial:lost",{}),u.$dispatchChange(this);break;case t.includes("navigator.serial is undefined"):this.dispatch("serial:unsupported",{});break;default:console.error(e);break}this.dispatch("serial:error",e)}async serialConnect(){try{o(this,n,w).call(this,!0);const e=await o(this,n,U).call(this);if(e.length>0)await this.serialPortsSaved(e);else{const r=this.serialFilters;this.__internal__.serial.port=await navigator.serial.requestPort({filters:r})}const t=this.__internal__.serial.port;if(!t)throw new Error("No port selected by the user");await t.open(this.serialConfigPort);const i=this;t.onconnect=r=>{var c;i.dispatch("serial:connected",r),o(c=i,n,w).call(c,!1),u.$dispatchChange(this),i.__internal__.serial.queue.length>0&&i.dispatch("internal:queue",{})},t.ondisconnect=async()=>{await i.disconnect()},await A(this.__internal__.serial.delay_first_connection),this.__internal__.timeout.until_response=setTimeout(async()=>{await i.timeout(i.__internal__.serial.bytes_connection??[],"connection:start")},this.__internal__.time.response_connection),this.__internal__.serial.last_action="connect",await o(this,n,E).call(this,this.__internal__.serial.bytes_connection??[]),this.dispatch("serial:sent",{action:"connect",bytes:this.__internal__.serial.bytes_connection}),this.__internal__.auto_response&&o(this,n,g).call(this,this.__internal__.serial.auto_response),await o(this,n,q).call(this)}catch(e){o(this,n,w).call(this,!1),this.serialErrors(e)}}async serialForget(){return await o(this,n,N).call(this)}decToHex(e){return typeof e=="string"&&(e=parseInt(e,10)),e.toString(16)}hexToDec(e){return parseInt(e,16)}hexMaker(e="00",t=2){return e.toString().padStart(t,"0").toLowerCase()}add0x(e){const t=[];return e.forEach((i,r)=>{t[r]="0x"+i}),t}bytesToHex(e){return this.add0x(Array.from(e,t=>this.hexMaker(t)))}validateBytes(e){let t=new Uint8Array(0);if(e instanceof Uint8Array)t=e;else if(typeof e=="string")t=this.parseStringToTextEncoder(e);else if(Array.isArray(e)&&typeof e[0]=="string")t=this.stringArrayToUint8Array(e);else if(Array.isArray(e)&&typeof e[0]=="number")t=new Uint8Array(e);else throw new Error("Invalid data type");return t}async appendToQueue(e,t){const i=this.validateBytes(e);if(["connect","connection:start"].includes(t)){if(this.__internal__.serial.connected)return;await this.serialConnect();return}this.__internal__.serial.queue.push({bytes:i,action:t}),this.dispatch("internal:queue",{})}serialSetConnectionConstant(e=1){if(this.__internal__.bypassSerialBytesConnection)return this.__internal__.serial.bytes_connection;throw new Error(`Method not implemented 'serialSetConnectionConstant' to listen on channel ${e}`)}serialMessage(e){throw console.log(e),this.dispatch("serial:message",{code:e}),new Error("Method not implemented 'serialMessage'")}serialCorruptMessage(e){throw console.log(e),this.dispatch("serial:corrupt-message",{code:e}),new Error("Method not implemented 'serialCorruptMessage'")}clearSerialQueue(){this.__internal__.serial.queue=[]}sumHex(e){let t=0;return e.forEach(i=>{t+=parseInt(i,16)}),t.toString(16)}toString(){return JSON.stringify({__class:this.typeDevice,device_number:this.deviceNumber,uuid:this.uuid,connected:this.isConnected,connection:this.__internal__.serial.bytes_connection})}softReload(){o(this,n,Q).call(this),this.dispatch("serial:soft-reload",{})}async sendConnect(){if(!this.__internal__.serial.bytes_connection)throw new Error("No connection bytes defined");await this.appendToQueue(this.__internal__.serial.bytes_connection,"connect")}async sendCustomCode({code:e=[]}={code:[]}){if(!e)throw new Error("No data to send");this.__internal__.bypassSerialBytesConnection&&(this.__internal__.serial.bytes_connection=this.validateBytes(e)),await this.appendToQueue(e,"custom")}stringToArrayHex(e){return Array.from(e).map(t=>t.charCodeAt(0).toString(16))}stringToArrayBuffer(e,t=`
|
|
2
2
|
`){return this.parseStringToTextEncoder(e,t).buffer}parseStringToTextEncoder(e="",t=`
|
|
3
3
|
`){const i=new TextEncoder;return e+=t,i.encode(e)}parseStringToBytes(e="",t=`
|
|
4
|
-
`){const i=this.parseStringToTextEncoder(e,t);return Array.from(i).map(
|
|
4
|
+
`){const i=this.parseStringToTextEncoder(e,t);return Array.from(i).map(r=>r.toString(16))}parseUint8ToHex(e){return Array.from(e).map(t=>t.toString(16))}parseHexToUint8(e){return new Uint8Array(e.map(t=>parseInt(t,16)))}stringArrayToUint8Array(e){const t=[];return typeof e=="string"?this.parseStringToTextEncoder(e).buffer:(e.forEach(i=>{const r=i.replace("0x","");t.push(parseInt(r,16))}),new Uint8Array(t))}parseUint8ArrayToString(e){let t=new Uint8Array(0);e instanceof Uint8Array?t=e:t=this.stringArrayToUint8Array(e),e=this.parseUint8ToHex(t);const i=e.map(r=>parseInt(r,16));return this.__internal__.serial.response.replacer?String.fromCharCode(...i).replace(this.__internal__.serial.response.replacer,""):String.fromCharCode(...i)}hexToAscii(e){const t=e.toString();let i="";for(let r=0;r<t.length;r+=2)i+=String.fromCharCode(parseInt(t.substring(r,2),16));return i}asciiToHex(e){const t=[];for(let i=0,r=e.length;i<r;i++){const c=Number(e.charCodeAt(i)).toString(16);t.push(c)}return t.join("")}$checkAndDispatchConnection(){return this.isConnected}}n=new WeakSet,b=function(e){return!!(e&&e.readable&&e.writable)},C=function(e=null){this.__internal__.serial.connected=!1,this.__internal__.aux_port_connector=0,this.dispatch("serial:disconnected",e),u.$dispatchChange(this)},D=function(e){this.__internal__.serial.aux_connecting=e.detail.active?"connecting":"finished"},E=async function(e){const t=this.__internal__.serial.port;if(!t||t&&(!t.readable||!t.writable))throw o(this,n,C).call(this,{error:"Port is closed, not readable or writable."}),new Error("The port is closed or is not readable/writable");const i=this.validateBytes(e);if(this.useRTSCTS&&await o(this,n,B).call(this,t,5e3),t.writable===null)return;const r=t.writable.getWriter();await r.write(i),r.releaseLock()},B=async function(e,t=5e3){const i=Date.now();for(;;){if(Date.now()-i>t)throw new Error("Timeout waiting for clearToSend signal");const{clearToSend:r}=await e.getSignals();if(r)return;await A(100)}},g=function(e=new Uint8Array([]),t=!1){if(e&&e.length>0){const i=this.__internal__.serial.connected;if(this.__internal__.serial.connected=o(this,n,b).call(this,this.__internal__.serial.port),u.$dispatchChange(this),!i&&this.__internal__.serial.connected&&(this.dispatch("serial:connected"),o(this,n,w).call(this,!1)),this.__internal__.interval.reconnection&&(clearInterval(this.__internal__.interval.reconnection),this.__internal__.interval.reconnection=0),this.__internal__.timeout.until_response&&(clearTimeout(this.__internal__.timeout.until_response),this.__internal__.timeout.until_response=0),this.__internal__.serial.response.as==="hex")t?this.serialCorruptMessage(this.parseUint8ToHex(e)):this.serialMessage(this.parseUint8ToHex(e));else if(this.__internal__.serial.response.as==="uint8")t?this.serialCorruptMessage(e):this.serialMessage(e);else if(this.__internal__.serial.response.as==="string"){const r=this.parseUint8ArrayToString(e);if(this.__internal__.serial.response.limiter!==null){const c=r.split(this.__internal__.serial.response.limiter);for(const h in c)c[h]&&(t?this.serialCorruptMessage(c[h]):this.serialMessage(c[h]))}else t?this.serialCorruptMessage(r):this.serialMessage(r)}else{const r=this.stringToArrayBuffer(this.parseUint8ArrayToString(e));t?this.serialCorruptMessage(r):this.serialMessage(r)}}this.__internal__.serial.queue.length!==0&&this.dispatch("internal:queue",{})},U=async function(){const e=this.serialFilters,t=await navigator.serial.getPorts({filters:e});return e.length===0?t:t.filter(r=>{const c=r.getInfo();return e.some(h=>c.usbProductId===h.usbProductId&&c.usbVendorId===h.usbVendorId)}).filter(r=>!o(this,n,b).call(this,r))},I=function(e){if(e){const t=this.__internal__.serial.response.buffer,i=new Uint8Array(t.length+e.byteLength);i.set(t,0),i.set(new Uint8Array(e),t.length),this.__internal__.serial.response.buffer=i}},$=async function(){this.__internal__.serial.time_until_send_bytes&&(clearTimeout(this.__internal__.serial.time_until_send_bytes),this.__internal__.serial.time_until_send_bytes=0),this.__internal__.serial.time_until_send_bytes=setTimeout(()=>{this.__internal__.serial.response.buffer&&o(this,n,g).call(this,this.__internal__.serial.response.buffer),this.__internal__.serial.response.buffer=new Uint8Array(0)},this.__internal__.serial.free_timeout_ms||50)},R=async function(){const e=this.__internal__.serial.response.length;let t=this.__internal__.serial.response.buffer;if(this.__internal__.serial.time_until_send_bytes&&(clearTimeout(this.__internal__.serial.time_until_send_bytes),this.__internal__.serial.time_until_send_bytes=0),!(e===null||!t||t.length===0)){for(;t.length>=e;){const i=t.slice(0,e);o(this,n,g).call(this,i),t=t.slice(e)}this.__internal__.serial.response.buffer=t,t.length>0&&(this.__internal__.serial.time_until_send_bytes=setTimeout(()=>{o(this,n,g).call(this,this.__internal__.serial.response.buffer,!0)},this.__internal__.serial.free_timeout_ms||50))}},M=async function(){const{limiter:e,prefixLimiter:t=!1,sufixLimiter:i=!0}=this.__internal__.serial.response;if(!e)throw new Error("No limiter defined for delimited serial response");const r=this.__internal__.serial.response.buffer;if(!e||!r||r.length===0)return;this.__internal__.serial.time_until_send_bytes&&(clearTimeout(this.__internal__.serial.time_until_send_bytes),this.__internal__.serial.time_until_send_bytes=0);let h=new TextDecoder().decode(r);const v=[];if(typeof e=="string"){let f;if(t&&i)f=new RegExp(`${e}([^${e}]+)${e}`,"g");else if(t)f=new RegExp(`${e}([^${e}]*)`,"g");else if(i)f=new RegExp(`([^${e}]+)${e}`,"g");else return;let y,p=0;for(;(y=f.exec(h))!==null;)v.push(new TextEncoder().encode(y[1])),p=f.lastIndex;h=h.slice(p)}else if(e instanceof RegExp){let f,y=0;if(t&&i){const p=new RegExp(`${e.source}(.*?)${e.source}`,"g");for(;(f=p.exec(h))!==null;)v.push(new TextEncoder().encode(f[1])),y=p.lastIndex}else if(i)for(;(f=e.exec(h))!==null;){const p=f.index,S=h.slice(y,p);v.push(new TextEncoder().encode(S)),y=e.lastIndex}else if(t){const p=h.split(e);p.shift();for(const S of p)v.push(new TextEncoder().encode(S));h=""}h=h.slice(y)}for(const f of v)o(this,n,g).call(this,f);const L=new TextEncoder().encode(h);this.__internal__.serial.response.buffer=L,L.length>0&&(this.__internal__.serial.time_until_send_bytes=setTimeout(()=>{o(this,n,g).call(this,this.__internal__.serial.response.buffer,!0),this.__internal__.serial.response.buffer=new Uint8Array(0)},this.__internal__.serial.free_timeout_ms??50))},q=async function(){const e=this.__internal__.serial.port;if(!e||!e.readable)throw new Error("Port is not readable");const t=e.readable.getReader();this.__internal__.serial.reader=t;try{for(;this.__internal__.serial.keep_reading;){const{value:i,done:r}=await t.read();if(r)break;o(this,n,I).call(this,i),this.__internal__.serial.response.delimited?await o(this,n,M).call(this):this.__internal__.serial.response.length===null?await o(this,n,$).call(this):await o(this,n,R).call(this)}}catch(i){this.serialErrors(i)}finally{t.releaseLock(),this.__internal__.serial.keep_reading=!0,this.__internal__.serial.port&&await this.__internal__.serial.port.close()}},w=function(e){e!==this.__internal__.serial.connecting&&(this.__internal__.serial.connecting=e,e?this.dispatch("serial:connecting",{active:!0}):this.dispatch("serial:connecting",{active:!1}))},N=async function(){return typeof window>"u"?!1:"serial"in navigator&&"forget"in SerialPort.prototype&&this.__internal__.serial.port?(await this.__internal__.serial.port.forget(),!0):!1},O=function(){["serial:connected","serial:connecting","serial:reconnect","serial:timeout","serial:disconnected","serial:sent","serial:soft-reload","serial:message","serial:corrupt-message","unknown","serial:need-permission","serial:lost","serial:unsupported","serial:error","debug"].forEach(t=>{this.serialRegisterAvailableListener(t)})},F=function(){const e=this;this.on("internal:queue",async()=>{var t;await o(t=e,n,j).call(t)}),o(this,n,H).call(this)},H=function(){const e=this;navigator.serial.addEventListener("connect",async()=>{e.isDisconnected&&await e.serialConnect().catch(()=>{})})},j=async function(){if(!o(this,n,b).call(this,this.__internal__.serial.port)){o(this,n,C).call(this,{error:"Port is closed, not readable or writable."}),await this.serialConnect();return}if(this.__internal__.timeout.until_response||this.__internal__.serial.queue.length===0)return;const e=this.__internal__.serial.queue[0];let t=this.__internal__.time.response_general;if(e.action==="connect"&&(t=this.__internal__.time.response_connection),this.__internal__.timeout.until_response=setTimeout(async()=>{await this.timeout(e.bytes,e.action)},t),this.__internal__.serial.last_action=e.action??"unknown",await o(this,n,E).call(this,e.bytes),this.dispatch("serial:sent",{action:e.action,bytes:e.bytes}),this.__internal__.auto_response){let r=new Uint8Array(0);try{r=this.validateBytes(this.__internal__.serial.auto_response)}catch(c){this.serialErrors(c)}o(this,n,g).call(this,r)}const i=[...this.__internal__.serial.queue];this.__internal__.serial.queue=i.splice(1)},W=function(e=1){this.__internal__.device_number=e,!this.__internal__.bypassSerialBytesConnection&&(this.__internal__.serial.bytes_connection=this.serialSetConnectionConstant(e))},Q=function(){this.__internal__.last_error={message:null,action:null,code:null,no_code:0}},l.Core=z,l.Devices=u,l.Dispatcher=d,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})});
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "webserial-core",
|
|
3
3
|
"description": "Webserial Core to easy connections with serial devices",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.10",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"author": "danidoble",
|
|
@@ -45,13 +45,13 @@
|
|
|
45
45
|
"format": "prettier --write ./lib/**/*.ts"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@eslint/js": "^9.
|
|
48
|
+
"@eslint/js": "^9.29.0",
|
|
49
49
|
"@types/w3c-web-serial": "^1.0.8",
|
|
50
|
-
"eslint": "^9.
|
|
50
|
+
"eslint": "^9.29.0",
|
|
51
51
|
"globals": "^15.15.0",
|
|
52
52
|
"prettier": "3.4.2",
|
|
53
53
|
"typescript": "~5.7.3",
|
|
54
|
-
"typescript-eslint": "^8.
|
|
54
|
+
"typescript-eslint": "^8.35.0",
|
|
55
55
|
"vite": "^6.3.5"
|
|
56
56
|
},
|
|
57
57
|
"publishConfig": {
|