@punks/backend-entity-manager 0.0.199 → 0.0.201

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/cjs/index.js +155 -16
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/types/abstractions/index.d.ts +1 -0
  4. package/dist/cjs/types/abstractions/secrets.d.ts +29 -0
  5. package/dist/cjs/types/platforms/nest/decorators/secrets.d.ts +4 -0
  6. package/dist/cjs/types/platforms/nest/decorators/symbols.d.ts +1 -0
  7. package/dist/cjs/types/platforms/nest/plugins/index.d.ts +1 -0
  8. package/dist/cjs/types/platforms/nest/plugins/secrets/aws-secrets-manager/index.d.ts +3 -0
  9. package/dist/cjs/types/platforms/nest/plugins/secrets/aws-secrets-manager/module.d.ts +5 -0
  10. package/dist/cjs/types/platforms/nest/plugins/secrets/aws-secrets-manager/provider/index.d.ts +1 -0
  11. package/dist/cjs/types/platforms/nest/plugins/secrets/aws-secrets-manager/provider/secrets.d.ts +13 -0
  12. package/dist/cjs/types/platforms/nest/plugins/secrets/aws-secrets-manager/settings/index.d.ts +8 -0
  13. package/dist/cjs/types/platforms/nest/plugins/secrets/index.d.ts +1 -0
  14. package/dist/cjs/types/platforms/nest/processors/initializer/index.d.ts +2 -0
  15. package/dist/cjs/types/providers/services.d.ts +3 -1
  16. package/dist/cjs/types/symbols/ioc.d.ts +1 -0
  17. package/dist/esm/index.js +156 -17
  18. package/dist/esm/index.js.map +1 -1
  19. package/dist/esm/types/abstractions/index.d.ts +1 -0
  20. package/dist/esm/types/abstractions/secrets.d.ts +29 -0
  21. package/dist/esm/types/platforms/nest/decorators/secrets.d.ts +4 -0
  22. package/dist/esm/types/platforms/nest/decorators/symbols.d.ts +1 -0
  23. package/dist/esm/types/platforms/nest/plugins/index.d.ts +1 -0
  24. package/dist/esm/types/platforms/nest/plugins/secrets/aws-secrets-manager/index.d.ts +3 -0
  25. package/dist/esm/types/platforms/nest/plugins/secrets/aws-secrets-manager/module.d.ts +5 -0
  26. package/dist/esm/types/platforms/nest/plugins/secrets/aws-secrets-manager/provider/index.d.ts +1 -0
  27. package/dist/esm/types/platforms/nest/plugins/secrets/aws-secrets-manager/provider/secrets.d.ts +13 -0
  28. package/dist/esm/types/platforms/nest/plugins/secrets/aws-secrets-manager/settings/index.d.ts +8 -0
  29. package/dist/esm/types/platforms/nest/plugins/secrets/index.d.ts +1 -0
  30. package/dist/esm/types/platforms/nest/processors/initializer/index.d.ts +2 -0
  31. package/dist/esm/types/providers/services.d.ts +3 -1
  32. package/dist/esm/types/symbols/ioc.d.ts +1 -0
  33. package/dist/index.d.ts +60 -1
  34. package/package.json +11 -9
package/dist/cjs/index.js CHANGED
@@ -18,6 +18,7 @@ var s3RequestPresigner = require('@aws-sdk/s3-request-presigner');
18
18
  var clientSes = require('@aws-sdk/client-ses');
19
19
  var require$$2 = require('fs');
20
20
  var mail = require('@sendgrid/mail');
21
+ var clientSecretsManager = require('@aws-sdk/client-secrets-manager');
21
22
 
22
23
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
23
24
 
@@ -1192,6 +1193,7 @@ const GlobalServices = {
1192
1193
  IEmailLogger: "IEmailLogger",
1193
1194
  IEmailTemplatesCollection: "IEmailTemplatesCollection",
1194
1195
  IBucketProvider: "IBucketProvider",
1196
+ ISecretsProvider: "ISecretsProvider",
1195
1197
  IFileProvider: "IFileProvider",
1196
1198
  },
