@rapidrest/service-core 1.0.0-beta.5 → 1.0.0-rc.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 (180) hide show
  1. package/dist/lib/Server.js +20 -14
  2. package/dist/lib/Server.js.map +1 -1
  3. package/dist/lib/database/MongoRepository.js +22 -24
  4. package/dist/lib/database/MongoRepository.js.map +1 -1
  5. package/dist/lib/database/MongoSchemaSync.js +65 -20
  6. package/dist/lib/database/MongoSchemaSync.js.map +1 -1
  7. package/dist/lib/database/NamingUtils.js +4 -4
  8. package/dist/lib/database/NamingUtils.js.map +1 -1
  9. package/dist/lib/decorators/PersistenceDecorators.js +17 -17
  10. package/dist/lib/decorators/PersistenceDecorators.js.map +1 -1
  11. package/dist/lib/models/BaseEntity.js +1 -1
  12. package/dist/lib/models/BaseEntity.js.map +1 -1
  13. package/dist/lib/models/BaseMongoEntity.js +10 -3
  14. package/dist/lib/models/BaseMongoEntity.js.map +1 -1
  15. package/dist/lib/models/ModelUtils.js +31 -34
  16. package/dist/lib/models/ModelUtils.js.map +1 -1
  17. package/dist/lib/models/RecoverableBaseMongoEntity.js +11 -3
  18. package/dist/lib/models/RecoverableBaseMongoEntity.js.map +1 -1
  19. package/dist/lib/models/RepoUtils.js +54 -60
  20. package/dist/lib/models/RepoUtils.js.map +1 -1
  21. package/dist/lib/models/SimpleEntity.js +1 -1
  22. package/dist/lib/models/SimpleEntity.js.map +1 -1
  23. package/dist/lib/routes/ModelRoute.js +6 -15
  24. package/dist/lib/routes/ModelRoute.js.map +1 -1
  25. package/dist/lib/routes/RouteUtils.js +14 -6
  26. package/dist/lib/routes/RouteUtils.js.map +1 -1
  27. package/dist/lib/security/ACLUtils.js +43 -15
  28. package/dist/lib/security/ACLUtils.js.map +1 -1
  29. package/dist/types/database/MongoRepository.d.ts +17 -11
  30. package/dist/types/database/MongoSchemaSync.d.ts +22 -3
  31. package/dist/types/database/NamingUtils.d.ts +1 -1
  32. package/dist/types/decorators/PersistenceDecorators.d.ts +29 -3
  33. package/dist/types/models/ModelUtils.d.ts +3 -6
  34. package/dist/types/models/RepoUtils.d.ts +1 -7
  35. package/dist/types/routes/ModelRoute.d.ts +0 -4
  36. package/dist/types/security/ACLUtils.d.ts +3 -0
  37. package/docs/reference/@rapidrest/namespaces/DatabaseDecorators/functions/MongoRepository.md +1 -1
  38. package/docs/reference/@rapidrest/namespaces/DatabaseDecorators/functions/RedisConnection.md +1 -1
  39. package/docs/reference/@rapidrest/namespaces/DatabaseDecorators/functions/Repository.md +1 -1
  40. package/docs/reference/@rapidrest/namespaces/DocDecorators/functions/Default.md +1 -1
  41. package/docs/reference/@rapidrest/namespaces/DocDecorators/functions/Description.md +1 -1
  42. package/docs/reference/@rapidrest/namespaces/DocDecorators/functions/Document.md +1 -1
  43. package/docs/reference/@rapidrest/namespaces/DocDecorators/functions/Example.md +1 -1
  44. package/docs/reference/@rapidrest/namespaces/DocDecorators/functions/Format.md +1 -1
  45. package/docs/reference/@rapidrest/namespaces/DocDecorators/functions/Returns.md +1 -1
  46. package/docs/reference/@rapidrest/namespaces/DocDecorators/functions/Summary.md +1 -1
  47. package/docs/reference/@rapidrest/namespaces/DocDecorators/functions/Tags.md +1 -1
  48. package/docs/reference/@rapidrest/namespaces/DocDecorators/functions/TypeInfo.md +1 -1
  49. package/docs/reference/@rapidrest/namespaces/DocDecorators/interfaces/DocumentsData.md +7 -7
  50. package/docs/reference/@rapidrest/namespaces/EventDecorators/functions/EventListener.md +1 -1
  51. package/docs/reference/@rapidrest/namespaces/EventDecorators/functions/OnEvent.md +1 -1
  52. package/docs/reference/@rapidrest/namespaces/ModelDecorators/functions/Cache.md +1 -1
  53. package/docs/reference/@rapidrest/namespaces/ModelDecorators/functions/ChildEntity.md +2 -2
  54. package/docs/reference/@rapidrest/namespaces/ModelDecorators/functions/DataStore.md +1 -1
  55. package/docs/reference/@rapidrest/namespaces/ModelDecorators/functions/Identifier.md +1 -1
  56. package/docs/reference/@rapidrest/namespaces/ModelDecorators/functions/Protect.md +5 -5
  57. package/docs/reference/@rapidrest/namespaces/ModelDecorators/functions/Reference.md +1 -1
  58. package/docs/reference/@rapidrest/namespaces/ModelDecorators/functions/Shard.md +1 -1
  59. package/docs/reference/@rapidrest/namespaces/ModelDecorators/functions/TrackChanges.md +2 -2
  60. package/docs/reference/@rapidrest/namespaces/ModelDecorators/interfaces/PendingTypeOrmColumn.md +7 -7
  61. package/docs/reference/@rapidrest/namespaces/ModelDecorators/variables/pendingTypeOrmColumns.md +2 -2
  62. package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/README.md +2 -0
  63. package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/functions/Column.md +1 -1
  64. package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/functions/Entity.md +5 -6
  65. package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/functions/Index.md +3 -3
  66. package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/functions/PrimaryColumn.md +1 -1
  67. package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/functions/Unique.md +3 -3
  68. package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/functions/getColumnMetadata.md +1 -1
  69. package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/functions/getEntityName.md +1 -1
  70. package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/functions/getIndexMetadata.md +1 -1
  71. package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/interfaces/CollationOptions.md +79 -0
  72. package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/interfaces/ColumnInfo.md +4 -4
  73. package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/interfaces/ColumnOptions.md +5 -5
  74. package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/interfaces/EntityOptions.md +32 -0
  75. package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/interfaces/IndexInfo.md +4 -4
  76. package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/interfaces/IndexOptions.md +15 -5
  77. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/After.md +1 -1
  78. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Auth.md +1 -1
  79. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/AuthResult.md +1 -1
  80. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Before.md +1 -1
  81. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/ContentType.md +1 -1
  82. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Delete.md +1 -1
  83. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Get.md +1 -1
  84. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Head.md +1 -1
  85. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Header.md +1 -1
  86. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Method.md +1 -1
  87. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Model.md +1 -1
  88. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Options.md +1 -1
  89. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Param.md +1 -1
  90. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Patch.md +1 -1
  91. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Post.md +1 -1
  92. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Protect.md +1 -1
  93. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Put.md +1 -1
  94. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Query.md +1 -1
  95. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Request.md +1 -1
  96. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/RequiresRole.md +1 -1
  97. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Response.md +1 -1
  98. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Route.md +1 -1
  99. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Socket.md +1 -1
  100. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/User.md +1 -1
  101. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Validate.md +1 -1
  102. package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/WebSocket.md +1 -1
  103. package/docs/reference/classes/ACLUtils.md +17 -9
  104. package/docs/reference/classes/AdminRoute.md +3 -3
  105. package/docs/reference/classes/AuthMiddleware.md +8 -8
  106. package/docs/reference/classes/BackgroundService.md +8 -8
  107. package/docs/reference/classes/BackgroundServiceManager.md +7 -7
  108. package/docs/reference/classes/BaseEntity.md +6 -6
  109. package/docs/reference/classes/BaseMongoEntity.md +7 -7
  110. package/docs/reference/classes/BasicStrategy.md +5 -5
  111. package/docs/reference/classes/BasicStrategyOptions.md +7 -7
  112. package/docs/reference/classes/BulkError.md +3 -3
  113. package/docs/reference/classes/ConnectionManager.md +4 -4
  114. package/docs/reference/classes/EventListenerManager.md +5 -5
  115. package/docs/reference/classes/HttpRouter.md +16 -16
  116. package/docs/reference/classes/JWTStrategy.md +5 -5
  117. package/docs/reference/classes/JWTStrategyOptions.md +8 -8
  118. package/docs/reference/classes/MetricsRoute.md +2 -2
  119. package/docs/reference/classes/ModelRoute.md +46 -46
  120. package/docs/reference/classes/ModelUtils.md +13 -31
  121. package/docs/reference/classes/MongoConnection.md +12 -12
  122. package/docs/reference/classes/MongoRepository.md +73 -37
  123. package/docs/reference/classes/MongoSchemaSync.md +33 -3
  124. package/docs/reference/classes/NetUtils.md +3 -3
  125. package/docs/reference/classes/NotificationUtils.md +3 -3
  126. package/docs/reference/classes/ObjectFactory.md +3 -3
  127. package/docs/reference/classes/OpenAPIRoute.md +5 -5
  128. package/docs/reference/classes/OpenApiSpec.md +45 -45
  129. package/docs/reference/classes/RecoverableBaseEntity.md +7 -7
  130. package/docs/reference/classes/RecoverableBaseMongoEntity.md +8 -8
  131. package/docs/reference/classes/RedisTransport.md +4 -4
  132. package/docs/reference/classes/RepoUtils.md +29 -33
  133. package/docs/reference/classes/RouteUtils.md +7 -7
  134. package/docs/reference/classes/Server.md +26 -26
  135. package/docs/reference/classes/SimpleEntity.md +3 -3
  136. package/docs/reference/classes/SimpleMongoEntity.md +4 -4
  137. package/docs/reference/classes/StatusExtraData.md +4 -4
  138. package/docs/reference/classes/StatusRoute.md +1 -1
  139. package/docs/reference/classes/UWSRequest.md +16 -16
  140. package/docs/reference/classes/UWSResponse.md +13 -13
  141. package/docs/reference/classes/UWSWebSocketShim.md +5 -5
  142. package/docs/reference/enumerations/ACLAction.md +7 -7
  143. package/docs/reference/enumerations/ApiErrorMessages.md +15 -15
  144. package/docs/reference/enumerations/ApiErrors.md +15 -15
  145. package/docs/reference/functions/createWebSocketStream.md +1 -1
  146. package/docs/reference/functions/isSqlDataSource.md +1 -1
  147. package/docs/reference/functions/readBody.md +1 -1
  148. package/docs/reference/functions/resolveCollectionName.md +2 -2
  149. package/docs/reference/functions/runChain.md +1 -1
  150. package/docs/reference/functions/snakeCase.md +1 -1
  151. package/docs/reference/interfaces/ACLRecord.md +8 -8
  152. package/docs/reference/interfaces/AccessControlList.md +5 -5
  153. package/docs/reference/interfaces/AuthResult.md +5 -5
  154. package/docs/reference/interfaces/AuthStrategy.md +4 -4
  155. package/docs/reference/interfaces/CreateRequestOptions.md +9 -9
  156. package/docs/reference/interfaces/DeleteRequestOptions.md +10 -20
  157. package/docs/reference/interfaces/FindRequestOptions.md +10 -10
  158. package/docs/reference/interfaces/HttpRequest.md +15 -15
  159. package/docs/reference/interfaces/HttpResponse.md +11 -11
  160. package/docs/reference/interfaces/JWTAuthResult.md +6 -6
  161. package/docs/reference/interfaces/RepoCreateOptions.md +7 -7
  162. package/docs/reference/interfaces/RepoDeleteOptions.md +8 -18
  163. package/docs/reference/interfaces/RepoFindOptions.md +10 -20
  164. package/docs/reference/interfaces/RepoOperationOptions.md +6 -6
  165. package/docs/reference/interfaces/RepoUpdateOptions.md +7 -17
  166. package/docs/reference/interfaces/RequestOptions.md +8 -8
  167. package/docs/reference/interfaces/RequestWS.md +17 -17
  168. package/docs/reference/interfaces/TruncateRequestOptions.md +12 -26
  169. package/docs/reference/interfaces/UpdateRequestOptions.md +10 -20
  170. package/docs/reference/type-aliases/ErrorHandler.md +1 -1
  171. package/docs/reference/type-aliases/NextFunction.md +1 -1
  172. package/docs/reference/type-aliases/OneOrMany.md +1 -1
  173. package/docs/reference/type-aliases/OneOrNull.md +1 -1
  174. package/docs/reference/type-aliases/PartialBaseEntity.md +1 -1
  175. package/docs/reference/type-aliases/PartialSimpleEntity.md +1 -1
  176. package/docs/reference/type-aliases/RequestHandler.md +1 -1
  177. package/docs/reference/type-aliases/UpdateObject.md +1 -1
  178. package/docs/reference/type-aliases/WsUpgradeAuth.md +1 -1
  179. package/docs/reference/type-aliases/WsUpgradeAuthResult.md +5 -5
  180. package/package.json +1 -1
