@matter/general 0.16.0-alpha.0-20251207-37e501b18 → 0.16.0-alpha.0-20251210-206ca2db7

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 (72) hide show
  1. package/dist/cjs/crypto/NodeJsStyleCrypto.d.ts +60 -3
  2. package/dist/cjs/crypto/NodeJsStyleCrypto.d.ts.map +1 -1
  3. package/dist/cjs/crypto/NodeJsStyleCrypto.js.map +1 -1
  4. package/dist/cjs/environment/Environment.js +1 -1
  5. package/dist/cjs/environment/Environmental.js +1 -1
  6. package/dist/cjs/environment/Environmental.js.map +1 -1
  7. package/dist/cjs/environment/RuntimeService.js +1 -1
  8. package/dist/cjs/log/DiagnosticPresentation.js +3 -3
  9. package/dist/cjs/log/DiagnosticPresentation.js.map +1 -1
  10. package/dist/cjs/log/NodeJsStyleInspectable.js +1 -1
  11. package/dist/cjs/log/NodeJsStyleInspectable.js.map +1 -1
  12. package/dist/cjs/net/udp/UdpMulticastServer.js +1 -1
  13. package/dist/cjs/polyfills/disposable.js +2 -2
  14. package/dist/cjs/polyfills/disposable.js.map +1 -1
  15. package/dist/cjs/polyfills/metadata.js +1 -1
  16. package/dist/cjs/polyfills/metadata.js.map +1 -1
  17. package/dist/cjs/time/StandardTime.js +1 -1
  18. package/dist/cjs/transaction/Resource.js +1 -1
  19. package/dist/cjs/transaction/Resource.js.map +1 -1
  20. package/dist/cjs/transaction/Tx.js +1 -1
  21. package/dist/cjs/util/Cancelable.d.ts +1 -1
  22. package/dist/cjs/util/Cancelable.js +1 -1
  23. package/dist/cjs/util/Construction.js +2 -2
  24. package/dist/cjs/util/Construction.js.map +1 -1
  25. package/dist/cjs/util/Decorator.js +1 -1
  26. package/dist/cjs/util/Decorator.js.map +1 -1
  27. package/dist/cjs/util/DeepEqual.js +1 -1
  28. package/dist/cjs/util/DeepEqual.js.map +1 -1
  29. package/dist/cjs/util/Lifetime.js +1 -1
  30. package/dist/cjs/util/Lifetime.js.map +1 -1
  31. package/dist/cjs/util/Observable.js +2 -2
  32. package/dist/cjs/util/Observable.js.map +1 -1
  33. package/dist/cjs/util/serialize.js +1 -1
  34. package/dist/cjs/util/serialize.js.map +1 -1
  35. package/dist/esm/crypto/NodeJsStyleCrypto.d.ts +60 -3
  36. package/dist/esm/crypto/NodeJsStyleCrypto.d.ts.map +1 -1
  37. package/dist/esm/crypto/NodeJsStyleCrypto.js.map +1 -1
  38. package/dist/esm/environment/Environment.js +1 -1
  39. package/dist/esm/environment/Environmental.js +1 -1
  40. package/dist/esm/environment/Environmental.js.map +1 -1
  41. package/dist/esm/environment/RuntimeService.js +1 -1
  42. package/dist/esm/log/DiagnosticPresentation.js +3 -3
  43. package/dist/esm/log/DiagnosticPresentation.js.map +1 -1
  44. package/dist/esm/log/NodeJsStyleInspectable.js +1 -1
  45. package/dist/esm/log/NodeJsStyleInspectable.js.map +1 -1
  46. package/dist/esm/net/udp/UdpMulticastServer.js +1 -1
  47. package/dist/esm/polyfills/disposable.js +2 -2
  48. package/dist/esm/polyfills/disposable.js.map +1 -1
  49. package/dist/esm/polyfills/metadata.js +1 -1
  50. package/dist/esm/polyfills/metadata.js.map +1 -1
  51. package/dist/esm/time/StandardTime.js +1 -1
  52. package/dist/esm/transaction/Resource.js +1 -1
  53. package/dist/esm/transaction/Resource.js.map +1 -1
  54. package/dist/esm/transaction/Tx.js +1 -1
  55. package/dist/esm/util/Cancelable.d.ts +1 -1
  56. package/dist/esm/util/Cancelable.js +1 -1
  57. package/dist/esm/util/Construction.js +2 -2
  58. package/dist/esm/util/Construction.js.map +1 -1
  59. package/dist/esm/util/Decorator.js +1 -1
  60. package/dist/esm/util/Decorator.js.map +1 -1
  61. package/dist/esm/util/DeepEqual.js +1 -1
  62. package/dist/esm/util/DeepEqual.js.map +1 -1
  63. package/dist/esm/util/Lifetime.js +1 -1
  64. package/dist/esm/util/Lifetime.js.map +1 -1
  65. package/dist/esm/util/Observable.js +2 -2
  66. package/dist/esm/util/Observable.js.map +1 -1
  67. package/dist/esm/util/serialize.js +1 -1
  68. package/dist/esm/util/serialize.js.map +1 -1
  69. package/package.json +2 -2
  70. package/src/crypto/NodeJsStyleCrypto.ts +98 -6
  71. package/src/util/Cancelable.ts +1 -1
  72. package/src/util/Observable.ts +1 -1
