@storyous/mongodb 1.7.5 → 1.7.6-beta.1

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.
@@ -2754,13 +2754,7 @@ JHb+6jM9tDbQLDFnYjDWpq4VpLPZhb7xPNh9gnYYTPKG4avG421EblAHqzy9D2pN
2754
2754
  kZlHtya19OUxZ/cSGci4MlOySzqzbGwUqGxEIDlY8I39VMwXaYQ8uXUN4G780VcL
2755
2755
  u46FeyRGxZGz2n3hMc805WAA1V5uir87vuirTvoSVREET97HVRGVVNJJ/FM6GXr1
2756
2756
  VKtptybbo81nefYJg9KBysxAa2Ao2x2ry/2ZxwhS6VZ6v1+90bpZA1BIYFEDXXn/
2757
- dW07HSCFnYSlgPtSc+Muh15mdr94LspYeDqNIierK9i4tB6ep7llJAnq0BU91fM2
2758
- JPeqyoTtc3m06QhLf68ccSxO4l8Hmq9kLSHO7UXgtdjfRVaffngopTNk8qK7bIb7
2759
- LrgkqhiQw/PRCZjUdyXL153/fUcsj9nFNe25gM4vcFYwH6c5trd2tUl31NTi1MfG
2760
- Mgp3d2dqxQBIYANkEjtBDMy3SqQLIo9EymqmVP8xx2A/gCBgaxvMAsI6FSWRoC7+
2761
- hqJ8XH4mFnXSHKtYMe6WPY+/XZgtAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8w
2762
- HQYDVR0OBBYEFIkXqTnllT/VJnI2NqipA4XV8rh1MA4GA1UdDwEB/wQEAwIBhjAN
2763
- BgkqhkiG9w0BAQwFAAOCAgEAKjSle8eenGeHgT8pltWCw/HzWyQruVKhfYIBfKJd
2757
+ dW0e8eenGeHgT8pltWCw/HzWyQruVKhfYIBfKJd
2764
2758
  MhV4EnH5BK7LxBIvpXGsFUrb0ThzSw0fn0zoA9jBs3i/Sj6KyeZ9qUF6b8ycDXd+
2765
2759
  wHonmJiQ7nk7UuMefaYAfs06vosgl1rI7eBHC0itexIQmKh0aX+821l4GEgEoSMf
2766
2760
  loMFTLXv2w36fPHHCsZ67ODldgcZbKNnpCTX0YrCwEYO3Pz/L398btiRcWGrewrK
@@ -2822,16 +2816,7 @@ BwwHU2VhdHRsZTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANeTsD/u
2822
2816
  NO2GpIh6bZaO76GzSv4cnimcv9n/sQSYXsGbPD+bAtnN/RvNW1avt4C0q0/ghgF1
2823
2817
  VFS8JihIrgPYIArAmDtGNEdl5PUrdi9y6QGggbRfidMDdxlRdZBe1C18ZdgERSEv
2824
2818
  UgSTPRlVczONG5qcQkUGCH83MMqL5MKQiby/Br5ZyPq6rxQMwRnQ7tROuElzyYzL
2825
- 7d6kke+PNzG1mYy4cbYdjebwANCtZ2qYRSUHAQsOgybRcSoarv2xqcjO9cEsDiRU
2826
- l97ToadGYa4VVERuTaNZxQwrld4mvzpyKuirqZltOqg0eoy8VUsaRPL3dc5aChR0
2827
- dSrBgRYmSAClcR2/2ZCWpXemikwgt031Dsc0A/+TmVurrsqszwbr0e5xqMow9LzO
2828
- MI/JtLd0VFtoOkL/7GG2tN8a+7gnLFxpv+AQ0DH5n4k/BY/IyS+H1erqSJhOTQ11
2829
- vDOFTM5YplB9hWV9fp5PRs54ILlHTlZLpWGs3I2BrJwzRtg/rOlvsosqcge9ryai
2830
- AKm2j+JBg5wJ19R8oxRy8cfrNTftZePpISaLTyV2B16w/GsSjqixjTQe9LRN2DHk
2831
- cC+HPqYyzW2a3pUVyTGHhW6a7YsPBs9yzt6hAgMBAAGjQjBAMA8GA1UdEwEB/wQF
2832
- MAMBAf8wHQYDVR0OBBYEFIqA8QkOs2cSirOpCuKuOh9VDfJfMA4GA1UdDwEB/wQE
2833
- AwIBhjANBgkqhkiG9w0BAQwFAAOCAgEAOUI90mEIsa+vNJku0iUwdBMnHiO4gm7E
2834
- 5JloP7JG0xUr7d0hypDorMM3zVDAL+aZRHsq8n934Cywj7qEp1304UF6538ByGdz
2819
+ 7d6kAL+aZRHsq8n934Cywj7qEp1304UF6538ByGdz
2835
2820
  tkfacJsUSYfdlNJE9KbA4T+U+7SNhj9jvePpVjdQbhgzxITE9f8CxY/eM40yluJJ
2836
2821
  PhbaWvOiRagzo74wttlcDerzLT6Y/JrVpWhnB7IY8HvzK+BwAdaCsBUPC3HF+kth
2837
2822
  CIqLq7J3YArTToejWZAp5OOI6DLPM1MEudyoejL02w0jq0CChmZ5i55ElEMnapRX
@@ -2896,9 +2881,7 @@ MIICrjCCAjSgAwIBAgIRAL9SdzVPcpq7GOpvdGoM80IwCgYIKoZIzj0EAwMwgZYx
2896
2881
  CzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMu
2897
2882
  MRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTEvMC0GA1UEAwwmQW1h
2898
2883
  em9uIFJEUyBldS13ZXN0LTEgUm9vdCBDQSBFQ0MzODQgRzExEDAOBgNVBAcMB1Nl
2899
- YXR0bGUwIBcNMjEwNTIwMTY1ODA3WhgPMjEyMTA1MjAxNzU4MDdaMIGWMQswCQYD
2900
- VQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEG
2901
- A1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExLzAtBgNVBAMMJkFtYXpvbiBS
2884
+ GA1UECAwCV0ExLzAtBgNVBAMMJkFtYXpvbiBS
2902
2885
  RFMgZXUtd2VzdC0xIFJvb3QgQ0EgRUNDMzg0IEcxMRAwDgYDVQQHDAdTZWF0dGxl
