@villedemontreal/mongo 6.7.0 → 6.7.3

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.
Files changed (68) hide show
  1. package/dist/scripts/index.d.ts +6 -0
  2. package/dist/scripts/index.js +16 -0
  3. package/dist/scripts/index.js.map +1 -0
  4. package/dist/scripts/lint.d.ts +6 -0
  5. package/dist/scripts/lint.js +18 -0
  6. package/dist/scripts/lint.js.map +1 -0
  7. package/dist/scripts/lintFix.d.ts +6 -0
  8. package/dist/scripts/lintFix.js +21 -0
  9. package/dist/scripts/lintFix.js.map +1 -0
  10. package/dist/scripts/showCoverage.d.ts +13 -0
  11. package/dist/scripts/showCoverage.js +40 -0
  12. package/dist/scripts/showCoverage.js.map +1 -0
  13. package/dist/scripts/test.d.ts +13 -0
  14. package/dist/scripts/test.js +29 -0
  15. package/dist/scripts/test.js.map +1 -0
  16. package/dist/scripts/testUnits.d.ts +15 -0
  17. package/dist/scripts/testUnits.js +95 -0
  18. package/dist/scripts/testUnits.js.map +1 -0
  19. package/dist/scripts/watch.d.ts +14 -0
  20. package/dist/scripts/watch.js +96 -0
  21. package/dist/scripts/watch.js.map +1 -0
  22. package/dist/src/config/configs.d.ts +4 -1
  23. package/dist/src/config/configs.js +6 -0
  24. package/dist/src/config/configs.js.map +1 -1
  25. package/dist/src/config/constants.d.ts +1 -1
  26. package/dist/src/config/constants.js +12 -12
  27. package/dist/src/config/constants.js.map +1 -1
  28. package/dist/src/config/init.js.map +1 -1
  29. package/dist/src/config/mongooseConfigs.js +8 -6
  30. package/dist/src/config/mongooseConfigs.js.map +1 -1
  31. package/dist/src/index.js +6 -2
  32. package/dist/src/index.js.map +1 -1
  33. package/dist/src/mongoClient.js +64 -59
  34. package/dist/src/mongoClient.js.map +1 -1
  35. package/dist/src/mongoUpdater.js +30 -27
  36. package/dist/src/mongoUpdater.js.map +1 -1
  37. package/dist/src/mongoUpdater.test.js +11 -11
  38. package/dist/src/mongoUpdater.test.js.map +1 -1
  39. package/dist/src/mongoUtils.d.ts +1 -1
  40. package/dist/src/mongoUtils.js +15 -12
  41. package/dist/src/mongoUtils.js.map +1 -1
  42. package/dist/src/mongoUtils.test.d.ts +0 -1
  43. package/dist/src/mongoUtils.test.js +21 -22
  44. package/dist/src/mongoUtils.test.js.map +1 -1
  45. package/dist/src/plugins/pagination/index.js +9 -12
  46. package/dist/src/plugins/pagination/index.js.map +1 -1
  47. package/dist/src/plugins/pagination/index.test.js +20 -12
  48. package/dist/src/plugins/pagination/index.test.js.map +1 -1
  49. package/dist/src/utils/logger.js +1 -1
  50. package/dist/src/utils/logger.js.map +1 -1
  51. package/dist/src/utils/testingConfigurations.js +1 -1
  52. package/dist/src/utils/testingConfigurations.js.map +1 -1
  53. package/dist/tests/testingMongoUpdates/1.0.0.js +3 -3
  54. package/dist/tests/testingMongoUpdates/1.0.1.js +4 -4
  55. package/dist/tests/testingMongoUpdates/1.0.1.js.map +1 -1
  56. package/package.json +20 -15
  57. package/src/config/configs.ts +10 -1
  58. package/src/config/constants.ts +13 -13
  59. package/src/config/init.ts +1 -1
  60. package/src/config/mongooseConfigs.ts +30 -12
  61. package/src/mongoClient.ts +80 -63
  62. package/src/mongoUpdater.test.ts +29 -17
  63. package/src/mongoUpdater.ts +47 -32
  64. package/src/mongoUtils.test.ts +21 -21
  65. package/src/mongoUtils.ts +20 -14
  66. package/src/plugins/pagination/index.test.ts +38 -27
  67. package/src/plugins/pagination/index.ts +19 -14
  68. package/src/utils/logger.ts +8 -1
@@ -18,34 +18,37 @@ const bookSchema = new mongoose.Schema({
18
18
  date: Date,
19
19
  author: {
20
20
  type: String,
21
- ref: 'Author'
22
- }
21
+ ref: 'Author',
22
+ },
23
23
  });
