@edirect/mongo 11.0.8 → 11.0.9

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.
@@ -0,0 +1,13 @@
1
+ # @edirect/config
2
+
3
+ The EDirectInsure Mongo Module.
4
+
5
+ ## Installation
6
+
7
+ ```shell
8
+ $ npm i --save @edirect/mongo
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ Import MongoModule on AppModule (app.module.ts)
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateConnectionString = exports.generateAwsCredentials = exports.shouldAssumeRole = void 0;
4
+ const credential_providers_1 = require("@aws-sdk/credential-providers");
5
+ const MONGODB_AWS_ROLE_ARN = process.env.MONGODB_AWS_ROLE_ARN;
6
+ const AWS_WEB_IDENTITY_TOKEN_FILE = process.env.AWS_WEB_IDENTITY_TOKEN_FILE;
7
+ exports.shouldAssumeRole = MONGODB_AWS_ROLE_ARN && AWS_WEB_IDENTITY_TOKEN_FILE;
8
+ const generateAwsCredentials = async () => {
9
+ if (exports.shouldAssumeRole) {
10
+ return (0, credential_providers_1.fromNodeProviderChain)({
11
+ roleArn: MONGODB_AWS_ROLE_ARN,
12
+ });
13
+ }
14
+ return (0, credential_providers_1.fromNodeProviderChain)();
15
+ };
16
+ exports.generateAwsCredentials = generateAwsCredentials;
17
+ const generateConnectionString = async (cnn) => {
18
+ if (!cnn) {
19
+ throw new Error('MongoDB connection string is not defined');
20
+ }
21
+ if (exports.shouldAssumeRole) {
22
+ const credentials = await (0, exports.generateAwsCredentials)();
23
+ if (credentials) {
24
+ const url = new URL(cnn);
25
+ url.username = credentials.accessKeyId || '';
26
+ url.password = credentials.secretAccessKey || '';
27
+ if (credentials.sessionToken) {
28
+ url.searchParams.set('authMechanismProperties', `AWS_SESSION_TOKEN:${credentials.sessionToken}`);
29
+ }
30
+ return url.toString();
31
+ }
32
+ throw new Error('Failed to assume role with web identity');
33
+ }
34
+ return cnn;
35
+ };
36
+ exports.generateConnectionString = generateConnectionString;
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./mongo.module"), exports);
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MongoModule = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const mongo_providers_1 = require("./mongo.providers");
7
+ let MongoModule = class MongoModule {
8
+ };
9
+ exports.MongoModule = MongoModule;
10
+ exports.MongoModule = MongoModule = tslib_1.__decorate([
11
+ (0, common_1.Global)(),
12
+ (0, common_1.Module)({
13
+ providers: [...mongo_providers_1.MongoProviders],
14
+ exports: [...mongo_providers_1.MongoProviders],
15
+ })
16
+ ], MongoModule);
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MongoProviders = void 0;
4
+ const mongoose_1 = require("mongoose");
5
+ const config_1 = require("@edirect/config");
6
+ const aws_1 = require("./aws");
7
+ const isNotProductionOrLive = (nodeEnv) => nodeEnv !== 'production' && nodeEnv !== 'live';
8
+ const mongoUrl = (configService) => configService.get('MONGO_URL') ?? configService.get('MONGODB_URI');
9
+ exports.MongoProviders = [
10
+ {
11
+ provide: 'MONGO_CONNECTION',
12
+ useFactory: async (configService) => (0, mongoose_1.connect)(await (0, aws_1.generateConnectionString)(mongoUrl(configService)), {
13
+ ...(isNotProductionOrLive(configService.get('NODE_ENV')) && {
14
+ minPoolSize: 0,
15
+ maxPoolSize: 10,
16
+ ...((mongoUrl(configService) ?? '').includes('MONGODB-AWS') && {
17
+ authMechanismProperties: {
18
+ AWS_CREDENTIAL_PROVIDER: aws_1.generateAwsCredentials,
19
+ },
20
+ }),
21
+ }),
22
+ }),
23
+ inject: [config_1.ConfigService],
24
+ },
25
+ ];
@@ -0,0 +1,5 @@
1
+ import { AWSCredentials } from 'mongodb';
2
+ export declare const shouldAssumeRole: string | undefined;
3
+ export declare const generateAwsCredentials: () => Promise<AWSCredentials | undefined>;
4
+ export declare const generateConnectionString: (cnn: string | undefined) => Promise<string>;
5
+ //# sourceMappingURL=aws.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aws.d.ts","sourceRoot":"","sources":["../../../../src/aws.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAKzC,eAAO,MAAM,gBAAgB,oBACwB,CAAC;AAEtD,eAAO,MAAM,sBAAsB,QAAa,OAAO,CACrD,cAAc,GAAG,SAAS,CAQ3B,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,KAAK,MAAM,GAAG,SAAS,KACtB,OAAO,CAAC,MAAM,CAqBhB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './mongo.module';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare class MongoModule {
2
+ }
3
+ //# sourceMappingURL=mongo.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongo.module.d.ts","sourceRoot":"","sources":["../../../../src/mongo.module.ts"],"names":[],"mappings":"AAIA,qBAKa,WAAW;CAAG"}
@@ -0,0 +1,3 @@
1
+ import { Provider } from '@nestjs/common';
2
+ export declare const MongoProviders: Provider[];
3
+ //# sourceMappingURL=mongo.providers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongo.providers.d.ts","sourceRoot":"","sources":["../../../../src/mongo.providers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAU1C,eAAO,MAAM,cAAc,EAAE,QAAQ,EAiBpC,CAAC"}
@@ -0,0 +1,13 @@
1
+ # @edirect/config
2
+
3
+ The EDirectInsure Mongo Module.
4
+
5
+ ## Installation
6
+
7
+ ```shell
8
+ $ npm i --save @edirect/mongo
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ Import MongoModule on AppModule (app.module.ts)
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "module"
3
+ }
@@ -0,0 +1,31 @@
1
+ import { fromNodeProviderChain } from '@aws-sdk/credential-providers';
2
+ const MONGODB_AWS_ROLE_ARN = process.env.MONGODB_AWS_ROLE_ARN;
3
+ const AWS_WEB_IDENTITY_TOKEN_FILE = process.env.AWS_WEB_IDENTITY_TOKEN_FILE;
4
+ export const shouldAssumeRole = MONGODB_AWS_ROLE_ARN && AWS_WEB_IDENTITY_TOKEN_FILE;
5
+ export const generateAwsCredentials = async () => {
6
+ if (shouldAssumeRole) {
7
+ return fromNodeProviderChain({
8
+ roleArn: MONGODB_AWS_ROLE_ARN,
9
+ });
10
+ }
11
+ return fromNodeProviderChain();
12
+ };
13
+ export const generateConnectionString = async (cnn) => {
14
+ if (!cnn) {
15
+ throw new Error('MongoDB connection string is not defined');
16
+ }
17
+ if (shouldAssumeRole) {
18
+ const credentials = await generateAwsCredentials();
19
+ if (credentials) {
20
+ const url = new URL(cnn);
21
+ url.username = credentials.accessKeyId || '';
22
+ url.password = credentials.secretAccessKey || '';
23
+ if (credentials.sessionToken) {
24
+ url.searchParams.set('authMechanismProperties', `AWS_SESSION_TOKEN:${credentials.sessionToken}`);
25
+ }
26
+ return url.toString();
27
+ }
28
+ throw new Error('Failed to assume role with web identity');
29
+ }
30
+ return cnn;
31
+ };
@@ -0,0 +1 @@
1
+ export * from './mongo.module';
@@ -0,0 +1,13 @@
1
+ import { __decorate } from "tslib";
2
+ import { Global, Module } from '@nestjs/common';
3
+ import { MongoProviders } from './mongo.providers';
4
+ let MongoModule = class MongoModule {
5
+ };
6
+ MongoModule = __decorate([
7
+ Global(),
8
+ Module({
9
+ providers: [...MongoProviders],
10
+ exports: [...MongoProviders],
11
+ })
12
+ ], MongoModule);
13
+ export { MongoModule };
@@ -0,0 +1,22 @@
1
+ import { connect } from 'mongoose';
2
+ import { ConfigService } from '@edirect/config';
3
+ import { generateAwsCredentials, generateConnectionString } from './aws';
4
+ const isNotProductionOrLive = (nodeEnv) => nodeEnv !== 'production' && nodeEnv !== 'live';
5
+ const mongoUrl = (configService) => configService.get('MONGO_URL') ?? configService.get('MONGODB_URI');
6
+ export const MongoProviders = [
7
+ {
8
+ provide: 'MONGO_CONNECTION',
9
+ useFactory: async (configService) => connect(await generateConnectionString(mongoUrl(configService)), {
10
+ ...(isNotProductionOrLive(configService.get('NODE_ENV')) && {
11
+ minPoolSize: 0,
12
+ maxPoolSize: 10,
13
+ ...((mongoUrl(configService) ?? '').includes('MONGODB-AWS') && {
14
+ authMechanismProperties: {
15
+ AWS_CREDENTIAL_PROVIDER: generateAwsCredentials,
16
+ },
17
+ }),
18
+ }),
19
+ }),
20
+ inject: [ConfigService],
21
+ },
22
+ ];
@@ -0,0 +1,5 @@
1
+ import { AWSCredentials } from 'mongodb';
2
+ export declare const shouldAssumeRole: string | undefined;
3
+ export declare const generateAwsCredentials: () => Promise<AWSCredentials | undefined>;
4
+ export declare const generateConnectionString: (cnn: string | undefined) => Promise<string>;
5
+ //# sourceMappingURL=aws.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aws.d.ts","sourceRoot":"","sources":["../../../../src/aws.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAKzC,eAAO,MAAM,gBAAgB,oBACwB,CAAC;AAEtD,eAAO,MAAM,sBAAsB,QAAa,OAAO,CACrD,cAAc,GAAG,SAAS,CAQ3B,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,KAAK,MAAM,GAAG,SAAS,KACtB,OAAO,CAAC,MAAM,CAqBhB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './mongo.module';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare class MongoModule {
2
+ }
3
+ //# sourceMappingURL=mongo.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongo.module.d.ts","sourceRoot":"","sources":["../../../../src/mongo.module.ts"],"names":[],"mappings":"AAIA,qBAKa,WAAW;CAAG"}
@@ -0,0 +1,3 @@
1
+ import { Provider } from '@nestjs/common';
2
+ export declare const MongoProviders: Provider[];
3
+ //# sourceMappingURL=mongo.providers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongo.providers.d.ts","sourceRoot":"","sources":["../../../../src/mongo.providers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAU1C,eAAO,MAAM,cAAc,EAAE,QAAQ,EAiBpC,CAAC"}
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@edirect/mongo",
3
- "version": "11.0.7",
3
+ "version": "11.0.8",
4
4
  "packageScope": "@edirect",
