@matter/general 0.15.4 → 0.15.6

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 (46) hide show
  1. package/dist/cjs/codec/DnsCodec.d.ts +28 -3
  2. package/dist/cjs/codec/DnsCodec.d.ts.map +1 -1
  3. package/dist/cjs/codec/DnsCodec.js +31 -2
  4. package/dist/cjs/codec/DnsCodec.js.map +2 -2
  5. package/dist/cjs/environment/Environment.d.ts.map +1 -1
  6. package/dist/cjs/environment/Environment.js +28 -11
  7. package/dist/cjs/environment/Environment.js.map +1 -1
  8. package/dist/cjs/log/Logger.js +1 -1
  9. package/dist/cjs/net/mock/MockNetwork.d.ts +1 -5
  10. package/dist/cjs/net/mock/MockNetwork.d.ts.map +1 -1
  11. package/dist/cjs/net/mock/MockRouter.d.ts +2 -5
  12. package/dist/cjs/net/mock/MockRouter.d.ts.map +1 -1
  13. package/dist/cjs/net/mock/MockRouter.js +8 -1
  14. package/dist/cjs/net/mock/MockRouter.js.map +1 -1
  15. package/dist/cjs/net/mock/MockUdpChannel.d.ts +2 -1
  16. package/dist/cjs/net/mock/MockUdpChannel.d.ts.map +1 -1
  17. package/dist/cjs/net/mock/MockUdpChannel.js +3 -2
  18. package/dist/cjs/net/mock/MockUdpChannel.js.map +1 -1
  19. package/dist/cjs/net/mock/NetworkSimulator.d.ts +1 -5
  20. package/dist/cjs/net/mock/NetworkSimulator.d.ts.map +1 -1
  21. package/dist/esm/codec/DnsCodec.d.ts +28 -3
  22. package/dist/esm/codec/DnsCodec.d.ts.map +1 -1
  23. package/dist/esm/codec/DnsCodec.js +31 -2
  24. package/dist/esm/codec/DnsCodec.js.map +2 -2
  25. package/dist/esm/environment/Environment.d.ts.map +1 -1
  26. package/dist/esm/environment/Environment.js +28 -11
  27. package/dist/esm/environment/Environment.js.map +1 -1
  28. package/dist/esm/log/Logger.js +1 -1
  29. package/dist/esm/net/mock/MockNetwork.d.ts +1 -5
  30. package/dist/esm/net/mock/MockNetwork.d.ts.map +1 -1
  31. package/dist/esm/net/mock/MockRouter.d.ts +2 -5
  32. package/dist/esm/net/mock/MockRouter.d.ts.map +1 -1
  33. package/dist/esm/net/mock/MockRouter.js +8 -1
  34. package/dist/esm/net/mock/MockRouter.js.map +1 -1
  35. package/dist/esm/net/mock/MockUdpChannel.d.ts +2 -1
  36. package/dist/esm/net/mock/MockUdpChannel.d.ts.map +1 -1
  37. package/dist/esm/net/mock/MockUdpChannel.js +3 -2
  38. package/dist/esm/net/mock/MockUdpChannel.js.map +1 -1
  39. package/dist/esm/net/mock/NetworkSimulator.d.ts +1 -5
  40. package/dist/esm/net/mock/NetworkSimulator.d.ts.map +1 -1
  41. package/package.json +2 -2
  42. package/src/codec/DnsCodec.ts +53 -4
  43. package/src/environment/Environment.ts +39 -13
  44. package/src/log/Logger.ts +1 -1
  45. package/src/net/mock/MockRouter.ts +10 -1
  46. package/src/net/mock/MockUdpChannel.ts +7 -2
@@ -48,11 +48,36 @@ export type DnsMessagePartiallyPreEncoded = Omit<DnsMessage, "answers" | "additi
48
48
  answers: (DnsRecord<any> | Uint8Array)[];
49
49
  additionalRecords: (DnsRecord<any> | Uint8Array)[];
50
50
  };
51
+ /** Bit flags to use to determine separate flags in the DnsMessageType field */
52
+ export declare enum DnsMessageTypeFlag {
53
+ /** Indicates if the message is a query (0) or a reply (1). */
54
+ QR = 32768,
55
+ /** The type can be QUERY (standard query, 0), IQUERY (inverse query, 1), or STATUS (server status request, 2). */
56
+ OPCODE = 30720,
57
+ /** Authoritative Answer, in a response, indicates if the DNS server is authoritative for the queried hostname. */
58
+ AA = 1024,
59
+ /** TrunCation, indicates that this message was truncated due to excessive length. */
60
+ TC = 512,
61
+ /** Recursion Desired, indicates if the client means a recursive query. */
62
+ RD = 256,
63
+ /** Recursion Available, in a response, indicates if the replying DNS server supports recursion. */
64
+ RA = 128,
65
+ /** Authentic Data, in a response, indicates if the replying DNS server verified the data. */
66
+ AD = 32,
67
+ /** Checking Disabled, in a query, indicates that non-verified data is acceptable in a response. */
68
+ CD = 16,
69
+ /** Response code, can be NOERROR (0), FORMERR (1, Format error), SERVFAIL (2), NXDOMAIN (3, Nonexistent domain), etc. */
70
+ RCODE = 15
71
+ }
72
+ /** Convenient Message types we use when sending mDNS messages */
51
73
  export declare enum DnsMessageType {
52
- Query = 0,
74
+ Query = 0,// No bit set
53
75
  TruncatedQuery = 512,
54
- Response = 33792,// Authoritative Answer
55
- TruncatedResponse = 34304
76
+ Response = 33792
77
+ }
78
+ export declare namespace DnsMessageType {
79
+ function isQuery(type: number): boolean;
80
+ function isResponse(type: number): boolean;
56
81
  }
