nongo-driver 3.3.5 → 3.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/model.d.ts +1 -0
- package/dist/model.js +69 -33
- package/dist/model.js.map +1 -1
- package/package.json +1 -1
- package/src/model.ts +191 -80
- package/test/models/dummy-model-changed-obj.ts +0 -12
- package/test/models/dummy-model-obj.ts +0 -40
- package/test/models/dummy-model-with-max-index-obj.ts +0 -195
- package/test/models/dummy-model-with-revision-obj.ts +0 -13
- package/test/models/text-index-model-modified-obj.ts +0 -12
- package/test/models/text-index-model-obj.ts +0 -11
- package/test/models/text-index-model-too-long-obj.ts +0 -11
package/dist/model.d.ts
CHANGED
package/dist/model.js
CHANGED
|
@@ -43,9 +43,13 @@ class Model {
|
|
|
43
43
|
}
|
|
44
44
|
this.collection = this.defineCollection();
|
|
45
45
|
this.collectionRevision = // e.g. BlockRevision
|
|
46
|
-
this.schemaVersioningEnabled()
|
|
46
|
+
this.schemaVersioningEnabled()
|
|
47
|
+
? `${this.defineCollection()}${nongo_1.default.REVISION}`
|
|
48
|
+
: null;
|
|
47
49
|
this.collectionEnvironmentMapping = // e.g. BlockEnvironmentMapping
|
|
48
|
-
this.schemaVersioningEnabled()
|
|
50
|
+
this.schemaVersioningEnabled()
|
|
51
|
+
? `${this.defineCollection()}${nongo_1.default.ENVIRONMENT_MAPPING}`
|
|
52
|
+
: null;
|
|
49
53
|
this.name = this.constructor.name;
|
|
50
54
|
this.dynamic = false;
|
|
51
55
|
this.initStructure();
|
|
@@ -70,13 +74,18 @@ class Model {
|
|
|
70
74
|
return this.obj._id.toHexString();
|
|
71
75
|
}
|
|
72
76
|
async getLatestRevisionNumber(name) {
|
|
73
|
-
const
|
|
74
|
-
const
|
|
75
|
-
|
|
77
|
+
const query = this.collection === 'FormModel' ? { key: name } : { name };
|
|
78
|
+
const liveObj = await this.db
|
|
79
|
+
.collection(this.collection)
|
|
80
|
+
.findOne(query, { sort: { revision: -1 } });
|
|
81
|
+
const revObj = await this.db
|
|
82
|
+
.collection(this.collectionRevision)
|
|
83
|
+
.findOne(query, { sort: { revision: -1 } });
|
|
84
|
+
let version = '0.0.1';
|
|
76
85
|
if (liveObj && revObj) {
|
|
77
|
-
(0, gt_1.default)(liveObj.revision, revObj.revision)
|
|
78
|
-
version = (0, inc_1.default)(liveObj.revision, 'patch')
|
|
79
|
-
version = (0, inc_1.default)(revObj.revision, 'patch');
|
|
86
|
+
(0, gt_1.default)(liveObj.revision, revObj.revision)
|
|
87
|
+
? (version = (0, inc_1.default)(liveObj.revision, 'patch'))
|
|
88
|
+
: (version = (0, inc_1.default)(revObj.revision, 'patch'));
|
|
80
89
|
}
|
|
81
90
|
else if (liveObj) {
|
|
82
91
|
version = (0, inc_1.default)(liveObj.revision, 'patch');
|
|
@@ -105,29 +114,39 @@ class Model {
|
|
|
105
114
|
}
|
|
106
115
|
}
|
|
107
116
|
if (this.collectionRevision) {
|
|
108
|
-
const query = mongodb_1.ObjectId.isValid(this.obj.environment)
|
|
117
|
+
const query = mongodb_1.ObjectId.isValid(this.obj.environment)
|
|
118
|
+
? { _id: new mongodb_1.ObjectId(this.obj.environment) }
|
|
119
|
+
: { isLive: true };
|
|
109
120
|
const clientEnv = await this.db.collection('Environment').findOne(query);
|
|
110
121
|
const environmentId = clientEnv._id.toHexString();
|
|
111
|
-
const { name } = this.obj;
|
|
112
|
-
this.obj.revision = await this.getLatestRevisionNumber(name);
|
|
122
|
+
const { name, key } = this.obj;
|
|
123
|
+
this.obj.revision = await this.getLatestRevisionNumber(name || key);
|
|
113
124
|
if (clientEnv.isLive) {
|
|
114
125
|
const revisionObjId = new mongodb_1.ObjectId();
|
|
115
|
-
const liveRevisionObject = await this.db
|
|
126
|
+
const liveRevisionObject = await this.db
|
|
127
|
+
.collection(this.collection)
|
|
128
|
+
.findOne({ _id: this.obj._id });
|
|
116
129
|
this.obj.history = nongo_1.default.revisionHistory(liveRevisionObject, revisionObjId);
|
|
117
130
|
await this.db
|
|
118
131
|
.collection(this.collection)
|
|
119
132
|
.replaceOne({ _id: this.obj._id }, this.obj, { upsert: true });
|
|
120
133
|
if (liveRevisionObject) {
|
|
121
134
|
liveRevisionObject._id = revisionObjId;
|
|
122
|
-
await this.db
|
|
135
|
+
await this.db
|
|
136
|
+
.collection(this.collectionRevision)
|
|
137
|
+
.insertOne(liveRevisionObject);
|
|
123
138
|
}
|
|
124
139
|
}
|
|
125
140
|
else {
|
|
126
|
-
const revisionObj = await this.db
|
|
141
|
+
const revisionObj = await this.db
|
|
142
|
+
.collection(this.collectionRevision)
|
|
143
|
+
.findOne({ _id: this.obj._id });
|
|
127
144
|
this.obj.history = nongo_1.default.revisionHistory(revisionObj, this.idString());
|
|
128
145
|
this.obj._id = new mongodb_1.ObjectId();
|
|
129
|
-
const r = await this.db
|
|
130
|
-
|
|
146
|
+
const r = await this.db
|
|
147
|
+
.collection(this.collectionRevision)
|
|
148
|
+
.insertOne(this.obj);
|
|
149
|
+
if (this.obj.revision !== '0.0.1') {
|
|
131
150
|
// update relevant mappings
|
|
132
151
|
const revisionId = revisionObj._id.toHexString();
|
|
133
152
|
const insertedId = r.insertedId.toHexString();
|
|
@@ -135,7 +154,7 @@ class Model {
|
|
|
135
154
|
await this.updateIntentEntityBlockMapping(revisionId, insertedId, environmentId);
|
|
136
155
|
}
|
|
137
156
|
}
|
|
138
|
-
if (this.obj.revision ===
|
|
157
|
+
if (this.obj.revision === '0.0.1') {
|
|
139
158
|
await this.createEnvironmentMapping(environmentId);
|
|
140
159
|
}
|
|
141
160
|
if (this.obj.deleted) {
|
|
@@ -153,38 +172,45 @@ class Model {
|
|
|
153
172
|
}
|
|
154
173
|
async removeEnvironmentMapping(environmentId) {
|
|
155
174
|
const path = `environments.${environmentId}`;
|
|
156
|
-
await this.db
|
|
175
|
+
await this.db
|
|
176
|
+
.collection(this.collectionEnvironmentMapping)
|
|
177
|
+
.updateOne({ originalId: this.idString() }, { $unset: { [path]: '' } });
|
|
157
178
|
}
|
|
158
179
|
async createEnvironmentMapping(environmentId) {
|
|
159
180
|
await this.db.collection(this.collectionEnvironmentMapping).insertOne({
|
|
160
181
|
originalId: this.idString(),
|
|
161
|
-
environments: { [environmentId]: this.idString() }
|
|
182
|
+
environments: { [environmentId]: this.idString() },
|
|
162
183
|
});
|
|
163
184
|
}
|
|
164
185
|
async updateEnvironmentMapping(revisionId, insertedId, environmentId) {
|
|
165
186
|
const path = `environments.${environmentId}`;
|
|
166
|
-
await this.db
|
|
187
|
+
await this.db
|
|
188
|
+
.collection(this.collectionEnvironmentMapping)
|
|
189
|
+
.updateOne({ [path]: revisionId }, { $set: { [path]: insertedId } });
|
|
167
190
|
}
|
|
168
191
|
async updateIntentEntityBlockMapping(oldId, newId, environment) {
|
|
169
|
-
if (this.collection ===
|
|
192
|
+
if (this.collection === 'Block') {
|
|
170
193
|
// update intent and entity mappings
|
|
171
194
|
const filter = { block_id: oldId, environment };
|
|
172
|
-
const update = { $set: {
|
|
195
|
+
const update = { $set: { block_id: newId } };
|
|
173
196
|
await this.db.collection('IntentBlockMapping').updateMany(filter, update);
|
|
174
197
|
await this.db.collection('EntityBlockMapping').updateMany(filter, update);
|
|
175
198
|
}
|
|
176
|
-
else if (this.collection ===
|
|
199
|
+
else if (this.collection === 'Intent') {
|
|
177
200
|
// update intent mapping
|
|
178
201
|
const filter = { intent_id: oldId, environment };
|
|
179
|
-
const update = { $set: {
|
|
202
|
+
const update = { $set: { intent_id: newId } };
|
|
180
203
|
await this.db.collection('IntentBlockMapping').updateMany(filter, update);
|
|
181
204
|
}
|
|
182
|
-
else if (this.collection ===
|
|
205
|
+
else if (this.collection === 'Entity') {
|
|
183
206
|
// update entity mapping
|
|
184
207
|
const filter = { entity_id: oldId, environment };
|
|
185
|
-
const update = { $set: {
|
|
208
|
+
const update = { $set: { entity_id: newId } };
|
|
186
209
|
await this.db.collection('EntityBlockMapping').updateMany(filter, update);
|
|
187
210
|
}
|
|
211
|
+
else if (this.collection === 'FormModel') {
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
188
214
|
else {
|
|
189
215
|
throw Error(`${this.collection} is unsupported revision type.`);
|
|
190
216
|
}
|
|
@@ -192,10 +218,14 @@ class Model {
|
|
|
192
218
|
async revertVersion(id, revisionId) {
|
|
193
219
|
const revisionObjId = new mongodb_1.ObjectId();
|
|
194
220
|
// get the actuall object
|
|
195
|
-
const obj = await this.db
|
|
221
|
+
const obj = await this.db
|
|
222
|
+
.collection(this.collection)
|
|
223
|
+
.findOne({ _id: new mongodb_1.ObjectId(id) });
|
|
196
224
|
// get revision
|
|
197
|
-
const objToRevert = await this.db
|
|
198
|
-
|
|
225
|
+
const objToRevert = await this.db
|
|
226
|
+
.collection(this.collectionRevision)
|
|
227
|
+
.findOne({ _id: new mongodb_1.ObjectId(revisionId) });
|
|
228
|
+
// update revision object
|
|
199
229
|
objToRevert.revision = nongo_1.default.revisionNumber(obj.revision);
|
|
200
230
|
objToRevert.history = nongo_1.default.revisionHistory(obj, revisionObjId);
|
|
201
231
|
delete objToRevert.diffs;
|
|
@@ -230,7 +260,9 @@ class Model {
|
|
|
230
260
|
return new this.constructor(this.nongo, doc);
|
|
231
261
|
}
|
|
232
262
|
async saveEnvironmentRevision(id, environmentId) {
|
|
233
|
-
const obj = await this.db
|
|
263
|
+
const obj = await this.db
|
|
264
|
+
.collection(this.collection)
|
|
265
|
+
.findOne({ _id: new mongodb_1.ObjectId(id) });
|
|
234
266
|
const revisionObj = (0, clone_deep_1.default)(obj);
|
|
235
267
|
revisionObj._id = new mongodb_1.ObjectId();
|
|
236
268
|
revisionObj.environment = environmentId;
|
|
@@ -240,7 +272,9 @@ class Model {
|
|
|
240
272
|
return new this.constructor(this.nongo, revisionObj);
|
|
241
273
|
}
|
|
242
274
|
async removeEnvironmentRevisions(environmentId) {
|
|
243
|
-
const result = await this.db
|
|
275
|
+
const result = await this.db
|
|
276
|
+
.collection(this.collectionRevision)
|
|
277
|
+
.deleteMany({ environment: environmentId });
|
|
244
278
|
return result;
|
|
245
279
|
}
|
|
246
280
|
/*
|
|
@@ -308,14 +342,16 @@ class Model {
|
|
|
308
342
|
return this.findOne({ _id: id });
|
|
309
343
|
}
|
|
310
344
|
async getRevisionHistory(history) {
|
|
311
|
-
const revisionIds = history.map(i => new mongodb_1.ObjectId(i.id));
|
|
345
|
+
const revisionIds = history.map((i) => new mongodb_1.ObjectId(i.id));
|
|
312
346
|
return this.toArray(await this.findIterator({ _id: { $in: revisionIds } }, { sort: { revision: 'descending' } }, this.collectionRevision));
|
|
313
347
|
}
|
|
314
348
|
async getRevisions(query, options) {
|
|
315
349
|
return this.toArray(await this.findIterator(query, options, this.collectionRevision));
|
|
316
350
|
}
|
|
317
351
|
async getRevision(query) {
|
|
318
|
-
const doc = await this.db
|
|
352
|
+
const doc = await this.db
|
|
353
|
+
.collection(this.collectionRevision)
|
|
354
|
+
.findOne(query);
|
|
319
355
|
// Return null if no doc was found
|
|
320
356
|
if (doc == null) {
|
|
321
357
|
return null;
|
package/dist/model.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4DAA+B;AAC/B,qCAA+O;AAC/O,yCAA+B;AAC/B,6DAA2C;AAC3C,+DAA8C;AAE9C,wEAA+C;AAG/C,oDAA4B;AAC5B,4DAAoC;AAEpC,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;AAE7D,SAAS,oBAAoB,CAAC,IAAI,EAAE,aAAa,GAAG,aAAa;IAC/D,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACvB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;YACtC,OAAO,IAAI,CAAC;SACb;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAQD,MAA8B,KAAK;IAWjC,YAAmB,KAAY,EAAS,GAAM;QAA3B,UAAK,GAAL,KAAK,CAAO;QAAS,QAAG,GAAH,GAAG,CAAG;QAV9C,sEAAsE;QACtE,uDAAuD;QAChD,iBAAY,GAAS,IAAI,CAAC;QAS/B,6BAA6B;QAC7B,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;SACpB;QAED,0DAA0D;QAC1D,IAAI,IAAI,CAAC,GAAG,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,QAAQ,EAAE;YAChD,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,kBAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SAC3C;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1C,IAAI,CAAC,kBAAkB,GAAG,qBAAqB;YAC7C,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,GAAG,eAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACxF,IAAI,CAAC,4BAA4B,GAAG,+BAA+B;YACjE,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,GAAG,eAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACnG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAClC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAEM,qBAAqB;QAC1B,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAES,uBAAuB;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,eAAe;QACpB,OAAO,EAAE,CAAC;IACZ,CAAC;IAEM,qBAAqB;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IAEM,KAAK,CAAC,QAAQ;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,OAAO,IAAI,mBAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;IAChD,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;IACpC,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,IAAY;QAChD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,EAAC,QAAQ,EAAE,CAAC,CAAC,EAAC,EAAC,CAAC,CAAC;QACjG,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,EAAC,QAAQ,EAAE,CAAC,CAAC,EAAC,EAAC,CAAC,CAAC;QACxG,IAAI,OAAO,GAAG,OAAO,CAAC;QACtB,IAAI,OAAO,IAAI,MAAM,EAAE;YACrB,IAAA,YAAQ,EAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC3C,OAAO,GAAG,IAAA,aAAU,EAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;gBACjD,OAAO,GAAG,IAAA,aAAU,EAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;SAClD;aAAM,IAAI,OAAO,EAAE;YAClB,OAAO,GAAG,IAAA,aAAU,EAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;SAChD;aAAM,IAAI,MAAM,EAAE;YACjB,OAAO,GAAG,IAAA,aAAU,EAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;SAC/C;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,IAAI;QACf,+CAA+C;QAC/C,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,eAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE9C,kFAAkF;QAClF,IAAI,CAAC,GAAG,GAAG,IAAA,oBAAK,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,wEAAwE;QACxE,yBAAyB;QACzB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YACzB,sBAAsB;YACtB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,IAAI,GAAG,EAAE;gBACP,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;aAChC;SACF;QAED,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,MAAM,KAAK,GAAG,kBAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAC,GAAG,EAAE,IAAI,kBAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAC,CAAC,CAAC,CAAC,EAAC,MAAM,EAAC,IAAI,EAAC,CAAA;YAChH,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACzE,MAAM,aAAa,GAAG,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YAElD,MAAM,EAAC,IAAI,EAAC,GAAG,IAAI,CAAC,GAAG,CAAC;YACxB,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;YAE7D,IAAI,SAAS,CAAC,MAAM,EAAE;gBACpB,MAAM,aAAa,GAAG,IAAI,kBAAQ,EAAE,CAAC;gBACrC,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAC,CAAC,CAAC;gBAClG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,eAAK,CAAC,eAAe,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;gBAC5E,MAAM,IAAI,CAAC,EAAE;qBACV,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;qBAC3B,UAAU,CAAC,EAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAC,EAAE,IAAI,CAAC,GAAG,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,CAAC,CAAC;gBAC7D,IAAI,kBAAkB,EAAE;oBACtB,kBAAkB,CAAC,GAAG,GAAG,aAAa,CAAC;oBACvC,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;iBACjF;aACF;iBAAM;gBACL,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,EAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAC,CAAC,CAAC;gBAEnG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,eAAK,CAAC,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACvE,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,kBAAQ,EAAE,CAAC;gBAC9B,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAChF,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE;oBACjC,2BAA2B;oBAC3B,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;oBACjD,MAAM,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;oBAC9C,MAAM,IAAI,CAAC,wBAAwB,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;oBAC3E,MAAM,IAAI,CAAC,8BAA8B,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;iBAClF;aACF;YACD,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE;gBACjC,MAAM,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAAC;aACpD;YACD,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;gBACpB,MAAM,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAAA;aACnD;SACF;aAAM;YACL,6BAA6B;YAC7B,MAAM,IAAI,CAAC,EAAE;iBACZ,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;iBAC3B,UAAU,CAAC,EAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAC,EAAE,IAAI,CAAC,GAAG,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,CAAC,CAAC;SAC5D;QAED,yBAAyB;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,wBAAwB,CAAC,aAAqB;QAC1D,MAAM,IAAI,GAAG,gBAAgB,aAAa,EAAE,CAAC;QACzC,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,SAAS,CACnE,EAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAC,EAC7B,EAAC,MAAM,EAAE,EAAC,CAAC,IAAI,CAAC,EAAE,EAAE,EAAC,EAAC,CACrB,CAAA;IACT,CAAC;IAEO,KAAK,CAAC,wBAAwB,CAAC,aAAqB;QAC1D,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,SAAS,CAAC;YACpE,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE;YAC3B,YAAY,EAAE,EAAC,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAC;SACjD,CAAC,CAAA;IACJ,CAAC;IAEO,KAAK,CAAC,wBAAwB,CAAC,UAAkB,EAAE,UAAkB,EAAE,aAAqB;QAClG,MAAM,IAAI,GAAG,gBAAgB,aAAa,EAAE,CAAA;QAC5C,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,SAAS,CACnE,EAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAC,EACpB,EAAE,IAAI,EAAE,EAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAC,EAAC,CAC9B,CAAA;IACH,CAAC;IAEO,KAAK,CAAC,8BAA8B,CAAC,KAAa,EAAE,KAAa,EAAE,WAAmB;QAC5F,IAAI,IAAI,CAAC,UAAU,KAAK,OAAO,EAAE;YAC/B,oCAAoC;YACpC,MAAM,MAAM,GAAG,EAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAC,CAAA;YAC7C,MAAM,MAAM,GAAG,EAAC,IAAI,EAAE,EAAC,UAAU,EAAE,KAAK,EAAC,EAAC,CAAA;YAC1C,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC1E,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SAC3E;aAAM,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE;YACvC,wBAAwB;YACxB,MAAM,MAAM,GAAG,EAAC,SAAS,EAAE,KAAK,EAAE,WAAW,EAAC,CAAA;YAC9C,MAAM,MAAM,GAAG,EAAC,IAAI,EAAE,EAAC,WAAW,EAAE,KAAK,EAAC,EAAC,CAAA;YAC3C,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SAC3E;aAAM,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE;YACvC,wBAAwB;YACxB,MAAM,MAAM,GAAG,EAAC,SAAS,EAAE,KAAK,EAAE,WAAW,EAAC,CAAA;YAC9C,MAAM,MAAM,GAAG,EAAC,IAAI,EAAE,EAAC,WAAW,EAAE,KAAK,EAAC,EAAC,CAAA;YAC3C,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SAC3E;aAAM;YACL,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,gCAAgC,CAAC,CAAC;SACjE;IACH,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,EAAU,EAAE,UAAkB;QACvD,MAAM,aAAa,GAAG,IAAI,kBAAQ,EAAE,CAAC;QACrC,yBAAyB;QACzB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAC,GAAG,EAAE,IAAI,kBAAQ,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC;QAEvF,eAAe;QACf,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,EAAC,GAAG,EAAE,IAAI,kBAAQ,CAAC,UAAU,CAAC,EAAC,CAAC,CAAC;QAE/G,0BAA0B;QAC1B,WAAW,CAAC,QAAQ,GAAG,eAAK,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1D,WAAW,CAAC,OAAO,GAAG,eAAK,CAAC,eAAe,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAChE,OAAO,WAAW,CAAC,KAAK,CAAC;QACzB,MAAM,KAAK,GAAG,IAAA,gBAAI,EAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QACrC,WAAW,CAAC,KAAK,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAChD,WAAW,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;QAE1B,MAAM,IAAI,CAAC,EAAE;aACV,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;aAC3B,UAAU,CAAC,EAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAC,EAAE,WAAW,CAAC,CAAC;QAG3C,gFAAgF;QAChF,GAAG,CAAC,GAAG,GAAG,aAAa,CAAC;QACxB,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAEjE,4BAA4B;QAC5B,aAAa;QACb,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACvD,CAAC;IAEM,KAAK,CAAC,4BAA4B,CAAC,MAAe,EAAE,EAAU;QACnE,IAAI,GAAG,CAAC;QACR,MAAM,GAAG,GAAG,IAAI,kBAAQ,CAAC,EAAE,CAAC,CAAC;QAE7B,IAAI,MAAM,EAAE;YACV,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAC,GAAG,EAAC,CAAC,CAAC;SAChE;aAAM;YACL,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,EAAC,GAAG,EAAC,CAAC,CAAC;SACxE;QAED,kCAAkC;QAClC,IAAI,GAAG,IAAI,IAAI,EAAE;YACf,OAAO,IAAI,CAAC;SACb;QAED,4BAA4B;QAC5B,aAAa;QACb,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC/C,CAAC;IAEM,KAAK,CAAC,uBAAuB,CAAC,EAAU,EAAE,aAAqB;QACpE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAC,GAAG,EAAE,IAAI,kBAAQ,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC;QAEvF,MAAM,WAAW,GAAG,IAAA,oBAAK,EAAC,GAAG,CAAC,CAAC;QAC/B,WAAW,CAAC,GAAG,GAAG,IAAI,kBAAQ,EAAE,CAAC;QACjC,WAAW,CAAC,WAAW,GAAG,aAAa,CAAC;QAExC,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACzE,4BAA4B;QAC5B,aAAa;QACb,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACvD,CAAC;IAEM,KAAK,CAAC,0BAA0B,CAAC,aAAqB;QAC3D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,UAAU,CAAC,EAAC,WAAW,EAAE,aAAa,EAAC,CAAC,CAAA;QACzG,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,UAAU,EAAE,OAAO;QAC9B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YACtC,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAEvD,6CAA6C;YAC7C,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC3D,SAAS;aACV;YAED,4CAA4C;YAC5C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC1D,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;gBAE/B,oEAAoE;aACrE;iBAAM;gBACL,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;gBAE3B,2EAA2E;gBAC3E,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACxB,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;wBACxB,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;4BAC/B,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;yBAC3B;oBACH,CAAC,CAAC,CAAC;oBAEH,mDAAmD;iBACpD;qBAAM,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;oBACrD,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;iBACzB;aACF;SACF;IACH,CAAC;IAED;;;;;;OAMG;IACI,SAAS,CAAC,IAAI,EAAE,GAAG;QACxB,IAAI,CAAC,GAAG,EAAE;YACR,OAAO;SACR;QAED,sEAAsE;QACtE,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE;YACxB,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;SAClB;aAAM;YACL,mDAAmD;YACnD,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;YAChD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;YACpD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACxB,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC;aAC1D;iBAAM;gBACL,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;aACtC;SACF;IACH,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,EAAE;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,EAAC,GAAG,EAAE,EAAE,EAAC,CAAC,CAAC;IACjC,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAAE,OAA0B;QACzD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,kBAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,EAAC,GAAG,EAAE,EAAC,GAAG,EAAE,WAAW,EAAC,EAAC,EAAE,EAAC,IAAI,EAAE,EAAC,QAAQ,EAAE,YAAY,EAAC,EAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACrI,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,KAAuB,EAAE,OAA+B;QAChF,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACxF,CAAC;IAEM,KAAK,CAAC,WAAW,CAAE,KAAuB;QAC/C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAE7E,kCAAkC;QAClC,IAAI,GAAG,IAAI,IAAI,EAAE;YACf,OAAO,IAAI,CAAC;SACb;QAED,sCAAsC;QACtC,aAAa;QACb,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,IAAI,CAAC,QAA0B,EAAE,EAAE,OAA+B;QAC7E,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,SAAS,CACpB,UAA6C,EAC7C,OAA0B;QAE1B,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC5E,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAE,YAAY,CACxB,QAA0B,EAAE,EAC5B,OAA+B,EAC/B,UAAU,GAAG,IAAI,CAAC,UAAU;QAE5B,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACnE,OAAO,IAAI,yBAAc,CACvB,MAAM;QACR,aAAa;QACX,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAC/C,CAAC;IACJ,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,OAAO,CAAC,QAA0B,EAAE;QAC/C,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAErE,kCAAkC;QAClC,IAAI,GAAG,IAAI,IAAI,EAAE;YACf,OAAO,IAAI,CAAC;SACb;QAED,sCAAsC;QACtC,aAAa;QACb,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC/C,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,KAAuB,EAAE,OAAuB;QAClE,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACxE,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,QAAoB,EAAE,OAA0B;QACrE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IACvE,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAC5B,QAAoB,EACpB,OAA0B;QAE1B,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;QACxB,IAAI,OAAO,CAAC,YAAY,IAAI,IAAI,EAAE;YAChC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;SAC7B;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE;aACzB,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;aAC3B,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChC,aAAa;QACb,OAAO,IAAI,yBAAc,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,KAAa,EAAE,SAA2B,EAAE;QAChE,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACrE,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,KAAuB,EAAE,OAA+B,EAAE,OAAuB;QACnG,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC,EAAE;aACX,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;aAC3B,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,QAAkB,EAAE,EAAE,OAA+B;QACtE,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC5E,CAAC;IAOM,mBAAmB;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACnC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC/B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,YAAY,CAAC,KAAK;QACvB,KAAK,GAAG,IAAA,oBAAK,EAAC,KAAK,CAAC,CAAC;QACrB,MAAM,EAAC,GAAG,EAAC,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,GAAG,EAAE;YACR,OAAO,KAAK,CAAC;SACd;QAED,sDAAsD;QACtD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC3B,KAAK,CAAC,GAAG,GAAG,eAAK,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SACzC;aAAM,IAAI,GAAG,CAAC,GAAG,EAAE;YAClB,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SACnF;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACO,gBAAgB;QACxB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IAC/B,CAAC;IAEO,oBAAoB,CAAC,MAAgB;QAC3C,IAAI,MAAM,CAAC;QACX,IAAI;YACF,MAAM,GAAG,qCAAqC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;SAC1E;QAAC,OAAO,GAAG,EAAE;YACZ,MAAM,GAAG,4BAA4B,GAAG,CAAC,OAAO,EAAE,CAAC;SACpD;QACD,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;IACrD,CAAC;IAED;;;;OAIG;IACK,iBAAiB,CAAC,YAAiB;QACzC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YAC3C,4DAA4D;YAC5D,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YACjC,OAAO,MAAM,CAAC,MAAM,CAAC;YACrB,OAAO,MAAM,CAAC,OAAO,CAAC;YACtB,OAAO,MAAM,CAAC,IAAI,CAAC;YAEnB,oCAAoC;YACpC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;YACzB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACvB,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACvB,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;oBAC9B,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;iBAChC;aACF;iBAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;gBACnC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;aAC9B;SACF;IACH,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,cAAoC;;QACxD,MAAM,GAAG,GAAG,EAAE,CAAC;;YACf,aAAa;YACb,KAAsB,eAAA,mBAAA,cAAA,cAAc,CAAA,oBAAA;gBAAd,8BAAc;gBAAd,WAAc;;oBAAzB,MAAM,CAAC,KAAA,CAAA;oBAChB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;;;;aACb;;;;;;;;;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;OAEG;IACK,aAAa;QACnB,8BAA8B;QAC9B,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE;YACpB,IAAI,CAAC,GAAG,GAAG,EAAO,CAAC;SACpB;QAED,+EAA+E;QAC/E,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC9C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SACtD;IACH,CAAC;IAEO,OAAO,CAAC,MAAM,EAAE,YAAY;QAClC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YAC3C,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YACjC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;YAEzB,wCAAwC;YACxC,IAAI,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAC3C,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACpB,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;YACpB,QAAQ;gBACN,OAAO,QAAQ,KAAK,UAAU;oBAC5B,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC;oBACjC,CAAC,CAAC,QAAQ,CAAC;YAEf,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,QAAQ,CAAC;YAEvD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACvB,IAAI,cAAc,EAAE;oBAClB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;iBAClB;gBAED,iFAAiF;gBACjF,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;oBACrD,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC1B,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;wBACjC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;qBAC1D;iBACF;aACF;iBAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;gBACnC,2CAA2C;gBAC3C,IAAI,cAAc,EAAE;oBAClB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;iBAClB;gBAED,+CAA+C;gBAC/C,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE;oBAC1D,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;iBACjC;aACF;iBAAM,IAAI,IAAI,KAAK,QAAQ,IAAI,cAAc,EAAE;gBAC9C,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;aAClB;SACF;IACH,CAAC;CACF;AAzkBD,wBAykBC"}
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/model.ts
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
import clone from 'clone-deep';
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
AggregateOptions,
|
|
4
|
+
AnyBulkWriteOperation,
|
|
5
|
+
BulkWriteOptions,
|
|
6
|
+
BulkWriteResult,
|
|
7
|
+
CountDocumentsOptions,
|
|
8
|
+
Db,
|
|
9
|
+
DeleteOptions,
|
|
10
|
+
DeleteResult,
|
|
11
|
+
Document,
|
|
12
|
+
Filter,
|
|
13
|
+
FindOptions,
|
|
14
|
+
ObjectId,
|
|
15
|
+
UpdateFilter,
|
|
16
|
+
UpdateOptions,
|
|
17
|
+
UpdateResult,
|
|
18
|
+
} from 'mongodb';
|
|
3
19
|
import {diff} from 'just-diff';
|
|
4
20
|
import semverGt from 'semver/functions/gt';
|
|
5
21
|
import incVersion from 'semver/functions/inc';
|
|
@@ -10,14 +26,14 @@ import MongoIndex from './mongo-index';
|
|
|
10
26
|
import Nongo from './nongo';
|
|
11
27
|
import Validator from './validator';
|
|
12
28
|
|
|
13
|
-
const DEFAULT_PATHS = ['_id', 'revision', 'history', 'diffs']
|
|
29
|
+
const DEFAULT_PATHS = ['_id', 'revision', 'history', 'diffs'];
|
|
14
30
|
|
|
15
31
|
function excludePathsFromDiff(diff, excludedPaths = DEFAULT_PATHS) {
|
|
16
32
|
return diff.filter((d) => {
|
|
17
33
|
if (!excludedPaths.includes(d.path[0])) {
|
|
18
34
|
return true;
|
|
19
35
|
}
|
|
20
|
-
})
|
|
36
|
+
});
|
|
21
37
|
}
|
|
22
38
|
|
|
23
39
|
export interface RevisionHistory {
|
|
@@ -26,7 +42,18 @@ export interface RevisionHistory {
|
|
|
26
42
|
created?: Date;
|
|
27
43
|
}
|
|
28
44
|
|
|
29
|
-
export default abstract class Model<
|
|
45
|
+
export default abstract class Model<
|
|
46
|
+
T extends {
|
|
47
|
+
_id?: ObjectId;
|
|
48
|
+
revision?: string;
|
|
49
|
+
history?: RevisionHistory[];
|
|
50
|
+
diffs?: any;
|
|
51
|
+
name?: string;
|
|
52
|
+
key?: string;
|
|
53
|
+
environment?: string;
|
|
54
|
+
deleted?: true;
|
|
55
|
+
} = any,
|
|
56
|
+
> {
|
|
30
57
|
// {@code instanceof} can be a bit funny when importing classes across
|
|
31
58
|
// modules so this is an explicit type guard we can use
|
|
32
59
|
public isNongoModel: true = true;
|
|
@@ -50,15 +77,19 @@ export default abstract class Model<T extends {_id?: ObjectId, revision?: string
|
|
|
50
77
|
|
|
51
78
|
this.collection = this.defineCollection();
|
|
52
79
|
this.collectionRevision = // e.g. BlockRevision
|
|
53
|
-
this.schemaVersioningEnabled()
|
|
80
|
+
this.schemaVersioningEnabled()
|
|
81
|
+
? `${this.defineCollection()}${Nongo.REVISION}`
|
|
82
|
+
: null;
|
|
54
83
|
this.collectionEnvironmentMapping = // e.g. BlockEnvironmentMapping
|
|
55
|
-
this.schemaVersioningEnabled()
|
|
84
|
+
this.schemaVersioningEnabled()
|
|
85
|
+
? `${this.defineCollection()}${Nongo.ENVIRONMENT_MAPPING}`
|
|
86
|
+
: null;
|
|
56
87
|
this.name = this.constructor.name;
|
|
57
88
|
this.dynamic = false;
|
|
58
89
|
this.initStructure();
|
|
59
90
|
}
|
|
60
91
|
|
|
61
|
-
public getCollectionRevision
|
|
92
|
+
public getCollectionRevision(): string {
|
|
62
93
|
return this.collectionRevision;
|
|
63
94
|
}
|
|
64
95
|
|
|
@@ -84,17 +115,22 @@ export default abstract class Model<T extends {_id?: ObjectId, revision?: string
|
|
|
84
115
|
}
|
|
85
116
|
|
|
86
117
|
private async getLatestRevisionNumber(name: string): Promise<string> {
|
|
87
|
-
const
|
|
88
|
-
const
|
|
89
|
-
|
|
118
|
+
const query = this.collection === 'FormModel' ? {key: name} : {name};
|
|
119
|
+
const liveObj = await this.db
|
|
120
|
+
.collection(this.collection)
|
|
121
|
+
.findOne(query, {sort: {revision: -1}});
|
|
122
|
+
const revObj = await this.db
|
|
123
|
+
.collection(this.collectionRevision)
|
|
124
|
+
.findOne(query, {sort: {revision: -1}});
|
|
125
|
+
let version = '0.0.1';
|
|
90
126
|
if (liveObj && revObj) {
|
|
91
|
-
semverGt(liveObj.revision, revObj.revision)
|
|
92
|
-
version = incVersion(liveObj.revision, 'patch')
|
|
93
|
-
version = incVersion(revObj.revision, 'patch');
|
|
127
|
+
semverGt(liveObj.revision, revObj.revision)
|
|
128
|
+
? (version = incVersion(liveObj.revision, 'patch'))
|
|
129
|
+
: (version = incVersion(revObj.revision, 'patch'));
|
|
94
130
|
} else if (liveObj) {
|
|
95
|
-
version = incVersion(liveObj.revision, 'patch')
|
|
131
|
+
version = incVersion(liveObj.revision, 'patch');
|
|
96
132
|
} else if (revObj) {
|
|
97
|
-
version = incVersion(revObj.revision, 'patch')
|
|
133
|
+
version = incVersion(revObj.revision, 'patch');
|
|
98
134
|
}
|
|
99
135
|
return version;
|
|
100
136
|
}
|
|
@@ -118,51 +154,72 @@ export default abstract class Model<T extends {_id?: ObjectId, revision?: string
|
|
|
118
154
|
this.throwValidationError(err);
|
|
119
155
|
}
|
|
120
156
|
}
|
|
121
|
-
|
|
157
|
+
|
|
122
158
|
if (this.collectionRevision) {
|
|
123
|
-
const query = ObjectId.isValid(this.obj.environment)
|
|
159
|
+
const query = ObjectId.isValid(this.obj.environment)
|
|
160
|
+
? {_id: new ObjectId(this.obj.environment)}
|
|
161
|
+
: {isLive: true};
|
|
124
162
|
const clientEnv = await this.db.collection('Environment').findOne(query);
|
|
125
163
|
const environmentId = clientEnv._id.toHexString();
|
|
126
164
|
|
|
127
|
-
const {name} = this.obj;
|
|
128
|
-
this.obj.revision = await this.getLatestRevisionNumber(name);
|
|
165
|
+
const {name, key} = this.obj;
|
|
166
|
+
this.obj.revision = await this.getLatestRevisionNumber(name || key);
|
|
129
167
|
|
|
130
168
|
if (clientEnv.isLive) {
|
|
131
169
|
const revisionObjId = new ObjectId();
|
|
132
|
-
const liveRevisionObject = await this.db
|
|
133
|
-
|
|
170
|
+
const liveRevisionObject = await this.db
|
|
171
|
+
.collection(this.collection)
|
|
172
|
+
.findOne({_id: this.obj._id});
|
|
173
|
+
this.obj.history = Nongo.revisionHistory(
|
|
174
|
+
liveRevisionObject,
|
|
175
|
+
revisionObjId,
|
|
176
|
+
);
|
|
134
177
|
await this.db
|
|
135
178
|
.collection(this.collection)
|
|
136
179
|
.replaceOne({_id: this.obj._id}, this.obj, {upsert: true});
|
|
137
180
|
if (liveRevisionObject) {
|
|
138
181
|
liveRevisionObject._id = revisionObjId;
|
|
139
|
-
await this.db
|
|
182
|
+
await this.db
|
|
183
|
+
.collection(this.collectionRevision)
|
|
184
|
+
.insertOne(liveRevisionObject);
|
|
140
185
|
}
|
|
141
186
|
} else {
|
|
142
|
-
const revisionObj = await this.db
|
|
143
|
-
|
|
187
|
+
const revisionObj = await this.db
|
|
188
|
+
.collection(this.collectionRevision)
|
|
189
|
+
.findOne({_id: this.obj._id});
|
|
190
|
+
|
|
144
191
|
this.obj.history = Nongo.revisionHistory(revisionObj, this.idString());
|
|
145
192
|
this.obj._id = new ObjectId();
|
|
146
|
-
const r = await this.db
|
|
147
|
-
|
|
193
|
+
const r = await this.db
|
|
194
|
+
.collection(this.collectionRevision)
|
|
195
|
+
.insertOne(this.obj);
|
|
196
|
+
if (this.obj.revision !== '0.0.1') {
|
|
148
197
|
// update relevant mappings
|
|
149
198
|
const revisionId = revisionObj._id.toHexString();
|
|
150
199
|
const insertedId = r.insertedId.toHexString();
|
|
151
|
-
await this.updateEnvironmentMapping(
|
|
152
|
-
|
|
200
|
+
await this.updateEnvironmentMapping(
|
|
201
|
+
revisionId,
|
|
202
|
+
insertedId,
|
|
203
|
+
environmentId,
|
|
204
|
+
);
|
|
205
|
+
await this.updateIntentEntityBlockMapping(
|
|
206
|
+
revisionId,
|
|
207
|
+
insertedId,
|
|
208
|
+
environmentId,
|
|
209
|
+
);
|
|
153
210
|
}
|
|
154
211
|
}
|
|
155
|
-
if (this.obj.revision ===
|
|
212
|
+
if (this.obj.revision === '0.0.1') {
|
|
156
213
|
await this.createEnvironmentMapping(environmentId);
|
|
157
214
|
}
|
|
158
215
|
if (this.obj.deleted) {
|
|
159
|
-
await this.removeEnvironmentMapping(environmentId)
|
|
216
|
+
await this.removeEnvironmentMapping(environmentId);
|
|
160
217
|
}
|
|
161
218
|
} else {
|
|
162
219
|
// Upsert non revision models
|
|
163
220
|
await this.db
|
|
164
|
-
|
|
165
|
-
|
|
221
|
+
.collection(this.collection)
|
|
222
|
+
.replaceOne({_id: this.obj._id}, this.obj, {upsert: true});
|
|
166
223
|
}
|
|
167
224
|
|
|
168
225
|
// Return the saved model
|
|
@@ -171,45 +228,53 @@ export default abstract class Model<T extends {_id?: ObjectId, revision?: string
|
|
|
171
228
|
|
|
172
229
|
private async removeEnvironmentMapping(environmentId: string): Promise<void> {
|
|
173
230
|
const path = `environments.${environmentId}`;
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
)
|
|
231
|
+
await this.db
|
|
232
|
+
.collection(this.collectionEnvironmentMapping)
|
|
233
|
+
.updateOne({originalId: this.idString()}, {$unset: {[path]: ''}});
|
|
178
234
|
}
|
|
179
235
|
|
|
180
236
|
private async createEnvironmentMapping(environmentId: string): Promise<void> {
|
|
181
237
|
await this.db.collection(this.collectionEnvironmentMapping).insertOne({
|
|
182
238
|
originalId: this.idString(),
|
|
183
|
-
environments: {[environmentId]: this.idString()}
|
|
184
|
-
})
|
|
239
|
+
environments: {[environmentId]: this.idString()},
|
|
240
|
+
});
|
|
185
241
|
}
|
|
186
242
|
|
|
187
|
-
private async updateEnvironmentMapping(
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
243
|
+
private async updateEnvironmentMapping(
|
|
244
|
+
revisionId: string,
|
|
245
|
+
insertedId: string,
|
|
246
|
+
environmentId: string,
|
|
247
|
+
): Promise<void> {
|
|
248
|
+
const path = `environments.${environmentId}`;
|
|
249
|
+
await this.db
|
|
250
|
+
.collection(this.collectionEnvironmentMapping)
|
|
251
|
+
.updateOne({[path]: revisionId}, {$set: {[path]: insertedId}});
|
|
193
252
|
}
|
|
194
253
|
|
|
195
|
-
private async updateIntentEntityBlockMapping(
|
|
196
|
-
|
|
254
|
+
private async updateIntentEntityBlockMapping(
|
|
255
|
+
oldId: string,
|
|
256
|
+
newId: string,
|
|
257
|
+
environment: string,
|
|
258
|
+
): Promise<void> {
|
|
259
|
+
if (this.collection === 'Block') {
|
|
197
260
|
// update intent and entity mappings
|
|
198
|
-
const filter = {block_id: oldId, environment}
|
|
199
|
-
const update = {$set: {
|
|
261
|
+
const filter = {block_id: oldId, environment};
|
|
262
|
+
const update = {$set: {block_id: newId}};
|
|
200
263
|
await this.db.collection('IntentBlockMapping').updateMany(filter, update);
|
|
201
264
|
await this.db.collection('EntityBlockMapping').updateMany(filter, update);
|
|
202
|
-
} else if (this.collection ===
|
|
265
|
+
} else if (this.collection === 'Intent') {
|
|
203
266
|
// update intent mapping
|
|
204
|
-
const filter = {intent_id: oldId, environment}
|
|
205
|
-
const update = {$set: {
|
|
267
|
+
const filter = {intent_id: oldId, environment};
|
|
268
|
+
const update = {$set: {intent_id: newId}};
|
|
206
269
|
await this.db.collection('IntentBlockMapping').updateMany(filter, update);
|
|
207
|
-
} else if (this.collection ===
|
|
270
|
+
} else if (this.collection === 'Entity') {
|
|
208
271
|
// update entity mapping
|
|
209
|
-
const filter = {entity_id: oldId, environment}
|
|
210
|
-
const update = {$set: {
|
|
272
|
+
const filter = {entity_id: oldId, environment};
|
|
273
|
+
const update = {$set: {entity_id: newId}};
|
|
211
274
|
await this.db.collection('EntityBlockMapping').updateMany(filter, update);
|
|
212
|
-
} else {
|
|
275
|
+
} else if (this.collection === 'FormModel') {
|
|
276
|
+
return;
|
|
277
|
+
} else {
|
|
213
278
|
throw Error(`${this.collection} is unsupported revision type.`);
|
|
214
279
|
}
|
|
215
280
|
}
|
|
@@ -217,12 +282,16 @@ export default abstract class Model<T extends {_id?: ObjectId, revision?: string
|
|
|
217
282
|
public async revertVersion(id: string, revisionId: string): Promise<this> {
|
|
218
283
|
const revisionObjId = new ObjectId();
|
|
219
284
|
// get the actuall object
|
|
220
|
-
const obj = await this.db
|
|
221
|
-
|
|
285
|
+
const obj = await this.db
|
|
286
|
+
.collection(this.collection)
|
|
287
|
+
.findOne({_id: new ObjectId(id)});
|
|
288
|
+
|
|
222
289
|
// get revision
|
|
223
|
-
const objToRevert = await this.db
|
|
290
|
+
const objToRevert = await this.db
|
|
291
|
+
.collection(this.collectionRevision)
|
|
292
|
+
.findOne({_id: new ObjectId(revisionId)});
|
|
224
293
|
|
|
225
|
-
// update revision object
|
|
294
|
+
// update revision object
|
|
226
295
|
objToRevert.revision = Nongo.revisionNumber(obj.revision);
|
|
227
296
|
objToRevert.history = Nongo.revisionHistory(obj, revisionObjId);
|
|
228
297
|
delete objToRevert.diffs;
|
|
@@ -234,7 +303,6 @@ export default abstract class Model<T extends {_id?: ObjectId, revision?: string
|
|
|
234
303
|
.collection(this.collection)
|
|
235
304
|
.replaceOne({_id: obj._id}, objToRevert);
|
|
236
305
|
|
|
237
|
-
|
|
238
306
|
// make actuall object as revision object and save it to the revision collection
|
|
239
307
|
obj._id = revisionObjId;
|
|
240
308
|
await this.db.collection(this.collectionRevision).insertOne(obj);
|
|
@@ -244,7 +312,10 @@ export default abstract class Model<T extends {_id?: ObjectId, revision?: string
|
|
|
244
312
|
return new this.constructor(this.nongo, objToRevert);
|
|
245
313
|
}
|
|
246
314
|
|
|
247
|
-
public async getRevisionObjForEnvironment(
|
|
315
|
+
public async getRevisionObjForEnvironment(
|
|
316
|
+
isLive: boolean,
|
|
317
|
+
id: string,
|
|
318
|
+
): Promise<this> {
|
|
248
319
|
let doc;
|
|
249
320
|
const _id = new ObjectId(id);
|
|
250
321
|
|
|
@@ -264,8 +335,13 @@ export default abstract class Model<T extends {_id?: ObjectId, revision?: string
|
|
|
264
335
|
return new this.constructor(this.nongo, doc);
|
|
265
336
|
}
|
|
266
337
|
|
|
267
|
-
public async saveEnvironmentRevision(
|
|
268
|
-
|
|
338
|
+
public async saveEnvironmentRevision(
|
|
339
|
+
id: string,
|
|
340
|
+
environmentId: string,
|
|
341
|
+
): Promise<this> {
|
|
342
|
+
const obj = await this.db
|
|
343
|
+
.collection(this.collection)
|
|
344
|
+
.findOne({_id: new ObjectId(id)});
|
|
269
345
|
|
|
270
346
|
const revisionObj = clone(obj);
|
|
271
347
|
revisionObj._id = new ObjectId();
|
|
@@ -277,8 +353,12 @@ export default abstract class Model<T extends {_id?: ObjectId, revision?: string
|
|
|
277
353
|
return new this.constructor(this.nongo, revisionObj);
|
|
278
354
|
}
|
|
279
355
|
|
|
280
|
-
public async removeEnvironmentRevisions(
|
|
281
|
-
|
|
356
|
+
public async removeEnvironmentRevisions(
|
|
357
|
+
environmentId: string,
|
|
358
|
+
): Promise<DeleteResult> {
|
|
359
|
+
const result = await this.db
|
|
360
|
+
.collection(this.collectionRevision)
|
|
361
|
+
.deleteMany({environment: environmentId});
|
|
282
362
|
return result;
|
|
283
363
|
}
|
|
284
364
|
|
|
@@ -351,17 +431,30 @@ export default abstract class Model<T extends {_id?: ObjectId, revision?: string
|
|
|
351
431
|
return this.findOne({_id: id});
|
|
352
432
|
}
|
|
353
433
|
|
|
354
|
-
public async getRevisionHistory
|
|
355
|
-
const revisionIds = history.map(i => new ObjectId(i.id));
|
|
356
|
-
return this.toArray(
|
|
434
|
+
public async getRevisionHistory(history: RevisionHistory[]) {
|
|
435
|
+
const revisionIds = history.map((i) => new ObjectId(i.id));
|
|
436
|
+
return this.toArray(
|
|
437
|
+
await this.findIterator(
|
|
438
|
+
{_id: {$in: revisionIds}},
|
|
439
|
+
{sort: {revision: 'descending'}},
|
|
440
|
+
this.collectionRevision,
|
|
441
|
+
),
|
|
442
|
+
);
|
|
357
443
|
}
|
|
358
444
|
|
|
359
|
-
public async getRevisions(
|
|
360
|
-
|
|
445
|
+
public async getRevisions(
|
|
446
|
+
query: Filter<Document>,
|
|
447
|
+
options?: FindOptions<Document>,
|
|
448
|
+
): Promise<this[]> {
|
|
449
|
+
return this.toArray(
|
|
450
|
+
await this.findIterator(query, options, this.collectionRevision),
|
|
451
|
+
);
|
|
361
452
|
}
|
|
362
453
|
|
|
363
|
-
public async getRevision
|
|
364
|
-
const doc = await this.db
|
|
454
|
+
public async getRevision(query: Filter<Document>): Promise<this> {
|
|
455
|
+
const doc = await this.db
|
|
456
|
+
.collection(this.collectionRevision)
|
|
457
|
+
.findOne(query);
|
|
365
458
|
|
|
366
459
|
// Return null if no doc was found
|
|
367
460
|
if (doc == null) {
|
|
@@ -378,7 +471,10 @@ export default abstract class Model<T extends {_id?: ObjectId, revision?: string
|
|
|
378
471
|
* @param options: the query options e.g. sorting, limiting results etc.
|
|
379
472
|
* @return the results of the query as an array of models.
|
|
380
473
|
*/
|
|
381
|
-
public async find(
|
|
474
|
+
public async find(
|
|
475
|
+
query: Filter<Document> = {},
|
|
476
|
+
options?: FindOptions<Document>,
|
|
477
|
+
): Promise<this[]> {
|
|
382
478
|
return this.toArray(await this.findIterator(query, options));
|
|
383
479
|
}
|
|
384
480
|
|
|
@@ -398,7 +494,7 @@ export default abstract class Model<T extends {_id?: ObjectId, revision?: string
|
|
|
398
494
|
* @param options: the query options e.g. sorting, limiting results etc.
|
|
399
495
|
* @return the results of the query as an {@link AsyncIterator}.
|
|
400
496
|
*/
|
|
401
|
-
public async
|
|
497
|
+
public async findIterator(
|
|
402
498
|
query: Filter<Document> = {},
|
|
403
499
|
options?: FindOptions<Document>,
|
|
404
500
|
collection = this.collection,
|
|
@@ -407,7 +503,7 @@ export default abstract class Model<T extends {_id?: ObjectId, revision?: string
|
|
|
407
503
|
const cursor = this.db.collection(collection).find(query, options);
|
|
408
504
|
return new CursorIterator<this>(
|
|
409
505
|
cursor,
|
|
410
|
-
|
|
506
|
+
// @ts-ignore
|
|
411
507
|
(obj) => new this.constructor(this.nongo, obj),
|
|
412
508
|
);
|
|
413
509
|
}
|
|
@@ -430,12 +526,18 @@ export default abstract class Model<T extends {_id?: ObjectId, revision?: string
|
|
|
430
526
|
return new this.constructor(this.nongo, doc);
|
|
431
527
|
}
|
|
432
528
|
|
|
433
|
-
public async remove(
|
|
529
|
+
public async remove(
|
|
530
|
+
query: Filter<Document>,
|
|
531
|
+
options?: DeleteOptions,
|
|
532
|
+
): Promise<DeleteResult> {
|
|
434
533
|
query = this.prepareQuery(query);
|
|
435
534
|
return this.db.collection(this.collection).deleteMany(query, options);
|
|
436
535
|
}
|
|
437
536
|
|
|
438
|
-
public async aggregate(
|
|
537
|
+
public async aggregate(
|
|
538
|
+
pipeline: Document[],
|
|
539
|
+
options?: AggregateOptions,
|
|
540
|
+
): Promise<any[]> {
|
|
439
541
|
return this.toArray(await this.aggregateIterator(pipeline, options));
|
|
440
542
|
}
|
|
441
543
|
|
|
@@ -458,14 +560,21 @@ export default abstract class Model<T extends {_id?: ObjectId, revision?: string
|
|
|
458
560
|
return this.db.collection(this.collection).distinct(field, filter);
|
|
459
561
|
}
|
|
460
562
|
|
|
461
|
-
public async update(
|
|
563
|
+
public async update(
|
|
564
|
+
query: Filter<Document>,
|
|
565
|
+
updates: UpdateFilter<Document>,
|
|
566
|
+
options?: UpdateOptions,
|
|
567
|
+
): Promise<UpdateResult<Document>> {
|
|
462
568
|
query = this.prepareQuery(query);
|
|
463
569
|
return this.db
|
|
464
570
|
.collection(this.collection)
|
|
465
571
|
.updateMany(query, updates, options);
|
|
466
572
|
}
|
|
467
573
|
|
|
468
|
-
public async count(
|
|
574
|
+
public async count(
|
|
575
|
+
query: Document = {},
|
|
576
|
+
options?: CountDocumentsOptions,
|
|
577
|
+
): Promise<number> {
|
|
469
578
|
return this.db.collection(this.collection).countDocuments(query, options);
|
|
470
579
|
}
|
|
471
580
|
|
|
@@ -494,7 +603,9 @@ export default abstract class Model<T extends {_id?: ObjectId, revision?: string
|
|
|
494
603
|
if (typeof _id === 'string') {
|
|
495
604
|
query._id = Nongo.toObjectId(query._id);
|
|
496
605
|
} else if (_id.$in) {
|
|
497
|
-
_id.$in = _id.$in.map((el) =>
|
|
606
|
+
_id.$in = _id.$in.map((el) =>
|
|
607
|
+
typeof el === 'string' ? Nongo.toObjectId(el) : el,
|
|
608
|
+
);
|
|
498
609
|
}
|
|
499
610
|
|
|
500
611
|
return query;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
// This file was generated using nongo-driver's TsInterfaceGenerator.
|
|
2
|
-
export default interface DummyModelChangedObj {
|
|
3
|
-
'name': string;
|
|
4
|
-
'pets': Array<{
|
|
5
|
-
'species'?: string;
|
|
6
|
-
'likes'?: {
|
|
7
|
-
'food'?: string[];
|
|
8
|
-
'drink'?: string[];
|
|
9
|
-
};
|
|
10
|
-
}>;
|
|
11
|
-
'_id'?: any;
|
|
12
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
// This file was generated using nongo-driver's TsInterfaceGenerator.
|
|
2
|
-
export default interface DummyModelObj {
|
|
3
|
-
'dontStripChildren'?: any;
|
|
4
|
-
'dontStripChildren2'?: any;
|
|
5
|
-
'exampleMap'?: {[key: string]: {
|
|
6
|
-
'mapValueField': string;
|
|
7
|
-
}};
|
|
8
|
-
'created'?: Date;
|
|
9
|
-
'arrayOfObject'?: object[];
|
|
10
|
-
'name': string;
|
|
11
|
-
'age': number;
|
|
12
|
-
'pets': Array<{
|
|
13
|
-
'species'?: string;
|
|
14
|
-
'likes'?: {
|
|
15
|
-
'food'?: string[];
|
|
16
|
-
'drink'?: string[];
|
|
17
|
-
};
|
|
18
|
-
}>;
|
|
19
|
-
'job': {
|
|
20
|
-
'role': string;
|
|
21
|
-
'at'?: string;
|
|
22
|
-
};
|
|
23
|
-
'location'?: {
|
|
24
|
-
'address1'?: string;
|
|
25
|
-
};
|
|
26
|
-
'autoInit': {
|
|
27
|
-
'initArray': Array<{
|
|
28
|
-
'nestedObj': any;
|
|
29
|
-
}>;
|
|
30
|
-
'initNestedObj'?: {
|
|
31
|
-
'hello'?: string;
|
|
32
|
-
};
|
|
33
|
-
'initNestedNative'?: any;
|
|
34
|
-
};
|
|
35
|
-
'notEmptyFields'?: {
|
|
36
|
-
'aString': string;
|
|
37
|
-
'anArray': string[];
|
|
38
|
-
};
|
|
39
|
-
'_id'?: any;
|
|
40
|
-
}
|
|
@@ -1,195 +0,0 @@
|
|
|
1
|
-
// This file was generated using nongo-driver's TsInterfaceGenerator.
|
|
2
|
-
export default interface DummyModelWithMaxIndexObj {
|
|
3
|
-
'clients'?: {
|
|
4
|
-
'client1'?: {
|
|
5
|
-
'favouritePet'?: string;
|
|
6
|
-
};
|
|
7
|
-
'client2'?: {
|
|
8
|
-
'favouritePet'?: string;
|
|
9
|
-
};
|
|
10
|
-
'client3'?: {
|
|
11
|
-
'favouritePet'?: string;
|
|
12
|
-
};
|
|
13
|
-
'client4'?: {
|
|
14
|
-
'favouritePet'?: string;
|
|
15
|
-
};
|
|
16
|
-
'client5'?: {
|
|
17
|
-
'favouritePet'?: string;
|
|
18
|
-
};
|
|
19
|
-
'client6'?: {
|
|
20
|
-
'favouritePet'?: string;
|
|
21
|
-
};
|
|
22
|
-
'client7'?: {
|
|
23
|
-
'favouritePet'?: string;
|
|
24
|
-
};
|
|
25
|
-
'client8'?: {
|
|
26
|
-
'favouritePet'?: string;
|
|
27
|
-
};
|
|
28
|
-
'client9'?: {
|
|
29
|
-
'favouritePet'?: string;
|
|
30
|
-
};
|
|
31
|
-
'client10'?: {
|
|
32
|
-
'favouritePet'?: string;
|
|
33
|
-
};
|
|
34
|
-
'client11'?: {
|
|
35
|
-
'favouritePet'?: string;
|
|
36
|
-
};
|
|
37
|
-
'client12'?: {
|
|
38
|
-
'favouritePet'?: string;
|
|
39
|
-
};
|
|
40
|
-
'client13'?: {
|
|
41
|
-
'favouritePet'?: string;
|
|
42
|
-
};
|
|
43
|
-
'client14'?: {
|
|
44
|
-
'favouritePet'?: string;
|
|
45
|
-
};
|
|
46
|
-
'client15'?: {
|
|
47
|
-
'favouritePet'?: string;
|
|
48
|
-
};
|
|
49
|
-
'client16'?: {
|
|
50
|
-
'favouritePet'?: string;
|
|
51
|
-
};
|
|
52
|
-
'client17'?: {
|
|
53
|
-
'favouritePet'?: string;
|
|
54
|
-
};
|
|
55
|
-
'client18'?: {
|
|
56
|
-
'favouritePet'?: string;
|
|
57
|
-
};
|
|
58
|
-
'client19'?: {
|
|
59
|
-
'favouritePet'?: string;
|
|
60
|
-
};
|
|
61
|
-
'client20'?: {
|
|
62
|
-
'favouritePet'?: string;
|
|
63
|
-
};
|
|
64
|
-
'client21'?: {
|
|
65
|
-
'favouritePet'?: string;
|
|
66
|
-
};
|
|
67
|
-
'client22'?: {
|
|
68
|
-
'favouritePet'?: string;
|
|
69
|
-
};
|
|
70
|
-
'client23'?: {
|
|
71
|
-
'favouritePet'?: string;
|
|
72
|
-
};
|
|
73
|
-
'client24'?: {
|
|
74
|
-
'favouritePet'?: string;
|
|
75
|
-
};
|
|
76
|
-
'client25'?: {
|
|
77
|
-
'favouritePet'?: string;
|
|
78
|
-
};
|
|
79
|
-
'client26'?: {
|
|
80
|
-
'favouritePet'?: string;
|
|
81
|
-
};
|
|
82
|
-
'client27'?: {
|
|
83
|
-
'favouritePet'?: string;
|
|
84
|
-
};
|
|
85
|
-
'client28'?: {
|
|
86
|
-
'favouritePet'?: string;
|
|
87
|
-
};
|
|
88
|
-
'client29'?: {
|
|
89
|
-
'favouritePet'?: string;
|
|
90
|
-
};
|
|
91
|
-
'client30'?: {
|
|
92
|
-
'favouritePet'?: string;
|
|
93
|
-
};
|
|
94
|
-
'client31'?: {
|
|
95
|
-
'favouritePet'?: string;
|
|
96
|
-
};
|
|
97
|
-
'client32'?: {
|
|
98
|
-
'favouritePet'?: string;
|
|
99
|
-
};
|
|
100
|
-
'client33'?: {
|
|
101
|
-
'favouritePet'?: string;
|
|
102
|
-
};
|
|
103
|
-
'client34'?: {
|
|
104
|
-
'favouritePet'?: string;
|
|
105
|
-
};
|
|
106
|
-
'client35'?: {
|
|
107
|
-
'favouritePet'?: string;
|
|
108
|
-
};
|
|
109
|
-
'client36'?: {
|
|
110
|
-
'favouritePet'?: string;
|
|
111
|
-
};
|
|
112
|
-
'client37'?: {
|
|
113
|
-
'favouritePet'?: string;
|
|
114
|
-
};
|
|
115
|
-
'client38'?: {
|
|
116
|
-
'favouritePet'?: string;
|
|
117
|
-
};
|
|
118
|
-
'client39'?: {
|
|
119
|
-
'favouritePet'?: string;
|
|
120
|
-
};
|
|
121
|
-
'client40'?: {
|
|
122
|
-
'favouritePet'?: string;
|
|
123
|
-
};
|
|
124
|
-
'client41'?: {
|
|
125
|
-
'favouritePet'?: string;
|
|
126
|
-
};
|
|
127
|
-
'client42'?: {
|
|
128
|
-
'favouritePet'?: string;
|
|
129
|
-
};
|
|
130
|
-
'client43'?: {
|
|
131
|
-
'favouritePet'?: string;
|
|
132
|
-
};
|
|
133
|
-
'client44'?: {
|
|
134
|
-
'favouritePet'?: string;
|
|
135
|
-
};
|
|
136
|
-
'client45'?: {
|
|
137
|
-
'favouritePet'?: string;
|
|
138
|
-
};
|
|
139
|
-
'client46'?: {
|
|
140
|
-
'favouritePet'?: string;
|
|
141
|
-
};
|
|
142
|
-
'client47'?: {
|
|
143
|
-
'favouritePet'?: string;
|
|
144
|
-
};
|
|
145
|
-
'client48'?: {
|
|
146
|
-
'favouritePet'?: string;
|
|
147
|
-
};
|
|
148
|
-
'client49'?: {
|
|
149
|
-
'favouritePet'?: string;
|
|
150
|
-
};
|
|
151
|
-
'client50'?: {
|
|
152
|
-
'favouritePet'?: string;
|
|
153
|
-
};
|
|
154
|
-
'client51'?: {
|
|
155
|
-
'favouritePet'?: string;
|
|
156
|
-
};
|
|
157
|
-
'client52'?: {
|
|
158
|
-
'favouritePet'?: string;
|
|
159
|
-
};
|
|
160
|
-
'client53'?: {
|
|
161
|
-
'favouritePet'?: string;
|
|
162
|
-
};
|
|
163
|
-
'client54'?: {
|
|
164
|
-
'favouritePet'?: string;
|
|
165
|
-
};
|
|
166
|
-
'client55'?: {
|
|
167
|
-
'favouritePet'?: string;
|
|
168
|
-
};
|
|
169
|
-
'client56'?: {
|
|
170
|
-
'favouritePet'?: string;
|
|
171
|
-
};
|
|
172
|
-
'client57'?: {
|
|
173
|
-
'favouritePet'?: string;
|
|
174
|
-
};
|
|
175
|
-
'client58'?: {
|
|
176
|
-
'favouritePet'?: string;
|
|
177
|
-
};
|
|
178
|
-
'client59'?: {
|
|
179
|
-
'favouritePet'?: string;
|
|
180
|
-
};
|
|
181
|
-
'client60'?: {
|
|
182
|
-
'favouritePet'?: string;
|
|
183
|
-
};
|
|
184
|
-
'client61'?: {
|
|
185
|
-
'favouritePet'?: string;
|
|
186
|
-
};
|
|
187
|
-
'client62'?: {
|
|
188
|
-
'favouritePet'?: string;
|
|
189
|
-
};
|
|
190
|
-
'client63'?: {
|
|
191
|
-
'favouritePet'?: string;
|
|
192
|
-
};
|
|
193
|
-
};
|
|
194
|
-
'_id'?: any;
|
|
195
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
// This file was generated using nongo-driver's TsInterfaceGenerator.
|
|
2
|
-
export default interface DummyModelWithRevisionObj {
|
|
3
|
-
'revision'?: string;
|
|
4
|
-
'history'?: Array<{
|
|
5
|
-
'id'?: string;
|
|
6
|
-
'revision'?: string;
|
|
7
|
-
'created'?: Date;
|
|
8
|
-
}>;
|
|
9
|
-
'created': Date;
|
|
10
|
-
'name': string;
|
|
11
|
-
'age'?: number;
|
|
12
|
-
'_id'?: any;
|
|
13
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
// This file was generated using nongo-driver's TsInterfaceGenerator.
|
|
2
|
-
export default interface TextIndexModelModifiedObj {
|
|
3
|
-
'name'?: string;
|
|
4
|
-
'module'?: string;
|
|
5
|
-
'description'?: {
|
|
6
|
-
'en'?: string;
|
|
7
|
-
'cy'?: string;
|
|
8
|
-
'es'?: string;
|
|
9
|
-
};
|
|
10
|
-
'summary'?: string;
|
|
11
|
-
'_id'?: any;
|
|
12
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
// This file was generated using nongo-driver's TsInterfaceGenerator.
|
|
2
|
-
export default interface TextIndexModelTooLongObj {
|
|
3
|
-
'name'?: string;
|
|
4
|
-
'module'?: string;
|
|
5
|
-
'description'?: {
|
|
6
|
-
'en'?: string;
|
|
7
|
-
'cy'?: string;
|
|
8
|
-
};
|
|
9
|
-
'summary'?: string;
|
|
10
|
-
'_id'?: any;
|
|
11
|
-
}
|