@orion-js/mongodb 3.11.8 → 3.12.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 (172) hide show
  1. package/README.md +15 -0
  2. package/dist/index.cjs +81990 -0
  3. package/dist/index.d.ts +204 -0
  4. package/dist/index.js +81964 -0
  5. package/package.json +29 -27
  6. package/LICENSE +0 -21
  7. package/lib/connect/connections.d.ts +0 -13
  8. package/lib/connect/connections.js +0 -4
  9. package/lib/connect/getDBName.d.ts +0 -1
  10. package/lib/connect/getDBName.js +0 -23
  11. package/lib/connect/getMongoConnection.d.ts +0 -8
  12. package/lib/connect/getMongoConnection.js +0 -47
  13. package/lib/connect/getMongoConnection.test.d.ts +0 -1
  14. package/lib/connect/getMongoConnection.test.js +0 -43
  15. package/lib/connect/getMongoURLFromEnv.d.ts +0 -1
  16. package/lib/connect/getMongoURLFromEnv.js +0 -21
  17. package/lib/connect/index.d.ts +0 -4
  18. package/lib/connect/index.js +0 -8
  19. package/lib/createCollection/createIndexPromisesTest.d.ts +0 -1
  20. package/lib/createCollection/createIndexPromisesTest.js +0 -12
  21. package/lib/createCollection/createIndexes.d.ts +0 -3
  22. package/lib/createCollection/createIndexes.js +0 -67
  23. package/lib/createCollection/createIndexes.test.d.ts +0 -1
  24. package/lib/createCollection/createIndexes.test.js +0 -91
  25. package/lib/createCollection/createIndexesPromise.test.d.ts +0 -1
  26. package/lib/createCollection/createIndexesPromise.test.js +0 -32
  27. package/lib/createCollection/generateId.d.ts +0 -3
  28. package/lib/createCollection/generateId.js +0 -25
  29. package/lib/createCollection/generateId.test.d.ts +0 -1
  30. package/lib/createCollection/generateId.test.js +0 -108
  31. package/lib/createCollection/getMethods/aggregate.test.d.ts +0 -1
  32. package/lib/createCollection/getMethods/aggregate.test.js +0 -20
  33. package/lib/createCollection/getMethods/cleanModifier.d.ts +0 -4
  34. package/lib/createCollection/getMethods/cleanModifier.js +0 -75
  35. package/lib/createCollection/getMethods/cleanModifier.test.d.ts +0 -1
  36. package/lib/createCollection/getMethods/cleanModifier.test.js +0 -186
  37. package/lib/createCollection/getMethods/countDocuments.d.ts +0 -2
  38. package/lib/createCollection/getMethods/countDocuments.js +0 -16
  39. package/lib/createCollection/getMethods/countDocuments.test.d.ts +0 -1
  40. package/lib/createCollection/getMethods/countDocuments.test.js +0 -21
  41. package/lib/createCollection/getMethods/dataLoader/dataLoad/getDataLoader.d.ts +0 -9
  42. package/lib/createCollection/getMethods/dataLoader/dataLoad/getDataLoader.js +0 -25
  43. package/lib/createCollection/getMethods/dataLoader/dataLoad/getDataLoader.test.d.ts +0 -1
  44. package/lib/createCollection/getMethods/dataLoader/dataLoad/getDataLoader.test.js +0 -37
  45. package/lib/createCollection/getMethods/dataLoader/dataLoad/index.d.ts +0 -9
  46. package/lib/createCollection/getMethods/dataLoader/dataLoad/index.js +0 -21
  47. package/lib/createCollection/getMethods/dataLoader/index.d.ts +0 -5
  48. package/lib/createCollection/getMethods/dataLoader/index.js +0 -14
  49. package/lib/createCollection/getMethods/dataLoader/loadById.d.ts +0 -2
  50. package/lib/createCollection/getMethods/dataLoader/loadById.js +0 -13
  51. package/lib/createCollection/getMethods/dataLoader/loadById.test.d.ts +0 -1
  52. package/lib/createCollection/getMethods/dataLoader/loadById.test.js +0 -23
  53. package/lib/createCollection/getMethods/dataLoader/loadData.d.ts +0 -2
  54. package/lib/createCollection/getMethods/dataLoader/loadData.js +0 -49
  55. package/lib/createCollection/getMethods/dataLoader/loadMany.d.ts +0 -2
  56. package/lib/createCollection/getMethods/dataLoader/loadMany.js +0 -10
  57. package/lib/createCollection/getMethods/dataLoader/loadMany.test.d.ts +0 -1
  58. package/lib/createCollection/getMethods/dataLoader/loadMany.test.js +0 -85
  59. package/lib/createCollection/getMethods/dataLoader/loadOne.d.ts +0 -2
  60. package/lib/createCollection/getMethods/dataLoader/loadOne.js +0 -10
  61. package/lib/createCollection/getMethods/dataLoader/loadOne.test.d.ts +0 -1
  62. package/lib/createCollection/getMethods/dataLoader/loadOne.test.js +0 -76
  63. package/lib/createCollection/getMethods/deleteMany.d.ts +0 -2
  64. package/lib/createCollection/getMethods/deleteMany.js +0 -16
  65. package/lib/createCollection/getMethods/deleteOne.d.ts +0 -2
  66. package/lib/createCollection/getMethods/deleteOne.js +0 -16
  67. package/lib/createCollection/getMethods/estimatedDocumentCount.d.ts +0 -3
  68. package/lib/createCollection/getMethods/estimatedDocumentCount.js +0 -10
  69. package/lib/createCollection/getMethods/estimatedDocumentCount.test.d.ts +0 -1
  70. package/lib/createCollection/getMethods/estimatedDocumentCount.test.js +0 -15
  71. package/lib/createCollection/getMethods/find.d.ts +0 -2
  72. package/lib/createCollection/getMethods/find.js +0 -21
  73. package/lib/createCollection/getMethods/findOne.d.ts +0 -2
  74. package/lib/createCollection/getMethods/findOne.js +0 -18
  75. package/lib/createCollection/getMethods/findOneAndUpdate.d.ts +0 -3
  76. package/lib/createCollection/getMethods/findOneAndUpdate.js +0 -29
  77. package/lib/createCollection/getMethods/findOneAndUpdate.test.d.ts +0 -1
  78. package/lib/createCollection/getMethods/findOneAndUpdate.test.js +0 -15
  79. package/lib/createCollection/getMethods/getSelector.d.ts +0 -3
  80. package/lib/createCollection/getMethods/getSelector.js +0 -21
  81. package/lib/createCollection/getMethods/getSelector.test.d.ts +0 -1
  82. package/lib/createCollection/getMethods/getSelector.test.js +0 -46
  83. package/lib/createCollection/getMethods/index.d.ts +0 -16
  84. package/lib/createCollection/getMethods/index.js +0 -36
  85. package/lib/createCollection/getMethods/insertAndFind.d.ts +0 -3
  86. package/lib/createCollection/getMethods/insertAndFind.js +0 -31
  87. package/lib/createCollection/getMethods/insertAndFind.test.d.ts +0 -1
  88. package/lib/createCollection/getMethods/insertAndFind.test.js +0 -50
  89. package/lib/createCollection/getMethods/insertMany.d.ts +0 -3
  90. package/lib/createCollection/getMethods/insertMany.js +0 -36
  91. package/lib/createCollection/getMethods/insertMany.test.d.ts +0 -1
  92. package/lib/createCollection/getMethods/insertMany.test.js +0 -66
  93. package/lib/createCollection/getMethods/insertOne.d.ts +0 -3
  94. package/lib/createCollection/getMethods/insertOne.js +0 -31
  95. package/lib/createCollection/getMethods/insertOne.test.d.ts +0 -1
  96. package/lib/createCollection/getMethods/insertOne.test.js +0 -104
  97. package/lib/createCollection/getMethods/update.test.d.ts +0 -1
  98. package/lib/createCollection/getMethods/update.test.js +0 -287
  99. package/lib/createCollection/getMethods/updateAndFind.d.ts +0 -3
  100. package/lib/createCollection/getMethods/updateAndFind.js +0 -18
  101. package/lib/createCollection/getMethods/updateAndFind.test.d.ts +0 -1
  102. package/lib/createCollection/getMethods/updateAndFind.test.js +0 -38
  103. package/lib/createCollection/getMethods/updateItem.d.ts +0 -2
  104. package/lib/createCollection/getMethods/updateItem.js +0 -19
  105. package/lib/createCollection/getMethods/updateItem.test.d.ts +0 -1
  106. package/lib/createCollection/getMethods/updateItem.test.js +0 -38
  107. package/lib/createCollection/getMethods/updateMany.d.ts +0 -3
  108. package/lib/createCollection/getMethods/updateMany.js +0 -30
  109. package/lib/createCollection/getMethods/updateOne.d.ts +0 -3
  110. package/lib/createCollection/getMethods/updateOne.js +0 -30
  111. package/lib/createCollection/getMethods/upsert.d.ts +0 -3
  112. package/lib/createCollection/getMethods/upsert.js +0 -31
  113. package/lib/createCollection/getMethods/upsert.test.d.ts +0 -1
  114. package/lib/createCollection/getMethods/upsert.test.js +0 -92
  115. package/lib/createCollection/getMethods/validateModifier/index.d.ts +0 -1
  116. package/lib/createCollection/getMethods/validateModifier/index.js +0 -18
  117. package/lib/createCollection/getMethods/validateModifier/index.test.d.ts +0 -1
  118. package/lib/createCollection/getMethods/validateModifier/index.test.js +0 -74
  119. package/lib/createCollection/getMethods/validateModifier/validateInc.d.ts +0 -7
  120. package/lib/createCollection/getMethods/validateModifier/validateInc.js +0 -20
  121. package/lib/createCollection/getMethods/validateModifier/validateInc.test.d.ts +0 -1
  122. package/lib/createCollection/getMethods/validateModifier/validateInc.test.js +0 -12
  123. package/lib/createCollection/getMethods/validateModifier/validateOperator.d.ts +0 -5
  124. package/lib/createCollection/getMethods/validateModifier/validateOperator.js +0 -34
  125. package/lib/createCollection/getMethods/validateModifier/validatePush.d.ts +0 -8
  126. package/lib/createCollection/getMethods/validateModifier/validatePush.js +0 -27
  127. package/lib/createCollection/getMethods/validateModifier/validatePush.test.d.ts +0 -1
  128. package/lib/createCollection/getMethods/validateModifier/validatePush.test.js +0 -90
  129. package/lib/createCollection/getMethods/validateModifier/validateSet.d.ts +0 -7
  130. package/lib/createCollection/getMethods/validateModifier/validateSet.js +0 -19
  131. package/lib/createCollection/getMethods/validateModifier/validateSet.test.d.ts +0 -1
  132. package/lib/createCollection/getMethods/validateModifier/validateSet.test.js +0 -16
  133. package/lib/createCollection/getMethods/validateModifier/validateUnset.d.ts +0 -7
  134. package/lib/createCollection/getMethods/validateModifier/validateUnset.js +0 -19
  135. package/lib/createCollection/getMethods/validateModifier/validateUnset.test.d.ts +0 -1
  136. package/lib/createCollection/getMethods/validateModifier/validateUnset.test.js +0 -71
  137. package/lib/createCollection/getMethods/validateModifier/validateUpsert.d.ts +0 -1
  138. package/lib/createCollection/getMethods/validateModifier/validateUpsert.js +0 -43
  139. package/lib/createCollection/getMethods/validateModifier/validateUpsert.test.d.ts +0 -1
  140. package/lib/createCollection/getMethods/validateModifier/validateUpsert.test.js +0 -50
  141. package/lib/createCollection/getMethods/wrapErrors.d.ts +0 -1
  142. package/lib/createCollection/getMethods/wrapErrors.js +0 -29
  143. package/lib/createCollection/getSchemaAndModel.d.ts +0 -10
  144. package/lib/createCollection/getSchemaAndModel.js +0 -41
  145. package/lib/createCollection/handleError.d.ts +0 -1
  146. package/lib/createCollection/handleError.js +0 -25
  147. package/lib/createCollection/index.d.ts +0 -4
  148. package/lib/createCollection/index.js +0 -77
  149. package/lib/createCollection/initItem.d.ts +0 -2
  150. package/lib/createCollection/initItem.js +0 -13
  151. package/lib/createCollection/typedModel.test.d.ts +0 -1
  152. package/lib/createCollection/typedModel.test.js +0 -159
  153. package/lib/helpers/fromDot.d.ts +0 -1
  154. package/lib/helpers/fromDot.js +0 -12
  155. package/lib/helpers/fromDot.test.d.ts +0 -1
  156. package/lib/helpers/fromDot.test.js +0 -47
  157. package/lib/helpers/toDot.d.ts +0 -1
  158. package/lib/helpers/toDot.js +0 -11
  159. package/lib/helpers/toDot.test.d.ts +0 -1
  160. package/lib/helpers/toDot.test.js +0 -23
  161. package/lib/index.d.ts +0 -5
  162. package/lib/index.js +0 -35
  163. package/lib/service/index.d.ts +0 -3
  164. package/lib/service/index.js +0 -32
  165. package/lib/service/index.test.d.ts +0 -1
  166. package/lib/service/index.test.js +0 -73
  167. package/lib/tests/setup.d.ts +0 -1
  168. package/lib/tests/setup.js +0 -20
  169. package/lib/types/index.d.ts +0 -178
  170. package/lib/types/index.js +0 -2
  171. package/lib/types/types.test.d.ts +0 -1
  172. package/lib/types/types.test.js +0 -59
