nongo-driver 2.12.6 → 3.1.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.
Files changed (57) hide show
  1. package/dist/atlas-api.js +6 -6
  2. package/dist/atlas-api.js.map +1 -1
  3. package/dist/cursor-iterator.d.ts +1 -2
  4. package/dist/cursor-iterator.js +3 -1
  5. package/dist/cursor-iterator.js.map +1 -1
  6. package/dist/generate-interfaces.js +24 -7
  7. package/dist/generate-interfaces.js.map +1 -1
  8. package/dist/index.d.ts +1 -1
  9. package/dist/index.js +33 -17
  10. package/dist/index.js.map +1 -1
  11. package/dist/interface/atlas/field.d.ts +1 -1
  12. package/dist/interface/atlas/field.js +1 -0
  13. package/dist/interface/atlas/field.js.map +1 -1
  14. package/dist/interface/atlas/index.js +15 -4
  15. package/dist/interface/atlas/index.js.map +1 -1
  16. package/dist/interface/index.d.ts +1 -10
  17. package/dist/interface/index.js +15 -4
  18. package/dist/interface/index.js.map +1 -1
  19. package/dist/model.d.ts +25 -13
  20. package/dist/model.js +76 -34
  21. package/dist/model.js.map +1 -1
  22. package/dist/mongo-index.d.ts +2 -3
  23. package/dist/mongo-index.js.map +1 -1
  24. package/dist/nongo.d.ts +5 -2
  25. package/dist/nongo.js +45 -21
  26. package/dist/nongo.js.map +1 -1
  27. package/dist/revision-model.d.ts +5 -0
  28. package/dist/revision-model.js +24 -0
  29. package/dist/revision-model.js.map +1 -0
  30. package/dist/schema-parser.js +10 -10
  31. package/dist/schema-parser.js.map +1 -1
  32. package/dist/ts-interface-generator.js +18 -2
  33. package/dist/ts-interface-generator.js.map +1 -1
  34. package/dist/validator.js +1 -1
  35. package/dist/validator.js.map +1 -1
  36. package/jest.config.js +0 -5
  37. package/package.json +19 -25
  38. package/src/atlas-api.ts +11 -40
  39. package/src/cursor-iterator.ts +1 -3
  40. package/src/index.ts +1 -1
  41. package/src/interface/index.ts +0 -11
  42. package/src/model.ts +92 -44
  43. package/src/mongo-index.ts +1 -3
  44. package/src/nongo.ts +34 -6
  45. package/src/revision-model.ts +22 -0
  46. package/test/database-helper.ts +26 -13
  47. package/test/model-versioning.test.ts +83 -0
  48. package/test/models/dummy-model-changed-obj.ts +12 -0
  49. package/test/models/dummy-model-obj.ts +40 -0
  50. package/test/models/dummy-model-with-max-index-obj.ts +195 -0
  51. package/test/models/dummy-model-with-revision-obj.ts +13 -0
  52. package/test/models/dummy-model-with-revision.nongo.ts +22 -0
  53. package/test/models/text-index-model-modified-obj.ts +12 -0
  54. package/test/models/text-index-model-obj.ts +11 -0
  55. package/test/models/text-index-model-too-long-obj.ts +11 -0
  56. package/test/nongo-multi.test.ts +2 -5
  57. package/test/nongo.test.ts +125 -172
package/dist/atlas-api.js CHANGED
@@ -23,16 +23,16 @@ class AtlasApi {
23
23
  }
24
24
  async putCustomAnalyzers(analyzers) {
25
25
  const url = `${this.ftsUrl}/analyzers`;
26
- return request_promise_1.default(Object.assign(Object.assign({}, this.defaultOptions), { url, body: analyzers }));
26
+ return (0, request_promise_1.default)(Object.assign(Object.assign({}, this.defaultOptions), { url, body: analyzers }));
27
27
  }
28
28
  async getSearchIndexes(db, collection) {
29
29
  const url = `${this.ftsUrl}/indexes/${db}/${collection}`;
30
- return request_promise_1.default(Object.assign(Object.assign({}, this.defaultOptions), { url }));
30
+ return (0, request_promise_1.default)(Object.assign(Object.assign({}, this.defaultOptions), { url }));
31
31
  }
32
32
  async createSearchIndex(db, collection, index) {
33
33
  this.logIndexChange(db, collection, 'Creating', index.name);
34
34
  const url = `${this.ftsUrl}/indexes`;
35
- return request_promise_1.default(Object.assign(Object.assign({}, this.defaultOptions), { method: 'POST', url, body: Object.assign({ collectionName: collection, database: db }, index) }));
35
+ return (0, request_promise_1.default)(Object.assign(Object.assign({}, this.defaultOptions), { method: 'POST', url, body: Object.assign({ collectionName: collection, database: db }, index) }));
36
36
  }
