@matter-server/ws-client 0.2.0-alpha.0-00000000-000000000

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +165 -0
  3. package/dist/esm/client.d.ts +67 -0
  4. package/dist/esm/client.d.ts.map +1 -0
  5. package/dist/esm/client.js +286 -0
  6. package/dist/esm/client.js.map +6 -0
  7. package/dist/esm/connection.d.ts +40 -0
  8. package/dist/esm/connection.d.ts.map +1 -0
  9. package/dist/esm/connection.js +75 -0
  10. package/dist/esm/connection.js.map +6 -0
  11. package/dist/esm/exceptions.d.ts +10 -0
  12. package/dist/esm/exceptions.d.ts.map +1 -0
  13. package/dist/esm/exceptions.js +14 -0
  14. package/dist/esm/exceptions.js.map +6 -0
  15. package/dist/esm/index.d.ts +15 -0
  16. package/dist/esm/index.d.ts.map +1 -0
  17. package/dist/esm/index.js +12 -0
  18. package/dist/esm/index.js.map +6 -0
  19. package/dist/esm/json-utils.d.ts +19 -0
  20. package/dist/esm/json-utils.d.ts.map +1 -0
  21. package/dist/esm/json-utils.js +50 -0
  22. package/dist/esm/json-utils.js.map +6 -0
  23. package/dist/esm/models/model.d.ts +379 -0
  24. package/dist/esm/models/model.d.ts.map +1 -0
  25. package/dist/esm/models/model.js +15 -0
  26. package/dist/esm/models/model.js.map +6 -0
  27. package/dist/esm/models/node.d.ts +40 -0
  28. package/dist/esm/models/node.d.ts.map +1 -0
  29. package/dist/esm/models/node.js +59 -0
  30. package/dist/esm/models/node.js.map +6 -0
  31. package/dist/esm/package.json +3 -0
  32. package/package.json +38 -0
  33. package/src/client.ts +405 -0
  34. package/src/connection.ts +103 -0
  35. package/src/exceptions.ts +9 -0
  36. package/src/index.ts +25 -0
  37. package/src/json-utils.ts +75 -0
  38. package/src/models/model.ts +344 -0
  39. package/src/models/node.ts +75 -0
  40. package/src/tsconfig.json +7 -0