2903
2886
  MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEJWDgXebvwjR+Ce+hxKOLbnsfN5W5dOlP
2904
2887
  Zn8kwWnD+SLkU81Eac/BDJsXGrMk6jFD1vg16PEkoSevsuYWlC8xR6FmT6F6pmeh
@@ -2928,14 +2911,7 @@ JaAOUofBfsDsk4X4SUFE7xJa1FZAiu2lqB/E+y7jnWOvFRalzxVJ2Y+D/ZfUfrnK
2928
2911
  4pfKtyD1C6ni1celrZrAwLrJ3PoXPSg4aJKh8+CHex477SRsGj8KP19FG8r0P5AG
2929
2912
  8lS1V+enFCNvT5KqEBpDZ/Y5SQAhAYFUX+zH4/n4ql0l/emS+x23kSRrF+yMkB9q
2930
2913
  lhC/fMk6Pi3tICBjrDQ8XAxv56hfud9w6+/ljYB2uQ1iUYtlE3JdIiuE+3ws26O8
2931
- i7PLMD9zQmo+sVi12pLHfBHQ6RRHtdVRXbXRAgMBAAGjQjBAMA8GA1UdEwEB/wQF
2932
- MAMBAf8wHQYDVR0OBBYEFBFot08ipEL9ZUXCG4lagmF53C0/MA4GA1UdDwEB/wQE
2933
- AwIBhjANBgkqhkiG9w0BAQwFAAOCAgEAi2mcZi6cpaeqJ10xzMY0F3L2eOKYnlEQ
2934
- h6QyhmNKCUF05q5u+cok5KtznzqMwy7TFOZtbVHl8uUX+xvgq/MQCxqFAnuStBXm
2935
- gr2dg1h509ZwvTdk7TDxGdftvPCfnPNJBFbMSq4CZtNcOFBg9Rj8c3Yj+Qvwd56V
2936
- zWs65BUkDNJrXmxdvhJZjUkMa9vi/oFN+M84xXeZTaC5YDYNZZeW9706QqDbAVES
2937
- 5ulvKLavB8waLI/lhRBK5/k0YykCMl0A8Togt8D1QsQ0eWWbIM8/HYJMPVFhJ8Wj
2938
- vT1p/YVeDA3Bo1iKDOttgC5vILf5Rw1ZEeDxjf/r8A7VS13D3OLjBmc31zxRTs3n
2914
+ i7PLMD9zQmo+\r8A7VS13D3OLjBmc31zxRTs3n
2939
2915
  XvHKP9MieQHn9GE44tEYPjK3/yC6BDFzCBlvccYHmqGb+jvDEXEBXKzimdC9mcDl
2940
2916
  f4BBQWGJBH5jkbU9p6iti19L/zHhz7qU6UJWbxY40w92L9jS9Utljh4A0LCTjlnR
2941
2917
  NQUgjnGC6K+jkw8hj0LTC5Ip87oqoT9w7Av5EJ3VJ4hcnmNMXJJ1DkWYdnytcGpO
@@ -1,15 +1,23 @@
1
+ import fs from 'fs';
1
2
  import { defaultsDeep } from 'lodash';
2
3
  import { MongoClient, MongoClientOptions, ObjectId } from 'mongodb';
3
4
 
4
5
  export type Key = string | number | ObjectId;
5
6
 
7
+ const ca = fs.readFileSync('global-bundle.pem');
8
+
6
9
  const mongoClient = {
7
10
  _client: <MongoClient|null> null,
8
11
 
9
12
  init (mongodbUrl: string, mongoOptions?: MongoClientOptions) {
10
13
  this._client = new MongoClient(
11
14
  mongodbUrl,
12
- defaultsDeep(mongoOptions),
15
+ {
16
+ ...defaultsDeep(mongoOptions),
17
+ ssl: true,
18
+ sslValidate: true,
19
+ sslCA: ca,
20
+ },
13
21
  );
14
22
  },
15
23
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@storyous/mongodb",
3
- "version": "1.7.5",
3
+ "version": "1.7.6-beta.1",
4
4
  "description": "",
5
5
  "homepage": "https://github.com/Storyous/mono-utils#readme",
6
6
  "license": "ISC",
@@ -45,6 +45,5 @@
45
45
  },
46
46
  "peerDependencies": {
47
47
  "mongodb": ">=4 <5"
48
- },
49
- "gitHead": "8f7892674a727e5f8cb5ba1210a679f0c2babded"
48
+ }
50
49
  }
