@abedmurrar/objection 4.0.0-alpha.0 → 4.0.0-beta.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 (192) hide show
  1. package/README.md +103 -67
  2. package/lib/index.mjs +6 -0
  3. package/lib/initialize.js +6 -9
  4. package/lib/model/AjvValidator.js +235 -282
  5. package/lib/model/Model.js +653 -823
  6. package/lib/model/ModifierNotFoundError.js +5 -7
  7. package/lib/model/NotFoundError.js +14 -18
  8. package/lib/model/RelationDoesNotExistError.js +6 -9
  9. package/lib/model/ValidationError.js +33 -41
  10. package/lib/model/Validator.js +15 -21
  11. package/lib/model/getModel.js +1 -3
  12. package/lib/model/graph/ModelGraph.js +44 -64
  13. package/lib/model/graph/ModelGraphBuilder.js +164 -217
  14. package/lib/model/graph/ModelGraphEdge.js +31 -43
  15. package/lib/model/graph/ModelGraphNode.js +192 -231
  16. package/lib/model/inheritModel.js +9 -18
  17. package/lib/model/modelBindKnex.js +48 -62
  18. package/lib/model/modelClone.js +79 -98
  19. package/lib/model/modelColPropMap.js +16 -26
  20. package/lib/model/modelConcurrency.js +24 -0
  21. package/lib/model/modelId.js +44 -49
  22. package/lib/model/modelJsonAttributes.js +56 -76
  23. package/lib/model/modelParseRelations.js +68 -67
  24. package/lib/model/modelQueryProps.js +76 -107
  25. package/lib/model/modelSet.js +92 -112
  26. package/lib/model/modelTableMetadata.js +60 -72
  27. package/lib/model/modelToJson.js +120 -150
  28. package/lib/model/modelUtils.js +30 -37
  29. package/lib/model/modelValidate.js +34 -42
  30. package/lib/model/modelValues.js +78 -91
  31. package/lib/model/modelVisitor.js +22 -29
  32. package/lib/objection.js +42 -67
  33. package/lib/queryBuilder/FunctionBuilder.js +231 -279
  34. package/lib/queryBuilder/InternalOptions.js +19 -24
  35. package/lib/queryBuilder/JoinBuilder.js +116 -149
  36. package/lib/queryBuilder/QueryBuilder.js +1009 -1271
  37. package/lib/queryBuilder/QueryBuilderBase.js +647 -865
  38. package/lib/queryBuilder/QueryBuilderContext.js +14 -21
  39. package/lib/queryBuilder/QueryBuilderContextBase.js +20 -29
  40. package/lib/queryBuilder/QueryBuilderOperationSupport.js +462 -536
  41. package/lib/queryBuilder/QueryBuilderUserContext.js +19 -25
  42. package/lib/queryBuilder/RawBuilder.js +58 -73
  43. package/lib/queryBuilder/ReferenceBuilder.js +232 -270
  44. package/lib/queryBuilder/RelationExpression.js +322 -380
  45. package/lib/queryBuilder/StaticHookArguments.js +94 -106
  46. package/lib/queryBuilder/ValueBuilder.js +100 -112
  47. package/lib/queryBuilder/expressions.js +86 -116
  48. package/lib/queryBuilder/functions/mysql.js +642 -697
  49. package/lib/queryBuilder/graph/GraphAction.js +44 -59
  50. package/lib/queryBuilder/graph/GraphData.js +7 -9
  51. package/lib/queryBuilder/graph/GraphFetcher.js +115 -151
  52. package/lib/queryBuilder/graph/GraphNodeDbExistence.js +114 -152
  53. package/lib/queryBuilder/graph/GraphOperation.js +16 -22
  54. package/lib/queryBuilder/graph/GraphOptions.js +143 -185
  55. package/lib/queryBuilder/graph/GraphUpsert.js +167 -241
  56. package/lib/queryBuilder/graph/delete/GraphDelete.js +8 -13
  57. package/lib/queryBuilder/graph/delete/GraphDeleteAction.js +44 -62
  58. package/lib/queryBuilder/graph/insert/GraphInsert.js +99 -128
  59. package/lib/queryBuilder/graph/insert/GraphInsertAction.js +151 -193
  60. package/lib/queryBuilder/graph/insert/JoinRowGraphInsertAction.js +57 -79
  61. package/lib/queryBuilder/graph/patch/GraphPatch.js +8 -13
  62. package/lib/queryBuilder/graph/patch/GraphPatchAction.js +181 -234
  63. package/lib/queryBuilder/graph/recursiveUpsert/GraphRecursiveUpsert.js +16 -21
  64. package/lib/queryBuilder/graph/recursiveUpsert/GraphRecursiveUpsertAction.js +80 -110
  65. package/lib/queryBuilder/join/JoinResultColumn.js +14 -18
  66. package/lib/queryBuilder/join/JoinResultParser.js +88 -101
  67. package/lib/queryBuilder/join/RelationJoiner.js +205 -288
  68. package/lib/queryBuilder/join/TableNode.js +117 -144
  69. package/lib/queryBuilder/join/TableTree.js +60 -76
  70. package/lib/queryBuilder/join/utils.js +10 -16
  71. package/lib/queryBuilder/operations/DelegateOperation.js +93 -133
  72. package/lib/queryBuilder/operations/DeleteOperation.js +33 -37
  73. package/lib/queryBuilder/operations/FindByIdOperation.js +20 -28
  74. package/lib/queryBuilder/operations/FindByIdsOperation.js +17 -23
  75. package/lib/queryBuilder/operations/FindOperation.js +114 -131
  76. package/lib/queryBuilder/operations/FirstOperation.js +14 -19
  77. package/lib/queryBuilder/operations/FromOperation.js +69 -88
  78. package/lib/queryBuilder/operations/InsertAndFetchOperation.js +28 -39
  79. package/lib/queryBuilder/operations/InsertGraphAndFetchOperation.js +25 -35
  80. package/lib/queryBuilder/operations/InsertGraphOperation.js +77 -98
  81. package/lib/queryBuilder/operations/InsertOperation.js +132 -165
  82. package/lib/queryBuilder/operations/InstanceDeleteOperation.js +27 -36
  83. package/lib/queryBuilder/operations/InstanceFindOperation.js +9 -13
  84. package/lib/queryBuilder/operations/InstanceInsertOperation.js +13 -17
  85. package/lib/queryBuilder/operations/InstanceUpdateOperation.js +32 -46
  86. package/lib/queryBuilder/operations/JoinRelatedOperation.js +66 -86
  87. package/lib/queryBuilder/operations/KnexOperation.js +4 -7
  88. package/lib/queryBuilder/operations/MergeOperation.js +32 -45
  89. package/lib/queryBuilder/operations/ObjectionToKnexConvertingOperation.js +131 -150
  90. package/lib/queryBuilder/operations/OnBuildKnexOperation.js +17 -23
  91. package/lib/queryBuilder/operations/OnBuildOperation.js +17 -23
  92. package/lib/queryBuilder/operations/OnErrorOperation.js +17 -23
  93. package/lib/queryBuilder/operations/QueryBuilderOperation.js +231 -270
  94. package/lib/queryBuilder/operations/RangeOperation.js +30 -40
  95. package/lib/queryBuilder/operations/RelateOperation.js +14 -21
  96. package/lib/queryBuilder/operations/ReturningOperation.js +12 -18
  97. package/lib/queryBuilder/operations/RunAfterOperation.js +17 -23
  98. package/lib/queryBuilder/operations/RunBeforeOperation.js +17 -23
  99. package/lib/queryBuilder/operations/UnrelateOperation.js +12 -17
  100. package/lib/queryBuilder/operations/UpdateAndFetchOperation.js +48 -65
  101. package/lib/queryBuilder/operations/UpdateOperation.js +104 -129
  102. package/lib/queryBuilder/operations/UpsertGraphAndFetchOperation.js +25 -35
  103. package/lib/queryBuilder/operations/UpsertGraphOperation.js +36 -55
  104. package/lib/queryBuilder/operations/WhereCompositeOperation.js +30 -39
  105. package/lib/queryBuilder/operations/WhereInOperation.js +34 -36
  106. package/lib/queryBuilder/operations/eager/EagerOperation.js +37 -52
  107. package/lib/queryBuilder/operations/eager/JoinEagerOperation.js +34 -44
  108. package/lib/queryBuilder/operations/eager/NaiveEagerOperation.js +4 -7
  109. package/lib/queryBuilder/operations/eager/WhereInEagerOperation.js +193 -251
  110. package/lib/queryBuilder/operations/jsonApi/WhereJsonHasOperation.js +18 -25
  111. package/lib/queryBuilder/operations/jsonApi/WhereJsonNotObjectOperation.js +25 -41
  112. package/lib/queryBuilder/operations/jsonApi/WhereJsonOperation.js +19 -20
  113. package/lib/queryBuilder/operations/jsonApi/WhereJsonOverlapsOperation.js +23 -21
  114. package/lib/queryBuilder/operations/jsonApi/mysqlJsonApi.js +106 -118
  115. package/lib/queryBuilder/operations/jsonApi/postgresJsonApi.js +79 -108
  116. package/lib/queryBuilder/operations/select/SelectOperation.js +37 -53
  117. package/lib/queryBuilder/operations/select/Selection.js +94 -105
  118. package/lib/queryBuilder/operations/whereInComposite/WhereInCompositeMsSqlOperation.js +68 -101
  119. package/lib/queryBuilder/operations/whereInComposite/WhereInCompositeOperation.js +65 -75
  120. package/lib/queryBuilder/operations/whereInComposite/WhereInCompositeSqliteOperation.js +75 -84
  121. package/lib/queryBuilder/parsers/jsonFieldExpressionParser.js +760 -859
  122. package/lib/queryBuilder/parsers/relationExpressionParser.js +840 -952
  123. package/lib/queryBuilder/transformations/CompositeQueryTransformation.js +10 -15
  124. package/lib/queryBuilder/transformations/QueryTransformation.js +4 -6
  125. package/lib/queryBuilder/transformations/WrapMysqlModifySubqueryTransformation.js +35 -49
  126. package/lib/queryBuilder/transformations/index.js +3 -9
  127. package/lib/queryBuilder/whereScopes.js +158 -186
  128. package/lib/relations/Relation.js +279 -363
  129. package/lib/relations/RelationDeleteOperation.js +16 -22
  130. package/lib/relations/RelationFindOperation.js +100 -133
  131. package/lib/relations/RelationInsertOperation.js +19 -27
  132. package/lib/relations/RelationOwner.js +167 -204
  133. package/lib/relations/RelationProperty.js +177 -217
  134. package/lib/relations/RelationUpdateOperation.js +16 -23
  135. package/lib/relations/belongsToOne/BelongsToOneDeleteOperation.js +11 -16
  136. package/lib/relations/belongsToOne/BelongsToOneInsertOperation.js +24 -35
  137. package/lib/relations/belongsToOne/BelongsToOneRelateOperation.js +30 -41
  138. package/lib/relations/belongsToOne/BelongsToOneRelation.js +33 -41
  139. package/lib/relations/belongsToOne/BelongsToOneUnrelateOperation.js +38 -53
  140. package/lib/relations/hasMany/HasManyInsertOperation.js +35 -51
  141. package/lib/relations/hasMany/HasManyRelateOperation.js +38 -54
  142. package/lib/relations/hasMany/HasManyRelation.js +30 -38
  143. package/lib/relations/hasMany/HasManyUnrelateOperation.js +19 -26
  144. package/lib/relations/hasOne/HasOneRelation.js +4 -7
  145. package/lib/relations/hasOneThrough/HasOneThroughRelation.js +4 -7
  146. package/lib/relations/manyToMany/ManyToManyModifyMixin.js +67 -90
  147. package/lib/relations/manyToMany/ManyToManyRelation.js +349 -451
  148. package/lib/relations/manyToMany/ManyToManySqliteModifyMixin.js +19 -26
  149. package/lib/relations/manyToMany/delete/ManyToManyDeleteOperation.js +3 -5
  150. package/lib/relations/manyToMany/delete/ManyToManyDeleteOperationBase.js +14 -20
  151. package/lib/relations/manyToMany/delete/ManyToManyDeleteSqliteOperation.js +3 -7
  152. package/lib/relations/manyToMany/find/ManyToManyFindOperation.js +71 -94
  153. package/lib/relations/manyToMany/insert/ManyToManyInsertOperation.js +31 -43
  154. package/lib/relations/manyToMany/relate/ManyToManyRelateOperation.js +50 -67
  155. package/lib/relations/manyToMany/unrelate/ManyToManyUnrelateOperation.js +4 -7
  156. package/lib/relations/manyToMany/unrelate/ManyToManyUnrelateOperationBase.js +20 -27
  157. package/lib/relations/manyToMany/unrelate/ManyToManyUnrelateSqliteOperation.js +5 -10
  158. package/lib/relations/manyToMany/update/ManyToManyUpdateOperation.js +3 -5
  159. package/lib/relations/manyToMany/update/ManyToManyUpdateOperationBase.js +55 -72
  160. package/lib/relations/manyToMany/update/ManyToManyUpdateSqliteOperation.js +3 -7
  161. package/lib/transaction.js +53 -83
  162. package/lib/utils/assert.js +15 -21
  163. package/lib/utils/buildUtils.js +17 -19
  164. package/lib/utils/classUtils.js +7 -11
  165. package/lib/utils/cloneDeep.js +365 -0
  166. package/lib/utils/createModifier.js +36 -41
  167. package/lib/utils/deprecate.js +8 -12
  168. package/lib/utils/identifierMapping.js +153 -192
  169. package/lib/utils/internalPropUtils.js +4 -8
  170. package/lib/utils/knexUtils.js +61 -56
  171. package/lib/utils/mixin.js +16 -23
  172. package/lib/utils/mysqlJsonPath.js +55 -40
  173. package/lib/utils/normalizeIds.js +110 -127
  174. package/lib/utils/objectUtils.js +236 -338
  175. package/lib/utils/parseFieldExpression.js +66 -44
  176. package/lib/utils/postgresJsonPath.js +48 -62
  177. package/lib/utils/promiseUtils/after.js +10 -13
  178. package/lib/utils/promiseUtils/afterReturn.js +10 -13
  179. package/lib/utils/promiseUtils/index.js +15 -17
  180. package/lib/utils/promiseUtils/isPromise.js +6 -9
  181. package/lib/utils/promiseUtils/map.js +75 -89
  182. package/lib/utils/promiseUtils/mapAfterAllReturn.js +17 -23
  183. package/lib/utils/promiseUtils/try.js +15 -18
  184. package/lib/utils/resolveModel.js +91 -94
  185. package/lib/utils/tmpColumnUtils.js +4 -13
  186. package/package.json +50 -23
  187. package/typings/objection/index.d.mts +362 -0
  188. package/typings/objection/index.d.ts +36 -9
  189. package/lib/.eslintrc.json +0 -8
  190. package/lib/queryBuilder/parsers/jsonFieldExpressionParser.pegjs +0 -97
  191. package/lib/queryBuilder/parsers/relationExpressionParser.pegjs +0 -141
  192. package/lib/utils/clone.js +0 -2329