57
82
  export declare enum DnsRecordType {
58
83
  A = 1,
@@ -1 +1 @@
1
- {"version":3,"file":"DnsCodec.d.ts","sourceRoot":"","sources":["../../../src/codec/DnsCodec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DnsCodec.d.ts","sourceRoot":"","sources":["../../../src/codec/DnsCodec.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,7 @@ __export(DnsCodec_exports, {
22
22
  ARecord: () => ARecord,
23
23
  DnsCodec: () => DnsCodec,
24
24
  DnsMessageType: () => DnsMessageType,
25
+ DnsMessageTypeFlag: () => DnsMessageTypeFlag,
25
26
  DnsRecordClass: () => DnsRecordClass,
26
27
  DnsRecordType: () => DnsRecordType,
27
28
  MAX_MDNS_MESSAGE_SIZE: () => MAX_MDNS_MESSAGE_SIZE,
@@ -30,6 +31,8 @@ __export(DnsCodec_exports, {
30
31
  TxtRecord: () => TxtRecord
31
32
  });
32
33
  module.exports = __toCommonJS(DnsCodec_exports);
34
+ var import_Diagnostic = require("#log/Diagnostic.js");
35
+ var import_Logger = require("#log/Logger.js");
33
36
  var import_MatterError = require("../MatterError.js");
34
37
  var import_Bytes = require("../util/Bytes.js");
35
38
  var import_DataReader = require("../util/DataReader.js");
@@ -40,6 +43,7 @@ var import_Ip = require("../util/Ip.js");
40
43
  * Copyright 2022-2025 Matter.js Authors
41
44
  * SPDX-License-Identifier: Apache-2.0
42
45
  */
46
+ const logger = import_Logger.Logger.get("DnsCodec");
43
47
  const MAX_MDNS_MESSAGE_SIZE = 1232;
44
48
  const PtrRecord = (name, ptr, forInstance, ttl = 120, flushCache = false) => ({
45
49
  name,
@@ -84,13 +88,34 @@ const SrvRecord = (name, srv, forInstance, ttl = 120, flushCache = false) => ({
84
88
  flushCache,
85
89
  forInstance
86
90
  });
91
+ var DnsMessageTypeFlag = /* @__PURE__ */ ((DnsMessageTypeFlag2) => {
92
+ DnsMessageTypeFlag2[DnsMessageTypeFlag2["QR"] = 32768] = "QR";
93
+ DnsMessageTypeFlag2[DnsMessageTypeFlag2["OPCODE"] = 30720] = "OPCODE";
94
+ DnsMessageTypeFlag2[DnsMessageTypeFlag2["AA"] = 1024] = "AA";
95
+ DnsMessageTypeFlag2[DnsMessageTypeFlag2["TC"] = 512] = "TC";
96
+ DnsMessageTypeFlag2[DnsMessageTypeFlag2["RD"] = 256] = "RD";
97
+ DnsMessageTypeFlag2[DnsMessageTypeFlag2["RA"] = 128] = "RA";
98
+ DnsMessageTypeFlag2[DnsMessageTypeFlag2["AD"] = 32] = "AD";
99
+ DnsMessageTypeFlag2[DnsMessageTypeFlag2["CD"] = 16] = "CD";
100
+ DnsMessageTypeFlag2[DnsMessageTypeFlag2["RCODE"] = 15] = "RCODE";
101
+ return DnsMessageTypeFlag2;
102
+ })(DnsMessageTypeFlag || {});
87
103
  var DnsMessageType = /* @__PURE__ */ ((DnsMessageType2) => {
88
104
  DnsMessageType2[DnsMessageType2["Query"] = 0] = "Query";
89
105
  DnsMessageType2[DnsMessageType2["TruncatedQuery"] = 512] = "TruncatedQuery";
90
106
  DnsMessageType2[DnsMessageType2["Response"] = 33792] = "Response";
91
- DnsMessageType2[DnsMessageType2["TruncatedResponse"] = 34304] = "TruncatedResponse";
92
107
  return DnsMessageType2;
93
108
  })(DnsMessageType || {});
109
+ ((DnsMessageType2) => {
110
+ function isQuery(type) {
111
+ return (type & 32768 /* QR */) === 0;
112
+ }
113
+ DnsMessageType2.isQuery = isQuery;
114
+ function isResponse(type) {
115
+ return (type & 32768 /* QR */) !== 0;
116
+ }
117
+ DnsMessageType2.isResponse = isResponse;
118
+ })(DnsMessageType || (DnsMessageType = {}));
94
119
  var DnsRecordType = /* @__PURE__ */ ((DnsRecordType2) => {
95
120
  DnsRecordType2[DnsRecordType2["A"] = 1] = "A";
96
121
  DnsRecordType2[DnsRecordType2["PTR"] = 12] = "PTR";
@@ -237,7 +262,7 @@ class DnsCodec {
237
262
  additionalRecords = []
238
263
  }) {
239
264
  if (messageType === void 0) throw new import_MatterError.InternalError("Message type must be specified!");
240
- if (queries.length > 0 && messageType !== 0 /* Query */ && messageType !== 512 /* TruncatedQuery */)
265
+ if (queries.length > 0 && !DnsMessageType.isQuery(messageType))
241
266
  throw new import_MatterError.InternalError("Queries can only be included in query messages!");
242
267
  if (authorities.length > 0) throw new import_MatterError.NotImplementedError("Authority answers are not supported yet!");
243
268
  const writer = new import_DataWriter.DataWriter();
@@ -263,6 +288,10 @@ class DnsCodec {
263
288
  }
264
289
  static encodeRecord(record) {
265
290
  const { name, recordType, recordClass, ttl, value, flushCache = false } = record;
291
+ if (recordType === void 0 || value === void 0) {
292
+ logger.warn("Skipping record encoding due to missing type or value.", import_Diagnostic.Diagnostic.dict(record));
293
+ return new Uint8Array(0);
294
+ }
266
295
  const writer = new import_DataWriter.DataWriter();
267
296
  writer.writeByteArray(this.encodeQName(name));
268
297
  writer.writeUInt16(recordType);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/codec/DnsCodec.ts"],
4
- "mappings": "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",
5
- "names": ["DnsMessageType", "DnsRecordType", "DnsRecordClass"]
4
+ "mappings": "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",
5
+ "names": ["DnsMessageTypeFlag", "DnsMessageType", "DnsRecordType", "DnsRecordClass"]
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Environment.d.ts","sourceRoot":"","sources":["../../../src/environment/Environment.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,4BAA4B,CAAC;AAGpC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAIvD;;;;;;;;;;;;GAYG;AACH,qBAAa,WAAW;;gBAQR,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW;IAK9C;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,OAAO;IAIxD;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;IAelE;;OAEG;IACH,QAAQ,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS;IAMnF;;;;;OAKG;IACH,MAAM,CAAC,IAAI,EAAE,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG;IAejE;;OAEG;IACH,KAAK,CAAC,CAAC,SAAS,MAAM,EAClB,IAAI,EAAE,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GACzC,CAAC,SAAS;QAAE,KAAK,EAAE,MAAM,YAAY,CAAC,IAAI,CAAC,CAAA;KAAE,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI;IAU5E;;OAEG;IACG,IAAI,CAAC,CAAC,SAAS,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IAM1E;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IAYvE;;OAEG;IACH,IAAI,IAAI,WAEP;IAED,IAAI,IAAI,IAAI,WAAW,CAEtB;IAED;;;;OAIG;IACH,IAAI,KAAK,6CAvHyC,GAAG,EAAE,KAAK,EAAE,uBAyH7D;IAED;;;;OAIG;IACH,IAAI,OAAO,6CA/HyC,GAAG,EAAE,KAAK,EAAE,uBAiI/D;IAED;;;;OAIG;IACH,SAAS,CAAC,CAAC,SAAS,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,GASlC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC;IAGnD;;;;OAIG;IACH,MAAM,KAAK,OAAO,IAOM,WAAW,CALlC;IAED;;OAEG;IACH,MAAM,KAAK,OAAO,CAAC,GAAG,EAAE,WAAW,EAYlC;IAED;;OAEG;IACH,IAAI,IAAI,oBAEP;IAED;;OAEG;IACH,IAAI,OAAO,mBAEV;IAED;;OAEG;IACH,QAAQ;IAUR,SAAS,CAAC,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAGjD"}
1
+ {"version":3,"file":"Environment.d.ts","sourceRoot":"","sources":["../../../src/environment/Environment.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,4BAA4B,CAAC;AAGpC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAIvD;;;;;;;;;;;;GAYG;AACH,qBAAa,WAAW;;gBAQR,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW;IAK9C;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,OAAO;IAUxD;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;IA4BlE;;OAEG;IACH,QAAQ,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS;IAMnF;;;;;OAKG;IACH,MAAM,CAAC,IAAI,EAAE,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG;IAqBjE;;OAEG;IACH,KAAK,CAAC,CAAC,SAAS,MAAM,EAClB,IAAI,EAAE,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GACzC,CAAC,SAAS;QAAE,KAAK,EAAE,MAAM,YAAY,CAAC,IAAI,CAAC,CAAA;KAAE,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI;IAU5E;;OAEG;IACG,IAAI,CAAC,CAAC,SAAS,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IAM1E;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IAYvE;;OAEG;IACH,IAAI,IAAI,WAEP;IAED,IAAI,IAAI,IAAI,WAAW,CAEtB;IAED;;;;OAIG;IACH,IAAI,KAAK,6CAhJyC,GAAG,EAAE,KAAK,EAAE,uBAkJ7D;IAED;;;;OAIG;IACH,IAAI,OAAO,6CAxJyC,GAAG,EAAE,KAAK,EAAE,uBA0J/D;IAED;;;;OAIG;IACH,SAAS,CAAC,CAAC,SAAS,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,GASlC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC;IAGnD;;;;OAIG;IACH,MAAM,KAAK,OAAO,IAOM,WAAW,CALlC;IAED;;OAEG;IACH,MAAM,KAAK,OAAO,CAAC,GAAG,EAAE,WAAW,EAYlC;IAED;;OAEG;IACH,IAAI,IAAI,oBAEP;IAED;;OAEG;IACH,IAAI,OAAO,mBAEV;IAED;;OAEG;IACH,QAAQ;IAUR,SAAS,CAAC,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAGjD"}
@@ -21,6 +21,7 @@ __export(Environment_exports, {
21
21
  Environment: () => Environment
22
22
  });
23
23
  module.exports = __toCommonJS(Environment_exports);
24
+ var import_MatterError = require("#MatterError.js");
24
25
  var import_DiagnosticSource = require("../log/DiagnosticSource.js");
25
26
  var import_Logger = require("../log/Logger.js");
26
27
  var import_disposable = require("../polyfills/disposable.js");
@@ -51,18 +52,31 @@ class Environment {
51
52
  * Determine if an environmental service is available.
52
53
  */
53
54
  has(type) {
54
- return this.#services?.get(type) !== void 0 || (this.#parent?.has(type) ?? false);
55
+ const mine = this.#services?.get(type);
56
+ if (mine === null) {
57
+ return false;
58
+ }
59
+ return mine !== void 0 || (this.#parent?.has(type) ?? false);
55
60
  }
56
61
  /**
57
62
  * Access an environmental service.
58
63
  */
59
64
  get(type) {
60
- let instance = this.#services?.get(type) ?? this.#parent?.maybeGet(type);
61
- if (instance) {
62
- return instance;
65
+ const mine = this.#services?.get(type);
66
+ if (mine !== void 0 && mine !== null) {
67
+ return mine;
68
+ }
69
+ if (mine === void 0) {
70
+ const instance = this.#parent?.maybeGet(type);
71
+ if (instance !== void 0 && instance !== null) {
72
+ return instance;
73
+ }
63
74
  }
64
75
  if (type[import_Environmental.Environmental.create]) {
65
- this.set(type, instance = type[import_Environmental.Environmental.create](this));
76
+ const instance = type[import_Environmental.Environmental.create](this);
77
+ if (!(instance instanceof type)) {
78
+ throw new import_MatterError.InternalError(`Service creation did not produce instance of ${type.name}`);
79
+ }
66
80
  return instance;
67
81
  }
68
82
  throw new import_Lifecycle.UnsupportedDependencyError(`Required dependency ${type.name}`, "is not available");
@@ -82,15 +96,18 @@ class Environment {
82
96
  * @param instance optional instance expected, if existing instance does not match it is not deleted
83
97
  */
84
98
  delete(type, instance) {
85
- if (instance !== void 0 && this.#services?.get(type) !== instance) {
99
+ const localInstance = this.#services?.get(type);
100
+ this.#services?.set(type, null);
101
+ if (localInstance === void 0 || localInstance === null) {
102
+ return;
103
+ }
104
+ if (instance !== void 0 && localInstance !== instance) {
86
105
  return;
87
106
  }
88
- this.#services?.delete(type);
89
- this.#parent?.delete(type);
90
- this.#deleted.emit(type, instance);
107
+ this.#deleted.emit(type, localInstance);
91
108
  const serviceEvents = this.#serviceEvents.get(type);
92
109
  if (serviceEvents) {
93
- serviceEvents.deleted.emit(instance);
110
+ serviceEvents.deleted.emit(localInstance);
94
111
  }
95
112
  }
96
113
  /**
@@ -98,8 +115,8 @@ class Environment {
98
115
  */
99
116
  close(type) {
100
117
  const instance = this.maybeGet(type);
118
+ this.delete(type, instance);
101
119
  if (instance !== void 0) {
102
- this.delete(type, instance);
103
120
  return instance.close?.();
104
121
  }
105
122
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/environment/Environment.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -188,7 +188,7 @@ class Logger {
188
188
  for (const name in Logger.destinations) {
189
189
  const dest = Logger.destinations[name];
190
190
  if (level < (dest.facilityLevels?.[this.#name] ?? dest.level)) {
191
- return;
191
+ continue;
192
192
  }
193
193
  if (!dest.context) {
194
194
  dest.context = import_Diagnostic.Diagnostic.Context();
@@ -11,11 +11,7 @@ import { MockUdpChannel } from "./MockUdpChannel.js";
11
11
  import type { NetworkSimulator } from "./NetworkSimulator.js";
12
12
  export declare class MockNetwork extends Network {
13
13
  #private;
14
- readonly router: {
15
- (packet: MockRouter.Packet): void;
16
- add: (value: MockRouter.Route) => Set<MockRouter.Route>;
17
- delete: (value: MockRouter.Route) => boolean;
18
- };
14
+ readonly router: MockRouter;
19
15
  constructor(simulator: NetworkSimulator, mac: string, ips: string[]);
20
16
  get simulator(): NetworkSimulator;
21
17
  getNetInterfaces(): NetworkInterface[];
@@ -1 +1 @@
1
- {"version":3,"file":"MockNetwork.d.ts","sourceRoot":"","sources":["../../../../src/net/mock/MockNetwork.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAgB,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,qBAAa,WAAY,SAAQ,OAAO;;IACpC,QAAQ,CAAC,MAAM;;;;MAAgB;gBAInB,SAAS,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE;IAWnE,IAAI,SAAS,qBAEZ;IAED,gBAAgB,IAAI,gBAAgB,EAAE;IAItC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,uBAAuB;IAOtC,gBAAgB,CAAC,OAAO,EAAE,iBAAiB;IAIpD,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM;IAI7B,KAAK;CAGvB"}
1
+ {"version":3,"file":"MockNetwork.d.ts","sourceRoot":"","sources":["../../../../src/net/mock/MockNetwork.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAgB,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,qBAAa,WAAY,SAAQ,OAAO;;IACpC,QAAQ,CAAC,MAAM,aAAgB;gBAInB,SAAS,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE;IAWnE,IAAI,SAAS,qBAEZ;IAED,gBAAgB,IAAI,gBAAgB,EAAE;IAItC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,uBAAuB;IAOtC,gBAAgB,CAAC,OAAO,EAAE,iBAAiB;IAIpD,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM;IAI7B,KAAK;CAGvB"}
@@ -7,11 +7,7 @@ export interface MockRouter extends MockRouter.Route {
7
7
  add(route: MockRouter.Route): void;
8
8
  delete(route: MockRouter.Route): void;
9
9
  }
10
- export declare function MockRouter(): {
11
- (packet: MockRouter.Packet): void;
12
- add: (value: MockRouter.Route) => Set<MockRouter.Route>;
13
- delete: (value: MockRouter.Route) => boolean;
14
- };
10
+ export declare function MockRouter(manipulator?: MockRouter.PacketManipulator): MockRouter;
15
11
  export declare namespace MockRouter {
16
12
  interface Packet {
17
13
  kind: "udp";
@@ -24,5 +20,6 @@ export declare namespace MockRouter {
24
20
  interface Route {
25
21
  (packet: Packet): void;
26
22
  }
23
+ type PacketManipulator = (packet: Packet) => Packet | null;
27
24
  }
28
25
  //# sourceMappingURL=MockRouter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MockRouter.d.ts","sourceRoot":"","sources":["../../../../src/net/mock/MockRouter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,WAAW,UAAW,SAAQ,UAAU,CAAC,KAAK;IAChD,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;IACnC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;CACzC;AAED,wBAAgB,UAAU;aAGiB,UAAU,CAAC,MAAM;;;EAc3D;AAED,yBAAiB,UAAU,CAAC;IACxB,UAAiB,MAAM;QACnB,IAAI,EAAE,KAAK,CAAC;QACZ,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,UAAU,CAAC;KACvB;IAED,UAAiB,KAAK;QAClB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B;CACJ"}
1
+ {"version":3,"file":"MockRouter.d.ts","sourceRoot":"","sources":["../../../../src/net/mock/MockRouter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,WAAW,UAAW,SAAQ,UAAU,CAAC,KAAK;IAChD,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;IACnC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;CACzC;AAED,wBAAgB,UAAU,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC,iBAAiB,GAAG,UAAU,CAwBjF;AAED,yBAAiB,UAAU,CAAC;IACxB,UAAiB,MAAM;QACnB,IAAI,EAAE,KAAK,CAAC;QACZ,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,UAAU,CAAC;KACvB;IAED,UAAiB,KAAK;QAClB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B;IAED,KAAY,iBAAiB,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CACrE"}
@@ -28,9 +28,16 @@ var import_Logger = require("#log/Logger.js");
28
28
  * SPDX-License-Identifier: Apache-2.0
29
29
  */
30
30
  const logger = import_Logger.Logger.get("MockRouter");
31
- function MockRouter() {
31
+ function MockRouter(manipulator) {
32
32
  const routes = /* @__PURE__ */ new Set();
33
33
  const router = function router2(packet) {
34
+ if (manipulator) {
35
+ const manipulatedPacket = manipulator(packet);
36
+ if (manipulatedPacket === null) {
37
+ return;
38
+ }
39
+ packet = manipulatedPacket;
40
+ }
34
41
  for (const route of routes) {
35
42
  try {
36
43
  route(packet);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/net/mock/MockRouter.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,oBAAuB;AANvB;AAAA;AAAA;AAAA;AAAA;AAQA,MAAM,SAAS,qBAAO,IAAI,YAAY;AAO/B,SAAS,aAAa;AACzB,QAAM,SAAS,oBAAI,IAAsB;AAEzC,QAAM,SAAS,SAASA,QAAO,QAA2B;AACtD,eAAW,SAAS,QAAQ;AACxB,UAAI;AACA,cAAM,MAAM;AAAA,MAChB,SAAS,GAAG;AACR,eAAO,MAAM,uCAAuC,CAAC;AAAA,MACzD;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO,MAAM,OAAO,IAAI,KAAK,MAAM;AACnC,SAAO,SAAS,OAAO,OAAO,KAAK,MAAM;AAEzC,SAAO;AACX;",
4
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,oBAAuB;AANvB;AAAA;AAAA;AAAA;AAAA;AAQA,MAAM,SAAS,qBAAO,IAAI,YAAY;AAO/B,SAAS,WAAW,aAAwD;AAC/E,QAAM,SAAS,oBAAI,IAAsB;AAEzC,QAAM,SAAS,SAASA,QAAO,QAA2B;AACtD,QAAI,aAAa;AACb,YAAM,oBAAoB,YAAY,MAAM;AAC5C,UAAI,sBAAsB,MAAM;AAC5B;AAAA,MACJ;AACA,eAAS;AAAA,IACb;AACA,eAAW,SAAS,QAAQ;AACxB,UAAI;AACA,cAAM,MAAM;AAAA,MAChB,SAAS,GAAG;AACR,eAAO,MAAM,uCAAuC,CAAC;AAAA,MACzD;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO,MAAM,OAAO,IAAI,KAAK,MAAM;AACnC,SAAO,SAAS,OAAO,OAAO,KAAK,MAAM;AAEzC,SAAO;AACX;",
5
5
  "names": ["router"]
6
6
  }
@@ -6,10 +6,11 @@
6
6
  import { ChannelType } from "#net/Channel.js";
7
7
  import { UdpChannel, UdpChannelOptions } from "../UdpChannel.js";
8
8
  import { MockNetwork } from "./MockNetwork.js";
9
+ import { MockRouter } from "./MockRouter.js";
9
10
  export declare class MockUdpChannel implements UdpChannel {
10
11
  #private;
11
12
  readonly maxPayloadSize: number;
12
- constructor(network: MockNetwork, { listeningAddress, listeningPort, netInterface, type }: UdpChannelOptions);
13
+ constructor(network: MockNetwork, { listeningAddress, listeningPort, netInterface, type }: UdpChannelOptions, packetManipulator?: MockRouter.PacketManipulator);
13
14
  onData(listener: UdpChannel.Callback): {
14
15
  close: () => Promise<void>;
15
16
  };
@@ -1 +1 @@
1
- {"version":3,"file":"MockUdpChannel.d.ts","sourceRoot":"","sources":["../../../../src/net/mock/MockUdpChannel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAwB,UAAU,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,qBAAa,cAAe,YAAW,UAAU;;IAM7C,QAAQ,CAAC,cAAc,SAAwB;gBAEnC,OAAO,EAAE,WAAW,EAAE,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,iBAAiB;IAqB5G,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ;;;IAuB9B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU;IAWpD,KAAK;IAIL,CAAC,MAAM,CAAC,YAAY,CAAC;IAI3B,IAAI,IAAI,WAEP;IAED,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM;IAI5C,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIpC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAGxC"}
1
+ {"version":3,"file":"MockUdpChannel.d.ts","sourceRoot":"","sources":["../../../../src/net/mock/MockUdpChannel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAwB,UAAU,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,qBAAa,cAAe,YAAW,UAAU;;IAM7C,QAAQ,CAAC,cAAc,SAAwB;gBAG3C,OAAO,EAAE,WAAW,EACpB,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,iBAAiB,EAC1E,iBAAiB,CAAC,EAAE,UAAU,CAAC,iBAAiB;IAuBpD,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ;;;IAuB9B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU;IAWpD,KAAK;IAIL,CAAC,MAAM,CAAC,YAAY,CAAC;IAI3B,IAAI,IAAI,WAEP;IAED,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM;IAI5C,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIpC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAGxC"}
@@ -32,12 +32,13 @@ var import_MockRouter = require("./MockRouter.js");
32
32
  */
33
33
  class MockUdpChannel {
34
34
  #host;
35
- #router = (0, import_MockRouter.MockRouter)();
35
+ #router;
36
36
  #sendFrom;
37
37
  #receiveFrom;
38
38
  #listeningPort;
39
39
  maxPayloadSize = import_UdpChannel.MAX_UDP_MESSAGE_SIZE;
40
- constructor(network, { listeningAddress, listeningPort, netInterface, type }) {
40
+ constructor(network, { listeningAddress, listeningPort, netInterface, type }, packetManipulator) {
41
+ this.#router = (0, import_MockRouter.MockRouter)(packetManipulator);
41
42
  const { ipV4, ipV6 } = network.getIpMac(netInterface ?? "fake0");
42
43
  let addresses = type === "udp4" ? ipV4 : ipV6;
43
44
  this.#sendFrom = addresses[0];
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/net/mock/MockUdpChannel.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAA4B;AAC5B,qBAA6B;AAC7B,wBAAoE;AAEpE,wBAA2B;AAV3B;AAAA;AAAA;AAAA;AAAA;AAYO,MAAM,eAAqC;AAAA,EACrC;AAAA,EACA,cAAU,8BAAW;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EAE1B,YAAY,SAAsB,EAAE,kBAAkB,eAAe,cAAc,KAAK,GAAsB;AAC1G,UAAM,EAAE,MAAM,KAAK,IAAI,QAAQ,SAAS,gBAAgB,OAAO;AAC/D,QAAI,YAAY,SAAS,SAAS,OAAO;AAEzC,SAAK,YAAY,UAAU,CAAC;AAE5B,QAAI,qBAAqB,UAAa,qBAAqB,KAAK;AAC5D,kBAAY,UAAU,OAAO,UAAQ,SAAS,gBAAgB;AAAA,IAClE;AAEA,QAAI,CAAC,UAAU,QAAQ;AACnB,YAAM,IAAI,4BAAa,MAAM,IAAI,eAAe,oBAAoB,GAAG,6BAA6B;AAAA,IACxG;AAEA,SAAK,QAAQ;AACb,SAAK,eAAe,IAAI,IAAI,SAAS;AACrC,SAAK,iBAAiB,iBAAiB,OAAO,KAAK,MAAM,KAAK,OAAO,IAAI,KAAK;AAE9E,YAAQ,OAAO,IAAI,KAAK,OAAO;AAAA,EACnC;AAAA,EAEA,OAAO,UAA+B;AAClC,UAAM,SAAS,CAAC,WAA8B;AAC1C,UAAI,OAAO,SAAS,OAAO;AACvB;AAAA,MACJ;AACA,UAAI,CAAC,KAAK,aAAa,IAAI,OAAO,WAAW,GAAG;AAC5C;AAAA,MACJ;AACA,UAAI,OAAO,aAAa,KAAK,gBAAgB;AACzC;AAAA,MACJ;AACA,eAAS,SAAS,OAAO,eAAe,OAAO,YAAY,OAAO,OAAO;AAAA,IAC7E;AAEA,SAAK,QAAQ,IAAI,MAAM;AAEvB,WAAO;AAAA,MACH,OAAO,YAAY;AACf,aAAK,QAAQ,OAAO,MAAM;AAAA,MAC9B;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAM,KAAK,MAAc,MAAc,SAAqB;AACxD,SAAK,MAAM,UAAU,OAAO;AAAA,MACxB,MAAM;AAAA,MACN,eAAe,KAAK;AAAA,MACpB,YAAY,KAAK;AAAA,MACjB,aAAa;AAAA,MACb,UAAU;AAAA,MACV;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,QAAQ;AACV,SAAK,MAAM,OAAO,OAAO,KAAK,OAAO;AAAA,EACzC;AAAA,EAEA,OAAO,OAAO,YAAY,IAAI;AAC1B,WAAO,KAAK,MAAM;AAAA,EACtB;AAAA,EAEA,IAAI,OAAO;AACP,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,SAAS,MAAmB,UAAkB;AAC1C,WAAO,SAAS,2BAAY;AAAA,EAChC;AAAA,EAEA,cAAc,SAAuB;AACjC,SAAK,aAAa,IAAI,OAAO;AAAA,EACjC;AAAA,EAEA,eAAe,SAAuB;AAClC,SAAK,aAAa,OAAO,OAAO;AAAA,EACpC;AACJ;",
4
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAA4B;AAC5B,qBAA6B;AAC7B,wBAAoE;AAEpE,wBAA2B;AAV3B;AAAA;AAAA;AAAA;AAAA;AAYO,MAAM,eAAqC;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EAE1B,YACI,SACA,EAAE,kBAAkB,eAAe,cAAc,KAAK,GACtD,mBACF;AACE,SAAK,cAAU,8BAAW,iBAAiB;AAC3C,UAAM,EAAE,MAAM,KAAK,IAAI,QAAQ,SAAS,gBAAgB,OAAO;AAC/D,QAAI,YAAY,SAAS,SAAS,OAAO;AAEzC,SAAK,YAAY,UAAU,CAAC;AAE5B,QAAI,qBAAqB,UAAa,qBAAqB,KAAK;AAC5D,kBAAY,UAAU,OAAO,UAAQ,SAAS,gBAAgB;AAAA,IAClE;AAEA,QAAI,CAAC,UAAU,QAAQ;AACnB,YAAM,IAAI,4BAAa,MAAM,IAAI,eAAe,oBAAoB,GAAG,6BAA6B;AAAA,IACxG;AAEA,SAAK,QAAQ;AACb,SAAK,eAAe,IAAI,IAAI,SAAS;AACrC,SAAK,iBAAiB,iBAAiB,OAAO,KAAK,MAAM,KAAK,OAAO,IAAI,KAAK;AAE9E,YAAQ,OAAO,IAAI,KAAK,OAAO;AAAA,EACnC;AAAA,EAEA,OAAO,UAA+B;AAClC,UAAM,SAAS,CAAC,WAA8B;AAC1C,UAAI,OAAO,SAAS,OAAO;AACvB;AAAA,MACJ;AACA,UAAI,CAAC,KAAK,aAAa,IAAI,OAAO,WAAW,GAAG;AAC5C;AAAA,MACJ;AACA,UAAI,OAAO,aAAa,KAAK,gBAAgB;AACzC;AAAA,MACJ;AACA,eAAS,SAAS,OAAO,eAAe,OAAO,YAAY,OAAO,OAAO;AAAA,IAC7E;AAEA,SAAK,QAAQ,IAAI,MAAM;AAEvB,WAAO;AAAA,MACH,OAAO,YAAY;AACf,aAAK,QAAQ,OAAO,MAAM;AAAA,MAC9B;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAM,KAAK,MAAc,MAAc,SAAqB;AACxD,SAAK,MAAM,UAAU,OAAO;AAAA,MACxB,MAAM;AAAA,MACN,eAAe,KAAK;AAAA,MACpB,YAAY,KAAK;AAAA,MACjB,aAAa;AAAA,MACb,UAAU;AAAA,MACV;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,QAAQ;AACV,SAAK,MAAM,OAAO,OAAO,KAAK,OAAO;AAAA,EACzC;AAAA,EAEA,OAAO,OAAO,YAAY,IAAI;AAC1B,WAAO,KAAK,MAAM;AAAA,EACtB;AAAA,EAEA,IAAI,OAAO;AACP,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,SAAS,MAAmB,UAAkB;AAC1C,WAAO,SAAS,2BAAY;AAAA,EAChC;AAAA,EAEA,cAAc,SAAuB;AACjC,SAAK,aAAa,IAAI,OAAO;AAAA,EACjC;AAAA,EAEA,eAAe,SAAuB;AAClC,SAAK,aAAa,OAAO,OAAO;AAAA,EACpC;AACJ;",
5
5
  "names": []
6
6
  }
@@ -6,11 +6,7 @@
6
6
  import { MockNetwork } from "./MockNetwork.js";
7
7
  import { MockRouter } from "./MockRouter.js";
8
8
  export declare class NetworkSimulator {
9
- readonly router: {
10
- (packet: MockRouter.Packet): void;
11
- add: (value: MockRouter.Route) => Set<MockRouter.Route>;
12
- delete: (value: MockRouter.Route) => boolean;
13
- };
9
+ readonly router: MockRouter;
14
10
  addHost(lastIdentifierByte: number): MockNetwork;
15
11
  }
16
12
  export declare namespace NetworkSimulator {
@@ -1 +1 @@
1
- {"version":3,"file":"NetworkSimulator.d.ts","sourceRoot":"","sources":["../../../../src/net/mock/NetworkSimulator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,qBAAa,gBAAgB;IACzB,QAAQ,CAAC,MAAM;;;;MAAgB;IAE/B,OAAO,CAAC,kBAAkB,EAAE,MAAM;CAOrC;AAED,yBAAiB,gBAAgB,CAAC;IAC9B,KAAY,QAAQ,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;CAClH"}
1
+ {"version":3,"file":"NetworkSimulator.d.ts","sourceRoot":"","sources":["../../../../src/net/mock/NetworkSimulator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,qBAAa,gBAAgB;IACzB,QAAQ,CAAC,MAAM,aAAgB;IAE/B,OAAO,CAAC,kBAAkB,EAAE,MAAM;CAOrC;AAED,yBAAiB,gBAAgB,CAAC;IAC9B,KAAY,QAAQ,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;CAClH"}
@@ -48,11 +48,36 @@ export type DnsMessagePartiallyPreEncoded = Omit<DnsMessage, "answers" | "additi
48
48
  answers: (DnsRecord<any> | Uint8Array)[];
49
49
  additionalRecords: (DnsRecord<any> | Uint8Array)[];
50
50
  };
51
+ /** Bit flags to use to determine separate flags in the DnsMessageType field */
52
+ export declare enum DnsMessageTypeFlag {
53
+ /** Indicates if the message is a query (0) or a reply (1). */
54
+ QR = 32768,
55
+ /** The type can be QUERY (standard query, 0), IQUERY (inverse query, 1), or STATUS (server status request, 2). */
56
+ OPCODE = 30720,
57
+ /** Authoritative Answer, in a response, indicates if the DNS server is authoritative for the queried hostname. */
58
+ AA = 1024,
59
+ /** TrunCation, indicates that this message was truncated due to excessive length. */
60
+ TC = 512,
61
+ /** Recursion Desired, indicates if the client means a recursive query. */
62
+ RD = 256,
63
+ /** Recursion Available, in a response, indicates if the replying DNS server supports recursion. */
64
+ RA = 128,
65
+ /** Authentic Data, in a response, indicates if the replying DNS server verified the data. */
66
+ AD = 32,
67
+ /** Checking Disabled, in a query, indicates that non-verified data is acceptable in a response. */
68
+ CD = 16,
69
+ /** Response code, can be NOERROR (0), FORMERR (1, Format error), SERVFAIL (2), NXDOMAIN (3, Nonexistent domain), etc. */
70
+ RCODE = 15
71
+ }
72
+ /** Convenient Message types we use when sending mDNS messages */
51
73
  export declare enum DnsMessageType {
52
- Query = 0,
74
+ Query = 0,// No bit set
53
75
  TruncatedQuery = 512,
54
- Response = 33792,// Authoritative Answer
55
- TruncatedResponse = 34304
76
+ Response = 33792
77
+ }
78
+ export declare namespace DnsMessageType {
79
+ function isQuery(type: number): boolean;
80
+ function isResponse(type: number): boolean;
56
81
  }
57
82
  export declare enum DnsRecordType {
58
83
  A = 1,
@@ -1 +1 @@
1
- {"version":3,"file":"DnsCodec.d.ts","sourceRoot":"","sources":["../../../src/codec/DnsCodec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DnsCodec.d.ts","sourceRoot":"","sources":["../../../src/codec/DnsCodec.ts"],"names":[],"mappings":"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"}
@@ -3,11 +3,14 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import { Diagnostic } from "#log/Diagnostic.js";
7
+ import { Logger } from "#log/Logger.js";
6
8
  import { InternalError, NotImplementedError, UnexpectedDataError } from "../MatterError.js";
7
9
  import { Bytes } from "../util/Bytes.js";
8
10
  import { DataReader } from "../util/DataReader.js";
9
11
  import { DataWriter } from "../util/DataWriter.js";
10
12
  import { ipv4BytesToString, ipv4ToBytes, ipv6BytesToString, ipv6ToBytes, isIPv4, isIPv6 } from "../util/Ip.js";
13
+ const logger = Logger.get("DnsCodec");
11
14
  const MAX_MDNS_MESSAGE_SIZE = 1232;
12
15
  const PtrRecord = (name, ptr, forInstance, ttl = 120, flushCache = false) => ({
13
16
  name,
@@ -52,13 +55,34 @@ const SrvRecord = (name, srv, forInstance, ttl = 120, flushCache = false) => ({
52
55
  flushCache,
53
56
  forInstance
54
57
  });
58
+ var DnsMessageTypeFlag = /* @__PURE__ */ ((DnsMessageTypeFlag2) => {
59
+ DnsMessageTypeFlag2[DnsMessageTypeFlag2["QR"] = 32768] = "QR";
60
+ DnsMessageTypeFlag2[DnsMessageTypeFlag2["OPCODE"] = 30720] = "OPCODE";
61
+ DnsMessageTypeFlag2[DnsMessageTypeFlag2["AA"] = 1024] = "AA";
62
+ DnsMessageTypeFlag2[DnsMessageTypeFlag2["TC"] = 512] = "TC";
63
+ DnsMessageTypeFlag2[DnsMessageTypeFlag2["RD"] = 256] = "RD";
64
+ DnsMessageTypeFlag2[DnsMessageTypeFlag2["RA"] = 128] = "RA";
65
+ DnsMessageTypeFlag2[DnsMessageTypeFlag2["AD"] = 32] = "AD";
66
+ DnsMessageTypeFlag2[DnsMessageTypeFlag2["CD"] = 16] = "CD";
67
+ DnsMessageTypeFlag2[DnsMessageTypeFlag2["RCODE"] = 15] = "RCODE";
68
+ return DnsMessageTypeFlag2;
69
+ })(DnsMessageTypeFlag || {});
55
70
  var DnsMessageType = /* @__PURE__ */ ((DnsMessageType2) => {
56
71
  DnsMessageType2[DnsMessageType2["Query"] = 0] = "Query";
57
72
  DnsMessageType2[DnsMessageType2["TruncatedQuery"] = 512] = "TruncatedQuery";
58
73
  DnsMessageType2[DnsMessageType2["Response"] = 33792] = "Response";
59
- DnsMessageType2[DnsMessageType2["TruncatedResponse"] = 34304] = "TruncatedResponse";
60
74
  return DnsMessageType2;
61
75
  })(DnsMessageType || {});
76
+ ((DnsMessageType2) => {
77
+ function isQuery(type) {
78
+ return (type & 32768 /* QR */) === 0;
79
+ }
80
+ DnsMessageType2.isQuery = isQuery;
81
+ function isResponse(type) {
82
+ return (type & 32768 /* QR */) !== 0;
83
+ }
84
+ DnsMessageType2.isResponse = isResponse;
85
+ })(DnsMessageType || (DnsMessageType = {}));
62
86
  var DnsRecordType = /* @__PURE__ */ ((DnsRecordType2) => {
63
87
  DnsRecordType2[DnsRecordType2["A"] = 1] = "A";
64
88
  DnsRecordType2[DnsRecordType2["PTR"] = 12] = "PTR";
@@ -205,7 +229,7 @@ class DnsCodec {
205
229
  additionalRecords = []
206
230
  }) {
207
231
  if (messageType === void 0) throw new InternalError("Message type must be specified!");
208
- if (queries.length > 0 && messageType !== 0 /* Query */ && messageType !== 512 /* TruncatedQuery */)
232
+ if (queries.length > 0 && !DnsMessageType.isQuery(messageType))
209
233
  throw new InternalError("Queries can only be included in query messages!");
210
234
  if (authorities.length > 0) throw new NotImplementedError("Authority answers are not supported yet!");
211
235
  const writer = new DataWriter();
@@ -231,6 +255,10 @@ class DnsCodec {
231
255
  }
232
256
  static encodeRecord(record) {
233
257
  const { name, recordType, recordClass, ttl, value, flushCache = false } = record;
258
+ if (recordType === void 0 || value === void 0) {
259
+ logger.warn("Skipping record encoding due to missing type or value.", Diagnostic.dict(record));
260
+ return new Uint8Array(0);
261
+ }
234
262
  const writer = new DataWriter();
235
263
  writer.writeByteArray(this.encodeQName(name));
236
264
  writer.writeUInt16(recordType);
@@ -301,6 +329,7 @@ export {
301
329
  ARecord,
302
330
  DnsCodec,
303
331
  DnsMessageType,
332
+ DnsMessageTypeFlag,
304
333
  DnsRecordClass,
305
334
  DnsRecordType,
306
335
  MAX_MDNS_MESSAGE_SIZE,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/codec/DnsCodec.ts"],
4
- "mappings": "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",
5
- "names": ["DnsMessageType", "DnsRecordType", "DnsRecordClass"]
4
+ "mappings": "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",
5
+ "names": ["DnsMessageTypeFlag", "DnsMessageType", "DnsRecordType", "DnsRecordClass"]
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Environment.d.ts","sourceRoot":"","sources":["../../../src/environment/Environment.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,4BAA4B,CAAC;AAGpC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAIvD;;;;;;;;;;;;GAYG;AACH,qBAAa,WAAW;;gBAQR,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW;IAK9C;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,OAAO;IAIxD;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;IAelE;;OAEG;IACH,QAAQ,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS;IAMnF;;;;;OAKG;IACH,MAAM,CAAC,IAAI,EAAE,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG;IAejE;;OAEG;IACH,KAAK,CAAC,CAAC,SAAS,MAAM,EAClB,IAAI,EAAE,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GACzC,CAAC,SAAS;QAAE,KAAK,EAAE,MAAM,YAAY,CAAC,IAAI,CAAC,CAAA;KAAE,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI;IAU5E;;OAEG;IACG,IAAI,CAAC,CAAC,SAAS,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IAM1E;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IAYvE;;OAEG;IACH,IAAI,IAAI,WAEP;IAED,IAAI,IAAI,IAAI,WAAW,CAEtB;IAED;;;;OAIG;IACH,IAAI,KAAK,6CAvHyC,GAAG,EAAE,KAAK,EAAE,uBAyH7D;IAED;;;;OAIG;IACH,IAAI,OAAO,6CA/HyC,GAAG,EAAE,KAAK,EAAE,uBAiI/D;IAED;;;;OAIG;IACH,SAAS,CAAC,CAAC,SAAS,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,GASlC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC;IAGnD;;;;OAIG;IACH,MAAM,KAAK,OAAO,IAOM,WAAW,CALlC;IAED;;OAEG;IACH,MAAM,KAAK,OAAO,CAAC,GAAG,EAAE,WAAW,EAYlC;IAED;;OAEG;IACH,IAAI,IAAI,oBAEP;IAED;;OAEG;IACH,IAAI,OAAO,mBAEV;IAED;;OAEG;IACH,QAAQ;IAUR,SAAS,CAAC,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAGjD"}
1
+ {"version":3,"file":"Environment.d.ts","sourceRoot":"","sources":["../../../src/environment/Environment.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,4BAA4B,CAAC;AAGpC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAIvD;;;;;;;;;;;;GAYG;AACH,qBAAa,WAAW;;gBAQR,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW;IAK9C;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,OAAO;IAUxD;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;IA4BlE;;OAEG;IACH,QAAQ,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS;IAMnF;;;;;OAKG;IACH,MAAM,CAAC,IAAI,EAAE,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG;IAqBjE;;OAEG;IACH,KAAK,CAAC,CAAC,SAAS,MAAM,EAClB,IAAI,EAAE,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GACzC,CAAC,SAAS;QAAE,KAAK,EAAE,MAAM,YAAY,CAAC,IAAI,CAAC,CAAA;KAAE,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI;IAU5E;;OAEG;IACG,IAAI,CAAC,CAAC,SAAS,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IAM1E;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IAYvE;;OAEG;IACH,IAAI,IAAI,WAEP;IAED,IAAI,IAAI,IAAI,WAAW,CAEtB;IAED;;;;OAIG;IACH,IAAI,KAAK,6CAhJyC,GAAG,EAAE,KAAK,EAAE,uBAkJ7D;IAED;;;;OAIG;IACH,IAAI,OAAO,6CAxJyC,GAAG,EAAE,KAAK,EAAE,uBA0J/D;IAED;;;;OAIG;IACH,SAAS,CAAC,CAAC,SAAS,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,GASlC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC;IAGnD;;;;OAIG;IACH,MAAM,KAAK,OAAO,IAOM,WAAW,CALlC;IAED;;OAEG;IACH,MAAM,KAAK,OAAO,CAAC,GAAG,EAAE,WAAW,EAYlC;IAED;;OAEG;IACH,IAAI,IAAI,oBAEP;IAED;;OAEG;IACH,IAAI,OAAO,mBAEV;IAED;;OAEG;IACH,QAAQ;IAUR,SAAS,CAAC,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAGjD"}
@@ -3,6 +3,7 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import { InternalError } from "#MatterError.js";
6
7
  import { DiagnosticSource } from "../log/DiagnosticSource.js";
7
8
  import { Logger } from "../log/Logger.js";
8
9
  import "../polyfills/disposable.js";
@@ -28,18 +29,31 @@ class Environment {
28
29
  * Determine if an environmental service is available.
29
30
  */
30
31
  has(type) {
31
- return this.#services?.get(type) !== void 0 || (this.#parent?.has(type) ?? false);
32
+ const mine = this.#services?.get(type);
33
+ if (mine === null) {
34
+ return false;
35
+ }
36
+ return mine !== void 0 || (this.#parent?.has(type) ?? false);
32
37
  }
33
38
  /**
34
39
  * Access an environmental service.
35
40
  */
36
41
  get(type) {
37
- let instance = this.#services?.get(type) ?? this.#parent?.maybeGet(type);
38
- if (instance) {
39
- return instance;
42
+ const mine = this.#services?.get(type);
43
+ if (mine !== void 0 && mine !== null) {
44
+ return mine;
45
+ }
46
+ if (mine === void 0) {
47
+ const instance = this.#parent?.maybeGet(type);
48
+ if (instance !== void 0 && instance !== null) {
49
+ return instance;
50
+ }
40
51
  }
41
52
  if (type[Environmental.create]) {
42
- this.set(type, instance = type[Environmental.create](this));
53
+ const instance = type[Environmental.create](this);
54
+ if (!(instance instanceof type)) {
55
+ throw new InternalError(`Service creation did not produce instance of ${type.name}`);
56
+ }
43
57
  return instance;
44
58
  }
45
59
  throw new UnsupportedDependencyError(`Required dependency ${type.name}`, "is not available");
@@ -59,15 +73,18 @@ class Environment {
59
73
  * @param instance optional instance expected, if existing instance does not match it is not deleted
60
74
  */
61
75
  delete(type, instance) {
62
- if (instance !== void 0 && this.#services?.get(type) !== instance) {
76
+ const localInstance = this.#services?.get(type);
77
+ this.#services?.set(type, null);
78
+ if (localInstance === void 0 || localInstance === null) {
79
+ return;
80
+ }
81
+ if (instance !== void 0 && localInstance !== instance) {
63
82
  return;
64
83
  }
65
- this.#services?.delete(type);
66
- this.#parent?.delete(type);
67
- this.#deleted.emit(type, instance);
84
+ this.#deleted.emit(type, localInstance);
68
85
  const serviceEvents = this.#serviceEvents.get(type);
69
86
  if (serviceEvents) {
70
- serviceEvents.deleted.emit(instance);
87
+ serviceEvents.deleted.emit(localInstance);
71
88
  }
72
89
  }
73
90
  /**
@@ -75,8 +92,8 @@ class Environment {
75
92
  */
76
93
  close(type) {
77
94
  const instance = this.maybeGet(type);
95
+ this.delete(type, instance);
78
96
  if (instance !== void 0) {
79
- this.delete(type, instance);
80
97
  return instance.close?.();
81
98
  }
82
99
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/environment/Environment.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -165,7 +165,7 @@ class Logger {
165
165
  for (const name in Logger.destinations) {
166
166
  const dest = Logger.destinations[name];
167
167
  if (level < (dest.facilityLevels?.[this.#name] ?? dest.level)) {
168
- return;
168
+ continue;
169
169
  }
170
170
  if (!dest.context) {
171
171
  dest.context = Diagnostic.Context();
@@ -11,11 +11,7 @@ import { MockUdpChannel } from "./MockUdpChannel.js";
11
11
  import type { NetworkSimulator } from "./NetworkSimulator.js";
12
12
  export declare class MockNetwork extends Network {
13
13
  #private;
14
- readonly router: {
15
- (packet: MockRouter.Packet): void;
16
- add: (value: MockRouter.Route) => Set<MockRouter.Route>;
17
- delete: (value: MockRouter.Route) => boolean;
18
- };
14
+ readonly router: MockRouter;
19
15
  constructor(simulator: NetworkSimulator, mac: string, ips: string[]);
20
16
  get simulator(): NetworkSimulator;
21
17
  getNetInterfaces(): NetworkInterface[];
@@ -1 +1 @@
1
- {"version":3,"file":"MockNetwork.d.ts","sourceRoot":"","sources":["../../../../src/net/mock/MockNetwork.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAgB,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,qBAAa,WAAY,SAAQ,OAAO;;IACpC,QAAQ,CAAC,MAAM;;;;MAAgB;gBAInB,SAAS,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE;IAWnE,IAAI,SAAS,qBAEZ;IAED,gBAAgB,IAAI,gBAAgB,EAAE;IAItC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,uBAAuB;IAOtC,gBAAgB,CAAC,OAAO,EAAE,iBAAiB;IAIpD,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM;IAI7B,KAAK;CAGvB"}
1
+ {"version":3,"file":"MockNetwork.d.ts","sourceRoot":"","sources":["../../../../src/net/mock/MockNetwork.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAgB,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,qBAAa,WAAY,SAAQ,OAAO;;IACpC,QAAQ,CAAC,MAAM,aAAgB;gBAInB,SAAS,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE;IAWnE,IAAI,SAAS,qBAEZ;IAED,gBAAgB,IAAI,gBAAgB,EAAE;IAItC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,uBAAuB;IAOtC,gBAAgB,CAAC,OAAO,EAAE,iBAAiB;IAIpD,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM;IAI7B,KAAK;CAGvB"}
@@ -7,11 +7,7 @@ export interface MockRouter extends MockRouter.Route {
7
7
  add(route: MockRouter.Route): void;
8
8
  delete(route: MockRouter.Route): void;
9
9
  }
10
- export declare function MockRouter(): {
11
- (packet: MockRouter.Packet): void;
12
- add: (value: MockRouter.Route) => Set<MockRouter.Route>;
13
- delete: (value: MockRouter.Route) => boolean;
14
- };
10
+ export declare function MockRouter(manipulator?: MockRouter.PacketManipulator): MockRouter;
15
11
  export declare namespace MockRouter {
16
12
  interface Packet {
17
13
  kind: "udp";
@@ -24,5 +20,6 @@ export declare namespace MockRouter {
24
20
  interface Route {
25
21
  (packet: Packet): void;
26
22
  }
23
+ type PacketManipulator = (packet: Packet) => Packet | null;
27
24
  }
28
25
  //# sourceMappingURL=MockRouter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MockRouter.d.ts","sourceRoot":"","sources":["../../../../src/net/mock/MockRouter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,WAAW,UAAW,SAAQ,UAAU,CAAC,KAAK;IAChD,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;IACnC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;CACzC;AAED,wBAAgB,UAAU;aAGiB,UAAU,CAAC,MAAM;;;EAc3D;AAED,yBAAiB,UAAU,CAAC;IACxB,UAAiB,MAAM;QACnB,IAAI,EAAE,KAAK,CAAC;QACZ,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,UAAU,CAAC;KACvB;IAED,UAAiB,KAAK;QAClB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B;CACJ"}
1
+ {"version":3,"file":"MockRouter.d.ts","sourceRoot":"","sources":["../../../../src/net/mock/MockRouter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,WAAW,UAAW,SAAQ,UAAU,CAAC,KAAK;IAChD,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;IACnC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;CACzC;AAED,wBAAgB,UAAU,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC,iBAAiB,GAAG,UAAU,CAwBjF;AAED,yBAAiB,UAAU,CAAC;IACxB,UAAiB,MAAM;QACnB,IAAI,EAAE,KAAK,CAAC;QACZ,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,UAAU,CAAC;KACvB;IAED,UAAiB,KAAK;QAClB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B;IAED,KAAY,iBAAiB,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CACrE"}
@@ -5,9 +5,16 @@
5
5
  */
6
6
  import { Logger } from "#log/Logger.js";
7
7
  const logger = Logger.get("MockRouter");
8
- function MockRouter() {
8
+ function MockRouter(manipulator) {
9
9
  const routes = /* @__PURE__ */ new Set();
10
10
  const router = function router2(packet) {
11
+ if (manipulator) {
12
+ const manipulatedPacket = manipulator(packet);
13
+ if (manipulatedPacket === null) {
14
+ return;
15
+ }
16
+ packet = manipulatedPacket;
17
+ }
11
18
  for (const route of routes) {
12
19
  try {
13
20
  route(packet);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/net/mock/MockRouter.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,cAAc;AAEvB,MAAM,SAAS,OAAO,IAAI,YAAY;AAO/B,SAAS,aAAa;AACzB,QAAM,SAAS,oBAAI,IAAsB;AAEzC,QAAM,SAAS,SAASA,QAAO,QAA2B;AACtD,eAAW,SAAS,QAAQ;AACxB,UAAI;AACA,cAAM,MAAM;AAAA,MAChB,SAAS,GAAG;AACR,eAAO,MAAM,uCAAuC,CAAC;AAAA,MACzD;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO,MAAM,OAAO,IAAI,KAAK,MAAM;AACnC,SAAO,SAAS,OAAO,OAAO,KAAK,MAAM;AAEzC,SAAO;AACX;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,cAAc;AAEvB,MAAM,SAAS,OAAO,IAAI,YAAY;AAO/B,SAAS,WAAW,aAAwD;AAC/E,QAAM,SAAS,oBAAI,IAAsB;AAEzC,QAAM,SAAS,SAASA,QAAO,QAA2B;AACtD,QAAI,aAAa;AACb,YAAM,oBAAoB,YAAY,MAAM;AAC5C,UAAI,sBAAsB,MAAM;AAC5B;AAAA,MACJ;AACA,eAAS;AAAA,IACb;AACA,eAAW,SAAS,QAAQ;AACxB,UAAI;AACA,cAAM,MAAM;AAAA,MAChB,SAAS,GAAG;AACR,eAAO,MAAM,uCAAuC,CAAC;AAAA,MACzD;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO,MAAM,OAAO,IAAI,KAAK,MAAM;AACnC,SAAO,SAAS,OAAO,OAAO,KAAK,MAAM;AAEzC,SAAO;AACX;",
5
5
  "names": ["router"]
6
6
  }
@@ -6,10 +6,11 @@
6
6
  import { ChannelType } from "#net/Channel.js";
7
7
  import { UdpChannel, UdpChannelOptions } from "../UdpChannel.js";
8
8
  import { MockNetwork } from "./MockNetwork.js";
9
+ import { MockRouter } from "./MockRouter.js";
9
10
  export declare class MockUdpChannel implements UdpChannel {
10
11
  #private;
11
12
  readonly maxPayloadSize: number;
12
- constructor(network: MockNetwork, { listeningAddress, listeningPort, netInterface, type }: UdpChannelOptions);
13
+ constructor(network: MockNetwork, { listeningAddress, listeningPort, netInterface, type }: UdpChannelOptions, packetManipulator?: MockRouter.PacketManipulator);
13
14
  onData(listener: UdpChannel.Callback): {
14
15
  close: () => Promise<void>;
15
16
  };
@@ -1 +1 @@
1
- {"version":3,"file":"MockUdpChannel.d.ts","sourceRoot":"","sources":["../../../../src/net/mock/MockUdpChannel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAwB,UAAU,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,qBAAa,cAAe,YAAW,UAAU;;IAM7C,QAAQ,CAAC,cAAc,SAAwB;gBAEnC,OAAO,EAAE,WAAW,EAAE,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,iBAAiB;IAqB5G,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ;;;IAuB9B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU;IAWpD,KAAK;IAIL,CAAC,MAAM,CAAC,YAAY,CAAC;IAI3B,IAAI,IAAI,WAEP;IAED,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM;IAI5C,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIpC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAGxC"}
1
+ {"version":3,"file":"MockUdpChannel.d.ts","sourceRoot":"","sources":["../../../../src/net/mock/MockUdpChannel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAwB,UAAU,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,qBAAa,cAAe,YAAW,UAAU;;IAM7C,QAAQ,CAAC,cAAc,SAAwB;gBAG3C,OAAO,EAAE,WAAW,EACpB,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,iBAAiB,EAC1E,iBAAiB,CAAC,EAAE,UAAU,CAAC,iBAAiB;IAuBpD,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ;;;IAuB9B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU;IAWpD,KAAK;IAIL,CAAC,MAAM,CAAC,YAAY,CAAC;IAI3B,IAAI,IAAI,WAEP;IAED,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM;IAI5C,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIpC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAGxC"}
@@ -9,12 +9,13 @@ import { MAX_UDP_MESSAGE_SIZE } from "../UdpChannel.js";
9
9
  import { MockRouter } from "./MockRouter.js";
10
10
  class MockUdpChannel {
11
11
  #host;
12
- #router = MockRouter();
12
+ #router;
13
13
  #sendFrom;
14
14
  #receiveFrom;
15
15
  #listeningPort;
16
16
  maxPayloadSize = MAX_UDP_MESSAGE_SIZE;
17
- constructor(network, { listeningAddress, listeningPort, netInterface, type }) {
17
+ constructor(network, { listeningAddress, listeningPort, netInterface, type }, packetManipulator) {
18
+ this.#router = MockRouter(packetManipulator);
18
19
  const { ipV4, ipV6 } = network.getIpMac(netInterface ?? "fake0");
19
20
  let addresses = type === "udp4" ? ipV4 : ipV6;
20
21
  this.#sendFrom = addresses[0];
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/net/mock/MockUdpChannel.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,mBAAmB;AAC5B,SAAS,oBAAoB;AAC7B,SAAS,4BAA2D;AAEpE,SAAS,kBAAkB;AAEpB,MAAM,eAAqC;AAAA,EACrC;AAAA,EACA,UAAU,WAAW;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EAE1B,YAAY,SAAsB,EAAE,kBAAkB,eAAe,cAAc,KAAK,GAAsB;AAC1G,UAAM,EAAE,MAAM,KAAK,IAAI,QAAQ,SAAS,gBAAgB,OAAO;AAC/D,QAAI,YAAY,SAAS,SAAS,OAAO;AAEzC,SAAK,YAAY,UAAU,CAAC;AAE5B,QAAI,qBAAqB,UAAa,qBAAqB,KAAK;AAC5D,kBAAY,UAAU,OAAO,UAAQ,SAAS,gBAAgB;AAAA,IAClE;AAEA,QAAI,CAAC,UAAU,QAAQ;AACnB,YAAM,IAAI,aAAa,MAAM,IAAI,eAAe,oBAAoB,GAAG,6BAA6B;AAAA,IACxG;AAEA,SAAK,QAAQ;AACb,SAAK,eAAe,IAAI,IAAI,SAAS;AACrC,SAAK,iBAAiB,iBAAiB,OAAO,KAAK,MAAM,KAAK,OAAO,IAAI,KAAK;AAE9E,YAAQ,OAAO,IAAI,KAAK,OAAO;AAAA,EACnC;AAAA,EAEA,OAAO,UAA+B;AAClC,UAAM,SAAS,CAAC,WAA8B;AAC1C,UAAI,OAAO,SAAS,OAAO;AACvB;AAAA,MACJ;AACA,UAAI,CAAC,KAAK,aAAa,IAAI,OAAO,WAAW,GAAG;AAC5C;AAAA,MACJ;AACA,UAAI,OAAO,aAAa,KAAK,gBAAgB;AACzC;AAAA,MACJ;AACA,eAAS,SAAS,OAAO,eAAe,OAAO,YAAY,OAAO,OAAO;AAAA,IAC7E;AAEA,SAAK,QAAQ,IAAI,MAAM;AAEvB,WAAO;AAAA,MACH,OAAO,YAAY;AACf,aAAK,QAAQ,OAAO,MAAM;AAAA,MAC9B;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAM,KAAK,MAAc,MAAc,SAAqB;AACxD,SAAK,MAAM,UAAU,OAAO;AAAA,MACxB,MAAM;AAAA,MACN,eAAe,KAAK;AAAA,MACpB,YAAY,KAAK;AAAA,MACjB,aAAa;AAAA,MACb,UAAU;AAAA,MACV;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,QAAQ;AACV,SAAK,MAAM,OAAO,OAAO,KAAK,OAAO;AAAA,EACzC;AAAA,EAEA,OAAO,OAAO,YAAY,IAAI;AAC1B,WAAO,KAAK,MAAM;AAAA,EACtB;AAAA,EAEA,IAAI,OAAO;AACP,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,SAAS,MAAmB,UAAkB;AAC1C,WAAO,SAAS,YAAY;AAAA,EAChC;AAAA,EAEA,cAAc,SAAuB;AACjC,SAAK,aAAa,IAAI,OAAO;AAAA,EACjC;AAAA,EAEA,eAAe,SAAuB;AAClC,SAAK,aAAa,OAAO,OAAO;AAAA,EACpC;AACJ;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,mBAAmB;AAC5B,SAAS,oBAAoB;AAC7B,SAAS,4BAA2D;AAEpE,SAAS,kBAAkB;AAEpB,MAAM,eAAqC;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EAE1B,YACI,SACA,EAAE,kBAAkB,eAAe,cAAc,KAAK,GACtD,mBACF;AACE,SAAK,UAAU,WAAW,iBAAiB;AAC3C,UAAM,EAAE,MAAM,KAAK,IAAI,QAAQ,SAAS,gBAAgB,OAAO;AAC/D,QAAI,YAAY,SAAS,SAAS,OAAO;AAEzC,SAAK,YAAY,UAAU,CAAC;AAE5B,QAAI,qBAAqB,UAAa,qBAAqB,KAAK;AAC5D,kBAAY,UAAU,OAAO,UAAQ,SAAS,gBAAgB;AAAA,IAClE;AAEA,QAAI,CAAC,UAAU,QAAQ;AACnB,YAAM,IAAI,aAAa,MAAM,IAAI,eAAe,oBAAoB,GAAG,6BAA6B;AAAA,IACxG;AAEA,SAAK,QAAQ;AACb,SAAK,eAAe,IAAI,IAAI,SAAS;AACrC,SAAK,iBAAiB,iBAAiB,OAAO,KAAK,MAAM,KAAK,OAAO,IAAI,KAAK;AAE9E,YAAQ,OAAO,IAAI,KAAK,OAAO;AAAA,EACnC;AAAA,EAEA,OAAO,UAA+B;AAClC,UAAM,SAAS,CAAC,WAA8B;AAC1C,UAAI,OAAO,SAAS,OAAO;AACvB;AAAA,MACJ;AACA,UAAI,CAAC,KAAK,aAAa,IAAI,OAAO,WAAW,GAAG;AAC5C;AAAA,MACJ;AACA,UAAI,OAAO,aAAa,KAAK,gBAAgB;AACzC;AAAA,MACJ;AACA,eAAS,SAAS,OAAO,eAAe,OAAO,YAAY,OAAO,OAAO;AAAA,IAC7E;AAEA,SAAK,QAAQ,IAAI,MAAM;AAEvB,WAAO;AAAA,MACH,OAAO,YAAY;AACf,aAAK,QAAQ,OAAO,MAAM;AAAA,MAC9B;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAM,KAAK,MAAc,MAAc,SAAqB;AACxD,SAAK,MAAM,UAAU,OAAO;AAAA,MACxB,MAAM;AAAA,MACN,eAAe,KAAK;AAAA,MACpB,YAAY,KAAK;AAAA,MACjB,aAAa;AAAA,MACb,UAAU;AAAA,MACV;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,QAAQ;AACV,SAAK,MAAM,OAAO,OAAO,KAAK,OAAO;AAAA,EACzC;AAAA,EAEA,OAAO,OAAO,YAAY,IAAI;AAC1B,WAAO,KAAK,MAAM;AAAA,EACtB;AAAA,EAEA,IAAI,OAAO;AACP,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,SAAS,MAAmB,UAAkB;AAC1C,WAAO,SAAS,YAAY;AAAA,EAChC;AAAA,EAEA,cAAc,SAAuB;AACjC,SAAK,aAAa,IAAI,OAAO;AAAA,EACjC;AAAA,EAEA,eAAe,SAAuB;AAClC,SAAK,aAAa,OAAO,OAAO;AAAA,EACpC;AACJ;",
5
5
  "names": []
6
6
  }
@@ -6,11 +6,7 @@
6
6
  import { MockNetwork } from "./MockNetwork.js";
7
7
  import { MockRouter } from "./MockRouter.js";
8
8
  export declare class NetworkSimulator {
9
- readonly router: {
10
- (packet: MockRouter.Packet): void;
11
- add: (value: MockRouter.Route) => Set<MockRouter.Route>;
12
- delete: (value: MockRouter.Route) => boolean;
13
- };
9
+ readonly router: MockRouter;
14
10
  addHost(lastIdentifierByte: number): MockNetwork;
15
11
  }
16
12
  export declare namespace NetworkSimulator {
@@ -1 +1 @@
1
- {"version":3,"file":"NetworkSimulator.d.ts","sourceRoot":"","sources":["../../../../src/net/mock/NetworkSimulator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,qBAAa,gBAAgB;IACzB,QAAQ,CAAC,MAAM;;;;MAAgB;IAE/B,OAAO,CAAC,kBAAkB,EAAE,MAAM;CAOrC;AAED,yBAAiB,gBAAgB,CAAC;IAC9B,KAAY,QAAQ,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;CAClH"}
1
+ {"version":3,"file":"NetworkSimulator.d.ts","sourceRoot":"","sources":["../../../../src/net/mock/NetworkSimulator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,qBAAa,gBAAgB;IACzB,QAAQ,CAAC,MAAM,aAAgB;IAE/B,OAAO,CAAC,kBAAkB,EAAE,MAAM;CAOrC;AAED,yBAAiB,gBAAgB,CAAC;IAC9B,KAAY,QAAQ,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;CAClH"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@matter/general",
3
- "version": "0.15.4",
3
+ "version": "0.15.6",
4
4
  "description": "Non-Matter support for Matter.js",
5
5
  "keywords": [
6
6
  "iot",
@@ -36,7 +36,7 @@
36
36
  "@noble/curves": "^1.9.5"
37
37
  },
38
38
  "devDependencies": {
39
- "@matter/testing": "0.15.4"
39
+ "@matter/testing": "0.15.6"
40
40
  },
41
41
  "files": [
42
42
  "dist/**/*",
@@ -4,12 +4,16 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
+ import { Diagnostic } from "#log/Diagnostic.js";
8
+ import { Logger } from "#log/Logger.js";
7
9
  import { InternalError, NotImplementedError, UnexpectedDataError } from "../MatterError.js";
8
10
  import { Bytes, Endian } from "../util/Bytes.js";
9
11
  import { DataReader } from "../util/DataReader.js";
10
12
  import { DataWriter } from "../util/DataWriter.js";
11
13
  import { ipv4BytesToString, ipv4ToBytes, ipv6BytesToString, ipv6ToBytes, isIPv4, isIPv6 } from "../util/Ip.js";
12
14
 
15
+ const logger = Logger.get("DnsCodec");
16
+
13
17
  /**
14
18
  * The maximum MDNS message size to usually fit into one UDP network MTU packet. Data are split into multiple messages
15
19
  * when needed.
@@ -116,11 +120,51 @@ export type DnsMessagePartiallyPreEncoded = Omit<DnsMessage, "answers" | "additi
116
120
  additionalRecords: (DnsRecord<any> | Uint8Array)[];
117
121
  };
118
122
 
123
+ /** Bit flags to use to determine separate flags in the DnsMessageType field */
124
+ export enum DnsMessageTypeFlag {
125
+ /** Indicates if the message is a query (0) or a reply (1). */
126
+ QR = 0x8000,
127
+
128
+ /** The type can be QUERY (standard query, 0), IQUERY (inverse query, 1), or STATUS (server status request, 2). */
129
+ OPCODE = 0x7800,
130
+
131
+ /** Authoritative Answer, in a response, indicates if the DNS server is authoritative for the queried hostname. */
132
+ AA = 0x0400,
133
+
134
+ /** TrunCation, indicates that this message was truncated due to excessive length. */
135
+ TC = 0x0200,
136
+
137
+ /** Recursion Desired, indicates if the client means a recursive query. */
138
+ RD = 0x0100,
139
+
140
+ /** Recursion Available, in a response, indicates if the replying DNS server supports recursion. */
141
+ RA = 0x0080,
142
+
143
+ /** Authentic Data, in a response, indicates if the replying DNS server verified the data. */
144
+ AD = 0x0020,
145
+
146
+ /** Checking Disabled, in a query, indicates that non-verified data is acceptable in a response. */
147
+ CD = 0x0010,
148
+
149
+ /** Response code, can be NOERROR (0), FORMERR (1, Format error), SERVFAIL (2), NXDOMAIN (3, Nonexistent domain), etc. */
150
+ RCODE = 0x000f,
151
+ }
152
+
153
+ /** Convenient Message types we use when sending mDNS messages */
119
154
  export enum DnsMessageType {
120
- Query = 0x0000,
155
+ Query = 0, // No bit set
121
156
  TruncatedQuery = 0x0200,
122
- Response = 0x8400, // Authoritative Answer
123
- TruncatedResponse = 0x8600,
157
+ Response = DnsMessageTypeFlag.QR | DnsMessageTypeFlag.AA, // Authoritative Answer 0x8400
158
+ }
159
+
160
+ export namespace DnsMessageType {
161
+ export function isQuery(type: number) {
162
+ return (type & DnsMessageTypeFlag.QR) === 0;
163
+ }
164
+
165
+ export function isResponse(type: number) {
166
+ return (type & DnsMessageTypeFlag.QR) !== 0;
167
+ }
124
168
  }
125
169
 
126
170
  export enum DnsRecordType {
@@ -282,7 +326,7 @@ export class DnsCodec {
282
326
  additionalRecords = [],
283
327
  }: Partial<DnsMessagePartiallyPreEncoded>): Uint8Array {
284
328
  if (messageType === undefined) throw new InternalError("Message type must be specified!");
285
- if (queries.length > 0 && messageType !== DnsMessageType.Query && messageType !== DnsMessageType.TruncatedQuery)
329
+ if (queries.length > 0 && !DnsMessageType.isQuery(messageType))
286
330
  throw new InternalError("Queries can only be included in query messages!");
287
331
  if (authorities.length > 0) throw new NotImplementedError("Authority answers are not supported yet!");
288
332
 
@@ -311,6 +355,11 @@ export class DnsCodec {
311
355
  static encodeRecord(record: DnsRecord<any>): Uint8Array {
312
356
  const { name, recordType, recordClass, ttl, value, flushCache = false } = record;
313
357
 
358
+ if (recordType === undefined || value === undefined) {
359
+ logger.warn("Skipping record encoding due to missing type or value.", Diagnostic.dict(record));
360
+ return new Uint8Array(0);
361
+ }
362
+
314
363
  const writer = new DataWriter();
315
364
  writer.writeByteArray(this.encodeQName(name));
316
365
  writer.writeUInt16(recordType);
@@ -4,6 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
+ import { InternalError } from "#MatterError.js";
7
8
  import { MaybePromise } from "#util/Promises.js";
8
9
  import { DiagnosticSource } from "../log/DiagnosticSource.js";
9
10
  import { Logger } from "../log/Logger.js";
@@ -31,7 +32,7 @@ const logger = Logger.get("Environment");
31
32
  * TODO - could remove global singletons by moving here
32
33
  */
33
34
  export class Environment {
34
- #services?: Map<abstract new (...args: any[]) => any, Environmental.Service>;
35
+ #services?: Map<abstract new (...args: any[]) => any, Environmental.Service | null>;
35
36
  #name: string;
36
37
  #parent?: Environment;
37
38
  #added = Observable<[type: abstract new (...args: any[]) => {}, instance: {}]>();
@@ -47,22 +48,41 @@ export class Environment {
47
48
  * Determine if an environmental service is available.
48
49
  */
49
50
  has(type: abstract new (...args: any[]) => any): boolean {
50
- return this.#services?.get(type) !== undefined || (this.#parent?.has(type) ?? false);
51
+ const mine = this.#services?.get(type);
52
+
53
+ if (mine === null) {
54
+ return false;
55
+ }
56
+
57
+ return mine !== undefined || (this.#parent?.has(type) ?? false);
51
58
  }
52
59
 
53
60
  /**
54
61
  * Access an environmental service.
55
62
  */
56
63
  get<T extends object>(type: abstract new (...args: any[]) => T): T {
57
- let instance = this.#services?.get(type) ?? this.#parent?.maybeGet(type);
64
+ const mine = this.#services?.get(type);
58
65
 
59
- if (instance) {
60
- return instance as T;
66
+ if (mine !== undefined && mine !== null) {
67
+ return mine as T;
68
+ }
69
+
70
+ // When null then we do not have it and also do not want to inherit from parent
71
+ if (mine === undefined) {
72
+ const instance = this.#parent?.maybeGet(type);
73
+ if (instance !== undefined && instance !== null) {
74
+ // Parent has it, use it
75
+ return instance;
76
+ }
61
77
  }
62
78
 
79
+ // ... otherwise try to create it. The create method must install it in the environment if needed
63
80
  if ((type as Environmental.Factory<T>)[Environmental.create]) {
64
- this.set(type, (instance = (type as any)[Environmental.create](this)));
65
- return instance as T;
81
+ const instance = (type as any)[Environmental.create](this) as T;
82
+ if (!(instance instanceof type)) {
83
+ throw new InternalError(`Service creation did not produce instance of ${type.name}`);
84
+ }
85
+ return instance;
66
86
  }
67
87
 
68
88
  throw new UnsupportedDependencyError(`Required dependency ${type.name}`, "is not available");
@@ -84,17 +104,23 @@ export class Environment {
84
104
  * @param instance optional instance expected, if existing instance does not match it is not deleted
85
105
  */
86
106
  delete(type: abstract new (...args: any[]) => any, instance?: any) {
87
- if (instance !== undefined && this.#services?.get(type) !== instance) {
107
+ const localInstance = this.#services?.get(type);
108
+
109
+ // Remove instance and replace by null to prevent inheritance from parent
110
+ this.#services?.set(type, null);
111
+
112
+ if (localInstance === undefined || localInstance === null) {
113
+ return;
114
+ }
115
+ if (instance !== undefined && localInstance !== instance) {
88
116
  return;
89
117
  }
90
- this.#services?.delete(type);
91
- this.#parent?.delete(type);
92
118
 
93
- this.#deleted.emit(type, instance);
119
+ this.#deleted.emit(type, localInstance);
94
120
 
95
121
  const serviceEvents = this.#serviceEvents.get(type);
96
122
  if (serviceEvents) {
97
- serviceEvents.deleted.emit(instance);
123
+ serviceEvents.deleted.emit(localInstance);
98
124
  }
99
125
  }
100
126
 
@@ -105,8 +131,8 @@ export class Environment {
105
131
  type: abstract new (...args: any[]) => T,
106
132
  ): T extends { close: () => MaybePromise<void> } ? MaybePromise<void> : void {
107
133
  const instance = this.maybeGet(type);
134
+ this.delete(type, instance); // delete and block inheritance
108
135
  if (instance !== undefined) {
109
- this.delete(type, instance);
110
136
  return (instance as Partial<Destructable>).close?.() as T extends { close: () => MaybePromise<void> }
111
137
  ? MaybePromise<void>
112
138
  : void;
package/src/log/Logger.ts CHANGED
@@ -215,7 +215,7 @@ export class Logger {
215
215
  const dest = Logger.destinations[name];
216
216
 
217
217
  if (level < (dest.facilityLevels?.[this.#name] ?? dest.level)) {
218
- return;
218
+ continue;
219
219
  }
220
220
 
221
221
  if (!dest.context) {
@@ -13,10 +13,17 @@ export interface MockRouter extends MockRouter.Route {
13
13
  delete(route: MockRouter.Route): void;
14
14
  }
15
15
 
16
- export function MockRouter() {
16
+ export function MockRouter(manipulator?: MockRouter.PacketManipulator): MockRouter {
17
17
  const routes = new Set<MockRouter.Route>();
18
18
 
19
19
  const router = function router(packet: MockRouter.Packet) {
20
+ if (manipulator) {
21
+ const manipulatedPacket = manipulator(packet);
22
+ if (manipulatedPacket === null) {
23
+ return;
24
+ }
25
+ packet = manipulatedPacket;
26
+ }
20
27
  for (const route of routes) {
21
28
  try {
22
29
  route(packet);
@@ -45,4 +52,6 @@ export namespace MockRouter {
45
52
  export interface Route {
46
53
  (packet: Packet): void;
47
54
  }
55
+
56
+ export type PacketManipulator = (packet: Packet) => Packet | null;
48
57
  }
@@ -12,13 +12,18 @@ import { MockRouter } from "./MockRouter.js";
12
12
 
13
13
  export class MockUdpChannel implements UdpChannel {
14
14
  readonly #host: MockNetwork;
15
- readonly #router = MockRouter();
15
+ readonly #router: MockRouter;
16
16
  readonly #sendFrom: string;
17
17
  readonly #receiveFrom: Set<string>;
18
18
  readonly #listeningPort: number;
19
19
  readonly maxPayloadSize = MAX_UDP_MESSAGE_SIZE;
20
20
 
21
- constructor(network: MockNetwork, { listeningAddress, listeningPort, netInterface, type }: UdpChannelOptions) {
21
+ constructor(
22
+ network: MockNetwork,
23
+ { listeningAddress, listeningPort, netInterface, type }: UdpChannelOptions,
24
+ packetManipulator?: MockRouter.PacketManipulator,
25
+ ) {
26
+ this.#router = MockRouter(packetManipulator);
22
27
  const { ipV4, ipV6 } = network.getIpMac(netInterface ?? "fake0");
23
28
  let addresses = type === "udp4" ? ipV4 : ipV6;
24
29