@matter/nodejs 0.11.0-alpha.0-20241005-e3e4e4a7a
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +1 -0
- package/dist/cjs/behavior/index.d.ts +7 -0
- package/dist/cjs/behavior/index.d.ts.map +1 -0
- package/dist/cjs/behavior/index.js +8 -0
- package/dist/cjs/behavior/index.js.map +6 -0
- package/dist/cjs/behavior/instrumentation.d.ts +11 -0
- package/dist/cjs/behavior/instrumentation.d.ts.map +1 -0
- package/dist/cjs/behavior/instrumentation.js +47 -0
- package/dist/cjs/behavior/instrumentation.js.map +6 -0
- package/dist/cjs/behavior/register.d.ts +7 -0
- package/dist/cjs/behavior/register.d.ts.map +1 -0
- package/dist/cjs/behavior/register.js +9 -0
- package/dist/cjs/behavior/register.js.map +6 -0
- package/dist/cjs/crypto/NodeJsCrypto.d.ts +29 -0
- package/dist/cjs/crypto/NodeJsCrypto.d.ts.map +1 -0
- package/dist/cjs/crypto/NodeJsCrypto.js +154 -0
- package/dist/cjs/crypto/NodeJsCrypto.js.map +6 -0
- package/dist/cjs/crypto/index.d.ts +8 -0
- package/dist/cjs/crypto/index.d.ts.map +1 -0
- package/dist/cjs/crypto/index.js +25 -0
- package/dist/cjs/crypto/index.js.map +6 -0
- package/dist/cjs/crypto/register.d.ts +7 -0
- package/dist/cjs/crypto/register.d.ts.map +1 -0
- package/dist/cjs/crypto/register.js +21 -0
- package/dist/cjs/crypto/register.js.map +6 -0
- package/dist/cjs/environment/NodeJsActionTracer.d.ts +15 -0
- package/dist/cjs/environment/NodeJsActionTracer.d.ts.map +1 -0
- package/dist/cjs/environment/NodeJsActionTracer.js +80 -0
- package/dist/cjs/environment/NodeJsActionTracer.js.map +6 -0
- package/dist/cjs/environment/NodeJsEnvironment.d.ts +55 -0
- package/dist/cjs/environment/NodeJsEnvironment.d.ts.map +1 -0
- package/dist/cjs/environment/NodeJsEnvironment.js +121 -0
- package/dist/cjs/environment/NodeJsEnvironment.js.map +6 -0
- package/dist/cjs/environment/ProcessManager.d.ts +45 -0
- package/dist/cjs/environment/ProcessManager.d.ts.map +1 -0
- package/dist/cjs/environment/ProcessManager.js +112 -0
- package/dist/cjs/environment/ProcessManager.js.map +6 -0
- package/dist/cjs/environment/index.d.ts +10 -0
- package/dist/cjs/environment/index.d.ts.map +1 -0
- package/dist/cjs/environment/index.js +27 -0
- package/dist/cjs/environment/index.js.map +6 -0
- package/dist/cjs/environment/register.d.ts +7 -0
- package/dist/cjs/environment/register.d.ts.map +1 -0
- package/dist/cjs/environment/register.js +10 -0
- package/dist/cjs/environment/register.js.map +6 -0
- package/dist/cjs/index.d.ts +12 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +29 -0
- package/dist/cjs/index.js.map +6 -0
- package/dist/cjs/log/FileLogger.d.ts +13 -0
- package/dist/cjs/log/FileLogger.d.ts.map +1 -0
- package/dist/cjs/log/FileLogger.js +46 -0
- package/dist/cjs/log/FileLogger.js.map +6 -0
- package/dist/cjs/log/index.d.ts +7 -0
- package/dist/cjs/log/index.d.ts.map +1 -0
- package/dist/cjs/log/index.js +24 -0
- package/dist/cjs/log/index.js.map +6 -0
- package/dist/cjs/net/NodeJsNetwork.d.ts +27 -0
- package/dist/cjs/net/NodeJsNetwork.d.ts.map +1 -0
- package/dist/cjs/net/NodeJsNetwork.js +145 -0
- package/dist/cjs/net/NodeJsNetwork.js.map +6 -0
- package/dist/cjs/net/NodeJsUdpChannel.d.ts +23 -0
- package/dist/cjs/net/NodeJsUdpChannel.d.ts.map +1 -0
- package/dist/cjs/net/NodeJsUdpChannel.js +181 -0
- package/dist/cjs/net/NodeJsUdpChannel.js.map +6 -0
- package/dist/cjs/net/index.d.ts +9 -0
- package/dist/cjs/net/index.d.ts.map +1 -0
- package/dist/cjs/net/index.js +26 -0
- package/dist/cjs/net/index.js.map +6 -0
- package/dist/cjs/net/register.d.ts +7 -0
- package/dist/cjs/net/register.d.ts.map +1 -0
- package/dist/cjs/net/register.js +16 -0
- package/dist/cjs/net/register.js.map +6 -0
- package/dist/cjs/package.json +11 -0
- package/dist/cjs/storage/StorageBackendDisk.d.ts +27 -0
- package/dist/cjs/storage/StorageBackendDisk.d.ts.map +1 -0
- package/dist/cjs/storage/StorageBackendDisk.js +128 -0
- package/dist/cjs/storage/StorageBackendDisk.js.map +6 -0
- package/dist/cjs/storage/StorageBackendJsonFile.d.ts +27 -0
- package/dist/cjs/storage/StorageBackendJsonFile.d.ts.map +1 -0
- package/dist/cjs/storage/StorageBackendJsonFile.js +110 -0
- package/dist/cjs/storage/StorageBackendJsonFile.js.map +6 -0
- package/dist/cjs/storage/index.d.ts +8 -0
- package/dist/cjs/storage/index.d.ts.map +1 -0
- package/dist/cjs/storage/index.js +25 -0
- package/dist/cjs/storage/index.js.map +6 -0
- package/dist/cjs/tsconfig.tsbuildinfo +1 -0
- package/dist/esm/behavior/index.d.ts +7 -0
- package/dist/esm/behavior/index.d.ts.map +1 -0
- package/dist/esm/behavior/index.js +7 -0
- package/dist/esm/behavior/index.js.map +6 -0
- package/dist/esm/behavior/instrumentation.d.ts +11 -0
- package/dist/esm/behavior/instrumentation.d.ts.map +1 -0
- package/dist/esm/behavior/instrumentation.js +27 -0
- package/dist/esm/behavior/instrumentation.js.map +6 -0
- package/dist/esm/behavior/register.d.ts +7 -0
- package/dist/esm/behavior/register.d.ts.map +1 -0
- package/dist/esm/behavior/register.js +8 -0
- package/dist/esm/behavior/register.js.map +6 -0
- package/dist/esm/crypto/NodeJsCrypto.d.ts +29 -0
- package/dist/esm/crypto/NodeJsCrypto.d.ts.map +1 -0
- package/dist/esm/crypto/NodeJsCrypto.js +135 -0
- package/dist/esm/crypto/NodeJsCrypto.js.map +6 -0
- package/dist/esm/crypto/index.d.ts +8 -0
- package/dist/esm/crypto/index.d.ts.map +1 -0
- package/dist/esm/crypto/index.js +8 -0
- package/dist/esm/crypto/index.js.map +6 -0
- package/dist/esm/crypto/register.d.ts +7 -0
- package/dist/esm/crypto/register.d.ts.map +1 -0
- package/dist/esm/crypto/register.js +20 -0
- package/dist/esm/crypto/register.js.map +6 -0
- package/dist/esm/environment/NodeJsActionTracer.d.ts +15 -0
- package/dist/esm/environment/NodeJsActionTracer.d.ts.map +1 -0
- package/dist/esm/environment/NodeJsActionTracer.js +60 -0
- package/dist/esm/environment/NodeJsActionTracer.js.map +6 -0
- package/dist/esm/environment/NodeJsEnvironment.d.ts +55 -0
- package/dist/esm/environment/NodeJsEnvironment.d.ts.map +1 -0
- package/dist/esm/environment/NodeJsEnvironment.js +108 -0
- package/dist/esm/environment/NodeJsEnvironment.js.map +6 -0
- package/dist/esm/environment/ProcessManager.d.ts +45 -0
- package/dist/esm/environment/ProcessManager.d.ts.map +1 -0
- package/dist/esm/environment/ProcessManager.js +92 -0
- package/dist/esm/environment/ProcessManager.js.map +6 -0
- package/dist/esm/environment/index.d.ts +10 -0
- package/dist/esm/environment/index.d.ts.map +1 -0
- package/dist/esm/environment/index.js +10 -0
- package/dist/esm/environment/index.js.map +6 -0
- package/dist/esm/environment/register.d.ts +7 -0
- package/dist/esm/environment/register.d.ts.map +1 -0
- package/dist/esm/environment/register.js +9 -0
- package/dist/esm/environment/register.js.map +6 -0
- package/dist/esm/index.d.ts +12 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +12 -0
- package/dist/esm/index.js.map +6 -0
- package/dist/esm/log/FileLogger.d.ts +13 -0
- package/dist/esm/log/FileLogger.d.ts.map +1 -0
- package/dist/esm/log/FileLogger.js +26 -0
- package/dist/esm/log/FileLogger.js.map +6 -0
- package/dist/esm/log/index.d.ts +7 -0
- package/dist/esm/log/index.d.ts.map +1 -0
- package/dist/esm/log/index.js +7 -0
- package/dist/esm/log/index.js.map +6 -0
- package/dist/esm/net/NodeJsNetwork.d.ts +27 -0
- package/dist/esm/net/NodeJsNetwork.d.ts.map +1 -0
- package/dist/esm/net/NodeJsNetwork.js +133 -0
- package/dist/esm/net/NodeJsNetwork.js.map +6 -0
- package/dist/esm/net/NodeJsUdpChannel.d.ts +23 -0
- package/dist/esm/net/NodeJsUdpChannel.d.ts.map +1 -0
- package/dist/esm/net/NodeJsUdpChannel.js +159 -0
- package/dist/esm/net/NodeJsUdpChannel.js.map +6 -0
- package/dist/esm/net/index.d.ts +9 -0
- package/dist/esm/net/index.d.ts.map +1 -0
- package/dist/esm/net/index.js +9 -0
- package/dist/esm/net/index.js.map +6 -0
- package/dist/esm/net/register.d.ts +7 -0
- package/dist/esm/net/register.d.ts.map +1 -0
- package/dist/esm/net/register.js +15 -0
- package/dist/esm/net/register.js.map +6 -0
- package/dist/esm/package.json +11 -0
- package/dist/esm/storage/StorageBackendDisk.d.ts +27 -0
- package/dist/esm/storage/StorageBackendDisk.d.ts.map +1 -0
- package/dist/esm/storage/StorageBackendDisk.js +108 -0
- package/dist/esm/storage/StorageBackendDisk.js.map +6 -0
- package/dist/esm/storage/StorageBackendJsonFile.d.ts +27 -0
- package/dist/esm/storage/StorageBackendJsonFile.d.ts.map +1 -0
- package/dist/esm/storage/StorageBackendJsonFile.js +90 -0
- package/dist/esm/storage/StorageBackendJsonFile.js.map +6 -0
- package/dist/esm/storage/index.d.ts +8 -0
- package/dist/esm/storage/index.d.ts.map +1 -0
- package/dist/esm/storage/index.js +8 -0
- package/dist/esm/storage/index.js.map +6 -0
- package/dist/esm/tsconfig.tsbuildinfo +1 -0
- package/package.json +114 -0
- package/src/behavior/index.ts +7 -0
- package/src/behavior/instrumentation.ts +32 -0
- package/src/behavior/register.ts +9 -0
- package/src/crypto/NodeJsCrypto.ts +164 -0
- package/src/crypto/index.ts +8 -0
- package/src/crypto/register.ts +25 -0
- package/src/environment/NodeJsActionTracer.ts +70 -0
- package/src/environment/NodeJsEnvironment.ts +172 -0
- package/src/environment/ProcessManager.ts +128 -0
- package/src/environment/index.ts +10 -0
- package/src/environment/register.ts +10 -0
- package/src/index.ts +12 -0
- package/src/log/FileLogger.ts +30 -0
- package/src/log/index.ts +7 -0
- package/src/net/NodeJsNetwork.ts +157 -0
- package/src/net/NodeJsUdpChannel.ts +179 -0
- package/src/net/index.ts +9 -0
- package/src/net/register.ts +20 -0
- package/src/storage/StorageBackendDisk.ts +132 -0
- package/src/storage/StorageBackendJsonFile.ts +102 -0
- package/src/storage/index.ts +8 -0
- package/src/tsconfig.json +28 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/behavior/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,eAAe,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Node's default console formatting makes it difficult to view the value of managed collections. This function
|
|
8
|
+
* instruments values to make inspection work more naturally.
|
|
9
|
+
*/
|
|
10
|
+
export declare function installInspectionInstrumentation(): void;
|
|
11
|
+
//# sourceMappingURL=instrumentation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../../src/behavior/instrumentation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH;;;GAGG;AACH,wBAAgB,gCAAgC,SAkB/C"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Instrumentation } from "#node";
|
|
7
|
+
import { inspect } from "util";
|
|
8
|
+
function installInspectionInstrumentation() {
|
|
9
|
+
Instrumentation.instrumentStruct = (constructor) => {
|
|
10
|
+
constructor.prototype[inspect.custom] = function() {
|
|
11
|
+
return { ...this };
|
|
12
|
+
};
|
|
13
|
+
return constructor;
|
|
14
|
+
};
|
|
15
|
+
Instrumentation.instrumentList = (factory) => {
|
|
16
|
+
return (handlers, target) => {
|
|
17
|
+
target[inspect.custom] = function() {
|
|
18
|
+
return [...this];
|
|
19
|
+
};
|
|
20
|
+
return factory(handlers, target);
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export {
|
|
25
|
+
installInspectionInstrumentation
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=instrumentation.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/behavior/instrumentation.ts"],
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,uBAA4B;AACrC,SAAS,eAAe;AAMjB,SAAS,mCAAmC;AAC/C,kBAAgB,mBAAmB,iBAAe;AAC9C,gBAAY,UAAU,QAAQ,MAAM,IAAI,WAA4B;AAChE,aAAO,EAAE,GAAG,KAAK;AAAA,IACrB;AAEA,WAAO;AAAA,EACX;AAEA,kBAAgB,iBAAiB,CAAC,YAAyC;AACvE,WAAO,CAAC,UAAU,WAAW;AACzB,MAAC,OAAe,QAAQ,MAAM,IAAI,WAA0B;AACxD,eAAO,CAAC,GAAG,IAAI;AAAA,MACnB;AAEA,aAAO,QAAQ,UAAU,MAAM;AAAA,IACnC;AAAA,EACJ;AACJ;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/behavior/register.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Crypto, CryptoDsaEncoding, PrivateKey } from "#general";
|
|
7
|
+
import * as crypto from "crypto";
|
|
8
|
+
export declare class NodeJsCrypto extends Crypto {
|
|
9
|
+
encrypt(key: Uint8Array, data: Uint8Array, nonce: Uint8Array, aad?: Uint8Array): Uint8Array;
|
|
10
|
+
decrypt(key: Uint8Array, data: Uint8Array, nonce: Uint8Array, aad?: Uint8Array): Uint8Array;
|
|
11
|
+
getRandomData(length: number): Uint8Array;
|
|
12
|
+
ecdhGeneratePublicKey(): {
|
|
13
|
+
publicKey: Uint8Array;
|
|
14
|
+
ecdh: any;
|
|
15
|
+
};
|
|
16
|
+
ecdhGeneratePublicKeyAndSecret(peerPublicKey: Uint8Array): {
|
|
17
|
+
publicKey: Uint8Array;
|
|
18
|
+
sharedSecret: Uint8Array;
|
|
19
|
+
};
|
|
20
|
+
ecdhGenerateSecret(peerPublicKey: Uint8Array, ecdh: crypto.ECDH): Uint8Array;
|
|
21
|
+
hash(data: Uint8Array | Uint8Array[]): Uint8Array;
|
|
22
|
+
pbkdf2(secret: Uint8Array, salt: Uint8Array, iteration: number, keyLength: number): Promise<Uint8Array>;
|
|
23
|
+
hkdf(secret: Uint8Array, salt: Uint8Array, info: Uint8Array, length?: number): Promise<Uint8Array>;
|
|
24
|
+
hmac(key: Uint8Array, data: Uint8Array): Uint8Array;
|
|
25
|
+
sign(privateKey: JsonWebKey, data: Uint8Array | Uint8Array[], dsaEncoding?: CryptoDsaEncoding): Uint8Array;
|
|
26
|
+
verify(publicKey: JsonWebKey, data: Uint8Array, signature: Uint8Array, dsaEncoding?: CryptoDsaEncoding): void;
|
|
27
|
+
createKeyPair(): PrivateKey;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=NodeJsCrypto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeJsCrypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/NodeJsCrypto.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAQH,MAAM,EACN,iBAAiB,EAEjB,UAAU,EACb,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,qBAAa,YAAa,SAAQ,MAAM;IACpC,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,UAAU,GAAG,UAAU;IAY3F,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,UAAU,GAAG,UAAU;IAc3F,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU;IAIzC,qBAAqB,IAAI;QAAE,SAAS,EAAE,UAAU,CAAC;QAAC,IAAI,EAAE,GAAG,CAAA;KAAE;IAM7D,8BAA8B,CAAC,aAAa,EAAE,UAAU,GAAG;QAAE,SAAS,EAAE,UAAU,CAAC;QAAC,YAAY,EAAE,UAAU,CAAA;KAAE;IAS9G,kBAAkB,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,GAAG,UAAU;IAI5E,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,EAAE,GAAG,UAAU;IAUjD,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IASvG,IAAI,CACA,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,UAAU,EAChB,MAAM,GAAE,MAAoC,GAC7C,OAAO,CAAC,UAAU,CAAC;IAStB,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU;IAMnD,IAAI,CACA,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,UAAU,GAAG,UAAU,EAAE,EAC/B,WAAW,GAAE,iBAAgC,GAC9C,UAAU;IAiBb,MAAM,CACF,SAAS,EAAE,UAAU,EACrB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,UAAU,EACrB,WAAW,GAAE,iBAAgC;IAgBjD,aAAa;CAYhB"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import {
|
|
7
|
+
Bytes,
|
|
8
|
+
CRYPTO_AUTH_TAG_LENGTH,
|
|
9
|
+
CRYPTO_EC_CURVE,
|
|
10
|
+
CRYPTO_EC_KEY_BYTES,
|
|
11
|
+
CRYPTO_ENCRYPT_ALGORITHM,
|
|
12
|
+
CRYPTO_HASH_ALGORITHM,
|
|
13
|
+
CRYPTO_SYMMETRIC_KEY_LENGTH,
|
|
14
|
+
Crypto,
|
|
15
|
+
CryptoVerifyError,
|
|
16
|
+
PrivateKey
|
|
17
|
+
} from "#general";
|
|
18
|
+
import * as crypto from "crypto";
|
|
19
|
+
class NodeJsCrypto extends Crypto {
|
|
20
|
+
encrypt(key, data, nonce, aad) {
|
|
21
|
+
const cipher = crypto.createCipheriv(CRYPTO_ENCRYPT_ALGORITHM, key, nonce, {
|
|
22
|
+
authTagLength: CRYPTO_AUTH_TAG_LENGTH
|
|
23
|
+
});
|
|
24
|
+
if (aad !== void 0) {
|
|
25
|
+
cipher.setAAD(aad, { plaintextLength: data.length });
|
|
26
|
+
}
|
|
27
|
+
const encrypted = cipher.update(data);
|
|
28
|
+
cipher.final();
|
|
29
|
+
return Bytes.concat(encrypted, cipher.getAuthTag());
|
|
30
|
+
}
|
|
31
|
+
decrypt(key, data, nonce, aad) {
|
|
32
|
+
const cipher = crypto.createDecipheriv(CRYPTO_ENCRYPT_ALGORITHM, key, nonce, {
|
|
33
|
+
authTagLength: CRYPTO_AUTH_TAG_LENGTH
|
|
34
|
+
});
|
|
35
|
+
const plaintextLength = data.length - CRYPTO_AUTH_TAG_LENGTH;
|
|
36
|
+
if (aad !== void 0) {
|
|
37
|
+
cipher.setAAD(aad, { plaintextLength });
|
|
38
|
+
}
|
|
39
|
+
cipher.setAuthTag(data.slice(plaintextLength));
|
|
40
|
+
const result = cipher.update(data.slice(0, plaintextLength));
|
|
41
|
+
cipher.final();
|
|
42
|
+
return new Uint8Array(result);
|
|
43
|
+
}
|
|
44
|
+
getRandomData(length) {
|
|
45
|
+
return new Uint8Array(crypto.randomBytes(length));
|
|
46
|
+
}
|
|
47
|
+
ecdhGeneratePublicKey() {
|
|
48
|
+
const ecdh = crypto.createECDH(CRYPTO_EC_CURVE);
|
|
49
|
+
ecdh.generateKeys();
|
|
50
|
+
return { publicKey: new Uint8Array(ecdh.getPublicKey()), ecdh };
|
|
51
|
+
}
|
|
52
|
+
ecdhGeneratePublicKeyAndSecret(peerPublicKey) {
|
|
53
|
+
const ecdh = crypto.createECDH(CRYPTO_EC_CURVE);
|
|
54
|
+
ecdh.generateKeys();
|
|
55
|
+
return {
|
|
56
|
+
publicKey: new Uint8Array(ecdh.getPublicKey()),
|
|
57
|
+
sharedSecret: new Uint8Array(ecdh.computeSecret(peerPublicKey))
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
ecdhGenerateSecret(peerPublicKey, ecdh) {
|
|
61
|
+
return new Uint8Array(ecdh.computeSecret(peerPublicKey));
|
|
62
|
+
}
|
|
63
|
+
hash(data) {
|
|
64
|
+
const hasher = crypto.createHash(CRYPTO_HASH_ALGORITHM);
|
|
65
|
+
if (Array.isArray(data)) {
|
|
66
|
+
data.forEach((chunk) => hasher.update(chunk));
|
|
67
|
+
} else {
|
|
68
|
+
hasher.update(data);
|
|
69
|
+
}
|
|
70
|
+
return new Uint8Array(hasher.digest());
|
|
71
|
+
}
|
|
72
|
+
pbkdf2(secret, salt, iteration, keyLength) {
|
|
73
|
+
return new Promise((resolver, rejecter) => {
|
|
74
|
+
crypto.pbkdf2(secret, salt, iteration, keyLength, CRYPTO_HASH_ALGORITHM, (error, key) => {
|
|
75
|
+
if (error !== null) rejecter(error);
|
|
76
|
+
resolver(new Uint8Array(key));
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
hkdf(secret, salt, info, length = CRYPTO_SYMMETRIC_KEY_LENGTH) {
|
|
81
|
+
return new Promise((resolver, rejecter) => {
|
|
82
|
+
crypto.hkdf(CRYPTO_HASH_ALGORITHM, secret, salt, info, length, (error, key) => {
|
|
83
|
+
if (error !== null) rejecter(error);
|
|
84
|
+
resolver(new Uint8Array(key));
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
hmac(key, data) {
|
|
89
|
+
const hmac = crypto.createHmac(CRYPTO_HASH_ALGORITHM, key);
|
|
90
|
+
hmac.update(data);
|
|
91
|
+
return new Uint8Array(hmac.digest());
|
|
92
|
+
}
|
|
93
|
+
sign(privateKey, data, dsaEncoding = "ieee-p1363") {
|
|
94
|
+
const signer = crypto.createSign(CRYPTO_HASH_ALGORITHM);
|
|
95
|
+
if (Array.isArray(data)) {
|
|
96
|
+
data.forEach((chunk) => signer.update(chunk));
|
|
97
|
+
} else {
|
|
98
|
+
signer.update(data);
|
|
99
|
+
}
|
|
100
|
+
return new Uint8Array(
|
|
101
|
+
signer.sign({
|
|
102
|
+
key: privateKey,
|
|
103
|
+
format: "jwk",
|
|
104
|
+
type: "pkcs8",
|
|
105
|
+
dsaEncoding
|
|
106
|
+
})
|
|
107
|
+
);
|
|
108
|
+
}
|
|
109
|
+
verify(publicKey, data, signature, dsaEncoding = "ieee-p1363") {
|
|
110
|
+
const verifier = crypto.createVerify(CRYPTO_HASH_ALGORITHM);
|
|
111
|
+
verifier.update(data);
|
|
112
|
+
const success = verifier.verify(
|
|
113
|
+
{
|
|
114
|
+
key: publicKey,
|
|
115
|
+
format: "jwk",
|
|
116
|
+
type: "spki",
|
|
117
|
+
dsaEncoding
|
|
118
|
+
},
|
|
119
|
+
signature
|
|
120
|
+
);
|
|
121
|
+
if (!success) throw new CryptoVerifyError("Signature verification failed");
|
|
122
|
+
}
|
|
123
|
+
createKeyPair() {
|
|
124
|
+
const ecdh = crypto.createECDH(CRYPTO_EC_CURVE);
|
|
125
|
+
ecdh.generateKeys();
|
|
126
|
+
const privateKey = new Uint8Array(CRYPTO_EC_KEY_BYTES);
|
|
127
|
+
const nodePrivateKey = ecdh.getPrivateKey();
|
|
128
|
+
privateKey.set(nodePrivateKey, CRYPTO_EC_KEY_BYTES - nodePrivateKey.length);
|
|
129
|
+
return PrivateKey(privateKey, { publicKey: ecdh.getPublicKey() });
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
export {
|
|
133
|
+
NodeJsCrypto
|
|
134
|
+
};
|
|
135
|
+
//# sourceMappingURL=NodeJsCrypto.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/crypto/NodeJsCrypto.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/crypto/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,eAAe,CAAC;AACvB,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/crypto/register.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Crypto, NoProviderError, singleton } from "#general";
|
|
7
|
+
import { NodeJsCrypto } from "./NodeJsCrypto.js";
|
|
8
|
+
let needCrypto = true;
|
|
9
|
+
try {
|
|
10
|
+
const crypto = Crypto.get();
|
|
11
|
+
if (crypto.mock !== true) {
|
|
12
|
+
needCrypto = false;
|
|
13
|
+
}
|
|
14
|
+
} catch (error) {
|
|
15
|
+
NoProviderError.accept(error);
|
|
16
|
+
}
|
|
17
|
+
if (needCrypto) {
|
|
18
|
+
Crypto.get = singleton(() => new NodeJsCrypto());
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=register.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/crypto/register.ts"],
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,QAAQ,iBAAiB,iBAAiB;AACnD,SAAS,oBAAoB;AAG7B,IAAI,aAAa;AACjB,IAAI;AACA,QAAM,SAAS,OAAO,IAAI;AAE1B,MAAK,OAA8B,SAAS,MAAM;AAC9C,iBAAa;AAAA,EACjB;AACJ,SAAS,OAAO;AACZ,kBAAgB,OAAO,KAAK;AAChC;AAGA,IAAI,YAAY;AACZ,SAAO,MAAM,UAAU,MAAM,IAAI,aAAa,CAAC;AACnD;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Environment } from "#general";
|
|
7
|
+
import { ActionTracer } from "#node";
|
|
8
|
+
export declare class NodeJsActionTracer extends ActionTracer {
|
|
9
|
+
#private;
|
|
10
|
+
constructor(path: string);
|
|
11
|
+
static configure(env: Environment): void;
|
|
12
|
+
[Symbol.asyncDispose](): void;
|
|
13
|
+
record(action: ActionTracer.Action): void;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=NodeJsActionTracer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeJsActionTracer.d.ts","sourceRoot":"","sources":["../../../src/environment/NodeJsActionTracer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAA2B,MAAM,UAAU,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAIrC,qBAAa,kBAAmB,SAAQ,YAAY;;gBAKpC,IAAI,EAAE,MAAM;IAMxB,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,WAAW;IAkBjC,CAAC,MAAM,CAAC,YAAY,CAAC;IAIZ,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM;CAkB9C"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { MaybePromise, serialize } from "#general";
|
|
7
|
+
import { ActionTracer } from "#node";
|
|
8
|
+
import { open } from "fs/promises";
|
|
9
|
+
import { resolve } from "path";
|
|
10
|
+
class NodeJsActionTracer extends ActionTracer {
|
|
11
|
+
#path;
|
|
12
|
+
#output;
|
|
13
|
+
#write;
|
|
14
|
+
constructor(path) {
|
|
15
|
+
super();
|
|
16
|
+
this.#path = path;
|
|
17
|
+
}
|
|
18
|
+
static configure(env) {
|
|
19
|
+
env.vars.use(() => {
|
|
20
|
+
if (env.has(ActionTracer)) {
|
|
21
|
+
env.delete(env.get(ActionTracer).constructor);
|
|
22
|
+
}
|
|
23
|
+
if (!env.vars.boolean("trace.enable")) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const path = resolve(env.vars.get("path.root", "."), env.vars.get("trace.path", "trace.jsonl"));
|
|
27
|
+
const tracer = new NodeJsActionTracer(path);
|
|
28
|
+
env.set(ActionTracer, tracer);
|
|
29
|
+
env.runtime.add(tracer);
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
[Symbol.asyncDispose]() {
|
|
33
|
+
MaybePromise.then(this.#write, () => this.#output?.close());
|
|
34
|
+
}
|
|
35
|
+
record(action) {
|
|
36
|
+
const raw = {
|
|
37
|
+
...action,
|
|
38
|
+
path: action.path?.toString(false),
|
|
39
|
+
mutations: action.mutations ? action.mutations.map((m) => ({ ...m, path: m.path.toString(false) })) : void 0
|
|
40
|
+
};
|
|
41
|
+
this.#write = MaybePromise.then(this.#write, () => this.#record(raw));
|
|
42
|
+
}
|
|
43
|
+
async #record(action) {
|
|
44
|
+
if (this.#output === void 0) {
|
|
45
|
+
this.#output = await open(this.#path, "w");
|
|
46
|
+
}
|
|
47
|
+
await this.#output.write(JSON.stringify(action, replacer));
|
|
48
|
+
await this.#output.write("\n");
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
function replacer(_key, value) {
|
|
52
|
+
if (typeof value === "bigint" || ArrayBuffer.isView(value)) {
|
|
53
|
+
return serialize(value);
|
|
54
|
+
}
|
|
55
|
+
return value;
|
|
56
|
+
}
|
|
57
|
+
export {
|
|
58
|
+
NodeJsActionTracer
|
|
59
|
+
};
|
|
60
|
+
//# sourceMappingURL=NodeJsActionTracer.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/environment/NodeJsActionTracer.ts"],
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAsB,cAAc,iBAAiB;AACrD,SAAS,oBAAoB;AAC7B,SAAqB,YAAY;AACjC,SAAS,eAAe;AAEjB,MAAM,2BAA2B,aAAa;AAAA,EACjD;AAAA,EACA;AAAA,EACA;AAAA,EAEA,YAAY,MAAc;AACtB,UAAM;AAEN,SAAK,QAAQ;AAAA,EACjB;AAAA,EAEA,OAAO,UAAU,KAAkB;AAC/B,QAAI,KAAK,IAAI,MAAM;AACf,UAAI,IAAI,IAAI,YAAY,GAAG;AACvB,YAAI,OAAO,IAAI,IAAI,YAAY,EAAE,WAAqC;AAAA,MAC1E;AAEA,UAAI,CAAC,IAAI,KAAK,QAAQ,cAAc,GAAG;AACnC;AAAA,MACJ;AAEA,YAAM,OAAO,QAAQ,IAAI,KAAK,IAAI,aAAa,GAAG,GAAG,IAAI,KAAK,IAAI,cAAc,aAAa,CAAC;AAE9F,YAAM,SAAS,IAAI,mBAAmB,IAAI;AAC1C,UAAI,IAAI,cAAc,MAAM;AAC5B,UAAI,QAAQ,IAAI,MAAM;AAAA,IAC1B,CAAC;AAAA,EACL;AAAA,EAEA,CAAC,OAAO,YAAY,IAAI;AACpB,iBAAa,KAAK,KAAK,QAAQ,MAAM,KAAK,SAAS,MAAM,CAAC;AAAA,EAC9D;AAAA,EAES,OAAO,QAA6B;AACzC,UAAM,MAAM;AAAA,MACR,GAAG;AAAA,MACH,MAAM,OAAO,MAAM,SAAS,KAAK;AAAA,MACjC,WAAW,OAAO,YACZ,OAAO,UAAU,IAAI,QAAM,EAAE,GAAG,GAAG,MAAM,EAAE,KAAK,SAAS,KAAK,EAAE,EAAE,IAClE;AAAA,IACV;AACA,SAAK,SAAS,aAAa,KAAK,KAAK,QAAQ,MAAM,KAAK,QAAQ,GAAG,CAAC;AAAA,EACxE;AAAA,EAEA,MAAM,QAAQ,QAAgB;AAC1B,QAAI,KAAK,YAAY,QAAW;AAC5B,WAAK,UAAU,MAAM,KAAK,KAAK,OAAO,GAAG;AAAA,IAC7C;AACA,UAAM,KAAK,QAAQ,MAAM,KAAK,UAAU,QAAQ,QAAQ,CAAC;AACzD,UAAM,KAAK,QAAQ,MAAM,IAAI;AAAA,EACjC;AACJ;AAEA,SAAS,SAAS,MAAc,OAAY;AACxC,MAAI,OAAO,UAAU,YAAY,YAAY,OAAO,KAAK,GAAG;AACxD,WAAO,UAAU,KAAK;AAAA,EAC1B;AACA,SAAO;AACX;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Environment, VariableService } from "#general";
|
|
7
|
+
/**
|
|
8
|
+
* This is the default environment implementation for Node.js:
|
|
9
|
+
*
|
|
10
|
+
* - Sets variables using rudimentary command line, environment and configuration file parsers.
|
|
11
|
+
*
|
|
12
|
+
* - Processes UNIX-style signals and sets process exit codes via {@link ProcessManager}
|
|
13
|
+
*
|
|
14
|
+
* - Creates a default storage pool using the loaded configuration.
|
|
15
|
+
*
|
|
16
|
+
* You can modify this behavior:
|
|
17
|
+
*
|
|
18
|
+
* - Via configuration
|
|
19
|
+
*
|
|
20
|
+
* - By modifying {@link Environment.default}
|
|
21
|
+
*
|
|
22
|
+
* - By providing an {@link Environment} to your components other than {@link Environment.default}
|
|
23
|
+
*
|
|
24
|
+
* The settings are applied in this order (the higher numbers overwrite lower numbers):
|
|
25
|
+
* 1. Some internal Defaults (mainly Loglevel and such)
|
|
26
|
+
* 2. Config file
|
|
27
|
+
* 3. Environment variables (MATTER_*)
|
|
28
|
+
* 4. Command line parameters
|
|
29
|
+
*
|
|
30
|
+
* The following variables are defined by this class additionally to {@link Environment}:
|
|
31
|
+
* * `environment` - Name of the environment, Default "default"
|
|
32
|
+
* * `path.root` - Path considered as root for any files to store, Fallback: ".", Default: APPDATA/.matter (Windows), HOME/.matter else (or .matter-<envname>)
|
|
33
|
+
* * `path.config` - Path to config file, Default: "config.json"
|
|
34
|
+
* * `trace.path` - Path of the trace file to write, Default: "trace.jsonl" relative to path.root
|
|
35
|
+
* * `trace.enable` - Enable writing a trace file
|
|
36
|
+
* * `storage.path` - Where to store storage files, Default: "path.root"
|
|
37
|
+
* * `storage.clear` - Clear storage on start? Default: false
|
|
38
|
+
* * `runtime.signals` - By default register SIGINT and SIGUSR2 (diag) handlers, set to false if not wanted
|
|
39
|
+
* * `runtime.exitcode` - By default we set the process.exitcode to 0 (ok) or 1 (crash); set to false to disable
|
|
40
|
+
* * `runtime.unhandlederrors` - By default we log unhandled errors to matter.js log; set to false to disable
|
|
41
|
+
*/
|
|
42
|
+
export declare function NodeJsEnvironment(): Environment;
|
|
43
|
+
export declare function loadConfigFile(vars: VariableService): any;
|
|
44
|
+
export declare function getDefaults(vars: VariableService): {
|
|
45
|
+
environment: "default";
|
|
46
|
+
path: {
|
|
47
|
+
root: string;
|
|
48
|
+
config: string;
|
|
49
|
+
};
|
|
50
|
+
runtime: {
|
|
51
|
+
signals: boolean;
|
|
52
|
+
exitcode: boolean;
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=NodeJsEnvironment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeJsEnvironment.d.ts","sourceRoot":"","sources":["../../../src/environment/NodeJsEnvironment.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACH,WAAW,EAMX,eAAe,EAClB,MAAM,UAAU,CAAC;AAQlB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,iBAAiB,gBAkBhC;AAyCD,wBAAgB,cAAc,CAAC,IAAI,EAAE,eAAe,OAsBnD;AAiBD,wBAAgB,WAAW,CAAC,IAAI,EAAE,eAAe;;;;;;;;;;EAgBhD"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import {
|
|
7
|
+
Environment,
|
|
8
|
+
ImplementationError,
|
|
9
|
+
LogFormat,
|
|
10
|
+
Logger,
|
|
11
|
+
Network,
|
|
12
|
+
StorageService
|
|
13
|
+
} from "#general";
|
|
14
|
+
import { existsSync, readFileSync } from "fs";
|
|
15
|
+
import { resolve } from "path";
|
|
16
|
+
import { NodeJsNetwork } from "../net/NodeJsNetwork.js";
|
|
17
|
+
import { StorageBackendDisk } from "../storage/StorageBackendDisk.js";
|
|
18
|
+
import { NodeJsActionTracer } from "./NodeJsActionTracer.js";
|
|
19
|
+
import { ProcessManager } from "./ProcessManager.js";
|
|
20
|
+
function NodeJsEnvironment() {
|
|
21
|
+
const env = new Environment("default");
|
|
22
|
+
loadVariables(env);
|
|
23
|
+
configureRuntime(env);
|
|
24
|
+
configureStorage(env);
|
|
25
|
+
configureNetwork(env);
|
|
26
|
+
if (!env.vars.has("logger.format") && Logger.format === LogFormat.PLAIN && process.stdin?.isTTY) {
|
|
27
|
+
env.vars.set("logger.format", LogFormat.ANSI);
|
|
28
|
+
}
|
|
29
|
+
NodeJsActionTracer.configure(env);
|
|
30
|
+
return env;
|
|
31
|
+
}
|
|
32
|
+
function loadVariables(env) {
|
|
33
|
+
const vars = env.vars;
|
|
34
|
+
vars.addConfigStyle(getDefaults(vars));
|
|
35
|
+
vars.addUnixEnvStyle(process.env);
|
|
36
|
+
vars.addArgvStyle(process.argv);
|
|
37
|
+
vars.addConfigStyle(loadConfigFile(vars));
|
|
38
|
+
vars.addUnixEnvStyle(process.env);
|
|
39
|
+
vars.addArgvStyle(process.argv);
|
|
40
|
+
}
|
|
41
|
+
function configureRuntime(env) {
|
|
42
|
+
const processManager = new ProcessManager(env);
|
|
43
|
+
env.set(ProcessManager, processManager);
|
|
44
|
+
}
|
|
45
|
+
function configureStorage(env) {
|
|
46
|
+
const service = env.get(StorageService);
|
|
47
|
+
env.vars.use(() => {
|
|
48
|
+
const location = env.vars.get("storage.path", env.vars.get("path.root", "."));
|
|
49
|
+
service.location = location;
|
|
50
|
+
});
|
|
51
|
+
service.factory = (namespace) => new StorageBackendDisk(resolve(service.location ?? ".", namespace), env.vars.get("storage.clear", false));
|
|
52
|
+
}
|
|
53
|
+
function configureNetwork(env) {
|
|
54
|
+
env.set(Network, new NodeJsNetwork());
|
|
55
|
+
}
|
|
56
|
+
function loadConfigFile(vars) {
|
|
57
|
+
const path = vars.get("path.config", "config.json");
|
|
58
|
+
if (!existsSync(path)) {
|
|
59
|
+
return {};
|
|
60
|
+
}
|
|
61
|
+
let configJson;
|
|
62
|
+
try {
|
|
63
|
+
configJson = readFileSync(path).toString();
|
|
64
|
+
} catch (e) {
|
|
65
|
+
throw new ImplementationError(`Error reading configuration file ${path}: ${e.message}`);
|
|
66
|
+
}
|
|
67
|
+
let configVars;
|
|
68
|
+
try {
|
|
69
|
+
configVars = JSON.parse(configJson);
|
|
70
|
+
} catch (e) {
|
|
71
|
+
throw new ImplementationError(`Error parsing configuration file ${path}: ${e.message}`);
|
|
72
|
+
}
|
|
73
|
+
return configVars;
|
|
74
|
+
}
|
|
75
|
+
function getDefaultRoot(envName) {
|
|
76
|
+
let matterDir;
|
|
77
|
+
if (process.platform === "win32") {
|
|
78
|
+
matterDir = resolve(process.env.APPDATA ?? ".", "matter");
|
|
79
|
+
} else {
|
|
80
|
+
matterDir = resolve(process.env.HOME ?? ".", ".matter");
|
|
81
|
+
}
|
|
82
|
+
if (envName !== "default") {
|
|
83
|
+
matterDir = `${matterDir}-${envName}`;
|
|
84
|
+
}
|
|
85
|
+
return matterDir;
|
|
86
|
+
}
|
|
87
|
+
function getDefaults(vars) {
|
|
88
|
+
const envName = vars.get("environment", "default");
|
|
89
|
+
const rootPath = vars.get("path.root", getDefaultRoot(envName));
|
|
90
|
+
const configPath = resolve(rootPath, vars.get("path.config", "config.json"));
|
|
91
|
+
return {
|
|
92
|
+
environment: envName,
|
|
93
|
+
path: {
|
|
94
|
+
root: rootPath,
|
|
95
|
+
config: configPath
|
|
96
|
+
},
|
|
97
|
+
runtime: {
|
|
98
|
+
signals: true,
|
|
99
|
+
exitcode: true
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
export {
|
|
104
|
+
NodeJsEnvironment,
|
|
105
|
+
getDefaults,
|
|
106
|
+
loadConfigFile
|
|
107
|
+
};
|
|
108
|
+
//# sourceMappingURL=NodeJsEnvironment.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/environment/NodeJsEnvironment.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|