@@ -1,236 +1,199 @@
1
1
  'use strict';
2
-
3
2
  const { isObject, asArray, asSingle, uniqBy } = require('../utils/objectUtils');
4
3
  const { normalizeIds } = require('../utils/normalizeIds');
5
-
6
4
  const Type = {
7
- Models: 'Models',
8
- Reference: 'Reference',
9
- QueryBuilder: 'QueryBuilder',
10
- Identifiers: 'Identifiers',
5
+ Models: 'Models',
6
+ Reference: 'Reference',
7
+ QueryBuilder: 'QueryBuilder',
8
+ Identifiers: 'Identifiers',
11
9
  };
12
-
13
10
  class RelationOwner {
14
- constructor(owner) {
15
- this.owner = owner;
16
- this.type = detectType(owner);
17
- }
18
-
19
- static create(owner) {
20
- return new RelationOwner(owner);
21
- }
22
-
23
- static createParentReference(builder, relation) {
24
- return this.create(relation.ownerProp.refs(findFirstNonPartialAncestorQuery(builder)));
25
- }
26
-
27
- get isModels() {
28
- return this.type === Type.Models;
29
- }
30
-
31
- get isReference() {
32
- return this.type === Type.Reference;
33
- }
34
-
35
- get isQueryBuilder() {
36
- return this.type === Type.QueryBuilder;
37
- }
38
-
39
- get isIdentifiers() {
40
- return this.type === Type.Identifiers;
41
- }
42
-
43
- get modelArray() {
44
- return asArray(this.owner);
45
- }
46
-
47
- get model() {
48
- return asSingle(this.owner);
49
- }
50
-
51
- get reference() {
52
- return this.owner;
53
- }
54
-
55
- get queryBuilder() {
56
- return this.owner;
57
- }
58
-
59
- get identifiers() {
60
- return this.owner;
61
- }
62
-
63
- buildFindQuery(builder, relation, relatedRefs) {
64
- if (this.isReference) {
65
- relatedRefs.forEach((relatedRef, i) => {
66
- builder.where(relatedRef, this.reference[i]);
67
- });
68
- } else if (this.isModels || this.isIdentifiers || this.isQueryBuilder) {
69
- const values = this.getProps(relation);
70
-
71
- if (values) {
72
- builder.whereInComposite(relatedRefs, values);
73
- } else {
74
- builder.where(false).resolve([]);
75
- }
76
- } else {
77
- builder.where(false).resolve([]);
78
- }
79
-
80
- return builder;
81
- }
82
-
83
- getProps(relation, ownerProp = relation.ownerProp) {
84
- if (this.isModels) {
85
- return this._getPropsFromModels(ownerProp);
86
- } else if (this.isIdentifiers) {
87
- return this._getPropsFromIdentifiers(relation, ownerProp);
88
- } else if (this.isQueryBuilder) {
89
- return this._getPropsFromQuery(relation, ownerProp);
90
- }
91
- }
92
-
93
- getSplitProps(builder, relation, ownerProp = relation.ownerProp) {
94
- const values = this.getProps(relation, relation.ownerProp);
95
-
96
- if (isQueryBuilder(values)) {
97
- if (ownerProp.size === 1) {
98
- return [[values]];
99
- } else {
100
- // For composite keys, we need to create a query builder for each
101
- // key. Each query builder only select that key.
102
- return [
103
- Array.from({ length: ownerProp.size }).map((_, i) => {
104
- return values.clone().clearSelect().select(ownerProp.ref(builder, i));
105
- }),
106
- ];
107
- }
108
- } else {
109
- return values;
110
- }
111
- }
112
-
113
- getNormalizedIdentifiers(ownerProp) {
114
- return normalizeIds(this.identifiers, ownerProp, {
115
- arrayOutput: true,
116
- });
117
- }
118
-
119
- _getPropsFromModels(ownerProp) {
120
- const props = this.modelArray.map((owner) => ownerProp.getProps(owner));
121
-
122
- if (!containsNonNull(props)) {
123
- return null;
124
- }
125
-
126
- return uniqBy(props, join);
127
- }
128
-
129
- _getPropsFromIdentifiers(relation, ownerProp) {
130
- const ids = this.getNormalizedIdentifiers(ownerProp);
131
-
132
- if (isIdProp(ownerProp)) {
133
- return ids;
134
- } else {
135
- const query = relation.ownerModelClass.query();
136
-
137
- query.findByIds(ids);
138
- query.select(ownerProp.refs(query));
139
-
140
- return query;
141
- }
142
- }
143
-
144
- _getPropsFromQuery(relation, ownerProp) {
145
- const query = this.queryBuilder.clone();
146
-
147
- if (isOwnerModelClassQuery(query, relation)) {
148
- query.clearSelect();
149
- query.select(ownerProp.refs(query));
150
- }
151
-
152
- return query;
153
- }
11
+ constructor(owner) {
12
+ this.owner = owner;
13
+ this.type = detectType(owner);
14
+ }
15
+ static create(owner) {
16
+ return new RelationOwner(owner);
17
+ }
18
+ static createParentReference(builder, relation) {
19
+ return this.create(relation.ownerProp.refs(findFirstNonPartialAncestorQuery(builder)));
20
+ }
21
+ get isModels() {
22
+ return this.type === Type.Models;
23
+ }
24
+ get isReference() {
25
+ return this.type === Type.Reference;
26
+ }
27
+ get isQueryBuilder() {
28
+ return this.type === Type.QueryBuilder;
29
+ }
30
+ get isIdentifiers() {
31
+ return this.type === Type.Identifiers;
32
+ }
33
+ get modelArray() {
34
+ return asArray(this.owner);
35
+ }
36
+ get model() {
37
+ return asSingle(this.owner);
38
+ }
39
+ get reference() {
40
+ return this.owner;
41
+ }
42
+ get queryBuilder() {
43
+ return this.owner;
44
+ }
45
+ get identifiers() {
46
+ return this.owner;
47
+ }
48
+ buildFindQuery(builder, relation, relatedRefs) {
49
+ if (this.isReference) {
50
+ relatedRefs.forEach((relatedRef, i) => {
51
+ builder.where(relatedRef, this.reference[i]);
52
+ });
53
+ }
54
+ else if (this.isModels || this.isIdentifiers || this.isQueryBuilder) {
55
+ const values = this.getProps(relation);
56
+ if (values) {
57
+ builder.whereInComposite(relatedRefs, values);
58
+ }
59
+ else {
60
+ builder.where(false).resolve([]);
61
+ }
62
+ }
63
+ else {
64
+ builder.where(false).resolve([]);
65
+ }
66
+ return builder;
67
+ }
68
+ getProps(relation, ownerProp = relation.ownerProp) {
69
+ if (this.isModels) {
70
+ return this._getPropsFromModels(ownerProp);
71
+ }
72
+ else if (this.isIdentifiers) {
73
+ return this._getPropsFromIdentifiers(relation, ownerProp);
74
+ }
75
+ else if (this.isQueryBuilder) {
76
+ return this._getPropsFromQuery(relation, ownerProp);
77
+ }
78
+ }
79
+ getSplitProps(builder, relation, ownerProp = relation.ownerProp) {
80
+ const values = this.getProps(relation, relation.ownerProp);
81
+ if (isQueryBuilder(values)) {
82
+ if (ownerProp.size === 1) {
83
+ return [[values]];
84
+ }
85
+ else {
86
+ // For composite keys, we need to create a query builder for each
87
+ // key. Each query builder only select that key.
88
+ return [
89
+ Array.from({ length: ownerProp.size }).map((_, i) => {
90
+ return values.clone().clearSelect().select(ownerProp.ref(builder, i));
91
+ }),
92
+ ];
93
+ }
94
+ }
95
+ else {
96
+ return values;
97
+ }
98
+ }
99
+ getNormalizedIdentifiers(ownerProp) {
100
+ return normalizeIds(this.identifiers, ownerProp, {
101
+ arrayOutput: true,
102
+ });
103
+ }
104
+ _getPropsFromModels(ownerProp) {
105
+ const props = this.modelArray.map((owner) => ownerProp.getProps(owner));
106
+ if (!containsNonNull(props)) {
107
+ return null;
108
+ }
109
+ return uniqBy(props, join);
110
+ }
111
+ _getPropsFromIdentifiers(relation, ownerProp) {
112
+ const ids = this.getNormalizedIdentifiers(ownerProp);
113
+ if (isIdProp(ownerProp)) {
114
+ return ids;
115
+ }
116
+ else {
117
+ const query = relation.ownerModelClass.query();
118
+ query.findByIds(ids);
119
+ query.select(ownerProp.refs(query));
120
+ return query;
121
+ }
122
+ }
123
+ _getPropsFromQuery(relation, ownerProp) {
124
+ const query = this.queryBuilder.clone();
125
+ if (isOwnerModelClassQuery(query, relation)) {
126
+ query.clearSelect();
127
+ query.select(ownerProp.refs(query));
128
+ }
129
+ return query;
130
+ }
154
131
  }