24
24
 
25
25
  bookSchema.plugin(mongoosePaginate);
26
26
  const bookModel: any = mongoose.model('Book', bookSchema);
27
27
 
28
28
  describe('plugin pagination', () => {
29
- before(async function() {
29
+ before(async function () {
30
30
  this.timeout(120000);
31
31
 
32
32
  // Makes sure Mongoose is mocked, but not in Jenkins as we will start a dedicated mongodb container.
33
- const mockedDb = await mongoUtils.mockMongoose(this, constants.testsConfig.mockServer.serverVersion);
33
+ const mockedDb = await mongoUtils.mockMongoose(
34
+ this,
35
+ constants.testsConfig.mockServer.serverVersion
36
+ );
34
37
  const connString = mockedDb.getUri();
35
38
  await mongoose.connect(connString, { useNewUrlParser: true });
36
39
  });
37
40
 
38
- before(async function() {
41
+ before(async function () {
39
42
  this.timeout(10000);
40
43
  let book;
41
44
  const books: any = [];
42
45
  const date = new Date();
43
- return authorModel.create({ name: 'Arthur Conan Doyle' }).then(author => {
46
+ return authorModel.create({ name: 'Arthur Conan Doyle' }).then((author) => {
44
47
  for (let i = 1; i <= 100; i++) {
45
48
  book = new bookModel({
46
- title: 'Book #' + i,
49
+ title: `Book #${i}`,
47
50
  date: new Date(date.getTime() + i),
48
- author: author._id
51
+ author: author._id,
49
52
  });
50
53
  books.push(book);
51
54
  }
@@ -58,7 +61,7 @@ describe('plugin pagination', () => {
58
61
  expect(promise.then).to.be.an.instanceof(Function);
59
62
  });
60
63
 
61
- it('calls callback', done => {
64
+ it('calls callback', (done) => {
62
65
  bookModel.paginate({}, {}, (err: Error, result: IPaginatedResult<any>) => {
63
66
  expect(err).to.be.null;
64
67
  expect(result).to.be.an.instanceOf(Object);
@@ -83,12 +86,14 @@ describe('plugin pagination', () => {
83
86
  });
84
87
  });
85
88
  it('with offset and limit', () => {
86
- return bookModel.paginate({}, { offset: 30, limit: 20 }).then((result: IPaginatedResult<any>) => {
87
- expect(result.items).to.have.length(20);
88
- expect(result.paging.totalCount).to.equal(100);
89
- expect(result.paging.limit).to.equal(20);
90
- expect(result.paging.offset).to.equal(30);
91
- });
89
+ return bookModel
90
+ .paginate({}, { offset: 30, limit: 20 })
91
+ .then((result: IPaginatedResult<any>) => {
92
+ expect(result.items).to.have.length(20);
93
+ expect(result.paging.totalCount).to.equal(100);
94
+ expect(result.paging.limit).to.equal(20);
95
+ expect(result.paging.offset).to.equal(30);
96
+ });
92
97
  });
93
98
  it('with zero limit', () => {
94
99
  return bookModel.paginate({}, { page: 1, limit: 0 }).then((result: IPaginatedResult<any>) => {
@@ -104,14 +109,18 @@ describe('plugin pagination', () => {
104
109
  });
105
110
  });
106
111
  it('with sort', () => {
107
- return bookModel.paginate({}, { sort: { date: -1 } }).then((result: IPaginatedResult<any>) => {
108
- expect(result.items[0].title).to.equal('Book #100');
109
- });
112
+ return bookModel
113
+ .paginate({}, { sort: { date: -1 } })
114
+ .then((result: IPaginatedResult<any>) => {
115
+ expect(result.items[0].title).to.equal('Book #100');
116
+ });
110
117
  });
111
118
  it('with populate', () => {
112
- return bookModel.paginate({}, { populate: 'author' }).then((result: IPaginatedResult<any>) => {
113
- expect(result.items[0].author.name).to.equal('Arthur Conan Doyle');
114
- });
119
+ return bookModel
120
+ .paginate({}, { populate: 'author' })
121
+ .then((result: IPaginatedResult<any>) => {
122
+ expect(result.items[0].author.name).to.equal('Arthur Conan Doyle');
123
+ });
115
124
  });
116
125
  describe('with lean', () => {
117
126
  it('with default leanWithId=true', () => {
@@ -122,19 +131,21 @@ describe('plugin pagination', () => {
122
131
  });
123
132
  });
124
133
  it('with leanWithId=false', () => {
125
- return bookModel.paginate({}, { lean: true, leanWithId: false }).then((result: IPaginatedResult<any>) => {
126
- expect(result.items[0]).to.not.be.an.instanceof((mongoose as any).Document);
127
- expect(result.items[0]).to.not.have.property('id');
128
- });
134
+ return bookModel
135
+ .paginate({}, { lean: true, leanWithId: false })
136
+ .then((result: IPaginatedResult<any>) => {
137
+ expect(result.items[0]).to.not.be.an.instanceof((mongoose as any).Document);
138
+ expect(result.items[0]).to.not.have.property('id');
139
+ });
129
140
  });
130
141
  });
131
142
  });
132
143
 
133
- after(done => {
144
+ after((done) => {
134
145
  mongoose.connection.db.dropDatabase(done);
135
146
  });
136
147
 
137
- after(done => {
148
+ after((done) => {
138
149
  mongoose.disconnect(done);
139
150
  });
140
151
  });
@@ -1,6 +1,10 @@
1
1
  import { IPaginateOptions } from './specs/IPaginateOptions';
2
2
 
3
- function paginate(q: any, options: IPaginateOptions, callback: (error: Error, result: any) => void) {
3
+ function paginate(
4
+ q: any,
5
+ options: IPaginateOptions,
6
+ callback: (error: Error, result: any) => void
7
+ ) {
4
8
  const optionsClean = PaginateBuilder.getOptions((paginate as any).options, options);
5
9
 
6
10
  const query = q || {};
@@ -22,14 +26,18 @@ export class PaginateBuilder {
22
26
  lean: false,
23
27
  leanWithId: true,
24
28
  limit: 10,
25
- offset: 0
29
+ offset: 0,
26
30
  });
27
31
 
28
32
  public static getOptions(...options: IPaginateOptions[]): IPaginateOptions {
29
33
  return Object.assign({}, PaginateBuilder.defaultOptions, ...options);
30
34
  }
31
35
 
32
- public static executeQueries(model: any, query: any, options: IPaginateOptions): [Promise<any[]>, Promise<number>] {
36
+ public static executeQueries(
37
+ model: any,
38
+ query: any,
39
+ options: IPaginateOptions
40
+ ): [Promise<any[]>, Promise<number>] {
33
41
  const { select, sort, populate, lean, leanWithId, limit, offset } = options;
34
42
  let itemsQuery: any;
35
43
 
@@ -38,20 +46,17 @@ export class PaginateBuilder {
38
46
  }
39
47
 
40
48
  if (limit > 0) {
41
- itemsQuery = model
42
- .find(query)
43
- .select(select)
44
- .sort(sort)
45
- .skip(offset)
46
- .limit(limit)
47
- .lean(lean);
49
+ itemsQuery = model.find(query).select(select).sort(sort).skip(offset).limit(limit).lean(lean);
48
50
 
49
51
  if (populate) {
50
- [].concat(populate).forEach(item => itemsQuery.populate(item));
52
+ [].concat(populate).forEach((item) => itemsQuery.populate(item));
51
53
  }
52
54
  }
53
55
 
54
- return [itemsQuery && limit > 0 ? itemsQuery.exec() : Promise.resolve([]), model.countDocuments(query).exec()];
56
+ return [
57
+ itemsQuery && limit > 0 ? itemsQuery.exec() : Promise.resolve([]),
58
+ model.countDocuments(query).exec(),
59
+ ];
55
60
  }
56
61
 
57
62
  public static processResult(
@@ -62,7 +67,7 @@ export class PaginateBuilder {
62
67
  const { lean, leanWithId, limit, offset } = options;
63
68
  return new Promise((resolve, reject) => {
64
69
  Promise.all(promises).then(
65
- data => {
70
+ (data) => {
66
71
  const items = data[0] as any[];
67
72
  const count = data[1] as number;
68
73
  const result: any = { paging: { limit, offset, totalCount: count } };
@@ -84,7 +89,7 @@ export class PaginateBuilder {
84
89
 
85
90
  resolve(result);
86
91
  },
87
- error => {
92
+ (error) => {
88
93
  if (typeof callback === 'function') {
89
94
  return callback(error, null);
90
95
  }
@@ -1,4 +1,11 @@
1
- import { ILogger, initLogger, LazyLogger, Logger, LoggerConfigs, LogLevel } from '@villedemontreal/logger';
1
+ import {
2
+ ILogger,
3
+ initLogger,
4
+ LazyLogger,
5
+ Logger,
6
+ LoggerConfigs,
7
+ LogLevel,
8
+ } from '@villedemontreal/logger';
2
9
  import { configs } from '../config/configs';
3
10
 
4
11
  let testingLoggerLibInitialised = false;