@matter/general 0.12.4-alpha.0-20250217-b0bba5179 → 0.12.4-alpha.0-20250224-e0964a795
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/cjs/util/Cancelable.d.ts +1 -1
- package/dist/cjs/util/Cancelable.js +1 -1
- package/dist/cjs/util/DataReadQueue.d.ts +1 -3
- package/dist/cjs/util/DataReadQueue.d.ts.map +1 -1
- package/dist/cjs/util/DataReadQueue.js +18 -18
- package/dist/cjs/util/DataReadQueue.js.map +1 -1
- package/dist/cjs/util/Stream.d.ts +2 -2
- package/dist/cjs/util/Stream.d.ts.map +1 -1
- package/dist/cjs/util/Stream.js +1 -1
- package/dist/cjs/util/Stream.js.map +1 -1
- package/dist/esm/util/Cancelable.d.ts +1 -1
- package/dist/esm/util/Cancelable.js +1 -1
- package/dist/esm/util/DataReadQueue.d.ts +1 -3
- package/dist/esm/util/DataReadQueue.d.ts.map +1 -1
- package/dist/esm/util/DataReadQueue.js +18 -18
- package/dist/esm/util/DataReadQueue.js.map +1 -1
- package/dist/esm/util/Stream.d.ts +2 -2
- package/dist/esm/util/Stream.d.ts.map +1 -1
- package/dist/esm/util/Stream.js +2 -2
- package/dist/esm/util/Stream.js.map +1 -1
- package/package.json +2 -2
- package/src/util/Cancelable.ts +1 -1
- package/src/util/DataReadQueue.ts +18 -18
- package/src/util/Stream.ts +2 -2
|
@@ -28,7 +28,7 @@ var import_Error = require("./Error.js");
|
|
|
28
28
|
var import_Promises = require("./Promises.js");
|
|
29
29
|
/**
|
|
30
30
|
* @license
|
|
31
|
-
* Copyright 2022-
|
|
31
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
32
32
|
* SPDX-License-Identifier: Apache-2.0
|
|
33
33
|
*/
|
|
34
34
|
class CancelablePromise {
|
|
@@ -7,9 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { Stream } from "./Stream.js";
|
|
9
9
|
export declare class DataReadQueue<T> implements Stream<T> {
|
|
10
|
-
private
|
|
11
|
-
private pendingRead?;
|
|
12
|
-
private closed;
|
|
10
|
+
#private;
|
|
13
11
|
read(timeoutMs?: number): Promise<T>;
|
|
14
12
|
write(data: T): Promise<void>;
|
|
15
13
|
close(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataReadQueue.d.ts","sourceRoot":"","sources":["../../../src/util/DataReadQueue.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,EAA4C,MAAM,EAAE,MAAM,aAAa,CAAC;AAE/E,qBAAa,aAAa,CAAC,CAAC,CAAE,YAAW,MAAM,CAAC,CAAC,CAAC
|
|
1
|
+
{"version":3,"file":"DataReadQueue.d.ts","sourceRoot":"","sources":["../../../src/util/DataReadQueue.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,EAA4C,MAAM,EAAE,MAAM,aAAa,CAAC;AAE/E,qBAAa,aAAa,CAAC,CAAC,CAAE,YAAW,MAAM,CAAC,CAAC,CAAC;;IAKxC,IAAI,CAAC,SAAS,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC;IAkBpC,KAAK,CAAC,IAAI,EAAE,CAAC;IAWnB,KAAK;CAOR"}
|
|
@@ -33,18 +33,18 @@ var import_Stream = require("./Stream.js");
|
|
|
33
33
|
* SPDX-License-Identifier: Apache-2.0
|
|
34
34
|
*/
|
|
35
35
|
class DataReadQueue {
|
|
36
|
-
queue = new Array();
|
|
37
|
-
pendingRead;
|
|
38
|
-
closed = false;
|
|
36
|
+
#queue = new Array();
|
|
37
|
+
#pendingRead;
|
|
38
|
+
#closed = false;
|
|
39
39
|
async read(timeoutMs = 6e4) {
|
|
40
40
|
const { promise, resolver, rejecter } = (0, import_Promises.createPromise)();
|
|
41
|
-
if (this
|
|
42
|
-
const data = this
|
|
41
|
+
if (this.#closed) throw new import_Stream.EndOfStreamError();
|
|
42
|
+
const data = this.#queue.shift();
|
|
43
43
|
if (data !== void 0) {
|
|
44
44
|
return data;
|
|
45
45
|
}
|
|
46
|
-
if (this
|
|
47
|
-
this
|
|
46
|
+
if (this.#pendingRead !== void 0) throw new import_MatterError.MatterFlowError("Only one pending read is supported");
|
|
47
|
+
this.#pendingRead = {
|
|
48
48
|
resolver,
|
|
49
49
|
rejecter,
|
|
50
50
|
timeoutTimer: import_Time.Time.getTimer(
|
|
@@ -56,21 +56,21 @@ class DataReadQueue {
|
|
|
56
56
|
return promise;
|
|
57
57
|
}
|
|
58
58
|
async write(data) {
|
|
59
|
-
if (this
|
|
60
|
-
if (this
|
|
61
|
-
this
|
|
62
|
-
this
|
|
63
|
-
this
|
|
59
|
+
if (this.#closed) throw new import_Stream.EndOfStreamError();
|
|
60
|
+
if (this.#pendingRead !== void 0) {
|
|
61
|
+
this.#pendingRead.timeoutTimer?.stop();
|
|
62
|
+
this.#pendingRead.resolver(data);
|
|
63
|
+
this.#pendingRead = void 0;
|
|
64
64
|
return;
|
|
65
65
|
}
|
|
66
|
-
this
|
|
66
|
+
this.#queue.push(data);
|
|
67
67
|
}
|
|
68
68
|
close() {
|
|
69
|
-
if (this
|
|
70
|
-
this
|
|
71
|
-
if (this
|
|
72
|
-
this
|
|
73
|
-
this
|
|
69
|
+
if (this.#closed) return;
|
|
70
|
+
this.#closed = true;
|
|
71
|
+
if (this.#pendingRead === void 0) return;
|
|
72
|
+
this.#pendingRead.timeoutTimer?.stop();
|
|
73
|
+
this.#pendingRead.rejecter(new import_Stream.EndOfStreamError());
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
76
|
//# sourceMappingURL=DataReadQueue.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/util/DataReadQueue.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,yBAAgC;AAChC,kBAA4B;AAC5B,sBAA8B;AAC9B,oBAAiE;AAXjE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaO,MAAM,cAAsC;AAAA,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,yBAAgC;AAChC,kBAA4B;AAC5B,sBAA8B;AAC9B,oBAAiE;AAXjE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaO,MAAM,cAAsC;AAAA,EACtC,SAAS,IAAI,MAAS;AAAA,EAC/B;AAAA,EACA,UAAU;AAAA,EAEV,MAAM,KAAK,YAAY,KAAoB;AACvC,UAAM,EAAE,SAAS,UAAU,SAAS,QAAI,+BAAiB;AACzD,QAAI,KAAK,QAAS,OAAM,IAAI,+BAAiB;AAC7C,UAAM,OAAO,KAAK,OAAO,MAAM;AAC/B,QAAI,SAAS,QAAW;AACpB,aAAO;AAAA,IACX;AACA,QAAI,KAAK,iBAAiB,OAAW,OAAM,IAAI,mCAAgB,oCAAoC;AACnG,SAAK,eAAe;AAAA,MAChB;AAAA,MACA;AAAA,MACA,cAAc,iBAAK;AAAA,QAAS;AAAA,QAAiB;AAAA,QAAW,MACpD,SAAS,IAAI,qCAAuB,oDAAoD,SAAS,IAAI,CAAC;AAAA,MAC1G,EAAE,MAAM;AAAA,IACZ;AACA,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,MAAM,MAAS;AACjB,QAAI,KAAK,QAAS,OAAM,IAAI,+BAAiB;AAC7C,QAAI,KAAK,iBAAiB,QAAW;AACjC,WAAK,aAAa,cAAc,KAAK;AACrC,WAAK,aAAa,SAAS,IAAI;AAC/B,WAAK,eAAe;AACpB;AAAA,IACJ;AACA,SAAK,OAAO,KAAK,IAAI;AAAA,EACzB;AAAA,EAEA,QAAQ;AACJ,QAAI,KAAK,QAAS;AAClB,SAAK,UAAU;AACf,QAAI,KAAK,iBAAiB,OAAW;AACrC,SAAK,aAAa,cAAc,KAAK;AACrC,SAAK,aAAa,SAAS,IAAI,+BAAiB,CAAC;AAAA,EACrD;AACJ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { MatterError } from "../MatterError.js";
|
|
6
|
+
import { MatterError, TimeoutError } from "../MatterError.js";
|
|
7
7
|
export declare class EndOfStreamError extends MatterError {
|
|
8
8
|
constructor(message?: string);
|
|
9
9
|
}
|
|
10
|
-
export declare class NoResponseTimeoutError extends
|
|
10
|
+
export declare class NoResponseTimeoutError extends TimeoutError {
|
|
11
11
|
}
|
|
12
12
|
export interface Stream<T> {
|
|
13
13
|
read(): Promise<T>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Stream.d.ts","sourceRoot":"","sources":["../../../src/util/Stream.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"Stream.d.ts","sourceRoot":"","sources":["../../../src/util/Stream.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE9D,qBAAa,gBAAiB,SAAQ,WAAW;gBACjC,OAAO,SAA6B;CAGnD;AAED,qBAAa,sBAAuB,SAAQ,YAAY;CAAG;AAE3D,MAAM,WAAW,MAAM,CAAC,CAAC;IACrB,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IACnB,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC"}
|
package/dist/cjs/util/Stream.js
CHANGED
|
@@ -33,6 +33,6 @@ class EndOfStreamError extends import_MatterError.MatterError {
|
|
|
33
33
|
super(message);
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
|
-
class NoResponseTimeoutError extends import_MatterError.
|
|
36
|
+
class NoResponseTimeoutError extends import_MatterError.TimeoutError {
|
|
37
37
|
}
|
|
38
38
|
//# sourceMappingURL=Stream.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/util/Stream.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,yBAA0C;AAL1C;AAAA;AAAA;AAAA;AAAA;AAOO,MAAM,yBAAyB,+BAAY;AAAA,EAC9C,YAAY,UAAU,4BAA4B;AAC9C,UAAM,OAAO;AAAA,EACjB;AACJ;AAEO,MAAM,+BAA+B,gCAAa;AAAC;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -7,9 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { Stream } from "./Stream.js";
|
|
9
9
|
export declare class DataReadQueue<T> implements Stream<T> {
|
|
10
|
-
private
|
|
11
|
-
private pendingRead?;
|
|
12
|
-
private closed;
|
|
10
|
+
#private;
|
|
13
11
|
read(timeoutMs?: number): Promise<T>;
|
|
14
12
|
write(data: T): Promise<void>;
|
|
15
13
|
close(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataReadQueue.d.ts","sourceRoot":"","sources":["../../../src/util/DataReadQueue.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,EAA4C,MAAM,EAAE,MAAM,aAAa,CAAC;AAE/E,qBAAa,aAAa,CAAC,CAAC,CAAE,YAAW,MAAM,CAAC,CAAC,CAAC
|
|
1
|
+
{"version":3,"file":"DataReadQueue.d.ts","sourceRoot":"","sources":["../../../src/util/DataReadQueue.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,EAA4C,MAAM,EAAE,MAAM,aAAa,CAAC;AAE/E,qBAAa,aAAa,CAAC,CAAC,CAAE,YAAW,MAAM,CAAC,CAAC,CAAC;;IAKxC,IAAI,CAAC,SAAS,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC;IAkBpC,KAAK,CAAC,IAAI,EAAE,CAAC;IAWnB,KAAK;CAOR"}
|
|
@@ -10,18 +10,18 @@ import { Time } from "../time/Time.js";
|
|
|
10
10
|
import { createPromise } from "./Promises.js";
|
|
11
11
|
import { EndOfStreamError, NoResponseTimeoutError } from "./Stream.js";
|
|
12
12
|
class DataReadQueue {
|
|
13
|
-
queue = new Array();
|
|
14
|
-
pendingRead;
|
|
15
|
-
closed = false;
|
|
13
|
+
#queue = new Array();
|
|
14
|
+
#pendingRead;
|
|
15
|
+
#closed = false;
|
|
16
16
|
async read(timeoutMs = 6e4) {
|
|
17
17
|
const { promise, resolver, rejecter } = createPromise();
|
|
18
|
-
if (this
|
|
19
|
-
const data = this
|
|
18
|
+
if (this.#closed) throw new EndOfStreamError();
|
|
19
|
+
const data = this.#queue.shift();
|
|
20
20
|
if (data !== void 0) {
|
|
21
21
|
return data;
|
|
22
22
|
}
|
|
23
|
-
if (this
|
|
24
|
-
this
|
|
23
|
+
if (this.#pendingRead !== void 0) throw new MatterFlowError("Only one pending read is supported");
|
|
24
|
+
this.#pendingRead = {
|
|
25
25
|
resolver,
|
|
26
26
|
rejecter,
|
|
27
27
|
timeoutTimer: Time.getTimer(
|
|
@@ -33,21 +33,21 @@ class DataReadQueue {
|
|
|
33
33
|
return promise;
|
|
34
34
|
}
|
|
35
35
|
async write(data) {
|
|
36
|
-
if (this
|
|
37
|
-
if (this
|
|
38
|
-
this
|
|
39
|
-
this
|
|
40
|
-
this
|
|
36
|
+
if (this.#closed) throw new EndOfStreamError();
|
|
37
|
+
if (this.#pendingRead !== void 0) {
|
|
38
|
+
this.#pendingRead.timeoutTimer?.stop();
|
|
39
|
+
this.#pendingRead.resolver(data);
|
|
40
|
+
this.#pendingRead = void 0;
|
|
41
41
|
return;
|
|
42
42
|
}
|
|
43
|
-
this
|
|
43
|
+
this.#queue.push(data);
|
|
44
44
|
}
|
|
45
45
|
close() {
|
|
46
|
-
if (this
|
|
47
|
-
this
|
|
48
|
-
if (this
|
|
49
|
-
this
|
|
50
|
-
this
|
|
46
|
+
if (this.#closed) return;
|
|
47
|
+
this.#closed = true;
|
|
48
|
+
if (this.#pendingRead === void 0) return;
|
|
49
|
+
this.#pendingRead.timeoutTimer?.stop();
|
|
50
|
+
this.#pendingRead.rejecter(new EndOfStreamError());
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
export {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/util/DataReadQueue.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,SAAS,uBAAuB;AAChC,SAAS,YAAmB;AAC5B,SAAS,qBAAqB;AAC9B,SAAS,kBAAkB,8BAAsC;AAE1D,MAAM,cAAsC;AAAA,
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,SAAS,uBAAuB;AAChC,SAAS,YAAmB;AAC5B,SAAS,qBAAqB;AAC9B,SAAS,kBAAkB,8BAAsC;AAE1D,MAAM,cAAsC;AAAA,EACtC,SAAS,IAAI,MAAS;AAAA,EAC/B;AAAA,EACA,UAAU;AAAA,EAEV,MAAM,KAAK,YAAY,KAAoB;AACvC,UAAM,EAAE,SAAS,UAAU,SAAS,IAAI,cAAiB;AACzD,QAAI,KAAK,QAAS,OAAM,IAAI,iBAAiB;AAC7C,UAAM,OAAO,KAAK,OAAO,MAAM;AAC/B,QAAI,SAAS,QAAW;AACpB,aAAO;AAAA,IACX;AACA,QAAI,KAAK,iBAAiB,OAAW,OAAM,IAAI,gBAAgB,oCAAoC;AACnG,SAAK,eAAe;AAAA,MAChB;AAAA,MACA;AAAA,MACA,cAAc,KAAK;AAAA,QAAS;AAAA,QAAiB;AAAA,QAAW,MACpD,SAAS,IAAI,uBAAuB,oDAAoD,SAAS,IAAI,CAAC;AAAA,MAC1G,EAAE,MAAM;AAAA,IACZ;AACA,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,MAAM,MAAS;AACjB,QAAI,KAAK,QAAS,OAAM,IAAI,iBAAiB;AAC7C,QAAI,KAAK,iBAAiB,QAAW;AACjC,WAAK,aAAa,cAAc,KAAK;AACrC,WAAK,aAAa,SAAS,IAAI;AAC/B,WAAK,eAAe;AACpB;AAAA,IACJ;AACA,SAAK,OAAO,KAAK,IAAI;AAAA,EACzB;AAAA,EAEA,QAAQ;AACJ,QAAI,KAAK,QAAS;AAClB,SAAK,UAAU;AACf,QAAI,KAAK,iBAAiB,OAAW;AACrC,SAAK,aAAa,cAAc,KAAK;AACrC,SAAK,aAAa,SAAS,IAAI,iBAAiB,CAAC;AAAA,EACrD;AACJ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { MatterError } from "../MatterError.js";
|
|
6
|
+
import { MatterError, TimeoutError } from "../MatterError.js";
|
|
7
7
|
export declare class EndOfStreamError extends MatterError {
|
|
8
8
|
constructor(message?: string);
|
|
9
9
|
}
|
|
10
|
-
export declare class NoResponseTimeoutError extends
|
|
10
|
+
export declare class NoResponseTimeoutError extends TimeoutError {
|
|
11
11
|
}
|
|
12
12
|
export interface Stream<T> {
|
|
13
13
|
read(): Promise<T>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Stream.d.ts","sourceRoot":"","sources":["../../../src/util/Stream.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"Stream.d.ts","sourceRoot":"","sources":["../../../src/util/Stream.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE9D,qBAAa,gBAAiB,SAAQ,WAAW;gBACjC,OAAO,SAA6B;CAGnD;AAED,qBAAa,sBAAuB,SAAQ,YAAY;CAAG;AAE3D,MAAM,WAAW,MAAM,CAAC,CAAC;IACrB,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IACnB,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC"}
|
package/dist/esm/util/Stream.js
CHANGED
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { MatterError } from "../MatterError.js";
|
|
6
|
+
import { MatterError, TimeoutError } from "../MatterError.js";
|
|
7
7
|
class EndOfStreamError extends MatterError {
|
|
8
8
|
constructor(message = "Unexpected end of stream") {
|
|
9
9
|
super(message);
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
|
-
class NoResponseTimeoutError extends
|
|
12
|
+
class NoResponseTimeoutError extends TimeoutError {
|
|
13
13
|
}
|
|
14
14
|
export {
|
|
15
15
|
EndOfStreamError,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/util/Stream.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,SAAS,
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,SAAS,aAAa,oBAAoB;AAEnC,MAAM,yBAAyB,YAAY;AAAA,EAC9C,YAAY,UAAU,4BAA4B;AAC9C,UAAM,OAAO;AAAA,EACjB;AACJ;AAEO,MAAM,+BAA+B,aAAa;AAAC;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matter/general",
|
|
3
|
-
"version": "0.12.4-alpha.0-
|
|
3
|
+
"version": "0.12.4-alpha.0-20250224-e0964a795",
|
|
4
4
|
"description": "Non-Matter support for Matter.js",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"iot",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"@noble/curves": "^1.8.1"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
|
-
"@matter/testing": "0.12.4-alpha.0-
|
|
39
|
+
"@matter/testing": "0.12.4-alpha.0-20250224-e0964a795"
|
|
40
40
|
},
|
|
41
41
|
"files": [
|
|
42
42
|
"dist/**/*",
|
package/src/util/Cancelable.ts
CHANGED
|
@@ -12,19 +12,19 @@ import { createPromise } from "./Promises.js";
|
|
|
12
12
|
import { EndOfStreamError, NoResponseTimeoutError, Stream } from "./Stream.js";
|
|
13
13
|
|
|
14
14
|
export class DataReadQueue<T> implements Stream<T> {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
readonly #queue = new Array<T>();
|
|
16
|
+
#pendingRead?: { resolver: (data: T) => void; rejecter: (reason: any) => void; timeoutTimer?: Timer };
|
|
17
|
+
#closed = false;
|
|
18
18
|
|
|
19
19
|
async read(timeoutMs = 60_000): Promise<T> {
|
|
20
20
|
const { promise, resolver, rejecter } = createPromise<T>();
|
|
21
|
-
if (this
|
|
22
|
-
const data = this
|
|
21
|
+
if (this.#closed) throw new EndOfStreamError();
|
|
22
|
+
const data = this.#queue.shift();
|
|
23
23
|
if (data !== undefined) {
|
|
24
24
|
return data;
|
|
25
25
|
}
|
|
26
|
-
if (this
|
|
27
|
-
this
|
|
26
|
+
if (this.#pendingRead !== undefined) throw new MatterFlowError("Only one pending read is supported");
|
|
27
|
+
this.#pendingRead = {
|
|
28
28
|
resolver,
|
|
29
29
|
rejecter,
|
|
30
30
|
timeoutTimer: Time.getTimer("Queue timeout", timeoutMs, () =>
|
|
@@ -35,21 +35,21 @@ export class DataReadQueue<T> implements Stream<T> {
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
async write(data: T) {
|
|
38
|
-
if (this
|
|
39
|
-
if (this
|
|
40
|
-
this
|
|
41
|
-
this
|
|
42
|
-
this
|
|
38
|
+
if (this.#closed) throw new EndOfStreamError();
|
|
39
|
+
if (this.#pendingRead !== undefined) {
|
|
40
|
+
this.#pendingRead.timeoutTimer?.stop();
|
|
41
|
+
this.#pendingRead.resolver(data);
|
|
42
|
+
this.#pendingRead = undefined;
|
|
43
43
|
return;
|
|
44
44
|
}
|
|
45
|
-
this
|
|
45
|
+
this.#queue.push(data);
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
close() {
|
|
49
|
-
if (this
|
|
50
|
-
this
|
|
51
|
-
if (this
|
|
52
|
-
this
|
|
53
|
-
this
|
|
49
|
+
if (this.#closed) return;
|
|
50
|
+
this.#closed = true;
|
|
51
|
+
if (this.#pendingRead === undefined) return;
|
|
52
|
+
this.#pendingRead.timeoutTimer?.stop();
|
|
53
|
+
this.#pendingRead.rejecter(new EndOfStreamError());
|
|
54
54
|
}
|
|
55
55
|
}
|
package/src/util/Stream.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { MatterError } from "../MatterError.js";
|
|
6
|
+
import { MatterError, TimeoutError } from "../MatterError.js";
|
|
7
7
|
|
|
8
8
|
export class EndOfStreamError extends MatterError {
|
|
9
9
|
constructor(message = "Unexpected end of stream") {
|
|
@@ -11,7 +11,7 @@ export class EndOfStreamError extends MatterError {
|
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
export class NoResponseTimeoutError extends
|
|
14
|
+
export class NoResponseTimeoutError extends TimeoutError {}
|
|
15
15
|
|
|
16
16
|
export interface Stream<T> {
|
|
17
17
|
read(): Promise<T>;
|