@@ -8,7 +8,6 @@ import { ImplementationError } from "#MatterError.js";
8
8
  import { Bytes } from "#util/Bytes.js";
9
9
  import { asError } from "#util/Error.js";
10
10
  import { MaybePromise } from "#util/Promises.js";
11
- import { Identity } from "#util/Type.js";
12
11
  import {
13
12
  Crypto,
14
13
  CRYPTO_AUTH_TAG_LENGTH,
@@ -23,16 +22,109 @@ import { CryptoDecryptError, CryptoVerifyError } from "./CryptoError.js";
23
22
  import { EcdsaSignature } from "./EcdsaSignature.js";
24
23
  import { PrivateKey, PublicKey } from "./Key.js";
25
24
 
26
- // Note that this is a type-only import, not a runtime dependency.
27
- import type * as NodeJsCryptoApi from "node:crypto";
28
-
29
25
  // Ensure we don't reference global crypto accidentally
30
26
  declare const crypto: never;
31
27
 
32
28
  /**
33
29
  * A crypto API implemented in the style of Node.js.
30
+ *
31
+ * This defines the limited subset of the Node API that we use and nothing more.
34
32
  */
35
- export interface NodeJsCryptoApiLike extends Identity<typeof NodeJsCryptoApi> {}
33
+ export interface NodeJsCryptoApiLike {
34
+ createCipheriv(
35
+ algorithm: "aes-128-ccm",
36
+ key: NodeJsCryptoApiLike.BinaryLike,
37
+ iv: NodeJsCryptoApiLike.BinaryLike,
38
+ options: NodeJsCryptoApiLike.CipherCcmOptions,
39
+ ): NodeJsCryptoApiLike.CipherCcm;
40
+
41
+ createDecipheriv(
42
+ algorithm: "aes-128-ccm",
43
+ key: NodeJsCryptoApiLike.BinaryLike,
44
+ iv: NodeJsCryptoApiLike.BinaryLike,
45
+ options: NodeJsCryptoApiLike.CipherCcmOptions,
46
+ ): NodeJsCryptoApiLike.DecipherCcm;
47
+
48
+ randomBytes(count: number): NodeJsCryptoApiLike.BinaryLike;
49
+
50
+ createECDH(crv: string): NodeJsCryptoApiLike.Ecdh;
51
+
52
+ createHash(algo: string): NodeJsCryptoApiLike.Hash;
53
+
54
+ pbkdf2(
55
+ password: NodeJsCryptoApiLike.BinaryLike,
56
+ salt: NodeJsCryptoApiLike.BinaryLike,
57
+ iterations: number,
58
+ keylen: number,
59
+ digest: string,
60
+ callback: (err: Error | null, derivedKey: NodeJsCryptoApiLike.BinaryLike) => void,
61
+ ): void;
62
+
63
+ hkdf(
64
+ digest: string,
65
+ irm: NodeJsCryptoApiLike.BinaryLike,
66
+ salt: NodeJsCryptoApiLike.BinaryLike,
67
+ info: NodeJsCryptoApiLike.BinaryLike,
68
+ keylen: number,
69
+ callback: (err: Error | null, derivedKey: ArrayBuffer) => void,
70
+ ): void;
71
+
72
+ createHmac(algo: string, key: NodeJsCryptoApiLike.BinaryLike): NodeJsCryptoApiLike.Hash;
73
+
74
+ createSign(algo: string): NodeJsCryptoApiLike.Sign;
75
+
76
+ createVerify(algo: string): NodeJsCryptoApiLike.Verify;
77
+ }
78
+
79
+ export namespace NodeJsCryptoApiLike {
80
+ export type CipherKey = {
81
+ key: any; // Definitely typed is wrong here, should be JsonWebKey
82
+ format: "jwk";
83
+ type: "pkcs8" | "spki";
84
+ dsaEncoding: "ieee-p1363";
85
+ };
86
+ export type BinaryLike = Uint8Array<ArrayBufferLike>;
87
+ export interface CipherCcmOptions {
88
+ authTagLength: number;
89
+ }
90
+
91
+ export interface CipherCcm {
92
+ update(data: BinaryLike): BinaryLike;
93
+ final(): BinaryLike;
94
+ setAAD(buffer: BinaryLike, options: { plaintextLength: number }): this;
95
+ getAuthTag(): BinaryLike;
96
+ }
97
+
98
+ export interface DecipherCcm {
99
+ update(data: BinaryLike): BinaryLike;
100
+ final(): BinaryLike;
101
+ setAAD(buffer: BinaryLike, options: { plaintextLength: number }): this;
102
+ setAuthTag(data: BinaryLike): this;
103
+ }
104
+
105
+ export interface Ecdh {
106
+ generateKeys(): BinaryLike;
107
+ getPublicKey(): BinaryLike;
108
+ getPrivateKey(): BinaryLike;
109
+ setPrivateKey(key: BinaryLike): void;
110
+ computeSecret(data: BinaryLike): BinaryLike;
111
+ }
112
+
113
+ export interface Hash {
114
+ update(data: BinaryLike): this;
115
+ digest(): BinaryLike;
116
+ }
117
+
118
+ export interface Sign {
119
+ update(data: BinaryLike): this;
120
+ sign(key: CipherKey): Uint8Array<ArrayBuffer>;
121
+ }
122
+
123
+ export interface Verify {
124
+ update(data: BinaryLike): this;
125
+ verify(key: CipherKey, signature: BinaryLike): boolean;
126
+ }
127
+ }
36
128
 
37
129
  /**
38
130
  * A crypto implementation that uses the Node.js crypto API.
@@ -107,7 +199,7 @@ export class NodeJsStyleCrypto extends Crypto {
107
199
  };
108
200
  }
109
201
 
110
- async #hashAsyncIteratorData(hasher: NodeJsCryptoApi.Hash, iteratorFunc: () => Promise<IteratorResult<Bytes>>) {
202
+ async #hashAsyncIteratorData(hasher: NodeJsCryptoApiLike.Hash, iteratorFunc: () => Promise<IteratorResult<Bytes>>) {
111
203
  while (true) {
112
204
  const { value, done } = await iteratorFunc();
113
205
  if (value === undefined || done) break;
@@ -94,7 +94,7 @@ export class CancelablePromise<T = void> implements Promise<T>, Cancelable {
94
94
  }
95
95
 
96
96
  /**
97
- * Implement cancelation. This is only invoked if the promise has not resolved.
97
+ * Implement cancellation. This is only invoked if the promise has not resolved.
98
98
  *
99
99
  * Throwing causes the promise to reject with the error thrown. The default implementation rethrows {@link reason}.
100
100
  *
@@ -441,7 +441,7 @@ export class BasicObservable<T extends any[] = any[], R = void> implements Obser
441
441
  const next = await promise;
442
442
  if (next) {
443
443
  promise = next.promise;
444
- yield next.value;
444
+ yield next.value[0];
445
445
  }
446
446
  }
447
447
  } finally {