@rvoh/dream 0.45.4 → 0.46.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 (191) hide show
  1. package/dist/cjs/src/Dream.js +8 -8
  2. package/dist/cjs/src/dream/DreamClassTransactionBuilder.js +4 -4
  3. package/dist/cjs/src/dream/DreamInstanceTransactionBuilder.js +4 -4
  4. package/dist/cjs/src/dream/LeftJoinLoadBuilder.js +2 -2
  5. package/dist/cjs/src/dream/LoadBuilder.js +2 -2
  6. package/dist/cjs/src/dream/Query.js +4 -4
  7. package/dist/cjs/src/dream/internal/convertDreamClassAndAssociationNameTupleArrayToPreloadArgs.js +1 -1
  8. package/dist/esm/src/Dream.js +8 -8
  9. package/dist/esm/src/dream/DreamClassTransactionBuilder.js +4 -4
  10. package/dist/esm/src/dream/DreamInstanceTransactionBuilder.js +4 -4
  11. package/dist/esm/src/dream/LeftJoinLoadBuilder.js +2 -2
  12. package/dist/esm/src/dream/LoadBuilder.js +2 -2
  13. package/dist/esm/src/dream/Query.js +4 -4
  14. package/dist/esm/src/dream/internal/convertDreamClassAndAssociationNameTupleArrayToPreloadArgs.js +1 -1
  15. package/dist/types/src/Dream.d.ts +8 -8
  16. package/dist/types/src/dream/DreamClassTransactionBuilder.d.ts +4 -4
  17. package/dist/types/src/dream/DreamInstanceTransactionBuilder.d.ts +4 -4
  18. package/dist/types/src/dream/LeftJoinLoadBuilder.d.ts +2 -2
  19. package/dist/types/src/dream/LoadBuilder.d.ts +2 -2
  20. package/dist/types/src/dream/Query.d.ts +4 -4
  21. package/dist/types/src/types/query.d.ts +1 -1
  22. package/dist/types/src/types/query.ts +2 -2
  23. package/docs/classes/Benchmark.html +2 -2
  24. package/docs/classes/CalendarDate.html +2 -2
  25. package/docs/classes/CreateOrFindByFailedToCreateAndFind.html +3 -3
  26. package/docs/classes/Decorators.html +19 -19
  27. package/docs/classes/Dream.html +140 -140
  28. package/docs/classes/DreamApp.html +4 -4
  29. package/docs/classes/DreamBin.html +2 -2
  30. package/docs/classes/DreamCLI.html +4 -4
  31. package/docs/classes/DreamImporter.html +2 -2
  32. package/docs/classes/DreamLogos.html +2 -2
  33. package/docs/classes/DreamMigrationHelpers.html +7 -7
  34. package/docs/classes/DreamSerializerBuilder.html +8 -8
  35. package/docs/classes/DreamTransaction.html +2 -2
  36. package/docs/classes/Encrypt.html +2 -2
  37. package/docs/classes/Env.html +2 -2
  38. package/docs/classes/GlobalNameNotSet.html +3 -3
  39. package/docs/classes/NonLoadedAssociation.html +3 -3
  40. package/docs/classes/ObjectSerializerBuilder.html +8 -8
  41. package/docs/classes/Query.html +62 -62
  42. package/docs/classes/Range.html +2 -2
  43. package/docs/classes/RecordNotFound.html +3 -3
  44. package/docs/classes/ValidationError.html +3 -3
  45. package/docs/functions/DreamSerializer.html +1 -1
  46. package/docs/functions/ObjectSerializer.html +1 -1
  47. package/docs/functions/ReplicaSafe.html +1 -1
  48. package/docs/functions/STI.html +1 -1
  49. package/docs/functions/SoftDelete.html +1 -1
  50. package/docs/functions/camelize.html +1 -1
  51. package/docs/functions/capitalize.html +1 -1
  52. package/docs/functions/cloneDeepSafe.html +1 -1
  53. package/docs/functions/closeAllDbConnections.html +1 -1
  54. package/docs/functions/compact.html +1 -1
  55. package/docs/functions/dreamDbConnections.html +1 -1
  56. package/docs/functions/dreamPath.html +1 -1
  57. package/docs/functions/expandStiClasses.html +1 -1
  58. package/docs/functions/generateDream.html +1 -1
  59. package/docs/functions/globalClassNameFromFullyQualifiedModelName.html +1 -1
  60. package/docs/functions/groupBy.html +1 -1
  61. package/docs/functions/hyphenize.html +1 -1
  62. package/docs/functions/inferSerializerFromDreamOrViewModel.html +1 -1
  63. package/docs/functions/inferSerializersFromDreamClassOrViewModelClass.html +1 -1
  64. package/docs/functions/intersection.html +1 -1
  65. package/docs/functions/isDreamSerializer.html +1 -1
  66. package/docs/functions/isEmpty.html +1 -1
  67. package/docs/functions/loadRepl.html +1 -1
  68. package/docs/functions/lookupClassByGlobalName.html +1 -1
  69. package/docs/functions/normalizeUnicode.html +1 -1
  70. package/docs/functions/pascalize.html +1 -1
  71. package/docs/functions/pgErrorType.html +1 -1
  72. package/docs/functions/range-1.html +1 -1
  73. package/docs/functions/relativeDreamPath.html +1 -1
  74. package/docs/functions/round.html +1 -1
  75. package/docs/functions/serializerNameFromFullyQualifiedModelName.html +1 -1
  76. package/docs/functions/sharedPathPrefix.html +1 -1
  77. package/docs/functions/snakeify.html +1 -1
  78. package/docs/functions/sort.html +1 -1
  79. package/docs/functions/sortBy.html +1 -1
  80. package/docs/functions/sortObjectByKey.html +1 -1
  81. package/docs/functions/sortObjectByValue.html +1 -1
  82. package/docs/functions/standardizeFullyQualifiedModelName.html +1 -1
  83. package/docs/functions/uncapitalize.html +1 -1
  84. package/docs/functions/uniq.html +1 -1
  85. package/docs/functions/untypedDb.html +1 -1
  86. package/docs/functions/validateColumn.html +1 -1
  87. package/docs/functions/validateTable.html +1 -1
  88. package/docs/interfaces/BelongsToStatement.html +2 -2
  89. package/docs/interfaces/DecoratorContext.html +2 -2
  90. package/docs/interfaces/DreamAppInitOptions.html +2 -2
  91. package/docs/interfaces/DreamAppOpts.html +2 -2
  92. package/docs/interfaces/EncryptOptions.html +2 -2
  93. package/docs/interfaces/InternalAnyTypedSerializerRendersMany.html +2 -2
  94. package/docs/interfaces/InternalAnyTypedSerializerRendersOne.html +2 -2
  95. package/docs/interfaces/OpenapiDescription.html +2 -2
  96. package/docs/interfaces/OpenapiSchemaProperties.html +1 -1
  97. package/docs/interfaces/OpenapiSchemaPropertiesShorthand.html +1 -1
  98. package/docs/interfaces/OpenapiTypeFieldObject.html +1 -1
  99. package/docs/interfaces/SerializerRendererOpts.html +2 -2
  100. package/docs/types/Camelized.html +1 -1
  101. package/docs/types/CommonOpenapiSchemaObjectFields.html +1 -1
  102. package/docs/types/DateTime.html +1 -1
  103. package/docs/types/DbConnectionType.html +1 -1
  104. package/docs/types/DbTypes.html +1 -1
  105. package/docs/types/DreamAssociationMetadata.html +1 -1
  106. package/docs/types/DreamAttributes.html +1 -1
  107. package/docs/types/DreamClassAssociationAndStatement.html +1 -1
  108. package/docs/types/DreamClassColumn.html +1 -1
  109. package/docs/types/DreamColumn.html +1 -1
  110. package/docs/types/DreamColumnNames.html +1 -1
  111. package/docs/types/DreamLogLevel.html +1 -1
  112. package/docs/types/DreamLogger.html +1 -1
  113. package/docs/types/DreamModelSerializerType.html +1 -1
  114. package/docs/types/DreamOrViewModelClassSerializerKey.html +1 -1
  115. package/docs/types/DreamOrViewModelSerializerKey.html +1 -1
  116. package/docs/types/DreamParamSafeAttributes.html +1 -1
  117. package/docs/types/DreamParamSafeColumnNames.html +1 -1
  118. package/docs/types/DreamSerializable.html +1 -1
  119. package/docs/types/DreamSerializableArray.html +1 -1
  120. package/docs/types/DreamSerializerKey.html +1 -1
  121. package/docs/types/DreamSerializers.html +1 -1
  122. package/docs/types/DreamTableSchema.html +1 -1
  123. package/docs/types/DreamVirtualColumns.html +1 -1
  124. package/docs/types/EncryptAlgorithm.html +1 -1
  125. package/docs/types/HasManyStatement.html +1 -1
  126. package/docs/types/HasOneStatement.html +1 -1
  127. package/docs/types/Hyphenized.html +1 -1
  128. package/docs/types/IdType.html +1 -1
  129. package/docs/types/OpenapiAllTypes.html +1 -1
  130. package/docs/types/OpenapiFormats.html +1 -1
  131. package/docs/types/OpenapiNumberFormats.html +1 -1
  132. package/docs/types/OpenapiPrimitiveBaseTypes.html +1 -1
  133. package/docs/types/OpenapiPrimitiveTypes.html +1 -1
  134. package/docs/types/OpenapiSchemaArray.html +1 -1
  135. package/docs/types/OpenapiSchemaArrayShorthand.html +1 -1
  136. package/docs/types/OpenapiSchemaBase.html +1 -1
  137. package/docs/types/OpenapiSchemaBody.html +1 -1
  138. package/docs/types/OpenapiSchemaBodyShorthand.html +1 -1
  139. package/docs/types/OpenapiSchemaCommonFields.html +1 -1
  140. package/docs/types/OpenapiSchemaExpressionAllOf.html +1 -1
  141. package/docs/types/OpenapiSchemaExpressionAnyOf.html +1 -1
  142. package/docs/types/OpenapiSchemaExpressionOneOf.html +1 -1
  143. package/docs/types/OpenapiSchemaExpressionRef.html +1 -1
  144. package/docs/types/OpenapiSchemaExpressionRefSchemaShorthand.html +1 -1
  145. package/docs/types/OpenapiSchemaInteger.html +1 -1
  146. package/docs/types/OpenapiSchemaNull.html +1 -1
  147. package/docs/types/OpenapiSchemaNumber.html +1 -1
  148. package/docs/types/OpenapiSchemaObject.html +1 -1
  149. package/docs/types/OpenapiSchemaObjectAllOf.html +1 -1
  150. package/docs/types/OpenapiSchemaObjectAllOfShorthand.html +1 -1
  151. package/docs/types/OpenapiSchemaObjectAnyOf.html +1 -1
  152. package/docs/types/OpenapiSchemaObjectAnyOfShorthand.html +1 -1
  153. package/docs/types/OpenapiSchemaObjectBase.html +1 -1
  154. package/docs/types/OpenapiSchemaObjectBaseShorthand.html +1 -1
  155. package/docs/types/OpenapiSchemaObjectOneOf.html +1 -1
  156. package/docs/types/OpenapiSchemaObjectOneOfShorthand.html +1 -1
  157. package/docs/types/OpenapiSchemaObjectShorthand.html +1 -1
  158. package/docs/types/OpenapiSchemaPrimitiveGeneric.html +1 -1
  159. package/docs/types/OpenapiSchemaShorthandExpressionAllOf.html +1 -1
  160. package/docs/types/OpenapiSchemaShorthandExpressionAnyOf.html +1 -1
  161. package/docs/types/OpenapiSchemaShorthandExpressionOneOf.html +1 -1
  162. package/docs/types/OpenapiSchemaShorthandExpressionSerializableRef.html +1 -1
  163. package/docs/types/OpenapiSchemaShorthandExpressionSerializerRef.html +1 -1
  164. package/docs/types/OpenapiSchemaShorthandPrimitiveGeneric.html +1 -1
  165. package/docs/types/OpenapiSchemaString.html +1 -1
  166. package/docs/types/OpenapiShorthandAllTypes.html +1 -1
  167. package/docs/types/OpenapiShorthandPrimitiveBaseTypes.html +1 -1
  168. package/docs/types/OpenapiShorthandPrimitiveTypes.html +1 -1
  169. package/docs/types/OpenapiTypeField.html +1 -1
  170. package/docs/types/Pascalized.html +1 -1
  171. package/docs/types/PrimaryKeyType.html +1 -1
  172. package/docs/types/RoundingPrecision.html +1 -1
  173. package/docs/types/SerializerCasing.html +1 -1
  174. package/docs/types/SimpleObjectSerializerType.html +1 -1
  175. package/docs/types/Snakeified.html +1 -1
  176. package/docs/types/Timestamp.html +1 -1
  177. package/docs/types/UpdateableAssociationProperties.html +1 -1
  178. package/docs/types/UpdateableProperties.html +1 -1
  179. package/docs/types/ValidationType.html +1 -1
  180. package/docs/types/ViewModel.html +1 -1
  181. package/docs/types/ViewModelClass.html +1 -1
  182. package/docs/types/WhereStatementForDream.html +1 -1
  183. package/docs/types/WhereStatementForDreamClass.html +1 -1
  184. package/docs/variables/DateTime-1.html +1 -1
  185. package/docs/variables/DreamConst.html +1 -1
  186. package/docs/variables/TRIGRAM_OPERATORS.html +1 -1
  187. package/docs/variables/openapiPrimitiveTypes-1.html +1 -1
  188. package/docs/variables/openapiShorthandPrimitiveTypes-1.html +1 -1
  189. package/docs/variables/ops.html +1 -1
  190. package/docs/variables/primaryKeyTypes.html +1 -1
  191. package/package.json +1 -1
