From 77702ceff0789f5f5c27002327fc6134d50279c5 Mon Sep 17 00:00:00 2001 From: neonp Date: Fri, 29 Dec 2023 08:21:56 +0000 Subject: [PATCH] fix: secret key transfer to nested config --- packages/config/src/configuration.ts | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/packages/config/src/configuration.ts b/packages/config/src/configuration.ts index 941ceb80b1..4d73bceda0 100755 --- a/packages/config/src/configuration.ts +++ b/packages/config/src/configuration.ts @@ -54,10 +54,8 @@ async function aesDecrypt(ciphertext: BufferSource, key: CryptoKey, iv: BufferSo export default class Configuration { - private cryptKey?: CryptoKey; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - private constructor(private readonly path: string, private readonly config?: T, private readonly rootConfig?: any) + private constructor(private readonly path: string, private readonly config?: T, private readonly rootConfig?: any, private cryptKey?: CryptoKey) { if (typeof config == 'undefined') config = {} as unknown as T; @@ -70,9 +68,9 @@ export default class Configuration } // eslint-disable-next-line @typescript-eslint/no-explicit-any - public static new(path: string, config?: T, rootConfig?: any): ProxyConfigurationObjectNonArray + public static new(path: string, config?: T, rootConfig?: any, cryptKey?: CryptoKey): ProxyConfigurationObjectNonArray { - return new Proxy(new Configuration(path, config, rootConfig), { + return new Proxy(new Configuration(path, config, rootConfig, cryptKey), { has(target, key) { if (typeof (key) == 'symbol') @@ -201,8 +199,7 @@ export default class Configuration await fs.writeFile(file, content = '{}'); } - const config = Configuration.new(file, JSON.parse(content)); - config.cryptKey = cryptKey; + const config = Configuration.new(file, JSON.parse(content), undefined, cryptKey); if (needle) { const needleConfig = config.get(needle); @@ -228,7 +225,7 @@ export default class Configuration }, this.config); if (typeof value == 'object' && !Array.isArray(value)) // eslint-disable-next-line @typescript-eslint/no-explicit-any - return Configuration.new(this.path, value as SerializableObject, this.rootConfig) as any; + return Configuration.new(this.path, value as SerializableObject, this.rootConfig, this.cryptKey) as any; // eslint-disable-next-line @typescript-eslint/no-explicit-any return value as any ;