@myshkouski/web-serial-polyfill 2.0.0 → 2.0.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.
package/dist/serial.d.ts CHANGED
@@ -1,6 +1,3 @@
1
- /// <reference types="w3c-web-usb" />
2
- /// <reference types="web" />
3
- /// <reference types="w3c-web-serial" />
4
1
  export declare enum SerialPolyfillProtocol {
5
2
  UsbCdcAcm = 0
6
3
  }
package/dist/serial.js CHANGED
@@ -79,6 +79,10 @@ function findEndpoint(iface, direction) {
79
79
  * [1]: https://streams.spec.whatwg.org/#underlying-source-api
80
80
  */
81
81
  class UsbEndpointUnderlyingSource {
82
+ device_;
83
+ endpoint_;
84
+ onError_;
85
+ type;
82
86
  /**
83
87
  * Constructs a new UnderlyingSource that will pull data from the specified
84
88
  * endpoint on the given USB device.
@@ -98,33 +102,30 @@ class UsbEndpointUnderlyingSource {
98
102
  *
99
103
  * @param {ReadableByteStreamController} controller
100
104
  */
101
- pull(controller) {
102
- (async () => {
103
- var _a;
104
- let chunkSize;
105
- if (controller.desiredSize) {
106
- const d = controller.desiredSize / this.endpoint_.packetSize;
107
- chunkSize = Math.ceil(d) * this.endpoint_.packetSize;
108
- }
109
- else {
110
- chunkSize = this.endpoint_.packetSize;
111
- }
112
- try {
113
- const result = await this.device_.transferIn(this.endpoint_.endpointNumber, chunkSize);
114
- if (result.status != 'ok') {
115
- controller.error(`USB error: ${result.status}`);
116
- this.onError_();
117
- }
118
- if ((_a = result.data) === null || _a === void 0 ? void 0 : _a.buffer) {
119
- const chunk = new Uint8Array(result.data.buffer, result.data.byteOffset, result.data.byteLength);
120
- controller.enqueue(chunk);
121
- }
122
- }
123
- catch (error) {
124
- controller.error(error.toString());
105
+ async pull(controller) {
106
+ let chunkSize;
107
+ if (controller.desiredSize) {
108
+ const d = controller.desiredSize / this.endpoint_.packetSize;
109
+ chunkSize = Math.ceil(d) * this.endpoint_.packetSize;
110
+ }
111
+ else {
112
+ chunkSize = this.endpoint_.packetSize;
113
+ }
114
+ try {
115
+ const result = await this.device_.transferIn(this.endpoint_.endpointNumber, chunkSize);
116
+ if (result.status != 'ok') {
117
+ controller.error(`USB error: ${result.status}`);
125
118
  this.onError_();
126
119
  }
127
- })();
120
+ if (result.data?.buffer) {
121
+ const chunk = new Uint8Array(toArrayBuffer(result.data.buffer), result.data.byteOffset, result.data.byteLength);
122
+ controller.enqueue(chunk);
123
+ }
124
+ }
125
+ catch (error) {
126
+ controller.error(error.toString());
127
+ this.onError_();
128
+ }
128
129
  }
129
130
  }
130
131
  /**
@@ -134,6 +135,9 @@ class UsbEndpointUnderlyingSource {
134
135
  * [2]: https://streams.spec.whatwg.org/#underlying-sink-api
135
136
  */
136
137
  class UsbEndpointUnderlyingSink {
138
+ device_;
139
+ endpoint_;
140
+ onError_;
137
141
  /**
138
142
  * Constructs a new UnderlyingSink that will write data to the specified
139
143
  * endpoint on the given USB device.
@@ -169,6 +173,16 @@ class UsbEndpointUnderlyingSink {
169
173
  }
170
174
  /** a class used to control serial devices over WebUSB */
171
175
  export class SerialPort {
176
+ polyfillOptions_;
177
+ device_;
178
+ controlInterface_;
179
+ transferInterface_;
180
+ inEndpoint_;
181
+ outEndpoint_;
182
+ serialOptions_;
183
+ readable_;
184
+ writable_;
185
+ outputSignals_;
172
186
  /**
173
187
  * constructor taking a WebUSB device that creates a SerialPort instance.
174
188
  * @param {USBDevice} device A device acquired from the WebUSB API
@@ -176,7 +190,7 @@ export class SerialPort {
176
190
  * configure the polyfill.
177
191
  */
178
192
  constructor(device, polyfillOptions) {
179
- this.polyfillOptions_ = Object.assign(Object.assign({}, kDefaultPolyfillOptions), polyfillOptions);
193
+ this.polyfillOptions_ = { ...kDefaultPolyfillOptions, ...polyfillOptions };
180
194
  this.outputSignals_ = {
181
195
  dataTerminalReady: false,
182
196
  requestToSend: false,
@@ -194,12 +208,11 @@ export class SerialPort {
194
208
  * @return {ReadableStream} the current readable stream
195
209
  */
196
210
  get readable() {
197
- var _a;
198
211
  if (!this.readable_ && this.device_.opened) {
199
212
  this.readable_ = new ReadableStream(new UsbEndpointUnderlyingSource(this.device_, this.inEndpoint_, () => {
200
213
  this.readable_ = null;
201
214
  }), {
202
- highWaterMark: (_a = this.serialOptions_.bufferSize) !== null && _a !== void 0 ? _a : kDefaultBufferSize,
215
+ highWaterMark: this.serialOptions_.bufferSize ?? kDefaultBufferSize,
203
216
  });
204
217
  }
205
218
  return this.readable_;
@@ -210,12 +223,11 @@ export class SerialPort {
210
223
  * @return {WritableStream} the current writable stream
211
224
  */
212
225
  get writable() {
213
- var _a;
214
226
  if (!this.writable_ && this.device_.opened) {
215
227
  this.writable_ = new WritableStream(new UsbEndpointUnderlyingSink(this.device_, this.outEndpoint_, () => {
216
228
  this.writable_ = null;
217
229
  }), new ByteLengthQueuingStrategy({
218
- highWaterMark: (_a = this.serialOptions_.bufferSize) !== null && _a !== void 0 ? _a : kDefaultBufferSize,
230
+ highWaterMark: this.serialOptions_.bufferSize ?? kDefaultBufferSize,
219
231
  }));
220
232
  }
221
233
  return this.writable_;
@@ -268,6 +280,9 @@ export class SerialPort {
268
280
  this.writable_ = null;
269
281
  if (this.device_.opened) {
270
282
  await this.setSignals({ dataTerminalReady: false, requestToSend: false });
283
+ if (this.transferInterface_.claimed) {
284
+ await this.device_.releaseInterface(this.transferInterface_.interfaceNumber);
285
+ }
271
286
  await this.device_.close();
272
287
  }
273
288
  }
@@ -297,7 +312,7 @@ export class SerialPort {
297
312
  * set
298
313
  */
299
314
  reconfigure(options) {
300
- this.serialOptions_ = Object.assign(Object.assign({}, this.serialOptions_), options);
315
+ this.serialOptions_ = { ...this.serialOptions_, ...options };
301
316
  this.validateOptions();
302
317
  return this.setLineCoding();
303
318
  }
@@ -308,7 +323,7 @@ export class SerialPort {
308
323
  * has been changed.
309
324
  */
310
325
  async setSignals(signals) {
311
- this.outputSignals_ = Object.assign(Object.assign({}, this.outputSignals_), signals);
326
+ this.outputSignals_ = { ...this.outputSignals_, ...signals };
312
327
  if (signals.dataTerminalReady !== undefined ||
313
328
  signals.requestToSend !== undefined) {
314
329
  // The Set_Control_Line_State command expects a bitmap containing the
@@ -407,14 +422,13 @@ export class SerialPort {
407
422
  * @return {Promise} a promise that will resolve when the options are set
408
423
  */
409
424
  async setLineCoding() {
410
- var _a, _b, _c;
411
425
  // Ref: USB CDC specification version 1.1 §6.2.12.
412
426
  const buffer = new ArrayBuffer(7);
413
427
  const view = new DataView(buffer);
414
428
  view.setUint32(0, this.serialOptions_.baudRate, true);
415
- view.setUint8(4, kStopBitsIndexMapping.indexOf((_a = this.serialOptions_.stopBits) !== null && _a !== void 0 ? _a : kDefaultStopBits));
416
- view.setUint8(5, kParityIndexMapping.indexOf((_b = this.serialOptions_.parity) !== null && _b !== void 0 ? _b : kDefaultParity));
417
- view.setUint8(6, (_c = this.serialOptions_.dataBits) !== null && _c !== void 0 ? _c : kDefaultDataBits);
429
+ view.setUint8(4, kStopBitsIndexMapping.indexOf(this.serialOptions_.stopBits ?? kDefaultStopBits));
430
+ view.setUint8(5, kParityIndexMapping.indexOf(this.serialOptions_.parity ?? kDefaultParity));
431
+ view.setUint8(6, this.serialOptions_.dataBits ?? kDefaultDataBits);
418
432
  const result = await this.device_.controlTransferOut({
419
433
  'requestType': 'class',
420
434
  'recipient': 'interface',
@@ -429,6 +443,7 @@ export class SerialPort {
429
443
  }
430
444
  /** generic implementation of navigator.serial object */
431
445
  export class BaseSerial {
446
+ usb;
432
447
  /**
433
448
  * @param {USB} usb Instance of navigator.usb object
434
449
  */
@@ -443,7 +458,7 @@ export class BaseSerial {
443
458
  * @return {Promise<SerialPort>}
444
459
  */
445
460
  async requestPort(options, polyfillOptions) {
446
- polyfillOptions = Object.assign(Object.assign({}, kDefaultPolyfillOptions), polyfillOptions);
461
+ polyfillOptions = { ...kDefaultPolyfillOptions, ...polyfillOptions };
447
462
  const usbFilters = [];
448
463
  if (options && options.filters) {
449
464
  for (const filter of options.filters) {
@@ -477,7 +492,7 @@ export class BaseSerial {
477
492
  * ports.
478
493
  */
479
494
  async getPorts(polyfillOptions) {
480
- polyfillOptions = Object.assign(Object.assign({}, kDefaultPolyfillOptions), polyfillOptions);
495
+ polyfillOptions = { ...kDefaultPolyfillOptions, ...polyfillOptions };
481
496
  const devices = await this.usb.getDevices();
482
497
  const ports = [];
483
498
  devices.forEach((device) => {
@@ -503,4 +518,18 @@ export class Serial extends BaseSerial {
503
518
  return new SerialPort(device, options);
504
519
  }
505
520
  }
521
+ function toArrayBuffer(buffer) {
522
+ if (buffer instanceof ArrayBuffer) {
523
+ // Return buffer when it's already an ArrayBuffer
524
+ return buffer;
525
+ }
526
+ // Create a new ArrayBuffer with the same byte length
527
+ const arrayBuffer = new ArrayBuffer(buffer.byteLength);
528
+ // Create views for both buffers
529
+ const sharedArrayBufferView = new Uint8Array(buffer);
530
+ const arrayBufferView = new Uint8Array(arrayBuffer);
531
+ // Copy the contents
532
+ arrayBufferView.set(sharedArrayBufferView);
533
+ return arrayBuffer;
534
+ }
506
535
  //# sourceMappingURL=serial.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"serial.js","sourceRoot":"","sources":["../serial.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serial.js","sourceRoot":"","sources":["../serial.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@myshkouski/web-serial-polyfill",
3
- "version": "2.0.0",
3
+ "version": "2.0.2",
4
4
  "description": "An implementation of the [Serial API](https://wicg.github.io/serial) on top of the [WebUSB API](https://wicg.github.io/webusb) for use with USB-to-serial adapters. Use of this library is limited to hardware and platforms where the device is accessible via the WebUSB API because it has not been claimed by a built-in device driver. This project will be used to prototype the design of the Serial API.",
5
5
  "type": "module",
6
6
  "main": "./dist/serial.js",
@@ -12,18 +12,18 @@
12
12
  },
13
13
  "repository": {
14
14
  "type": "git",
15
- "url": "https://github.com/google/web-serial-polyfill.git"
15
+ "url": "https://github.com/myshkouski/web-serial-polyfill.git"
16
16
  },
17
17
  "author": "James C Hollyer",
18
18
  "license": "Apache",
19
19
  "devDependencies": {
20
- "@types/w3c-web-serial": "^1.0.3",
21
- "@types/w3c-web-usb": "^1.0.6",
22
- "@types/web": "^0.0.71",
20
+ "@types/w3c-web-serial": "^1.0.8",
21
+ "@types/w3c-web-usb": "^1.0.10",
22
+ "@types/web": "^0.0.243",
23
23
  "@typescript-eslint/eslint-plugin": "^5.33.0",
24
24
  "@typescript-eslint/parser": "^5.33.0",
25
25
  "eslint": "^8.21.0",
26
26
  "eslint-config-google": "^0.14.0",
27
- "typescript": "^4.7.4"
27
+ "typescript": "^5.8.3"
28
28
  }
29
29
  }
package/serial.ts CHANGED
@@ -121,34 +121,32 @@ class UsbEndpointUnderlyingSource implements UnderlyingByteSource {
121
121
  *
122
122
  * @param {ReadableByteStreamController} controller
123
123
  */
124
- pull(controller: ReadableByteStreamController): void {
125
- (async (): Promise<void> => {
126
- let chunkSize;
127
- if (controller.desiredSize) {
128
- const d = controller.desiredSize / this.endpoint_.packetSize;
129
- chunkSize = Math.ceil(d) * this.endpoint_.packetSize;
130
- } else {
131
- chunkSize = this.endpoint_.packetSize;
132
- }
124
+ async pull(controller: ReadableByteStreamController): Promise<void> {
125
+ let chunkSize;
126
+ if (controller.desiredSize) {
127
+ const d = controller.desiredSize / this.endpoint_.packetSize;
128
+ chunkSize = Math.ceil(d) * this.endpoint_.packetSize;
129
+ } else {
130
+ chunkSize = this.endpoint_.packetSize;
131
+ }
133
132
 
134
- try {
135
- const result = await this.device_.transferIn(
136
- this.endpoint_.endpointNumber, chunkSize);
137
- if (result.status != 'ok') {
138
- controller.error(`USB error: ${result.status}`);
139
- this.onError_();
140
- }
141
- if (result.data?.buffer) {
142
- const chunk = new Uint8Array(
143
- result.data.buffer, result.data.byteOffset,
144
- result.data.byteLength);
145
- controller.enqueue(chunk);
146
- }
147
- } catch (error) {
148
- controller.error(error.toString());
133
+ try {
134
+ const result = await this.device_.transferIn(
135
+ this.endpoint_.endpointNumber, chunkSize);
136
+ if (result.status != 'ok') {
137
+ controller.error(`USB error: ${result.status}`);
149
138
  this.onError_();
150
139
  }
151
- })();
140
+ if (result.data?.buffer) {
141
+ const chunk = new Uint8Array(
142
+ toArrayBuffer(result.data.buffer), result.data.byteOffset,
143
+ result.data.byteLength);
144
+ controller.enqueue(chunk);
145
+ }
146
+ } catch (error) {
147
+ controller.error(error.toString());
148
+ this.onError_();
149
+ }
152
150
  }
153
151
  }
154
152
 
@@ -184,7 +182,7 @@ class UsbEndpointUnderlyingSink implements UnderlyingSink<Uint8Array> {
184
182
  * @param {WritableStreamDefaultController} controller
185
183
  */
186
184
  async write(
187
- chunk: Uint8Array,
185
+ chunk: Uint8Array<ArrayBuffer>,
188
186
  controller: WritableStreamDefaultController): Promise<void> {
189
187
  try {
190
188
  const result =
@@ -331,6 +329,9 @@ export class SerialPort {
331
329
  this.writable_ = null;
332
330
  if (this.device_.opened) {
333
331
  await this.setSignals({dataTerminalReady: false, requestToSend: false});
332
+ if (this.transferInterface_.claimed) {
333
+ await this.device_.releaseInterface(this.transferInterface_.interfaceNumber);
334
+ }
334
335
  await this.device_.close();
335
336
  }
336
337
  }
@@ -600,3 +601,22 @@ export class Serial extends BaseSerial<SerialPort> {
600
601
  return new SerialPort(device, options);
601
602
  }
602
603
  }
604
+
605
+ function toArrayBuffer(buffer: ArrayBufferLike) {
606
+ if (buffer instanceof ArrayBuffer) {
607
+ // Return buffer when it's already an ArrayBuffer
608
+ return buffer
609
+ }
610
+
611
+ // Create a new ArrayBuffer with the same byte length
612
+ const arrayBuffer = new ArrayBuffer(buffer.byteLength);
613
+
614
+ // Create views for both buffers
615
+ const sharedArrayBufferView = new Uint8Array(buffer);
616
+ const arrayBufferView = new Uint8Array(arrayBuffer);
617
+
618
+ // Copy the contents
619
+ arrayBufferView.set(sharedArrayBufferView);
620
+
621
+ return arrayBuffer;
622
+ }
package/tsconfig.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "compilerOptions": {
3
- "module": "es2015",
4
- "lib": ["es2017"],
3
+ "module": "esnext",
4
+ "lib": ["esnext", "DOM.AsyncIterable"],
5
5
  "outDir": "./dist/",
6
6
  "sourceMap": true,
7
7
  "noImplicitAny": true,
8
8
  "strictNullChecks": true,
9
- "target": "es2017",
9
+ "target": "esnext",
10
10
  "declaration": true
11
11
  }
12
12
  }