@punks/backend-entity-manager 0.0.199 → 0.0.200
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/cjs/index.js +139 -16
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/abstractions/index.d.ts +1 -0
- package/dist/cjs/types/abstractions/secrets.d.ts +22 -0
- package/dist/cjs/types/platforms/nest/decorators/secrets.d.ts +4 -0
- package/dist/cjs/types/platforms/nest/decorators/symbols.d.ts +1 -0
- package/dist/cjs/types/platforms/nest/plugins/index.d.ts +1 -0
- package/dist/cjs/types/platforms/nest/plugins/secrets/aws-secrets-manager/index.d.ts +3 -0
- package/dist/cjs/types/platforms/nest/plugins/secrets/aws-secrets-manager/module.d.ts +5 -0
- package/dist/cjs/types/platforms/nest/plugins/secrets/aws-secrets-manager/provider/index.d.ts +1 -0
- package/dist/cjs/types/platforms/nest/plugins/secrets/aws-secrets-manager/provider/secrets.d.ts +12 -0
- package/dist/cjs/types/platforms/nest/plugins/secrets/aws-secrets-manager/settings/index.d.ts +8 -0
- package/dist/cjs/types/platforms/nest/plugins/secrets/index.d.ts +1 -0
- package/dist/cjs/types/platforms/nest/processors/initializer/index.d.ts +2 -0
- package/dist/cjs/types/providers/services.d.ts +3 -1
- package/dist/cjs/types/symbols/ioc.d.ts +1 -0
- package/dist/esm/index.js +140 -17
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/abstractions/index.d.ts +1 -0
- package/dist/esm/types/abstractions/secrets.d.ts +22 -0
- package/dist/esm/types/platforms/nest/decorators/secrets.d.ts +4 -0
- package/dist/esm/types/platforms/nest/decorators/symbols.d.ts +1 -0
- package/dist/esm/types/platforms/nest/plugins/index.d.ts +1 -0
- package/dist/esm/types/platforms/nest/plugins/secrets/aws-secrets-manager/index.d.ts +3 -0
- package/dist/esm/types/platforms/nest/plugins/secrets/aws-secrets-manager/module.d.ts +5 -0
- package/dist/esm/types/platforms/nest/plugins/secrets/aws-secrets-manager/provider/index.d.ts +1 -0
- package/dist/esm/types/platforms/nest/plugins/secrets/aws-secrets-manager/provider/secrets.d.ts +12 -0
- package/dist/esm/types/platforms/nest/plugins/secrets/aws-secrets-manager/settings/index.d.ts +8 -0
- package/dist/esm/types/platforms/nest/plugins/secrets/index.d.ts +1 -0
- package/dist/esm/types/platforms/nest/processors/initializer/index.d.ts +2 -0
- package/dist/esm/types/providers/services.d.ts +3 -1
- package/dist/esm/types/symbols/ioc.d.ts +1 -0
- package/dist/index.d.ts +52 -1
- 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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
23362
|
+
...ModuleData$3,
|
|
23335
23363
|
};
|
|
23336
23364
|
}
|
|
23337
23365
|
};
|
|
23338
23366
|
exports.AwsBucketModule = AwsBucketModule_1 = __decorate([
|
|
23339
23367
|
common.Module({
|
|
23340
|
-
...ModuleData$
|
|
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$
|
|
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$
|
|
28520
|
+
...ModuleData$2,
|
|
28493
28521
|
};
|
|
28494
28522
|
}
|
|
28495
28523
|
};
|
|
28496
28524
|
exports.AwsEmailModule = AwsEmailModule_1 = __decorate([
|
|
28497
28525
|
common.Module({
|
|
28498
|
-
...ModuleData$
|
|
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,101 @@ 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
|
+
await this.saveSecretsPage(pageName, {
|
|
28756
|
+
...secretsPage,
|
|
28757
|
+
[secret.key]: {
|
|
28758
|
+
value: secret.value,
|
|
28759
|
+
hidden: secret.hidden,
|
|
28760
|
+
timestamp: Date.now(),
|
|
28761
|
+
},
|
|
28762
|
+
});
|
|
28763
|
+
}
|
|
28764
|
+
async pageInitialize(pageName, metadata) {
|
|
28765
|
+
await this.client.send(new clientSecretsManager.CreateSecretCommand({
|
|
28766
|
+
Name: this.buildPagePath(pageName),
|
|
28767
|
+
Tags: metadata.tags
|
|
28768
|
+
? metadata.tags.map((tag) => ({
|
|
28769
|
+
Key: tag.key,
|
|
28770
|
+
Value: tag.value,
|
|
28771
|
+
}))
|
|
28772
|
+
: [],
|
|
28773
|
+
}));
|
|
28774
|
+
}
|
|
28775
|
+
async saveSecretsPage(pageName, secretsPage) {
|
|
28776
|
+
await this.client.send(new clientSecretsManager.CreateSecretCommand({
|
|
28777
|
+
Name: this.buildPagePath(pageName),
|
|
28778
|
+
SecretString: JSON.stringify(secretsPage),
|
|
28779
|
+
}));
|
|
28780
|
+
}
|
|
28781
|
+
async getSecretsPage(pageName) {
|
|
28782
|
+
const secrets = await this.client.send(new clientSecretsManager.GetSecretValueCommand({
|
|
28783
|
+
SecretId: this.buildPagePath(pageName),
|
|
28784
|
+
}));
|
|
28785
|
+
if (!secrets.SecretString) {
|
|
28786
|
+
throw new Error("Secrets not found");
|
|
28787
|
+
}
|
|
28788
|
+
return JSON.parse(secrets.SecretString);
|
|
28789
|
+
}
|
|
28790
|
+
buildPagePath(pageName) {
|
|
28791
|
+
return `${awsSecretsSettings.value.secretsRootPath}-${pageName}`;
|
|
28792
|
+
}
|
|
28793
|
+
};
|
|
28794
|
+
exports.AwsSecretsProvider = __decorate([
|
|
28795
|
+
WpSecretsProvider("awsSecretsManager"),
|
|
28796
|
+
__metadata("design:paramtypes", [])
|
|
28797
|
+
], exports.AwsSecretsProvider);
|
|
28798
|
+
|
|
28799
|
+
var AwsSecretsModule_1;
|
|
28800
|
+
const ModuleData = {
|
|
28801
|
+
providers: [exports.AwsSecretsProvider],
|
|
28802
|
+
};
|
|
28803
|
+
exports.AwsSecretsModule = AwsSecretsModule_1 = class AwsSecretsModule {
|
|
28804
|
+
static forRoot(input) {
|
|
28805
|
+
awsSecretsSettings.initialize(input);
|
|
28806
|
+
return {
|
|
28807
|
+
module: AwsSecretsModule_1,
|
|
28808
|
+
...ModuleData,
|
|
28809
|
+
};
|
|
28810
|
+
}
|
|
28811
|
+
};
|
|
28812
|
+
exports.AwsSecretsModule = AwsSecretsModule_1 = __decorate([
|
|
28813
|
+
common.Module({
|
|
28814
|
+
...ModuleData,
|
|
28815
|
+
})
|
|
28816
|
+
], exports.AwsSecretsModule);
|
|
28817
|
+
|
|
28695
28818
|
exports.AUTHENTICATION_EVENTS_NAMESPACE = AUTHENTICATION_EVENTS_NAMESPACE;
|
|
28696
28819
|
exports.AppExceptionsFilterBase = AppExceptionsFilterBase;
|
|
28697
28820
|
exports.AppInMemorySettings = AppInMemorySettings;
|