@@ -1,43 +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 index_1 = __importDefault(require("./index"));
7
- const schema_1 = require("@orion-js/schema");
8
- const omit_1 = __importDefault(require("lodash/omit"));
9
- const fromDot_1 = __importDefault(require("../../../helpers/fromDot"));
10
- const getPushSimulation = function ($push) {
11
- if (!$push)
12
- return {};
13
- const simulation = {};
14
- for (const key of Object.keys($push)) {
15
- const value = $push[key];
16
- if (typeof value === 'object' && '$each' in value) {
17
- simulation[key] = value.$each;
18
- }
19
- else {
20
- simulation[key] = [value];
21
- }
22
- }
23
- return simulation;
24
- };
25
- const simulateNewDoc = function (selector, modifier) {
26
- return (0, fromDot_1.default)({
27
- ...selector,
28
- ...modifier.$set,
29
- ...modifier.$inc,
30
- ...getPushSimulation(modifier.$push),
31
- ...getPushSimulation(modifier.$addToSet),
32
- ...modifier.$setOnInsert
33
- });
34
- };
35
- const validateNewDoc = async function (schema, selector, modifier) {
36
- const doc = simulateNewDoc(selector, modifier);
37
- await (0, schema_1.validate)(schema, doc);
38
- };
39
- async function default_1(schema, selector, modifier) {
40
- await validateNewDoc(schema, selector, modifier);
41
- await (0, index_1.default)(schema, (0, omit_1.default)(modifier, '$setOnInsert'));
42
- }
43
- exports.default = default_1;
@@ -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 validateUpsert_1 = __importDefault(require("./validateUpsert"));
7
- it('pass validation when everything is fine', async () => {
8
- const person = {
9
- name: { type: String },
10
- state: { type: String, optional: true }
11
- };
12
- const schema = {
13
- name: { type: String },
14
- age: { type: Number },
15
- wife: { type: person },
16
- friends: { type: [person] }
17
- };
18
- const selector = { name: 'Nicolás' };
19
- const modifier = {
20
- $inc: { age: 1 },
21
- $set: { 'wife.state': 'Hungry', 'wife.name': 'Francisca' },
22
- $push: { friends: { name: 'Joaquín' } }
23
- };
24
- await (0, validateUpsert_1.default)(schema, selector, modifier);
25
- });
26
- it('get correct validation errors', async () => {
27
- const person = {
28
- name: { type: String },
29
- state: { type: String, optional: true }
30
- };
31
- const schema = {
32
- name: { type: String },
33
- age: { type: Number },
34
- wife: { type: person },
35
- friends: { type: [person] }
36
- };
37
- const selector = { name: 'Nicolás' };
38
- const modifier = {
39
- $inc: { age: 'not a number' },
40
- $set: { 'wife.state': 1, 'wife.name': 'Francisca' },
41
- $push: { friends: 'Joaquín' }
42
- };
43
- expect.assertions(1);
44
- try {
45
- await (0, validateUpsert_1.default)(schema, selector, modifier);
46
- }
47
- catch (error) {
48
- expect(error.code).toBe('validationError');
49
- }
50
- });
@@ -1 +0,0 @@
1
- export declare const wrapErrors: <TFunc extends () => Promise<any>>(operation: TFunc) => Promise<ReturnType<TFunc>>;
@@ -1,29 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.wrapErrors = void 0;
4
- const schema_1 = require("@orion-js/schema");
5
- const wrapErrors = async (operation) => {
6
- try {
7
- return await operation();
8
- }
9
- catch (error) {
10
- if (error.code === 11000) {
11
- const regex = /index: (?:.*\.)?\$?(?:([_a-z0-9]*)(?:_\d*)|([_a-z0-9]*))\s*dup key/i;
12
- const match = error.message.match(regex);
13
- if (!match) {
14
- throw new schema_1.ValidationError({
15
- unknownKey: 'notUnique'
16
- });
17
- }
18
- const indexNameText = match[1] || match[2];
19
- const names = indexNameText.split(/_[_a-z0-9]_/);
20
- const errors = {};
21
- for (const name of names) {
22
- errors[name] = 'notUnique';
23
- }
24
- throw new schema_1.ValidationError(errors);
25
- }
26
- throw error;
27
- }
28
- };
29
- exports.wrapErrors = wrapErrors;
@@ -1,10 +0,0 @@
1
- import { Model } from '@orion-js/models';
2
- import { Schema } from '@orion-js/schema';
3
- import { CreateCollectionOptions } from '../types';
4
- export declare function getModel(options: CreateCollectionOptions): Model;
5
- export declare function prepareShema(schema: Schema): Schema;
6
- export declare function getSchema(options: CreateCollectionOptions, optionsModel?: Model): Schema;
7
- export declare function getSchemaAndModel(options: CreateCollectionOptions): {
8
- schema: Schema;
9
- model: Model;
10
- };
@@ -1,41 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSchemaAndModel = exports.getSchema = exports.prepareShema = exports.getModel = void 0;
4
- const lodash_1 = require("lodash");
5
- function getModel(options) {
6
- if (!options.model)
7
- return;
8
- return options.model && options.model.getModel ? options.model.getModel() : options.model;
9
- }
10
- exports.getModel = getModel;
11
- function prepareShema(schema) {
12
- if (!schema._id) {
13
- schema._id = {
14
- type: String
15
- };
16
- }
17
- return schema;
18
- }
19
- exports.prepareShema = prepareShema;
20
- function getSchema(options, optionsModel) {
21
- if (optionsModel) {
22
- const schema = optionsModel ? (0, lodash_1.cloneDeep)(optionsModel.getCleanSchema()) : {};
23
- return prepareShema(schema);
24
- }
25
- // schema is a typed model
26
- if (options.schema && options.schema.getModel) {
27
- const model = options.schema.getModel();
28
- const schema = model ? (0, lodash_1.cloneDeep)(model.getCleanSchema()) : {};
29
- return prepareShema(schema);
30
- }
31
- if (options.schema && (0, lodash_1.isPlainObject)(options.schema)) {
32
- return prepareShema(options.schema);
33
- }
34
- }
35
- exports.getSchema = getSchema;
36
- function getSchemaAndModel(options) {
37
- const model = getModel(options);
38
- const schema = getSchema(options, model);
39
- return { schema, model };
40
- }
41
- exports.getSchemaAndModel = getSchemaAndModel;
@@ -1 +0,0 @@
1
- export default function (func: any): (...args: any[]) => Promise<any>;
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const schema_1 = require("@orion-js/schema");
4
- function default_1(func) {
5
- return async (...args) => {
6
- try {
7
- return await func(...args);
8
- }
9
- catch (error) {
10
- if (error.code === 11000) {
11
- const regex = /index: (?:.*\.)?\$?(?:([_a-z0-9]*)(?:_\d*)|([_a-z0-9]*))\s*dup key/i;
12
- const match = error.message.match(regex);
13
- const indexNameText = match[1] || match[2];
14
- const names = indexNameText.split(/_[_a-z0-9]_/);
15
- const errors = {};
16
- for (const name of names) {
17
- errors[name] = 'notUnique';
18
- }
19
- throw new schema_1.ValidationError(errors);
20
- }
21
- throw error;
22
- }
23
- };
24
- }
25
- exports.default = default_1;
@@ -1,4 +0,0 @@
1
- import { CreateCollection } from '../types';
2
- export declare const createIndexesPromises: any[];
3
- declare const createCollection: CreateCollection;
4
- export default createCollection;
@@ -1,77 +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
- exports.createIndexesPromises = void 0;
7
- const initItem_1 = __importDefault(require("./initItem"));
8
- const getMethods_1 = require("./getMethods");
9
- const dataLoader_1 = require("./getMethods/dataLoader");
10
- const generateId_1 = __importDefault(require("./generateId"));
11
- const createIndexes_1 = require("./createIndexes");
12
- const __1 = require("..");
13
- const getSchemaAndModel_1 = require("./getSchemaAndModel");
14
- exports.createIndexesPromises = [];
15
- const createCollection = (options) => {
16
- const connectionName = options.connectionName || 'main';
17
- const orionConnection = (0, __1.getMongoConnection)({ name: connectionName });
18
- if (!orionConnection) {
19
- throw new Error(`The connection to MongoDB "${connectionName}" was not found`);
20
- }
21
- const db = orionConnection.db;
22
- const rawCollection = db.collection(options.name);
23
- const { schema, model } = (0, getSchemaAndModel_1.getSchemaAndModel)(options);
24
- const collection = {
25
- name: options.name,
26
- connectionName,
27
- schema,
28
- model,
29
- indexes: options.indexes || [],
30
- db,
31
- client: orionConnection,
32
- connectionPromise: orionConnection.connectionPromise,
33
- rawCollection,
34
- generateId: (0, generateId_1.default)(options),
35
- getSchema: () => schema
36
- };
37
- // helpers
38
- collection.initItem = (0, initItem_1.default)(collection);
39
- // modified orion methods
40
- collection.findOne = (0, getMethods_1.findOne)(collection);
41
- collection.find = (0, getMethods_1.find)(collection);
42
- collection.findOneAndUpdate = (0, getMethods_1.findOneAndUpdate)(collection);
43
- collection.insertOne = (0, getMethods_1.insertOne)(collection);
44
- collection.insertMany = (0, getMethods_1.insertMany)(collection);
45
- collection.insertAndFind = (0, getMethods_1.insertAndFind)(collection);
46
- collection.updateOne = (0, getMethods_1.updateOne)(collection);
47
- collection.updateMany = (0, getMethods_1.updateMany)(collection);
48
- collection.deleteMany = (0, getMethods_1.deleteMany)(collection);
49
- collection.deleteOne = (0, getMethods_1.deleteOne)(collection);
50
- collection.upsert = (0, getMethods_1.upsert)(collection);
51
- // counts
52
- collection.estimatedDocumentCount = (0, getMethods_1.estimatedDocumentCount)(collection);
53
- collection.countDocuments = (0, getMethods_1.countDocuments)(collection);
54
- // update and find
55
- collection.updateAndFind = (0, getMethods_1.updateAndFind)(collection);
56
- collection.updateItem = (0, getMethods_1.updateItem)(collection);
57
- // plain passed methods
58
- collection.aggregate = (pipeline, options) => collection.rawCollection.aggregate(pipeline, options);
59
- collection.watch = (pipeline, options) => collection.rawCollection.watch(pipeline, options);
60
- // data loader
61
- collection.loadData = (0, dataLoader_1.loadData)(collection);
62
- collection.loadById = (0, dataLoader_1.loadById)(collection);
63
- collection.loadOne = (0, dataLoader_1.loadOne)(collection);
64
- collection.loadMany = (0, dataLoader_1.loadMany)(collection);
65
- const createIndexes = async () => {
66
- const createIndexPromise = (0, createIndexes_1.loadIndexes)(collection);
67
- exports.createIndexesPromises.push(createIndexPromise);
68
- collection.createIndexesPromise = createIndexPromise;
69
- return createIndexPromise;
70
- };
71
- collection.createIndexes = createIndexes;
72
- if (!process.env.DONT_CREATE_INDEXES_AUTOMATICALLY) {
73
- createIndexes();
74
- }
75
- return collection;
76
- };
77
- exports.default = createCollection;
@@ -1,2 +0,0 @@
1
- import { Collection, InitItem, ModelClassBase } from '../types';
2
- export default function initItem<ModelClass extends ModelClassBase>(collection: Partial<Collection<ModelClass>>): InitItem<ModelClass>;
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- function initItem(collection) {
4
- const initItem = doc => {
5
- if (!doc)
6
- return doc;
7
- if (!collection.model)
8
- return doc;
9
- return collection.model.initItem(doc);
10
- };
11
- return initItem;
12
- }
13
- exports.default = initItem;
@@ -1 +0,0 @@
1
- export {};
@@ -1,159 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- const _1 = __importDefault(require("."));
16
- const typed_model_1 = require("@orion-js/typed-model");
17
- const helpers_1 = require("@orion-js/helpers");
18
- const resolvers_1 = require("@orion-js/resolvers");
19
- describe('Collections with typed model', () => {
20
- const resolve = async (person, { title }, viewer) => {
21
- return `${title} ${person.firstName} ${person.lastName}`;
22
- };
23
- const titleResolver = (0, resolvers_1.modelResolver)({
24
- returns: String,
25
- resolve
26
- });
27
- let Person = class Person {
28
- };
29
- __decorate([
30
- (0, typed_model_1.Prop)(),
31
- __metadata("design:type", String)
32
- ], Person.prototype, "_id", void 0);
33
- __decorate([
34
- (0, typed_model_1.Prop)(),
35
- __metadata("design:type", String)
36
- ], Person.prototype, "firstName", void 0);
37
- __decorate([
38
- (0, typed_model_1.Prop)({ max: 10 }),
39
- __metadata("design:type", String)
40
- ], Person.prototype, "lastName", void 0);
41
- __decorate([
42
- (0, typed_model_1.ResolverProp)(titleResolver),
43
- __metadata("design:type", Object)
44
- ], Person.prototype, "title", void 0);
45
- Person = __decorate([
46
- (0, typed_model_1.TypedModel)()
47
- ], Person);
48
- it('Should throw a validation error', async () => {
49
- const Persons = (0, _1.default)({
50
- name: (0, helpers_1.generateId)(),
51
- model: (0, typed_model_1.getModelForClass)(Person)
52
- });
53
- expect.assertions(1);
54
- try {
55
- await Persons.insertOne({ firstName: 'John', lastName: 'Really long last name' });
56
- }
57
- catch (e) {
58
- const validationError = e;
59
- expect(validationError.validationErrors).toEqual({
60
- lastName: 'stringTooLong'
61
- });
62
- }
63
- });
64
- it('Should pass the resolvers to the items', async () => {
65
- const Persons = (0, _1.default)({
66
- name: (0, helpers_1.generateId)(),
67
- model: (0, typed_model_1.getModelForClass)(Person)
68
- });
69
- await Persons.insertOne({
70
- firstName: 'John',
71
- lastName: 'Doe'
72
- });
73
- const person = await Persons.findOne({});
74
- const title = await person.title({ title: 'Mr.' });
75
- expect(title).toBe('Mr. John Doe');
76
- });
77
- it('Should allow passing _id on insert', async () => {
78
- let PersonOptionalId = class PersonOptionalId {
79
- };
80
- __decorate([
81
- (0, typed_model_1.Prop)(),
82
- __metadata("design:type", String)
83
- ], PersonOptionalId.prototype, "_id", void 0);
84
- __decorate([
85
- (0, typed_model_1.Prop)(),
86
- __metadata("design:type", String)
87
- ], PersonOptionalId.prototype, "firstName", void 0);
88
- __decorate([
89
- (0, typed_model_1.Prop)({ optional: true }),
90
- __metadata("design:type", String)
91
- ], PersonOptionalId.prototype, "lastName", void 0);
92
- PersonOptionalId = __decorate([
93
- (0, typed_model_1.TypedSchema)()
94
- ], PersonOptionalId);
95
- const Persons = (0, _1.default)({
96
- name: (0, helpers_1.generateId)(),
97
- model: PersonOptionalId
98
- });
99
- await Persons.insertOne({
100
- _id: '1',
101
- firstName: 'John'
102
- });
103
- const person = await Persons.findOne('1');
104
- expect(person.firstName).toBe('John');
105
- });
106
- it('Should validate but not initialize documents when passed typed schema', async () => {
107
- const resolve = async (person, { title }, viewer) => {
108
- return `${title} ${person.firstName} ${person.lastName}`;
109
- };
110
- const titleResolver = (0, resolvers_1.modelResolver)({
111
- returns: String,
112
- resolve
113
- });
114
- let Person = class Person {
115
- };
116
- __decorate([
117
- (0, typed_model_1.Prop)(),
118
- __metadata("design:type", String)
119
- ], Person.prototype, "_id", void 0);
120
- __decorate([
121
- (0, typed_model_1.Prop)(),
122
- __metadata("design:type", String)
123
- ], Person.prototype, "firstName", void 0);
124
- __decorate([
125
- (0, typed_model_1.Prop)({ max: 3 }),
126
- __metadata("design:type", String)
127
- ], Person.prototype, "lastName", void 0);
128
- __decorate([
129
- (0, typed_model_1.ResolverProp)(titleResolver),
130
- __metadata("design:type", Object)
131
- ], Person.prototype, "title", void 0);
132
- Person = __decorate([
133
- (0, typed_model_1.TypedSchema)()
134
- ], Person);
135
- const Persons = (0, _1.default)({
136
- name: (0, helpers_1.generateId)(),
137
- schema: Person
138
- });
139
- expect.assertions(3);
140
- try {
141
- await Persons.insertOne({
142
- _id: '1',
143
- firstName: 'John',
144
- lastName: 'ppoo'
145
- });
146
- }
147
- catch (error) {
148
- expect(error.message).toBe('Validation Error: {lastName: stringTooLong}');
149
- }
150
- await Persons.insertOne({
151
- _id: '1',
152
- firstName: 'John',
153
- lastName: 'Doe'
154
- });
155
- const person = await Persons.findOne('1');
156
- expect(person.firstName).toBe('John');
157
- expect(person.title).toBeUndefined();
158
- });
159
- });
@@ -1 +0,0 @@
1
- export default function fromDot(doc: any): any;
@@ -1,12 +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 dot_object_1 = __importDefault(require("dot-object"));
7
- const toDot_1 = __importDefault(require("./toDot"));
8
- function fromDot(doc) {
9
- doc = (0, toDot_1.default)(doc);
10
- return dot_object_1.default.object(doc);
11
- }
12
- exports.default = fromDot;
@@ -1 +0,0 @@
1
- export {};
@@ -1,47 +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 fromDot_1 = __importDefault(require("./fromDot"));
7
- it('should convert objects from dot notation', async () => {
8
- const result = (0, fromDot_1.default)({
9
- 'person.name': 'Nicolás',
10
- 'person.framework': 'Orion'
11
- });
12
- expect(result).toEqual({
13
- person: { name: 'Nicolás', framework: 'Orion' }
14
- });
15
- });
16
- it('should handle object with values that are not in dot notation', async () => {
17
- const doc = {
18
- 'person.name': 'Nicolás',
19
- person: { friends: [{ person: { name: 'Joaquín' } }, { person: { name: 'Roberto' } }] }
20
- };
21
- const result = (0, fromDot_1.default)(doc);
22
- expect(result).toEqual({
23
- person: {
24
- name: 'Nicolás',
25
- friends: [{ person: { name: 'Joaquín' } }, { person: { name: 'Roberto' } }]
26
- }
27
- });
28
- });
29
- it('should convert objects with array from dot notation', async () => {
30
- const result = (0, fromDot_1.default)({
31
- 'person.friends': [{ 'person.name': 'Joaquín' }, { 'person.name': 'Roberto' }]
32
- });
33
- expect(result).toEqual({
34
- person: { friends: [{ person: { name: 'Joaquín' } }, { person: { name: 'Roberto' } }] }
35
- });
36
- });
37
- it('should convert objects with index array from dot notation', async () => {
38
- const result = (0, fromDot_1.default)({
39
- 'person.friends.0.person.name': 'Joaquín',
40
- 'person.friends.1.person.name': 'Roberto'
41
- });
42
- expect(result).toEqual({
43
- person: {
44
- friends: [{ person: { name: 'Joaquín' } }, { person: { name: 'Roberto' } }]
45
- }
46
- });
47
- });
@@ -1 +0,0 @@
1
- export default function (doc: any): any;
@@ -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
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const dot_object_1 = __importDefault(require("dot-object"));
7
- var dot = new dot_object_1.default('.', false, true, false);
8
- function default_1(doc) {
9
- return dot.dot(doc);
10
- }
11
- exports.default = default_1;
@@ -1 +0,0 @@
1
- export {};
@@ -1,23 +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 toDot_1 = __importDefault(require("./toDot"));
7
- it('should convert objects to dot notation', async () => {
8
- const result = (0, toDot_1.default)({
9
- person: { name: 'Nicolás' }
10
- });
11
- expect(result).toEqual({
12
- 'person.name': 'Nicolás'
13
- });
14
- });
15
- it('should convert objects with array to dot notation', async () => {
16
- const result = (0, toDot_1.default)({
17
- person: { friends: [{ person: { name: 'Joaquín' } }, { person: { name: 'Roberto' } }] }
18
- });
19
- expect(result).toEqual({
20
- 'person.friends.0.person.name': 'Joaquín',
21
- 'person.friends.1.person.name': 'Roberto'
22
- });
23
- });
package/lib/index.d.ts DELETED
@@ -1,5 +0,0 @@
1
- import createCollection, { createIndexesPromises } from './createCollection';
2
- export { createCollection, createIndexesPromises };
3
- export * from './connect';
4
- export * from './types';
5
- export * from './service';
package/lib/index.js DELETED
@@ -1,35 +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
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
26
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.createIndexesPromises = exports.createCollection = void 0;
30
- const createCollection_1 = __importStar(require("./createCollection"));
31
- exports.createCollection = createCollection_1.default;
32
- Object.defineProperty(exports, "createIndexesPromises", { enumerable: true, get: function () { return createCollection_1.createIndexesPromises; } });
33
- __exportStar(require("./connect"), exports);
34
- __exportStar(require("./types"), exports);
35
- __exportStar(require("./service"), exports);
@@ -1,3 +0,0 @@
1
- import { CreateCollectionOptions, ModelClassBase } from '../types';
2
- export declare function MongoCollection<ModelClass extends ModelClassBase = ModelClassBase>(options: CreateCollectionOptions<ModelClass>): (object: any, propertyName: string, index?: number) => void;
3
- export declare function Repository(): ClassDecorator;