@@ -1151,14 +1151,14 @@ class Dream {
1151
1151
  * await User.preloadFor('summary').all()
1152
1152
  *
1153
1153
  * // Add where conditions to specific associations during preloading:
1154
- * await User.preloadFor('default', (dreamClass, associationName) => {
1154
+ * await User.preloadFor('default', (associationName, dreamClass) => {
1155
1155
  * if (dreamClass.typeof(Post) && associationName === 'comments') {
1156
1156
  * return { and: { published: true } }
1157
1157
  * }
1158
1158
  * }).all()
1159
1159
  *
1160
1160
  * // Skip preloading specific associations to handle them manually:
1161
- * await User.preloadFor('summary', (dreamClass, associationName) => {
1161
+ * await User.preloadFor('summary', (associationName, dreamClass) => {
1162
1162
  * if (dreamClass.typeof(User) && associationName === 'posts') {
1163
1163
  * return 'omit' // Handle posts preloading separately with custom logic
1164
1164
  * }
@@ -1201,14 +1201,14 @@ class Dream {
1201
1201
  * await User.leftJoinPreloadFor('summary').all()
1202
1202
  *
1203
1203
  * // Add where conditions to specific associations during left join preloading:
1204
- * await User.leftJoinPreloadFor('detailed', (dreamClass, associationName) => {
1204
+ * await User.leftJoinPreloadFor('detailed', (associationName, dreamClass) => {
1205
1205
  * if (dreamClass.typeof(Post) && associationName === 'comments') {
1206
1206
  * return { and: { published: true } }
1207
1207
  * }
1208
1208
  * }).all()
1209
1209
  *
1210
1210
  * // Skip left join preloading specific associations to handle them manually:
1211
- * await User.leftJoinPreloadFor('summary', (dreamClass, associationName) => {
1211
+ * await User.leftJoinPreloadFor('summary', (associationName, dreamClass) => {
1212
1212
  * if (dreamClass.typeof(User) && associationName === 'posts') {
1213
1213
  * return 'omit' // Handle posts preloading separately with custom logic
1214
1214
  * }
@@ -3092,7 +3092,7 @@ class Dream {
3092
3092
  * await user.loadFor('summary').execute()
3093
3093
  *
3094
3094
  * // Add where conditions to specific associations during preloading:
3095
- * await user.loadFor('detailed', (dreamClass, associationName) => {
3095
+ * await user.loadFor('detailed', (associationName, dreamClass) => {
3096
3096
  * if (dreamClass.typeof(Post) && associationName === 'comments') {
3097
3097
  * return { and: { published: true } }
3098
3098
  * }
@@ -3101,7 +3101,7 @@ class Dream {
3101
3101
  *
3102
3102
  * // Skip preloading specific associations to handle them manually:
3103
3103
  * await user
3104
- * .loadFor('summary', (dreamClass, associationName) => {
3104
+ * .loadFor('summary', (associationName, dreamClass) => {
3105
3105
  * if (dreamClass.typeof(User) && associationName === 'posts') {
3106
3106
  * return 'omit' // Handle posts preloading separately with custom logic
3107
3107
  * }
@@ -3174,7 +3174,7 @@ class Dream {
3174
3174
  * await user.leftJoinLoadFor('summary').execute()
3175
3175
  *
3176
3176
  * // Add where conditions to specific associations during preloading:
3177
- * await user.leftJoinLoadFor('detailed', (dreamClass, associationName) => {
3177
+ * await user.leftJoinLoadFor('detailed', (associationName, dreamClass) => {
3178
3178
  * if (dreamClass.typeof(Post) && associationName === 'comments') {
3179
3179
  * return { and: { published: true } }
3180
3180
  * }
@@ -3183,7 +3183,7 @@ class Dream {
3183
3183
  *
3184
3184
  * // Skip preloading specific associations to handle them manually:
3185
3185
  * await user
3186
- * .loadFor('summary', (dreamClass, associationName) => {
3186
+ * .loadFor('summary', (associationName, dreamClass) => {
3187
3187
  * if (dreamClass.typeof(User) && associationName === 'posts') {
3188
3188
  * return 'omit' // Handle posts preloading separately with custom logic
3189
3189
  * }
@@ -393,14 +393,14 @@ class DreamClassTransactionBuilder {
393
393
  * await User.preloadFor('summary').all()
394
394
  *
395
395
  * // Add where conditions to specific associations during preloading:
396
- * await User.txn(txn).leftJoinPreloadFor('detailed', (dreamClass, associationName) => {
396
+ * await User.txn(txn).leftJoinPreloadFor('detailed', (associationName, dreamClass) => {
397
397
  * if (dreamClass.typeof(Post) && associationName === 'comments') {
398
398
  * return { and: { published: true } }
399
399
  * }
400
400
  * }).all()
401
401
  *
402
402
  * // Skip preloading specific associations to handle them manually:
403
- * await User.txn(txn).leftJoinPreloadFor('summary', (dreamClass, associationName) => {
403
+ * await User.txn(txn).leftJoinPreloadFor('summary', (associationName, dreamClass) => {
404
404
  * if (dreamClass.typeof(User) && associationName === 'posts') {
405
405
  * return 'omit' // Handle posts preloading separately with custom logic
406
406
  * }
@@ -463,14 +463,14 @@ class DreamClassTransactionBuilder {
463
463
  * await User.preloadFor('summary').all()
464
464
  *
465
465
  * // Add where conditions to specific associations during preloading:
466
- * await User.txn(txn).preloadFor('detailed', (dreamClass, associationName) => {
466
+ * await User.txn(txn).preloadFor('detailed', (associationName, dreamClass) => {
467
467
  * if (dreamClass.typeof(Post) && associationName === 'comments') {
468
468
  * return { and: { published: true } }
469
469
  * }
470
470
  * }).all()
471
471
  *
472
472
  * // Skip preloading specific associations to handle them manually:
473
- * await User.txn(txn).preloadFor('summary', (dreamClass, associationName) => {
473
+ * await User.txn(txn).preloadFor('summary', (associationName, dreamClass) => {
474
474
  * if (dreamClass.typeof(User) && associationName === 'posts') {
475
475
  * return 'omit' // Handle posts preloading separately with custom logic
476
476
  * }
@@ -78,7 +78,7 @@ class DreamInstanceTransactionBuilder {
78
78
  * await user.loadFor('summary').execute()
79
79
  *
80
80
  * // Add where conditions to specific associations during preloading:
81
- * await user.txn(txn).loadFor('detailed', (dreamClass, associationName) => {
81
+ * await user.txn(txn).loadFor('detailed', (associationName, dreamClass) => {
82
82
  * if (dreamClass.typeof(Post) && associationName === 'comments') {
83
83
  * return { and: { published: true } }
84
84
  * }
@@ -88,7 +88,7 @@ class DreamInstanceTransactionBuilder {
88
88
  * // Skip preloading specific associations to handle them manually:
89
89
  * await user
90
90
  * .txn(txn)
91
- * .loadFor('summary', (dreamClass, associationName) => {
91
+ * .loadFor('summary', (associationName, dreamClass) => {
92
92
  * if (dreamClass.typeof(User) && associationName === 'posts') {
93
93
  * return 'omit' // Handle posts preloading separately with custom logic
94
94
  * }
@@ -162,7 +162,7 @@ class DreamInstanceTransactionBuilder {
162
162
  * await user.leftJoinLoadFor('summary').execute()
163
163
  *
164
164
  * // Add where conditions to specific associations during preloading:
165
- * await user.txn(txn).leftJoinLoadFor('detailed', (dreamClass, associationName) => {
165
+ * await user.txn(txn).leftJoinLoadFor('detailed', (associationName, dreamClass) => {
166
166
  * if (dreamClass.typeof(Post) && associationName === 'comments') {
167
167
  * return { and: { published: true } }
168
168
  * }
@@ -172,7 +172,7 @@ class DreamInstanceTransactionBuilder {
172
172
  * // Skip preloading specific associations to handle them manually:
173
173
  * await user
174
174
  * .txn(txn)
175
- * .leftJoinLoadFor('summary', (dreamClass, associationName) => {
175
+ * .leftJoinLoadFor('summary', (associationName, dreamClass) => {
176
176
  * if (dreamClass.typeof(User) && associationName === 'posts') {
177
177
  * return 'omit' // Handle posts preloading separately with custom logic
178
178
  * }
@@ -69,7 +69,7 @@ class LeftJoinLoadBuilder {
69
69
  * await user.leftJoinLoadFor('summary').execute()
70
70
  *
71
71
  * // Add where conditions to specific associations during preloading:
72
- * await user.leftJoinLoadFor('detailed', (dreamClass, associationName) => {
72
+ * await user.leftJoinLoadFor('detailed', (associationName, dreamClass) => {
73
73
  * if (dreamClass.typeof(Post) && associationName === 'comments') {
74
74
  * return { and: { published: true } }
75
75
  * }
@@ -78,7 +78,7 @@ class LeftJoinLoadBuilder {
78
78
  *
79
79
  * // Skip preloading specific associations to handle them manually:
80
80
  * await user
81
- * .leftJoinLoadFor('summary', (dreamClass, associationName) => {
81
+ * .leftJoinLoadFor('summary', (associationName, dreamClass) => {
82
82
  * if (dreamClass.typeof(User) && associationName === 'posts') {
83
83
  * return 'omit' // Handle posts preloading separately with custom logic
84
84
  * }
@@ -67,7 +67,7 @@ class LoadBuilder {
67
67
  * await user.loadFor('summary').execute()
68
68
  *
69
69
  * // Add where conditions to specific associations during preloading:
70
- * await user.loadFor('detailed', (dreamClass, associationName) => {
70
+ * await user.loadFor('detailed', (associationName, dreamClass) => {
71
71
  * if (dreamClass.typeof(Post) && associationName === 'comments') {
72
72
  * return { and: { published: true } }
73
73
  * }
@@ -76,7 +76,7 @@ class LoadBuilder {
76
76
  *
77
77
  * // Skip preloading specific associations to handle them manually:
78
78
  * await user
79
- * .loadFor('summary', (dreamClass, associationName) => {
79
+ * .loadFor('summary', (associationName, dreamClass) => {
80
80
  * if (dreamClass.typeof(User) && associationName === 'posts') {
81
81
  * return 'omit' // Handle posts preloading separately with custom logic
82
82
  * }
@@ -496,7 +496,7 @@ class Query {
496
496
  * await User.preloadFor('summary').all()
497
497
  *
498
498
  * // Add where conditions to specific associations during preloading:
499
- * await User.preloadFor('detailed', (dreamClass, associationName) => {
499
+ * await User.preloadFor('detailed', (associationName, dreamClass) => {
500
500
  * if (dreamClass.typeof(Post) && associationName === 'comments') {
501
501
  * return { and: { published: true } }
502
502
  * }
@@ -504,7 +504,7 @@ class Query {
504
504
  * .all()
505
505
  *
506
506
  * // Skip preloading specific associations to handle them manually:
507
- * await User.preloadFor('summary', (dreamClass, associationName) => {
507
+ * await User.preloadFor('summary', (associationName, dreamClass) => {
508
508
  * if (dreamClass.typeof(User) && associationName === 'posts') {
509
509
  * return 'omit' // Handle posts preloading separately with custom logic
510
510
  * }
@@ -552,7 +552,7 @@ class Query {
552
552
  * await User.leftJoinPreloadFor('summary').all()
553
553
  *
554
554
  * // Add where conditions to specific associations during left join preloading:
555
- * await User.leftJoinPreloadFor('detailed', (dreamClass, associationName) => {
555
+ * await User.leftJoinPreloadFor('detailed', (associationName, dreamClass) => {
556
556
  * if (dreamClass.typeof(Post) && associationName === 'comments') {
557
557
  * return { and: { published: true } }
558
558
  * }
@@ -560,7 +560,7 @@ class Query {
560
560
  * .all()
561
561
  *
562
562
  * // Skip left join preloading specific associations to handle them manually:
563
- * await User.leftJoinPreloadFor('summary', (dreamClass, associationName) => {
563
+ * await User.leftJoinPreloadFor('summary', (associationName, dreamClass) => {
564
564
  * if (dreamClass.typeof(User) && associationName === 'posts') {
565
565
  * return 'omit' // Handle posts preloading separately with custom logic
566
566
  * }
@@ -10,7 +10,7 @@ function convertDreamClassAndAssociationNameTupleArrayToPreloadArgs(dreamClassAn
10
10
  : dreamClassAndAssociationNameTuple[1];
11
11
  if (!modifierFn)
12
12
  return aliasedAssociationName;
13
- const modifier = modifierFn(dreamClassAndAssociationNameTuple[0], associationName);
13
+ const modifier = modifierFn(associationName, dreamClassAndAssociationNameTuple[0]);
14
14
  if (modifier === 'omit')
15
15
  return undefined;
16
16
  return [aliasedAssociationName, modifier];
@@ -1149,14 +1149,14 @@ export default class Dream {
1149
1149
  * await User.preloadFor('summary').all()
1150
1150
  *
1151
1151
  * // Add where conditions to specific associations during preloading:
1152
- * await User.preloadFor('default', (dreamClass, associationName) => {
1152
+ * await User.preloadFor('default', (associationName, dreamClass) => {
1153
1153
  * if (dreamClass.typeof(Post) && associationName === 'comments') {
1154
1154
  * return { and: { published: true } }
1155
1155
  * }
1156
1156
  * }).all()
1157
1157
  *
1158
1158
  * // Skip preloading specific associations to handle them manually:
1159
- * await User.preloadFor('summary', (dreamClass, associationName) => {
1159
+ * await User.preloadFor('summary', (associationName, dreamClass) => {
1160
1160
  * if (dreamClass.typeof(User) && associationName === 'posts') {
1161
1161
  * return 'omit' // Handle posts preloading separately with custom logic
1162
1162
  * }
@@ -1199,14 +1199,14 @@ export default class Dream {
1199
1199
  * await User.leftJoinPreloadFor('summary').all()
1200
1200
  *
1201
1201
  * // Add where conditions to specific associations during left join preloading:
1202
- * await User.leftJoinPreloadFor('detailed', (dreamClass, associationName) => {
1202
+ * await User.leftJoinPreloadFor('detailed', (associationName, dreamClass) => {
1203
1203
  * if (dreamClass.typeof(Post) && associationName === 'comments') {
1204
1204
  * return { and: { published: true } }
1205
1205
  * }
1206
1206
  * }).all()
1207
1207
  *
1208
1208
  * // Skip left join preloading specific associations to handle them manually:
1209
- * await User.leftJoinPreloadFor('summary', (dreamClass, associationName) => {
1209
+ * await User.leftJoinPreloadFor('summary', (associationName, dreamClass) => {
1210
1210
  * if (dreamClass.typeof(User) && associationName === 'posts') {
1211
1211
  * return 'omit' // Handle posts preloading separately with custom logic
1212
1212
  * }
@@ -3090,7 +3090,7 @@ export default class Dream {
3090
3090
  * await user.loadFor('summary').execute()
3091
3091
  *
3092
3092
  * // Add where conditions to specific associations during preloading:
3093
- * await user.loadFor('detailed', (dreamClass, associationName) => {
3093
+ * await user.loadFor('detailed', (associationName, dreamClass) => {
3094
3094
  * if (dreamClass.typeof(Post) && associationName === 'comments') {
3095
3095
  * return { and: { published: true } }
3096
3096
  * }
@@ -3099,7 +3099,7 @@ export default class Dream {
3099
3099
  *
3100
3100
  * // Skip preloading specific associations to handle them manually:
3101
3101
  * await user
3102
- * .loadFor('summary', (dreamClass, associationName) => {
3102
+ * .loadFor('summary', (associationName, dreamClass) => {
3103
3103
  * if (dreamClass.typeof(User) && associationName === 'posts') {
3104
3104
  * return 'omit' // Handle posts preloading separately with custom logic
3105
3105
  * }
@@ -3172,7 +3172,7 @@ export default class Dream {
3172
3172
  * await user.leftJoinLoadFor('summary').execute()
3173
3173
  *
3174
3174
  * // Add where conditions to specific associations during preloading:
3175
- * await user.leftJoinLoadFor('detailed', (dreamClass, associationName) => {
3175
+ * await user.leftJoinLoadFor('detailed', (associationName, dreamClass) => {
3176
3176
  * if (dreamClass.typeof(Post) && associationName === 'comments') {
3177
3177
  * return { and: { published: true } }
3178
3178
  * }
@@ -3181,7 +3181,7 @@ export default class Dream {
3181
3181
  *
3182
3182
  * // Skip preloading specific associations to handle them manually:
3183
3183
  * await user
3184
- * .loadFor('summary', (dreamClass, associationName) => {
3184
+ * .loadFor('summary', (associationName, dreamClass) => {
3185
3185
  * if (dreamClass.typeof(User) && associationName === 'posts') {
3186
3186
  * return 'omit' // Handle posts preloading separately with custom logic
3187
3187
  * }
@@ -391,14 +391,14 @@ export default class DreamClassTransactionBuilder {
391
391
  * await User.preloadFor('summary').all()
392
392
  *
393
393
  * // Add where conditions to specific associations during preloading:
394
- * await User.txn(txn).leftJoinPreloadFor('detailed', (dreamClass, associationName) => {
394
+ * await User.txn(txn).leftJoinPreloadFor('detailed', (associationName, dreamClass) => {
395
395
  * if (dreamClass.typeof(Post) && associationName === 'comments') {
396
396
  * return { and: { published: true } }
397
397
  * }
398
398
  * }).all()
399
399
  *
400
400
  * // Skip preloading specific associations to handle them manually:
401
- * await User.txn(txn).leftJoinPreloadFor('summary', (dreamClass, associationName) => {
401
+ * await User.txn(txn).leftJoinPreloadFor('summary', (associationName, dreamClass) => {
402
402
  * if (dreamClass.typeof(User) && associationName === 'posts') {
403
403
  * return 'omit' // Handle posts preloading separately with custom logic
404
404
  * }
@@ -461,14 +461,14 @@ export default class DreamClassTransactionBuilder {
461
461
  * await User.preloadFor('summary').all()
462
462
  *
463
463
  * // Add where conditions to specific associations during preloading:
464
- * await User.txn(txn).preloadFor('detailed', (dreamClass, associationName) => {
464
+ * await User.txn(txn).preloadFor('detailed', (associationName, dreamClass) => {
465
465
  * if (dreamClass.typeof(Post) && associationName === 'comments') {
466
466
  * return { and: { published: true } }
467
467
  * }
468
468
  * }).all()
469
469
  *
470
470
  * // Skip preloading specific associations to handle them manually:
471
- * await User.txn(txn).preloadFor('summary', (dreamClass, associationName) => {
471
+ * await User.txn(txn).preloadFor('summary', (associationName, dreamClass) => {
472
472
  * if (dreamClass.typeof(User) && associationName === 'posts') {
473
473
  * return 'omit' // Handle posts preloading separately with custom logic
474
474
  * }
@@ -76,7 +76,7 @@ export default class DreamInstanceTransactionBuilder {
76
76
  * await user.loadFor('summary').execute()
77
77
  *
78
78
  * // Add where conditions to specific associations during preloading:
79
- * await user.txn(txn).loadFor('detailed', (dreamClass, associationName) => {
79
+ * await user.txn(txn).loadFor('detailed', (associationName, dreamClass) => {
80
80
  * if (dreamClass.typeof(Post) && associationName === 'comments') {
81
81
  * return { and: { published: true } }
82
82
  * }
@@ -86,7 +86,7 @@ export default class DreamInstanceTransactionBuilder {
86
86
  * // Skip preloading specific associations to handle them manually:
87
87
  * await user
88
88
  * .txn(txn)
89
- * .loadFor('summary', (dreamClass, associationName) => {
89
+ * .loadFor('summary', (associationName, dreamClass) => {
90
90
  * if (dreamClass.typeof(User) && associationName === 'posts') {
91
91
  * return 'omit' // Handle posts preloading separately with custom logic
92
92
  * }
@@ -160,7 +160,7 @@ export default class DreamInstanceTransactionBuilder {
160
160
  * await user.leftJoinLoadFor('summary').execute()
161
161
  *
162
162
  * // Add where conditions to specific associations during preloading:
163
- * await user.txn(txn).leftJoinLoadFor('detailed', (dreamClass, associationName) => {
163
+ * await user.txn(txn).leftJoinLoadFor('detailed', (associationName, dreamClass) => {
164
164
  * if (dreamClass.typeof(Post) && associationName === 'comments') {
165
165
  * return { and: { published: true } }
166
166
  * }
@@ -170,7 +170,7 @@ export default class DreamInstanceTransactionBuilder {
170
170
  * // Skip preloading specific associations to handle them manually:
171
171
  * await user
172
172
  * .txn(txn)
173
- * .leftJoinLoadFor('summary', (dreamClass, associationName) => {
173
+ * .leftJoinLoadFor('summary', (associationName, dreamClass) => {
174
174
  * if (dreamClass.typeof(User) && associationName === 'posts') {
175
175
  * return 'omit' // Handle posts preloading separately with custom logic
176
176
  * }
@@ -67,7 +67,7 @@ export default class LeftJoinLoadBuilder {
67
67
  * await user.leftJoinLoadFor('summary').execute()
68
68
  *
69
69
  * // Add where conditions to specific associations during preloading:
70
- * await user.leftJoinLoadFor('detailed', (dreamClass, associationName) => {
70
+ * await user.leftJoinLoadFor('detailed', (associationName, dreamClass) => {
71
71
  * if (dreamClass.typeof(Post) && associationName === 'comments') {
72
72
  * return { and: { published: true } }
73
73
  * }
@@ -76,7 +76,7 @@ export default class LeftJoinLoadBuilder {
76
76
  *
77
77
  * // Skip preloading specific associations to handle them manually:
78
78
  * await user
79
- * .leftJoinLoadFor('summary', (dreamClass, associationName) => {
79
+ * .leftJoinLoadFor('summary', (associationName, dreamClass) => {
80
80
  * if (dreamClass.typeof(User) && associationName === 'posts') {
81
81
  * return 'omit' // Handle posts preloading separately with custom logic
82
82
  * }
@@ -65,7 +65,7 @@ export default class LoadBuilder {
65
65
  * await user.loadFor('summary').execute()
66
66
  *
67
67
  * // Add where conditions to specific associations during preloading:
68
- * await user.loadFor('detailed', (dreamClass, associationName) => {
68
+ * await user.loadFor('detailed', (associationName, dreamClass) => {
69
69
  * if (dreamClass.typeof(Post) && associationName === 'comments') {
70
70
  * return { and: { published: true } }
71
71
  * }
@@ -74,7 +74,7 @@ export default class LoadBuilder {
74
74
  *
75
75
  * // Skip preloading specific associations to handle them manually:
76
76
  * await user
77
- * .loadFor('summary', (dreamClass, associationName) => {
77
+ * .loadFor('summary', (associationName, dreamClass) => {
78
78
  * if (dreamClass.typeof(User) && associationName === 'posts') {
79
79
  * return 'omit' // Handle posts preloading separately with custom logic
80
80
  * }
@@ -494,7 +494,7 @@ export default class Query {
494
494
  * await User.preloadFor('summary').all()
495
495
  *
496
496
  * // Add where conditions to specific associations during preloading:
497
- * await User.preloadFor('detailed', (dreamClass, associationName) => {
497
+ * await User.preloadFor('detailed', (associationName, dreamClass) => {
498
498
  * if (dreamClass.typeof(Post) && associationName === 'comments') {
499
499
  * return { and: { published: true } }
500
500
  * }
@@ -502,7 +502,7 @@ export default class Query {
502
502
  * .all()
503
503
  *
504
504
  * // Skip preloading specific associations to handle them manually:
505
- * await User.preloadFor('summary', (dreamClass, associationName) => {
505
+ * await User.preloadFor('summary', (associationName, dreamClass) => {
506
506
  * if (dreamClass.typeof(User) && associationName === 'posts') {
507
507
  * return 'omit' // Handle posts preloading separately with custom logic
508
508
  * }
@@ -550,7 +550,7 @@ export default class Query {
550
550
  * await User.leftJoinPreloadFor('summary').all()
551
551
  *
552
552
  * // Add where conditions to specific associations during left join preloading:
553
- * await User.leftJoinPreloadFor('detailed', (dreamClass, associationName) => {
553
+ * await User.leftJoinPreloadFor('detailed', (associationName, dreamClass) => {
554
554
  * if (dreamClass.typeof(Post) && associationName === 'comments') {
555
555
  * return { and: { published: true } }
556
556
  * }
@@ -558,7 +558,7 @@ export default class Query {
558
558
  * .all()
559
559
  *
560
560
  * // Skip left join preloading specific associations to handle them manually:
561
- * await User.leftJoinPreloadFor('summary', (dreamClass, associationName) => {
561
+ * await User.leftJoinPreloadFor('summary', (associationName, dreamClass) => {
562
562
  * if (dreamClass.typeof(User) && associationName === 'posts') {
563
563
  * return 'omit' // Handle posts preloading separately with custom logic
564
564
  * }
@@ -7,7 +7,7 @@ export default function convertDreamClassAndAssociationNameTupleArrayToPreloadAr
7
7
  : dreamClassAndAssociationNameTuple[1];
8
8
  if (!modifierFn)
9
9
  return aliasedAssociationName;
10
- const modifier = modifierFn(dreamClassAndAssociationNameTuple[0], associationName);
10
+ const modifier = modifierFn(associationName, dreamClassAndAssociationNameTuple[0]);
11
11
  if (modifier === 'omit')
12
12
  return undefined;
13
13
  return [aliasedAssociationName, modifier];
@@ -874,14 +874,14 @@ export default class Dream {
874
874
  * await User.preloadFor('summary').all()
875
875
  *
876
876
  * // Add where conditions to specific associations during preloading:
877
- * await User.preloadFor('default', (dreamClass, associationName) => {
877
+ * await User.preloadFor('default', (associationName, dreamClass) => {
878
878
  * if (dreamClass.typeof(Post) && associationName === 'comments') {
879
879
  * return { and: { published: true } }
880
880
  * }
881
881
  * }).all()
882
882
  *
883
883
  * // Skip preloading specific associations to handle them manually:
884
- * await User.preloadFor('summary', (dreamClass, associationName) => {
884
+ * await User.preloadFor('summary', (associationName, dreamClass) => {
885
885
  * if (dreamClass.typeof(User) && associationName === 'posts') {
886
886
  * return 'omit' // Handle posts preloading separately with custom logic
887
887
  * }
@@ -931,14 +931,14 @@ export default class Dream {
931
931
  * await User.leftJoinPreloadFor('summary').all()
932
932
  *
933
933
  * // Add where conditions to specific associations during left join preloading:
934
- * await User.leftJoinPreloadFor('detailed', (dreamClass, associationName) => {
934
+ * await User.leftJoinPreloadFor('detailed', (associationName, dreamClass) => {
935
935
  * if (dreamClass.typeof(Post) && associationName === 'comments') {
936
936
  * return { and: { published: true } }
937
937
  * }
938
938
  * }).all()
939
939
  *
940
940
  * // Skip left join preloading specific associations to handle them manually:
941
- * await User.leftJoinPreloadFor('summary', (dreamClass, associationName) => {
941
+ * await User.leftJoinPreloadFor('summary', (associationName, dreamClass) => {
942
942
  * if (dreamClass.typeof(User) && associationName === 'posts') {
943
943
  * return 'omit' // Handle posts preloading separately with custom logic
944
944
  * }
@@ -2275,7 +2275,7 @@ export default class Dream {
2275
2275
  * await user.loadFor('summary').execute()
2276
2276
  *
2277
2277
  * // Add where conditions to specific associations during preloading:
2278
- * await user.loadFor('detailed', (dreamClass, associationName) => {
2278
+ * await user.loadFor('detailed', (associationName, dreamClass) => {
2279
2279
  * if (dreamClass.typeof(Post) && associationName === 'comments') {
2280
2280
  * return { and: { published: true } }
2281
2281
  * }
@@ -2284,7 +2284,7 @@ export default class Dream {
2284
2284
  *
2285
2285
  * // Skip preloading specific associations to handle them manually:
2286
2286
  * await user
2287
- * .loadFor('summary', (dreamClass, associationName) => {
2287
+ * .loadFor('summary', (associationName, dreamClass) => {
2288
2288
  * if (dreamClass.typeof(User) && associationName === 'posts') {
2289
2289
  * return 'omit' // Handle posts preloading separately with custom logic
2290
2290
  * }
@@ -2353,7 +2353,7 @@ export default class Dream {
2353
2353
  * await user.leftJoinLoadFor('summary').execute()
2354
2354
  *
2355
2355
  * // Add where conditions to specific associations during preloading:
2356
- * await user.leftJoinLoadFor('detailed', (dreamClass, associationName) => {
2356
+ * await user.leftJoinLoadFor('detailed', (associationName, dreamClass) => {
2357
2357
  * if (dreamClass.typeof(Post) && associationName === 'comments') {
2358
2358
  * return { and: { published: true } }
2359
2359
  * }
@@ -2362,7 +2362,7 @@ export default class Dream {
2362
2362
  *
2363
2363
  * // Skip preloading specific associations to handle them manually:
2364
2364
  * await user
2365
- * .loadFor('summary', (dreamClass, associationName) => {
2365
+ * .loadFor('summary', (associationName, dreamClass) => {
2366
2366
  * if (dreamClass.typeof(User) && associationName === 'posts') {
2367
2367
  * return 'omit' // Handle posts preloading separately with custom logic
2368
2368
  * }
@@ -360,14 +360,14 @@ export default class DreamClassTransactionBuilder<DreamClass extends typeof Drea
360
360
  * await User.preloadFor('summary').all()
361
361
  *
362
362
  * // Add where conditions to specific associations during preloading:
363
- * await User.txn(txn).leftJoinPreloadFor('detailed', (dreamClass, associationName) => {
363
+ * await User.txn(txn).leftJoinPreloadFor('detailed', (associationName, dreamClass) => {
364
364
  * if (dreamClass.typeof(Post) && associationName === 'comments') {
365
365
  * return { and: { published: true } }
366
366
  * }
367
367
  * }).all()
368
368
  *
369
369
  * // Skip preloading specific associations to handle them manually:
370
- * await User.txn(txn).leftJoinPreloadFor('summary', (dreamClass, associationName) => {
370
+ * await User.txn(txn).leftJoinPreloadFor('summary', (associationName, dreamClass) => {
371
371
  * if (dreamClass.typeof(User) && associationName === 'posts') {
372
372
  * return 'omit' // Handle posts preloading separately with custom logic
373
373
  * }
@@ -444,14 +444,14 @@ export default class DreamClassTransactionBuilder<DreamClass extends typeof Drea
444
444
  * await User.preloadFor('summary').all()
445
445
  *
446
446
  * // Add where conditions to specific associations during preloading:
447
- * await User.txn(txn).preloadFor('detailed', (dreamClass, associationName) => {
447
+ * await User.txn(txn).preloadFor('detailed', (associationName, dreamClass) => {
448
448
  * if (dreamClass.typeof(Post) && associationName === 'comments') {
449
449
  * return { and: { published: true } }
450
450
  * }
451
451
  * }).all()
452
452
  *
453
453
  * // Skip preloading specific associations to handle them manually:
454
- * await User.txn(txn).preloadFor('summary', (dreamClass, associationName) => {
454
+ * await User.txn(txn).preloadFor('summary', (associationName, dreamClass) => {
455
455
  * if (dreamClass.typeof(User) && associationName === 'posts') {
456
456
  * return 'omit' // Handle posts preloading separately with custom logic
457
457
  * }
@@ -63,7 +63,7 @@ export default class DreamInstanceTransactionBuilder<DreamInstance extends Dream
63
63
  * await user.loadFor('summary').execute()
64
64
  *
65
65
  * // Add where conditions to specific associations during preloading:
66
- * await user.txn(txn).loadFor('detailed', (dreamClass, associationName) => {
66
+ * await user.txn(txn).loadFor('detailed', (associationName, dreamClass) => {
67
67
  * if (dreamClass.typeof(Post) && associationName === 'comments') {
68
68
  * return { and: { published: true } }
69
69
  * }
@@ -73,7 +73,7 @@ export default class DreamInstanceTransactionBuilder<DreamInstance extends Dream
73
73
  * // Skip preloading specific associations to handle them manually:
74
74
  * await user
75
75
  * .txn(txn)
76
- * .loadFor('summary', (dreamClass, associationName) => {
76
+ * .loadFor('summary', (associationName, dreamClass) => {
77
77
  * if (dreamClass.typeof(User) && associationName === 'posts') {
78
78
  * return 'omit' // Handle posts preloading separately with custom logic
79
79
  * }
@@ -143,7 +143,7 @@ export default class DreamInstanceTransactionBuilder<DreamInstance extends Dream
143
143
  * await user.leftJoinLoadFor('summary').execute()
144
144
  *
145
145
  * // Add where conditions to specific associations during preloading:
146
- * await user.txn(txn).leftJoinLoadFor('detailed', (dreamClass, associationName) => {
146
+ * await user.txn(txn).leftJoinLoadFor('detailed', (associationName, dreamClass) => {
147
147
  * if (dreamClass.typeof(Post) && associationName === 'comments') {
148
148
  * return { and: { published: true } }
149
149
  * }
@@ -153,7 +153,7 @@ export default class DreamInstanceTransactionBuilder<DreamInstance extends Dream
153
153
  * // Skip preloading specific associations to handle them manually:
154
154
  * await user
155
155
  * .txn(txn)
156
- * .leftJoinLoadFor('summary', (dreamClass, associationName) => {
156
+ * .leftJoinLoadFor('summary', (associationName, dreamClass) => {
157
157
  * if (dreamClass.typeof(User) && associationName === 'posts') {
158
158
  * return 'omit' // Handle posts preloading separately with custom logic
159
159
  * }
@@ -55,7 +55,7 @@ export default class LeftJoinLoadBuilder<DreamInstance extends Dream> {
55
55
  * await user.leftJoinLoadFor('summary').execute()
56
56
  *
57
57
  * // Add where conditions to specific associations during preloading:
58
- * await user.leftJoinLoadFor('detailed', (dreamClass, associationName) => {
58
+ * await user.leftJoinLoadFor('detailed', (associationName, dreamClass) => {
59
59
  * if (dreamClass.typeof(Post) && associationName === 'comments') {
60
60
  * return { and: { published: true } }
61
61
  * }
@@ -64,7 +64,7 @@ export default class LeftJoinLoadBuilder<DreamInstance extends Dream> {
64
64
  *
65
65
  * // Skip preloading specific associations to handle them manually:
66
66
  * await user
67
- * .leftJoinLoadFor('summary', (dreamClass, associationName) => {
67
+ * .leftJoinLoadFor('summary', (associationName, dreamClass) => {
68
68
  * if (dreamClass.typeof(User) && associationName === 'posts') {
69
69
  * return 'omit' // Handle posts preloading separately with custom logic
70
70
  * }
@@ -55,7 +55,7 @@ export default class LoadBuilder<DreamInstance extends Dream> {
55
55
  * await user.loadFor('summary').execute()
56
56
  *
57
57
  * // Add where conditions to specific associations during preloading:
58
- * await user.loadFor('detailed', (dreamClass, associationName) => {
58
+ * await user.loadFor('detailed', (associationName, dreamClass) => {
59
59
  * if (dreamClass.typeof(Post) && associationName === 'comments') {
60
60
  * return { and: { published: true } }
61
61
  * }
@@ -64,7 +64,7 @@ export default class LoadBuilder<DreamInstance extends Dream> {
64
64
  *
65
65
  * // Skip preloading specific associations to handle them manually:
66
66
  * await user
67
- * .loadFor('summary', (dreamClass, associationName) => {
67
+ * .loadFor('summary', (associationName, dreamClass) => {
68
68
  * if (dreamClass.typeof(User) && associationName === 'posts') {
69
69
  * return 'omit' // Handle posts preloading separately with custom logic
70
70
  * }