155
-
156
132
  function detectType(owner) {
157
- if (isModel(owner) || isModelArray(owner)) {
158
- return Type.Models;
159
- } else if (isReferenceArray(owner)) {
160
- return Type.Reference;
161
- } else if (isQueryBuilder(owner)) {
162
- return Type.QueryBuilder;
163
- } else {
164
- return Type.Identifiers;
165
- }
133
+ if (isModel(owner) || isModelArray(owner)) {
134
+ return Type.Models;
135
+ }
136
+ else if (isReferenceArray(owner)) {
137
+ return Type.Reference;
138
+ }
139
+ else if (isQueryBuilder(owner)) {
140
+ return Type.QueryBuilder;
141
+ }
142
+ else {
143
+ return Type.Identifiers;
144
+ }
166
145
  }
167
-
168
146
  function isModel(item) {
169
- return isObject(item) && !!item.$isObjectionModel;
147
+ return isObject(item) && !!item.$isObjectionModel;
170
148
  }
171
-
172
149
  function isModelArray(item) {
173
- return Array.isArray(item) && isModel(item[0]);
150
+ return Array.isArray(item) && isModel(item[0]);
174
151
  }
175
-
176
152
  function isReference(item) {
177
- return isObject(item) && !!item.isObjectionReferenceBuilder;
153
+ return isObject(item) && !!item.isObjectionReferenceBuilder;
178
154
  }
