@storyous/mongodb 1.7.3 → 1.7.4-beta.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 +134 -134
- package/lib/appData/index.d.ts +12 -12
- package/lib/appData/index.js +39 -39
- package/lib/appData/index.ts +48 -48
- package/lib/concurrentTask.d.ts +9 -9
- package/lib/concurrentTask.js +19 -19
- package/lib/concurrentTask.ts +30 -30
- package/lib/fixtures.d.ts +5 -5
- package/lib/fixtures.js +27 -27
- package/lib/fixtures.ts +36 -36
- package/lib/getCollection.d.ts +3 -3
- package/lib/getCollection.js +8 -8
- package/lib/getCollection.ts +5 -5
- package/lib/getMongoConfig.d.ts +6 -6
- package/lib/getMongoConfig.js +87 -86
- package/lib/getMongoConfig.ts +79 -78
- package/lib/getMongoLocker.d.ts +10 -10
- package/lib/getMongoLocker.js +52 -52
- package/lib/getMongoLocker.ts +71 -71
- package/lib/global-bundle.pem +3028 -2876
- package/lib/index.d.ts +15 -15
- package/lib/index.js +35 -35
- package/lib/index.ts +34 -34
- package/lib/migrations/Migration.d.ts +6 -6
- package/lib/migrations/Migration.js +21 -21
- package/lib/migrations/Migration.ts +29 -29
- package/lib/migrations/MigrationsStore.d.ts +13 -13
- package/lib/migrations/MigrationsStore.js +64 -64
- package/lib/migrations/MigrationsStore.ts +81 -81
- package/lib/migrations/runMigrations.d.ts +12 -12
- package/lib/migrations/runMigrations.js +49 -49
- package/lib/migrations/runMigrations.ts +57 -57
- package/lib/migrations/template.d.ts +3 -3
- package/lib/migrations/template.js +10 -10
- package/lib/migrations/template.ts +7 -7
- package/lib/mongoClient.d.ts +8 -8
- package/lib/mongoClient.js +17 -17
- package/lib/mongoClient.ts +25 -25
- package/lib/mongoErrorCodes.d.ts +6 -6
- package/lib/mongoErrorCodes.js +10 -10
- package/lib/mongoErrorCodes.ts +10 -10
- package/lib/mongoLocker.d.ts +3 -3
- package/lib/mongoLocker.js +16 -16
- package/lib/mongoLocker.ts +15 -15
- package/lib/withTransaction.d.ts +3 -3
- package/lib/withTransaction.js +20 -20
- package/lib/withTransaction.ts +24 -24
- package/package.json +2 -2
package/lib/fixtures.js
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const lodash_1 = require("lodash");
|
|
4
|
-
const fixtures = {
|
|
5
|
-
ensureInCollection(_fixtures, collection) {
|
|
6
|
-
const fixtureIds = [];
|
|
7
|
-
const objectMap = {};
|
|
8
|
-
_fixtures.forEach((object) => {
|
|
9
|
-
fixtureIds.push(object._id);
|
|
10
|
-
objectMap[object._id.toString()] = object;
|
|
11
|
-
});
|
|
12
|
-
return collection.find({ _id: { $in: fixtureIds } })
|
|
13
|
-
.toArray()
|
|
14
|
-
.then((existing) => {
|
|
15
|
-
existing.forEach((object) => {
|
|
16
|
-
const stringId = object._id.toString();
|
|
17
|
-
delete objectMap[stringId];
|
|
18
|
-
});
|
|
19
|
-
const filteredObjects = (0, lodash_1.toArray)(objectMap);
|
|
20
|
-
if (filteredObjects.length) {
|
|
21
|
-
return collection.insertMany(filteredObjects);
|
|
22
|
-
}
|
|
23
|
-
return Promise.resolve(null);
|
|
24
|
-
});
|
|
25
|
-
},
|
|
26
|
-
};
|
|
27
|
-
exports.default = fixtures;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const lodash_1 = require("lodash");
|
|
4
|
+
const fixtures = {
|
|
5
|
+
ensureInCollection(_fixtures, collection) {
|
|
6
|
+
const fixtureIds = [];
|
|
7
|
+
const objectMap = {};
|
|
8
|
+
_fixtures.forEach((object) => {
|
|
9
|
+
fixtureIds.push(object._id);
|
|
10
|
+
objectMap[object._id.toString()] = object;
|
|
11
|
+
});
|
|
12
|
+
return collection.find({ _id: { $in: fixtureIds } })
|
|
13
|
+
.toArray()
|
|
14
|
+
.then((existing) => {
|
|
15
|
+
existing.forEach((object) => {
|
|
16
|
+
const stringId = object._id.toString();
|
|
17
|
+
delete objectMap[stringId];
|
|
18
|
+
});
|
|
19
|
+
const filteredObjects = (0, lodash_1.toArray)(objectMap);
|
|
20
|
+
if (filteredObjects.length) {
|
|
21
|
+
return collection.insertMany(filteredObjects);
|
|
22
|
+
}
|
|
23
|
+
return Promise.resolve(null);
|
|
24
|
+
});
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
exports.default = fixtures;
|
|
28
28
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJmaXh0dXJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG1DQUFpQztBQUdqQyxNQUFNLFFBQVEsR0FBRztJQUNiLGtCQUFrQixDQUFFLFNBQXFCLEVBQUUsVUFBc0I7UUFDN0QsTUFBTSxVQUFVLEdBQWUsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sU0FBUyxHQUE2QixFQUFFLENBQUM7UUFFL0MsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3pCLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzVCLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBQzlDLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUNsQixFQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUMvQjthQUNJLE9BQU8sRUFBRTthQUNULElBQUksQ0FDRCxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ1QsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUN4QixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN2QyxPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMvQixDQUFDLENBQUMsQ0FBQztZQUVILE1BQU0sZUFBZSxHQUFlLElBQUEsZ0JBQU8sRUFBQyxTQUFTLENBQUMsQ0FBQztZQUV2RCxJQUFJLGVBQWUsQ0FBQyxNQUFNLEVBQUU7Z0JBQ3hCLE9BQU8sVUFBVSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQzthQUNqRDtZQUVELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNmLENBQUM7Q0FDSixDQUFDO0FBRUYsa0JBQWUsUUFBUSxDQUFDIn0=
|
package/lib/fixtures.ts
CHANGED
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
import { toArray } from 'lodash';
|
|
2
|
-
import { Collection, Document, ObjectId } from 'mongodb';
|
|
3
|
-
|
|
4
|
-
const fixtures = {
|
|
5
|
-
ensureInCollection (_fixtures: Document[], collection: Collection): Promise<any> {
|
|
6
|
-
const fixtureIds: ObjectId[] = [];
|
|
7
|
-
const objectMap: Record<string, Document> = {};
|
|
8
|
-
|
|
9
|
-
_fixtures.forEach((object) => {
|
|
10
|
-
fixtureIds.push(object._id);
|
|
11
|
-
objectMap[object._id.toString()] = object;
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
return collection.find(
|
|
15
|
-
{ _id: { $in: fixtureIds } },
|
|
16
|
-
)
|
|
17
|
-
.toArray()
|
|
18
|
-
.then(
|
|
19
|
-
(existing) => {
|
|
20
|
-
existing.forEach((object) => {
|
|
21
|
-
const stringId = object._id.toString();
|
|
22
|
-
delete objectMap[stringId];
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
const filteredObjects: Document[] = toArray(objectMap);
|
|
26
|
-
|
|
27
|
-
if (filteredObjects.length) {
|
|
28
|
-
return collection.insertMany(filteredObjects);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
return Promise.resolve(null);
|
|
32
|
-
});
|
|
33
|
-
},
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
export default fixtures;
|
|
1
|
+
import { toArray } from 'lodash';
|
|
2
|
+
import { Collection, Document, ObjectId } from 'mongodb';
|
|
3
|
+
|
|
4
|
+
const fixtures = {
|
|
5
|
+
ensureInCollection (_fixtures: Document[], collection: Collection): Promise<any> {
|
|
6
|
+
const fixtureIds: ObjectId[] = [];
|
|
7
|
+
const objectMap: Record<string, Document> = {};
|
|
8
|
+
|
|
9
|
+
_fixtures.forEach((object) => {
|
|
10
|
+
fixtureIds.push(object._id);
|
|
11
|
+
objectMap[object._id.toString()] = object;
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
return collection.find(
|
|
15
|
+
{ _id: { $in: fixtureIds } },
|
|
16
|
+
)
|
|
17
|
+
.toArray()
|
|
18
|
+
.then(
|
|
19
|
+
(existing) => {
|
|
20
|
+
existing.forEach((object) => {
|
|
21
|
+
const stringId = object._id.toString();
|
|
22
|
+
delete objectMap[stringId];
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
const filteredObjects: Document[] = toArray(objectMap);
|
|
26
|
+
|
|
27
|
+
if (filteredObjects.length) {
|
|
28
|
+
return collection.insertMany(filteredObjects);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return Promise.resolve(null);
|
|
32
|
+
});
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
export default fixtures;
|
package/lib/getCollection.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { Collection, Document } from 'mongodb';
|
|
2
|
-
declare const _default: <T extends Document = Document>(name: string) => Collection<T>;
|
|
3
|
-
export default _default;
|
|
1
|
+
import { Collection, Document } from 'mongodb';
|
|
2
|
+
declare const _default: <T extends Document = Document>(name: string) => Collection<T>;
|
|
3
|
+
export default _default;
|
package/lib/getCollection.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const mongoClient_1 = __importDefault(require("./mongoClient"));
|
|
7
|
-
exports.default = (name) => mongoClient_1.default
|
|
8
|
-
.getClient().db().collection(name);
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const mongoClient_1 = __importDefault(require("./mongoClient"));
|
|
7
|
+
exports.default = (name) => mongoClient_1.default
|
|
8
|
+
.getClient().db().collection(name);
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0Q29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImdldENvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSxnRUFBd0M7QUFFeEMsa0JBQWUsQ0FBZ0MsSUFBWSxFQUFpQixFQUFFLENBQUMscUJBQVc7S0FDckYsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDIn0=
|
package/lib/getCollection.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Collection, Document } from 'mongodb';
|
|
2
|
-
import mongoClient from './mongoClient';
|
|
3
|
-
|
|
4
|
-
export default <T extends Document = Document>(name: string): Collection<T> => mongoClient
|
|
5
|
-
.getClient().db().collection(name);
|
|
1
|
+
import { Collection, Document } from 'mongodb';
|
|
2
|
+
import mongoClient from './mongoClient';
|
|
3
|
+
|
|
4
|
+
export default <T extends Document = Document>(name: string): Collection<T> => mongoClient
|
|
5
|
+
.getClient().db().collection(name);
|
package/lib/getMongoConfig.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
interface Config {
|
|
2
|
-
mongodbUrl: string;
|
|
3
|
-
mongoOptions: Record<string, any>;
|
|
4
|
-
}
|
|
5
|
-
declare const _default: (envPrefix?: string, mongoOptions?: {}, documentDbOptions?: {}) => Config;
|
|
6
|
-
export default _default;
|
|
1
|
+
interface Config {
|
|
2
|
+
mongodbUrl: string;
|
|
3
|
+
mongoOptions: Record<string, any>;
|
|
4
|
+
}
|
|
5
|
+
declare const _default: (envPrefix?: string, mongoOptions?: {}, documentDbOptions?: {}) => Config;
|
|
6
|
+
export default _default;
|
package/lib/getMongoConfig.js
CHANGED
|
@@ -1,86 +1,87 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
const path = __importStar(require("path"));
|
|
27
|
-
const getEnv = (prefix, variable, defaultValue = null) => {
|
|
28
|
-
const value = process.env[`${prefix}_${variable}`];
|
|
29
|
-
if (value === undefined && defaultValue !== null) {
|
|
30
|
-
return defaultValue;
|
|
31
|
-
}
|
|
32
|
-
if (value === undefined) {
|
|
33
|
-
throw new Error(`Environment variable "${prefix}_${variable}" missing.`);
|
|
34
|
-
}
|
|
35
|
-
return value;
|
|
36
|
-
};
|
|
37
|
-
exports.default = (envPrefix = 'DOCUMENTDB', mongoOptions = {}, documentDbOptions = {}) => {
|
|
38
|
-
const uri = getEnv(envPrefix, 'URI', '');
|
|
39
|
-
if (uri) {
|
|
40
|
-
return {
|
|
41
|
-
mongodbUrl: uri,
|
|
42
|
-
mongoOptions,
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
const engine = getEnv(envPrefix, 'ENGINE');
|
|
46
|
-
const protocol = getEnv(envPrefix, 'PROTOCOL', 'mongodb');
|
|
47
|
-
const endpoint = getEnv(envPrefix, 'ENDPOINT');
|
|
48
|
-
const port = getEnv(envPrefix, 'PORT', '');
|
|
49
|
-
const username = getEnv(envPrefix, 'USERNAME');
|
|
50
|
-
const password = getEnv(envPrefix, 'PASSWORD');
|
|
51
|
-
const database = getEnv(envPrefix, 'DATABASE', '');
|
|
52
|
-
const query = getEnv(envPrefix, 'QUERY', '');
|
|
53
|
-
const fullPort = port !== '' ? `:${port}` : '';
|
|
54
|
-
const fullDatabase = database !== '' ? `/${database}` : '';
|
|
55
|
-
const fullQuery = query !== '' ? `?${query}` : '';
|
|
56
|
-
if (engine === 'mongodb') {
|
|
57
|
-
return {
|
|
58
|
-
mongodbUrl: `${protocol}://${username}:${password}@${endpoint}${fullPort}${fullDatabase}${fullQuery}`,
|
|
59
|
-
mongoOptions,
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
if (engine === 'documentdb') {
|
|
63
|
-
return {
|
|
64
|
-
mongodbUrl: `${protocol}://${endpoint}${fullPort}${fullDatabase}${fullQuery}`,
|
|
65
|
-
mongoOptions: {
|
|
66
|
-
tlsCAFile: path.resolve(__dirname, 'global-bundle.pem'),
|
|
67
|
-
tls: true,
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
};
|
|
86
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
const path = __importStar(require("path"));
|
|
27
|
+
const getEnv = (prefix, variable, defaultValue = null) => {
|
|
28
|
+
const value = process.env[`${prefix}_${variable}`];
|
|
29
|
+
if (value === undefined && defaultValue !== null) {
|
|
30
|
+
return defaultValue;
|
|
31
|
+
}
|
|
32
|
+
if (value === undefined) {
|
|
33
|
+
throw new Error(`Environment variable "${prefix}_${variable}" missing.`);
|
|
34
|
+
}
|
|
35
|
+
return value;
|
|
36
|
+
};
|
|
37
|
+
exports.default = (envPrefix = 'DOCUMENTDB', mongoOptions = {}, documentDbOptions = {}) => {
|
|
38
|
+
const uri = getEnv(envPrefix, 'URI', '');
|
|
39
|
+
if (uri) {
|
|
40
|
+
return {
|
|
41
|
+
mongodbUrl: uri,
|
|
42
|
+
mongoOptions,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
const engine = getEnv(envPrefix, 'ENGINE');
|
|
46
|
+
const protocol = getEnv(envPrefix, 'PROTOCOL', 'mongodb');
|
|
47
|
+
const endpoint = getEnv(envPrefix, 'ENDPOINT');
|
|
48
|
+
const port = getEnv(envPrefix, 'PORT', '');
|
|
49
|
+
const username = getEnv(envPrefix, 'USERNAME');
|
|
50
|
+
const password = getEnv(envPrefix, 'PASSWORD');
|
|
51
|
+
const database = getEnv(envPrefix, 'DATABASE', '');
|
|
52
|
+
const query = getEnv(envPrefix, 'QUERY', '');
|
|
53
|
+
const fullPort = port !== '' ? `:${port}` : '';
|
|
54
|
+
const fullDatabase = database !== '' ? `/${database}` : '';
|
|
55
|
+
const fullQuery = query !== '' ? `?${query}` : '';
|
|
56
|
+
if (engine === 'mongodb') {
|
|
57
|
+
return {
|
|
58
|
+
mongodbUrl: `${protocol}://${username}:${password}@${endpoint}${fullPort}${fullDatabase}${fullQuery}`,
|
|
59
|
+
mongoOptions,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
if (engine === 'documentdb') {
|
|
63
|
+
return {
|
|
64
|
+
mongodbUrl: `${protocol}://${endpoint}${fullPort}${fullDatabase}${fullQuery}`,
|
|
65
|
+
mongoOptions: {
|
|
66
|
+
tlsCAFile: path.resolve(__dirname, 'global-bundle.pem'),
|
|
67
|
+
tls: true,
|
|
68
|
+
sslValidate: true,
|
|
69
|
+
auth: {
|
|
70
|
+
username,
|
|
71
|
+
password,
|
|
72
|
+
},
|
|
73
|
+
replicaSet: 'rs0',
|
|
74
|
+
retryWrites: false,
|
|
75
|
+
connectTimeoutMS: 5000,
|
|
76
|
+
maxIdleTimeMS: 5000,
|
|
77
|
+
socketTimeoutMS: 5000,
|
|
78
|
+
waitQueueTimeoutMS: 5000,
|
|
79
|
+
wtimeoutMS: 5000,
|
|
80
|
+
serverSelectionTimeoutMS: 5000,
|
|
81
|
+
...documentDbOptions,
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
throw new Error(`Invalid ${envPrefix}_ENGINE value "${engine}", values "mongodb" or "documentdb" allowed.`);
|
|
86
|
+
};
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0TW9uZ29Db25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJnZXRNb25nb0NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQTZCO0FBTzdCLE1BQU0sTUFBTSxHQUFHLENBQUMsTUFBYyxFQUFFLFFBQWdCLEVBQUUsZUFBNEIsSUFBSSxFQUFVLEVBQUU7SUFDMUYsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sSUFBSSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBRW5ELElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxZQUFZLEtBQUssSUFBSSxFQUFFO1FBQzlDLE9BQU8sWUFBWSxDQUFDO0tBQ3ZCO0lBRUQsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1FBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLE1BQU0sSUFBSSxRQUFRLFlBQVksQ0FBQyxDQUFDO0tBQzVFO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBRUYsa0JBQWUsQ0FDWCxZQUFvQixZQUFZLEVBQ2hDLFlBQVksR0FBRyxFQUFFLEVBQ2pCLGlCQUFpQixHQUFHLEVBQUUsRUFDaEIsRUFBRTtJQUNSLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLElBQUksR0FBRyxFQUFFO1FBQ0wsT0FBTztZQUNILFVBQVUsRUFBRSxHQUFHO1lBQ2YsWUFBWTtTQUNmLENBQUM7S0FDTDtJQUNELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDM0MsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDMUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUMvQyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMzQyxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQy9DLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDL0MsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbkQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFN0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQy9DLE1BQU0sWUFBWSxHQUFHLFFBQVEsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMzRCxNQUFNLFNBQVMsR0FBRyxLQUFLLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFFbEQsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFO1FBQ3RCLE9BQU87WUFDSCxVQUFVLEVBQUUsR0FBRyxRQUFRLE1BQU0sUUFBUSxJQUFJLFFBQVEsSUFBSSxRQUFRLEdBQUcsUUFBUSxHQUFHLFlBQVksR0FBRyxTQUFTLEVBQUU7WUFDckcsWUFBWTtTQUNmLENBQUM7S0FDTDtJQUVELElBQUksTUFBTSxLQUFLLFlBQVksRUFBRTtRQUN6QixPQUFPO1lBQ0gsVUFBVSxFQUFFLEdBQUcsUUFBUSxNQUFNLFFBQVEsR0FBRyxRQUFRLEdBQUcsWUFBWSxHQUFHLFNBQVMsRUFBRTtZQUM3RSxZQUFZLEVBQUU7Z0JBQ1YsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLG1CQUFtQixDQUFDO2dCQUN2RCxHQUFHLEVBQUUsSUFBSTtnQkFDVCxXQUFXLEVBQUUsSUFBSTtnQkFDakIsSUFBSSxFQUFFO29CQUNGLFFBQVE7b0JBQ1IsUUFBUTtpQkFDWDtnQkFDRCxVQUFVLEVBQUUsS0FBSztnQkFDakIsV0FBVyxFQUFFLEtBQUs7Z0JBQ2xCLGdCQUFnQixFQUFFLElBQUk7Z0JBQ3RCLGFBQWEsRUFBRSxJQUFJO2dCQUNuQixlQUFlLEVBQUUsSUFBSTtnQkFDckIsa0JBQWtCLEVBQUUsSUFBSTtnQkFDeEIsVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLHdCQUF3QixFQUFFLElBQUk7Z0JBQzlCLEdBQUcsaUJBQWlCO2FBQ3ZCO1NBQ0osQ0FBQztLQUNMO0lBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLFNBQVMsa0JBQWtCLE1BQU0sOENBQThDLENBQUMsQ0FBQztBQUNoSCxDQUFDLENBQUMifQ==
|
package/lib/getMongoConfig.ts
CHANGED
|
@@ -1,78 +1,79 @@
|
|
|
1
|
-
import * as path from 'path';
|
|
2
|
-
|
|
3
|
-
interface Config {
|
|
4
|
-
mongodbUrl: string,
|
|
5
|
-
mongoOptions: Record<string, any>,
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
const getEnv = (prefix: string, variable: string, defaultValue: string|null = null): string => {
|
|
9
|
-
const value = process.env[`${prefix}_${variable}`];
|
|
10
|
-
|
|
11
|
-
if (value === undefined && defaultValue !== null) {
|
|
12
|
-
return defaultValue;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
if (value === undefined) {
|
|
16
|
-
throw new Error(`Environment variable "${prefix}_${variable}" missing.`);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
return value;
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
export default (
|
|
23
|
-
envPrefix: string = 'DOCUMENTDB',
|
|
24
|
-
mongoOptions = {},
|
|
25
|
-
documentDbOptions = {},
|
|
26
|
-
): Config => {
|
|
27
|
-
const uri = getEnv(envPrefix, 'URI', '');
|
|
28
|
-
if (uri) {
|
|
29
|
-
return {
|
|
30
|
-
mongodbUrl: uri,
|
|
31
|
-
mongoOptions,
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
const engine = getEnv(envPrefix, 'ENGINE');
|
|
35
|
-
const protocol = getEnv(envPrefix, 'PROTOCOL', 'mongodb');
|
|
36
|
-
const endpoint = getEnv(envPrefix, 'ENDPOINT');
|
|
37
|
-
const port = getEnv(envPrefix, 'PORT', '');
|
|
38
|
-
const username = getEnv(envPrefix, 'USERNAME');
|
|
39
|
-
const password = getEnv(envPrefix, 'PASSWORD');
|
|
40
|
-
const database = getEnv(envPrefix, 'DATABASE', '');
|
|
41
|
-
const query = getEnv(envPrefix, 'QUERY', '');
|
|
42
|
-
|
|
43
|
-
const fullPort = port !== '' ? `:${port}` : '';
|
|
44
|
-
const fullDatabase = database !== '' ? `/${database}` : '';
|
|
45
|
-
const fullQuery = query !== '' ? `?${query}` : '';
|
|
46
|
-
|
|
47
|
-
if (engine === 'mongodb') {
|
|
48
|
-
return {
|
|
49
|
-
mongodbUrl: `${protocol}://${username}:${password}@${endpoint}${fullPort}${fullDatabase}${fullQuery}`,
|
|
50
|
-
mongoOptions,
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
if (engine === 'documentdb') {
|
|
55
|
-
return {
|
|
56
|
-
mongodbUrl: `${protocol}://${endpoint}${fullPort}${fullDatabase}${fullQuery}`,
|
|
57
|
-
mongoOptions: {
|
|
58
|
-
tlsCAFile: path.resolve(__dirname, 'global-bundle.pem'),
|
|
59
|
-
tls: true,
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
};
|
|
1
|
+
import * as path from 'path';
|
|
2
|
+
|
|
3
|
+
interface Config {
|
|
4
|
+
mongodbUrl: string,
|
|
5
|
+
mongoOptions: Record<string, any>,
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
const getEnv = (prefix: string, variable: string, defaultValue: string|null = null): string => {
|
|
9
|
+
const value = process.env[`${prefix}_${variable}`];
|
|
10
|
+
|
|
11
|
+
if (value === undefined && defaultValue !== null) {
|
|
12
|
+
return defaultValue;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
if (value === undefined) {
|
|
16
|
+
throw new Error(`Environment variable "${prefix}_${variable}" missing.`);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
return value;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export default (
|
|
23
|
+
envPrefix: string = 'DOCUMENTDB',
|
|
24
|
+
mongoOptions = {},
|
|
25
|
+
documentDbOptions = {},
|
|
26
|
+
): Config => {
|
|
27
|
+
const uri = getEnv(envPrefix, 'URI', '');
|
|
28
|
+
if (uri) {
|
|
29
|
+
return {
|
|
30
|
+
mongodbUrl: uri,
|
|
31
|
+
mongoOptions,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
const engine = getEnv(envPrefix, 'ENGINE');
|
|
35
|
+
const protocol = getEnv(envPrefix, 'PROTOCOL', 'mongodb');
|
|
36
|
+
const endpoint = getEnv(envPrefix, 'ENDPOINT');
|
|
37
|
+
const port = getEnv(envPrefix, 'PORT', '');
|
|
38
|
+
const username = getEnv(envPrefix, 'USERNAME');
|
|
39
|
+
const password = getEnv(envPrefix, 'PASSWORD');
|
|
40
|
+
const database = getEnv(envPrefix, 'DATABASE', '');
|
|
41
|
+
const query = getEnv(envPrefix, 'QUERY', '');
|
|
42
|
+
|
|
43
|
+
const fullPort = port !== '' ? `:${port}` : '';
|
|
44
|
+
const fullDatabase = database !== '' ? `/${database}` : '';
|
|
45
|
+
const fullQuery = query !== '' ? `?${query}` : '';
|
|
46
|
+
|
|
47
|
+
if (engine === 'mongodb') {
|
|
48
|
+
return {
|
|
49
|
+
mongodbUrl: `${protocol}://${username}:${password}@${endpoint}${fullPort}${fullDatabase}${fullQuery}`,
|
|
50
|
+
mongoOptions,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if (engine === 'documentdb') {
|
|
55
|
+
return {
|
|
56
|
+
mongodbUrl: `${protocol}://${endpoint}${fullPort}${fullDatabase}${fullQuery}`,
|
|
57
|
+
mongoOptions: {
|
|
58
|
+
tlsCAFile: path.resolve(__dirname, 'global-bundle.pem'),
|
|
59
|
+
tls: true,
|
|
60
|
+
sslValidate: true,
|
|
61
|
+
auth: {
|
|
62
|
+
username,
|
|
63
|
+
password,
|
|
64
|
+
},
|
|
65
|
+
replicaSet: 'rs0',
|
|
66
|
+
retryWrites: false,
|
|
67
|
+
connectTimeoutMS: 5000,
|
|
68
|
+
maxIdleTimeMS: 5000,
|
|
69
|
+
socketTimeoutMS: 5000,
|
|
70
|
+
waitQueueTimeoutMS: 5000,
|
|
71
|
+
wtimeoutMS: 5000,
|
|
72
|
+
serverSelectionTimeoutMS: 5000,
|
|
73
|
+
...documentDbOptions,
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
throw new Error(`Invalid ${envPrefix}_ENGINE value "${engine}", values "mongodb" or "documentdb" allowed.`);
|
|
79
|
+
};
|
package/lib/getMongoLocker.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { Collection } from 'mongodb';
|
|
2
|
-
import { Key } from './mongoClient';
|
|
3
|
-
export declare type LockCallback<T> = () => Promise<T>;
|
|
4
|
-
export declare type LockerOptions = {
|
|
5
|
-
noLaterThan?: number;
|
|
6
|
-
startAttemptsDelay?: number;
|
|
7
|
-
expireIn?: number;
|
|
8
|
-
};
|
|
9
|
-
declare const _default: (collection: Collection) => Promise<(<T>(key: Key, callback: LockCallback<T>, { noLaterThan, startAttemptsDelay, expireIn }?: LockerOptions) => Promise<T>)>;
|
|
10
|
-
export default _default;
|
|
1
|
+
import { Collection } from 'mongodb';
|
|
2
|
+
import { Key } from './mongoClient';
|
|
3
|
+
export declare type LockCallback<T> = () => Promise<T>;
|
|
4
|
+
export declare type LockerOptions = {
|
|
5
|
+
noLaterThan?: number;
|
|
6
|
+
startAttemptsDelay?: number;
|
|
7
|
+
expireIn?: number;
|
|
8
|
+
};
|
|
9
|
+
declare const _default: (collection: Collection) => Promise<(<T>(key: Key, callback: LockCallback<T>, { noLaterThan, startAttemptsDelay, expireIn }?: LockerOptions) => Promise<T>)>;
|
|
10
|
+
export default _default;
|