37
37
  async ensureSearchIndexes(db, collection, createParams) {
38
38
  const existingIndexes = await this.getSearchIndexes(db, collection);
@@ -55,17 +55,17 @@ class AtlasApi {
55
55
  return await this.getSearchIndexes(db, collection);
56
56
  }
57
57
  async updateSearchIndex(db, collection, existingIndex, createParams) {
58
- if (deep_equal_1.default(existingIndex.mappings, createParams.mappings)) {
58
+ if ((0, deep_equal_1.default)(existingIndex.mappings, createParams.mappings)) {
59
59
  return;
60
60
  }
61
61
  this.logIndexChange(db, collection, 'Updating', createParams.name);
62
62
  const url = `${this.ftsUrl}/indexes/${existingIndex.indexID}`;
63
- return request_promise_1.default(Object.assign(Object.assign({}, this.defaultOptions), { method: 'PATCH', url, body: Object.assign({ collectionName: collection, database: db }, createParams) }));
63
+ return (0, request_promise_1.default)(Object.assign(Object.assign({}, this.defaultOptions), { method: 'PATCH', url, body: Object.assign({ collectionName: collection, database: db }, createParams) }));
64
64
  }
65
65
  async deleteSearchIndex(db, collection, existingIndex) {
66
66
  this.logIndexChange(db, collection, 'Deleting', existingIndex.name);
67
67
  const url = `${this.ftsUrl}/indexes/${existingIndex.indexID}`;
68
- return request_promise_1.default(Object.assign(Object.assign({}, this.defaultOptions), { method: 'DELETE', url }));
68
+ return (0, request_promise_1.default)(Object.assign(Object.assign({}, this.defaultOptions), { method: 'DELETE', url }));
69
69
  }
70
70
  logIndexChange(db, collection, action, indexName) {
71
71
  logger.info(`${action} search index "${indexName}" for collection ${db}.${collection}`);
@@ -1 +1 @@
1
- {"version":3,"file":"atlas-api.js","sourceRoot":"","sources":["../src/atlas-api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"atlas-api.js","sourceRoot":"","sources":["../src/atlas-api.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,7 @@
1
- import { Cursor } from 'mongodb';
2
1
  export default class CursorIterator<T = any> implements AsyncIterator<T> {
3
2
  private cursor;
4
3
  private map;
5
- constructor(cursor: Cursor, map?: (next: any) => any);
4
+ constructor(cursor: any, map?: (next: any) => any);
6
5
  [Symbol.asyncIterator]: () => this;
7
6
  next(): Promise<IteratorResult<T>>;
8
7
  }
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
+ var _a;
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  class CursorIterator {
4
5
  constructor(cursor, map = (next) => next) {
5
6
  this.cursor = cursor;
6
7
  this.map = map;
7
- this[Symbol.asyncIterator] = () => this;
8
+ this[_a] = () => this;
8
9
  }
9
10
  async next() {
10
11
  const next = await this.cursor.next();
@@ -15,4 +16,5 @@ class CursorIterator {
15
16
  }
16
17
  }
17
18
  exports.default = CursorIterator;
19
+ _a = Symbol.asyncIterator;
18
20
  //# sourceMappingURL=cursor-iterator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cursor-iterator.js","sourceRoot":"","sources":["../src/cursor-iterator.ts"],"names":[],"mappings":";;AAEA,MAAqB,cAAc;IAEjC,YAAoB,MAAc,EAAU,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI;QAA5C,WAAM,GAAN,MAAM,CAAQ;QAAU,QAAG,GAAH,GAAG,CAAiB;QAGzD,KAAC,MAAM,CAAC,aAAa,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC;IAF3C,CAAC;IAIM,KAAK,CAAC,IAAI;QACf,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACtC,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YACrB,IAAI,EAAE,IAAI,IAAI,IAAI;SACnB,CAAC;IACJ,CAAC;CAEF;AAfD,iCAeC"}
1
+ {"version":3,"file":"cursor-iterator.js","sourceRoot":"","sources":["../src/cursor-iterator.ts"],"names":[],"mappings":";;;AAAA,MAAqB,cAAc;IAEjC,YAAoB,MAAM,EAAU,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI;QAApC,WAAM,GAAN,MAAM,CAAA;QAAU,QAAG,GAAH,GAAG,CAAiB;QAGjD,QAAsB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC;IAF3C,CAAC;IAIM,KAAK,CAAC,IAAI;QACf,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACtC,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YACrB,IAAI,EAAE,IAAI,IAAI,IAAI;SACnB,CAAC;IACJ,CAAC;CAEF;AAfD,iCAeC;KAVS,MAAM,CAAC,aAAa"}
@@ -1,14 +1,30 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
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
+ });
5
18
  var __importStar = (this && this.__importStar) || function (mod) {
6
19
  if (mod && mod.__esModule) return mod;
7
20
  var result = {};
8
- if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
9
- result["default"] = mod;
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);
10
23
  return result;
11
24
  };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
12
28
  Object.defineProperty(exports, "__esModule", { value: true });
13
29
  const fs_1 = __importDefault(require("fs"));
14
30
  const glob_1 = __importDefault(require("glob"));
@@ -20,6 +36,7 @@ const ts_interface_generator_1 = __importDefault(require("./ts-interface-generat
20
36
  const logger = new wbb_logger_1.default('generate-interfaces.ts');
21
37
  const getInterfacePath = (modelPath) => modelPath.replace(/.nongo\.ts$/, '-obj.ts');
22
38
  const createInterfaces = async (modelDir, placeholder) => {
39
+ var _a;
23
40
  const modelPaths = glob_1.default
24
41
  .sync(path_1.default.join(modelDir, '/**/*.nongo.ts'))
25
42
  .map((p) => path_1.default.resolve(p));
@@ -67,7 +84,7 @@ const createInterfaces = async (modelDir, placeholder) => {
67
84
  fs_1.default.writeFileSync(interfaceFile, tempObj);
68
85
  }
69
86
  // Generate the actual interface for the model
70
- const model = (await Promise.resolve().then(() => __importStar(require(modelPath)))).default;
87
+ const model = (await (_a = modelPath, Promise.resolve().then(() => __importStar(require(_a))))).default;
71
88
  new ts_interface_generator_1.default().generateInterface(model, interfaceFile);
72
89
  }
73
90
  };
@@ -80,7 +97,7 @@ const generateInterfaces = async (modelDir) => {
80
97
  exports.default = generateInterfaces;
81
98
  if (require.main === module) {
82
99
  // Read the args
83
- const args = minimist_1.default(process.argv.slice(2));
100
+ const args = (0, minimist_1.default)(process.argv.slice(2));
84
101
  const { modelDir } = args;
85
102
  if (!modelDir) {
86
103
  throw Error('--modelDir <file path> is required');
@@ -1 +1 @@
1
- {"version":3,"file":"generate-interfaces.js","sourceRoot":"","sources":["../src/generate-interfaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate-interfaces.js","sourceRoot":"","sources":["../src/generate-interfaces.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AACxB,wDAAgC;AAChC,gDAAwB;AACxB,4DAAgC;AAChC,oDAA4B;AAC5B,sFAA4D;AAE5D,MAAM,MAAM,GAAG,IAAI,oBAAM,CAAC,wBAAwB,CAAC,CAAC;AAEpD,MAAM,gBAAgB,GAAG,CAAC,SAAiB,EAAE,EAAE,CAC7C,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;AAE9C,MAAM,gBAAgB,GAAG,KAAK,EAAE,QAAgB,EAAE,WAAoB,EAAE,EAAE;;IACxE,MAAM,UAAU,GAAG,cAAI;SACpB,IAAI,CAAC,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;SAC3C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/B,kCAAkC;IAClC,IAAI,WAAW,EAAE;QACf,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;YAClC,YAAE,CAAC,aAAa,CACd,gBAAgB,CAAC,SAAS,CAAC,EAC3B,gEAAgE,CACjE,CAAC;SACH;QACD,OAAO;KACR;IAED,OAAO,UAAU,CAAC,MAAM,EAAE;QACxB,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC;QAErC,oDAAoD;QACpD,MAAM,SAAS,GAAG,YAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC,KAAK,EAAE,CAAC;QACvE,MAAM,UAAU,GAAG,QAAQ;aACxB,KAAK,CAAC,SAAS,CAAC;aAChB,GAAG,EAAE;aACL,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;aAClB,KAAK,CAAC,GAAG,CAAC;aACV,KAAK,EAAE;aACP,IAAI,EAAE,CAAC;QACV,MAAM,gBAAgB,GAAG,SAAS;aAC/B,KAAK,CAAC,IAAI,MAAM,CAAC,aAAa,GAAG,UAAU,GAAG,SAAS,CAAC,CAAC;aACzD,KAAK,EAAE,CAAC;QACX,MAAM,cAAc,GAAG,cAAI,CAAC,OAAO,CACjC,cAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EACvB,gBAAgB;aACb,KAAK,CAAC,WAAW,CAAC;aAClB,KAAK,EAAE;aACP,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,KAAK,CAChC,CAAC;QAEF,0EAA0E;QAC1E,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACrD,IAAI,SAAS,IAAI,CAAC,EAAE;YAClB,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YAChC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC9B,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YACnC,SAAS;SACV;QAED,yGAAyG;QACzG,MAAM,aAAa,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,UAAU,KAAK,eAAK,CAAC,IAAI,EAAE;YAC7B,MAAM,OAAO,GAAG,YAAE;iBACf,YAAY,CAAC,gBAAgB,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;iBACtD,OAAO,CAAC,UAAU,GAAG,KAAK,EAAE,SAAS,CAAC;iBACtC,OAAO,CAAC,GAAG,EAAE,0BAA0B,CAAC,CAAC;YAC5C,YAAE,CAAC,aAAa,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;SAC1C;QAED,8CAA8C;QAC9C,MAAM,KAAK,GAAG,CAAC,YAAa,SAAS,0DAAC,CAAC,CAAC,OAAO,CAAC;QAChD,IAAI,gCAAoB,EAAE,CAAC,iBAAiB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;KACpE;AACH,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,KAAK,EAAE,QAAgB,EAAE,EAAE;IACpD,MAAM,CAAC,IAAI,CAAC,6BAA6B,QAAQ,KAAK,CAAC,CAAC;IACxD,MAAM,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACvC,MAAM,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACxC,MAAM,CAAC,IAAI,CAAC,sCAAsC,QAAQ,EAAE,CAAC,CAAC;AAChE,CAAC,CAAC;AAEF,kBAAe,kBAAkB,CAAC;AAElC,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE;IAC3B,gBAAgB;IAChB,MAAM,IAAI,GAAG,IAAA,kBAAQ,EAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,MAAM,EAAC,QAAQ,EAAC,GAAG,IAAI,CAAC;IACxB,IAAI,CAAC,QAAQ,EAAE;QACb,MAAM,KAAK,CAAC,oCAAoC,CAAC,CAAC;KACnD;IACD,kBAAkB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;CAChE"}
package/dist/index.d.ts CHANGED
@@ -11,4 +11,4 @@ export { default as generateInterfaces } from './generate-interfaces';
11
11
  export { default as NongoMap } from './nongo-map';
12
12
  export * from './interface';
13
13
  export { default as AtlasApi } from './atlas-api';
14
- export { ObjectId, MongoClient } from 'mongodb';
14
+ export { ObjectId, MongoClient, SortDirection, CollectionInfo, Db, DeleteResult, FindOptions, Filter, Document, UpdateFilter, UpdateOptions } from 'mongodb';
package/dist/index.js CHANGED
@@ -1,32 +1,48 @@
1
1
  "use strict";
2
- function __export(m) {
3
- for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
4
- }
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
5
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.Db = exports.MongoClient = exports.ObjectId = exports.AtlasApi = exports.NongoMap = exports.generateInterfaces = exports.MongoIndex = exports.TsInterfaceGenerator = exports.SchemaParser = exports.Validator = exports.DynamicModel = exports.Model = exports.NongoMulti = exports.Nongo = void 0;
6
21
  var nongo_1 = require("./nongo");
7
- exports.Nongo = nongo_1.default;
22
+ Object.defineProperty(exports, "Nongo", { enumerable: true, get: function () { return __importDefault(nongo_1).default; } });
8
23
  var nongo_multi_1 = require("./nongo-multi");
9
- exports.NongoMulti = nongo_multi_1.default;
24
+ Object.defineProperty(exports, "NongoMulti", { enumerable: true, get: function () { return __importDefault(nongo_multi_1).default; } });
10
25
  var model_1 = require("./model");
11
- exports.Model = model_1.default;
26
+ Object.defineProperty(exports, "Model", { enumerable: true, get: function () { return __importDefault(model_1).default; } });
12
27
  var dynamic_model_1 = require("./dynamic-model");
13
- exports.DynamicModel = dynamic_model_1.default;
28
+ Object.defineProperty(exports, "DynamicModel", { enumerable: true, get: function () { return __importDefault(dynamic_model_1).default; } });
14
29
  var validator_1 = require("./validator");
15
- exports.Validator = validator_1.default;
30
+ Object.defineProperty(exports, "Validator", { enumerable: true, get: function () { return __importDefault(validator_1).default; } });
16
31
  var schema_parser_1 = require("./schema-parser");
17
- exports.SchemaParser = schema_parser_1.default;
32
+ Object.defineProperty(exports, "SchemaParser", { enumerable: true, get: function () { return __importDefault(schema_parser_1).default; } });
18
33
  var ts_interface_generator_1 = require("./ts-interface-generator");
19
- exports.TsInterfaceGenerator = ts_interface_generator_1.default;
34
+ Object.defineProperty(exports, "TsInterfaceGenerator", { enumerable: true, get: function () { return __importDefault(ts_interface_generator_1).default; } });
20
35
  var mongo_index_1 = require("./mongo-index");
21
- exports.MongoIndex = mongo_index_1.default;
36
+ Object.defineProperty(exports, "MongoIndex", { enumerable: true, get: function () { return __importDefault(mongo_index_1).default; } });
22
37
  var generate_interfaces_1 = require("./generate-interfaces");
23
- exports.generateInterfaces = generate_interfaces_1.default;
38
+ Object.defineProperty(exports, "generateInterfaces", { enumerable: true, get: function () { return __importDefault(generate_interfaces_1).default; } });
24
39
  var nongo_map_1 = require("./nongo-map");
25
- exports.NongoMap = nongo_map_1.default;
26
- __export(require("./interface"));
40
+ Object.defineProperty(exports, "NongoMap", { enumerable: true, get: function () { return __importDefault(nongo_map_1).default; } });
41
+ __exportStar(require("./interface"), exports);
27
42
  var atlas_api_1 = require("./atlas-api");
28
- exports.AtlasApi = atlas_api_1.default;
43
+ Object.defineProperty(exports, "AtlasApi", { enumerable: true, get: function () { return __importDefault(atlas_api_1).default; } });
29
44
  var mongodb_1 = require("mongodb");
30
- exports.ObjectId = mongodb_1.ObjectId;
31
- exports.MongoClient = mongodb_1.MongoClient;
45
+ Object.defineProperty(exports, "ObjectId", { enumerable: true, get: function () { return mongodb_1.ObjectId; } });
46
+ Object.defineProperty(exports, "MongoClient", { enumerable: true, get: function () { return mongodb_1.MongoClient; } });
47
+ Object.defineProperty(exports, "Db", { enumerable: true, get: function () { return mongodb_1.Db; } });
32
48
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,iCAAyC;AAAjC,wBAAA,OAAO,CAAS;AACxB,6CAAoD;AAA5C,mCAAA,OAAO,CAAc;AAC7B,iCAAyC;AAAjC,wBAAA,OAAO,CAAS;AACxB,iDAAwD;AAAhD,uCAAA,OAAO,CAAgB;AAC/B,yCAAiD;AAAzC,gCAAA,OAAO,CAAa;AAC5B,iDAAwD;AAAhD,uCAAA,OAAO,CAAgB;AAE/B,mEAAyE;AAAjE,wDAAA,OAAO,CAAwB;AACvC,6CAAoD;AAA5C,mCAAA,OAAO,CAAc;AAC7B,6DAAoE;AAA5D,mDAAA,OAAO,CAAsB;AACrC,yCAAgD;AAAxC,+BAAA,OAAO,CAAY;AAC3B,iCAA4B;AAC5B,yCAAgD;AAAxC,+BAAA,OAAO,CAAY;AAC3B,mCAA8C;AAAtC,6BAAA,QAAQ,CAAA;AAAE,gCAAA,WAAW,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,iCAAyC;AAAjC,+GAAA,OAAO,OAAS;AACxB,6CAAoD;AAA5C,0HAAA,OAAO,OAAc;AAC7B,iCAAyC;AAAjC,+GAAA,OAAO,OAAS;AACxB,iDAAwD;AAAhD,8HAAA,OAAO,OAAgB;AAC/B,yCAAiD;AAAzC,uHAAA,OAAO,OAAa;AAC5B,iDAAwD;AAAhD,8HAAA,OAAO,OAAgB;AAE/B,mEAAyE;AAAjE,+IAAA,OAAO,OAAwB;AACvC,6CAAoD;AAA5C,0HAAA,OAAO,OAAc;AAC7B,6DAAoE;AAA5D,0IAAA,OAAO,OAAsB;AACrC,yCAAgD;AAAxC,sHAAA,OAAO,OAAY;AAC3B,8CAA4B;AAC5B,yCAAgD;AAAxC,sHAAA,OAAO,OAAY;AAC3B,mCAA2J;AAAnJ,mGAAA,QAAQ,OAAA;AAAE,sGAAA,WAAW,OAAA;AAAiC,6FAAA,EAAE,OAAA"}
@@ -24,4 +24,4 @@ export interface NumberField {
24
24
  indexIntegers?: boolean;
25
25
  indexDoubles?: boolean;
26
26
  }
27
- export declare type Field = StringField | DocumentField | NumberField;
27
+ export type Field = StringField | DocumentField | NumberField;
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FieldTypes = void 0;
3
4
  var FieldTypes;
4
5
  (function (FieldTypes) {
5
6
  FieldTypes["NUMBER"] = "number";
@@ -1 +1 @@
1
- {"version":3,"file":"field.js","sourceRoot":"","sources":["../../../src/interface/atlas/field.ts"],"names":[],"mappings":";;AAAA,IAAY,UASX;AATD,WAAY,UAAU;IACpB,+BAAiB,CAAA;IACjB,+BAAiB,CAAA;IACjB,2BAAa,CAAA;IACb,mCAAqB,CAAA;IACrB,oCAAsB,CAAA;IACtB,iCAAmB,CAAA;IACnB,2CAA6B,CAAA;IAC7B,yBAAW,CAAA;AACb,CAAC,EATW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QASrB"}
1
+ {"version":3,"file":"field.js","sourceRoot":"","sources":["../../../src/interface/atlas/field.ts"],"names":[],"mappings":";;;AAAA,IAAY,UASX;AATD,WAAY,UAAU;IACpB,+BAAiB,CAAA;IACjB,+BAAiB,CAAA;IACjB,2BAAa,CAAA;IACb,mCAAqB,CAAA;IACrB,oCAAsB,CAAA;IACtB,iCAAmB,CAAA;IACnB,2CAA6B,CAAA;IAC7B,yBAAW,CAAA;AACb,CAAC,EATW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QASrB"}
@@ -1,7 +1,18 @@
1
1
  "use strict";
2
- function __export(m) {
3
- for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
4
- }
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
5
16
  Object.defineProperty(exports, "__esModule", { value: true });
6
- __export(require("./field"));
17
+ __exportStar(require("./field"), exports);
7
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interface/atlas/index.ts"],"names":[],"mappings":";;;;;AAEA,6BAAwB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interface/atlas/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAEA,0CAAwB"}
@@ -2,13 +2,4 @@ export * from './atlas';
2
2
  /**
3
3
  * Defines an object that can be created via the 'new' keyword
4
4
  */
5
- export declare type Newable<T = any> = new (...args: any[]) => T;
6
- export interface NongoWriteResult {
7
- nModified: number;
8
- ok: number;
9
- n: number;
10
- }
11
- export interface NongoDeleteResult {
12
- ok?: number;
13
- n?: number;
14
- }
5
+ export type Newable<T = any> = new (...args: any[]) => T;
@@ -1,7 +1,18 @@
1
1
  "use strict";
2
- function __export(m) {
3
- for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
4
- }
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
5
16
  Object.defineProperty(exports, "__esModule", { value: true });
6
- __export(require("./atlas"));
17
+ __exportStar(require("./atlas"), exports);
7
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interface/index.ts"],"names":[],"mappings":";;;;;AAAA,6BAAwB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interface/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB"}
package/dist/model.d.ts CHANGED
@@ -1,10 +1,18 @@
1
- import { BulkWriteOpResultObject, CollectionBulkWriteOptions, Db, ObjectId } from 'mongodb';
1
+ import { AggregateOptions, AnyBulkWriteOperation, BulkWriteOptions, BulkWriteResult, CountDocumentsOptions, Db, DeleteOptions, DeleteResult, Document, Filter, FindOptions, ObjectId, UpdateFilter, UpdateOptions, UpdateResult } from 'mongodb';
2
2
  import CursorIterator from './cursor-iterator';
3
- import { CreateSearchIndex, NongoDeleteResult, NongoWriteResult } from './interface';
3
+ import { CreateSearchIndex } from './interface';
4
4
  import MongoIndex from './mongo-index';
5
5
  import Nongo from './nongo';
6
+ export interface RevisionHistory {
7
+ id: string;
8
+ revision: string;
9
+ created: Date;
10
+ }
6
11
  export default abstract class Model<T extends {
7
12
  _id?: ObjectId;
13
+ revision?: string;
14
+ history?: RevisionHistory[];
15
+ diffs?: any;
8
16
  } = any> {
9
17
  nongo: Nongo;
10
18
  obj: T;
@@ -13,26 +21,30 @@ export default abstract class Model<T extends {
13
21
  db: Db;
14
22
  name: string;
15
23
  dynamic: boolean;
24
+ private collectionRevision;
16
25
  constructor(nongo: Nongo, obj: T);
26
+ getCollectionRevision(): string;
27
+ protected schemaVersioningEnabled(): boolean;
17
28
  getMongoIndexes(): MongoIndex[];
18
29
  getAtlasSearchIndexes(): CreateSearchIndex[];
19
30
  validate(): Promise<string[]>;
20
- dumpCollection(dir: string, gzip?: boolean): Promise<void>;
21
31
  idString(): string;
22
32
  save(): Promise<this>;
23
33
  strip(parentPath: any, toStrip: any): void;
24
34
  deleteKey(path: any, obj: any): void;
25
35
  byId(id: any): Promise<this>;
26
- find(query?: any, options?: any): Promise<this[]>;
27
- bulkWrite(operations: object[], options?: CollectionBulkWriteOptions): Promise<BulkWriteOpResultObject>;
28
- findIterator(query?: any, options?: any): Promise<CursorIterator<this>>;
29
- findOne(query?: any): Promise<this>;
30
- remove(query: any): Promise<NongoDeleteResult>;
31
- aggregate(pipeline: any, options?: any): Promise<any[]>;
32
- aggregateIterator(pipeline: any, options?: any): Promise<CursorIterator<any>>;
33
- distinct(field: string): Promise<any>;
34
- update(query: any, updates: any): Promise<NongoWriteResult>;
35
- count(query?: {}): Promise<number>;
36
+ getRevisions(): Promise<this[]>;
37
+ getRevision(query: Filter<Document>): Promise<any>;
38
+ find(query?: Filter<Document>, options?: FindOptions<Document>): Promise<this[]>;
39
+ bulkWrite(operations: AnyBulkWriteOperation<Document>[], options?: BulkWriteOptions): Promise<BulkWriteResult>;
40
+ findIterator(query?: Filter<Document>, options?: FindOptions<Document>, collection?: string): Promise<CursorIterator<this>>;
41
+ findOne(query?: Filter<Document>): Promise<this>;
42
+ remove(query: Filter<Document>, options?: DeleteOptions): Promise<DeleteResult>;
43
+ aggregate(pipeline: Document[], options?: AggregateOptions): Promise<any[]>;
44
+ aggregateIterator(pipeline: Document[], options?: AggregateOptions): Promise<CursorIterator<any>>;
45
+ distinct(field: string, filter?: Filter<Document>): Promise<any[]>;
46
+ update(query: Filter<Document>, updates: UpdateFilter<Document>, options?: UpdateOptions): Promise<UpdateResult<Document>>;
47
+ count(query?: Document, options?: CountDocumentsOptions): Promise<number>;
36
48
  abstract defineSchema(): any;
37
49
  defineSchemaNoIndex(): any;
38
50
  prepareQuery(query: any): any;
package/dist/model.js CHANGED
@@ -11,13 +11,19 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  const clone_deep_1 = __importDefault(require("clone-deep"));
14
- const cmd_promise_1 = __importDefault(require("cmd-promise"));
15
14
  const mongodb_1 = require("mongodb");
16
- const wbb_logger_1 = __importDefault(require("wbb-logger"));
15
+ const just_diff_1 = require("just-diff");
17
16
  const cursor_iterator_1 = __importDefault(require("./cursor-iterator"));
18
17
  const nongo_1 = __importDefault(require("./nongo"));
19
18
  const validator_1 = __importDefault(require("./validator"));
20
- const logger = new wbb_logger_1.default('schema-parser.ts');
19
+ const DEFAULT_PATHS = ['_id', 'revision', 'history', 'diffs'];
20
+ function excludePathsFromDiff(diff, excludedPaths = DEFAULT_PATHS) {
21
+ return diff.filter((d) => {
22
+ if (!excludedPaths.includes(d.path[0])) {
23
+ return true;
24
+ }
25
+ });
26
+ }
21
27
  class Model {
22
28
  constructor(nongo, obj) {
23
29
  this.nongo = nongo;
@@ -34,10 +40,18 @@ class Model {
34
40
  this.obj._id = new mongodb_1.ObjectId(this.obj._id);
35
41
  }
36
42
  this.collection = this.defineCollection();
43
+ this.collectionRevision =
44
+ this.schemaVersioningEnabled() ? `${this.defineCollection()}${nongo_1.default.REVISION}` : null;
37
45
  this.name = this.constructor.name;
38
46
  this.dynamic = false;
39
47
  this.initStructure();
40
48
  }
49
+ getCollectionRevision() {
50
+ return this.collectionRevision;
51
+ }
52
+ schemaVersioningEnabled() {
53
+ return false;
54
+ }
41
55
  getMongoIndexes() {
42
56
  return [];
43
57
  }
@@ -46,14 +60,7 @@ class Model {
46
60
  }
47
61
  async validate() {
48
62
  const schema = this.nongo.schema[this.name];
49
- return await new validator_1.default(schema, this).validate();
50
- }
51
- async dumpCollection(dir, gzip = false) {
52
- logger.info(`Taking dump of ${this.name}...`);
53
- const script = `mkdir -p ${dir};` +
54
- `mongodump --uri "${this.nongo.uri()}" -c ${this.name} ${gzip ? '--gzip' : ''} --out ${dir};`;
55
- await cmd_promise_1.default(script);
56
- logger.info(`Dump written to ${dir}...`);
63
+ return new validator_1.default(schema, this).validate();
57
64
  }
58
65
  idString() {
59
66
  return this.obj._id.toHexString();
@@ -65,7 +72,7 @@ class Model {
65
72
  // Set the object id if there isn't one already
66
73
  this.obj._id = nongo_1.default.toObjectId(this.obj._id);
67
74
  // Make a deep clone so that the original object does not have it's fields striped
68
- this.obj = clone_deep_1.default(this.obj);
75
+ this.obj = (0, clone_deep_1.default)(this.obj);
69
76
  // Strip all the keys from the object that are not present in the schema
70
77
  // if not a dynamic model
71
78
  if (!this.dynamic) {
@@ -76,10 +83,27 @@ class Model {
76
83
  this.throwValidationError(err);
77
84
  }
78
85
  }
86
+ let revisionObj;
87
+ const revisionObjId = new mongodb_1.ObjectId();
88
+ if (this.collectionRevision) {
89
+ revisionObj = await this.db.collection(this.collection).findOne({ _id: this.obj._id });
90
+ this.obj.revision = nongo_1.default.revisionNumber(revisionObj === null || revisionObj === void 0 ? void 0 : revisionObj.revision);
91
+ this.obj.history = nongo_1.default.revisionHistory(revisionObj, revisionObjId);
92
+ // get diffs
93
+ if (revisionObj) {
94
+ delete this.obj.diffs;
95
+ const diffs = (0, just_diff_1.diff)(revisionObj, this.obj);
96
+ this.obj.diffs = excludePathsFromDiff(diffs);
97
+ }
98
+ }
79
99
  // Upsert
80
- await this.db
100
+ const UpsertResult = await this.db
81
101
  .collection(this.collection)
82
102
  .replaceOne({ _id: this.obj._id }, this.obj, { upsert: true });
103
+ if (UpsertResult.modifiedCount === 1 && this.collectionRevision) {
104
+ revisionObj._id = revisionObjId;
105
+ await this.db.collection(this.collectionRevision).insertOne(revisionObj);
106
+ }
83
107
  // Return the saved model
84
108
  return this;
85
109
  }
@@ -145,7 +169,20 @@ class Model {
145
169
  }
146
170
  }
147
171
  async byId(id) {
148
- return await this.findOne({ _id: id });
172
+ return this.findOne({ _id: id });
173
+ }
174
+ async getRevisions() {
175
+ return this.toArray(await this.findIterator({}, { sort: { revision: 'descending' } }, this.collectionRevision));
176
+ }
177
+ async getRevision(query) {
178
+ const doc = await this.db.collection(this.collectionRevision).findOne(query);
179
+ // Return null if no doc was found
180
+ if (doc == null) {
181
+ return null;
182
+ }
183
+ // Otherwise return the doc as a model
184
+ // @ts-ignore
185
+ return new this.constructor(this.nongo, doc);
149
186
  }
150
187
  /*
151
188
  * @param query: A mongo db query.
@@ -167,9 +204,9 @@ class Model {
167
204
  * @param options: the query options e.g. sorting, limiting results etc.
168
205
  * @return the results of the query as an {@link AsyncIterator}.
169
206
  */
170
- async findIterator(query = {}, options) {
207
+ async findIterator(query = {}, options, collection = this.collection) {
171
208
  query = this.prepareQuery(query);
172
- const cursor = this.db.collection(this.collection).find(query, options);
209
+ const cursor = this.db.collection(collection).find(query, options);
173
210
  return new cursor_iterator_1.default(cursor,
174
211
  // @ts-ignore
175
212
  (obj) => new this.constructor(this.nongo, obj));
@@ -189,13 +226,12 @@ class Model {
189
226
  // @ts-ignore
190
227
  return new this.constructor(this.nongo, doc);
191
228
  }
192
- async remove(query) {
229
+ async remove(query, options) {
193
230
  query = this.prepareQuery(query);
194
- const res = await this.db.collection(this.collection).deleteMany(query);
195
- return res.result;
231
+ return this.db.collection(this.collection).deleteMany(query, options);
196
232
  }
197
233
  async aggregate(pipeline, options) {
198
- return await this.toArray(await this.aggregateIterator(pipeline, options));
234
+ return this.toArray(await this.aggregateIterator(pipeline, options));
199
235
  }
200
236
  async aggregateIterator(pipeline, options) {
201
237
  options = options || {};
@@ -208,18 +244,17 @@ class Model {
208
244
  // @ts-ignore
209
245
  return new cursor_iterator_1.default(cursor);
210
246
  }
211
- async distinct(field) {
212
- return await this.db.collection(this.collection).distinct(field, {});
247
+ async distinct(field, filter = {}) {
248
+ return this.db.collection(this.collection).distinct(field, filter);
213
249
  }
214
- async update(query, updates) {
250
+ async update(query, updates, options) {
215
251
  query = this.prepareQuery(query);
216
- const res = await this.db
252
+ return this.db
217
253
  .collection(this.collection)
218
- .updateMany(query, updates);
219
- return res.result;
254
+ .updateMany(query, updates, options);
220
255
  }
221
- async count(query = {}) {
222
- return await this.db.collection(this.collection).countDocuments(query);
256
+ async count(query = {}, options) {
257
+ return this.db.collection(this.collection).countDocuments(query, options);
223
258
  }
224
259
  defineSchemaNoIndex() {
225
260
  const schema = this.defineSchema();
@@ -230,7 +265,7 @@ class Model {
230
265
  * Must be run on all queries before they are used.
231
266
  */
232
267
  prepareQuery(query) {
233
- query = clone_deep_1.default(query);
268
+ query = (0, clone_deep_1.default)(query);
234
269
  const { _id } = query;
235
270
  if (!_id) {
236
271
  return query;
@@ -287,19 +322,26 @@ class Model {
287
322
  }
288
323
  }
289
324
  async toArray(cursorIterator) {
290
- var e_1, _a;
325
+ var _a, e_1, _b, _c;
291
326
  const arr = [];
292
327
  try {
293
328
  // @ts-ignore
294
- for (var cursorIterator_1 = __asyncValues(cursorIterator), cursorIterator_1_1; cursorIterator_1_1 = await cursorIterator_1.next(), !cursorIterator_1_1.done;) {
295
- const m = cursorIterator_1_1.value;
296
- arr.push(m);
329
+ for (var _d = true, cursorIterator_1 = __asyncValues(cursorIterator), cursorIterator_1_1; cursorIterator_1_1 = await cursorIterator_1.next(), _a = cursorIterator_1_1.done, !_a;) {
330
+ _c = cursorIterator_1_1.value;
331
+ _d = false;
332
+ try {
333
+ const m = _c;
334
+ arr.push(m);
335
+ }
336
+ finally {
337
+ _d = true;
338
+ }
297
339
  }
298
340
  }
299
341
  catch (e_1_1) { e_1 = { error: e_1_1 }; }
300
342
  finally {
301
343
  try {
302
- if (cursorIterator_1_1 && !cursorIterator_1_1.done && (_a = cursorIterator_1.return)) await _a.call(cursorIterator_1);
344
+ if (!_d && !_a && (_b = cursorIterator_1.return)) await _b.call(cursorIterator_1);
303
345
  }
304
346
  finally { if (e_1) throw e_1.error; }
305
347
  }