@lyxa.ai/core 1.0.1 → 1.0.3
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/dist/index.js +11 -2
- package/dist/index.js.map +1 -1
- package/dist/libraries/dispatcher/index.d.ts +1 -1
- package/dist/libraries/dispatcher/index.js +7 -2
- package/dist/libraries/dispatcher/index.js.map +1 -1
- package/dist/libraries/mongo/index.d.ts +1 -1
- package/dist/libraries/mongo/index.js +2 -2
- package/dist/libraries/mongo/index.js.map +1 -1
- package/dist/libraries/secrets/index.js +7 -2
- package/dist/libraries/secrets/index.js.map +1 -1
- package/package.json +3 -2
package/dist/index.js
CHANGED
|
@@ -15,6 +15,9 @@ const EnvironmentConfigurationType_1 = require("./libraries/configuration/types/
|
|
|
15
15
|
const logger_1 = require("./libraries/logger");
|
|
16
16
|
const redis_1 = require("./libraries/redis");
|
|
17
17
|
const mongo_1 = require("./libraries/mongo");
|
|
18
|
+
const secrets_1 = require("./libraries/secrets");
|
|
19
|
+
const dispatcher_1 = require("./libraries/dispatcher");
|
|
20
|
+
const twilio_1 = require("./libraries/twilio");
|
|
18
21
|
var EnvironmentConfigurationType_2 = require("./libraries/configuration/types/EnvironmentConfigurationType");
|
|
19
22
|
Object.defineProperty(exports, "EnvironmentConfigurationType", { enumerable: true, get: function () { return EnvironmentConfigurationType_2.EnvironmentConfigurationType; } });
|
|
20
23
|
var mongo_2 = require("./libraries/mongo");
|
|
@@ -43,13 +46,19 @@ async function registerLibraries(options) {
|
|
|
43
46
|
typedi_1.Container.set(configuration_1.ConfigurationService, configurationInstance);
|
|
44
47
|
const redisInstance = new redis_1.RedisService(configurationInstance.options.redisURL);
|
|
45
48
|
typedi_1.Container.set(redis_1.RedisService, redisInstance);
|
|
49
|
+
const secretInstance = new secrets_1.SecretManagerService(configurationInstance, redisInstance);
|
|
50
|
+
typedi_1.Container.set(secrets_1.SecretManagerService, secretInstance);
|
|
46
51
|
const mongoUrl = await getLibraries().getSecretsService()
|
|
47
52
|
.getKey("MONGO_URL");
|
|
48
|
-
await mongoose_1.default.connect(mongoUrl, { dbName: `lyxa-${options.tenet}` });
|
|
53
|
+
await mongoose_1.default.connect(mongoUrl, { dbName: `lyxa-${options.environment}-${options.tenet}` });
|
|
49
54
|
mongoose_1.default.set('debug', getLibraries().getConfigurationService().options.environment == EnvironmentConfigurationType_1.EnvironmentConfigurationType.DEV);
|
|
50
|
-
await (0, mongo_1.initGlobalConnection)(mongoUrl);
|
|
55
|
+
await (0, mongo_1.initGlobalConnection)(mongoUrl, options.environment);
|
|
51
56
|
const loggerInstance = new logger_1.LyxaLogger(options.instanceType, mongoUrl);
|
|
52
57
|
typedi_1.Container.set(logger_1.LyxaLogger, loggerInstance);
|
|
58
|
+
const microserviceDispatcherInstance = new dispatcher_1.MicroServiceDispatcher(secretInstance);
|
|
59
|
+
typedi_1.Container.set(dispatcher_1.MicroServiceDispatcher, microserviceDispatcherInstance);
|
|
60
|
+
const twilioServiceInstance = new twilio_1.TwilioService();
|
|
61
|
+
typedi_1.Container.set(twilio_1.TwilioService, twilioServiceInstance);
|
|
53
62
|
}
|
|
54
63
|
function getLibraries() {
|
|
55
64
|
return typedi_1.Container.get(libraries_1.LibraryManager);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"/","sources":["index.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"/","sources":["index.ts"],"names":[],"mappings":"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","sourcesContent":["import {LibraryManager} from \"./libraries\";\r\nimport {Container} from \"typedi\";\r\nimport mongoose from \"mongoose\";\r\nimport {ConfigurationOptions, ConfigurationService} from \"./libraries/configuration\";\r\nimport {EnvironmentConfigurationType} from \"./libraries/configuration/types/EnvironmentConfigurationType\";\r\nimport {LyxaLogger} from \"./libraries/logger\";\r\nimport {RedisService} from \"./libraries/redis\";\r\nimport {initGlobalConnection} from \"./libraries/mongo\";\r\nimport {SecretManagerService} from \"./libraries/secrets\";\r\nimport {MicroServiceDispatcher} from \"./libraries/dispatcher\";\r\nimport {TwilioService} from \"./libraries/twilio\";\r\n\r\nexport { ConfigurationOptions } from \"./libraries/configuration\";\r\nexport { EnvironmentConfigurationType } from \"./libraries/configuration/types/EnvironmentConfigurationType\";\r\nexport {\r\n initGlobalConnection,\r\n createGlobalModel,\r\n createGlobalDiscriminatorModel\r\n} from './libraries/mongo';\r\n\r\nexport async function bootstrapCore(options?: ConfigurationOptions) {\r\n try {\r\n await registerLibraries(options);\r\n\r\n const gracefulShutdown = async () => {\r\n getLibraries().getLogger().logger.info('Received shutdown signal, shutting down gracefully...');\r\n };\r\n\r\n process.on('SIGTERM', gracefulShutdown);\r\n process.on('SIGINT', gracefulShutdown);\r\n process.on('uncaughtException', (err) => {\r\n getLibraries().getLogger().logger.error('Uncaught exception, shutting down...', err);\r\n gracefulShutdown();\r\n });\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n}\r\n\r\nexport async function registerLibraries(options?: ConfigurationOptions) {\r\n // Setup configuration.\r\n const configurationInstance = new ConfigurationService(options);\r\n Container.set(ConfigurationService, configurationInstance);\r\n\r\n // Setup redis.\r\n const redisInstance = new RedisService(configurationInstance.options.redisURL!);\r\n Container.set(RedisService, redisInstance);\r\n\r\n const secretInstance = new SecretManagerService(configurationInstance, redisInstance);\r\n Container.set(SecretManagerService, secretInstance);\r\n\r\n const mongoUrl = await getLibraries().getSecretsService()\r\n .getKey(\"MONGO_URL\");\r\n\r\n await mongoose.connect(mongoUrl!, { dbName: `lyxa-${options!.environment}-${options!.tenet}` });\r\n mongoose.set('debug', getLibraries().getConfigurationService().options.environment == EnvironmentConfigurationType.DEV);\r\n\r\n await initGlobalConnection(mongoUrl!, options!.environment);\r\n\r\n const loggerInstance = new LyxaLogger(options!.instanceType!, mongoUrl!);\r\n Container.set(LyxaLogger, loggerInstance);\r\n\r\n const microserviceDispatcherInstance = new MicroServiceDispatcher(secretInstance);\r\n Container.set(MicroServiceDispatcher, microserviceDispatcherInstance);\r\n\r\n const twilioServiceInstance = new TwilioService();\r\n Container.set(TwilioService, twilioServiceInstance);\r\n\r\n /*\r\n await initEventBus(\"amqp://localhost\");\r\n const allSubscriptions = SubscriptionRegistry.getAllSubscriptions();\r\n\r\n const instantiatedServices = new Map<Function, any>();\r\n\r\n for (const { eventId, targetConstructor, methodName } of allSubscriptions) {\r\n let instance = instantiatedServices.get(targetConstructor);\r\n if (!instance) {\r\n instance = Container.get(targetConstructor as any);\r\n instantiatedServices.set(targetConstructor, instance);\r\n }\r\n\r\n await subscribeToEvent(eventId, async (payload) => {\r\n return instance[methodName](payload);\r\n });\r\n }\r\n */\r\n}\r\n\r\nexport function getLibraries(): LibraryManager {\r\n return Container.get(LibraryManager)\r\n}\r\n"]}
|
|
@@ -2,6 +2,6 @@ import { AnyRouter } from "@trpc/server";
|
|
|
2
2
|
import { SecretManagerService } from "../secrets";
|
|
3
3
|
export declare class MicroServiceDispatcher {
|
|
4
4
|
private _secretService;
|
|
5
|
-
|
|
5
|
+
constructor(secretService: SecretManagerService);
|
|
6
6
|
getMicroService<T extends AnyRouter>(serviceName: string): Promise<import("@trpc/client").CreateTRPCProxyClient<T>>;
|
|
7
7
|
}
|
|
@@ -5,13 +5,17 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
7
|
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
8
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
12
|
exports.MicroServiceDispatcher = void 0;
|
|
10
13
|
const typedi_1 = require("typedi");
|
|
11
14
|
const client_1 = require("@trpc/client");
|
|
15
|
+
const secrets_1 = require("../secrets");
|
|
12
16
|
let MicroServiceDispatcher = class MicroServiceDispatcher {
|
|
13
17
|
_secretService;
|
|
14
|
-
|
|
18
|
+
constructor(secretService) {
|
|
15
19
|
this._secretService = secretService;
|
|
16
20
|
}
|
|
17
21
|
async getMicroService(serviceName) {
|
|
@@ -30,6 +34,7 @@ let MicroServiceDispatcher = class MicroServiceDispatcher {
|
|
|
30
34
|
};
|
|
31
35
|
exports.MicroServiceDispatcher = MicroServiceDispatcher;
|
|
32
36
|
exports.MicroServiceDispatcher = MicroServiceDispatcher = __decorate([
|
|
33
|
-
(0, typedi_1.Service)()
|
|
37
|
+
(0, typedi_1.Service)(),
|
|
38
|
+
__metadata("design:paramtypes", [secrets_1.SecretManagerService])
|
|
34
39
|
], MicroServiceDispatcher);
|
|
35
40
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/dispatcher/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/dispatcher/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mCAA+B;AAC/B,yCAAkE;AAElE,wCAAgD;AAGzC,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IACvB,cAAc,CAAwB;IAE9C,YAAY,aAAmC;QAC3C,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;IACxC,CAAC;IAEM,KAAK,CAAC,eAAe,CAAsB,WAAmB;QACjE,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,2BAA2B,GAAG,WAAW,CAAC,WAAW,EAAE,GAAG,WAAW,CAAC,CAAC;QAE9H,IAAG,CAAC,aAAa,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAChF,CAAC;QAGD,OAAO,IAAA,8BAAqB,EAAI;YAC5B,KAAK,EAAE;gBACH,IAAA,sBAAa,EAAC;oBACV,GAAG,EAAE,aAAa;iBACrB,CAAC;aACL;SACJ,CAAC,CAAC;IACP,CAAC;CACJ,CAAA;AAvBY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,gBAAO,GAAE;qCAIqB,8BAAoB;GAHtC,sBAAsB,CAuBlC","sourcesContent":["import {Service} from \"typedi\";\r\nimport {createTRPCProxyClient, httpBatchLink} from \"@trpc/client\";\r\nimport {AnyRouter} from \"@trpc/server\";\r\nimport {SecretManagerService} from \"../secrets\";\r\n\r\n@Service()\r\nexport class MicroServiceDispatcher {\r\n private _secretService!: SecretManagerService;\r\n\r\n constructor(secretService: SecretManagerService) {\r\n this._secretService = secretService;\r\n }\r\n\r\n public async getMicroService<T extends AnyRouter>(serviceName: string) {\r\n const deploymentURL = await this._secretService.getKey(\"DEPLOYMENTS_MICROSERVICE_\" + serviceName.toUpperCase() + \"_ENDPOINT\");\r\n\r\n if(!deploymentURL) {\r\n throw new Error(\"The request service does not have a configure secret URL\");\r\n }\r\n\r\n // @ts-ignore\r\n return createTRPCProxyClient<T>({\r\n links: [\r\n httpBatchLink({\r\n url: deploymentURL,\r\n }),\r\n ],\r\n });\r\n }\r\n}\r\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Connection } from 'mongoose';
|
|
2
2
|
import { ReturnModelType } from '@typegoose/typegoose';
|
|
3
3
|
import { AnyParamConstructor, IModelOptions } from "@typegoose/typegoose/lib/types";
|
|
4
|
-
export declare function initGlobalConnection(uri: string): Promise<Connection>;
|
|
4
|
+
export declare function initGlobalConnection(uri: string, environment: string): Promise<Connection>;
|
|
5
5
|
export declare function createGlobalModel<T extends AnyParamConstructor<any>>(Class: T): ReturnModelType<T>;
|
|
6
6
|
export declare function createGlobalDiscriminatorModel<Base extends AnyParamConstructor<any>, Sub extends AnyParamConstructor<any>>(baseModel: ReturnModelType<Base>, subClass: Sub, discriminatorName?: string, options?: IModelOptions): ReturnModelType<Sub>;
|
|
@@ -6,10 +6,10 @@ exports.createGlobalDiscriminatorModel = createGlobalDiscriminatorModel;
|
|
|
6
6
|
const mongoose_1 = require("mongoose");
|
|
7
7
|
const typegoose_1 = require("@typegoose/typegoose");
|
|
8
8
|
let globalConnection;
|
|
9
|
-
async function initGlobalConnection(uri) {
|
|
9
|
+
async function initGlobalConnection(uri, environment) {
|
|
10
10
|
if (!globalConnection) {
|
|
11
11
|
globalConnection = (0, mongoose_1.createConnection)(uri, {
|
|
12
|
-
dbName:
|
|
12
|
+
dbName: `lyxa-${environment}-global`,
|
|
13
13
|
});
|
|
14
14
|
}
|
|
15
15
|
return globalConnection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/mongo/index.ts"],"names":[],"mappings":";;AAMA,oDAOC;AAKD,8CASC;AAWD,wEAmBC;AAzDD,uCAAwD;AACxD,oDAAsG;AAGtG,IAAI,gBAAwC,CAAC;AAEtC,KAAK,UAAU,oBAAoB,CAAC,GAAW;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/mongo/index.ts"],"names":[],"mappings":";;AAMA,oDAOC;AAKD,8CASC;AAWD,wEAmBC;AAzDD,uCAAwD;AACxD,oDAAsG;AAGtG,IAAI,gBAAwC,CAAC;AAEtC,KAAK,UAAU,oBAAoB,CAAC,GAAW,EAAE,WAAmB;IACvE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACpB,gBAAgB,GAAG,IAAA,2BAAgB,EAAC,GAAG,EAAE;YACrC,MAAM,EAAE,QAAQ,WAAW,SAAS;SACvC,CAAC,CAAC;IACP,CAAC;IACD,OAAO,gBAAgB,CAAC;AAC5B,CAAC;AAKD,SAAgB,iBAAiB,CAC7B,KAAQ;IAER,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACX,0EAA0E,CAC7E,CAAC;IACN,CAAC;IACD,OAAO,IAAA,4BAAgB,EAAC,KAAK,EAAE,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAC7E,CAAC;AAWD,SAAgB,8BAA8B,CAI1C,SAAgC,EAChC,QAAa,EACb,iBAA0B,EAC1B,OAAuB;IAEvB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACX,0EAA0E,CAC7E,CAAC;IACN,CAAC;IAED,OAAO,IAAA,yCAA6B,EAAC,SAAS,EAAE,QAAQ,EAAE,iBAAiB,EAAE;QACzE,kBAAkB,EAAE,gBAAgB;QACpC,GAAG,OAAO;KACb,CAAC,CAAC;AACP,CAAC","sourcesContent":["import { Connection, createConnection } from 'mongoose';\r\nimport {getDiscriminatorModelForClass, getModelForClass, ReturnModelType} from '@typegoose/typegoose';\r\nimport {AnyParamConstructor, IModelOptions} from \"@typegoose/typegoose/lib/types\";\r\n\r\nlet globalConnection: Connection | undefined;\r\n\r\nexport async function initGlobalConnection(uri: string, environment: string) {\r\n if (!globalConnection) {\r\n globalConnection = createConnection(uri, {\r\n dbName: `lyxa-${environment}-global`,\r\n });\r\n }\r\n return globalConnection;\r\n}\r\n\r\n/**\r\n * Creates a Typegoose model from a class (with a single, global connection).\r\n */\r\nexport function createGlobalModel<T extends AnyParamConstructor<any>>(\r\n Class: T\r\n): ReturnModelType<T> {\r\n if (!globalConnection) {\r\n throw new Error(\r\n 'Global connection not initialized. Call initGlobalConnection(...) first.'\r\n );\r\n }\r\n return getModelForClass(Class, { existingConnection: globalConnection });\r\n}\r\n\r\n/**\r\n * Creates a Typegoose *discriminator* model from a base model,\r\n * using a derived sub-class & optional discriminator value.\r\n *\r\n * @param baseModel The ReturnModelType (model) for the base class\r\n * @param subClass The derived class constructor\r\n * @param discriminatorName A string to label this sub-class (e.g. \"DOG\")\r\n * @param options Additional model options\r\n */\r\nexport function createGlobalDiscriminatorModel<\r\n Base extends AnyParamConstructor<any>,\r\n Sub extends AnyParamConstructor<any>,\r\n>(\r\n baseModel: ReturnModelType<Base>,\r\n subClass: Sub,\r\n discriminatorName?: string,\r\n options?: IModelOptions,\r\n): ReturnModelType<Sub> {\r\n if (!globalConnection) {\r\n throw new Error(\r\n 'Global connection not initialized. Call initGlobalConnection(...) first.',\r\n );\r\n }\r\n\r\n return getDiscriminatorModelForClass(baseModel, subClass, discriminatorName, {\r\n existingConnection: globalConnection,\r\n ...options,\r\n });\r\n}\r\n"]}
|
|
@@ -23,8 +23,12 @@ let SecretManagerService = class SecretManagerService {
|
|
|
23
23
|
this._redisManager = redisManager;
|
|
24
24
|
this._client = new secret_manager_1.SecretManagerServiceClient({
|
|
25
25
|
credentials: {
|
|
26
|
+
client_id: "107840895824406590900",
|
|
27
|
+
private_key_id: "ece1ebdfde57414700f23f1f4014f5e83d4f7644",
|
|
28
|
+
type: "service_account",
|
|
29
|
+
universe_domain: "googleapis.com",
|
|
26
30
|
projectId: "for-poc-325210",
|
|
27
|
-
private_key: "-----BEGIN PRIVATE KEY
|
|
31
|
+
private_key: "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDPTk9M5nCDYJhC\nLuyP+gqBXIHPrXegygco5tB50Y7Q9s/f4hm+xp/usYy5UCYyFVNjZ2mdjWQcr3Ta\nT3GZV9OiHej8ejveY0iyFBi0IlfGNm9blYlOIyQT4i6MoevNul7u4EQL8bid/sp/\nJ/XPNC+Jnk8Ke2G9FdfDYs+1O6Nf37HuPUmMwLAzcyl+k1v9UzInrgNPj+nactY7\nEPCVSM6XcZI3UL86n574iQBvUXsMpUt3csYVOxPap1Vd1TBEo1k85jZepMvaXHoK\nJUwQT7p1F1D0weVKJ1BjwQgmADZWfUKdwRyS8zFPbUGeptlA2XlxyVMasGzCCMi4\n6jzJGC81AgMBAAECggEAXoaLnDn7Fbym0I7K6T+PKLtAqaykPpnAOAM/DjzijR/t\nW12idZ3l8RXeX+VO9UlKE6pkuyVsf7P1aVIOL2ifpG1U/kLSJ65HyINnXEPImCXc\nEvuVdx6I5dQde5ydg9o2TV/PR0756njyZpaW+9sEzhB0ZAgsYeai0oGsyiuebCkm\nqlOnf5DO/kWlNvf8yZ7GMEa0WBYyan4O7YcVF13c7oM19XZfvw+lliU/geOwVNW5\nEfSn91UWIEMB60Q5XKHg11LAvbq8mvcHD+6ujeoPMfoZJrHZj5ucBP5auyRNFCUM\nWE2IILLpgdhDfE5I323xHIyMblMSc1OOkZzjhuNYRQKBgQDuEa/jMqEDu7ZpDo/g\nf+M4Qmmyh1WIjnORwqbf8INi5oN1NoIv6tcJ++COAWcBpyerW9aknLRMX9FXrNH5\nAPyRvHQt2IpRCqjdcEr2b3VwZmcjRVbpsISwqE0RBvXSXOnvbDzZ53bC70anL5OY\n7UYwOotbQXpcEGC57wy8G+VVlwKBgQDe63bcubV1W2+WPbdtzb7tzIS5PPz19U5i\n5PjVQ4E34FH0ZBnk2v1fjtVxR72mrzCg2xz72rWgdsHJ/1QZAfw+4troJV9LI9SG\nYRMeh86NSfNObdkY+LmCSH4eiFe83kFLUUzhnYE6DU/17i6T4V+ofawToasu3wag\nf7LzT2BzEwKBgQDlVD5lktDOQtWtj+yC607bVAZzhrCbUfX8FFEh6ZL3A2zgzXhN\nZmBtaqfew3URf47UICy894MrCyYi2gSOZCfoz2vu+egLt0QBw/lCOQ4dD1gM/u+B\nP5wifI14eIb2dLCZBV/83F5n24zo4gjBSNfS/6Jcbs/KvbAfjCptTkX10wKBgDxb\nwy5WtlRVcqxaf50ilWzr8I/7fH7YceYDG4EbKxTHD0m+BOjbhrlmAlMO2sIUM3WK\nfpmPCZiuLyCTmuC+kd8xK5ap79h3libgh/2/ReUpvdBhm+PQDOLC4CtCPYdtIn7T\nP57jN8dRLXJokIIIBw+nH32dS62AQ9oXWYvZ1UKzAoGBAOWOSphZMnPlLeLN54/4\nwKPI+D6G1JhzqQrUf8Z99J7m3r3ya+0ug5gRGQCoSRfqz9o87+fLCdSdc38L+j4T\nBnuwIcY6n4LF+3yAPIF1rnrIBFRqzPta7epYPXHtUTvWOkEkKzNmsFVCZKF7nQjS\ns/ucyyfUssPsTznYW3gXf3To\n-----END PRIVATE KEY-----\n",
|
|
28
32
|
client_email: "lyxa-core@for-poc-325210.iam.gserviceaccount.com"
|
|
29
33
|
}
|
|
30
34
|
});
|
|
@@ -37,13 +41,14 @@ let SecretManagerService = class SecretManagerService {
|
|
|
37
41
|
return data;
|
|
38
42
|
}
|
|
39
43
|
const [accessResponse] = await this._client.accessSecretVersion({
|
|
40
|
-
name: "projects/
|
|
44
|
+
name: "projects/899369746265/secrets/" + environmentTransformedKey + "/versions/latest",
|
|
41
45
|
});
|
|
42
46
|
const val = accessResponse.payload.data.toString();
|
|
43
47
|
await this.setKey(key, val);
|
|
44
48
|
return val;
|
|
45
49
|
}
|
|
46
50
|
catch (e) {
|
|
51
|
+
console.error(e);
|
|
47
52
|
}
|
|
48
53
|
}
|
|
49
54
|
async setKey(key, value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/secrets/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,iEAAwE;AACxE,mCAA+B;AAC/B,oCAAsC;AACtC,oDAAsD;AAG/C,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IACrB,qBAAqB,CAAwB;IAC7C,aAAa,CAAgB;IAC7B,OAAO,CAA8B;IAE7C,YAAY,oBAA0C,EAAE,YAA0B;QAC9E,IAAI,CAAC,qBAAqB,GAAG,oBAAoB,CAAC;QAClD,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,OAAO,GAAG,IAAI,2CAA0B,CAAC;YAC1C,WAAW,EAAE;gBACT,SAAS,EAAE,gBAAgB;gBAC3B,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"/","sources":["libraries/secrets/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,iEAAwE;AACxE,mCAA+B;AAC/B,oCAAsC;AACtC,oDAAsD;AAG/C,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IACrB,qBAAqB,CAAwB;IAC7C,aAAa,CAAgB;IAC7B,OAAO,CAA8B;IAE7C,YAAY,oBAA0C,EAAE,YAA0B;QAC9E,IAAI,CAAC,qBAAqB,GAAG,oBAAoB,CAAC;QAClD,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,OAAO,GAAG,IAAI,2CAA0B,CAAC;YAC1C,WAAW,EAAE;gBACT,SAAS,EAAE,uBAAuB;gBAClC,cAAc,EAAE,0CAA0C;gBAC1D,IAAI,EAAE,iBAAiB;gBACvB,eAAe,EAAE,gBAAgB;gBACjC,SAAS,EAAE,gBAAgB;gBAC3B,WAAW,EAAE,ssDAAssD;gBACntD,YAAY,EAAE,kDAAkD;aACnE;SACJ,CAAC,CAAA;IACN,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,GAAW;QAC3B,MAAM,yBAAyB,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,WAAW,GAAG,GAAG,GAAG,GAAG,CAAC;QAE7F,IAAI,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAS,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,WAAW,GAAG,OAAO,EAAE,GAAG,CAAC,CAAA;YAEnI,IAAG,IAAI,IAAI,SAAS,EAAE,CAAC;gBACnB,OAAO,IAAI,CAAA;YACf,CAAC;YAED,MAAM,CAAC,cAAc,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC;gBAC5D,IAAI,EAAE,gCAAgC,GAAG,yBAAyB,GAAG,kBAAkB;aAC1F,CAAC,CAAA;YAEF,MAAM,GAAG,GAAG,cAAc,CAAC,OAAQ,CAAC,IAAK,CAAC,QAAQ,EAAE,CAAA;YACpD,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAE5B,OAAO,GAAG,CAAA;QACd,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,GAAW,EAAE,KAAa;QAC1C,MAAM,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAS,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,WAAW,GAAG,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;QAC7H,OAAO,KAAK,CAAA;IAChB,CAAC;CAEJ,CAAA;AAjDY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,gBAAO,GAAE;qCAM4B,oCAAoB,EAAgB,oBAAY;GALzE,oBAAoB,CAiDhC","sourcesContent":["\r\nimport {SecretManagerServiceClient} from \"@google-cloud/secret-manager\";\r\nimport {Service} from \"typedi\";\r\nimport {RedisService} from \"../redis\";\r\nimport {ConfigurationService} from \"../configuration\";\r\n\r\n@Service()\r\nexport class SecretManagerService {\r\n private _configurationService!: ConfigurationService;\r\n private _redisManager!: RedisService;\r\n private _client!: SecretManagerServiceClient;\r\n\r\n constructor(configurationService: ConfigurationService, redisManager: RedisService) {\r\n this._configurationService = configurationService;\r\n this._redisManager = redisManager;\r\n this._client = new SecretManagerServiceClient({\r\n credentials: {\r\n client_id: \"107840895824406590900\",\r\n private_key_id: \"ece1ebdfde57414700f23f1f4014f5e83d4f7644\",\r\n type: \"service_account\",\r\n universe_domain: \"googleapis.com\",\r\n projectId: \"for-poc-325210\",\r\n private_key: \"-----BEGIN PRIVATE KEY-----\\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDPTk9M5nCDYJhC\\nLuyP+gqBXIHPrXegygco5tB50Y7Q9s/f4hm+xp/usYy5UCYyFVNjZ2mdjWQcr3Ta\\nT3GZV9OiHej8ejveY0iyFBi0IlfGNm9blYlOIyQT4i6MoevNul7u4EQL8bid/sp/\\nJ/XPNC+Jnk8Ke2G9FdfDYs+1O6Nf37HuPUmMwLAzcyl+k1v9UzInrgNPj+nactY7\\nEPCVSM6XcZI3UL86n574iQBvUXsMpUt3csYVOxPap1Vd1TBEo1k85jZepMvaXHoK\\nJUwQT7p1F1D0weVKJ1BjwQgmADZWfUKdwRyS8zFPbUGeptlA2XlxyVMasGzCCMi4\\n6jzJGC81AgMBAAECggEAXoaLnDn7Fbym0I7K6T+PKLtAqaykPpnAOAM/DjzijR/t\\nW12idZ3l8RXeX+VO9UlKE6pkuyVsf7P1aVIOL2ifpG1U/kLSJ65HyINnXEPImCXc\\nEvuVdx6I5dQde5ydg9o2TV/PR0756njyZpaW+9sEzhB0ZAgsYeai0oGsyiuebCkm\\nqlOnf5DO/kWlNvf8yZ7GMEa0WBYyan4O7YcVF13c7oM19XZfvw+lliU/geOwVNW5\\nEfSn91UWIEMB60Q5XKHg11LAvbq8mvcHD+6ujeoPMfoZJrHZj5ucBP5auyRNFCUM\\nWE2IILLpgdhDfE5I323xHIyMblMSc1OOkZzjhuNYRQKBgQDuEa/jMqEDu7ZpDo/g\\nf+M4Qmmyh1WIjnORwqbf8INi5oN1NoIv6tcJ++COAWcBpyerW9aknLRMX9FXrNH5\\nAPyRvHQt2IpRCqjdcEr2b3VwZmcjRVbpsISwqE0RBvXSXOnvbDzZ53bC70anL5OY\\n7UYwOotbQXpcEGC57wy8G+VVlwKBgQDe63bcubV1W2+WPbdtzb7tzIS5PPz19U5i\\n5PjVQ4E34FH0ZBnk2v1fjtVxR72mrzCg2xz72rWgdsHJ/1QZAfw+4troJV9LI9SG\\nYRMeh86NSfNObdkY+LmCSH4eiFe83kFLUUzhnYE6DU/17i6T4V+ofawToasu3wag\\nf7LzT2BzEwKBgQDlVD5lktDOQtWtj+yC607bVAZzhrCbUfX8FFEh6ZL3A2zgzXhN\\nZmBtaqfew3URf47UICy894MrCyYi2gSOZCfoz2vu+egLt0QBw/lCOQ4dD1gM/u+B\\nP5wifI14eIb2dLCZBV/83F5n24zo4gjBSNfS/6Jcbs/KvbAfjCptTkX10wKBgDxb\\nwy5WtlRVcqxaf50ilWzr8I/7fH7YceYDG4EbKxTHD0m+BOjbhrlmAlMO2sIUM3WK\\nfpmPCZiuLyCTmuC+kd8xK5ap79h3libgh/2/ReUpvdBhm+PQDOLC4CtCPYdtIn7T\\nP57jN8dRLXJokIIIBw+nH32dS62AQ9oXWYvZ1UKzAoGBAOWOSphZMnPlLeLN54/4\\nwKPI+D6G1JhzqQrUf8Z99J7m3r3ya+0ug5gRGQCoSRfqz9o87+fLCdSdc38L+j4T\\nBnuwIcY6n4LF+3yAPIF1rnrIBFRqzPta7epYPXHtUTvWOkEkKzNmsFVCZKF7nQjS\\ns/ucyyfUssPsTznYW3gXf3To\\n-----END PRIVATE KEY-----\\n\",\r\n client_email: \"lyxa-core@for-poc-325210.iam.gserviceaccount.com\"\r\n }\r\n })\r\n }\r\n\r\n public async getKey(key: string): Promise<string | undefined> {\r\n const environmentTransformedKey = this._configurationService.options.environment + \"_\" + key;\r\n\r\n try {\r\n const data = await this._redisManager.getCachedObjectByGroup<string>(this._configurationService.options.environment + \"_KEYS\", key)\r\n\r\n if(data != undefined) {\r\n return data\r\n }\r\n\r\n const [accessResponse] = await this._client.accessSecretVersion({\r\n name: \"projects/899369746265/secrets/\" + environmentTransformedKey + \"/versions/latest\",\r\n })\r\n\r\n const val = accessResponse.payload!.data!.toString()\r\n await this.setKey(key, val);\r\n\r\n return val\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n public async setKey(key: string, value: string): Promise<string> {\r\n await this._redisManager.setCachedObjectByGroup<string>(this._configurationService.options.environment + \"_KEYS\", key, value)\r\n return value\r\n }\r\n\r\n}\r\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lyxa.ai/core",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "The Core system of the Lyxa services.",
|
|
5
5
|
"author": "elie <42282499+Internalizable@users.noreply.github.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
"scripts": {
|
|
13
13
|
"build": "tsc",
|
|
14
14
|
"clean": "rimraf dist",
|
|
15
|
-
"prepare": "npm run build"
|
|
15
|
+
"prepare": "npm run build",
|
|
16
|
+
"start": "npx ts-node src/index.ts"
|
|
16
17
|
},
|
|
17
18
|
"dependencies": {
|
|
18
19
|
"@google-cloud/secret-manager": "^5.6.0",
|