@matter/nodejs 0.17.0-alpha.0-20260507-059f7763b → 0.17.0-alpha.0-20260508-29ff5ae9e
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/package.json +9 -9
- package/dist/cjs/behavior/index.d.ts +0 -7
- package/dist/cjs/behavior/index.d.ts.map +0 -1
- package/dist/cjs/behavior/index.js +0 -8
- package/dist/cjs/behavior/index.js.map +0 -6
- package/dist/cjs/behavior/instrumentation.d.ts +0 -11
- package/dist/cjs/behavior/instrumentation.d.ts.map +0 -1
- package/dist/cjs/behavior/instrumentation.js +0 -39
- package/dist/cjs/behavior/instrumentation.js.map +0 -6
- package/dist/cjs/behavior/register.d.ts +0 -7
- package/dist/cjs/behavior/register.d.ts.map +0 -1
- package/dist/cjs/behavior/register.js +0 -9
- package/dist/cjs/behavior/register.js.map +0 -6
- package/dist/cjs/config.d.ts +0 -98
- package/dist/cjs/config.d.ts.map +0 -1
- package/dist/cjs/config.js +0 -210
- package/dist/cjs/config.js.map +0 -6
- package/dist/cjs/crypto/NodeJsCrypto.d.ts +0 -13
- package/dist/cjs/crypto/NodeJsCrypto.d.ts.map +0 -1
- package/dist/cjs/crypto/NodeJsCrypto.js +0 -46
- package/dist/cjs/crypto/NodeJsCrypto.js.map +0 -6
- package/dist/cjs/crypto/index.d.ts +0 -7
- package/dist/cjs/crypto/index.d.ts.map +0 -1
- package/dist/cjs/crypto/index.js +0 -24
- package/dist/cjs/crypto/index.js.map +0 -6
- package/dist/cjs/environment/NodeJsEnvironment.d.ts +0 -77
- package/dist/cjs/environment/NodeJsEnvironment.d.ts.map +0 -1
- package/dist/cjs/environment/NodeJsEnvironment.js +0 -254
- package/dist/cjs/environment/NodeJsEnvironment.js.map +0 -6
- package/dist/cjs/environment/ProcessManager.d.ts +0 -48
- package/dist/cjs/environment/ProcessManager.d.ts.map +0 -1
- package/dist/cjs/environment/ProcessManager.js +0 -129
- package/dist/cjs/environment/ProcessManager.js.map +0 -6
- package/dist/cjs/environment/index.d.ts +0 -9
- package/dist/cjs/environment/index.d.ts.map +0 -1
- package/dist/cjs/environment/index.js +0 -26
- package/dist/cjs/environment/index.js.map +0 -6
- package/dist/cjs/environment/register.d.ts +0 -7
- package/dist/cjs/environment/register.d.ts.map +0 -1
- package/dist/cjs/environment/register.js +0 -10
- package/dist/cjs/environment/register.js.map +0 -6
- package/dist/cjs/fs/NodeJsDirectory.d.ts +0 -24
- package/dist/cjs/fs/NodeJsDirectory.d.ts.map +0 -1
- package/dist/cjs/fs/NodeJsDirectory.js +0 -102
- package/dist/cjs/fs/NodeJsDirectory.js.map +0 -6
- package/dist/cjs/fs/NodeJsFile.d.ts +0 -22
- package/dist/cjs/fs/NodeJsFile.d.ts.map +0 -1
- package/dist/cjs/fs/NodeJsFile.js +0 -248
- package/dist/cjs/fs/NodeJsFile.js.map +0 -6
- package/dist/cjs/fs/NodeJsFilesystem.d.ts +0 -27
- package/dist/cjs/fs/NodeJsFilesystem.d.ts.map +0 -1
- package/dist/cjs/fs/NodeJsFilesystem.js +0 -83
- package/dist/cjs/fs/NodeJsFilesystem.js.map +0 -6
- package/dist/cjs/fs/fs-utils.d.ts +0 -16
- package/dist/cjs/fs/fs-utils.d.ts.map +0 -1
- package/dist/cjs/fs/fs-utils.js +0 -154
- package/dist/cjs/fs/fs-utils.js.map +0 -6
- package/dist/cjs/fs/index.d.ts +0 -7
- package/dist/cjs/fs/index.d.ts.map +0 -1
- package/dist/cjs/fs/index.js +0 -24
- package/dist/cjs/fs/index.js.map +0 -6
- package/dist/cjs/fs/lock-utils.d.ts +0 -12
- package/dist/cjs/fs/lock-utils.d.ts.map +0 -1
- package/dist/cjs/fs/lock-utils.js +0 -132
- package/dist/cjs/fs/lock-utils.js.map +0 -6
- package/dist/cjs/index.d.ts +0 -14
- package/dist/cjs/index.d.ts.map +0 -1
- package/dist/cjs/index.js +0 -31
- package/dist/cjs/index.js.map +0 -6
- package/dist/cjs/log/FileLogger.d.ts +0 -12
- package/dist/cjs/log/FileLogger.d.ts.map +0 -1
- package/dist/cjs/log/FileLogger.js +0 -46
- package/dist/cjs/log/FileLogger.js.map +0 -6
- package/dist/cjs/log/index.d.ts +0 -7
- package/dist/cjs/log/index.d.ts.map +0 -1
- package/dist/cjs/log/index.js +0 -24
- package/dist/cjs/log/index.js.map +0 -6
- package/dist/cjs/net/NodeJsHttpEndpoint.d.ts +0 -38
- package/dist/cjs/net/NodeJsHttpEndpoint.d.ts.map +0 -1
- package/dist/cjs/net/NodeJsHttpEndpoint.js +0 -306
- package/dist/cjs/net/NodeJsHttpEndpoint.js.map +0 -6
- package/dist/cjs/net/NodeJsNetwork.d.ts +0 -37
- package/dist/cjs/net/NodeJsNetwork.d.ts.map +0 -1
- package/dist/cjs/net/NodeJsNetwork.js +0 -199
- package/dist/cjs/net/NodeJsNetwork.js.map +0 -6
- package/dist/cjs/net/NodeJsTcpConnection.d.ts +0 -24
- package/dist/cjs/net/NodeJsTcpConnection.d.ts.map +0 -1
- package/dist/cjs/net/NodeJsTcpConnection.js +0 -138
- package/dist/cjs/net/NodeJsTcpConnection.js.map +0 -6
- package/dist/cjs/net/NodeJsTcpListener.d.ts +0 -19
- package/dist/cjs/net/NodeJsTcpListener.d.ts.map +0 -1
- package/dist/cjs/net/NodeJsTcpListener.js +0 -100
- package/dist/cjs/net/NodeJsTcpListener.js.map +0 -6
- package/dist/cjs/net/NodeJsUdpSocket.d.ts +0 -23
- package/dist/cjs/net/NodeJsUdpSocket.d.ts.map +0 -1
- package/dist/cjs/net/NodeJsUdpSocket.js +0 -394
- package/dist/cjs/net/NodeJsUdpSocket.js.map +0 -6
- package/dist/cjs/net/WsAdapter.d.ts +0 -25
- package/dist/cjs/net/WsAdapter.d.ts.map +0 -1
- package/dist/cjs/net/WsAdapter.js +0 -33
- package/dist/cjs/net/WsAdapter.js.map +0 -6
- package/dist/cjs/net/index.d.ts +0 -12
- package/dist/cjs/net/index.d.ts.map +0 -1
- package/dist/cjs/net/index.js +0 -29
- package/dist/cjs/net/index.js.map +0 -6
- package/dist/cjs/package.json +0 -6
- package/dist/cjs/storage/fs/DirectoryBlobStorageDriver.d.ts +0 -29
- package/dist/cjs/storage/fs/DirectoryBlobStorageDriver.d.ts.map +0 -1
- package/dist/cjs/storage/fs/DirectoryBlobStorageDriver.js +0 -155
- package/dist/cjs/storage/fs/DirectoryBlobStorageDriver.js.map +0 -6
- package/dist/cjs/storage/fs/FileStorageDriver.d.ts +0 -44
- package/dist/cjs/storage/fs/FileStorageDriver.d.ts.map +0 -1
- package/dist/cjs/storage/fs/FileStorageDriver.js +0 -334
- package/dist/cjs/storage/fs/FileStorageDriver.js.map +0 -6
- package/dist/cjs/storage/fs/FlatFileBlobStorageDriver.d.ts +0 -30
- package/dist/cjs/storage/fs/FlatFileBlobStorageDriver.d.ts.map +0 -1
- package/dist/cjs/storage/fs/FlatFileBlobStorageDriver.js +0 -195
- package/dist/cjs/storage/fs/FlatFileBlobStorageDriver.js.map +0 -6
- package/dist/cjs/storage/fs/JsonFileStorageDriver.d.ts +0 -27
- package/dist/cjs/storage/fs/JsonFileStorageDriver.d.ts.map +0 -1
- package/dist/cjs/storage/fs/JsonFileStorageDriver.js +0 -128
- package/dist/cjs/storage/fs/JsonFileStorageDriver.js.map +0 -6
- package/dist/cjs/storage/fs/WalBlobStorageDriver.d.ts +0 -19
- package/dist/cjs/storage/fs/WalBlobStorageDriver.d.ts.map +0 -1
- package/dist/cjs/storage/fs/WalBlobStorageDriver.js +0 -44
- package/dist/cjs/storage/fs/WalBlobStorageDriver.js.map +0 -6
- package/dist/cjs/storage/fs/index.d.ts +0 -21
- package/dist/cjs/storage/fs/index.d.ts.map +0 -1
- package/dist/cjs/storage/fs/index.js +0 -40
- package/dist/cjs/storage/fs/index.js.map +0 -6
- package/dist/cjs/storage/index.d.ts +0 -8
- package/dist/cjs/storage/index.d.ts.map +0 -1
- package/dist/cjs/storage/index.js +0 -25
- package/dist/cjs/storage/index.js.map +0 -6
- package/dist/cjs/storage/sqlite/SqliteBlobStorageDriver.d.ts +0 -48
- package/dist/cjs/storage/sqlite/SqliteBlobStorageDriver.d.ts.map +0 -1
- package/dist/cjs/storage/sqlite/SqliteBlobStorageDriver.js +0 -217
- package/dist/cjs/storage/sqlite/SqliteBlobStorageDriver.js.map +0 -6
- package/dist/cjs/storage/sqlite/SqlitePlatform.d.ts +0 -23
- package/dist/cjs/storage/sqlite/SqlitePlatform.d.ts.map +0 -1
- package/dist/cjs/storage/sqlite/SqlitePlatform.js +0 -56
- package/dist/cjs/storage/sqlite/SqlitePlatform.js.map +0 -6
- package/dist/cjs/storage/sqlite/SqliteStorageDriver.d.ts +0 -102
- package/dist/cjs/storage/sqlite/SqliteStorageDriver.d.ts.map +0 -1
- package/dist/cjs/storage/sqlite/SqliteStorageDriver.js +0 -424
- package/dist/cjs/storage/sqlite/SqliteStorageDriver.js.map +0 -6
- package/dist/cjs/storage/sqlite/SqliteStorageDriverError.d.ts +0 -19
- package/dist/cjs/storage/sqlite/SqliteStorageDriverError.d.ts.map +0 -1
- package/dist/cjs/storage/sqlite/SqliteStorageDriverError.js +0 -41
- package/dist/cjs/storage/sqlite/SqliteStorageDriverError.js.map +0 -6
- package/dist/cjs/storage/sqlite/SqliteTypes.d.ts +0 -67
- package/dist/cjs/storage/sqlite/SqliteTypes.d.ts.map +0 -1
- package/dist/cjs/storage/sqlite/SqliteTypes.js +0 -35
- package/dist/cjs/storage/sqlite/SqliteTypes.js.map +0 -6
- package/dist/cjs/storage/sqlite/SqliteUtil.d.ts +0 -33
- package/dist/cjs/storage/sqlite/SqliteUtil.d.ts.map +0 -1
- package/dist/cjs/storage/sqlite/SqliteUtil.js +0 -64
- package/dist/cjs/storage/sqlite/SqliteUtil.js.map +0 -6
- package/dist/cjs/storage/sqlite/index.d.ts +0 -15
- package/dist/cjs/storage/sqlite/index.d.ts.map +0 -1
- package/dist/cjs/storage/sqlite/index.js +0 -37
- package/dist/cjs/storage/sqlite/index.js.map +0 -6
- package/dist/cjs/storage/sqlite/platform/BunSqlite.d.ts +0 -13
- package/dist/cjs/storage/sqlite/platform/BunSqlite.d.ts.map +0 -1
- package/dist/cjs/storage/sqlite/platform/BunSqlite.js +0 -61
- package/dist/cjs/storage/sqlite/platform/BunSqlite.js.map +0 -6
- package/dist/cjs/storage/sqlite/platform/NodeJsSqlite.d.ts +0 -8
- package/dist/cjs/storage/sqlite/platform/NodeJsSqlite.d.ts.map +0 -1
- package/dist/cjs/storage/sqlite/platform/NodeJsSqlite.js +0 -53
- package/dist/cjs/storage/sqlite/platform/NodeJsSqlite.js.map +0 -6
- package/dist/cjs/time/index.d.ts +0 -7
- package/dist/cjs/time/index.d.ts.map +0 -1
- package/dist/cjs/time/index.js +0 -8
- package/dist/cjs/time/index.js.map +0 -6
- package/dist/cjs/time/startup.d.ts +0 -7
- package/dist/cjs/time/startup.d.ts.map +0 -1
- package/dist/cjs/time/startup.js +0 -11
- package/dist/cjs/time/startup.js.map +0 -6
- package/dist/cjs/util/runtimeChecks.d.ts +0 -14
- package/dist/cjs/util/runtimeChecks.d.ts.map +0 -1
- package/dist/cjs/util/runtimeChecks.js +0 -45
- package/dist/cjs/util/runtimeChecks.js.map +0 -6
- package/dist/esm/behavior/index.js +0 -7
- package/dist/esm/behavior/index.js.map +0 -6
- package/dist/esm/behavior/instrumentation.js +0 -19
- package/dist/esm/behavior/instrumentation.js.map +0 -6
- package/dist/esm/behavior/register.js +0 -8
- package/dist/esm/behavior/register.js.map +0 -6
- package/dist/esm/config.js +0 -190
- package/dist/esm/config.js.map +0 -6
- package/dist/esm/crypto/NodeJsCrypto.js +0 -16
- package/dist/esm/crypto/NodeJsCrypto.js.map +0 -6
- package/dist/esm/crypto/index.js +0 -7
- package/dist/esm/crypto/index.js.map +0 -6
- package/dist/esm/environment/NodeJsEnvironment.js +0 -242
- package/dist/esm/environment/NodeJsEnvironment.js.map +0 -6
- package/dist/esm/environment/ProcessManager.js +0 -109
- package/dist/esm/environment/ProcessManager.js.map +0 -6
- package/dist/esm/environment/index.js +0 -9
- package/dist/esm/environment/index.js.map +0 -6
- package/dist/esm/environment/register.js +0 -9
- package/dist/esm/environment/register.js.map +0 -6
- package/dist/esm/fs/NodeJsDirectory.js +0 -82
- package/dist/esm/fs/NodeJsDirectory.js.map +0 -6
- package/dist/esm/fs/NodeJsFile.js +0 -232
- package/dist/esm/fs/NodeJsFile.js.map +0 -6
- package/dist/esm/fs/NodeJsFilesystem.js +0 -63
- package/dist/esm/fs/NodeJsFilesystem.js.map +0 -6
- package/dist/esm/fs/fs-utils.js +0 -137
- package/dist/esm/fs/fs-utils.js.map +0 -6
- package/dist/esm/fs/index.js +0 -7
- package/dist/esm/fs/index.js.map +0 -6
- package/dist/esm/fs/lock-utils.js +0 -112
- package/dist/esm/fs/lock-utils.js.map +0 -6
- package/dist/esm/index.js +0 -14
- package/dist/esm/index.js.map +0 -6
- package/dist/esm/log/FileLogger.js +0 -26
- package/dist/esm/log/FileLogger.js.map +0 -6
- package/dist/esm/log/index.js +0 -7
- package/dist/esm/log/index.js.map +0 -6
- package/dist/esm/net/NodeJsHttpEndpoint.js +0 -286
- package/dist/esm/net/NodeJsHttpEndpoint.js.map +0 -6
- package/dist/esm/net/NodeJsNetwork.js +0 -189
- package/dist/esm/net/NodeJsNetwork.js.map +0 -6
- package/dist/esm/net/NodeJsTcpConnection.js +0 -124
- package/dist/esm/net/NodeJsTcpConnection.js.map +0 -6
- package/dist/esm/net/NodeJsTcpListener.js +0 -86
- package/dist/esm/net/NodeJsTcpListener.js.map +0 -6
- package/dist/esm/net/NodeJsUdpSocket.js +0 -385
- package/dist/esm/net/NodeJsUdpSocket.js.map +0 -6
- package/dist/esm/net/WsAdapter.js +0 -13
- package/dist/esm/net/WsAdapter.js.map +0 -6
- package/dist/esm/net/index.js +0 -12
- package/dist/esm/net/index.js.map +0 -6
- package/dist/esm/package.json +0 -6
- package/dist/esm/storage/fs/DirectoryBlobStorageDriver.js +0 -140
- package/dist/esm/storage/fs/DirectoryBlobStorageDriver.js.map +0 -6
- package/dist/esm/storage/fs/FileStorageDriver.js +0 -323
- package/dist/esm/storage/fs/FileStorageDriver.js.map +0 -6
- package/dist/esm/storage/fs/FlatFileBlobStorageDriver.js +0 -180
- package/dist/esm/storage/fs/FlatFileBlobStorageDriver.js.map +0 -6
- package/dist/esm/storage/fs/JsonFileStorageDriver.js +0 -116
- package/dist/esm/storage/fs/JsonFileStorageDriver.js.map +0 -6
- package/dist/esm/storage/fs/WalBlobStorageDriver.js +0 -24
- package/dist/esm/storage/fs/WalBlobStorageDriver.js.map +0 -6
- package/dist/esm/storage/fs/index.js +0 -19
- package/dist/esm/storage/fs/index.js.map +0 -6
- package/dist/esm/storage/index.js +0 -8
- package/dist/esm/storage/index.js.map +0 -6
- package/dist/esm/storage/sqlite/SqliteBlobStorageDriver.js +0 -197
- package/dist/esm/storage/sqlite/SqliteBlobStorageDriver.js.map +0 -6
- package/dist/esm/storage/sqlite/SqlitePlatform.js +0 -26
- package/dist/esm/storage/sqlite/SqlitePlatform.js.map +0 -6
- package/dist/esm/storage/sqlite/SqliteStorageDriver.js +0 -409
- package/dist/esm/storage/sqlite/SqliteStorageDriver.js.map +0 -6
- package/dist/esm/storage/sqlite/SqliteStorageDriverError.js +0 -21
- package/dist/esm/storage/sqlite/SqliteStorageDriverError.js.map +0 -6
- package/dist/esm/storage/sqlite/SqliteTypes.js +0 -15
- package/dist/esm/storage/sqlite/SqliteTypes.js.map +0 -6
- package/dist/esm/storage/sqlite/SqliteUtil.js +0 -44
- package/dist/esm/storage/sqlite/SqliteUtil.js.map +0 -6
- package/dist/esm/storage/sqlite/index.js +0 -17
- package/dist/esm/storage/sqlite/index.js.map +0 -6
- package/dist/esm/storage/sqlite/platform/BunSqlite.js +0 -41
- package/dist/esm/storage/sqlite/platform/BunSqlite.js.map +0 -6
- package/dist/esm/storage/sqlite/platform/NodeJsSqlite.js +0 -33
- package/dist/esm/storage/sqlite/platform/NodeJsSqlite.js.map +0 -6
- package/dist/esm/time/index.js +0 -7
- package/dist/esm/time/index.js.map +0 -6
- package/dist/esm/time/startup.js +0 -10
- package/dist/esm/time/startup.js.map +0 -6
- package/dist/esm/util/runtimeChecks.js +0 -25
- package/dist/esm/util/runtimeChecks.js.map +0 -6
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var NodeJsTcpConnection_exports = {};
|
|
20
|
-
__export(NodeJsTcpConnection_exports, {
|
|
21
|
-
NodeJsTcpConnection: () => NodeJsTcpConnection
|
|
22
|
-
});
|
|
23
|
-
module.exports = __toCommonJS(NodeJsTcpConnection_exports);
|
|
24
|
-
var import_general = require("@matter/general");
|
|
25
|
-
/**
|
|
26
|
-
* @license
|
|
27
|
-
* Copyright 2022-2026 Matter.js Authors
|
|
28
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
29
|
-
*/
|
|
30
|
-
const TCP_CLOSE_TIMEOUT = (0, import_general.Seconds)(5);
|
|
31
|
-
class NodeJsTcpConnection {
|
|
32
|
-
remoteAddress;
|
|
33
|
-
remotePort;
|
|
34
|
-
localPort;
|
|
35
|
-
#socket;
|
|
36
|
-
#ended = false;
|
|
37
|
-
/** Queued chunks waiting for the async iterator to consume. */
|
|
38
|
-
#chunks = new Array();
|
|
39
|
-
/** Resolver for a pending iterator next() call waiting for data. */
|
|
40
|
-
#waiter;
|
|
41
|
-
constructor(socket) {
|
|
42
|
-
this.#socket = socket;
|
|
43
|
-
socket.setNoDelay(true);
|
|
44
|
-
socket.setKeepAlive(true, import_general.TCP_KEEP_ALIVE_INITIAL_DELAY_MS);
|
|
45
|
-
this.remoteAddress = socket.remoteAddress ?? "";
|
|
46
|
-
this.remotePort = socket.remotePort ?? 0;
|
|
47
|
-
this.localPort = socket.localPort ?? 0;
|
|
48
|
-
socket.on("data", (data) => {
|
|
49
|
-
const chunk = new Uint8Array(data);
|
|
50
|
-
if (this.#waiter) {
|
|
51
|
-
const resolve = this.#waiter;
|
|
52
|
-
this.#waiter = void 0;
|
|
53
|
-
resolve({ value: chunk, done: false });
|
|
54
|
-
} else {
|
|
55
|
-
this.#chunks.push(chunk);
|
|
56
|
-
if (this.#chunks.length > 1) {
|
|
57
|
-
socket.pause();
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
socket.on("close", () => {
|
|
62
|
-
this.#ended = true;
|
|
63
|
-
this.#waiter?.({ value: void 0, done: true });
|
|
64
|
-
this.#waiter = void 0;
|
|
65
|
-
});
|
|
66
|
-
socket.on("error", (_error) => {
|
|
67
|
-
this.#ended = true;
|
|
68
|
-
this.#waiter?.({ value: void 0, done: true });
|
|
69
|
-
this.#waiter = void 0;
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
[Symbol.asyncIterator]() {
|
|
73
|
-
return {
|
|
74
|
-
next: () => {
|
|
75
|
-
if (this.#chunks.length > 0) {
|
|
76
|
-
const chunk = this.#chunks.shift();
|
|
77
|
-
if (this.#chunks.length === 0) {
|
|
78
|
-
this.#socket.resume();
|
|
79
|
-
}
|
|
80
|
-
return Promise.resolve({ value: chunk, done: false });
|
|
81
|
-
}
|
|
82
|
-
if (this.#ended) {
|
|
83
|
-
return Promise.resolve({ value: void 0, done: true });
|
|
84
|
-
}
|
|
85
|
-
this.#socket.resume();
|
|
86
|
-
return new Promise((resolve) => {
|
|
87
|
-
this.#waiter = resolve;
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
send(data) {
|
|
93
|
-
return new Promise((resolve, reject) => {
|
|
94
|
-
this.#socket.write(import_general.Bytes.of(data), (error) => {
|
|
95
|
-
if (error) {
|
|
96
|
-
reject(new import_general.NetworkError(error.message));
|
|
97
|
-
} else {
|
|
98
|
-
resolve();
|
|
99
|
-
}
|
|
100
|
-
});
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
onClose(listener) {
|
|
104
|
-
this.#socket.on("close", listener);
|
|
105
|
-
return {
|
|
106
|
-
close: async () => {
|
|
107
|
-
this.#socket.removeListener("close", listener);
|
|
108
|
-
}
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
onError(listener) {
|
|
112
|
-
const handler = (error) => {
|
|
113
|
-
listener(new import_general.NetworkError(error.message));
|
|
114
|
-
};
|
|
115
|
-
this.#socket.on("error", handler);
|
|
116
|
-
return {
|
|
117
|
-
close: async () => {
|
|
118
|
-
this.#socket.removeListener("error", handler);
|
|
119
|
-
}
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
async close() {
|
|
123
|
-
if (this.#socket.destroyed) {
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
this.#ended = true;
|
|
127
|
-
this.#waiter?.({ value: void 0, done: true });
|
|
128
|
-
this.#waiter = void 0;
|
|
129
|
-
const closed = new Promise((resolve) => {
|
|
130
|
-
this.#socket.once("close", () => resolve());
|
|
131
|
-
this.#socket.end();
|
|
132
|
-
});
|
|
133
|
-
await (0, import_general.withTimeout)(TCP_CLOSE_TIMEOUT, closed, () => {
|
|
134
|
-
this.#socket.destroy();
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
//# sourceMappingURL=NodeJsTcpConnection.js.map
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/net/NodeJsTcpConnection.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAQO;AAdP;AAAA;AAAA;AAAA;AAAA;AAkBA,MAAM,wBAAoB,wBAAQ,CAAC;AAM5B,MAAM,oBAA6C;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACT,SAAS;AAAA;AAAA,EAGT,UAAU,IAAI,MAAkB;AAAA;AAAA,EAEhC;AAAA,EAEA,YAAY,QAAgB;AACxB,SAAK,UAAU;AAEf,WAAO,WAAW,IAAI;AACtB,WAAO,aAAa,MAAM,8CAA+B;AAEzD,SAAK,gBAAgB,OAAO,iBAAiB;AAC7C,SAAK,aAAa,OAAO,cAAc;AACvC,SAAK,YAAY,OAAO,aAAa;AAErC,WAAO,GAAG,QAAQ,CAAC,SAAiB;AAChC,YAAM,QAAQ,IAAI,WAAW,IAAI;AACjC,UAAI,KAAK,SAAS;AACd,cAAM,UAAU,KAAK;AACrB,aAAK,UAAU;AACf,gBAAQ,EAAE,OAAO,OAAO,MAAM,MAAM,CAAC;AAAA,MACzC,OAAO;AACH,aAAK,QAAQ,KAAK,KAAK;AAEvB,YAAI,KAAK,QAAQ,SAAS,GAAG;AACzB,iBAAO,MAAM;AAAA,QACjB;AAAA,MACJ;AAAA,IACJ,CAAC;AAED,WAAO,GAAG,SAAS,MAAM;AACrB,WAAK,SAAS;AACd,WAAK,UAAU,EAAE,OAAO,QAA+B,MAAM,KAAK,CAAC;AACnE,WAAK,UAAU;AAAA,IACnB,CAAC;AAED,WAAO,GAAG,SAAS,CAAC,WAAkB;AAClC,WAAK,SAAS;AACd,WAAK,UAAU,EAAE,OAAO,QAA+B,MAAM,KAAK,CAAC;AACnE,WAAK,UAAU;AAAA,IACnB,CAAC;AAAA,EACL;AAAA,EAEA,CAAC,OAAO,aAAa,IAA0B;AAC3C,WAAO;AAAA,MACH,MAAM,MAAM;AACR,YAAI,KAAK,QAAQ,SAAS,GAAG;AACzB,gBAAM,QAAQ,KAAK,QAAQ,MAAM;AACjC,cAAI,KAAK,QAAQ,WAAW,GAAG;AAE3B,iBAAK,QAAQ,OAAO;AAAA,UACxB;AACA,iBAAO,QAAQ,QAAQ,EAAE,OAAO,OAAO,MAAM,MAAM,CAAC;AAAA,QACxD;AAEA,YAAI,KAAK,QAAQ;AACb,iBAAO,QAAQ,QAAQ,EAAE,OAAO,QAA+B,MAAM,KAAK,CAAC;AAAA,QAC/E;AAGA,aAAK,QAAQ,OAAO;AACpB,eAAO,IAAI,QAA+B,aAAW;AACjD,eAAK,UAAU;AAAA,QACnB,CAAC;AAAA,MACL;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,KAAK,MAA4B;AAC7B,WAAO,IAAI,QAAc,CAAC,SAAS,WAAW;AAC1C,WAAK,QAAQ,MAAM,qBAAM,GAAG,IAAI,GAAG,WAAS;AACxC,YAAI,OAAO;AACP,iBAAO,IAAI,4BAAa,MAAM,OAAO,CAAC;AAAA,QAC1C,OAAO;AACH,kBAAQ;AAAA,QACZ;AAAA,MACJ,CAAC;AAAA,IACL,CAAC;AAAA,EACL;AAAA,EAEA,QAAQ,UAA0C;AAC9C,SAAK,QAAQ,GAAG,SAAS,QAAQ;AACjC,WAAO;AAAA,MACH,OAAO,YAAY;AACf,aAAK,QAAQ,eAAe,SAAS,QAAQ;AAAA,MACjD;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,QAAQ,UAAsD;AAC1D,UAAM,UAAU,CAAC,UAAiB;AAC9B,eAAS,IAAI,4BAAa,MAAM,OAAO,CAAC;AAAA,IAC5C;AACA,SAAK,QAAQ,GAAG,SAAS,OAAO;AAChC,WAAO;AAAA,MACH,OAAO,YAAY;AACf,aAAK,QAAQ,eAAe,SAAS,OAAO;AAAA,MAChD;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAM,QAAuB;AACzB,QAAI,KAAK,QAAQ,WAAW;AACxB;AAAA,IACJ;AAEA,SAAK,SAAS;AACd,SAAK,UAAU,EAAE,OAAO,QAA+B,MAAM,KAAK,CAAC;AACnE,SAAK,UAAU;AAEf,UAAM,SAAS,IAAI,QAAc,aAAW;AACxC,WAAK,QAAQ,KAAK,SAAS,MAAM,QAAQ,CAAC;AAC1C,WAAK,QAAQ,IAAI;AAAA,IACrB,CAAC;AAED,cAAM,4BAAY,mBAAmB,QAAQ,MAAM;AAC/C,WAAK,QAAQ,QAAQ;AAAA,IACzB,CAAC;AAAA,EACL;AACJ;",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2022-2026 Matter.js Authors
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
import { TcpConnection, TcpListener, TcpListenerOptions, Transport } from "@matter/general";
|
|
7
|
-
/**
|
|
8
|
-
* Node.js implementation of the {@link TcpListener} interface.
|
|
9
|
-
* Wraps a `net.Server` that accepts incoming TCP connections.
|
|
10
|
-
*/
|
|
11
|
-
export declare class NodeJsTcpListener implements TcpListener {
|
|
12
|
-
#private;
|
|
13
|
-
static create(options?: TcpListenerOptions): Promise<NodeJsTcpListener>;
|
|
14
|
-
private constructor();
|
|
15
|
-
get port(): number;
|
|
16
|
-
onConnection(listener: (socket: TcpConnection) => void): Transport.Listener;
|
|
17
|
-
close(): Promise<void>;
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=NodeJsTcpListener.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NodeJsTcpListener.d.ts","sourceRoot":"","sources":["../../../src/net/NodeJsTcpListener.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAKH,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,SAAS,EAEZ,MAAM,iBAAiB,CAAC;AAiBzB;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,WAAW;;IAIjD,OAAa,MAAM,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA6BhF;IAED,OAAO,eAON;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,GAAG,SAAS,CAAC,QAAQ,CAU1E;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAU3B;CACJ"}
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var NodeJsTcpListener_exports = {};
|
|
20
|
-
__export(NodeJsTcpListener_exports, {
|
|
21
|
-
NodeJsTcpListener: () => NodeJsTcpListener
|
|
22
|
-
});
|
|
23
|
-
module.exports = __toCommonJS(NodeJsTcpListener_exports);
|
|
24
|
-
var import_general = require("@matter/general");
|
|
25
|
-
var import_node_net = require("node:net");
|
|
26
|
-
var import_NodeJsTcpConnection = require("./NodeJsTcpConnection.js");
|
|
27
|
-
/**
|
|
28
|
-
* @license
|
|
29
|
-
* Copyright 2022-2026 Matter.js Authors
|
|
30
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
31
|
-
*/
|
|
32
|
-
const logger = import_general.Logger.get("NodeJsTcpListener");
|
|
33
|
-
const TCP_LISTEN_TIMEOUT = (0, import_general.Seconds)(10);
|
|
34
|
-
function serverPort(server) {
|
|
35
|
-
const addr = server.address();
|
|
36
|
-
if (addr === null || typeof addr === "string") {
|
|
37
|
-
throw new import_general.NetworkError(`TCP server address is not an IP address: ${addr}`);
|
|
38
|
-
}
|
|
39
|
-
return addr.port;
|
|
40
|
-
}
|
|
41
|
-
class NodeJsTcpListener {
|
|
42
|
-
#server;
|
|
43
|
-
#activeSockets = /* @__PURE__ */ new Set();
|
|
44
|
-
static async create(options = {}) {
|
|
45
|
-
const { listeningPort, listeningAddress } = options;
|
|
46
|
-
const server = (0, import_node_net.createServer)({
|
|
47
|
-
keepAlive: true,
|
|
48
|
-
keepAliveInitialDelay: import_general.TCP_KEEP_ALIVE_INITIAL_DELAY_MS
|
|
49
|
-
});
|
|
50
|
-
const listening = new Promise((resolve, reject) => {
|
|
51
|
-
const handleError = (error) => {
|
|
52
|
-
server.removeListener("error", handleError);
|
|
53
|
-
reject(new import_general.NetworkError(error.message));
|
|
54
|
-
};
|
|
55
|
-
server.on("error", handleError);
|
|
56
|
-
server.listen(listeningPort ?? 0, listeningAddress, () => {
|
|
57
|
-
server.removeListener("error", handleError);
|
|
58
|
-
resolve();
|
|
59
|
-
});
|
|
60
|
-
});
|
|
61
|
-
await (0, import_general.withTimeout)(TCP_LISTEN_TIMEOUT, listening, () => {
|
|
62
|
-
server.close();
|
|
63
|
-
throw new import_general.NetworkError("TCP server listen timeout");
|
|
64
|
-
});
|
|
65
|
-
const port = serverPort(server);
|
|
66
|
-
logger.debug(`TCP server listening on ${listeningAddress ?? "all interfaces"} port ${port}`);
|
|
67
|
-
return new NodeJsTcpListener(server);
|
|
68
|
-
}
|
|
69
|
-
constructor(server) {
|
|
70
|
-
this.#server = server;
|
|
71
|
-
server.on("connection", (socket) => {
|
|
72
|
-
this.#activeSockets.add(socket);
|
|
73
|
-
socket.once("close", () => this.#activeSockets.delete(socket));
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
get port() {
|
|
77
|
-
return serverPort(this.#server);
|
|
78
|
-
}
|
|
79
|
-
onConnection(listener) {
|
|
80
|
-
const handler = (socket) => {
|
|
81
|
-
listener(new import_NodeJsTcpConnection.NodeJsTcpConnection(socket));
|
|
82
|
-
};
|
|
83
|
-
this.#server.on("connection", handler);
|
|
84
|
-
return {
|
|
85
|
-
close: async () => {
|
|
86
|
-
this.#server.removeListener("connection", handler);
|
|
87
|
-
}
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
async close() {
|
|
91
|
-
for (const socket of this.#activeSockets) {
|
|
92
|
-
socket.destroy();
|
|
93
|
-
}
|
|
94
|
-
this.#activeSockets.clear();
|
|
95
|
-
await new Promise((resolve, reject) => {
|
|
96
|
-
this.#server.close((error) => error ? reject(error) : resolve());
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
//# sourceMappingURL=NodeJsTcpListener.js.map
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/net/NodeJsTcpListener.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAUO;AACP,sBAAuD;AACvD,iCAAoC;AAlBpC;AAAA;AAAA;AAAA;AAAA;AAoBA,MAAM,SAAS,sBAAO,IAAI,mBAAmB;AAG7C,MAAM,yBAAqB,wBAAQ,EAAE;AAErC,SAAS,WAAW,QAAwB;AACxC,QAAM,OAAO,OAAO,QAAQ;AAC5B,MAAI,SAAS,QAAQ,OAAO,SAAS,UAAU;AAC3C,UAAM,IAAI,4BAAa,4CAA4C,IAAI,EAAE;AAAA,EAC7E;AACA,SAAO,KAAK;AAChB;AAMO,MAAM,kBAAyC;AAAA,EACzC;AAAA,EACA,iBAAiB,oBAAI,IAAY;AAAA,EAE1C,aAAa,OAAO,UAA8B,CAAC,GAA+B;AAC9E,UAAM,EAAE,eAAe,iBAAiB,IAAI;AAE5C,UAAM,aAAS,8BAAa;AAAA,MACxB,WAAW;AAAA,MACX,uBAAuB;AAAA,IAC3B,CAAC;AAED,UAAM,YAAY,IAAI,QAAc,CAAC,SAAS,WAAW;AACrD,YAAM,cAAc,CAAC,UAAiB;AAClC,eAAO,eAAe,SAAS,WAAW;AAC1C,eAAO,IAAI,4BAAa,MAAM,OAAO,CAAC;AAAA,MAC1C;AACA,aAAO,GAAG,SAAS,WAAW;AAC9B,aAAO,OAAO,iBAAiB,GAAG,kBAAkB,MAAM;AACtD,eAAO,eAAe,SAAS,WAAW;AAC1C,gBAAQ;AAAA,MACZ,CAAC;AAAA,IACL,CAAC;AAED,cAAM,4BAAY,oBAAoB,WAAW,MAAM;AACnD,aAAO,MAAM;AACb,YAAM,IAAI,4BAAa,2BAA2B;AAAA,IACtD,CAAC;AAED,UAAM,OAAO,WAAW,MAAM;AAC9B,WAAO,MAAM,2BAA2B,oBAAoB,gBAAgB,SAAS,IAAI,EAAE;AAE3F,WAAO,IAAI,kBAAkB,MAAM;AAAA,EACvC;AAAA,EAEQ,YAAY,QAAgB;AAChC,SAAK,UAAU;AAEf,WAAO,GAAG,cAAc,CAAC,WAAmB;AACxC,WAAK,eAAe,IAAI,MAAM;AAC9B,aAAO,KAAK,SAAS,MAAM,KAAK,eAAe,OAAO,MAAM,CAAC;AAAA,IACjE,CAAC;AAAA,EACL;AAAA,EAEA,IAAI,OAAe;AACf,WAAO,WAAW,KAAK,OAAO;AAAA,EAClC;AAAA,EAEA,aAAa,UAA+D;AACxE,UAAM,UAAU,CAAC,WAAmB;AAChC,eAAS,IAAI,+CAAoB,MAAM,CAAC;AAAA,IAC5C;AACA,SAAK,QAAQ,GAAG,cAAc,OAAO;AACrC,WAAO;AAAA,MACH,OAAO,YAAY;AACf,aAAK,QAAQ,eAAe,cAAc,OAAO;AAAA,MACrD;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAM,QAAuB;AAEzB,eAAW,UAAU,KAAK,gBAAgB;AACtC,aAAO,QAAQ;AAAA,IACnB;AACA,SAAK,eAAe,MAAM;AAE1B,UAAM,IAAI,QAAc,CAAC,SAAS,WAAW;AACzC,WAAK,QAAQ,MAAM,WAAU,QAAQ,OAAO,KAAK,IAAI,QAAQ,CAAE;AAAA,IACnE,CAAC;AAAA,EACL;AACJ;",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2022-2026 Matter.js Authors
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
import { Bytes, ChannelType, Lifetime, UdpSocket, UdpSocketOptions, UdpSocketType } from "@matter/general";
|
|
7
|
-
import * as dgram from "node:dgram";
|
|
8
|
-
export declare class NodeJsUdpSocket implements UdpSocket {
|
|
9
|
-
#private;
|
|
10
|
-
static create({ lifetime: lifetimeOwner, listeningPort, type, listeningAddress, netInterface, reuseAddress }: UdpSocketOptions): Promise<NodeJsUdpSocket>;
|
|
11
|
-
readonly maxPayloadSize: number;
|
|
12
|
-
constructor(lifetime: Lifetime, type: UdpSocketType, socket: dgram.Socket, netInterface?: string);
|
|
13
|
-
addMembership(membershipAddress: string): void;
|
|
14
|
-
dropMembership(membershipAddress: string): void;
|
|
15
|
-
onData(listener: (netInterface: string | undefined, peerAddress: string, peerPort: number, data: Bytes) => void): {
|
|
16
|
-
close: () => Promise<void>;
|
|
17
|
-
};
|
|
18
|
-
send(host: string, port: number, data: Bytes): Promise<void>;
|
|
19
|
-
close(): Promise<void>;
|
|
20
|
-
get port(): number;
|
|
21
|
-
supports(type: ChannelType, address?: string): boolean;
|
|
22
|
-
}
|
|
23
|
-
//# sourceMappingURL=NodeJsUdpSocket.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NodeJsUdpSocket.d.ts","sourceRoot":"","sources":["../../../src/net/NodeJsUdpSocket.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAIH,KAAK,EACL,WAAW,EAMX,QAAQ,EAUR,SAAS,EACT,gBAAgB,EAChB,aAAa,EAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AAqDpC,qBAAa,eAAgB,YAAW,SAAS;;IAO7C,OAAa,MAAM,CAAC,EAChB,QAAQ,EAAE,aAAa,EACvB,aAAa,EACb,IAAI,EACJ,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACf,EAAE,gBAAgB,4BAiElB;IAED,QAAQ,CAAC,cAAc,SAAwB;IAW/C,YAAY,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAK/F;IAED,aAAa,CAAC,iBAAiB,EAAE,MAAM,QAgBtC;IAED,cAAc,CAAC,iBAAiB,EAAE,MAAM,QAgBvC;IAED,MAAM,CAAC,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,KAAK,IAAI;QAWvG,KAAK;MAIZ;IAwBK,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,iBA0EjD;IAEK,KAAK,kBAUV;IAED,IAAI,IAAI,WAEP;IAED,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,WAgB3C;CACJ"}
|