179
-
180
155
  function isReferenceArray(item) {
181
- return Array.isArray(item) && isReference(item[0]);
156
+ return Array.isArray(item) && isReference(item[0]);
182
157
  }
183
-
184
158
  function isQueryBuilder(item) {
185
- return isObject(item) && !!item.isObjectionQueryBuilder;
159
+ return isObject(item) && !!item.isObjectionQueryBuilder;
186
160
  }
187
-
188
161
  function findFirstNonPartialAncestorQuery(builder) {
189
- builder = builder.parentQuery();
190
- if (!builder)
191
- throw Error(
192
- 'query method `for` ommitted outside a subquery, can not figure out relation target',
193
- );
194
- while (builder.isPartial()) {
195
- if (!builder.parentQuery()) {
196
- break;
197
- }
198
-
199
162
  builder = builder.parentQuery();
200
- }
201
-
202
- return builder;
163
+ if (!builder)
164
+ throw Error('query method `for` ommitted outside a subquery, can not figure out relation target');
165
+ while (builder.isPartial()) {
166
+ if (!builder.parentQuery()) {
167
+ break;
168
+ }
169
+ builder = builder.parentQuery();
170
+ }
171
+ return builder;
203
172
  }
204
-
205
173
  function containsNonNull(arr) {
206
- for (let i = 0, l = arr.length; i < l; ++i) {
207
- const val = arr[i];
208
-
209
- if (Array.isArray(val)) {
210
- if (containsNonNull(val)) {
211
- return true;
212
- }
213
- } else if (val !== null && val !== undefined) {
214
- return true;
215
- }
216
- }
217
-
218
- return false;
174
+ for (let i = 0, l = arr.length; i < l; ++i) {
175
+ const val = arr[i];
176
+ if (Array.isArray(val)) {
177
+ if (containsNonNull(val)) {
178
+ return true;
179
+ }
180
+ }
181
+ else if (val !== null && val !== undefined) {
182
+ return true;
183
+ }
184
+ }
185
+ return false;
219
186
  }
220
-
221
187
  function join(id) {
222
- return id.map((x) => (Buffer.isBuffer(x) ? x.toString('hex') : x)).join(',');
188
+ return id.map((x) => (Buffer.isBuffer(x) ? x.toString('hex') : x)).join(',');
223
189
  }
224
-
225
190
  function isIdProp(relationProp) {
226
- const idProp = relationProp.modelClass.getIdRelationProperty();
227
- return idProp.props.every((prop, i) => prop === relationProp.props[i]);
191
+ const idProp = relationProp.modelClass.getIdRelationProperty();
192
+ return idProp.props.every((prop, i) => prop === relationProp.props[i]);
228
193
  }
229
-
230
194
  function isOwnerModelClassQuery(query, relation) {
231
- return query.modelClass().getTableName() === relation.ownerModelClass.getTableName();
195
+ return query.modelClass().getTableName() === relation.ownerModelClass.getTableName();
232
196
  }
233
-
234
197
  module.exports = {
235
- RelationOwner,
198
+ RelationOwner,
236
199
  };