@storyous/mongodb 1.1.3 → 1.2.0

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/README.md CHANGED
@@ -24,9 +24,14 @@ import { getMongoConfig, mongoClient } from '@storyous/mongodb';
24
24
  // Set following env variables:
25
25
  // DOCUMENTDB_ENGINE="mongodb" (or "documentdb")
26
26
  // DOCUMENTDB_ENDPOINT="127.0.0.1"
27
- // DOCUMENTDB_PORT="27017"
28
27
  // DOCUMENTDB_USER="user"
29
28
  // DOCUMENTDB_PASSWORD="password"
29
+ //
30
+ // Optional env variables (and default values)
31
+ // DOCUMENTDB_DATABASE=""
32
+ // DOCUMENTDB_PORT="27017"
33
+ // DOCUMENTDB_PROTOCOL="mongodb"
34
+ // DOCUMENTDB_QUERY="?retryWrites=false"
30
35
 
31
36
  // Get config
32
37
  const config = {
@@ -2,5 +2,5 @@ interface Config {
2
2
  mongodbUrl: string;
3
3
  mongoOptions: Record<string, any>;
4
4
  }
5
- declare const _default: (envPrefix?: string, database?: string | null, mongoOptions?: {}, documentDbOptions?: {}) => Config;
5
+ declare const _default: (envPrefix?: string, mongoOptions?: {}, documentDbOptions?: {}) => Config;
6
6
  export default _default;
@@ -24,28 +24,34 @@ var __importStar = (this && this.__importStar) || function (mod) {
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  const path = __importStar(require("path"));
27
- const getEnv = (prefix, variable) => {
27
+ const getEnv = (prefix, variable, defaultValue = null) => {
28
28
  const value = process.env[`${prefix}_${variable}`];
29
+ if (value === undefined && defaultValue !== null) {
30
+ return defaultValue;
31
+ }
29
32
  if (value === undefined) {
30
33
  throw new Error(`Environment variable "${prefix}_${variable}" missing.`);
31
34
  }
32
35
  return value;
33
36
  };
34
- exports.default = (envPrefix = 'DOCUMENTDB', database = null, mongoOptions = {}, documentDbOptions = {}) => {
37
+ exports.default = (envPrefix = 'DOCUMENTDB', mongoOptions = {}, documentDbOptions = {}) => {
35
38
  const engine = getEnv(envPrefix, 'ENGINE');
39
+ const protocol = getEnv(envPrefix, 'PROTOCOL', 'mongodb');
36
40
  const endpoint = getEnv(envPrefix, 'ENDPOINT');
37
- const port = getEnv(envPrefix, 'PORT');
41
+ const port = getEnv(envPrefix, 'PORT', '27017');
38
42
  const username = getEnv(envPrefix, 'USERNAME');
39
43
  const password = getEnv(envPrefix, 'PASSWORD');
44
+ const database = getEnv(envPrefix, 'DATABASE', '');
45
+ const query = getEnv(envPrefix, 'QUERY', '?retryWrites=false');
40
46
  if (engine === 'mongodb') {
41
47
  return {
42
- mongodbUrl: `mongodb://${username}:${password}@${endpoint}:${port}/${database || ''}?retryWrites=false`,
48
+ mongodbUrl: `${protocol}://${username}:${password}@${endpoint}:${port}/${database}${query}`,
43
49
  mongoOptions,
44
50
  };
45
51
  }
46
52
  if (engine === 'documentdb') {
47
53
  return {
48
- mongodbUrl: `mongodb://${endpoint}:${port}/${database || ''}?retryWrites=false`,
54
+ mongodbUrl: `${protocol}://${endpoint}:${port}/${database}${query}`,
49
55
  mongoOptions: {
50
56
  tlsCAFile: path.resolve(__dirname, 'global-bundle.pem'),
51
57
  tls: true,
@@ -66,4 +72,4 @@ exports.default = (envPrefix = 'DOCUMENTDB', database = null, mongoOptions = {},
66
72
  }
67
73
  throw new Error(`Invalid ${envPrefix}_ENGINE value "${engine}", values "mongodb" or "documentdb" allowed.`);
68
74
  };
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0TW9uZ29Db25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJnZXRNb25nb0NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQTZCO0FBTzdCLE1BQU0sTUFBTSxHQUFHLENBQUMsTUFBYyxFQUFFLFFBQWdCLEVBQVUsRUFBRTtJQUN4RCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxJQUFJLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDbkQsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1FBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLE1BQU0sSUFBSSxRQUFRLFlBQVksQ0FBQyxDQUFDO0tBQzVFO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBRUYsa0JBQWUsQ0FDWCxZQUFvQixZQUFZLEVBQ2hDLFdBQXdCLElBQUksRUFDNUIsWUFBWSxHQUFHLEVBQUUsRUFDakIsaUJBQWlCLEdBQUcsRUFBRSxFQUNoQixFQUFFO0lBQ1IsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMzQyxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQy9DLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdkMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUMvQyxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBRS9DLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRTtRQUN0QixPQUFPO1lBQ0gsVUFBVSxFQUFFLGFBQWEsUUFBUSxJQUFJLFFBQVEsSUFBSSxRQUFRLElBQUksSUFBSSxJQUFJLFFBQVEsSUFBSSxFQUFFLG9CQUFvQjtZQUN2RyxZQUFZO1NBQ2YsQ0FBQztLQUNMO0lBRUQsSUFBSSxNQUFNLEtBQUssWUFBWSxFQUFFO1FBQ3pCLE9BQU87WUFDSCxVQUFVLEVBQUUsYUFBYSxRQUFRLElBQUksSUFBSSxJQUFJLFFBQVEsSUFBSSxFQUFFLG9CQUFvQjtZQUMvRSxZQUFZLEVBQUU7Z0JBQ1YsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLG1CQUFtQixDQUFDO2dCQUN2RCxHQUFHLEVBQUUsSUFBSTtnQkFDVCxJQUFJLEVBQUU7b0JBQ0YsUUFBUTtvQkFDUixRQUFRO2lCQUNYO2dCQUNELFVBQVUsRUFBRSxLQUFLO2dCQUVqQixnQkFBZ0IsRUFBRSxJQUFJO2dCQUN0QixhQUFhLEVBQUUsSUFBSTtnQkFDbkIsZUFBZSxFQUFFLElBQUk7Z0JBQ3JCLGtCQUFrQixFQUFFLElBQUk7Z0JBQ3hCLFVBQVUsRUFBRSxJQUFJO2dCQUNoQix3QkFBd0IsRUFBRSxJQUFJO2dCQUM5QixHQUFHLGlCQUFpQjthQUN2QjtTQUNKLENBQUM7S0FDTDtJQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxTQUFTLGtCQUFrQixNQUFNLDhDQUE4QyxDQUFDLENBQUM7QUFDaEgsQ0FBQyxDQUFDIn0=
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0TW9uZ29Db25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJnZXRNb25nb0NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQTZCO0FBTzdCLE1BQU0sTUFBTSxHQUFHLENBQUMsTUFBYyxFQUFFLFFBQWdCLEVBQUUsZUFBNEIsSUFBSSxFQUFVLEVBQUU7SUFDMUYsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sSUFBSSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBRW5ELElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxZQUFZLEtBQUssSUFBSSxFQUFFO1FBQzlDLE9BQU8sWUFBWSxDQUFDO0tBQ3ZCO0lBRUQsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1FBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLE1BQU0sSUFBSSxRQUFRLFlBQVksQ0FBQyxDQUFDO0tBQzVFO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBRUYsa0JBQWUsQ0FDWCxZQUFvQixZQUFZLEVBQ2hDLFlBQVksR0FBRyxFQUFFLEVBQ2pCLGlCQUFpQixHQUFHLEVBQUUsRUFDaEIsRUFBRTtJQUNSLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDM0MsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDMUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUMvQyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNoRCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQy9DLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDL0MsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbkQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUUvRCxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUU7UUFDdEIsT0FBTztZQUNILFVBQVUsRUFBRSxHQUFHLFFBQVEsTUFBTSxRQUFRLElBQUksUUFBUSxJQUFJLFFBQVEsSUFBSSxJQUFJLElBQUksUUFBUSxHQUFHLEtBQUssRUFBRTtZQUMzRixZQUFZO1NBQ2YsQ0FBQztLQUNMO0lBRUQsSUFBSSxNQUFNLEtBQUssWUFBWSxFQUFFO1FBQ3pCLE9BQU87WUFDSCxVQUFVLEVBQUUsR0FBRyxRQUFRLE1BQU0sUUFBUSxJQUFJLElBQUksSUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFFO1lBQ25FLFlBQVksRUFBRTtnQkFDVixTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsbUJBQW1CLENBQUM7Z0JBQ3ZELEdBQUcsRUFBRSxJQUFJO2dCQUNULElBQUksRUFBRTtvQkFDRixRQUFRO29CQUNSLFFBQVE7aUJBQ1g7Z0JBQ0QsVUFBVSxFQUFFLEtBQUs7Z0JBRWpCLGdCQUFnQixFQUFFLElBQUk7Z0JBQ3RCLGFBQWEsRUFBRSxJQUFJO2dCQUNuQixlQUFlLEVBQUUsSUFBSTtnQkFDckIsa0JBQWtCLEVBQUUsSUFBSTtnQkFDeEIsVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLHdCQUF3QixFQUFFLElBQUk7Z0JBQzlCLEdBQUcsaUJBQWlCO2FBQ3ZCO1NBQ0osQ0FBQztLQUNMO0lBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLFNBQVMsa0JBQWtCLE1BQU0sOENBQThDLENBQUMsQ0FBQztBQUNoSCxDQUFDLENBQUMifQ==
@@ -5,8 +5,13 @@ interface Config {
5
5
  mongoOptions: Record<string, any>,
6
6
  }
7
7
 
8
- const getEnv = (prefix: string, variable: string): string => {
8
+ const getEnv = (prefix: string, variable: string, defaultValue: string|null = null): string => {
9
9
  const value = process.env[`${prefix}_${variable}`];
10
+
11
+ if (value === undefined && defaultValue !== null) {
12
+ return defaultValue;
13
+ }
14
+
10
15
  if (value === undefined) {
11
16
  throw new Error(`Environment variable "${prefix}_${variable}" missing.`);
12
17
  }
@@ -16,26 +21,28 @@ const getEnv = (prefix: string, variable: string): string => {
16
21
 
17
22
  export default (
18
23
  envPrefix: string = 'DOCUMENTDB',
19
- database: string|null = null,
20
24
  mongoOptions = {},
21
25
  documentDbOptions = {},
22
26
  ): Config => {
23
27
  const engine = getEnv(envPrefix, 'ENGINE');
28
+ const protocol = getEnv(envPrefix, 'PROTOCOL', 'mongodb');
24
29
  const endpoint = getEnv(envPrefix, 'ENDPOINT');
25
- const port = getEnv(envPrefix, 'PORT');
30
+ const port = getEnv(envPrefix, 'PORT', '27017');
26
31
  const username = getEnv(envPrefix, 'USERNAME');
27
32
  const password = getEnv(envPrefix, 'PASSWORD');
33
+ const database = getEnv(envPrefix, 'DATABASE', '');
34
+ const query = getEnv(envPrefix, 'QUERY', '?retryWrites=false');
28
35
 
29
36
  if (engine === 'mongodb') {
30
37
  return {
31
- mongodbUrl: `mongodb://${username}:${password}@${endpoint}:${port}/${database || ''}?retryWrites=false`,
38
+ mongodbUrl: `${protocol}://${username}:${password}@${endpoint}:${port}/${database}${query}`,
32
39
  mongoOptions,
33
40
  };
34
41
  }
35
42
 
36
43
  if (engine === 'documentdb') {
37
44
  return {
38
- mongodbUrl: `mongodb://${endpoint}:${port}/${database || ''}?retryWrites=false`,
45
+ mongodbUrl: `${protocol}://${endpoint}:${port}/${database}${query}`,
39
46
  mongoOptions: {
40
47
  tlsCAFile: path.resolve(__dirname, 'global-bundle.pem'),
41
48
  tls: true,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@storyous/mongodb",
3
- "version": "1.1.3",
3
+ "version": "1.2.0",
4
4
  "description": "",
5
5
  "homepage": "https://github.com/Storyous/mono-utils#readme",
6
6
  "license": "ISC",
@@ -46,5 +46,5 @@
46
46
  "peerDependencies": {
47
47
  "mongodb": ">=4 <5"
48
48
  },
49
- "gitHead": "65e784291d3ada5ea177843b3057f3b5cffa8a82"
49
+ "gitHead": "f3f36e4b3b32dcf352b09e03187bce6bdc5134ec"
50
50
  }