objection 2.2.14 → 2.2.18

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.
@@ -71,9 +71,11 @@ class RelationOwner {
71
71
  if (values) {
72
72
  builder.whereInComposite(relatedRefs, values);
73
73
  } else {
74
+ builder.where(false);
74
75
  builder.resolve([]);
75
76
  }
76
77
  } else {
78
+ builder.where(false);
77
79
  builder.resolve([]);
78
80
  }
79
81
 
@@ -189,7 +189,6 @@ function once(func) {
189
189
 
190
190
  function flatten(arrays) {
191
191
  const out = [];
192
- let outIdx = 0;
193
192
 
194
193
  for (let i = 0, l = arrays.length; i < l; ++i) {
195
194
  const value = arrays[i];
@@ -225,6 +224,11 @@ function set(obj, path, value) {
225
224
 
226
225
  for (let i = 0, l = path.length - 1; i < l; ++i) {
227
226
  const key = path[i];
227
+
228
+ if (!isSafeKey(key)) {
229
+ return inputObj;
230
+ }
231
+
228
232
  let child = obj[key];
229
233
 
230
234
  if (!isObject(child)) {
@@ -243,7 +247,11 @@ function set(obj, path, value) {
243
247
  }
244
248
 
245
249
  if (path.length > 0 && isObject(obj)) {
246
- obj[path[path.length - 1]] = value;
250
+ const key = path[path.length - 1];
251
+
252
+ if (isSafeKey(key)) {
253
+ obj[key] = value;
254
+ }
247
255
  }
248
256
 
249
257
  return inputObj;
@@ -253,7 +261,11 @@ function zipObject(keys, values) {
253
261
  const out = {};
254
262
 
255
263
  for (let i = 0, l = keys.length; i < l; ++i) {
256
- out[keys[i]] = values[i];
264
+ const key = keys[i];
265
+
266
+ if (isSafeKey(key)) {
267
+ out[key] = values[i];
268
+ }
257
269
  }
258
270
 
259
271
  return out;
@@ -357,6 +369,10 @@ function compareStrict(val1, val2) {
357
369
  return val1 === val2;
358
370
  }
359
371
 
372
+ function isSafeKey(key) {
373
+ return isNumber(key) || (isString(key) && key !== '__proto__');
374
+ }
375
+
360
376
  module.exports = {
361
377
  isEmpty,
362
378
  isString,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "objection",
3
- "version": "2.2.14",
3
+ "version": "2.2.18",
4
4
  "description": "An SQL-friendly ORM for Node.js",
5
5
  "main": "lib/objection.js",
6
6
  "license": "MIT",
@@ -65,7 +65,7 @@
65
65
  "db-errors": "^0.2.3"
66
66
  },
67
67
  "peerDependencies": {
68
- "knex": "0.x"
68
+ "knex": "<0.95.0"
69
69
  },
70
70
  "devDependencies": {
71
71
  "@types/node": "^14.14.13",
@@ -58,7 +58,9 @@ declare namespace Objection {
58
58
  ): ValueBuilder;
59
59
  }
60
60
 
61
- export interface ReferenceBuilder extends Castable {}
61
+ export interface ReferenceBuilder extends Castable {
62
+ from(tableReference: string): this;
63
+ }
62
64
  export interface ReferenceFunction {
63
65
  (expression: string): ReferenceBuilder;
64
66
  }
@@ -752,8 +754,8 @@ declare namespace Objection {
752
754
  export interface GraphOptions {
753
755
  minimize?: boolean;
754
756
  separator?: string;
755
- aliases?: string[];
756
- joinOperation: string;
757
+ aliases?: {[key: string]: string};
758
+ joinOperation?: string;
757
759
  maxBatchSize?: number;
758
760
  }
759
761
 
@@ -1080,11 +1082,6 @@ declare namespace Objection {
1080
1082
  // Deprecated
1081
1083
  omit(properties: string[]): this;
1082
1084
 
1083
- traverse(filterConstructor: typeof Model, traverser: TraverserFunction): R;
1084
- traverse(traverser: TraverserFunction): R;
1085
- traverseAsync(filterConstructor: typeof Model, traverser: TraverserFunction): Promise<R>;
1086
- traverseAsync(traverser: TraverserFunction): Promise<R>;
1087
-
1088
1085
  page(page: number, pageSize: number): PageQueryBuilder<this>;
1089
1086
  range(): PageQueryBuilder<this>;
1090
1087
  range(start: number, end: number): PageQueryBuilder<this>;
@@ -1509,6 +1506,12 @@ declare namespace Objection {
1509
1506
  models: Model | Model[],
1510
1507
  traverser: TraverserFunction
1511
1508
  ): void;
1509
+ traverseAsync(models: Model | Model[], traverser: TraverserFunction): Promise<void>;
1510
+ traverseAsync(
1511
+ filterConstructor: ModelConstructor<Model>,
1512
+ models: Model | Model[],
1513
+ traverser: TraverserFunction
1514
+ ): Promise<void>;
1512
1515
 
1513
1516
  beforeFind(args: StaticHookArguments<any>): any;
1514
1517
  afterFind(args: StaticHookArguments<any>): any;
@@ -1644,6 +1647,12 @@ declare namespace Objection {
1644
1647
  models: Model | Model[],
1645
1648
  traverser: TraverserFunction
1646
1649
  ): void;
1650
+ static traverseAsync(models: Model | Model[], traverser: TraverserFunction): Promise<void>;
1651
+ static traverseAsync(
1652
+ filterConstructor: typeof Model,
1653
+ models: Model | Model[],
1654
+ traverser: TraverserFunction
1655
+ ): Promise<void>;
1647
1656
 
1648
1657
  static beforeFind(args: StaticHookArguments<any>): any;
1649
1658
  static afterFind(args: StaticHookArguments<any>): any;