@@ -1,12 +0,0 @@
1
- import { Collection, InsertOneResult, WithId } from 'mongodb';
2
- import { Key } from '../mongoClient';
3
- declare const appData: {
4
- readonly _collection: Collection<any>;
5
- _failReads: number;
6
- ensureDocumentExists(document: {
7
- _id: Key;
8
- }): Promise<Document | InsertOneResult | null>;
9
- updateDocument(_id: Key, update: Object, upsert?: boolean): Promise<WithId<any | null>>;
10
- getDocument(_id: Key): Promise<WithId<any | null>>;
11
- };
12
- export default appData;
@@ -1,40 +0,0 @@
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 getCollection_1 = __importDefault(require("../getCollection"));
7
- const mongoDuplicateKeyErrorCodes = [11000, 11001];
8
- const appData = {
9
- get _collection() {
10
- return (0, getCollection_1.default)('appData');
11
- },
12
- _failReads: 0,
13
- ensureDocumentExists(document) {
14
- return this._collection
15
- .insertOne(document)
16
- .catch((err) => (new Promise((resolve, reject) => {
17
- if (!mongoDuplicateKeyErrorCodes.includes(err.code)) {
18
- reject(err);
19
- return;
20
- }
21
- resolve(null);
22
- })));
23
- },
24
- updateDocument(_id, update, upsert = false) {
25
- const query = { _id };
26
- const options = {
27
- returnOriginal: false,
28
- upsert,
29
- };
30
- return this._collection
31
- .findOneAndUpdate(query, update, options)
32
- .then((result) => result.value);
33
- },
34
- getDocument(_id) {
35
- const query = { _id };
36
- return this._collection.findOne(query);
37
- },
38
- };
39
- exports.default = appData;
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLHFFQUE2QztBQUc3QyxNQUFNLDJCQUEyQixHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBRW5ELE1BQU0sT0FBTyxHQUFHO0lBRVosSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFBLHVCQUFhLEVBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFVBQVUsRUFBRSxDQUFDO0lBRWIsb0JBQW9CLENBQUUsUUFBc0I7UUFDeEMsT0FBTyxJQUFJLENBQUMsV0FBVzthQUNsQixTQUFTLENBQUMsUUFBZSxDQUFDO2FBQzFCLEtBQUssQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsQ0FDakIsSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDNUIsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ2pELE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFFWixPQUFPO2FBQ1Y7WUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQ0wsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELGNBQWMsQ0FBRSxHQUFRLEVBQUUsTUFBYyxFQUFFLFNBQWtCLEtBQUs7UUFDN0QsTUFBTSxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUN0QixNQUFNLE9BQU8sR0FBRztZQUNaLGNBQWMsRUFBRSxLQUFLO1lBQ3JCLE1BQU07U0FDVCxDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsV0FBVzthQUNsQixnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQzthQUN4QyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsV0FBVyxDQUFFLEdBQVE7UUFDakIsTUFBTSxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUN0QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLENBQUM7Q0FFSixDQUFDO0FBRUYsa0JBQWUsT0FBTyxDQUFDIn0=
@@ -1,9 +0,0 @@
1
- /**
2
- * noLaterThan = In what time by now should be the latest attempt executed
3
- * startAttemptsDelay = Starting attempts delay
4
- */
5
- declare const concurrentTask: <T>(task: () => Promise<T>, { noLaterThan, startAttemptsDelay }?: {
6
- noLaterThan?: number | undefined;
7
- startAttemptsDelay?: number | undefined;
8
- }) => Promise<any>;
9
- export default concurrentTask;
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const errors_1 = require("@storyous/errors");
4
- const attemptRecursive = async (task, startAttemptsDelay, latestTime, callNumber) => (task().catch(async (err) => {
5
- if (errors_1.AppError.isConcurrentRequestError(err)) {
6
- const nextCallDelay = startAttemptsDelay * (callNumber ** 2);
7
- if ((Date.now() + nextCallDelay) < latestTime) {
8
- await new Promise((resolve) => { setTimeout(resolve, nextCallDelay); });
9
- return attemptRecursive(task, startAttemptsDelay, latestTime, ++callNumber);
10
- }
11
- }
12
- throw err;
13
- }));
14
- /**
15
- * noLaterThan = In what time by now should be the latest attempt executed
16
- * startAttemptsDelay = Starting attempts delay
17
- */
18
- const concurrentTask = async (task, { noLaterThan = 2000, startAttemptsDelay = 50 } = {}) => (attemptRecursive(task, startAttemptsDelay, Date.now() + noLaterThan, 1));
19
- exports.default = concurrentTask;
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uY3VycmVudFRhc2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb25jdXJyZW50VGFzay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDZDQUE0QztBQUU1QyxNQUFNLGdCQUFnQixHQUFHLEtBQUssRUFDMUIsSUFBc0IsRUFDdEIsa0JBQTBCLEVBQzFCLFVBQWtCLEVBQ2xCLFVBQWtCLEVBQ04sRUFBRSxDQUFDLENBQ2YsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFVLEVBQUUsRUFBRTtJQUM5QixJQUFJLGlCQUFRLENBQUMsd0JBQXdCLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDeEMsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLEdBQUcsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxhQUFhLENBQUMsR0FBRyxVQUFVLEVBQUU7WUFDM0MsTUFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLEdBQUcsVUFBVSxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hFLE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQy9FO0tBQ0o7SUFFRCxNQUFNLEdBQUcsQ0FBQztBQUNkLENBQUMsQ0FBQyxDQUNMLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLGNBQWMsR0FBRyxLQUFLLEVBQU0sSUFBc0IsRUFBRSxFQUFFLFdBQVcsR0FBRyxJQUFJLEVBQUUsa0JBQWtCLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUMvRyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FDMUUsQ0FBQztBQUVGLGtCQUFlLGNBQWMsQ0FBQyJ9
package/lib/fixtures.d.ts DELETED
@@ -1,5 +0,0 @@
1
- import { Collection, Document } from 'mongodb';
2
- declare const fixtures: {
3
- ensureInCollection(_fixtures: Document[], collection: Collection): Promise<any>;
4
- };
5
- export default fixtures;
package/lib/fixtures.js DELETED
@@ -1,28 +0,0 @@
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
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJmaXh0dXJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG1DQUFpQztBQUdqQyxNQUFNLFFBQVEsR0FBRztJQUNiLGtCQUFrQixDQUFFLFNBQXFCLEVBQUUsVUFBc0I7UUFDN0QsTUFBTSxVQUFVLEdBQWUsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sU0FBUyxHQUE2QixFQUFFLENBQUM7UUFFL0MsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3pCLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzVCLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBQzlDLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUNsQixFQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUMvQjthQUNJLE9BQU8sRUFBRTthQUNULElBQUksQ0FDRCxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ1QsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUN4QixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN2QyxPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMvQixDQUFDLENBQUMsQ0FBQztZQUVILE1BQU0sZUFBZSxHQUFlLElBQUEsZ0JBQU8sRUFBQyxTQUFTLENBQUMsQ0FBQztZQUV2RCxJQUFJLGVBQWUsQ0FBQyxNQUFNLEVBQUU7Z0JBQ3hCLE9BQU8sVUFBVSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQzthQUNqRDtZQUVELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNmLENBQUM7Q0FDSixDQUFDO0FBRUYsa0JBQWUsUUFBUSxDQUFDIn0=
@@ -1,3 +0,0 @@
1
- import { Collection, Document } from 'mongodb';
2
- declare const _default: <T extends Document = Document>(name: string) => Collection<T>;
3
- export default _default;
@@ -1,9 +0,0 @@
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
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0Q29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImdldENvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSxnRUFBd0M7QUFFeEMsa0JBQWUsQ0FBZ0MsSUFBWSxFQUFpQixFQUFFLENBQUMscUJBQVc7S0FDckYsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDIn0=
@@ -1,6 +0,0 @@
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,86 +0,0 @@
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
- auth: {
69
- username,
70
- password,
71
- },
72
- replicaSet: 'rs0',
73
- retryWrites: false,
74
- connectTimeoutMS: 5000,
75
- maxIdleTimeMS: 5000,
76
- socketTimeoutMS: 5000,
77
- waitQueueTimeoutMS: 5000,
78
- wtimeoutMS: 5000,
79
- serverSelectionTimeoutMS: 5000,
80
- ...documentDbOptions,
81
- },
82
- };
83
- }
84
- throw new Error(`Invalid ${envPrefix}_ENGINE value "${engine}", values "mongodb" or "documentdb" allowed.`);
85
- };
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0TW9uZ29Db25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJnZXRNb25nb0NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQTZCO0FBTzdCLE1BQU0sTUFBTSxHQUFHLENBQUMsTUFBYyxFQUFFLFFBQWdCLEVBQUUsZUFBNEIsSUFBSSxFQUFVLEVBQUU7SUFDMUYsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sSUFBSSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBRW5ELElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxZQUFZLEtBQUssSUFBSSxFQUFFO1FBQzlDLE9BQU8sWUFBWSxDQUFDO0tBQ3ZCO0lBRUQsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1FBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLE1BQU0sSUFBSSxRQUFRLFlBQVksQ0FBQyxDQUFDO0tBQzVFO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBRUYsa0JBQWUsQ0FDWCxZQUFvQixZQUFZLEVBQ2hDLFlBQVksR0FBRyxFQUFFLEVBQ2pCLGlCQUFpQixHQUFHLEVBQUUsRUFDaEIsRUFBRTtJQUNSLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLElBQUksR0FBRyxFQUFFO1FBQ0wsT0FBTztZQUNILFVBQVUsRUFBRSxHQUFHO1lBQ2YsWUFBWTtTQUNmLENBQUM7S0FDTDtJQUNELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDM0MsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDMUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUMvQyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMzQyxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQy9DLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDL0MsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbkQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFN0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQy9DLE1BQU0sWUFBWSxHQUFHLFFBQVEsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMzRCxNQUFNLFNBQVMsR0FBRyxLQUFLLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFFbEQsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFO1FBQ3RCLE9BQU87WUFDSCxVQUFVLEVBQUUsR0FBRyxRQUFRLE1BQU0sUUFBUSxJQUFJLFFBQVEsSUFBSSxRQUFRLEdBQUcsUUFBUSxHQUFHLFlBQVksR0FBRyxTQUFTLEVBQUU7WUFDckcsWUFBWTtTQUNmLENBQUM7S0FDTDtJQUVELElBQUksTUFBTSxLQUFLLFlBQVksRUFBRTtRQUN6QixPQUFPO1lBQ0gsVUFBVSxFQUFFLEdBQUcsUUFBUSxNQUFNLFFBQVEsR0FBRyxRQUFRLEdBQUcsWUFBWSxHQUFHLFNBQVMsRUFBRTtZQUM3RSxZQUFZLEVBQUU7Z0JBQ1YsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLG1CQUFtQixDQUFDO2dCQUN2RCxHQUFHLEVBQUUsSUFBSTtnQkFDVCxJQUFJLEVBQUU7b0JBQ0YsUUFBUTtvQkFDUixRQUFRO2lCQUNYO2dCQUNELFVBQVUsRUFBRSxLQUFLO2dCQUNqQixXQUFXLEVBQUUsS0FBSztnQkFDbEIsZ0JBQWdCLEVBQUUsSUFBSTtnQkFDdEIsYUFBYSxFQUFFLElBQUk7Z0JBQ25CLGVBQWUsRUFBRSxJQUFJO2dCQUNyQixrQkFBa0IsRUFBRSxJQUFJO2dCQUN4QixVQUFVLEVBQUUsSUFBSTtnQkFDaEIsd0JBQXdCLEVBQUUsSUFBSTtnQkFDOUIsR0FBRyxpQkFBaUI7YUFDdkI7U0FDSixDQUFDO0tBQ0w7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsU0FBUyxrQkFBa0IsTUFBTSw4Q0FBOEMsQ0FBQyxDQUFDO0FBQ2hILENBQUMsQ0FBQyJ9
@@ -1,10 +0,0 @@
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,53 +0,0 @@
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 errors_1 = require("@storyous/errors");
7
- const mongodb_1 = require("mongodb");
8
- const concurrentTask_1 = __importDefault(require("./concurrentTask"));
9
- const mongoErrorCodes_1 = __importDefault(require("./mongoErrorCodes"));
10
- const _removeDeprecatedIndex = async (collection) => {
11
- const collectionStats = await collection.stats();
12
- if (collectionStats.indexDetails?.acquiredAt_1) {
13
- await collection.dropIndex('acquiredAt_1');
14
- }
15
- };
16
- exports.default = async (collection) => {
17
- await _removeDeprecatedIndex(collection);
18
- await collection.createIndex({ expiresAt: 1 }, { expireAfterSeconds: 0 });
19
- return async (key, callback, { noLaterThan = 1000, startAttemptsDelay = 50, expireIn = 120000 } = {}) => {
20
- const lockId = new mongodb_1.ObjectId();
21
- const releaseLock = () => collection.deleteOne({ _id: key, lockId });
22
- const acquireLock = async () => {
23
- try {
24
- const now = new Date();
25
- /**
26
- * 3 possible situations
27
- * a) There is no lock -> upsert will create the document
28
- * b) There is an expired lock -> expiresAt: { $lte: now } will match and the document will be replaced
29
- * c) There is an unexpired lock -> expiresAt: { $lte: now } will not match,
30
- * database will try to insert the new one, but it will fail on duplicate key (_id) error
31
- */
32
- await collection.replaceOne({ _id: key, expiresAt: { $lte: now } },
33
- // replaceOne will use the _id from filter parameter when inserting new document
34
- { lockId, expiresAt: new Date(now.getTime() + expireIn) }, { upsert: true });
35
- }
36
- catch (err) {
37
- if (mongoErrorCodes_1.default.DUPLICATE_KEY.includes(err.code)) {
38
- throw errors_1.AppError.concurrentRequest('The lock is already acquired.');
39
- }
40
- await releaseLock(); // the lock could be possible acquired
41
- throw err;
42
- }
43
- };
44
- await (0, concurrentTask_1.default)(acquireLock, { noLaterThan, startAttemptsDelay });
45
- try {
46
- return await callback();
47
- }
48
- finally {
49
- await releaseLock();
50
- }
51
- };
52
- };
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0TW9uZ29Mb2NrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJnZXRNb25nb0xvY2tlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUE0QztBQUM1QyxxQ0FBK0M7QUFDL0Msc0VBQThDO0FBRTlDLHdFQUFnRDtBQVVoRCxNQUFNLHNCQUFzQixHQUFHLEtBQUssRUFBRSxVQUFzQixFQUFFLEVBQUU7SUFDNUQsTUFBTSxlQUFlLEdBQUcsTUFBTSxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakQsSUFBSSxlQUFlLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRTtRQUM1QyxNQUFNLFVBQVUsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUM7S0FDOUM7QUFDTCxDQUFDLENBQUM7QUFFRixrQkFBZSxLQUFLLEVBQUUsVUFBc0IsRUFBRSxFQUFFO0lBRTVDLE1BQU0sc0JBQXNCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDekMsTUFBTSxVQUFVLENBQUMsV0FBVyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUUxRSxPQUFPLEtBQUssRUFDUixHQUFRLEVBQ1IsUUFBeUIsRUFDekIsRUFBRSxXQUFXLEdBQUcsSUFBSSxFQUFFLGtCQUFrQixHQUFHLEVBQUUsRUFBRSxRQUFRLEdBQUcsTUFBTSxLQUFvQixFQUFFLEVBQzVFLEVBQUU7UUFFWixNQUFNLE1BQU0sR0FBRyxJQUFJLGtCQUFRLEVBQUUsQ0FBQztRQUU5QixNQUFNLFdBQVcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBRTVFLE1BQU0sV0FBVyxHQUFHLEtBQUssSUFBSSxFQUFFO1lBQzNCLElBQUk7Z0JBQ0EsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDdkI7Ozs7OzttQkFNRztnQkFDSCxNQUFNLFVBQVUsQ0FBQyxVQUFVLENBQ3ZCLEVBQUUsR0FBRyxFQUFFLEdBQVUsRUFBRSxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUU7Z0JBQzdDLGdGQUFnRjtnQkFDaEYsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxRQUFRLENBQUMsRUFBRSxFQUN6RCxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FDbkIsQ0FBQzthQUNMO1lBQUMsT0FBTyxHQUFPLEVBQUU7Z0JBQ2QsSUFBSSx5QkFBZSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUNsRCxNQUFNLGlCQUFRLENBQUMsaUJBQWlCLENBQUMsK0JBQStCLENBQUMsQ0FBQztpQkFDckU7Z0JBQ0QsTUFBTSxXQUFXLEVBQUUsQ0FBQyxDQUFDLHNDQUFzQztnQkFDM0QsTUFBTSxHQUFHLENBQUM7YUFDYjtRQUNMLENBQUMsQ0FBQztRQUVGLE1BQU0sSUFBQSx3QkFBYyxFQUFDLFdBQVcsRUFBRSxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7UUFFdkUsSUFBSTtZQUNBLE9BQU8sTUFBTSxRQUFRLEVBQUUsQ0FBQztTQUUzQjtnQkFBUztZQUNOLE1BQU0sV0FBVyxFQUFFLENBQUM7U0FDdkI7SUFDTCxDQUFDLENBQUM7QUFDTixDQUFDLENBQUMifQ==
package/lib/index.d.ts DELETED
@@ -1,15 +0,0 @@
1
- import { Decimal128 as MongoDecimal, ObjectId } from 'mongodb';
2
- import appData from './appData';
3
- import concurrentTask from './concurrentTask';
4
- import fixtures from './fixtures';
5
- import getCollection from './getCollection';
6
- import getMongoConfig from './getMongoConfig';
7
- import getMongoLocker, { LockCallback, LockerOptions } from './getMongoLocker';
8
- import Migration from './migrations/Migration';
9
- import MigrationsStore from './migrations/MigrationsStore';
10
- import runMigrations from './migrations/runMigrations';
11
- import mongoClient from './mongoClient';
12
- import mongoErrorCodes from './mongoErrorCodes';
13
- import mongoLocker from './mongoLocker';
14
- import withTransaction from './withTransaction';
15
- export { appData, fixtures, getCollection, getMongoConfig, getMongoLocker, LockCallback, LockerOptions, Migration, MigrationsStore, mongoClient, mongoLocker, runMigrations, withTransaction, ObjectId, MongoDecimal, mongoErrorCodes, concurrentTask, };
@@ -1,6 +0,0 @@
1
- export default class Migration {
2
- description: string;
3
- up: Function;
4
- down: Function;
5
- constructor(description: string, up: Function, down?: () => null);
6
- }
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- class Migration {
4
- constructor(description, up, down = () => null) {
5
- this.description = description;
6
- // NOTE 'up' and 'down' has to be as properties because of 'migrate' package
7
- this.up = (next) => {
8
- (async () => {
9
- await up();
10
- next();
11
- })().catch(next);
12
- };
13
- this.down = (next) => {
14
- (async () => {
15
- await down();
16
- next();
17
- })().catch(next);
18
- };
19
- }
20
- }
21
- exports.default = Migration;
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiTWlncmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEsTUFBcUIsU0FBUztJQVExQixZQUFhLFdBQW1CLEVBQUUsRUFBWSxFQUFFLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJO1FBQzdELElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBRS9CLDRFQUE0RTtRQUM1RSxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBa0IsRUFBRSxFQUFFO1lBQzdCLENBQUMsS0FBSyxJQUFJLEVBQUU7Z0JBQ1IsTUFBTSxFQUFFLEVBQUUsQ0FBQztnQkFDWCxJQUFJLEVBQUUsQ0FBQztZQUNYLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FBQztRQUVGLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFrQixFQUFFLEVBQUU7WUFDL0IsQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDUixNQUFNLElBQUksRUFBRSxDQUFDO2dCQUNiLElBQUksRUFBRSxDQUFDO1lBQ1gsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDO0lBQ04sQ0FBQztDQUNKO0FBMUJELDRCQTBCQyJ9
@@ -1,13 +0,0 @@
1
- import { CallbackError, Migration } from 'migrate';
2
- import { Logger } from 'winston';
3
- export default class MigrationsStore {
4
- private _logger;
5
- private _safeMigration;
6
- constructor(_logger: Logger, path: string, _safeMigration: boolean);
7
- save(set: Object, cb: CallbackError): void;
8
- load(cb: (err: any, store: {
9
- lastRun?: string;
10
- migrations: Pick<Migration, 'title' | 'description' | 'timestamp'>[];
11
- }) => void): void;
12
- private _checkValidMigrations;
13
- }
@@ -1,65 +0,0 @@
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 lodash_1 = require("lodash");
7
- const appData_1 = __importDefault(require("../appData"));
8
- const DOCUMENT_ID = 'migrations';
9
- const safeMigrationMsg = 'safeMigration is true, we do not allow empty migrations to be saved. '
10
- + 'If this is new project, feel free to enable it';
11
- class MigrationsStore {
12
- // eslint-disable-next-line no-empty-function
13
- constructor(_logger, path, _safeMigration) {
14
- this._logger = _logger;
15
- this._safeMigration = _safeMigration;
16
- }
17
- save(set, cb) {
18
- try {
19
- this._logger.info('Migration SET', set);
20
- const objToUpdate = (0, lodash_1.pick)(set, ['lastRun', 'migrations']);
21
- if (this._safeMigration) {
22
- this._checkValidMigrations(objToUpdate);
23
- const numOfValidMigrations = objToUpdate.migrations
24
- .reduce((prev, cur) => (cur.timestamp ? prev + 1 : prev), 0);
25
- // If all migrations are renewed=without timestamp (beside the first one that is trying to be applied)
26
- // There can be something wrong
27
- if (objToUpdate.migrations.length >= 3 && numOfValidMigrations <= 1) {
28
- this._logger.error(safeMigrationMsg);
29
- throw new Error(safeMigrationMsg);
30
- }
31
- }
32
- appData_1.default.updateDocument(DOCUMENT_ID, { $set: objToUpdate }, true)
33
- .then(() => { cb(null); })
34
- .catch(cb);
35
- }
36
- catch (err) {
37
- cb(err);
38
- }
39
- }
40
- load(cb) {
41
- appData_1.default.getDocument(DOCUMENT_ID)
42
- .then((state) => {
43
- if (this._safeMigration) {
44
- this._checkValidMigrations(state);
45
- }
46
- cb(null, state || {
47
- lastRun: null,
48
- migrations: [],
49
- });
50
- })
51
- .catch((err) => {
52
- cb(err, { migrations: [] });
53
- });
54
- }
55
- _checkValidMigrations(objWithMigrations) {
56
- if (!objWithMigrations
57
- || (0, lodash_1.isEmpty)(objWithMigrations.migrations)
58
- || !(0, lodash_1.isArray)(objWithMigrations.migrations)) {
59
- this._logger.error(safeMigrationMsg);
60
- throw new Error(safeMigrationMsg);
61
- }
62
- }
63
- }
64
- exports.default = MigrationsStore;
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uc1N0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiTWlncmF0aW9uc1N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUNBQWdEO0FBR2hELHlEQUFpQztBQUVqQyxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUM7QUFFakMsTUFBTSxnQkFBZ0IsR0FBRyx1RUFBdUU7TUFDMUYsZ0RBQWdELENBQUM7QUFFdkQsTUFBcUIsZUFBZTtJQUNoQyw2Q0FBNkM7SUFDN0MsWUFBcUIsT0FBZSxFQUFFLElBQVksRUFBVSxjQUF1QjtRQUE5RCxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQXdCLG1CQUFjLEdBQWQsY0FBYyxDQUFTO0lBQ25GLENBQUM7SUFFTSxJQUFJLENBQUUsR0FBVyxFQUFFLEVBQWlCO1FBQ3ZDLElBQUk7WUFDQSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDeEMsTUFBTSxXQUFXLEdBQVEsSUFBQSxhQUFJLEVBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDOUQsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUNyQixJQUFJLENBQUMscUJBQXFCLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBRXhDLE1BQU0sb0JBQW9CLEdBQUcsV0FBVyxDQUFDLFVBQVU7cUJBQzlDLE1BQU0sQ0FBQyxDQUFDLElBQVksRUFBRSxHQUF3QixFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUU5RixzR0FBc0c7Z0JBQ3RHLCtCQUErQjtnQkFDL0IsSUFBSSxXQUFXLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksb0JBQW9CLElBQUksQ0FBQyxFQUFFO29CQUNqRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO29CQUVyQyxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7aUJBQ3JDO2FBQ0o7WUFFRCxpQkFBTyxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEVBQUUsSUFBSSxDQUFDO2lCQUMzRCxJQUFJLENBQ0QsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUN0QjtpQkFDQSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDbEI7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUNWLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNYO0lBQ0wsQ0FBQztJQUVNLElBQUksQ0FDUCxFQU1TO1FBRVQsaUJBQU8sQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDO2FBQzNCLElBQUksQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQ2pCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtnQkFDckIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3JDO1lBRUQsRUFBRSxDQUNFLElBQUksRUFBRSxLQUFLLElBQUk7Z0JBQ1gsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsVUFBVSxFQUFFLEVBQUU7YUFDakIsQ0FDSixDQUFDO1FBQ04sQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDWCxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRU8scUJBQXFCLENBQUUsaUJBQThDO1FBQ3pFLElBQ0ksQ0FBQyxpQkFBaUI7ZUFDZixJQUFBLGdCQUFPLEVBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDO2VBQ3JDLENBQUMsSUFBQSxnQkFBTyxFQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQzNDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQ3JDO0lBQ0wsQ0FBQztDQUNKO0FBdEVELGtDQXNFQyJ9
@@ -1,12 +0,0 @@
1
- import { Logger } from 'winston';
2
- /**
3
- * In case of fail - logs the result and returns rejected promise
4
- * @param {Logger} logger Logger
5
- * @param {string} directory Path to directory where migrations are
6
- * @param {boolean} continueOnError If app crashes on error or continue
7
- * @param {boolean} safeMigration Do not allow to rewrite all migrations with empty array
8
- */
9
- export default function runMigrations(logger: Logger, directory: string, { continueOnError, safeMigration, }: {
10
- continueOnError?: boolean | undefined;
11
- safeMigration?: boolean | undefined;
12
- }): Promise<void>;
@@ -1,50 +0,0 @@
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 migrate_1 = require("migrate");
7
- const MigrationsStore_1 = __importDefault(require("./MigrationsStore"));
8
- /**
9
- * In case of fail - logs the result and returns rejected promise
10
- * @param {Logger} logger Logger
11
- * @param {string} directory Path to directory where migrations are
12
- * @param {boolean} continueOnError If app crashes on error or continue
13
- * @param {boolean} safeMigration Do not allow to rewrite all migrations with empty array
14
- */
15
- async function runMigrations(logger, directory, { continueOnError = false, safeMigration = true, }) {
16
- return new Promise((resolve, reject) => {
17
- (0, migrate_1.load)({
18
- stateStore: new MigrationsStore_1.default(logger, directory, safeMigration),
19
- migrationsDirectory: directory,
20
- filterFunction: (file) => file.endsWith('.js'),
21
- }, (err, set) => {
22
- if (err) {
23
- logger.error('Migrations did not run due to error', err);
24
- reject(err);
25
- return;
26
- }
27
- set.on('warning', (msg) => {
28
- logger.warn('warning', msg);
29
- });
30
- set.on('migration', (migration, direction) => {
31
- logger.info(`Running ${direction} migration`, { title: migration.title });
32
- });
33
- set.up((error) => {
34
- if (error) {
35
- logger.error('A migration ended with error', error);
36
- if (!continueOnError) {
37
- reject(error);
38
- return;
39
- }
40
- }
41
- else {
42
- logger.info('Migrations successfully ran');
43
- }
44
- resolve();
45
- });
46
- });
47
- });
48
- }
49
- exports.default = runMigrations;
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuTWlncmF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInJ1bk1pZ3JhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxQ0FBNkM7QUFFN0Msd0VBQWdEO0FBRWhEOzs7Ozs7R0FNRztBQUNZLEtBQUssVUFBVSxhQUFhLENBQ3ZDLE1BQWMsRUFDZCxTQUFpQixFQUNqQixFQUNJLGVBQWUsR0FBRyxLQUFLLEVBQ3ZCLGFBQWEsR0FBRyxJQUFJLEdBQ3ZCO0lBRUQsT0FBTyxJQUFJLE9BQU8sQ0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUN6QyxJQUFBLGNBQUksRUFDQTtZQUNJLFVBQVUsRUFBRSxJQUFJLHlCQUFlLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxhQUFhLENBQUM7WUFDakUsbUJBQW1CLEVBQUUsU0FBUztZQUM5QixjQUFjLEVBQUUsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1NBQ3pELEVBQ0QsQ0FBQyxHQUFpQixFQUFFLEdBQWlCLEVBQUUsRUFBRTtZQUNyQyxJQUFJLEdBQUcsRUFBRTtnQkFDTCxNQUFNLENBQUMsS0FBSyxDQUFDLHFDQUFxQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUN6RCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ1osT0FBTzthQUNWO1lBRUQsR0FBRyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFXLEVBQUUsRUFBRTtnQkFDOUIsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDaEMsQ0FBQyxDQUFDLENBQUM7WUFFSCxHQUFHLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQWMsRUFBRSxTQUFpQixFQUFFLEVBQUU7Z0JBQ3RELE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxTQUFTLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUM5RSxDQUFDLENBQUMsQ0FBQztZQUVILEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFhLEVBQUUsRUFBRTtnQkFDckIsSUFBSSxLQUFLLEVBQUU7b0JBQ1AsTUFBTSxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsRUFBRSxLQUFLLENBQUMsQ0FBQztvQkFDcEQsSUFBSSxDQUFDLGVBQWUsRUFBRTt3QkFDbEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUNkLE9BQU87cUJBQ1Y7aUJBQ0o7cUJBQU07b0JBQ0gsTUFBTSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO2lCQUM5QztnQkFFRCxPQUFPLEVBQUUsQ0FBQztZQUNkLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUE3Q0QsZ0NBNkNDIn0=
@@ -1,3 +0,0 @@
1
- import Migration from './Migration';
2
- declare const _default: Migration;
3
- export = _default;
@@ -1,11 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- const getCollection_1 = __importDefault(require("../getCollection"));
6
- const Migration_1 = __importDefault(require("./Migration"));
7
- module.exports = new Migration_1.default('[ADD DESCRIPTION HERE]', async () => {
8
- // add logic here
9
- await (0, getCollection_1.default)('exampleCollection');
10
- });
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0ZW1wbGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEscUVBQTZDO0FBQzdDLDREQUFvQztBQUVwQyxpQkFBUyxJQUFJLG1CQUFTLENBQUMsd0JBQXdCLEVBQUUsS0FBSyxJQUFJLEVBQUU7SUFDeEQsaUJBQWlCO0lBQ2pCLE1BQU0sSUFBQSx1QkFBYSxFQUFDLG1CQUFtQixDQUFDLENBQUM7QUFDN0MsQ0FBQyxDQUFDLENBQUMifQ==
@@ -1,8 +0,0 @@
1
- import { MongoClient, MongoClientOptions, ObjectId } from 'mongodb';
2
- export declare type Key = string | number | ObjectId;
3
- declare const mongoClient: {
4
- _client: MongoClient | null;
5
- init(mongodbUrl: string, mongoOptions?: MongoClientOptions | undefined): void;
6
- getClient(): MongoClient;
7
- };
8
- export default mongoClient;
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const lodash_1 = require("lodash");
4
- const mongodb_1 = require("mongodb");
5
- const mongoClient = {
6
- _client: null,
7
- init(mongodbUrl, mongoOptions) {
8
- this._client = new mongodb_1.MongoClient(mongodbUrl, (0, lodash_1.defaultsDeep)(mongoOptions));
9
- },
10
- getClient() {
11
- if (this._client) {
12
- return this._client;
13
- }
14
- throw new Error('MongoDb must be initialized before use.');
15
- },
16
- };
17
- exports.default = mongoClient;
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZ29DbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtb25nb0NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG1DQUFzQztBQUN0QyxxQ0FBb0U7QUFJcEUsTUFBTSxXQUFXLEdBQUc7SUFDaEIsT0FBTyxFQUFxQixJQUFJO0lBRWhDLElBQUksQ0FBRSxVQUFrQixFQUFFLFlBQWlDO1FBQ3ZELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxxQkFBVyxDQUMxQixVQUFVLEVBQ1YsSUFBQSxxQkFBWSxFQUFDLFlBQVksQ0FBQyxDQUM3QixDQUFDO0lBQ04sQ0FBQztJQUVELFNBQVM7UUFDTCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDdkI7UUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7SUFDL0QsQ0FBQztDQUNKLENBQUM7QUFFRixrQkFBZSxXQUFXLENBQUMifQ==
@@ -1,6 +0,0 @@
1
- declare const mongoErrorCodes: {
2
- DUPLICATE_KEY_INSERT: number;
3
- DUPLICATE_KEY_UPDATE: number;
4
- DUPLICATE_KEY: number[];
5
- };
6
- export default mongoErrorCodes;
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const DUPLICATE_KEY_INSERT = 11000;
4
- const DUPLICATE_KEY_UPDATE = 11001;
5
- const mongoErrorCodes = {
6
- DUPLICATE_KEY_INSERT,
7
- DUPLICATE_KEY_UPDATE,
8
- DUPLICATE_KEY: [DUPLICATE_KEY_INSERT, DUPLICATE_KEY_UPDATE],
9
- };
10
- exports.default = mongoErrorCodes;
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZ29FcnJvckNvZGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibW9uZ29FcnJvckNvZGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsTUFBTSxvQkFBb0IsR0FBRyxLQUFLLENBQUM7QUFDbkMsTUFBTSxvQkFBb0IsR0FBRyxLQUFLLENBQUM7QUFFbkMsTUFBTSxlQUFlLEdBQUc7SUFDcEIsb0JBQW9CO0lBQ3BCLG9CQUFvQjtJQUNwQixhQUFhLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRSxvQkFBb0IsQ0FBQztDQUM5RCxDQUFDO0FBRUYsa0JBQWUsZUFBZSxDQUFDIn0=
@@ -1,3 +0,0 @@
1
- import { LockCallback, LockerOptions } from './getMongoLocker';
2
- import { Key } from './mongoClient';
3
- export default function <T>(key: Key, callback: LockCallback<T>, options?: LockerOptions): Promise<T>;
@@ -1,17 +0,0 @@
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 getCollection_1 = __importDefault(require("./getCollection"));
7
- const getMongoLocker_1 = __importDefault(require("./getMongoLocker"));
8
- let lockerPromise;
9
- async function default_1(key, callback, options = {}) {
10
- if (!lockerPromise) {
11
- lockerPromise = (0, getMongoLocker_1.default)((0, getCollection_1.default)('appLocks'));
12
- }
13
- const locker = await lockerPromise;
14
- return locker(key, callback, options);
15
- }
16
- exports.default = default_1;
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZ29Mb2NrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtb25nb0xvY2tlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9FQUE0QztBQUM1QyxzRUFBK0U7QUFHL0UsSUFBSSxhQUFnRCxDQUFDO0FBRXRDLEtBQUssb0JBQWUsR0FBUSxFQUFFLFFBQXlCLEVBQUUsVUFBeUIsRUFBRTtJQUMvRixJQUFJLENBQUMsYUFBYSxFQUFFO1FBQ2hCLGFBQWEsR0FBRyxJQUFBLHdCQUFjLEVBQUMsSUFBQSx1QkFBYSxFQUFNLFVBQVUsQ0FBQyxDQUFDLENBQUM7S0FDbEU7SUFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLGFBQWEsQ0FBQztJQUVuQyxPQUFPLE1BQU0sQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzFDLENBQUM7QUFSRCw0QkFRQyJ9
@@ -1,3 +0,0 @@
1
- import { ClientSession, TransactionOptions } from 'mongodb';
2
- declare const _default: <T>(callback: (session: ClientSession) => Promise<T>, options?: TransactionOptions | undefined) => Promise<T>;
3
- export default _default;
@@ -1,21 +0,0 @@
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 = async (callback, options) => {
8
- const session = mongoClient_1.default.getClient().startSession();
9
- try {
10
- let result;
11
- await session.withTransaction(async () => {
12
- result = await callback(session);
13
- }, options);
14
- // @ts-ignore
15
- return result;
16
- }
17
- finally {
18
- await session.endSession();
19
- }
20
- };
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aFRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsid2l0aFRyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsZ0VBQXdDO0FBRXhDLGtCQUFlLEtBQUssRUFDaEIsUUFBZ0QsRUFDaEQsT0FBNEIsRUFDbEIsRUFBRTtJQUVaLE1BQU0sT0FBTyxHQUFHLHFCQUFXLENBQUMsU0FBUyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFdkQsSUFBSTtRQUNBLElBQUksTUFBUyxDQUFDO1FBRWQsTUFBTSxPQUFPLENBQUMsZUFBZSxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ3JDLE1BQU0sR0FBRyxNQUFNLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFWixhQUFhO1FBQ2IsT0FBTyxNQUFNLENBQUM7S0FFakI7WUFBUztRQUNOLE1BQU0sT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO0tBQzlCO0FBQ0wsQ0FBQyxDQUFDIn0=