@@ -0,0 +1,379 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025-2026 Open Home Foundation
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { MatterNode } from "./node.js";
7
+ /** Attribute data stored as path -> value mapping */
8
+ export type AttributesData = {
9
+ [key: string]: unknown;
10
+ };
11
+ export interface APICommands {
12
+ start_listening: {
13
+ requestArgs: Record<string, never>;
14
+ response: Array<MatterNode>;
15
+ };
16
+ diagnostics: {
17
+ requestArgs: Record<string, never>;
18
+ response: {
19
+ info: ServerInfoMessage;
20
+ nodes: Array<MatterNode>;
21
+ events: Array<MatterNodeEvent>;
22
+ };
23
+ };
24
+ server_info: {
25
+ requestArgs: Record<string, never>;
26
+ response: ServerInfoMessage;
27
+ };
28
+ get_nodes: {
29
+ requestArgs: {
30
+ only_available?: boolean;
31
+ };
32
+ response: Array<MatterNode>;
33
+ };
34
+ get_node: {
35
+ requestArgs: {
36
+ node_id: number | bigint;
37
+ };
38
+ response: MatterNode;
39
+ };
40
+ commission_with_code: {
41
+ requestArgs: {
42
+ code: string;
43
+ network_only?: boolean;
44
+ };
45
+ response: MatterNode;
46
+ };
47
+ commission_on_network: {
48
+ requestArgs: {
49
+ setup_pin_code: number;
50
+ filter_type?: number;
51
+ filter?: number;
52
+ ip_addr?: string;
53
+ };
54
+ response: MatterNode;
55
+ };
56
+ set_wifi_credentials: {
57
+ requestArgs: {
58
+ ssid: string;
59
+ credentials: string;
60
+ };
61
+ response: Record<string, never>;
62
+ };
63
+ set_thread_dataset: {
64
+ requestArgs: {
65
+ dataset: string;
66
+ };
67
+ response: Record<string, never>;
68
+ };
69
+ open_commissioning_window: {
70
+ requestArgs: {
71
+ node_id: number | bigint;
72
+ timeout?: number;
73
+ iteration?: number;
74
+ option?: number;
75
+ discriminator?: number | null;
76
+ };
77
+ response: CommissioningParameters;
78
+ };
79
+ discover: {
80
+ requestArgs: Record<string, never>;
81
+ response: CommissionableNodeData[];
82
+ };
83
+ interview_node: {
84
+ requestArgs: {
85
+ node_id: number | bigint;
86
+ };
87
+ response: null;
88
+ };
89
+ device_command: {
90
+ requestArgs: {
91
+ node_id: number | bigint;
92
+ endpoint_id: number;
93
+ cluster_id: number;
94
+ command_name: string;
95
+ payload: unknown;
96
+ response_type: unknown;
97
+ timed_request_timeout_ms?: number | null;
98
+ interaction_timeout_ms?: number | null;
99
+ };
100
+ response: unknown;
101
+ };
102
+ remove_node: {
103
+ requestArgs: {
104
+ node_id: number | bigint;
105
+ };
106
+ response: null;
107
+ };
108
+ get_vendor_names: {
109
+ requestArgs: {
110
+ filter_vendors?: Array<number>;
111
+ };
112
+ response: {
113
+ [key: string]: string;
114
+ };
115
+ };
116
+ subscribe_attribute: {
117
+ requestArgs: Record<string, never>;
118
+ response: Record<string, never>;
119
+ };
120
+ read_attribute: {
121
+ requestArgs: {
122
+ node_id: number | bigint;
123
+ attribute_path: string | string[];
124
+ fabric_filtered?: boolean;
125
+ };
126
+ response: AttributesData;
127
+ };
128
+ write_attribute: {
129
+ requestArgs: {
130
+ node_id: number | bigint;
131
+ attribute_path: string;
132
+ value: unknown;
133
+ };
134
+ response: Array<{
135
+ Path: {
136
+ EndpointId: number;
137
+ ClusterId: number;
138
+ AttributeId: number;
139
+ };
140
+ Status: number;
141
+ }>;
142
+ };
143
+ ping_node: {
144
+ requestArgs: {
145
+ node_id: number | bigint;
146
+ attempts?: number;
147
+ };
148
+ response: NodePingResult;
149
+ };
150
+ import_test_node: {
151
+ requestArgs: {
152
+ dump: string;
153
+ };
154
+ response: null;
155
+ };
156
+ get_node_ip_addresses: {
157
+ requestArgs: {
158
+ node_id: number | bigint;
159
+ prefer_cache?: boolean;
160
+ scoped?: boolean;
161
+ };
162
+ response: Array<string>;
163
+ };
164
+ check_node_update: {
165
+ requestArgs: {
166
+ node_id: number | bigint;
167
+ };
168
+ response: MatterSoftwareVersion | null;
169
+ };
170
+ update_node: {
171
+ requestArgs: {
172
+ node_id: number | bigint;
173
+ software_version: number | string;
174
+ };
175
+ response: MatterSoftwareVersion | null;
176
+ };
177
+ discover_commissionable_nodes: {
178
+ requestArgs: Record<string, never>;
179
+ response: CommissionableNodeData[];
180
+ };
181
+ get_matter_fabrics: {
182
+ requestArgs: {
183
+ node_id: number | bigint;
184
+ };
185
+ response: MatterFabricData[];
186
+ };
187
+ remove_matter_fabric: {
188
+ requestArgs: {
189
+ node_id: number | bigint;
190
+ fabric_index: number;
191
+ };
192
+ response: Record<string, never>;
193
+ };
194
+ set_acl_entry: {
195
+ requestArgs: {
196
+ node_id: number | bigint;
197
+ entry: AccessControlEntry[];
198
+ };
199
+ response: AttributeWriteResult[] | null;
200
+ };
201
+ set_node_binding: {
202
+ requestArgs: {
203
+ node_id: number | bigint;
204
+ endpoint: number;
205
+ bindings: BindingTarget[];
206
+ };
207
+ response: AttributeWriteResult[] | null;
208
+ };
209
+ set_default_fabric_label: {
210
+ requestArgs: {
211
+ label: string | null;
212
+ };
213
+ response: Record<string, never>;
214
+ };
215
+ }
216
+ /** Access Control Entry for set_acl_entry command */
217
+ export interface AccessControlEntry {
218
+ privilege: number;
219
+ auth_mode: number;
220
+ subjects: Array<number | bigint> | null;
221
+ targets: AccessControlTarget[] | null;
222
+ }
223
+ export interface AccessControlTarget {
224
+ cluster: number | null;
225
+ endpoint: number | null;
226
+ device_type: number | null;
227
+ }
228
+ /** Binding target for set_node_binding command */
229
+ export interface BindingTarget {
230
+ node: number | bigint | null;
231
+ group: number | null;
232
+ endpoint: number | null;
233
+ cluster: number | null;
234
+ }
235
+ /** Attribute write result for set_acl_entry and set_node_binding responses */
236
+ export interface AttributeWriteResult {
237
+ path: {
238
+ endpoint_id: number;
239
+ cluster_id: number;
240
+ attribute_id: number;
241
+ };
242
+ status: number;
243
+ }
244
+ /** Matter node event structure */
245
+ export interface MatterNodeEvent {
246
+ node_id: number | bigint;
247
+ endpoint_id: number;
248
+ cluster_id: number;
249
+ event_id: number;
250
+ event_number: number | bigint;
251
+ priority: number;
252
+ timestamp: number | bigint;
253
+ timestamp_type: number;
254
+ data: unknown | null;
255
+ }
256
+ export interface CommandMessage {
257
+ message_id: string;
258
+ command: keyof APICommands;
259
+ args?: APICommands[keyof APICommands]["requestArgs"];
260
+ }
261
+ export interface ServerInfoMessage {
262
+ fabric_id: number | bigint;
263
+ compressed_fabric_id: number | bigint;
264
+ schema_version: number;
265
+ min_supported_schema_version: number;
266
+ sdk_version: string;
267
+ wifi_credentials_set: boolean;
268
+ thread_credentials_set: boolean;
269
+ bluetooth_enabled: boolean;
270
+ }
271
+ interface ServerEventNodeAdded {
272
+ event: "node_added";
273
+ data: MatterNode;
274
+ }
275
+ interface ServerEventNodeUpdated {
276
+ event: "node_updated";
277
+ data: MatterNode;
278
+ }
279
+ interface ServerEventNodeRemoved {
280
+ event: "node_removed";
281
+ data: number | bigint;
282
+ }
283
+ interface ServerEventNodeEvent {
284
+ event: "node_event";
285
+ data: MatterNodeEvent;
286
+ }
287
+ interface ServerEventAttributeUpdated {
288
+ event: "attribute_updated";
289
+ data: [number | bigint, string, unknown];
290
+ }
291
+ interface ServerEventServerShutdown {
292
+ event: "server_shutdown";
293
+ data: Record<string, never>;
294
+ }
295
+ interface ServerEventEndpointAdded {
296
+ event: "endpoint_added";
297
+ data: {
298
+ node_id: number | bigint;
299
+ endpoint_id: number;
300
+ };
301
+ }
302
+ interface ServerEventEndpointRemoved {
303
+ event: "endpoint_removed";
304
+ data: {
305
+ node_id: number | bigint;
306
+ endpoint_id: number;
307
+ };
308
+ }
309
+ interface ServerEventInfoUpdated {
310
+ event: "server_info_updated";
311
+ data: ServerInfoMessage;
312
+ }
313
+ export type EventMessage = ServerEventNodeAdded | ServerEventNodeUpdated | ServerEventNodeRemoved | ServerEventNodeEvent | ServerEventAttributeUpdated | ServerEventServerShutdown | ServerEventEndpointAdded | ServerEventEndpointRemoved | ServerEventInfoUpdated;
314
+ export interface ResultMessageBase {
315
+ message_id: string;
316
+ }
317
+ export interface ErrorResultMessage extends ResultMessageBase {
318
+ error_code: number;
319
+ details?: string;
320
+ }
321
+ export interface SuccessResultMessage extends ResultMessageBase {
322
+ result: unknown;
323
+ }
324
+ export interface WebSocketConfig {
325
+ host: string;
326
+ port: string;
327
+ scheme: string;
328
+ path: string;
329
+ }
330
+ export declare enum UpdateSource {
331
+ MAIN_NET_DCL = "main-net-dcl",
332
+ TEST_NET_DCL = "test-net-dcl",
333
+ LOCAL = "local"
334
+ }
335
+ export interface MatterSoftwareVersion {
336
+ vid: number;
337
+ pid: number;
338
+ software_version: number;
339
+ software_version_string: string;
340
+ firmware_information?: string;
341
+ min_applicable_software_version: number;
342
+ max_applicable_software_version: number;
343
+ release_notes_url?: string;
344
+ update_source: UpdateSource;
345
+ }
346
+ export interface CommissioningParameters {
347
+ setup_pin_code: number;
348
+ setup_manual_code: string;
349
+ setup_qr_code: string;
350
+ }
351
+ export interface CommissionableNodeData {
352
+ instance_name?: string;
353
+ host_name?: string;
354
+ port?: number;
355
+ long_discriminator?: number;
356
+ vendor_id?: number;
357
+ product_id?: number;
358
+ commissioning_mode?: number;
359
+ device_type?: number;
360
+ device_name?: string;
361
+ pairing_instruction?: string;
362
+ pairing_hint?: number;
363
+ mrp_retry_interval_idle?: number;
364
+ mrp_retry_interval_active?: number;
365
+ supports_tcp?: boolean;
366
+ addresses?: string[];
367
+ rotating_id?: string;
368
+ }
369
+ export interface MatterFabricData {
370
+ fabric_id?: number | bigint;
371
+ vendor_id?: number;
372
+ fabric_index?: number;
373
+ fabric_label?: string;
374
+ vendor_name?: string;
375
+ }
376
+ export type NotificationType = "success" | "info" | "warning" | "error";
377
+ export type NodePingResult = Record<string, boolean>;
378
+ export {};
379
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/models/model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025-2026 Open Home Foundation
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ var UpdateSource = /* @__PURE__ */ ((UpdateSource2) => {
7
+ UpdateSource2["MAIN_NET_DCL"] = "main-net-dcl";
8
+ UpdateSource2["TEST_NET_DCL"] = "test-net-dcl";
9
+ UpdateSource2["LOCAL"] = "local";
10
+ return UpdateSource2;
11
+ })(UpdateSource || {});
12
+ export {
13
+ UpdateSource
14
+ };
15
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/models/model.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAmSO,IAAK,eAAL,kBAAKA,kBAAL;AACH,EAAAA,cAAA,kBAAe;AACf,EAAAA,cAAA,kBAAe;AACf,EAAAA,cAAA,WAAQ;AAHA,SAAAA;AAAA,GAAA;",
5
+ "names": ["UpdateSource"]
6
+ }
@@ -0,0 +1,40 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025-2026 Open Home Foundation
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /** Raw node data from server */
7
+ export interface MatterNodeData {
8
+ node_id: number | bigint;
9
+ date_commissioned: string;
10
+ last_interview: string;
11
+ interview_version: number;
12
+ available: boolean;
13
+ is_bridge: boolean;
14
+ attributes: {
15
+ [key: string]: unknown;
16
+ };
17
+ attribute_subscriptions: Array<[number | null, number | null, number | null]>;
18
+ }
19
+ export declare class MatterNode {
20
+ data: MatterNodeData;
21
+ node_id: number | bigint;
22
+ date_commissioned: string;
23
+ last_interview: string;
24
+ interview_version: number;
25
+ available: boolean;
26
+ is_bridge: boolean;
27
+ attributes: {
28
+ [key: string]: unknown;
29
+ };
30
+ attribute_subscriptions: Array<[number | null, number | null, number | null]>;
31
+ constructor(data: MatterNodeData);
32
+ get nodeLabel(): string;
33
+ get vendorName(): string;
34
+ get productName(): string;
35
+ get serialNumber(): string;
36
+ get updateState(): number | undefined;
37
+ get updateStateProgress(): number | undefined;
38
+ update(data: Partial<MatterNodeData>): MatterNode;
39
+ }
40
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/models/node.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,gCAAgC;AAChC,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IACvC,uBAAuB,EAAE,KAAK,CAAC,CAAC,MAAM,GAAG,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;CACjF;AAED,qBAAa,UAAU;IAUA,IAAI,EAAE,cAAc;IATvC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IACvC,uBAAuB,EAAE,KAAK,CAAC,CAAC,MAAM,GAAG,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;gBAE3D,IAAI,EAAE,cAAc;IAWvC,IAAI,SAAS,IAAI,MAAM,CAKtB;IAED,IAAI,UAAU,IAAI,MAAM,CAGvB;IAED,IAAI,WAAW,IAAI,MAAM,CAGxB;IAED,IAAI,YAAY,IAAI,MAAM,CAGzB;IAED,IAAI,WAAW,IAAI,MAAM,GAAG,SAAS,CAGpC;IAED,IAAI,mBAAmB,IAAI,MAAM,GAAG,SAAS,CAG5C;IAED,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,UAAU;CAGpD"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025-2026 Open Home Foundation
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ class MatterNode {
7
+ constructor(data) {
8
+ this.data = data;
9
+ this.node_id = data.node_id;
10
+ this.date_commissioned = data.date_commissioned;
11
+ this.last_interview = data.last_interview;
12
+ this.interview_version = data.interview_version;
13
+ this.available = data.available;
14
+ this.is_bridge = data.is_bridge;
15
+ this.attributes = data.attributes;
16
+ this.attribute_subscriptions = data.attribute_subscriptions;
17
+ }
18
+ node_id;
19
+ date_commissioned;
20
+ last_interview;
21
+ interview_version;
22
+ available;
23
+ is_bridge;
24
+ attributes;
25
+ attribute_subscriptions;
26
+ get nodeLabel() {
27
+ const label = this.attributes["0/40/5"];
28
+ if (typeof label !== "string") return "";
29
+ if (label.includes("\0\0")) return "";
30
+ return label.trim();
31
+ }
32
+ get vendorName() {
33
+ const value = this.attributes["0/40/1"];
34
+ return typeof value === "string" ? value : "";
35
+ }
36
+ get productName() {
37
+ const value = this.attributes["0/40/3"];
38
+ return typeof value === "string" ? value : "";
39
+ }
40
+ get serialNumber() {
41
+ const value = this.attributes["0/40/15"];
42
+ return typeof value === "string" ? value : "";
43
+ }
44
+ get updateState() {
45
+ const value = this.attributes["0/42/2"];
46
+ return typeof value === "number" ? value : void 0;
47
+ }
48
+ get updateStateProgress() {
49
+ const value = this.attributes["0/42/3"];
50
+ return typeof value === "number" ? value : void 0;
51
+ }
52
+ update(data) {
53
+ return new MatterNode({ ...this.data, ...data });
54
+ }
55
+ }
56
+ export {
57
+ MatterNode
58
+ };
59
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/models/node.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAkBO,MAAM,WAAW;AAAA,EAUpB,YAAmB,MAAsB;AAAtB;AACf,SAAK,UAAU,KAAK;AACpB,SAAK,oBAAoB,KAAK;AAC9B,SAAK,iBAAiB,KAAK;AAC3B,SAAK,oBAAoB,KAAK;AAC9B,SAAK,YAAY,KAAK;AACtB,SAAK,YAAY,KAAK;AACtB,SAAK,aAAa,KAAK;AACvB,SAAK,0BAA0B,KAAK;AAAA,EACxC;AAAA,EAlBA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAaA,IAAI,YAAoB;AACpB,UAAM,QAAQ,KAAK,WAAW,QAAQ;AACtC,QAAI,OAAO,UAAU,SAAU,QAAO;AACtC,QAAI,MAAM,SAAS,MAAc,EAAG,QAAO;AAC3C,WAAO,MAAM,KAAK;AAAA,EACtB;AAAA,EAEA,IAAI,aAAqB;AACrB,UAAM,QAAQ,KAAK,WAAW,QAAQ;AACtC,WAAO,OAAO,UAAU,WAAW,QAAQ;AAAA,EAC/C;AAAA,EAEA,IAAI,cAAsB;AACtB,UAAM,QAAQ,KAAK,WAAW,QAAQ;AACtC,WAAO,OAAO,UAAU,WAAW,QAAQ;AAAA,EAC/C;AAAA,EAEA,IAAI,eAAuB;AACvB,UAAM,QAAQ,KAAK,WAAW,SAAS;AACvC,WAAO,OAAO,UAAU,WAAW,QAAQ;AAAA,EAC/C;AAAA,EAEA,IAAI,cAAkC;AAClC,UAAM,QAAQ,KAAK,WAAW,QAAQ;AACtC,WAAO,OAAO,UAAU,WAAW,QAAQ;AAAA,EAC/C;AAAA,EAEA,IAAI,sBAA0C;AAC1C,UAAM,QAAQ,KAAK,WAAW,QAAQ;AACtC,WAAO,OAAO,UAAU,WAAW,QAAQ;AAAA,EAC/C;AAAA,EAEA,OAAO,MAA2C;AAC9C,WAAO,IAAI,WAAW,EAAE,GAAG,KAAK,MAAM,GAAG,KAAK,CAAC;AAAA,EACnD;AACJ;",
5
+ "names": []
6
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "module"
3
+ }
package/package.json ADDED
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "@matter-server/ws-client",
3
+ "version": "0.2.0-alpha.0-00000000-000000000",
4
+ "type": "module",
5
+ "description": "WebSocket client library for Matter server",
6
+ "bugs": {
7
+ "url": "https://github.com/matter-js/matterjs-server/issues"
8
+ },
9
+ "homepage": "https://github.com/matter-js/matterjs-server",
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "git+https://github.com/matter-js/matterjs-server.git"
13
+ },
14
+ "author": "Open Home Foundation",
15
+ "license": "Apache-2.0",
16
+ "main": "dist/esm/index.js",
17
+ "scripts": {
18
+ "clean": "matter-build clean",
19
+ "build": "matter-build",
20
+ "build-clean": "matter-build --clean"
21
+ },
22
+ "engines": {
23
+ "node": ">=20.19.0 <22.0.0 || >=22.13.0"
24
+ },
25
+ "dependencies": {},
26
+ "devDependencies": {
27
+ "@types/node": "^25.0.3"
28
+ },
29
+ "files": [
30
+ "dist/**/*",
31
+ "src/**/*",
32
+ "LICENSE",
33
+ "README.md"
34
+ ],
35
+ "publishConfig": {
36
+ "access": "public"
37
+ }
38
+ }