@geekbears/gb-mongoose-query-parser 1.3.17 → 1.3.19

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.
@@ -245,27 +245,37 @@ class QueryParser {
245
245
  for (const [i, [key, value]] of Object.entries(obj).entries()) {
246
246
  if (Object.prototype.hasOwnProperty.call(obj, key)) {
247
247
  const validId = (0, mongoose_1.isObjectIdOrHexString)(value);
248
- if (validId && (0, class_validator_1.isMongoId)(value)) {
249
- obj[key] = mongoose_1.Types.ObjectId.createFromHexString(value.toString());
248
+ // if (validId && isMongoId(value)) {
249
+ // obj[key] = Types.ObjectId.createFromHexString(value.toString());
250
+ // // console.log('value :>> ', obj[key]);
251
+ // console.log('valid', value);
252
+ // }
253
+ // if (typeof value === 'object' && !validId) {
254
+ // console.log('walking', value);
255
+ // if (i % 1000 === 0) {
256
+ // setImmediate(() => {
257
+ // walk(obj[key]);
258
+ // });
259
+ // } else walk(obj[key]);
260
+ // } else {
261
+ // console.log('value as is ', value);
262
+ // obj[key] = value;
263
+ // }
264
+ // console.log(obj);
265
+ // console.log('HERE', key);
266
+ // console.log('obj :>> ', obj);
267
+ if (typeof value === 'object' && !validId) {
268
+ // console.log('walking......', key);
269
+ walk(obj[key]);
250
270
  }
251
- else {
252
- if (i % 1000 === 0) {
253
- setImmediate(() => {
254
- walk(obj[key]);
255
- });
256
- }
257
- else
258
- walk(obj[key]);
259
- }
260
- // if (typeof value === 'object') {
261
- // console.log('walking......');
262
- // walk(obj[key]);
263
- // } else obj[key] = Types.ObjectId.isValid(value) ? new Types.ObjectId(value) : value;
271
+ else
272
+ obj[key] = validId ? mongoose_1.Types.ObjectId.createFromHexString(value.toString()) : value;
264
273
  }
265
274
  }
266
275
  return obj;
267
276
  };
268
277
  const res = walk({ ...filter });
278
+ // console.log('res', res.filter);
269
279
  return res;
270
280
  }
271
281
  }
package/lib/test.spec.js CHANGED
@@ -14,7 +14,6 @@ const chai_1 = require("chai");
14
14
  const _1 = require("./");
15
15
  const mongoose_1 = require("mongoose");
16
16
  const lodash_1 = require("lodash");
