@culturefy/shared 1.0.9 → 1.0.12
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/build/cjs/enums/secretKeys.enum.js +1 -1
- package/build/cjs/enums/secretKeys.enum.js.map +1 -1
- package/build/cjs/utils/initializers.js +2 -2
- package/build/cjs/utils/initializers.js.map +1 -1
- package/build/cjs/utils/secrets.js +2 -1
- package/build/cjs/utils/secrets.js.map +1 -1
- package/build/esm/enums/secretKeys.enum.js +1 -1
- package/build/esm/enums/secretKeys.enum.js.map +1 -1
- package/build/esm/utils/initializers.js +2 -2
- package/build/esm/utils/initializers.js.map +1 -1
- package/build/esm/utils/secrets.js +2 -1
- package/build/esm/utils/secrets.js.map +1 -1
- package/build/package.json +1 -1
- package/build/src/enums/secretKeys.enum.d.ts +1 -1
- package/build/src/enums/secretKeys.enum.js +1 -1
- package/build/src/enums/secretKeys.enum.js.map +1 -1
- package/build/src/utils/initializers.js +2 -2
- package/build/src/utils/initializers.js.map +1 -1
- package/build/src/utils/secrets.js +2 -1
- package/build/src/utils/secrets.js.map +1 -1
- package/package.json +1 -1
- package/src/enums/secretKeys.enum.ts +1 -1
- package/src/utils/initializers.ts +2 -2
- package/src/utils/secrets.ts +2 -1
|
@@ -14,7 +14,7 @@ let AzureSecretKeysEnum = exports.AzureSecretKeysEnum = /*#__PURE__*/function (A
|
|
|
14
14
|
// in-use
|
|
15
15
|
AzureSecretKeysEnum["EMAIL_SERVICE_URL"] = "Email-Service-Url";
|
|
16
16
|
// in-use,
|
|
17
|
-
AzureSecretKeysEnum["
|
|
17
|
+
AzureSecretKeysEnum["STRIPE_WEBHOOK_CUSTOMER_CREATED_SECRET_KEY"] = "Stripe-Webhook-Customer-Created-Secret-Key";
|
|
18
18
|
// in-use
|
|
19
19
|
AzureSecretKeysEnum["DB_CONNECTING_STRING_BILLING"] = "DB-Connecting-String-Billing";
|
|
20
20
|
return AzureSecretKeysEnum;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secretKeys.enum.js","names":["AzureSecretKeysEnum","exports"],"sources":["../../../src/enums/secretKeys.enum.ts"],"sourcesContent":["// Enum for secret keys\nexport enum AzureSecretKeysEnum {\n // STRIPE_PUBLISHABLE_KEY = \"Stripe-Publishable-Key\",\n STRIPE_SECRET_KEY = \"Stripe-secret-key\",\n STRIPE_PAYMENT_WEBHOOK_SECRET_KEY = \"Stripe-payment-webhook-secret-key\", // in-use\n STRIPE_PRODUCT_WEBHOOK_SECRET = \"Stripe-product-webhook-secret-key\", // in-use\n STRIPE_PRICE_WEBHOOK_SECRET = \"Stripe-price-webhook-secret-key\", // in-use\n EMAIL_SERVICE_URL = \"Email-Service-Url\", // in-use,\n
|
|
1
|
+
{"version":3,"file":"secretKeys.enum.js","names":["AzureSecretKeysEnum","exports"],"sources":["../../../src/enums/secretKeys.enum.ts"],"sourcesContent":["// Enum for secret keys\nexport enum AzureSecretKeysEnum {\n // STRIPE_PUBLISHABLE_KEY = \"Stripe-Publishable-Key\",\n STRIPE_SECRET_KEY = \"Stripe-secret-key\",\n STRIPE_PAYMENT_WEBHOOK_SECRET_KEY = \"Stripe-payment-webhook-secret-key\", // in-use\n STRIPE_PRODUCT_WEBHOOK_SECRET = \"Stripe-product-webhook-secret-key\", // in-use\n STRIPE_PRICE_WEBHOOK_SECRET = \"Stripe-price-webhook-secret-key\", // in-use\n EMAIL_SERVICE_URL = \"Email-Service-Url\", // in-use,\n STRIPE_WEBHOOK_CUSTOMER_CREATED_SECRET_KEY = \"Stripe-Webhook-Customer-Created-Secret-Key\",// in-use\n DB_CONNECTING_STRING_BILLING = \"DB-Connecting-String-Billing\"\n}"],"mappings":";;;;AAAA;AAAA,IACYA,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,0BAAnBA,mBAAmB;EAC7B;EADUA,mBAAmB;EAAnBA,mBAAmB;EAG4C;EAH/DA,mBAAmB;EAIwC;EAJ3DA,mBAAmB;EAKoC;EALvDA,mBAAmB;EAMY;EAN/BA,mBAAmB;EAO6D;EAPhFA,mBAAmB;EAAA,OAAnBA,mBAAmB;AAAA","ignoreList":[]}
|
|
@@ -23,8 +23,8 @@ exports.Initializers = Initializers;
|
|
|
23
23
|
class MongoConnectionSingleton {
|
|
24
24
|
static async getInstance(context, secretKey) {
|
|
25
25
|
if (!this.instances.has(secretKey)) {
|
|
26
|
-
const vaultName = process.env.
|
|
27
|
-
if (!vaultName) throw new Error("Missing
|
|
26
|
+
const vaultName = process.env.AZURE_KEY_VAULT_NAME;
|
|
27
|
+
if (!vaultName) throw new Error("Missing AZURE_KEY_VAULT_NAME env var");
|
|
28
28
|
context.info(`[Mongo] fetching secret "${secretKey}" from vault "${vaultName}"`);
|
|
29
29
|
const uri = await (0, _secrets.getAzureVaultSecretByKey)(context, vaultName, secretKey);
|
|
30
30
|
if (!uri) throw new Error(`No value for secret "${secretKey}"`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initializers.js","names":["_mongoose","_interopRequireDefault","require","_secrets","e","__esModule","default","Initializers","constructor","context","dbSecret","db","MongoConnectionSingleton","getInstance","then","conn","info","catch","err","error","exports","secretKey","instances","has","vaultName","process","env","
|
|
1
|
+
{"version":3,"file":"initializers.js","names":["_mongoose","_interopRequireDefault","require","_secrets","e","__esModule","default","Initializers","constructor","context","dbSecret","db","MongoConnectionSingleton","getInstance","then","conn","info","catch","err","error","exports","secretKey","instances","has","vaultName","process","env","AZURE_KEY_VAULT_NAME","Error","uri","getAzureVaultSecretByKey","mongoose","createConnection","asPromise","set","get","Map"],"sources":["../../../src/utils/initializers.ts"],"sourcesContent":["// packages/libs/src/db-initializers.ts\n\nimport mongoose, { Connection } from \"mongoose\";\nimport { InvocationContext } from \"@azure/functions\";\nimport { getAzureVaultSecretByKey } from \"./secrets\";\nimport { AzureSecretKeysEnum } from \"../enums\";\n\nexport abstract class Initializers {\n protected db!: Connection;\n\n constructor(\n context: InvocationContext,\n dbSecret: AzureSecretKeysEnum\n ) {\n MongoConnectionSingleton\n .getInstance(context, dbSecret)\n .then(conn => {\n this.db = conn;\n context.info(\"✅ MongoDB initialized\");\n })\n .catch(err => {\n context.error(\"❌ Failed to initialize MongoDB:\", err);\n throw err;\n });\n }\n}\n\nclass MongoConnectionSingleton {\n private static instances = new Map<AzureSecretKeysEnum, Connection>();\n\n static async getInstance(\n context: InvocationContext,\n secretKey: AzureSecretKeysEnum\n ): Promise<Connection> {\n if (!this.instances.has(secretKey)) {\n const vaultName = process.env.AZURE_KEY_VAULT_NAME!;\n if (!vaultName) throw new Error(\"Missing AZURE_KEY_VAULT_NAME env var\");\n\n context.info(`[Mongo] fetching secret \"${secretKey}\" from vault \"${vaultName}\"`);\n const uri = await getAzureVaultSecretByKey(context, vaultName, secretKey);\n if (!uri) throw new Error(`No value for secret \"${secretKey}\"`);\n\n context.info(\"[Mongo] connecting to MongoDB…\");\n const conn = await mongoose\n .createConnection(uri, {})\n .asPromise();\n context.info(\"[Mongo] connected to MongoDB\");\n\n this.instances.set(secretKey, conn);\n }\n return this.instances.get(secretKey)!;\n }\n}\n\n\n\n\n\n// import mongoose, { Mongoose } from \"mongoose\";\n// import { InvocationContext } from \"@azure/functions\";\n// import { getAzureVaultSecretByKey } from \"./secrets\";\n// import { AzureSecretKeysEnum } from \"../enums\";\n\n// /**\n// * Base class for any service that needs a MongoDB connection.\n// * Pass in the name of the Key Vault secret that holds your MongoDB URI.\n// */\n// export abstract class Initializers {\n// mongoose!: Mongoose;\n\n// constructor(\n// context: InvocationContext,\n// dbConnectionSecretKey: AzureSecretKeysEnum\n// ) {\n// MongoConnectionSingleton\n// .getInstance(context, dbConnectionSecretKey)\n// .then(singleton => {\n// this.mongoose = singleton.mongoose;\n// })\n// .catch(err => {\n// context.error(\"Failed to initialize MongoDB:\", err);\n// throw err;\n// });\n// }\n// }\n\n// /**\n// * A singleton manager that caches one mongoose connection per secret key.\n// */\n// class MongoConnectionSingleton {\n// private static instances: Map<AzureSecretKeysEnum, MongoConnectionSingleton> = new Map();\n// public mongoose!: Mongoose;\n\n// private constructor() { }\n\n// public static async getInstance(\n// context: InvocationContext,\n// secretKey: AzureSecretKeysEnum\n// ): Promise<MongoConnectionSingleton> {\n// if (!this.instances.has(secretKey)) {\n// const inst = new MongoConnectionSingleton();\n// await inst.connect(context, secretKey);\n// this.instances.set(secretKey, inst);\n// }\n// return this.instances.get(secretKey)!;\n// }\n\n// private async connect(\n// context: InvocationContext,\n// secretKey: AzureSecretKeysEnum\n// ): Promise<void> {\n// // 1) Fetch vault name and secret\n// const vaultName = process.env.AZURE_KEY_VAULT_NAME!;\n// if (!vaultName) throw new Error(\"Missing KEY_VAULT_NAME env var\");\n\n// context.info(`[Mongo] Fetching connection string from vault \"${vaultName}\", secret \"${secretKey}\"`);\n// const connString = await getAzureVaultSecretByKey(\n// context,\n// vaultName,\n// secretKey\n// );\n// if (!connString) {\n// throw new Error(`No value found for secret \"${secretKey}\"`);\n// }\n\n// // 2) Connect via mongoose\n// context.info(`[Mongo] Connecting to MongoDB…`);\n// this.mongoose = await mongoose.connect(connString);\n// context.info(`[Mongo] Connected using secret \"${secretKey}\"`);\n// }\n// }\n"],"mappings":";;;;AAEA,IAAAA,SAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,QAAA,GAAAD,OAAA;AAAqD,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAJrD;;AAOO,MAAeG,YAAY,CAAC;EAGjCC,WAAWA,CACTC,OAA0B,EAC1BC,QAA6B,EAC7B;IAAA,KALQC,EAAE;IAMVC,wBAAwB,CACrBC,WAAW,CAACJ,OAAO,EAAEC,QAAQ,CAAC,CAC9BI,IAAI,CAACC,IAAI,IAAI;MACZ,IAAI,CAACJ,EAAE,GAAGI,IAAI;MACdN,OAAO,CAACO,IAAI,CAAC,uBAAuB,CAAC;IACvC,CAAC,CAAC,CACDC,KAAK,CAACC,GAAG,IAAI;MACZT,OAAO,CAACU,KAAK,CAAC,iCAAiC,EAAED,GAAG,CAAC;MACrD,MAAMA,GAAG;IACX,CAAC,CAAC;EACN;AACF;AAACE,OAAA,CAAAb,YAAA,GAAAA,YAAA;AAED,MAAMK,wBAAwB,CAAC;EAG7B,aAAaC,WAAWA,CACtBJ,OAA0B,EAC1BY,SAA8B,EACT;IACrB,IAAI,CAAC,IAAI,CAACC,SAAS,CAACC,GAAG,CAACF,SAAS,CAAC,EAAE;MAClC,MAAMG,SAAS,GAAGC,OAAO,CAACC,GAAG,CAACC,oBAAqB;MACnD,IAAI,CAACH,SAAS,EAAE,MAAM,IAAII,KAAK,CAAC,sCAAsC,CAAC;MAEvEnB,OAAO,CAACO,IAAI,CAAC,4BAA4BK,SAAS,iBAAiBG,SAAS,GAAG,CAAC;MAChF,MAAMK,GAAG,GAAG,MAAM,IAAAC,iCAAwB,EAACrB,OAAO,EAAEe,SAAS,EAAEH,SAAS,CAAC;MACzE,IAAI,CAACQ,GAAG,EAAE,MAAM,IAAID,KAAK,CAAC,wBAAwBP,SAAS,GAAG,CAAC;MAE/DZ,OAAO,CAACO,IAAI,CAAC,gCAAgC,CAAC;MAC9C,MAAMD,IAAI,GAAG,MAAMgB,iBAAQ,CACxBC,gBAAgB,CAACH,GAAG,EAAE,CAAC,CAAC,CAAC,CACzBI,SAAS,CAAC,CAAC;MACdxB,OAAO,CAACO,IAAI,CAAC,8BAA8B,CAAC;MAE5C,IAAI,CAACM,SAAS,CAACY,GAAG,CAACb,SAAS,EAAEN,IAAI,CAAC;IACrC;IACA,OAAO,IAAI,CAACO,SAAS,CAACa,GAAG,CAACd,SAAS,CAAC;EACtC;AACF;;AAMA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AAvGMT,wBAAwB,CACbU,SAAS,GAAG,IAAIc,GAAG,CAAkC,CAAC","ignoreList":[]}
|
|
@@ -28,7 +28,8 @@ async function getAzureVaultSecretByKey(context, azureVaultName, key) {
|
|
|
28
28
|
case _enums.AzureSecretKeysEnum.STRIPE_PRODUCT_WEBHOOK_SECRET:
|
|
29
29
|
case _enums.AzureSecretKeysEnum.STRIPE_PRICE_WEBHOOK_SECRET:
|
|
30
30
|
case _enums.AzureSecretKeysEnum.EMAIL_SERVICE_URL:
|
|
31
|
-
case _enums.AzureSecretKeysEnum.
|
|
31
|
+
case _enums.AzureSecretKeysEnum.STRIPE_WEBHOOK_CUSTOMER_CREATED_SECRET_KEY:
|
|
32
|
+
case _enums.AzureSecretKeysEnum.DB_CONNECTING_STRING_BILLING:
|
|
32
33
|
const secret = await client.getSecret(key);
|
|
33
34
|
return secret.value || "";
|
|
34
35
|
default:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secrets.js","names":["_identity","require","_keyvaultSecrets","_enums","getAzureVaultSecretByKey","context","azureVaultName","key","vaultName","vaultUrl","credential","DefaultAzureCredential","client","SecretClient","AzureSecretKeysEnum","STRIPE_SECRET_KEY","STRIPE_PAYMENT_WEBHOOK_SECRET_KEY","STRIPE_PRODUCT_WEBHOOK_SECRET","STRIPE_PRICE_WEBHOOK_SECRET","EMAIL_SERVICE_URL","
|
|
1
|
+
{"version":3,"file":"secrets.js","names":["_identity","require","_keyvaultSecrets","_enums","getAzureVaultSecretByKey","context","azureVaultName","key","vaultName","vaultUrl","credential","DefaultAzureCredential","client","SecretClient","AzureSecretKeysEnum","STRIPE_SECRET_KEY","STRIPE_PAYMENT_WEBHOOK_SECRET_KEY","STRIPE_PRODUCT_WEBHOOK_SECRET","STRIPE_PRICE_WEBHOOK_SECRET","EMAIL_SERVICE_URL","STRIPE_WEBHOOK_CUSTOMER_CREATED_SECRET_KEY","DB_CONNECTING_STRING_BILLING","secret","getSecret","value","Error","err","error"],"sources":["../../../src/utils/secrets.ts"],"sourcesContent":["import { DefaultAzureCredential } from \"@azure/identity\";\nimport { SecretClient } from \"@azure/keyvault-secrets\";\nimport { InvocationContext } from \"@azure/functions\";\nimport { AzureSecretKeysEnum } from \"../enums\";\n\n/**\n * Fetches a secret value from Azure Key Vault by key.\n * @param key - The key name from the AzureSecretKeysEnum enum.\n * @returns The secret value.\n * @throws Error if the key is invalid or if the secret fetch fails.\n*/\nexport async function getAzureVaultSecretByKey(\n context: InvocationContext,\n azureVaultName: string,\n key: AzureSecretKeysEnum\n): Promise<string> {\n try {\n \n // Azure Key Vault URL\n const vaultName = azureVaultName || \"\";\n const vaultUrl = `https://${vaultName}.vault.azure.net`;\n\n // Initialize SecretClient\n const credential = new DefaultAzureCredential();\n const client = new SecretClient(vaultUrl, credential);\n \n // Validate the key using a switch case\n switch (key) {\n \n case AzureSecretKeysEnum.STRIPE_SECRET_KEY:\n case AzureSecretKeysEnum.STRIPE_PAYMENT_WEBHOOK_SECRET_KEY:\n case AzureSecretKeysEnum.STRIPE_PRODUCT_WEBHOOK_SECRET:\n case AzureSecretKeysEnum.STRIPE_PRICE_WEBHOOK_SECRET:\n case AzureSecretKeysEnum.EMAIL_SERVICE_URL:\n case AzureSecretKeysEnum.STRIPE_WEBHOOK_CUSTOMER_CREATED_SECRET_KEY:\n case AzureSecretKeysEnum.DB_CONNECTING_STRING_BILLING:\n const secret = await client.getSecret(key);\n return secret.value || \"\";\n default:\n throw new Error(`Invalid key name: ${key}`);\n }\n } catch (err) {\n context.error(`Error fetching secret for key ${key}:`, err);\n throw new Error(`Failed to fetch secret for key ${key}`);\n }\n}\n"],"mappings":";;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAD,OAAA;AAEA,IAAAE,MAAA,GAAAF,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,eAAeG,wBAAwBA,CAC5CC,OAA0B,EAC1BC,cAAsB,EACtBC,GAAwB,EACP;EACjB,IAAI;IAEF;IACA,MAAMC,SAAS,GAAGF,cAAc,IAAI,EAAE;IACtC,MAAMG,QAAQ,GAAG,WAAWD,SAAS,kBAAkB;;IAEvD;IACA,MAAME,UAAU,GAAG,IAAIC,gCAAsB,CAAC,CAAC;IAC/C,MAAMC,MAAM,GAAG,IAAIC,6BAAY,CAACJ,QAAQ,EAAEC,UAAU,CAAC;;IAErD;IACA,QAAQH,GAAG;MAET,KAAKO,0BAAmB,CAACC,iBAAiB;MAC1C,KAAKD,0BAAmB,CAACE,iCAAiC;MAC1D,KAAKF,0BAAmB,CAACG,6BAA6B;MACtD,KAAKH,0BAAmB,CAACI,2BAA2B;MACpD,KAAKJ,0BAAmB,CAACK,iBAAiB;MAC1C,KAAKL,0BAAmB,CAACM,0CAA0C;MACnE,KAAKN,0BAAmB,CAACO,4BAA4B;QACnD,MAAMC,MAAM,GAAG,MAAMV,MAAM,CAACW,SAAS,CAAChB,GAAG,CAAC;QAC1C,OAAOe,MAAM,CAACE,KAAK,IAAI,EAAE;MAC3B;QACE,MAAM,IAAIC,KAAK,CAAC,qBAAqBlB,GAAG,EAAE,CAAC;IAC/C;EACF,CAAC,CAAC,OAAOmB,GAAG,EAAE;IACZrB,OAAO,CAACsB,KAAK,CAAC,iCAAiCpB,GAAG,GAAG,EAAEmB,GAAG,CAAC;IAC3D,MAAM,IAAID,KAAK,CAAC,kCAAkClB,GAAG,EAAE,CAAC;EAC1D;AACF","ignoreList":[]}
|
|
@@ -10,7 +10,7 @@ export let AzureSecretKeysEnum = /*#__PURE__*/function (AzureSecretKeysEnum) {
|
|
|
10
10
|
// in-use
|
|
11
11
|
AzureSecretKeysEnum["EMAIL_SERVICE_URL"] = "Email-Service-Url";
|
|
12
12
|
// in-use,
|
|
13
|
-
AzureSecretKeysEnum["
|
|
13
|
+
AzureSecretKeysEnum["STRIPE_WEBHOOK_CUSTOMER_CREATED_SECRET_KEY"] = "Stripe-Webhook-Customer-Created-Secret-Key";
|
|
14
14
|
// in-use
|
|
15
15
|
AzureSecretKeysEnum["DB_CONNECTING_STRING_BILLING"] = "DB-Connecting-String-Billing";
|
|
16
16
|
return AzureSecretKeysEnum;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secretKeys.enum.js","names":["AzureSecretKeysEnum"],"sources":["../../../src/enums/secretKeys.enum.ts"],"sourcesContent":["// Enum for secret keys\nexport enum AzureSecretKeysEnum {\n // STRIPE_PUBLISHABLE_KEY = \"Stripe-Publishable-Key\",\n STRIPE_SECRET_KEY = \"Stripe-secret-key\",\n STRIPE_PAYMENT_WEBHOOK_SECRET_KEY = \"Stripe-payment-webhook-secret-key\", // in-use\n STRIPE_PRODUCT_WEBHOOK_SECRET = \"Stripe-product-webhook-secret-key\", // in-use\n STRIPE_PRICE_WEBHOOK_SECRET = \"Stripe-price-webhook-secret-key\", // in-use\n EMAIL_SERVICE_URL = \"Email-Service-Url\", // in-use,\n
|
|
1
|
+
{"version":3,"file":"secretKeys.enum.js","names":["AzureSecretKeysEnum"],"sources":["../../../src/enums/secretKeys.enum.ts"],"sourcesContent":["// Enum for secret keys\nexport enum AzureSecretKeysEnum {\n // STRIPE_PUBLISHABLE_KEY = \"Stripe-Publishable-Key\",\n STRIPE_SECRET_KEY = \"Stripe-secret-key\",\n STRIPE_PAYMENT_WEBHOOK_SECRET_KEY = \"Stripe-payment-webhook-secret-key\", // in-use\n STRIPE_PRODUCT_WEBHOOK_SECRET = \"Stripe-product-webhook-secret-key\", // in-use\n STRIPE_PRICE_WEBHOOK_SECRET = \"Stripe-price-webhook-secret-key\", // in-use\n EMAIL_SERVICE_URL = \"Email-Service-Url\", // in-use,\n STRIPE_WEBHOOK_CUSTOMER_CREATED_SECRET_KEY = \"Stripe-Webhook-Customer-Created-Secret-Key\",// in-use\n DB_CONNECTING_STRING_BILLING = \"DB-Connecting-String-Billing\"\n}"],"mappings":"AAAA;AACA,WAAYA,mBAAmB,0BAAnBA,mBAAmB;EAC7B;EADUA,mBAAmB;EAAnBA,mBAAmB;EAG4C;EAH/DA,mBAAmB;EAIwC;EAJ3DA,mBAAmB;EAKoC;EALvDA,mBAAmB;EAMY;EAN/BA,mBAAmB;EAO6D;EAPhFA,mBAAmB;EAAA,OAAnBA,mBAAmB;AAAA","ignoreList":[]}
|
|
@@ -17,8 +17,8 @@ export class Initializers {
|
|
|
17
17
|
class MongoConnectionSingleton {
|
|
18
18
|
static async getInstance(context, secretKey) {
|
|
19
19
|
if (!this.instances.has(secretKey)) {
|
|
20
|
-
const vaultName = process.env.
|
|
21
|
-
if (!vaultName) throw new Error("Missing
|
|
20
|
+
const vaultName = process.env.AZURE_KEY_VAULT_NAME;
|
|
21
|
+
if (!vaultName) throw new Error("Missing AZURE_KEY_VAULT_NAME env var");
|
|
22
22
|
context.info(`[Mongo] fetching secret "${secretKey}" from vault "${vaultName}"`);
|
|
23
23
|
const uri = await getAzureVaultSecretByKey(context, vaultName, secretKey);
|
|
24
24
|
if (!uri) throw new Error(`No value for secret "${secretKey}"`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initializers.js","names":["mongoose","getAzureVaultSecretByKey","Initializers","constructor","context","dbSecret","db","MongoConnectionSingleton","getInstance","then","conn","info","catch","err","error","secretKey","instances","has","vaultName","process","env","
|
|
1
|
+
{"version":3,"file":"initializers.js","names":["mongoose","getAzureVaultSecretByKey","Initializers","constructor","context","dbSecret","db","MongoConnectionSingleton","getInstance","then","conn","info","catch","err","error","secretKey","instances","has","vaultName","process","env","AZURE_KEY_VAULT_NAME","Error","uri","createConnection","asPromise","set","get","Map"],"sources":["../../../src/utils/initializers.ts"],"sourcesContent":["// packages/libs/src/db-initializers.ts\n\nimport mongoose, { Connection } from \"mongoose\";\nimport { InvocationContext } from \"@azure/functions\";\nimport { getAzureVaultSecretByKey } from \"./secrets\";\nimport { AzureSecretKeysEnum } from \"../enums\";\n\nexport abstract class Initializers {\n protected db!: Connection;\n\n constructor(\n context: InvocationContext,\n dbSecret: AzureSecretKeysEnum\n ) {\n MongoConnectionSingleton\n .getInstance(context, dbSecret)\n .then(conn => {\n this.db = conn;\n context.info(\"✅ MongoDB initialized\");\n })\n .catch(err => {\n context.error(\"❌ Failed to initialize MongoDB:\", err);\n throw err;\n });\n }\n}\n\nclass MongoConnectionSingleton {\n private static instances = new Map<AzureSecretKeysEnum, Connection>();\n\n static async getInstance(\n context: InvocationContext,\n secretKey: AzureSecretKeysEnum\n ): Promise<Connection> {\n if (!this.instances.has(secretKey)) {\n const vaultName = process.env.AZURE_KEY_VAULT_NAME!;\n if (!vaultName) throw new Error(\"Missing AZURE_KEY_VAULT_NAME env var\");\n\n context.info(`[Mongo] fetching secret \"${secretKey}\" from vault \"${vaultName}\"`);\n const uri = await getAzureVaultSecretByKey(context, vaultName, secretKey);\n if (!uri) throw new Error(`No value for secret \"${secretKey}\"`);\n\n context.info(\"[Mongo] connecting to MongoDB…\");\n const conn = await mongoose\n .createConnection(uri, {})\n .asPromise();\n context.info(\"[Mongo] connected to MongoDB\");\n\n this.instances.set(secretKey, conn);\n }\n return this.instances.get(secretKey)!;\n }\n}\n\n\n\n\n\n// import mongoose, { Mongoose } from \"mongoose\";\n// import { InvocationContext } from \"@azure/functions\";\n// import { getAzureVaultSecretByKey } from \"./secrets\";\n// import { AzureSecretKeysEnum } from \"../enums\";\n\n// /**\n// * Base class for any service that needs a MongoDB connection.\n// * Pass in the name of the Key Vault secret that holds your MongoDB URI.\n// */\n// export abstract class Initializers {\n// mongoose!: Mongoose;\n\n// constructor(\n// context: InvocationContext,\n// dbConnectionSecretKey: AzureSecretKeysEnum\n// ) {\n// MongoConnectionSingleton\n// .getInstance(context, dbConnectionSecretKey)\n// .then(singleton => {\n// this.mongoose = singleton.mongoose;\n// })\n// .catch(err => {\n// context.error(\"Failed to initialize MongoDB:\", err);\n// throw err;\n// });\n// }\n// }\n\n// /**\n// * A singleton manager that caches one mongoose connection per secret key.\n// */\n// class MongoConnectionSingleton {\n// private static instances: Map<AzureSecretKeysEnum, MongoConnectionSingleton> = new Map();\n// public mongoose!: Mongoose;\n\n// private constructor() { }\n\n// public static async getInstance(\n// context: InvocationContext,\n// secretKey: AzureSecretKeysEnum\n// ): Promise<MongoConnectionSingleton> {\n// if (!this.instances.has(secretKey)) {\n// const inst = new MongoConnectionSingleton();\n// await inst.connect(context, secretKey);\n// this.instances.set(secretKey, inst);\n// }\n// return this.instances.get(secretKey)!;\n// }\n\n// private async connect(\n// context: InvocationContext,\n// secretKey: AzureSecretKeysEnum\n// ): Promise<void> {\n// // 1) Fetch vault name and secret\n// const vaultName = process.env.AZURE_KEY_VAULT_NAME!;\n// if (!vaultName) throw new Error(\"Missing KEY_VAULT_NAME env var\");\n\n// context.info(`[Mongo] Fetching connection string from vault \"${vaultName}\", secret \"${secretKey}\"`);\n// const connString = await getAzureVaultSecretByKey(\n// context,\n// vaultName,\n// secretKey\n// );\n// if (!connString) {\n// throw new Error(`No value found for secret \"${secretKey}\"`);\n// }\n\n// // 2) Connect via mongoose\n// context.info(`[Mongo] Connecting to MongoDB…`);\n// this.mongoose = await mongoose.connect(connString);\n// context.info(`[Mongo] Connected using secret \"${secretKey}\"`);\n// }\n// }\n"],"mappings":"AAAA;;AAEA,OAAOA,QAAQ,MAAsB,UAAU;AAE/C,SAASC,wBAAwB,QAAQ,WAAW;AAGpD,OAAO,MAAeC,YAAY,CAAC;EAGjCC,WAAWA,CACTC,OAA0B,EAC1BC,QAA6B,EAC7B;IAAA,KALQC,EAAE;IAMVC,wBAAwB,CACrBC,WAAW,CAACJ,OAAO,EAAEC,QAAQ,CAAC,CAC9BI,IAAI,CAACC,IAAI,IAAI;MACZ,IAAI,CAACJ,EAAE,GAAGI,IAAI;MACdN,OAAO,CAACO,IAAI,CAAC,uBAAuB,CAAC;IACvC,CAAC,CAAC,CACDC,KAAK,CAACC,GAAG,IAAI;MACZT,OAAO,CAACU,KAAK,CAAC,iCAAiC,EAAED,GAAG,CAAC;MACrD,MAAMA,GAAG;IACX,CAAC,CAAC;EACN;AACF;AAEA,MAAMN,wBAAwB,CAAC;EAG7B,aAAaC,WAAWA,CACtBJ,OAA0B,EAC1BW,SAA8B,EACT;IACrB,IAAI,CAAC,IAAI,CAACC,SAAS,CAACC,GAAG,CAACF,SAAS,CAAC,EAAE;MAClC,MAAMG,SAAS,GAAGC,OAAO,CAACC,GAAG,CAACC,oBAAqB;MACnD,IAAI,CAACH,SAAS,EAAE,MAAM,IAAII,KAAK,CAAC,sCAAsC,CAAC;MAEvElB,OAAO,CAACO,IAAI,CAAC,4BAA4BI,SAAS,iBAAiBG,SAAS,GAAG,CAAC;MAChF,MAAMK,GAAG,GAAG,MAAMtB,wBAAwB,CAACG,OAAO,EAAEc,SAAS,EAAEH,SAAS,CAAC;MACzE,IAAI,CAACQ,GAAG,EAAE,MAAM,IAAID,KAAK,CAAC,wBAAwBP,SAAS,GAAG,CAAC;MAE/DX,OAAO,CAACO,IAAI,CAAC,gCAAgC,CAAC;MAC9C,MAAMD,IAAI,GAAG,MAAMV,QAAQ,CACxBwB,gBAAgB,CAACD,GAAG,EAAE,CAAC,CAAC,CAAC,CACzBE,SAAS,CAAC,CAAC;MACdrB,OAAO,CAACO,IAAI,CAAC,8BAA8B,CAAC;MAE5C,IAAI,CAACK,SAAS,CAACU,GAAG,CAACX,SAAS,EAAEL,IAAI,CAAC;IACrC;IACA,OAAO,IAAI,CAACM,SAAS,CAACW,GAAG,CAACZ,SAAS,CAAC;EACtC;AACF;;AAMA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AAvGMR,wBAAwB,CACbS,SAAS,GAAG,IAAIY,GAAG,CAAkC,CAAC","ignoreList":[]}
|
|
@@ -25,7 +25,8 @@ export async function getAzureVaultSecretByKey(context, azureVaultName, key) {
|
|
|
25
25
|
case AzureSecretKeysEnum.STRIPE_PRODUCT_WEBHOOK_SECRET:
|
|
26
26
|
case AzureSecretKeysEnum.STRIPE_PRICE_WEBHOOK_SECRET:
|
|
27
27
|
case AzureSecretKeysEnum.EMAIL_SERVICE_URL:
|
|
28
|
-
case AzureSecretKeysEnum.
|
|
28
|
+
case AzureSecretKeysEnum.STRIPE_WEBHOOK_CUSTOMER_CREATED_SECRET_KEY:
|
|
29
|
+
case AzureSecretKeysEnum.DB_CONNECTING_STRING_BILLING:
|
|
29
30
|
const secret = await client.getSecret(key);
|
|
30
31
|
return secret.value || "";
|
|
31
32
|
default:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secrets.js","names":["DefaultAzureCredential","SecretClient","AzureSecretKeysEnum","getAzureVaultSecretByKey","context","azureVaultName","key","vaultName","vaultUrl","credential","client","STRIPE_SECRET_KEY","STRIPE_PAYMENT_WEBHOOK_SECRET_KEY","STRIPE_PRODUCT_WEBHOOK_SECRET","STRIPE_PRICE_WEBHOOK_SECRET","EMAIL_SERVICE_URL","
|
|
1
|
+
{"version":3,"file":"secrets.js","names":["DefaultAzureCredential","SecretClient","AzureSecretKeysEnum","getAzureVaultSecretByKey","context","azureVaultName","key","vaultName","vaultUrl","credential","client","STRIPE_SECRET_KEY","STRIPE_PAYMENT_WEBHOOK_SECRET_KEY","STRIPE_PRODUCT_WEBHOOK_SECRET","STRIPE_PRICE_WEBHOOK_SECRET","EMAIL_SERVICE_URL","STRIPE_WEBHOOK_CUSTOMER_CREATED_SECRET_KEY","DB_CONNECTING_STRING_BILLING","secret","getSecret","value","Error","err","error"],"sources":["../../../src/utils/secrets.ts"],"sourcesContent":["import { DefaultAzureCredential } from \"@azure/identity\";\nimport { SecretClient } from \"@azure/keyvault-secrets\";\nimport { InvocationContext } from \"@azure/functions\";\nimport { AzureSecretKeysEnum } from \"../enums\";\n\n/**\n * Fetches a secret value from Azure Key Vault by key.\n * @param key - The key name from the AzureSecretKeysEnum enum.\n * @returns The secret value.\n * @throws Error if the key is invalid or if the secret fetch fails.\n*/\nexport async function getAzureVaultSecretByKey(\n context: InvocationContext,\n azureVaultName: string,\n key: AzureSecretKeysEnum\n): Promise<string> {\n try {\n \n // Azure Key Vault URL\n const vaultName = azureVaultName || \"\";\n const vaultUrl = `https://${vaultName}.vault.azure.net`;\n\n // Initialize SecretClient\n const credential = new DefaultAzureCredential();\n const client = new SecretClient(vaultUrl, credential);\n \n // Validate the key using a switch case\n switch (key) {\n \n case AzureSecretKeysEnum.STRIPE_SECRET_KEY:\n case AzureSecretKeysEnum.STRIPE_PAYMENT_WEBHOOK_SECRET_KEY:\n case AzureSecretKeysEnum.STRIPE_PRODUCT_WEBHOOK_SECRET:\n case AzureSecretKeysEnum.STRIPE_PRICE_WEBHOOK_SECRET:\n case AzureSecretKeysEnum.EMAIL_SERVICE_URL:\n case AzureSecretKeysEnum.STRIPE_WEBHOOK_CUSTOMER_CREATED_SECRET_KEY:\n case AzureSecretKeysEnum.DB_CONNECTING_STRING_BILLING:\n const secret = await client.getSecret(key);\n return secret.value || \"\";\n default:\n throw new Error(`Invalid key name: ${key}`);\n }\n } catch (err) {\n context.error(`Error fetching secret for key ${key}:`, err);\n throw new Error(`Failed to fetch secret for key ${key}`);\n }\n}\n"],"mappings":"AAAA,SAASA,sBAAsB,QAAQ,iBAAiB;AACxD,SAASC,YAAY,QAAQ,yBAAyB;AAEtD,SAASC,mBAAmB,QAAQ,UAAU;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeC,wBAAwBA,CAC5CC,OAA0B,EAC1BC,cAAsB,EACtBC,GAAwB,EACP;EACjB,IAAI;IAEF;IACA,MAAMC,SAAS,GAAGF,cAAc,IAAI,EAAE;IACtC,MAAMG,QAAQ,GAAG,WAAWD,SAAS,kBAAkB;;IAEvD;IACA,MAAME,UAAU,GAAG,IAAIT,sBAAsB,CAAC,CAAC;IAC/C,MAAMU,MAAM,GAAG,IAAIT,YAAY,CAACO,QAAQ,EAAEC,UAAU,CAAC;;IAErD;IACA,QAAQH,GAAG;MAET,KAAKJ,mBAAmB,CAACS,iBAAiB;MAC1C,KAAKT,mBAAmB,CAACU,iCAAiC;MAC1D,KAAKV,mBAAmB,CAACW,6BAA6B;MACtD,KAAKX,mBAAmB,CAACY,2BAA2B;MACpD,KAAKZ,mBAAmB,CAACa,iBAAiB;MAC1C,KAAKb,mBAAmB,CAACc,0CAA0C;MACnE,KAAKd,mBAAmB,CAACe,4BAA4B;QACnD,MAAMC,MAAM,GAAG,MAAMR,MAAM,CAACS,SAAS,CAACb,GAAG,CAAC;QAC1C,OAAOY,MAAM,CAACE,KAAK,IAAI,EAAE;MAC3B;QACE,MAAM,IAAIC,KAAK,CAAC,qBAAqBf,GAAG,EAAE,CAAC;IAC/C;EACF,CAAC,CAAC,OAAOgB,GAAG,EAAE;IACZlB,OAAO,CAACmB,KAAK,CAAC,iCAAiCjB,GAAG,GAAG,EAAEgB,GAAG,CAAC;IAC3D,MAAM,IAAID,KAAK,CAAC,kCAAkCf,GAAG,EAAE,CAAC;EAC1D;AACF","ignoreList":[]}
|
package/build/package.json
CHANGED
|
@@ -4,6 +4,6 @@ export declare enum AzureSecretKeysEnum {
|
|
|
4
4
|
STRIPE_PRODUCT_WEBHOOK_SECRET = "Stripe-product-webhook-secret-key",// in-use
|
|
5
5
|
STRIPE_PRICE_WEBHOOK_SECRET = "Stripe-price-webhook-secret-key",// in-use
|
|
6
6
|
EMAIL_SERVICE_URL = "Email-Service-Url",// in-use,
|
|
7
|
-
|
|
7
|
+
STRIPE_WEBHOOK_CUSTOMER_CREATED_SECRET_KEY = "Stripe-Webhook-Customer-Created-Secret-Key",// in-use
|
|
8
8
|
DB_CONNECTING_STRING_BILLING = "DB-Connecting-String-Billing"
|
|
9
9
|
}
|
|
@@ -10,7 +10,7 @@ var AzureSecretKeysEnum;
|
|
|
10
10
|
AzureSecretKeysEnum["STRIPE_PRODUCT_WEBHOOK_SECRET"] = "Stripe-product-webhook-secret-key";
|
|
11
11
|
AzureSecretKeysEnum["STRIPE_PRICE_WEBHOOK_SECRET"] = "Stripe-price-webhook-secret-key";
|
|
12
12
|
AzureSecretKeysEnum["EMAIL_SERVICE_URL"] = "Email-Service-Url";
|
|
13
|
-
AzureSecretKeysEnum["
|
|
13
|
+
AzureSecretKeysEnum["STRIPE_WEBHOOK_CUSTOMER_CREATED_SECRET_KEY"] = "Stripe-Webhook-Customer-Created-Secret-Key";
|
|
14
14
|
AzureSecretKeysEnum["DB_CONNECTING_STRING_BILLING"] = "DB-Connecting-String-Billing";
|
|
15
15
|
})(AzureSecretKeysEnum || (exports.AzureSecretKeysEnum = AzureSecretKeysEnum = {}));
|
|
16
16
|
//# sourceMappingURL=secretKeys.enum.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secretKeys.enum.js","sourceRoot":"","sources":["../../../src/enums/secretKeys.enum.ts"],"names":[],"mappings":";;;AAAA,uBAAuB;AACvB,IAAY,mBASX;AATD,WAAY,mBAAmB;IAC7B,qDAAqD;IACrD,8DAAuC,CAAA;IACvC,8FAAuE,CAAA;IACvE,0FAAmE,CAAA;IACnE,sFAA+D,CAAA;IAC/D,8DAAuC,CAAA;IACvC,
|
|
1
|
+
{"version":3,"file":"secretKeys.enum.js","sourceRoot":"","sources":["../../../src/enums/secretKeys.enum.ts"],"names":[],"mappings":";;;AAAA,uBAAuB;AACvB,IAAY,mBASX;AATD,WAAY,mBAAmB;IAC7B,qDAAqD;IACrD,8DAAuC,CAAA;IACvC,8FAAuE,CAAA;IACvE,0FAAmE,CAAA;IACnE,sFAA+D,CAAA;IAC/D,8DAAuC,CAAA;IACvC,gHAAyF,CAAA;IACzF,oFAA6D,CAAA;AAC/D,CAAC,EATW,mBAAmB,mCAAnB,mBAAmB,QAS9B"}
|
|
@@ -24,9 +24,9 @@ class MongoConnectionSingleton {
|
|
|
24
24
|
static getInstance(context, secretKey) {
|
|
25
25
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
26
26
|
if (!this.instances.has(secretKey)) {
|
|
27
|
-
const vaultName = process.env.
|
|
27
|
+
const vaultName = process.env.AZURE_KEY_VAULT_NAME;
|
|
28
28
|
if (!vaultName)
|
|
29
|
-
throw new Error("Missing
|
|
29
|
+
throw new Error("Missing AZURE_KEY_VAULT_NAME env var");
|
|
30
30
|
context.info(`[Mongo] fetching secret "${secretKey}" from vault "${vaultName}"`);
|
|
31
31
|
const uri = yield (0, secrets_1.getAzureVaultSecretByKey)(context, vaultName, secretKey);
|
|
32
32
|
if (!uri)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initializers.js","sourceRoot":"","sources":["../../../src/utils/initializers.ts"],"names":[],"mappings":";AAAA,uCAAuC;;;;AAEvC,gEAAgD;AAEhD,uCAAqD;AAGrD,MAAsB,YAAY;IAGhC,YACE,OAA0B,EAC1B,QAA6B;QAE7B,wBAAwB;aACrB,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC;aAC9B,IAAI,CAAC,IAAI,CAAC,EAAE;YACX,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACxC,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,CAAC,EAAE;YACX,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;YACtD,MAAM,GAAG,CAAC;QACZ,CAAC,CAAC,CAAC;IACP,CAAC;CACF;AAlBD,oCAkBC;AAED,MAAM,wBAAwB;IAG5B,MAAM,CAAO,WAAW,CACtB,OAA0B,EAC1B,SAA8B;;YAE9B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBACnC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"initializers.js","sourceRoot":"","sources":["../../../src/utils/initializers.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,7 +27,8 @@ function getAzureVaultSecretByKey(context, azureVaultName, key) {
|
|
|
27
27
|
case enums_1.AzureSecretKeysEnum.STRIPE_PRODUCT_WEBHOOK_SECRET:
|
|
28
28
|
case enums_1.AzureSecretKeysEnum.STRIPE_PRICE_WEBHOOK_SECRET:
|
|
29
29
|
case enums_1.AzureSecretKeysEnum.EMAIL_SERVICE_URL:
|
|
30
|
-
case enums_1.AzureSecretKeysEnum.
|
|
30
|
+
case enums_1.AzureSecretKeysEnum.STRIPE_WEBHOOK_CUSTOMER_CREATED_SECRET_KEY:
|
|
31
|
+
case enums_1.AzureSecretKeysEnum.DB_CONNECTING_STRING_BILLING:
|
|
31
32
|
const secret = yield client.getSecret(key);
|
|
32
33
|
return secret.value || "";
|
|
33
34
|
default:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../../src/utils/secrets.ts"],"names":[],"mappings":";;AAWA,
|
|
1
|
+
{"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../../src/utils/secrets.ts"],"names":[],"mappings":";;AAWA,4DAkCC;;AA7CD,8CAAyD;AACzD,8DAAuD;AAEvD,oCAA+C;AAE/C;;;;;EAKE;AACF,SAAsB,wBAAwB,CAC5C,OAA0B,EAC1B,cAAsB,EACtB,GAAwB;;QAExB,IAAI,CAAC;YAEH,sBAAsB;YACtB,MAAM,SAAS,GAAG,cAAc,IAAI,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,WAAW,SAAS,kBAAkB,CAAC;YAExD,0BAA0B;YAC1B,MAAM,UAAU,GAAG,IAAI,iCAAsB,EAAE,CAAC;YAChD,MAAM,MAAM,GAAG,IAAI,+BAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAEtD,uCAAuC;YACvC,QAAQ,GAAG,EAAE,CAAC;gBAEZ,KAAK,2BAAmB,CAAC,iBAAiB,CAAC;gBAC3C,KAAK,2BAAmB,CAAC,iCAAiC,CAAC;gBAC3D,KAAK,2BAAmB,CAAC,6BAA6B,CAAC;gBACvD,KAAK,2BAAmB,CAAC,2BAA2B,CAAC;gBACrD,KAAK,2BAAmB,CAAC,iBAAiB,CAAC;gBAC3C,KAAK,2BAAmB,CAAC,0CAA0C,CAAC;gBACpE,KAAK,2BAAmB,CAAC,4BAA4B;oBACnD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oBAC3C,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC5B;oBACE,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,iCAAiC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;YAC5D,MAAM,IAAI,KAAK,CAAC,kCAAkC,GAAG,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;CAAA"}
|
package/package.json
CHANGED
|
@@ -6,6 +6,6 @@ export enum AzureSecretKeysEnum {
|
|
|
6
6
|
STRIPE_PRODUCT_WEBHOOK_SECRET = "Stripe-product-webhook-secret-key", // in-use
|
|
7
7
|
STRIPE_PRICE_WEBHOOK_SECRET = "Stripe-price-webhook-secret-key", // in-use
|
|
8
8
|
EMAIL_SERVICE_URL = "Email-Service-Url", // in-use,
|
|
9
|
-
|
|
9
|
+
STRIPE_WEBHOOK_CUSTOMER_CREATED_SECRET_KEY = "Stripe-Webhook-Customer-Created-Secret-Key",// in-use
|
|
10
10
|
DB_CONNECTING_STRING_BILLING = "DB-Connecting-String-Billing"
|
|
11
11
|
}
|
|
@@ -33,8 +33,8 @@ class MongoConnectionSingleton {
|
|
|
33
33
|
secretKey: AzureSecretKeysEnum
|
|
34
34
|
): Promise<Connection> {
|
|
35
35
|
if (!this.instances.has(secretKey)) {
|
|
36
|
-
const vaultName = process.env.
|
|
37
|
-
if (!vaultName) throw new Error("Missing
|
|
36
|
+
const vaultName = process.env.AZURE_KEY_VAULT_NAME!;
|
|
37
|
+
if (!vaultName) throw new Error("Missing AZURE_KEY_VAULT_NAME env var");
|
|
38
38
|
|
|
39
39
|
context.info(`[Mongo] fetching secret "${secretKey}" from vault "${vaultName}"`);
|
|
40
40
|
const uri = await getAzureVaultSecretByKey(context, vaultName, secretKey);
|
package/src/utils/secrets.ts
CHANGED
|
@@ -32,7 +32,8 @@ export async function getAzureVaultSecretByKey(
|
|
|
32
32
|
case AzureSecretKeysEnum.STRIPE_PRODUCT_WEBHOOK_SECRET:
|
|
33
33
|
case AzureSecretKeysEnum.STRIPE_PRICE_WEBHOOK_SECRET:
|
|
34
34
|
case AzureSecretKeysEnum.EMAIL_SERVICE_URL:
|
|
35
|
-
case AzureSecretKeysEnum.
|
|
35
|
+
case AzureSecretKeysEnum.STRIPE_WEBHOOK_CUSTOMER_CREATED_SECRET_KEY:
|
|
36
|
+
case AzureSecretKeysEnum.DB_CONNECTING_STRING_BILLING:
|
|
36
37
|
const secret = await client.getSecret(key);
|
|
37
38
|
return secret.value || "";
|
|
38
39
|
default:
|