1197
1199
  Settings: {
@@ -1414,6 +1416,13 @@ class EntitiesServiceLocator {
1414
1416
  this.provider.registerMultiple(GlobalServices.Plugins.IBucketProvider, name, instance);
1415
1417
  return this;
1416
1418
  }
1419
+ resolveSecretsProviders() {
1420
+ return this.provider.resolveMultiple(GlobalServices.Plugins.ISecretsProvider);
1421
+ }
1422
+ registerSecretsProvider(name, instance) {
1423
+ this.provider.registerMultiple(GlobalServices.Plugins.ISecretsProvider, name, instance);
1424
+ return this;
1425
+ }
1417
1426
  resolveAuthenticationMiddlewares() {
1418
1427
  return (this.provider.resolveMultiple(GlobalServices.Authentication.IAuthenticationMiddleware, {
1419
1428
  optional: true,
@@ -3288,6 +3297,7 @@ const EntityManagerSymbols = {
3288
3297
  EmailTemplate: Symbol.for("WP:EMAIL_TEMPLATE"),
3289
3298
  EmailLogger: Symbol.for("WP:EMAIL_LOGGER"),
3290
3299
  BucketProvider: Symbol.for("WP:BUCKET_PROVIDER"),
3300
+ SecretsProvider: Symbol.for("WP:SECRETS_PROVIDER"),
3291
3301
  FileProvider: Symbol.for("WP:FILE_PROVIDER"),
3292
3302
  FileReferenceRepository: Symbol.for("WP:FILE_REFERENCE_REPO"),
3293
3303
  PipelineTemplate: Symbol.for("WP:PIPELINE_TEMPLATE"),
@@ -22199,6 +22209,7 @@ exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityMana
22199
22209
  await this.registerFileProviders();
22200
22210
  await this.registerGlobalAuthenticationMiddlewares();
22201
22211
  await this.registerBucketProviders();
22212
+ await this.registerSecretsProviders();
22202
22213
  await this.registerCacheInstances();
22203
22214
  await this.executeInitializers(app);
22204
22215
  await this.executeSeeders();
@@ -22313,6 +22324,20 @@ exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityMana
22313
22324
  this.logger.log(`Authentication middleware ${provider.discoveredClass.name} registered 🚜`);
22314
22325
  }
22315
22326
  }
22327
+ async registerSecretsProviders() {
22328
+ const providers = await this.discoverSecretsProviders();
22329
+ if (!providers.length) {
22330
+ this.logger.warn("No secrets providers found ⚠️");
22331
+ return;
22332
+ }
22333
+ for (const provider of providers) {
22334
+ this.registry
22335
+ .getContainer()
22336
+ .getEntitiesServicesLocator()
22337
+ .registerSecretsProvider(provider.meta.providerId, provider.discoveredClass.instance);
22338
+ this.logger.log(`Secrets provider ${provider.discoveredClass.name} registered 🚜`);
22339
+ }
22340
+ }
22316
22341
  async registerBucketProviders() {
22317
22342
  const providers = await this.discoverBucketProviders();
22318
22343
  if (!providers.length) {
@@ -22474,6 +22499,9 @@ exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityMana
22474
22499
  async discoverBucketProviders() {
22475
22500
  return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.BucketProvider);
22476
22501
  }
22502
+ async discoverSecretsProviders() {
22503
+ return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.SecretsProvider);
22504
+ }
22477
22505
  async discoverCacheInstances() {
22478
22506
  return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.CacheInstance);
22479
22507
  }
@@ -22836,7 +22864,7 @@ AuthenticationMiddleware = __decorate([
22836
22864
  ], AuthenticationMiddleware);
22837
22865
 
22838
22866
  var AuthenticationModule_1;
22839
- const ModuleData$3 = {
22867
+ const ModuleData$4 = {
22840
22868
  imports: [exports.EntityManagerModule, jwt.JwtModule],
22841
22869
  providers: [
22842
22870
  AuthenticationServicesResolver,
@@ -22853,7 +22881,7 @@ exports.AuthenticationModule = AuthenticationModule_1 = class AuthenticationModu
22853
22881
  authSettings.initialize(input);
22854
22882
  return {
22855
22883
  module: AuthenticationModule_1,
22856
- ...ModuleData$3,
22884
+ ...ModuleData$4,
22857
22885
  };
22858
22886
  }
22859
22887
  configure(consumer) {
@@ -22866,7 +22894,7 @@ exports.AuthenticationModule = AuthenticationModule_1 = class AuthenticationModu
22866
22894
  };
22867
22895
  exports.AuthenticationModule = AuthenticationModule_1 = __decorate([
22868
22896
  common.Module({
22869
- ...ModuleData$3,
22897
+ ...ModuleData$4,
22870
22898
  })
22871
22899
  ], exports.AuthenticationModule);
22872
22900
 
@@ -23156,7 +23184,7 @@ class AwsS3BucketError extends Error {
23156
23184
 
23157
23185
  const awsBucketSettings = new AppInMemorySettings();
23158
23186
 
23159
- const createClient$1 = (settings) => new clientS3.S3Client({
23187
+ const createClient$2 = (settings) => new clientS3.S3Client({
23160
23188
  region: settings.region,
23161
23189
  credentials: settings.awsAccessKeyId && settings.awsSecretAccessKey
23162
23190
  ? {
@@ -23167,7 +23195,7 @@ const createClient$1 = (settings) => new clientS3.S3Client({
23167
23195
  });
23168
23196
  exports.AwsS3BucketProvider = class AwsS3BucketProvider {
23169
23197
  constructor() {
23170
- this.client = createClient$1(awsBucketSettings.value);
23198
+ this.client = createClient$2(awsBucketSettings.value);
23171
23199
  }
23172
23200
  async folderList(input) {
23173
23201
  try {
@@ -23323,7 +23351,7 @@ AwsS3FileProvider = __decorate([
23323
23351
  ], AwsS3FileProvider);
23324
23352
 
23325
23353
  var AwsBucketModule_1;
23326
- const ModuleData$2 = {
23354
+ const ModuleData$3 = {
23327
23355
  providers: [exports.AwsS3BucketProvider, AwsS3FileProvider],
23328
23356
  };
23329
23357
  exports.AwsBucketModule = AwsBucketModule_1 = class AwsBucketModule {
@@ -23331,13 +23359,13 @@ exports.AwsBucketModule = AwsBucketModule_1 = class AwsBucketModule {
23331
23359
  awsBucketSettings.initialize(input);
23332
23360
  return {
23333
23361
  module: AwsBucketModule_1,
23334
- ...ModuleData$2,
23362
+ ...ModuleData$3,
23335
23363
  };
23336
23364
  }
23337
23365
  };
23338
23366
  exports.AwsBucketModule = AwsBucketModule_1 = __decorate([
23339
23367
  common.Module({
23340
- ...ModuleData$2,
23368
+ ...ModuleData$3,
23341
23369
  })
23342
23370
  ], exports.AwsBucketModule);
23343
23371
 
@@ -28422,7 +28450,7 @@ const renderHandlebarsTemplate = (input) => {
28422
28450
 
28423
28451
  const newUuid = backendCore.newUuid;
28424
28452
 
28425
- const createClient = (settings) => new clientSes.SESClient({
28453
+ const createClient$1 = (settings) => new clientSes.SESClient({
28426
28454
  region: settings.region,
28427
28455
  credentials: settings.awsAccessKeyId && settings.awsSecretAccessKey
28428
28456
  ? {
@@ -28433,7 +28461,7 @@ const createClient = (settings) => new clientSes.SESClient({
28433
28461
  });
28434
28462
  let AwsSesEmailProvider = class AwsSesEmailProvider {
28435
28463
  constructor() {
28436
- this.client = createClient(awsSesSettings.value);
28464
+ this.client = createClient$1(awsSesSettings.value);
28437
28465
  }
28438
28466
  async sendTemplatedEmail(input, template) {
28439
28467
  const processedPayload = await template.processPayload(input.payload);
@@ -28481,7 +28509,7 @@ AwsSesEmailProvider = __decorate([
28481
28509
  ], AwsSesEmailProvider);
28482
28510
 
28483
28511
  var AwsEmailModule_1;
28484
- const ModuleData$1 = {
28512
+ const ModuleData$2 = {
28485
28513
  providers: [AwsSesEmailProvider],
28486
28514
  };
28487
28515
  exports.AwsEmailModule = AwsEmailModule_1 = class AwsEmailModule {
@@ -28489,13 +28517,13 @@ exports.AwsEmailModule = AwsEmailModule_1 = class AwsEmailModule {
28489
28517
  awsSesSettings.initialize(input);
28490
28518
  return {
28491
28519
  module: AwsEmailModule_1,
28492
- ...ModuleData$1,
28520
+ ...ModuleData$2,
28493
28521
  };
28494
28522
  }
28495
28523
  };
28496
28524
  exports.AwsEmailModule = AwsEmailModule_1 = __decorate([
28497
28525
  common.Module({
28498
- ...ModuleData$1,
28526
+ ...ModuleData$2,
28499
28527
  })
28500
28528
  ], exports.AwsEmailModule);
28501
28529
 
@@ -28648,7 +28676,7 @@ SendgridEmailProvider = __decorate([
28648
28676
  ], SendgridEmailProvider);
28649
28677
 
28650
28678
  var SendgridEmailModule_1;
28651
- const ModuleData = {
28679
+ const ModuleData$1 = {
28652
28680
  imports: [exports.EntityManagerModule],
28653
28681
  providers: [SendgridEmailProvider],
28654
28682
  };
@@ -28657,13 +28685,13 @@ exports.SendgridEmailModule = SendgridEmailModule_1 = class SendgridEmailModule
28657
28685
  sendgridSettings.initialize(input);
28658
28686
  return {
28659
28687
  module: SendgridEmailModule_1,
28660
- ...ModuleData,
28688
+ ...ModuleData$1,
28661
28689
  };
28662
28690
  }
28663
28691
  };
28664
28692
  exports.SendgridEmailModule = SendgridEmailModule_1 = __decorate([
28665
28693
  common.Module({
28666
- ...ModuleData,
28694
+ ...ModuleData$1,
28667
28695
  })
28668
28696
  ], exports.SendgridEmailModule);
28669
28697
 
@@ -28692,6 +28720,117 @@ exports.InMemoryEmailProvider = __decorate([
28692
28720
  WpEmailProvider("in-memory")
28693
28721
  ], exports.InMemoryEmailProvider);
28694
28722
 
28723
+ const awsSecretsSettings = new AppInMemorySettings();
28724
+
28725
+ const WpSecretsProvider = (providerId) => common.applyDecorators(common.Injectable(), common.SetMetadata(EntityManagerSymbols.SecretsProvider, {
28726
+ providerId,
28727
+ }));
28728
+
28729
+ const createClient = (settings) => new clientSecretsManager.SecretsManagerClient({
28730
+ region: settings.region,
28731
+ credentials: settings.awsAccessKeyId && settings.awsSecretAccessKey
28732
+ ? {
28733
+ accessKeyId: settings.awsAccessKeyId,
28734
+ secretAccessKey: settings.awsSecretAccessKey,
28735
+ }
28736
+ : undefined,
28737
+ });
28738
+ exports.AwsSecretsProvider = class AwsSecretsProvider {
28739
+ constructor() {
28740
+ this.client = createClient(awsSecretsSettings.value);
28741
+ }
28742
+ async getSecretValue(pageName, key) {
28743
+ const secretsPage = await this.getSecretsPage(pageName);
28744
+ return secretsPage[key]?.value;
28745
+ }
28746
+ async getSecrets(pageName) {
28747
+ const secretsPage = await this.getSecretsPage(pageName);
28748
+ return Object.keys(secretsPage).map((key) => ({
28749
+ key,
28750
+ ...secretsPage[key],
28751
+ }));
28752
+ }
28753
+ async setSecret(pageName, secret) {
28754
+ const secretsPage = await this.getSecretsPage(pageName);
28755
+ const currentSecret = secretsPage[secret.key];
28756
+ if (!currentSecret) {
28757
+ throw new Error(`Secret ${secret.key} not found in page ${pageName}`);
28758
+ }
28759
+ await this.saveSecretsPage(pageName, {
28760
+ ...secretsPage,
28761
+ [secret.key]: {
28762
+ ...currentSecret,
28763
+ value: secret.value,
28764
+ timestamp: Date.now(),
28765
+ },
28766
+ });
28767
+ }
28768
+ async defineSecret(pageName, definition) {
28769
+ const secretsPage = await this.getSecretsPage(pageName);
28770
+ await this.saveSecretsPage(pageName, {
28771
+ ...secretsPage,
28772
+ [definition.key]: {
28773
+ type: definition.type,
28774
+ hidden: definition.hidden,
28775
+ value: null,
28776
+ timestamp: Date.now(),
28777
+ },
28778
+ });
28779
+ }
28780
+ async pageInitialize(pageName, metadata) {
28781
+ await this.client.send(new clientSecretsManager.CreateSecretCommand({
28782
+ Name: this.buildPagePath(pageName),
28783
+ Tags: metadata.tags
28784
+ ? metadata.tags.map((tag) => ({
28785
+ Key: tag.key,
28786
+ Value: tag.value,
28787
+ }))
28788
+ : [],
28789
+ }));
28790
+ }
28791
+ async saveSecretsPage(pageName, secretsPage) {
28792
+ await this.client.send(new clientSecretsManager.CreateSecretCommand({
28793
+ Name: this.buildPagePath(pageName),
28794
+ SecretString: JSON.stringify(secretsPage),
28795
+ }));
28796
+ }
28797
+ async getSecretsPage(pageName) {
28798
+ const secrets = await this.client.send(new clientSecretsManager.GetSecretValueCommand({
28799
+ SecretId: this.buildPagePath(pageName),
28800
+ }));
28801
+ if (!secrets.SecretString) {
28802
+ throw new Error("Secrets not found");
28803
+ }
28804
+ return JSON.parse(secrets.SecretString);
28805
+ }
28806
+ buildPagePath(pageName) {
28807
+ return `${awsSecretsSettings.value.secretsRootPath}-${pageName}`;
28808
+ }
28809
+ };
28810
+ exports.AwsSecretsProvider = __decorate([
28811
+ WpSecretsProvider("awsSecretsManager"),
28812
+ __metadata("design:paramtypes", [])
28813
+ ], exports.AwsSecretsProvider);
28814
+
28815
+ var AwsSecretsModule_1;
28816
+ const ModuleData = {
28817
+ providers: [exports.AwsSecretsProvider],
28818
+ };
28819
+ exports.AwsSecretsModule = AwsSecretsModule_1 = class AwsSecretsModule {
28820
+ static forRoot(input) {
28821
+ awsSecretsSettings.initialize(input);
28822
+ return {
28823
+ module: AwsSecretsModule_1,
28824
+ ...ModuleData,
28825
+ };
28826
+ }
28827
+ };
28828
+ exports.AwsSecretsModule = AwsSecretsModule_1 = __decorate([
28829
+ common.Module({
28830
+ ...ModuleData,
28831
+ })
28832
+ ], exports.AwsSecretsModule);
28833
+
28695
28834
  exports.AUTHENTICATION_EVENTS_NAMESPACE = AUTHENTICATION_EVENTS_NAMESPACE;
28696
28835
  exports.AppExceptionsFilterBase = AppExceptionsFilterBase;
28697
28836
  exports.AppInMemorySettings = AppInMemorySettings;