17
- const class_validator_1 = require("class-validator");
18
17
  let Tester = class Tester {
19
18
  generalParse() {
20
19
  let parser = new _1.MongooseQueryParser();
@@ -172,15 +171,22 @@ let Tester = class Tester {
172
171
  };
173
172
  let parsed = parser.parse({ filter });
174
173
  chai_1.assert.isOk((0, mongoose_1.isObjectIdOrHexString)(parsed.filter['_org']));
175
- chai_1.assert.isOk((0, class_validator_1.isMongoId)(parsed.filter['_org']));
176
174
  chai_1.assert.isObject(parsed.filter);
177
175
  chai_1.assert.isObject(parsed.filter['dailyRate']);
178
176
  chai_1.assert.isObject(parsed.filter['_org2']);
179
177
  const transformedFilter = _1.QueryParser.transformFilter(parsed);
180
178
  chai_1.assert.isOk((0, mongoose_1.isObjectIdOrHexString)(transformedFilter.filter._org));
181
- chai_1.assert.isOk((0, class_validator_1.isMongoId)(transformedFilter.filter._org));
182
179
  chai_1.assert.isOk((0, mongoose_1.isObjectIdOrHexString)(transformedFilter.filter._org2['$in'][0]));
183
- chai_1.assert.isOk((0, class_validator_1.isMongoId)(transformedFilter.filter._org2['$in'][0]));
180
+ }
181
+ transformFilter2() {
182
+ let parser = new _1.MongooseQueryParser();
183
+ const filter = {
184
+ _tags: { $in: ['66885d0e304ef564c27f5315'] },
185
+ };
186
+ const query = { filter, populate: 'tags' };
187
+ let parsed = parser.parse(query);
188
+ const transformedFilter = _1.QueryParser.transformFilter(parsed);
189
+ chai_1.assert.isOk((0, mongoose_1.isObjectIdOrHexString)(transformedFilter.filter._tags['$in'][0]));
184
190
  }
185
191
  transformFilterAggregate() {
186
192
  // let parser = new MongooseQueryParser();
@@ -220,13 +226,10 @@ let Tester = class Tester {
220
226
  };
221
227
  const transformedMatchFilter = _1.QueryParser.transformFilter(matchStage);
222
228
  chai_1.assert.isOk((0, mongoose_1.isObjectIdOrHexString)(transformedMatchFilter.$match._id));
223
- chai_1.assert.isOk((0, class_validator_1.isMongoId)(transformedMatchFilter.$match._id));
224
229
  const transformedMatchInFilter = _1.QueryParser.transformFilter(matchStageIn);
225
230
  chai_1.assert.isOk((0, mongoose_1.isObjectIdOrHexString)(transformedMatchInFilter.$match._id.$in[0]));
226
- chai_1.assert.isOk((0, class_validator_1.isMongoId)(transformedMatchInFilter.$match._id.$in[0]));
227
231
  const transformedMatchNinFilter = _1.QueryParser.transformFilter(matchStageNin);
228
232
  chai_1.assert.isOk((0, mongoose_1.isObjectIdOrHexString)(transformedMatchNinFilter.$match._id.$nin[0]));
229
- chai_1.assert.isOk((0, class_validator_1.isMongoId)(transformedMatchNinFilter.$match._id.$nin[0]));
230
233
  const transformLookupFilter = _1.QueryParser.transformFilter(lookupStage);
231
234
  chai_1.assert.isObject(transformLookupFilter);
232
235
  const transformComplexLookupFilter = _1.QueryParser.transformFilter(lookupStageComplex);
@@ -234,7 +237,6 @@ let Tester = class Tester {
234
237
  chai_1.assert.isArray(transformComplexLookupFilter.$lookup.pipeline);
235
238
  chai_1.assert.lengthOf(transformComplexLookupFilter.$lookup.pipeline, 3);
236
239
  chai_1.assert.isOk((0, mongoose_1.isObjectIdOrHexString)(transformComplexLookupFilter.$lookup.pipeline[0].$match.$expr.$eq[0]));
237
- chai_1.assert.isOk((0, class_validator_1.isMongoId)(transformComplexLookupFilter.$lookup.pipeline[0].$match.$expr.$eq[0]));
238
240
  }
239
241
  };
240
242
  __decorate([
@@ -303,6 +305,12 @@ __decorate([
303
305
  __metadata("design:paramtypes", []),
304
306
  __metadata("design:returntype", void 0)
305
307
  ], Tester.prototype, "transformFilter", null);
308
+ __decorate([
309
+ (0, mocha_1.test)('should use transformFilter in FilterQuery 2'),
310
+ __metadata("design:type", Function),
311
+ __metadata("design:paramtypes", []),
312
+ __metadata("design:returntype", void 0)
313
+ ], Tester.prototype, "transformFilter2", null);
306
314
  __decorate([
307
315
  (0, mocha_1.test)('should use transformFilter in Aggregate'),
308
316
  __metadata("design:type", Function),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@geekbears/gb-mongoose-query-parser",
3
- "version": "1.3.17",
3
+ "version": "1.3.19",
4
4
  "description": "Convert url query string to MongooseJs friendly query object including advanced filtering, sorting, population, deep population, string template, type casting and many more...",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./lib/index.d.ts",
@@ -32,18 +32,18 @@
32
32
  "homepage": "https://gitlab.com/geekbears/utilities/backend/gb-mongoose-query-parser#readme",
33
33
  "devDependencies": {
34
34
  "@testdeck/mocha": "^0.3.3",
35
- "@types/chai": "^4.3.16",
35
+ "@types/chai": "^4.3.17",
36
36
  "@types/lodash": "^4.17.7",
37
37
  "@types/mocha": "^10.0.7",
38
- "@types/node": "^20.14.11",
38
+ "@types/node": "^22.4.0",
39
39
  "@types/qs": "^6.9.15",
40
- "chai": "^4.4.1",
41
- "mocha": "^10.6.0",
40
+ "chai": "^4.5.0",
41
+ "mocha": "^10.7.3",
42
42
  "prettier": "^3.3.3",
43
43
  "rimraf": "^6.0.1",
44
44
  "ts-node": "^10.9.2",
45
45
  "tslint": "^6.1.3",
46
- "typescript": "^5.5.3"
46
+ "typescript": "^5.5.4"
47
47
  },
48
48
  "dependencies": {
49
49
  "lodash": "^4.17.21",