@@ -64,15 +64,14 @@ export class ModelUtils {
64
64
  * @param modelClass The class definition of the data model to build a search query for.
65
65
  * @param id The unique identifier to search for.
66
66
  * @param version The version number of the document to search for.
67
- * @param productUid The optional product uid that is associated with the uid (when a compound key is used).
68
67
  * @returns An object that can be passed to a TypeORM `find` function.
69
68
  */
70
- static buildIdSearchQuery(repo, modelClass, id, version, productUid) {
69
+ static buildIdSearchQuery(repo, modelClass, id, version) {
71
70
  if (repo instanceof MongoRepository) {
72
- return ModelUtils.buildIdSearchQueryMongo(modelClass, id, version, productUid);
71
+ return ModelUtils.buildIdSearchQueryMongo(modelClass, id, version);
73
72
  }
74
73
  else {
75
- return ModelUtils.buildIdSearchQuerySQL(modelClass, id, version, productUid);
74
+ return ModelUtils.buildIdSearchQuerySQL(modelClass, id, version);
76
75
  }
77
76
  }
78
77
  /**
@@ -82,22 +81,15 @@ export class ModelUtils {
82
81
  * @param modelClass The class definition of the data model to build a search query for.
83
82
  * @param id The unique identifier to search for.
84
83
  * @param version The version number of the document to search for.
85
- * @param productUid The optional product uid that is associated with the uid (when a compound key is used).
86
84
  * @returns An object that can be passed to a TypeORM `find` function.
87
85
  */
88
- static buildIdSearchQuerySQL(modelClass, id, version, productUid) {
86
+ static buildIdSearchQuerySQL(modelClass, id, version) {
89
87
  const props = ModelUtils.getIdPropertyNames(modelClass);
90
88
  // Create the where in SQL syntax. We only care about one of the identifier field's matching.
91
89
  // e.g. WHERE idField1 = :idField1 OR idField2 = :idField2 ...
92
90
  const where = [];
93
91
  for (const prop of props) {
94
- // If productUid is an id, skip it because it's used as a compound key
95
- if (prop === "productUid")
96
- continue;
97
92
  const q = { [prop]: Array.isArray(id) ? ModelUtils.orm.In(id) : id };
98
- if (props.includes("productUid")) {
99
- q.productUid = productUid;
100
- }
101
93
  if (version !== undefined) {
102
94
  q.version = version;
103
95
  }
@@ -112,33 +104,28 @@ export class ModelUtils {
112
104
  * @param modelClass The class definition of the data model to build a search query for.
113
105
  * @param id The unique identifier to search for.
114
106
  * @param version The version number of the document to search for.
115
- * @param productUid The optional product uid that is associated with the uid (when a compound key is used).
116
107
  * @returns An object that can be passed to a MongoDB `find` function.
117
108
  */
118
- static buildIdSearchQueryMongo(modelClass, id, version, productUid) {
109
+ static buildIdSearchQueryMongo(modelClass, id, version) {
119
110
  const props = ModelUtils.getIdPropertyNames(modelClass);
120
- // We want to performa case-insensitive search. So convert all strings to regex.
121
- if (Array.isArray(id)) {
122
- for (let i = 0; i < id.length; i++) {
123
- if (typeof id[i] === "string") {
124
- id[i] = new RegExp("^" + id[i].replace(/[.*+?^${}()|[\]\\]/g, "\\$&") + "$", "i");
125
- }
126
- }
127
- }
128
- else if (typeof id === "string") {
129
- id = new RegExp("^" + id.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") + "$", "i");
130
- }
131
- // Create the where in SQL syntax. We only care about one of the identifier field's matching.
132
- // e.g. WHERE idField1 = :idField1 OR idField2 = :idField2 ...
111
+ // We want to performa case-insensitive search. We used to convert strings to RegEx but this is _very_
112
+ // slow. Instead, we use case-insenstive indexes that are configured using the `collation` option. Now
113
+ // we only need to pass in the raw string. So we skip this section but we retain the code for historical
114
+ // reasons.
115
+ // See: https://www.mongodb.com/docs/v7.0/core/index-case-insensitive/
116
+ // if (Array.isArray(id)) {
117
+ // for (let i = 0; i < id.length; i++) {
118
+ // if (typeof id[i] === "string") {
119
+ // id[i] = new RegExp("^" + id[i].replace(/[.*+?^${}()|[\]\\]/g, "\\$&") + "$", "i");
120
+ // }
121
+ // }
122
+ // } else if (typeof id === "string") {
123
+ // id = new RegExp("^" + id.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") + "$", "i");
124
+ // }
125
+ // Create the where in Mongo filter syntax. We only care about one of the identifier field's matching.
133
126
  const query = [];
134
127
  for (const prop of props) {
135
- // If productUid is an id, skip it because it's used as a compound key
136
- if (prop === "productUid")
137
- continue;
138
128
  const q = { [prop]: Array.isArray(id) ? { $in: id } : id };
139
- if (productUid && props.includes("productUid")) {
140
- q.productUid = productUid;
141
- }
142
129
  if (version !== undefined) {
143
130
  q.version = version;
144
131
  }
@@ -573,7 +560,9 @@ export class ModelUtils {
573
560
  let orResults = [];
574
561
  for (const query of queryParams[key]) {
575
562
  const subQueryOrResult = this.buildSearchQueryMongo(modelClass, undefined, query, exactMatch, user);
576
- const validSubQueryResult = subQueryOrResult && subQueryOrResult.length > 0 && subQueryOrResult[0]["$match"];
563
+ const validSubQueryResult = Array.isArray(subQueryOrResult) && subQueryOrResult.length > 0
564
+ ? subQueryOrResult[0]["$match"]
565
+ : subQueryOrResult["$match"];
577
566
  validSubQueryResult && orResults.push(validSubQueryResult);
578
567
  }
579
568
  queries[0] = { $or: orResults };
@@ -614,6 +603,14 @@ export class ModelUtils {
614
603
  if (sort && !isEmpty(sort)) {
615
604
  result.push({ $sort: sort });
616
605
  }
606
+ // If this is a simple query (e.g. only $match and $sort) then we want to extract this query so that
607
+ // we don't run it as an aggregate pipeline.
608
+ if (result.length < 3) {
609
+ return {
610
+ ...result[0],
611
+ ...result[1],
612
+ };
613
+ }
617
614
  return result;
618
615
  }
619
616
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ModelUtils.js","sourceRoot":"","sources":["../../../src/models/ModelUtils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,kBAAkB,CAAC;AAC1B,OAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE9D,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;AAExB,8FAA8F;AAC9F,2FAA2F;AAC3F,wBAAwB;AACvB,MAAM,CAAC,SAAiB,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;AAE7D;;;;GAIG;AACH,MAAM,OAAO,UAAU;IAInB;;;;;OAKG;IACI,MAAM,CAAC,UAAU,CAAC,MAAW;QAChC,UAAU,CAAC,OAAO,GAAG,MAAM,CAAC;IAChC,CAAC;IAED;;OAEG;IACK,MAAM,KAAK,GAAG;QAClB,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CACX,mHAAmH,CACtH,CAAC;QACN,CAAC;QACD,OAAO,UAAU,CAAC,OAAO,CAAC;IAC9B,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,kBAAkB,CAAC,UAAe;QAC5C,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,+GAA+G;QAC/G,iCAAiC;QACjC,IAAI,KAAK,GAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC;QACzD,OAAO,KAAK,EAAE,CAAC;YACX,MAAM,KAAK,GAAa,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAC1D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACvB,MAAM,YAAY,GAAY,OAAO,CAAC,WAAW,CAAC,mBAAmB,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBACpF,IAAI,YAAY,EAAE,CAAC;oBACf,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvB,CAAC;YACL,CAAC;YAED,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAED;;;;;;;;;;OAUG;IACI,MAAM,CAAC,kBAAkB,CAC5B,IAAoD,EACpD,UAAe,EACf,EAAe,EACf,OAAgB,EAChB,UAAmB;QAEnB,IAAI,IAAI,YAAY,eAAe,EAAE,CAAC;YAClC,OAAO,UAAU,CAAC,uBAAuB,CAAC,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QACnF,CAAC;aAAM,CAAC;YACJ,OAAO,UAAU,CAAC,qBAAqB,CAAC,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QACjF,CAAC;IACL,CAAC;IAED;;;;;;;;;OASG;IACI,MAAM,CAAC,qBAAqB,CAAC,UAAe,EAAE,EAAe,EAAE,OAAgB,EAAE,UAAmB;QACvG,MAAM,KAAK,GAAa,UAAU,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAElE,6FAA6F;QAC7F,8DAA8D;QAC9D,MAAM,KAAK,GAAQ,EAAE,CAAC;QACtB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,sEAAsE;YACtE,IAAI,IAAI,KAAK,YAAY;gBAAE,SAAS;YAEpC,MAAM,CAAC,GAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAC1E,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC/B,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC;YAC9B,CAAC;YACD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBACxB,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC;YACxB,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,CAAC;IACrB,CAAC;IAED;;;;;;;;;OASG;IACI,MAAM,CAAC,uBAAuB,CACjC,UAAe,EACf,EAAe,EACf,OAAgB,EAChB,UAAmB;QAEnB,MAAM,KAAK,GAAa,UAAU,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAElE,gFAAgF;QAChF,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;YACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACjC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;oBAC5B,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;gBACtF,CAAC;YACL,CAAC;QACL,CAAC;aAAM,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;YAChC,EAAE,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;QAChF,CAAC;QAED,6FAA6F;QAC7F,8DAA8D;QAC9D,MAAM,KAAK,GAAU,EAAE,CAAC;QACxB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,sEAAsE;YACtE,IAAI,IAAI,KAAK,YAAY;gBAAE,SAAS;YAEpC,MAAM,CAAC,GAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAChE,IAAI,UAAU,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC7C,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC;YAC9B,CAAC;YACD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBACxB,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC;YACxB,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;IAC1B,CAAC;IAED;;;;;;;OAOG;IACK,MAAM,CAAC,kBAAkB,CAAC,KAAU;QACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,EAAE,OAAO,EAAE,GAC1F,UAAU,CAAC,GAAG,CAAC;YACnB,uGAAuG;YACvG,kBAAkB;YAClB,4DAA4D;YAC5D,MAAM,OAAO,GAA4B,KAAK,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC,CAAC;YAC/F,IAAI,OAAO,EAAE,CAAC;gBACV,MAAM,MAAM,GAAW,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;gBAChD,IAAI,KAAK,GAAQ,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC5B,IAAI,CAAC;oBACD,8CAA8C;oBAC9C,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACX,qFAAqF;oBACrF,KAAK,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC7B,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;wBACf,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;oBACvB,CAAC;gBACL,CAAC;gBAED,QAAQ,MAAM,EAAE,CAAC;oBACb,KAAK,IAAI;wBACL,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;oBACxB,KAAK,IAAI;wBACL,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;oBAC3B,KAAK,KAAK;wBACN,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;oBAClC,KAAK,IAAI,CAAC,CAAC,CAAC;wBACR,MAAM,IAAI,GAAa,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBACxC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;oBACpB,CAAC;oBACD,KAAK,MAAM;wBACP,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;oBACxB,KAAK,IAAI;wBACL,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;oBAC3B,KAAK,KAAK;wBACN,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;oBAClC,KAAK,IAAI,CAAC;oBACV,KAAK,KAAK;wBACN,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;oBACtB,KAAK,OAAO,CAAC,CAAC,CAAC;wBACX,MAAM,IAAI,GAAa,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBACxC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;4BACpB,MAAM,GAAG,GAAW,WAAW,CAAC,cAAc,CAAC,gBAAgB,CAAC,oBAAoB,EAAE;gCAClF,KAAK;gCACL,MAAM,EAAE,IAAI,CAAC,MAAM;6BACtB,CAAC,CAAC;4BACH,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,oBAAoB,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;wBACjE,CAAC;wBACD,IAAI,CAAC;4BACD,oDAAoD;4BACpD,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC7D,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACX,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;wBACrC,CAAC;oBACL,CAAC;oBACD;wBACI,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC5B,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC;oBACD,8CAA8C;oBAC9C,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBACpC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACX,6EAA6E;oBAC7E,MAAM,IAAI,GAAS,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;oBACnC,OAAO,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBACxD,CAAC;YACL,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACK,MAAM,CAAC,uBAAuB,CAAC,KAAU;QAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,uGAAuG;YACvG,kBAAkB;YAClB,4DAA4D;YAC5D,MAAM,OAAO,GAA4B,KAAK,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC,CAAC;YAC/F,IAAI,OAAO,EAAE,CAAC;gBACV,MAAM,MAAM,GAAW,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;gBAChD,IAAI,KAAK,GAAQ,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC5B,IAAI,CAAC;oBACD,8CAA8C;oBAC9C,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACX,qFAAqF;oBACrF,KAAK,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC7B,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;wBACf,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;oBACvB,CAAC;gBACL,CAAC;gBACD,QAAQ,MAAM,EAAE,CAAC;oBACb,KAAK,IAAI;wBACL,OAAO,KAAK,CAAC;oBACjB,KAAK,IAAI;wBACL,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;oBAC1B,KAAK,KAAK;wBACN,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;oBAC3B,KAAK,IAAI,CAAC,CAAC,CAAC;wBACR,MAAM,IAAI,GAAa,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBACxC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;oBACzB,CAAC;oBACD,KAAK,KAAK,CAAC,CAAC,CAAC;wBACT,MAAM,IAAI,GAAa,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBACxC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;oBAC1B,CAAC;oBACD,KAAK,MAAM;wBACP,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;oBAC5C,KAAK,IAAI;wBACL,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;oBAC1B,KAAK,KAAK;wBACN,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;oBAC3B,KAAK,IAAI;wBACL,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;oBAC1B,KAAK,KAAK;wBACN,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;oBAC3B,KAAK,OAAO,CAAC,CAAC,CAAC;wBACX,MAAM,IAAI,GAAa,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBACxC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;4BACpB,MAAM,GAAG,GAAW,WAAW,CAAC,cAAc,CAAC,gBAAgB,CAAC,oBAAoB,EAAE;gCAClF,KAAK;gCACL,MAAM,EAAE,IAAI,CAAC,MAAM;6BACtB,CAAC,CAAC;4BACH,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,oBAAoB,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;wBACjE,CAAC;wBACD,IAAI,CAAC;4BACD,oDAAoD;4BACpD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBACpE,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACX,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC5C,CAAC;oBACL,CAAC;oBACD;wBACI,OAAO,KAAK,CAAC;gBACrB,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC;oBACD,8CAA8C;oBAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC7B,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACX,qFAAqF;oBACrF,MAAM,IAAI,GAAS,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;oBACnC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;gBACjD,CAAC;YACL,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACI,MAAM,CAAC,gBAAgB,CAC1B,UAAe,EACf,IAAoD,EACpD,MAAY,EACZ,WAAiB,EACjB,aAAsB,KAAK,EAC3B,IAAU;QAEV,6FAA6F;QAC7F,IAAI,IAAI,UAAU,EAAE,YAAY,qBAAqB,EAAE,CAAC;YACpD,WAAW,GAAG;gBACV,GAAG,WAAW;gBACd,OAAO,EAAE,WAAW,IAAI,SAAS,IAAI,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;aACjF,CAAC;QACN,CAAC;QAED,IAAI,IAAI,YAAY,eAAe,EAAE,CAAC;YAClC,OAAO,UAAU,CAAC,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QAC/F,CAAC;aAAM,CAAC;YACJ,OAAO,UAAU,CAAC,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QAC7F,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACI,MAAM,CAAC,mBAAmB,CAC7B,UAAe,EACf,MAAY,EACZ,WAAiB,EACjB,aAAsB,KAAK,EAC3B,IAAU;QAEV,MAAM,KAAK,GAAQ,EAAE,CAAC;QACtB,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;QAEjB,yBAAyB;QACzB,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACvB,0EAA0E;YAC1E,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;gBACvB,IAAI,CAAC,IAAI,EAAE,CAAC;oBACR,MAAM,IAAI,QAAQ,CACd,SAAS,CAAC,2BAA2B,EACrC,GAAG,EACH,gBAAgB,CAAC,2BAA2B,CAC/C,CAAC;gBACN,CAAC;gBACD,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACJ,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACnC,CAAC;QACL,CAAC;QAED,uGAAuG;QACvG,4GAA4G;QAC5G,0BAA0B;QAE1B,0EAA0E;QAC1E,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAsB,WAAW,CAAC,GAAG,CAAC,CAAC;YAClD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvB,IAAI,KAAK,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;oBAC5B,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;gBAC9B,CAAC;YACL,CAAC;QACL,CAAC;QAED,iEAAiE;QAEjE,0HAA0H;QAC1H,2CAA2C;QAC3C,KAAK,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC;YAC1B,mCAAmC;YACnC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC5D,SAAS;YACb,CAAC;YAED,gEAAgE;YAChE,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;gBACpD,IAAI,KAAK,GAAQ,WAAW,CAAC,GAAG,CAAC,CAAC;gBAElC,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;oBAClB,GAAG,GAAG,MAAM,CAAC;oBACb,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC/B,CAAC;qBAAM,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;oBACxB,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC/B,CAAC;qBAAM,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;oBACxB,GAAG,GAAG,OAAO,CAAC;oBAEd,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;wBAC5B,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;4BAC3C,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBAC9B,CAAC;6BAAM,CAAC;4BACJ,IAAI,QAAQ,GAAQ,KAAK,CAAC;4BAC1B,QAAQ,GAAG,EAAE,CAAC;4BACd,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;4BACxB,KAAK,GAAG,QAAQ,CAAC;wBACrB,CAAC;oBACL,CAAC;oBAED,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBACvB,CAAC;gBAED,SAAS;YACb,CAAC;YAED,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAClC,0DAA0D;gBAC1D,IAAI,CAAC,GAAG,CAAC,CAAC;gBACV,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;oBACnC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;wBAClB,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;oBACxB,CAAC;oBAED,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;oBAE3D,CAAC,EAAE,CAAC;gBACR,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,mCAAmC;gBACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;oBAClC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;wBAClB,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;oBACxB,CAAC;oBAED,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,kBAAkB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1E,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC,KAAK,CAAC;QACvB,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACb,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACJ,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;QACrB,CAAC;QACD,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAEzC,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACI,MAAM,CAAC,qBAAqB,CAC/B,UAAe,EACf,MAAY,EACZ,WAAiB,EACjB,aAAsB,KAAK,EAC3B,IAAU;QAEV,MAAM,OAAO,GAAU,CAAC,EAAE,CAAC,CAAC;QAC5B,IAAI,IAAI,GAAQ,SAAS,CAAC;QAE1B,yBAAyB;QACzB,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACvB,0EAA0E;YAC1E,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;gBACvB,IAAI,CAAC,IAAI,EAAE,CAAC;oBACR,MAAM,IAAI,QAAQ,CACd,SAAS,CAAC,2BAA2B,EACrC,GAAG,EACH,gBAAgB,CAAC,2BAA2B,CAC/C,CAAC;gBACN,CAAC;gBACD,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAClC,CAAC;QACL,CAAC;QAED,iEAAiE;QAEjE,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC5B,mCAAmC;YACnC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;gBACtD,SAAS;YACb,CAAC;YAED,gEAAgE;YAChE,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;gBACpD,IAAI,KAAK,GAAQ,WAAW,CAAC,GAAG,CAAC,CAAC;gBAElC,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;oBACjB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;wBAC5B,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;4BAC3C,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBAC9B,CAAC;6BAAM,CAAC;4BACJ,IAAI,QAAQ,GAAQ,KAAK,CAAC;4BAC1B,QAAQ,GAAG,EAAE,CAAC;4BACd,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;4BACpB,KAAK,GAAG,QAAQ,CAAC;wBACrB,CAAC;oBACL,CAAC;oBAED,IAAI,YAAY,GAAG;wBACf,GAAG,IAAI;wBACP,GAAG,KAAK;qBACX,CAAC;oBAEF,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;oBAElB,8HAA8H;oBAC9H,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;wBACtC,IAAI,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;wBAE9B,IAAI,CAAC,KAAK;4BAAE,OAAO;wBAEnB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;4BAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;wBACtB,CAAC;6BAAM,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE,CAAC;4BACvC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBAClB,CAAC;6BAAM,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;4BACxC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;wBACnB,CAAC;oBACL,CAAC,CAAC,CAAC;gBACP,CAAC;gBAED,SAAS;YACb,CAAC;YAED,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;gBAChB,sBAAsB;gBACtB,IAAI,SAAS,GAAU,EAAE,CAAC;gBAC1B,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,CAAe,EAAE,CAAC;oBACjD,MAAM,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;oBACpG,MAAM,mBAAmB,GACrB,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;oBACrF,mBAAmB,IAAI,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;gBAC/D,CAAC;gBAED,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;gBAEhC,SAAS;YACb,CAAC;YAED,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAClC,0DAA0D;gBAC1D,MAAM,UAAU,GAAU,EAAE,CAAC;gBAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC/C,MAAM,KAAK,GAAQ,UAAU,CAAC,uBAAuB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAE3E,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;wBACd,OAAO,CAAC,CAAC,CAAC,GAAG;4BACT,GAAG,OAAO,CAAC,CAAC,CAAC;yBAChB,CAAC;oBACN,CAAC;oBAED,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBAC5B,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,MAAM,KAAK,GAAQ,UAAU,CAAC,uBAAuB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;gBACxE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACtC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBAC5B,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,MAAM,GAAU,EAAE,CAAC;QACvB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QAClF,CAAC;QAED,2EAA2E;QAC3E,8BAA8B;QAC9B,IAAI,UAAU,IAAI,UAAU,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACtD,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;YACpE,MAAM,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,4BAA4B;QAC5B,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,GAAW,EAAE,SAA2B,IAAI,GAAG,EAAE;QAC5E,OAAO,MAAM,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;YAC/C,IAAI,CAAC;gBACD,MAAM,WAAW,GAAgB,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;gBACtD,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;gBAEzB,oFAAoF;gBACpF,WAAW,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,IAAY,EAAE,EAAE;oBAC1D,MAAM,OAAO,GAAQ,OAAO,CAAC,WAAW,CAAC,gBAAgB,EAAE,KAAK,CAAC,KAAK,SAAS,CAAC;oBAChF,IAAI,OAAO,EAAE,CAAC;wBACV,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;oBAC5B,CAAC;gBACL,CAAC,CAAC,CAAC;gBAEH,OAAO,CAAC,MAAM,CAAC,CAAC;YACpB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CACJ"}
1
+ {"version":3,"file":"ModelUtils.js","sourceRoot":"","sources":["../../../src/models/ModelUtils.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  // Copyright (C) 2020-2026 Jean-Philippe Steinmetz. All rights reserved.
12
12
  ///////////////////////////////////////////////////////////////////////////////
13
13
  import { ObjectId } from "mongodb";
14
- import { Column } from "../decorators/PersistenceDecorators.js";
14
+ import { Column, Index } from "../decorators/PersistenceDecorators.js";
15
15
  import { RecoverableBaseEntity } from "./RecoverableBaseEntity.js";
16
16
  /**
17
17
  * The `RecoverableBaseMongoEntity` provides an entity base class for those classes wishing to implement
@@ -21,7 +21,9 @@ import { RecoverableBaseEntity } from "./RecoverableBaseEntity.js";
21
21
  *
22
22
  * @author Jean-Philippe Steinmetz <rapidrests@gmail.com>
23
23
  */
24
- export class RecoverableBaseMongoEntity extends RecoverableBaseEntity {
24
+ // Shadow BaseEntity's unique uid index — versioned entities store multiple documents per uid (one per
25
+ // version), so uniqueness must be enforced on the compound (uid, version) key instead.
26
+ let RecoverableBaseMongoEntity = class RecoverableBaseMongoEntity extends RecoverableBaseEntity {
25
27
  constructor(other) {
26
28
  super(other);
27
29
  if (other) {
@@ -32,9 +34,15 @@ export class RecoverableBaseMongoEntity extends RecoverableBaseEntity {
32
34
  : this._id;
33
35
  }
34
36
  }
35
- }
37
+ };
36
38
  __decorate([
37
39
  Column({ isObjectId: true }),
38
40
  __metadata("design:type", Object)
39
41
  ], RecoverableBaseMongoEntity.prototype, "_id", void 0);
42
+ RecoverableBaseMongoEntity = __decorate([
43
+ Index("uid_version", ["uid", "version"], { unique: true, collation: { locale: "en", strength: 2 } }),
44
+ Index("uid", ["uid"], { collation: { locale: "en", strength: 2 } }),
45
+ __metadata("design:paramtypes", [Object])
46
+ ], RecoverableBaseMongoEntity);
47
+ export { RecoverableBaseMongoEntity };
40
48
  //# sourceMappingURL=RecoverableBaseMongoEntity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RecoverableBaseMongoEntity.js","sourceRoot":"","sources":["../../../src/models/RecoverableBaseMongoEntity.ts"],"names":[],"mappings":";;;;;;;;;AAAA,+EAA+E;AAC/E,wEAAwE;AACxE,+EAA+E;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,wCAAwC,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE;;;;;;;GAOG;AACH,MAAM,OAAgB,0BAA2B,SAAQ,qBAAqB;IAO1E,YAAY,KAA2C;QACnD,KAAK,CAAC,KAAK,CAAC,CAAC;QAEb,IAAI,KAAK,EAAE,CAAC;YACR,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG;gBAChB,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ;oBAC5D,CAAC,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACjC,CAAC,CAAC,KAAK,CAAC,GAAG;gBACf,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACnB,CAAC;IACL,CAAC;CACJ;AAbU;IADN,MAAM,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;;uDACZ"}
1
+ {"version":3,"file":"RecoverableBaseMongoEntity.js","sourceRoot":"","sources":["../../../src/models/RecoverableBaseMongoEntity.ts"],"names":[],"mappings":";;;;;;;;;AAAA,+EAA+E;AAC/E,wEAAwE;AACxE,+EAA+E;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,wCAAwC,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE;;;;;;;GAOG;AACH,sGAAsG;AACtG,uFAAuF;AAGhF,IAAe,0BAA0B,GAAzC,MAAe,0BAA2B,SAAQ,qBAAqB;IAO1E,YAAY,KAA2C;QACnD,KAAK,CAAC,KAAK,CAAC,CAAC;QAEb,IAAI,KAAK,EAAE,CAAC;YACR,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG;gBAChB,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ;oBAC5D,CAAC,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACjC,CAAC,CAAC,KAAK,CAAC,GAAG;gBACf,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACnB,CAAC;IACL,CAAC;CACJ,CAAA;AAbU;IADN,MAAM,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;;uDACZ;AALC,0BAA0B;IAF/C,KAAK,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;IACpG,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;;GAC9C,0BAA0B,CAkB/C"}
@@ -58,10 +58,12 @@ export class RepoUtils {
58
58
  if (!this.repo) {
59
59
  throw new Error(`Cannot initialize RepoUtils. No repository found for class ${this.modelClass.name}.`);
60
60
  }
61
- let defaultAcl = this.getDefaultACL();
62
- if (defaultAcl) {
63
- this.defaultACLUid = defaultAcl.uid;
64
- await this.aclUtils?.saveDefaultACL(defaultAcl);
61
+ if (this.aclUtils?.enabled) {
62
+ let defaultAcl = this.getDefaultACL();
63
+ if (defaultAcl) {
64
+ this.defaultACLUid = defaultAcl.uid;
65
+ await this.aclUtils?.saveDefaultACL(defaultAcl);
66
+ }
65
67
  }
66
68
  // Does the model specify a MongoDB shard configuration?
67
69
  const shardConfig = Reflect.getMetadata("rrst:shardConfig", this.modelClass);
@@ -102,15 +104,20 @@ export class RepoUtils {
102
104
  }
103
105
  let count = 0;
104
106
  // Check user permissions
105
- if (this.aclUtils && !options?.ignoreACL) {
107
+ if (this.aclUtils?.enabled && !options?.ignoreACL) {
106
108
  if (!(await this.aclUtils.hasPermission(options?.user, this.defaultACLUid, ACLAction.READ))) {
107
109
  throw new ApiError(ApiErrors.AUTH_PERMISSION_FAILURE, 403, ApiErrorMessages.AUTH_PERMISSION_FAILURE);
108
110
  }
109
111
  }
110
- if (this.repo instanceof MongoRepository && Array.isArray(query)) {
111
- query.push({ $count: "count" });
112
- const result = await this.repo.aggregate(query).next();
113
- count = result ? result.count : count;
112
+ if (this.repo instanceof MongoRepository) {
113
+ if (Array.isArray(query)) {
114
+ query.push({ $count: "count" });
115
+ const result = await this.repo.aggregate(query).next();
116
+ count = result ? result.count : count;
117
+ }
118
+ else {
119
+ count = await this.repo.count(query["$match"] ? query["$match"] : query);
120
+ }
114
121
  }
115
122
  else {
116
123
  count = await this.repo.count(query);
@@ -129,7 +136,7 @@ export class RepoUtils {
129
136
  throw new ApiError(ApiErrors.INTERNAL_ERROR, 500, ApiErrorMessages.INTERNAL_ERROR);
130
137
  }
131
138
  // Verify the user's permission to create objects
132
- if (this.aclUtils &&
139
+ if (this.aclUtils?.enabled &&
133
140
  !options?.ignoreACL &&
134
141
  !(await this.aclUtils.hasPermission(options?.user, this.defaultACLUid, ACLAction.CREATE))) {
135
142
  throw new ApiError(ApiErrors.AUTH_PERMISSION_FAILURE, 403, ApiErrorMessages.AUTH_PERMISSION_FAILURE);
@@ -141,15 +148,12 @@ export class RepoUtils {
141
148
  const ids = [];
142
149
  const idProps = ModelUtils.getIdPropertyNames(clazz);
143
150
  for (const prop of idProps) {
144
- // Skip `productUid` as it is considered a compound key
145
- if (prop === "productUid")
146
- continue;
147
151
  const val = newObj[prop];
148
152
  if (val) {
149
153
  ids.push(val);
150
154
  }
151
155
  }
152
- const query = ModelUtils.buildIdSearchQuery(this.repo, clazz, ids, undefined, newObj.productUid);
156
+ const query = ModelUtils.buildIdSearchQuery(this.repo, clazz, ids, undefined);
153
157
  const count = await this.repo.count(query);
154
158
  if (!this.modelClass.trackChanges && count > 0) {
155
159
  throw new ApiError(ApiErrors.IDENTIFIER_EXISTS, 400, ApiErrorMessages.IDENTIFIER_EXISTS);
@@ -173,7 +177,7 @@ export class RepoUtils {
173
177
  const cacheKey = `${this.baseCacheKey}.${this.hashQuery(query)}`;
174
178
  void this.cacheClient.setex(cacheKey, this.modelClass.cacheTTL, JSON.stringify(result));
175
179
  }
176
- if (this.aclUtils && this.modelClass.recordACL) {
180
+ if (this.aclUtils?.enabled && this.modelClass.recordACL) {
177
181
  // If ACLs are enabled but no ACL was given create one
178
182
  const acl = {
179
183
  uid: result.uid,
@@ -194,7 +198,7 @@ export class RepoUtils {
194
198
  full: false,
195
199
  });
196
200
  }
197
- await this.aclUtils?.saveACL(acl);
201
+ await this.aclUtils.saveACL(acl);
198
202
  }
199
203
  if (!options?.skipPush) {
200
204
  let channels = [result.uid].concat(options?.pushChannels || []);
@@ -206,7 +210,7 @@ export class RepoUtils {
206
210
  if (!this.repo) {
207
211
  throw new ApiError(ApiErrors.INTERNAL_ERROR, 500, ApiErrorMessages.INTERNAL_ERROR);
208
212
  }
209
- if (this.aclUtils && !options.ignoreACL) {
213
+ if (this.aclUtils?.enabled && !options.ignoreACL) {
210
214
  const acl = await this.aclUtils.findACL(uid);
211
215
  if (!(await this.aclUtils.hasPermission(options.user, acl ? acl : this.defaultACLUid, ACLAction.DELETE))) {
212
216
  throw new ApiError(ApiErrors.AUTH_PERMISSION_FAILURE, 403, ApiErrorMessages.AUTH_PERMISSION_FAILURE);
@@ -214,7 +218,7 @@ export class RepoUtils {
214
218
  }
215
219
  const isRecoverable = this.instantiateObject({}) instanceof RecoverableBaseEntity;
216
220
  const isPurge = isRecoverable ? options.purge || false : true;
217
- const query = ModelUtils.buildIdSearchQuery(this.repo, this.modelClass, uid, options.version ? Number(options.version) : undefined, options.productUid);
221
+ const query = ModelUtils.buildIdSearchQuery(this.repo, this.modelClass, uid, options.version ? Number(options.version) : undefined);
218
222
  // If the object(s) are being permenantly removed from the database do so and then clear the accompanying
219
223
  // ACL(s). If the class type is recoverable and purge isn't desired, simply mark the object(s) as deleted.
220
224
  if (isPurge) {
@@ -224,7 +228,7 @@ export class RepoUtils {
224
228
  else {
225
229
  await this.repo.delete(query.where);
226
230
  }
227
- if (this.aclUtils && this.modelClass.recordACL) {
231
+ if (this.aclUtils?.enabled && this.modelClass.recordACL) {
228
232
  await this.aclUtils.removeACL(uid);
229
233
  }
230
234
  }
@@ -251,7 +255,6 @@ export class RepoUtils {
251
255
  let channels = [uid].concat(options?.pushChannels || []);
252
256
  this.notificationUtils?.sendMessage(channels, this.modelClass.name, "delete", {
253
257
  uid,
254
- productUid: options.productUid,
255
258
  version: options.version,
256
259
  });
257
260
  }
@@ -269,7 +272,7 @@ export class RepoUtils {
269
272
  }
270
273
  let results = [];
271
274
  // Check user permissions
272
- if (this.aclUtils && !options?.ignoreACL) {
275
+ if (this.aclUtils?.enabled && !options?.ignoreACL) {
273
276
  if (!(await this.aclUtils.hasPermission(options?.user, this.defaultACLUid, ACLAction.READ))) {
274
277
  throw new ApiError(ApiErrors.AUTH_PERMISSION_FAILURE, 403, ApiErrorMessages.AUTH_PERMISSION_FAILURE);
275
278
  }
@@ -304,9 +307,20 @@ export class RepoUtils {
304
307
  }
305
308
  // If the query wasn't cached retrieve from the database
306
309
  if (results.length === 0) {
307
- if (this.repo instanceof MongoRepository && Array.isArray(query)) {
310
+ if (this.repo instanceof MongoRepository) {
308
311
  const skip = page * limit;
309
- results = await this.repo.aggregate(query).skip(skip).limit(limit).toArray();
312
+ if (Array.isArray(query)) {
313
+ results = await this.repo.aggregate(query).skip(skip).limit(limit).toArray();
314
+ }
315
+ else {
316
+ results = await this.repo
317
+ .find(query["$match"] ? query["$match"] : query, {
318
+ limit,
319
+ skip,
320
+ sort: query["$sort"],
321
+ })
322
+ .toArray();
323
+ }
310
324
  }
311
325
  else {
312
326
  results = await this.repo.find(query);
@@ -333,7 +347,7 @@ export class RepoUtils {
333
347
  if (!this.repo) {
334
348
  throw new ApiError(ApiErrors.INTERNAL_ERROR, 500, ApiErrorMessages.INTERNAL_ERROR);
335
349
  }
336
- const query = this.searchIdQuery(id, options?.version, options?.productUid);
350
+ const query = this.searchIdQuery(id, options?.version);
337
351
  if (!options?.skipCache && this.cacheClient && this.modelClass.cacheTTL) {
338
352
  // First attempt to retrieve the object from the cache
339
353
  const json = await this.cacheClient.get(`${this.baseCacheKey}.${this.hashQuery(query)}`);
@@ -352,15 +366,9 @@ export class RepoUtils {
352
366
  let existing = null;
353
367
  if (this.repo instanceof MongoRepository) {
354
368
  existing = await this.repo
355
- .aggregate([
356
- {
357
- $match: query,
358
- },
359
- {
360
- $sort: { version: -1 },
361
- },
362
- ])
363
- .limit(1)
369
+ .find(query["$match"] ? query["$match"] : query, {
370
+ sort: { version: -1 },
371
+ })
364
372
  .next();
365
373
  }
366
374
  else {
@@ -421,20 +429,15 @@ export class RepoUtils {
421
429
  if (!clazz) {
422
430
  clazz = this.getClassType(obj);
423
431
  }
424
- if (this.objectFactory) {
425
- return this.objectFactory.newInstance(clazz, { initialize: false, args: [obj] });
426
- }
427
- else {
428
- return new clazz(obj);
429
- }
432
+ return new clazz(obj);
430
433
  }
431
434
  /**
432
435
  * Search for existing object based on passed in id and version and product uid.
433
436
  *
434
437
  * The result of this function is compatible with all `Repository.find()` functions.
435
438
  */
436
- searchIdQuery(id, version, productUid) {
437
- return ModelUtils.buildIdSearchQuery(this.repo, this.modelClass, id, typeof version === "string" ? parseInt(version, 10) : version, productUid);
439
+ searchIdQuery(id, version) {
440
+ return ModelUtils.buildIdSearchQuery(this.repo, this.modelClass, id, typeof version === "string" ? parseInt(version, 10) : version);
438
441
  }
439
442
  async truncate(query, options) {
440
443
  if (!this.repo) {
@@ -442,7 +445,7 @@ export class RepoUtils {
442
445
  }
443
446
  // Check user permissions. Don't check if record-level ACLs are used as this will be done
444
447
  // per record later.
445
- if (this.aclUtils && !options.ignoreACL && !this.modelClass.recordACL) {
448
+ if (this.aclUtils?.enabled && !options.ignoreACL && !this.modelClass.recordACL) {
446
449
  if (!(await this.aclUtils.hasPermission(options.user, this.defaultACLUid, ACLAction.DELETE))) {
447
450
  throw new ApiError(ApiErrors.AUTH_PERMISSION_FAILURE, 403, ApiErrorMessages.AUTH_PERMISSION_FAILURE);
448
451
  }
@@ -454,7 +457,7 @@ export class RepoUtils {
454
457
  uids = await this.repo.distinct("uid", query[0].$match);
455
458
  }
456
459
  else {
457
- uids = await this.repo.distinct("uid", query);
460
+ uids = await this.repo.distinct("uid", query["$match"] ? query["$match"] : query);
458
461
  }
459
462
  }
460
463
  else {
@@ -465,10 +468,10 @@ export class RepoUtils {
465
468
  // Check if this class uses record level ACLs. If so, we need to check the perms of
466
469
  // each one. We will remove any from our list that the user does not have permission to
467
470
  // delete.
468
- if (this.modelClass.recordACL) {
471
+ if (this.aclUtils?.enabled && this.modelClass.recordACL) {
469
472
  finalUids = [];
470
473
  for (const uid of uids) {
471
- if (this.aclUtils && !options.ignoreACL) {
474
+ if (!options.ignoreACL) {
472
475
  if (await this.aclUtils.hasPermission(options.user, uid, ACLAction.DELETE)) {
473
476
  finalUids.push(uid);
474
477
  }
@@ -488,7 +491,6 @@ export class RepoUtils {
488
491
  const finalChannels = channels.concat([uid]);
489
492
  this.notificationUtils?.sendMessage(finalChannels, this.modelClass.name, "delete", {
490
493
  uid,
491
- productUid: options.productUid,
492
494
  version: options.version,
493
495
  });
494
496
  }
@@ -506,7 +508,7 @@ export class RepoUtils {
506
508
  if (!this.repo) {
507
509
  throw new ApiError(ApiErrors.INTERNAL_ERROR, 500, ApiErrorMessages.INTERNAL_ERROR);
508
510
  }
509
- if (this.aclUtils && !options?.ignoreACL) {
511
+ if (this.aclUtils?.enabled && !options?.ignoreACL) {
510
512
  const acl = await this.aclUtils.findACL(existing.uid);
511
513
  if (!(await this.aclUtils.hasPermission(options?.user, acl ? acl : this.defaultACLUid, ACLAction.UPDATE))) {
512
514
  throw new ApiError(ApiErrors.AUTH_PERMISSION_FAILURE, 403, ApiErrorMessages.AUTH_PERMISSION_FAILURE);
@@ -527,7 +529,7 @@ export class RepoUtils {
527
529
  obj._id = existing._id;
528
530
  }
529
531
  const keepPrevious = !!this.modelClass.trackChanges;
530
- let query = this.searchIdQuery(existing.uid, options?.version || obj.version, options?.productUid || obj.productUid);
532
+ let query = this.searchIdQuery(existing.uid, options?.version || obj.version);
531
533
  let result = null;
532
534
  if (this.repo instanceof MongoRepository) {
533
535
  if (existing instanceof BaseEntity) {
@@ -603,17 +605,7 @@ export class RepoUtils {
603
605
  query = this.searchIdQuery(existing.uid, obj instanceof BaseEntity ? obj.version + 1 : undefined);
604
606
  if (!result) {
605
607
  if (this.repo instanceof MongoRepository) {
606
- result = await this.repo
607
- .aggregate([
608
- {
609
- $match: query,
610
- },
611
- {
612
- $sort: { version: -1 },
613
- },
614
- ])
615
- .limit(1)
616
- .next();
608
+ result = await this.repo.findOne(query["$match"] ? query["$match"] : query);
617
609
  }
618
610
  else {
619
611
  result = await this.repo.findOne(query);
@@ -656,7 +648,9 @@ export class RepoUtils {
656
648
  if (clazz && clazz.datastore && obj[member]) {
657
649
  // Attempt to grab the repository for this reference type
658
650
  const conn = this.connectionManager?.connections.get(clazz.datastore);
659
- const repo = (conn instanceof MongoConnection || isSqlDataSource(conn)) ? conn.getRepository(clazz) : undefined;
651
+ const repo = conn instanceof MongoConnection || isSqlDataSource(conn)
652
+ ? conn.getRepository(clazz)
653
+ : undefined;
660
654
  if (repo) {
661
655
  // Check to see if there are any objects with this UID in the datastore. If the value is an array
662
656
  // let's make sure that every uid is valid.