5
5
  "type": "module",
6
6
  "main": "./dist/src/index.js",
package/dist/src/aws.js CHANGED
@@ -1,21 +1,22 @@
1
+ import { __awaiter } from "tslib";
1
2
  import { fromNodeProviderChain } from '@aws-sdk/credential-providers';
2
3
  const MONGODB_AWS_ROLE_ARN = process.env.MONGODB_AWS_ROLE_ARN;
3
4
  const AWS_WEB_IDENTITY_TOKEN_FILE = process.env.AWS_WEB_IDENTITY_TOKEN_FILE;
4
5
  export const shouldAssumeRole = MONGODB_AWS_ROLE_ARN && AWS_WEB_IDENTITY_TOKEN_FILE;
5
- export const generateAwsCredentials = async () => {
6
+ export const generateAwsCredentials = () => __awaiter(void 0, void 0, void 0, function* () {
6
7
  if (shouldAssumeRole) {
7
8
  return fromNodeProviderChain({
8
9
  roleArn: MONGODB_AWS_ROLE_ARN,
9
10
  });
10
11
  }
11
12
  return fromNodeProviderChain();
12
- };
13
- export const generateConnectionString = async (cnn) => {
13
+ });
14
+ export const generateConnectionString = (cnn) => __awaiter(void 0, void 0, void 0, function* () {
14
15
  if (!cnn) {
15
16
  throw new Error('MongoDB connection string is not defined');
16
17
  }
17
18
  if (shouldAssumeRole) {
18
- const credentials = await generateAwsCredentials();
19
+ const credentials = yield generateAwsCredentials();
19
20
  if (credentials) {
20
21
  const url = new URL(cnn);
21
22
  url.username = credentials.accessKeyId || '';
@@ -28,4 +29,4 @@ export const generateConnectionString = async (cnn) => {
28
29
  throw new Error('Failed to assume role with web identity');
29
30
  }
30
31
  return cnn;
31
- };
32
+ });
@@ -1,21 +1,19 @@
1
+ import { __awaiter } from "tslib";
1
2
  import { connect } from 'mongoose';
2
3
  import { ConfigService } from '@edirect/config';
3
4
  import { generateAwsCredentials, generateConnectionString } from './aws';
4
5
  const isNotProductionOrLive = (nodeEnv) => nodeEnv !== 'production' && nodeEnv !== 'live';
5
- const mongoUrl = (configService) => configService.get('MONGO_URL') ?? configService.get('MONGODB_URI');
6
+ const mongoUrl = (configService) => { var _a; return (_a = configService.get('MONGO_URL')) !== null && _a !== void 0 ? _a : configService.get('MONGODB_URI'); };
6
7
  export const MongoProviders = [
7
8
  {
8
9
  provide: 'MONGO_CONNECTION',
9
- useFactory: async (configService) => connect(await generateConnectionString(mongoUrl(configService)), {
10
- ...(isNotProductionOrLive(configService.get('NODE_ENV')) && {
11
- minPoolSize: 0,
12
- maxPoolSize: 10,
13
- ...((mongoUrl(configService) ?? '').includes('MONGODB-AWS') && {
14
- authMechanismProperties: {
15
- AWS_CREDENTIAL_PROVIDER: generateAwsCredentials,
16
- },
17
- }),
18
- }),
10
+ useFactory: (configService) => __awaiter(void 0, void 0, void 0, function* () {
11
+ var _a;
12
+ return connect(yield generateConnectionString(mongoUrl(configService)), Object.assign({}, (isNotProductionOrLive(configService.get('NODE_ENV')) && Object.assign({ minPoolSize: 0, maxPoolSize: 10 }, (((_a = mongoUrl(configService)) !== null && _a !== void 0 ? _a : '').includes('MONGODB-AWS') && {
13
+ authMechanismProperties: {
14
+ AWS_CREDENTIAL_PROVIDER: generateAwsCredentials,
15
+ },
16
+ })))));
19
17
  }),
20
18
  inject: [ConfigService],
21
19
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@edirect/mongo",
3
- "version": "11.0.8",
3
+ "version": "11.0.9",
4
4
  "packageScope": "@edirect",
5
5
  "type": "module",
6
6
  "main": "./dist/src/index.js",
@@ -25,22 +25,60 @@
25
25
  "mongoose": "^8.17.1",
26
26
  "@nestjs/common": "^11.1.6",
27
27
  "tslib": "^2.3.0",
28
- "@edirect/config": "11.0.8"
28
+ "@edirect/config": "11.0.9"
29
29
  },
30
30
  "devDependencies": {
31
31
  "@nx/rollup": "21.3.11"
32
32
  },
33
33
  "nx": {
34
+ "name": "@edirect/mongo",
34
35
  "targets": {
35
- "build": {
36
+ "build:esm": {
37
+ "executor": "@nx/js:tsc",
38
+ "options": {
39
+ "main": "{projectRoot}/src/index.ts",
40
+ "tsConfig": "{projectRoot}/tsconfig.esm.json",
41
+ "outputPath": "{projectRoot}/dist/esm",
42
+ "assets": [
43
+ "{projectRoot}/package.json",
44
+ "{projectRoot}/README.md"
45
+ ]
46
+ }
47
+ },
48
+ "build:cjs": {
36
49
  "executor": "@nx/js:tsc",
50
+ "options": {
51
+ "main": "{projectRoot}/src/index.ts",
52
+ "tsConfig": "{projectRoot}/tsconfig.cjs.json",
53
+ "outputPath": "{projectRoot}/dist/cjs",
54
+ "assets": [
55
+ "{projectRoot}/package.json",
56
+ "{projectRoot}/README.md"
57
+ ]
58
+ }
59
+ },
60
+ "gen-pkg-json": {
61
+ "executor": "nx:run-commands",
62
+ "options": {
63
+ "cwd": "{projectRoot}",
64
+ "commands": [
65
+ "node -e \"const fs=require('fs');fs.mkdirSync('dist/esm',{recursive:true});fs.mkdirSync('dist/cjs',{recursive:true});fs.writeFileSync('dist/esm/package.json',JSON.stringify({type:'module'},null,2));fs.writeFileSync('dist/cjs/package.json',JSON.stringify({type:'commonjs'},null,2));\""
66
+ ]
67
+ },
37
68
  "outputs": [
38
- "{workspaceRoot}/packages/edirect-mongo/dist"
39
- ],
69
+ "{projectRoot}/dist/esm/package.json",
70
+ "{projectRoot}/dist/cjs/package.json"
71
+ ]
72
+ },
73
+ "build": {
74
+ "executor": "nx:run-commands",
40
75
  "options": {
41
- "main": "{workspaceRoot}/packages/edirect-mongo/src/index.ts",
42
- "tsConfig": "{workspaceRoot}/packages/edirect-mongo/tsconfig.lib.json",
43
- "outputPath": "{workspaceRoot}/packages/edirect-mongo/dist"
76
+ "commands": [
77
+ "nx build:esm @edirect/mongo",
78
+ "nx build:cjs @edirect/mongo",
79
+ "nx gen-pkg-json @edirect/mongo"
80
+ ],
81
+ "parallel": false
44
82
  }
45
83
  }
46
84
  }