mongodb-dynamic-api 4.24.1 → 5.1.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 (492) hide show
  1. package/CHANGELOG.md +154 -0
  2. package/README.md +79 -2
  3. package/codemods/migrate-v5/cli.d.ts +3 -0
  4. package/codemods/migrate-v5/cli.js +38 -0
  5. package/codemods/migrate-v5/cli.js.map +1 -0
  6. package/codemods/migrate-v5/migrate-v5.d.ts +18 -0
  7. package/codemods/migrate-v5/migrate-v5.js +263 -0
  8. package/codemods/migrate-v5/migrate-v5.js.map +1 -0
  9. package/codemods/migrate-v5/removed-symbols.d.ts +7 -0
  10. package/codemods/migrate-v5/removed-symbols.js +122 -0
  11. package/codemods/migrate-v5/removed-symbols.js.map +1 -0
  12. package/package.json +44 -55
  13. package/schematics/resource/files/__name@dasherize__.entity.ts.template +3 -3
  14. package/schematics.tsbuildinfo +1 -1
  15. package/src/adapters/socket-adapter.js +5 -6
  16. package/src/adapters/socket-adapter.js.map +1 -1
  17. package/src/builders/route-decorators/auth-decorators.builder.d.ts +1 -1
  18. package/src/builders/route-decorators/route-decorators.builder.d.ts +2 -1
  19. package/src/builders/route-decorators/route-decorators.builder.js +5 -4
  20. package/src/builders/route-decorators/route-decorators.builder.js.map +1 -1
  21. package/src/decorators/entity-exists.decorator.js +2 -2
  22. package/src/decorators/entity-exists.decorator.js.map +1 -1
  23. package/src/decorators/index.d.ts +2 -5
  24. package/src/decorators/index.js +4 -5
  25. package/src/decorators/index.js.map +1 -1
  26. package/src/decorators/is-unique.decorator.js +2 -2
  27. package/src/decorators/is-unique.decorator.js.map +1 -1
  28. package/src/decorators/schema.decorator.d.ts +5 -0
  29. package/src/decorators/schema.decorator.js +15 -0
  30. package/src/decorators/schema.decorator.js.map +1 -0
  31. package/src/dtos/index.d.ts +0 -4
  32. package/src/dtos/index.js +0 -4
  33. package/src/dtos/index.js.map +1 -1
  34. package/src/dynamic-api.module.d.ts +1 -1
  35. package/src/dynamic-api.module.js +25 -20
  36. package/src/dynamic-api.module.js.map +1 -1
  37. package/src/gateways/base.gateway.js +9 -8
  38. package/src/gateways/base.gateway.js.map +1 -1
  39. package/src/gateways/dynamic-api-broadcast.gateway.d.ts +2 -2
  40. package/src/gateways/dynamic-api-broadcast.gateway.js +5 -5
  41. package/src/gateways/dynamic-api-broadcast.gateway.js.map +1 -1
  42. package/src/guards/base-policies.guard.d.ts +1 -1
  43. package/src/guards/base-policies.guard.js +5 -5
  44. package/src/guards/base-policies.guard.js.map +1 -1
  45. package/src/guards/dynamic-api-jwt-auth.guard.d.ts +1 -1
  46. package/src/guards/dynamic-api-jwt-auth.guard.js +7 -4
  47. package/src/guards/dynamic-api-jwt-auth.guard.js.map +1 -1
  48. package/src/guards/jwt-socket.guard.d.ts +1 -1
  49. package/src/guards/jwt-socket.guard.js +9 -10
  50. package/src/guards/jwt-socket.guard.js.map +1 -1
  51. package/src/helpers/event-registry.store.js +2 -2
  52. package/src/helpers/event-registry.store.js.map +1 -1
  53. package/src/helpers/index-sync.helper.js +4 -4
  54. package/src/helpers/index-sync.helper.js.map +1 -1
  55. package/src/helpers/index.d.ts +4 -21
  56. package/src/helpers/index.js +8 -21
  57. package/src/helpers/index.js.map +1 -1
  58. package/src/helpers/mint-token-pair.helper.js +12 -12
  59. package/src/helpers/mint-token-pair.helper.js.map +1 -1
  60. package/src/helpers/mixin-data.helper.d.ts +2 -2
  61. package/src/helpers/mixin-data.helper.js +2 -2
  62. package/src/helpers/mixin-data.helper.js.map +1 -1
  63. package/src/helpers/mongo-transaction.helper.js.map +1 -1
  64. package/src/helpers/paging-presenter-warning.helper.js +2 -2
  65. package/src/helpers/paging-presenter-warning.helper.js.map +1 -1
  66. package/src/helpers/repository.helper.js +2 -2
  67. package/src/helpers/repository.helper.js.map +1 -1
  68. package/src/helpers/route-decorators.helper.d.ts +1 -1
  69. package/src/helpers/schema.helper.js.map +1 -1
  70. package/src/helpers/socket-config.helper.d.ts +0 -1
  71. package/src/helpers/socket-config.helper.js +9 -19
  72. package/src/helpers/socket-config.helper.js.map +1 -1
  73. package/src/helpers/swagger-config.helper.d.ts +2 -2
  74. package/src/helpers/swagger-config.helper.js.map +1 -1
  75. package/src/helpers/validation-config.helper.js.map +1 -1
  76. package/src/helpers/versioning-config.helper.js.map +1 -1
  77. package/src/index.d.ts +0 -9
  78. package/src/index.js +0 -9
  79. package/src/index.js.map +1 -1
  80. package/src/interceptors/dynamic-api-cache.interceptor.d.ts +1 -1
  81. package/src/interceptors/dynamic-api-cache.interceptor.js +4 -0
  82. package/src/interceptors/dynamic-api-cache.interceptor.js.map +1 -1
  83. package/src/interfaces/dynamic-api-options.interface.d.ts +2 -2
  84. package/src/interfaces/dynamic-api-presence.interface.d.ts +1 -0
  85. package/src/interfaces/dynamic-api-presence.interface.js.map +1 -1
  86. package/src/interfaces/dynamic-api-route-config.interface.d.ts +1 -2
  87. package/src/interfaces/dynamic-api-route-config.interface.js.map +1 -1
  88. package/src/interfaces/dynamic-api-schema-options.interface.d.ts +2 -3
  89. package/src/interfaces/dynamic-api-service-before-save-callback.interface.d.ts +1 -15
  90. package/src/interfaces/dynamic-api-service-callback.interface.d.ts +1 -3
  91. package/src/interfaces/dynamic-api-service-provider.interface.d.ts +1 -2
  92. package/src/interfaces/dynamic-api-swagger-options.type.d.ts +1 -3
  93. package/src/interfaces/index.d.ts +4 -7
  94. package/src/interfaces/index.js +0 -7
  95. package/src/interfaces/index.js.map +1 -1
  96. package/src/logger/index.d.ts +1 -1
  97. package/src/logger/index.js +0 -15
  98. package/src/logger/index.js.map +1 -1
  99. package/src/mixins/policies-guard.mixin.d.ts +2 -1
  100. package/src/mixins/policies-guard.mixin.js +3 -3
  101. package/src/mixins/policies-guard.mixin.js.map +1 -1
  102. package/src/models/base-entity.model.js.map +1 -1
  103. package/src/models/soft-deletable-entity.model.js.map +1 -1
  104. package/src/modules/auth/auth-broadcast.helper.js +2 -2
  105. package/src/modules/auth/auth-broadcast.helper.js.map +1 -1
  106. package/src/modules/auth/auth.helper.d.ts +3 -3
  107. package/src/modules/auth/auth.helper.js +12 -11
  108. package/src/modules/auth/auth.helper.js.map +1 -1
  109. package/src/modules/auth/auth.module.js +15 -11
  110. package/src/modules/auth/auth.module.js.map +1 -1
  111. package/src/modules/auth/guards/jwt-socket-auth/jwt-socket-auth.guard.d.ts +1 -1
  112. package/src/modules/auth/guards/jwt-socket-auth/jwt-socket-auth.guard.js +7 -8
  113. package/src/modules/auth/guards/jwt-socket-auth/jwt-socket-auth.guard.js.map +1 -1
  114. package/src/modules/auth/guards/jwt-socket-refresh/jwt-socket-refresh.guard.js +4 -4
  115. package/src/modules/auth/guards/jwt-socket-refresh/jwt-socket-refresh.guard.js.map +1 -1
  116. package/src/modules/auth/interfaces/auth-controller.interface.d.ts +1 -1
  117. package/src/modules/auth/interfaces/auth-gateway.interface.d.ts +2 -1
  118. package/src/modules/auth/mixins/auth-controller.mixin.js +23 -17
  119. package/src/modules/auth/mixins/auth-controller.mixin.js.map +1 -1
  120. package/src/modules/auth/mixins/auth-gateway.mixin.js +8 -6
  121. package/src/modules/auth/mixins/auth-gateway.mixin.js.map +1 -1
  122. package/src/modules/auth/mixins/auth-policies-guard.mixin.d.ts +2 -1
  123. package/src/modules/auth/mixins/auth-policies-guard.mixin.js +1 -1
  124. package/src/modules/auth/mixins/auth-policies-guard.mixin.js.map +1 -1
  125. package/src/modules/auth/models/otp-code.model.d.ts +4 -4
  126. package/src/modules/auth/services/base-auth.service.d.ts +2 -1
  127. package/src/modules/auth/services/base-auth.service.js +8 -6
  128. package/src/modules/auth/services/base-auth.service.js.map +1 -1
  129. package/src/modules/dynamic-api-config/dynamic-api-config.module.d.ts +1 -1
  130. package/src/modules/dynamic-api-config/dynamic-api-config.module.js +3 -3
  131. package/src/modules/dynamic-api-config/dynamic-api-config.module.js.map +1 -1
  132. package/src/modules/health/index.d.ts +1 -2
  133. package/src/modules/health/index.js +3 -16
  134. package/src/modules/health/index.js.map +1 -1
  135. package/src/modules/presence/index.d.ts +1 -5
  136. package/src/modules/presence/index.js +3 -19
  137. package/src/modules/presence/index.js.map +1 -1
  138. package/src/modules/presence/presence.gateway.d.ts +1 -1
  139. package/src/modules/presence/presence.gateway.js +5 -5
  140. package/src/modules/presence/presence.gateway.js.map +1 -1
  141. package/src/modules/presence/presence.module.js +10 -9
  142. package/src/modules/presence/presence.module.js.map +1 -1
  143. package/src/routes/aggregate/aggregate-controller.mixin.d.ts +2 -2
  144. package/src/routes/aggregate/aggregate-controller.mixin.js +12 -8
  145. package/src/routes/aggregate/aggregate-controller.mixin.js.map +1 -1
  146. package/src/routes/aggregate/aggregate-gateway.interface.d.ts +2 -1
  147. package/src/routes/aggregate/aggregate-gateway.mixin.d.ts +2 -2
  148. package/src/routes/aggregate/aggregate-gateway.mixin.js +10 -7
  149. package/src/routes/aggregate/aggregate-gateway.mixin.js.map +1 -1
  150. package/src/routes/aggregate/aggregate.helper.d.ts +5 -4
  151. package/src/routes/aggregate/aggregate.helper.js +10 -10
  152. package/src/routes/aggregate/aggregate.helper.js.map +1 -1
  153. package/src/routes/aggregate/aggregate.module.d.ts +2 -2
  154. package/src/routes/aggregate/aggregate.module.js +4 -3
  155. package/src/routes/aggregate/aggregate.module.js.map +1 -1
  156. package/src/routes/aggregate/base-aggregate.service.d.ts +1 -1
  157. package/src/routes/aggregate/base-aggregate.service.js +2 -2
  158. package/src/routes/aggregate/base-aggregate.service.js.map +1 -1
  159. package/src/routes/create-many/base-create-many.service.d.ts +1 -1
  160. package/src/routes/create-many/base-create-many.service.js +5 -5
  161. package/src/routes/create-many/base-create-many.service.js.map +1 -1
  162. package/src/routes/create-many/create-many-controller.interface.d.ts +1 -1
  163. package/src/routes/create-many/create-many-controller.mixin.d.ts +2 -2
  164. package/src/routes/create-many/create-many-controller.mixin.js +16 -11
  165. package/src/routes/create-many/create-many-controller.mixin.js.map +1 -1
  166. package/src/routes/create-many/create-many-gateway.interface.d.ts +2 -1
  167. package/src/routes/create-many/create-many-gateway.mixin.d.ts +2 -2
  168. package/src/routes/create-many/create-many-gateway.mixin.js +10 -7
  169. package/src/routes/create-many/create-many-gateway.mixin.js.map +1 -1
  170. package/src/routes/create-many/create-many.helper.d.ts +5 -4
  171. package/src/routes/create-many/create-many.helper.js +13 -13
  172. package/src/routes/create-many/create-many.helper.js.map +1 -1
  173. package/src/routes/create-many/create-many.module.js +6 -5
  174. package/src/routes/create-many/create-many.module.js.map +1 -1
  175. package/src/routes/create-one/base-create-one.service.d.ts +1 -1
  176. package/src/routes/create-one/base-create-one.service.js +5 -5
  177. package/src/routes/create-one/base-create-one.service.js.map +1 -1
  178. package/src/routes/create-one/create-one-controller.interface.d.ts +1 -1
  179. package/src/routes/create-one/create-one-controller.mixin.d.ts +2 -2
  180. package/src/routes/create-one/create-one-controller.mixin.js +14 -10
  181. package/src/routes/create-one/create-one-controller.mixin.js.map +1 -1
  182. package/src/routes/create-one/create-one-gateway.interface.d.ts +2 -1
  183. package/src/routes/create-one/create-one-gateway.mixin.d.ts +2 -2
  184. package/src/routes/create-one/create-one-gateway.mixin.js +10 -7
  185. package/src/routes/create-one/create-one-gateway.mixin.js.map +1 -1
  186. package/src/routes/create-one/create-one.helper.d.ts +5 -4
  187. package/src/routes/create-one/create-one.helper.js +13 -13
  188. package/src/routes/create-one/create-one.helper.js.map +1 -1
  189. package/src/routes/create-one/create-one.module.js +6 -5
  190. package/src/routes/create-one/create-one.module.js.map +1 -1
  191. package/src/routes/custom/create-custom-route-controller.js +15 -13
  192. package/src/routes/custom/create-custom-route-controller.js.map +1 -1
  193. package/src/routes/custom/create-custom-route-gateway.js +12 -10
  194. package/src/routes/custom/create-custom-route-gateway.js.map +1 -1
  195. package/src/routes/custom/custom-route-callback.service.d.ts +1 -1
  196. package/src/routes/custom/custom-route-callback.service.js +2 -2
  197. package/src/routes/custom/custom-route-callback.service.js.map +1 -1
  198. package/src/routes/delete-many/base-delete-many.service.d.ts +2 -2
  199. package/src/routes/delete-many/base-delete-many.service.js +5 -5
  200. package/src/routes/delete-many/base-delete-many.service.js.map +1 -1
  201. package/src/routes/delete-many/delete-many-controller.interface.d.ts +2 -2
  202. package/src/routes/delete-many/delete-many-controller.mixin.d.ts +2 -2
  203. package/src/routes/delete-many/delete-many-controller.mixin.js +14 -10
  204. package/src/routes/delete-many/delete-many-controller.mixin.js.map +1 -1
  205. package/src/routes/delete-many/delete-many-gateway.interface.d.ts +3 -2
  206. package/src/routes/delete-many/delete-many-gateway.mixin.d.ts +2 -2
  207. package/src/routes/delete-many/delete-many-gateway.mixin.js +10 -7
  208. package/src/routes/delete-many/delete-many-gateway.mixin.js.map +1 -1
  209. package/src/routes/delete-many/delete-many.helper.d.ts +5 -4
  210. package/src/routes/delete-many/delete-many.helper.js +13 -13
  211. package/src/routes/delete-many/delete-many.helper.js.map +1 -1
  212. package/src/routes/delete-many/delete-many.module.js +6 -5
  213. package/src/routes/delete-many/delete-many.module.js.map +1 -1
  214. package/src/routes/delete-one/base-delete-one.service.d.ts +2 -2
  215. package/src/routes/delete-one/base-delete-one.service.js +5 -5
  216. package/src/routes/delete-one/base-delete-one.service.js.map +1 -1
  217. package/src/routes/delete-one/delete-one-controller.interface.d.ts +1 -1
  218. package/src/routes/delete-one/delete-one-controller.mixin.d.ts +2 -2
  219. package/src/routes/delete-one/delete-one-controller.mixin.js +14 -10
  220. package/src/routes/delete-one/delete-one-controller.mixin.js.map +1 -1
  221. package/src/routes/delete-one/delete-one-gateway.interface.d.ts +3 -2
  222. package/src/routes/delete-one/delete-one-gateway.mixin.d.ts +2 -2
  223. package/src/routes/delete-one/delete-one-gateway.mixin.js +10 -7
  224. package/src/routes/delete-one/delete-one-gateway.mixin.js.map +1 -1
  225. package/src/routes/delete-one/delete-one.helper.d.ts +5 -4
  226. package/src/routes/delete-one/delete-one.helper.js +13 -13
  227. package/src/routes/delete-one/delete-one.helper.js.map +1 -1
  228. package/src/routes/delete-one/delete-one.module.js +6 -5
  229. package/src/routes/delete-one/delete-one.module.js.map +1 -1
  230. package/src/routes/duplicate-many/base-duplicate-many.service.d.ts +1 -1
  231. package/src/routes/duplicate-many/base-duplicate-many.service.js +4 -4
  232. package/src/routes/duplicate-many/base-duplicate-many.service.js.map +1 -1
  233. package/src/routes/duplicate-many/duplicate-many-controller.interface.d.ts +1 -1
  234. package/src/routes/duplicate-many/duplicate-many-controller.mixin.d.ts +2 -2
  235. package/src/routes/duplicate-many/duplicate-many-controller.mixin.js +16 -11
  236. package/src/routes/duplicate-many/duplicate-many-controller.mixin.js.map +1 -1
  237. package/src/routes/duplicate-many/duplicate-many-gateway.interface.d.ts +3 -2
  238. package/src/routes/duplicate-many/duplicate-many-gateway.mixin.d.ts +2 -2
  239. package/src/routes/duplicate-many/duplicate-many-gateway.mixin.js +10 -7
  240. package/src/routes/duplicate-many/duplicate-many-gateway.mixin.js.map +1 -1
  241. package/src/routes/duplicate-many/duplicate-many.helper.d.ts +5 -4
  242. package/src/routes/duplicate-many/duplicate-many.helper.js +13 -13
  243. package/src/routes/duplicate-many/duplicate-many.helper.js.map +1 -1
  244. package/src/routes/duplicate-many/duplicate-many.module.js +6 -5
  245. package/src/routes/duplicate-many/duplicate-many.module.js.map +1 -1
  246. package/src/routes/duplicate-one/base-duplicate-one.service.d.ts +1 -1
  247. package/src/routes/duplicate-one/base-duplicate-one.service.js +4 -4
  248. package/src/routes/duplicate-one/base-duplicate-one.service.js.map +1 -1
  249. package/src/routes/duplicate-one/duplicate-one-controller.interface.d.ts +1 -1
  250. package/src/routes/duplicate-one/duplicate-one-controller.mixin.d.ts +2 -2
  251. package/src/routes/duplicate-one/duplicate-one-controller.mixin.js +18 -13
  252. package/src/routes/duplicate-one/duplicate-one-controller.mixin.js.map +1 -1
  253. package/src/routes/duplicate-one/duplicate-one-gateway.interface.d.ts +3 -2
  254. package/src/routes/duplicate-one/duplicate-one-gateway.mixin.d.ts +2 -2
  255. package/src/routes/duplicate-one/duplicate-one-gateway.mixin.js +10 -7
  256. package/src/routes/duplicate-one/duplicate-one-gateway.mixin.js.map +1 -1
  257. package/src/routes/duplicate-one/duplicate-one.helper.d.ts +5 -4
  258. package/src/routes/duplicate-one/duplicate-one.helper.js +13 -13
  259. package/src/routes/duplicate-one/duplicate-one.helper.js.map +1 -1
  260. package/src/routes/duplicate-one/duplicate-one.module.js +6 -5
  261. package/src/routes/duplicate-one/duplicate-one.module.js.map +1 -1
  262. package/src/routes/get-many/base-get-many.service.d.ts +1 -1
  263. package/src/routes/get-many/base-get-many.service.js +2 -2
  264. package/src/routes/get-many/base-get-many.service.js.map +1 -1
  265. package/src/routes/get-many/get-many-controller.mixin.d.ts +2 -2
  266. package/src/routes/get-many/get-many-controller.mixin.js +13 -10
  267. package/src/routes/get-many/get-many-controller.mixin.js.map +1 -1
  268. package/src/routes/get-many/get-many-gateway.interface.d.ts +2 -1
  269. package/src/routes/get-many/get-many-gateway.mixin.d.ts +2 -2
  270. package/src/routes/get-many/get-many-gateway.mixin.js +10 -8
  271. package/src/routes/get-many/get-many-gateway.mixin.js.map +1 -1
  272. package/src/routes/get-many/get-many.helper.d.ts +5 -4
  273. package/src/routes/get-many/get-many.helper.js +10 -10
  274. package/src/routes/get-many/get-many.helper.js.map +1 -1
  275. package/src/routes/get-many/get-many.module.js +4 -3
  276. package/src/routes/get-many/get-many.module.js.map +1 -1
  277. package/src/routes/get-one/base-get-one.service.d.ts +1 -1
  278. package/src/routes/get-one/base-get-one.service.js +2 -2
  279. package/src/routes/get-one/base-get-one.service.js.map +1 -1
  280. package/src/routes/get-one/get-one-controller.mixin.d.ts +2 -2
  281. package/src/routes/get-one/get-one-controller.mixin.js +11 -8
  282. package/src/routes/get-one/get-one-controller.mixin.js.map +1 -1
  283. package/src/routes/get-one/get-one-gateway.interface.d.ts +3 -2
  284. package/src/routes/get-one/get-one-gateway.mixin.d.ts +2 -2
  285. package/src/routes/get-one/get-one-gateway.mixin.js +9 -7
  286. package/src/routes/get-one/get-one-gateway.mixin.js.map +1 -1
  287. package/src/routes/get-one/get-one.helper.d.ts +5 -4
  288. package/src/routes/get-one/get-one.helper.js +10 -10
  289. package/src/routes/get-one/get-one.helper.js.map +1 -1
  290. package/src/routes/get-one/get-one.module.js +4 -3
  291. package/src/routes/get-one/get-one.module.js.map +1 -1
  292. package/src/routes/replace-one/base-replace-one.service.d.ts +1 -1
  293. package/src/routes/replace-one/base-replace-one.service.js +5 -5
  294. package/src/routes/replace-one/base-replace-one.service.js.map +1 -1
  295. package/src/routes/replace-one/replace-one-controller.interface.d.ts +1 -1
  296. package/src/routes/replace-one/replace-one-controller.mixin.d.ts +2 -2
  297. package/src/routes/replace-one/replace-one-controller.mixin.js +16 -12
  298. package/src/routes/replace-one/replace-one-controller.mixin.js.map +1 -1
  299. package/src/routes/replace-one/replace-one-gateway.interface.d.ts +3 -2
  300. package/src/routes/replace-one/replace-one-gateway.mixin.d.ts +2 -2
  301. package/src/routes/replace-one/replace-one-gateway.mixin.js +8 -6
  302. package/src/routes/replace-one/replace-one-gateway.mixin.js.map +1 -1
  303. package/src/routes/replace-one/replace-one.helper.d.ts +5 -4
  304. package/src/routes/replace-one/replace-one.helper.js +13 -13
  305. package/src/routes/replace-one/replace-one.helper.js.map +1 -1
  306. package/src/routes/replace-one/replace-one.module.js +6 -5
  307. package/src/routes/replace-one/replace-one.module.js.map +1 -1
  308. package/src/routes/update-many/base-update-many.service.d.ts +1 -1
  309. package/src/routes/update-many/base-update-many.service.js +4 -4
  310. package/src/routes/update-many/base-update-many.service.js.map +1 -1
  311. package/src/routes/update-many/update-many-controller.interface.d.ts +1 -1
  312. package/src/routes/update-many/update-many-controller.mixin.d.ts +2 -2
  313. package/src/routes/update-many/update-many-controller.mixin.js +16 -11
  314. package/src/routes/update-many/update-many-controller.mixin.js.map +1 -1
  315. package/src/routes/update-many/update-many-gateway.interface.d.ts +3 -2
  316. package/src/routes/update-many/update-many-gateway.mixin.d.ts +2 -2
  317. package/src/routes/update-many/update-many-gateway.mixin.js +10 -7
  318. package/src/routes/update-many/update-many-gateway.mixin.js.map +1 -1
  319. package/src/routes/update-many/update-many.helper.d.ts +5 -4
  320. package/src/routes/update-many/update-many.helper.js +13 -13
  321. package/src/routes/update-many/update-many.helper.js.map +1 -1
  322. package/src/routes/update-many/update-many.module.js +6 -5
  323. package/src/routes/update-many/update-many.module.js.map +1 -1
  324. package/src/routes/update-one/base-update-one.service.d.ts +1 -1
  325. package/src/routes/update-one/base-update-one.service.js +5 -5
  326. package/src/routes/update-one/base-update-one.service.js.map +1 -1
  327. package/src/routes/update-one/update-one-controller.interface.d.ts +1 -1
  328. package/src/routes/update-one/update-one-controller.mixin.d.ts +2 -2
  329. package/src/routes/update-one/update-one-controller.mixin.js +18 -13
  330. package/src/routes/update-one/update-one-controller.mixin.js.map +1 -1
  331. package/src/routes/update-one/update-one-gateway.interface.d.ts +3 -2
  332. package/src/routes/update-one/update-one-gateway.mixin.d.ts +2 -2
  333. package/src/routes/update-one/update-one-gateway.mixin.js +8 -6
  334. package/src/routes/update-one/update-one-gateway.mixin.js.map +1 -1
  335. package/src/routes/update-one/update-one.helper.d.ts +5 -4
  336. package/src/routes/update-one/update-one.helper.js +13 -13
  337. package/src/routes/update-one/update-one.helper.js.map +1 -1
  338. package/src/routes/update-one/update-one.module.js +6 -5
  339. package/src/routes/update-one/update-one.module.js.map +1 -1
  340. package/src/services/base/base.service.js +3 -4
  341. package/src/services/base/base.service.js.map +1 -1
  342. package/src/services/bcrypt/bcrypt.service.js.map +1 -1
  343. package/src/services/dynamic-api-broadcast/dynamic-api-broadcast.service.js +4 -4
  344. package/src/services/dynamic-api-broadcast/dynamic-api-broadcast.service.js.map +1 -1
  345. package/src/services/dynamic-api-cache/dynamic-api-cache.service.js +2 -2
  346. package/src/services/dynamic-api-cache/dynamic-api-cache.service.js.map +1 -1
  347. package/src/services/dynamic-api-entity/dynamic-api-entity.service.d.ts +6 -0
  348. package/src/services/dynamic-api-entity/dynamic-api-entity.service.js +11 -0
  349. package/src/services/dynamic-api-entity/dynamic-api-entity.service.js.map +1 -0
  350. package/src/services/dynamic-api-global-state/dynamic-api-global-state.service.d.ts +6 -2
  351. package/src/services/index.d.ts +1 -2
  352. package/src/services/index.js +1 -2
  353. package/src/services/index.js.map +1 -1
  354. package/src/testing/create-dynamic-api-testing-app.js +1 -1
  355. package/src/testing/create-dynamic-api-testing-app.js.map +1 -1
  356. package/src/utils/index.d.ts +0 -1
  357. package/src/utils/index.js +0 -1
  358. package/src/utils/index.js.map +1 -1
  359. package/src/version.json +1 -1
  360. package/test/e2e.setup.d.ts +3 -3
  361. package/test/e2e.setup.js +8 -7
  362. package/test/e2e.setup.js.map +1 -1
  363. package/test/for-feature/ability-predicate-filter.e2e-spec.js +20 -20
  364. package/test/for-feature/ability-predicate-filter.e2e-spec.js.map +1 -1
  365. package/test/for-feature/ability-predicates.e2e-spec.js +28 -27
  366. package/test/for-feature/ability-predicates.e2e-spec.js.map +1 -1
  367. package/test/for-feature/after-save-callback-reliability.e2e-spec.js +35 -34
  368. package/test/for-feature/after-save-callback-reliability.e2e-spec.js.map +1 -1
  369. package/test/for-feature/aggregate-ability-predicate-paging.e2e-spec.js +20 -19
  370. package/test/for-feature/aggregate-ability-predicate-paging.e2e-spec.js.map +1 -1
  371. package/test/for-feature/aggregate-paging-without-from-aggregate.e2e-spec.js +11 -10
  372. package/test/for-feature/aggregate-paging-without-from-aggregate.e2e-spec.js.map +1 -1
  373. package/test/for-feature/aggregate-swagger-paginated-response.e2e-spec.js +18 -17
  374. package/test/for-feature/aggregate-swagger-paginated-response.e2e-spec.js.map +1 -1
  375. package/test/for-feature/audit-log.e2e-spec.js +26 -25
  376. package/test/for-feature/audit-log.e2e-spec.js.map +1 -1
  377. package/test/for-feature/base-entity.e2e-spec.js +126 -125
  378. package/test/for-feature/base-entity.e2e-spec.js.map +1 -1
  379. package/test/for-feature/broadcast-event-registry.e2e-spec.js +20 -19
  380. package/test/for-feature/broadcast-event-registry.e2e-spec.js.map +1 -1
  381. package/test/for-feature/cache-identity-key.e2e-spec.js +22 -21
  382. package/test/for-feature/cache-identity-key.e2e-spec.js.map +1 -1
  383. package/test/for-feature/cache-scoped-invalidation.e2e-spec.js +33 -32
  384. package/test/for-feature/cache-scoped-invalidation.e2e-spec.js.map +1 -1
  385. package/test/for-feature/callbacks-user.e2e-spec.js +159 -158
  386. package/test/for-feature/callbacks-user.e2e-spec.js.map +1 -1
  387. package/test/for-feature/cascade-and-before-delete.e2e-spec.js +47 -46
  388. package/test/for-feature/cascade-and-before-delete.e2e-spec.js.map +1 -1
  389. package/test/for-feature/cascade-transaction-atomicity.e2e-spec.js +17 -16
  390. package/test/for-feature/cascade-transaction-atomicity.e2e-spec.js.map +1 -1
  391. package/test/for-feature/custom-route-auth-ability-predicate.e2e-spec.js +17 -16
  392. package/test/for-feature/custom-route-auth-ability-predicate.e2e-spec.js.map +1 -1
  393. package/test/for-feature/custom-route-inject.e2e-spec.js +9 -8
  394. package/test/for-feature/custom-route-inject.e2e-spec.js.map +1 -1
  395. package/test/for-feature/custom-route-params-openapi.e2e-spec.js +10 -9
  396. package/test/for-feature/custom-route-params-openapi.e2e-spec.js.map +1 -1
  397. package/test/for-feature/custom-route-target-param.e2e-spec.js +14 -13
  398. package/test/for-feature/custom-route-target-param.e2e-spec.js.map +1 -1
  399. package/test/for-feature/custom-routes.e2e-spec.js +38 -38
  400. package/test/for-feature/custom-routes.e2e-spec.js.map +1 -1
  401. package/test/for-feature/db-aware-validators.e2e-spec.js +40 -39
  402. package/test/for-feature/db-aware-validators.e2e-spec.js.map +1 -1
  403. package/test/for-feature/derived-fields-protected-from-user.e2e-spec.js +39 -38
  404. package/test/for-feature/derived-fields-protected-from-user.e2e-spec.js.map +1 -1
  405. package/test/for-feature/derived-fields-raw-write-recompute.e2e-spec.js +25 -24
  406. package/test/for-feature/derived-fields-raw-write-recompute.e2e-spec.js.map +1 -1
  407. package/test/for-feature/exclude-from-response.e2e-spec.js +21 -20
  408. package/test/for-feature/exclude-from-response.e2e-spec.js.map +1 -1
  409. package/test/for-feature/http-broadcast.e2e-spec.js +62 -61
  410. package/test/for-feature/http-broadcast.e2e-spec.js.map +1 -1
  411. package/test/for-feature/index-sync.e2e-spec.js +39 -28
  412. package/test/for-feature/index-sync.e2e-spec.js.map +1 -1
  413. package/test/for-feature/paging-query-helper.e2e-spec.js +21 -20
  414. package/test/for-feature/paging-query-helper.e2e-spec.js.map +1 -1
  415. package/test/for-feature/populate.e2e-spec.js +18 -17
  416. package/test/for-feature/populate.e2e-spec.js.map +1 -1
  417. package/test/for-feature/presence.e2e-spec.js +40 -18
  418. package/test/for-feature/presence.e2e-spec.js.map +1 -1
  419. package/test/for-feature/raw-update-callback-methods.e2e-spec.js +49 -48
  420. package/test/for-feature/raw-update-callback-methods.e2e-spec.js.map +1 -1
  421. package/test/for-feature/room-broadcast.e2e-spec.js +61 -60
  422. package/test/for-feature/room-broadcast.e2e-spec.js.map +1 -1
  423. package/test/for-feature/soft-deletable-entity.e2e-spec.js +136 -135
  424. package/test/for-feature/soft-deletable-entity.e2e-spec.js.map +1 -1
  425. package/test/for-feature/websockets.e2e-spec.js +54 -53
  426. package/test/for-feature/websockets.e2e-spec.js.map +1 -1
  427. package/test/for-root/auth-api-basic.e2e-spec.js +94 -93
  428. package/test/for-root/auth-api-basic.e2e-spec.js.map +1 -1
  429. package/test/for-root/auth-api-broadcast.e2e-spec.js +24 -23
  430. package/test/for-root/auth-api-broadcast.e2e-spec.js.map +1 -1
  431. package/test/for-root/auth-api-login.e2e-spec.js +99 -97
  432. package/test/for-root/auth-api-login.e2e-spec.js.map +1 -1
  433. package/test/for-root/auth-api-logout.e2e-spec.js +18 -17
  434. package/test/for-root/auth-api-logout.e2e-spec.js.map +1 -1
  435. package/test/for-root/auth-api-mint-token-pair.e2e-spec.js +17 -16
  436. package/test/for-root/auth-api-mint-token-pair.e2e-spec.js.map +1 -1
  437. package/test/for-root/auth-api-passwordless.e2e-spec.js +37 -36
  438. package/test/for-root/auth-api-passwordless.e2e-spec.js.map +1 -1
  439. package/test/for-root/auth-api-rate-limit.e2e-spec.js +14 -13
  440. package/test/for-root/auth-api-rate-limit.e2e-spec.js.map +1 -1
  441. package/test/for-root/auth-api-refresh-token-cookie.e2e-spec.js +27 -26
  442. package/test/for-root/auth-api-refresh-token-cookie.e2e-spec.js.map +1 -1
  443. package/test/for-root/auth-api-refresh-token.e2e-spec.js +93 -54
  444. package/test/for-root/auth-api-refresh-token.e2e-spec.js.map +1 -1
  445. package/test/for-root/auth-api-register.e2e-spec.js +29 -27
  446. package/test/for-root/auth-api-register.e2e-spec.js.map +1 -1
  447. package/test/for-root/auth-api-reset-password.e2e-spec.js +50 -48
  448. package/test/for-root/auth-api-reset-password.e2e-spec.js.map +1 -1
  449. package/test/for-root/auth-api-update-account-derived-field.e2e-spec.js +9 -8
  450. package/test/for-root/auth-api-update-account-derived-field.e2e-spec.js.map +1 -1
  451. package/test/for-root/auth-api-update-account.e2e-spec.js +38 -37
  452. package/test/for-root/auth-api-update-account.e2e-spec.js.map +1 -1
  453. package/test/for-root/health-check.e2e-spec.js +21 -20
  454. package/test/for-root/health-check.e2e-spec.js.map +1 -1
  455. package/test/for-root/initialization.e2e-spec.js +10 -9
  456. package/test/for-root/initialization.e2e-spec.js.map +1 -1
  457. package/test/for-root/websockets-auth-basic.e2e-spec.js +115 -114
  458. package/test/for-root/websockets-auth-basic.e2e-spec.js.map +1 -1
  459. package/test/for-root/websockets-auth-broadcast.e2e-spec.js +26 -25
  460. package/test/for-root/websockets-auth-broadcast.e2e-spec.js.map +1 -1
  461. package/test/for-root/websockets-auth-login.e2e-spec.js +40 -38
  462. package/test/for-root/websockets-auth-login.e2e-spec.js.map +1 -1
  463. package/test/for-root/websockets-auth-refresh-token.e2e-spec.js +22 -21
  464. package/test/for-root/websockets-auth-refresh-token.e2e-spec.js.map +1 -1
  465. package/test/for-root/websockets-auth-register.e2e-spec.js +36 -34
  466. package/test/for-root/websockets-auth-register.e2e-spec.js.map +1 -1
  467. package/test/for-root/websockets-auth-reset-password.e2e-spec.js +56 -54
  468. package/test/for-root/websockets-auth-reset-password.e2e-spec.js.map +1 -1
  469. package/test/helpers/create-mock.helper.d.ts +12 -0
  470. package/test/helpers/create-mock.helper.js +58 -0
  471. package/test/helpers/create-mock.helper.js.map +1 -0
  472. package/test/helpers/index.d.ts +1 -0
  473. package/test/helpers/index.js +18 -0
  474. package/test/helpers/index.js.map +1 -0
  475. package/test/helpers/register-ts-require-hook.d.ts +1 -0
  476. package/test/helpers/register-ts-require-hook.js +20 -0
  477. package/test/helpers/register-ts-require-hook.js.map +1 -0
  478. package/test/shared/entities/refresh-token-user.factory.d.ts +1 -0
  479. package/test/shared/entities/refresh-token-user.factory.js +4 -0
  480. package/test/shared/entities/refresh-token-user.factory.js.map +1 -1
  481. package/test/testing/create-dynamic-api-testing-app.e2e-spec.js +17 -15
  482. package/test/testing/create-dynamic-api-testing-app.e2e-spec.js.map +1 -1
  483. package/test/utils.d.ts +5 -1
  484. package/test/utils.js +2 -2
  485. package/test/utils.js.map +1 -1
  486. package/tsconfig.tsbuildinfo +1 -1
  487. package/src/decorators/schema-options.decorator.d.ts +0 -5
  488. package/src/decorators/schema-options.decorator.js +0 -14
  489. package/src/decorators/schema-options.decorator.js.map +0 -1
  490. package/src/utils/deep-patial.d.ts +0 -1
  491. package/src/utils/deep-patial.js +0 -3
  492. package/src/utils/deep-patial.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,159 @@
1
1
  Changelog
2
2
 
3
+ ## [5.1.0](https://github.com/MikeDev75015/mongodb-dynamic-api/compare/v5.0.0...v5.1.0) (2026-09-03)
4
+
5
+ ### ci
6
+
7
+ * **ci:** stop rebasing develop onto main for every release — fast-forward only ([5071caa](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/5071caad5b509c2c507d2b059971375462a590cb)), closes [#2681](https://github.com/MikeDev75015/mongodb-dynamic-api/issues/2681) [#2703](https://github.com/MikeDev75015/mongodb-dynamic-api/issues/2703)
8
+
9
+ ### quality
10
+
11
+ * **quality:** avoid implicit ObjectId stringification in refreshToken (S6551) ([32dd5c2](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/32dd5c2f291e556678c75ce52095e46d9a7bc7ad))
12
+
13
+ ### presence
14
+
15
+ * **presence:** add enableGateway option; export isTransactionsUnsupportedError ([65e3074](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/65e3074645fe4beca3bfcbd15f46127e259fb3b7))
16
+
17
+ ### mint-token-pair
18
+
19
+ * **mint-token-pair:** resolve the entity model via the public DynamicApiEntityService ([c1110bd](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/c1110bd2e28858177e81a7496d2ad59d81f6ece9))
20
+
21
+ ### migrate-v5
22
+
23
+ * **migrate-v5:** search every import declaration for a module, not just the first ([b24dee4](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/b24dee4dc189ca5a15fbfaa18e3c21d3e27b323d))
24
+
25
+ ### auth
26
+
27
+ * **auth:** rebuild refresh-token claims from the DB, not the stale JWT payload ([866df26](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/866df26332101b7830a94168c5c3e5ef23671187))
28
+
29
+ ## [5.0.0](https://github.com/MikeDev75015/mongodb-dynamic-api/compare/v4.24.1...v5.0.0) (2026-09-03)
30
+
31
+ ### ⚠ BREAKING CHANGES
32
+
33
+ * **websockets:** WebSocket clients connecting with `io(url, { query: {
34
+ accessToken } })` are no longer authenticated — switch to `io(url, { auth: {
35
+ token } })`.
36
+
37
+ Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
38
+ Claude-Session: https://claude.ai/code/session_012Rfw85JqCRePDfX9utkEou
39
+ * **interfaces:** the following deprecated aliases are removed:
40
+ DynamicAPIRouteConfig (use DynamicApiRouteConfig), AnyBeforeSaveCallback
41
+ (use the per-route-typed beforeSaveCallback directly),
42
+ DynamicApiServiceBeforeSaveCreateContext/CreateManyContext/UpdateContext/
43
+ UpdateManyContext/ReplaceContext/DeleteContext/DeleteManyContext/
44
+ DuplicateContext/DuplicateManyContext (use the matching
45
+ BeforeSave*Context), DynamicApiServiceBeforeSaveCallback/ListCallback/
46
+ DeleteCallback/DeleteManyCallback (use the matching BeforeSave*Callback),
47
+ DynamicApiCallbackMethods (use CallbackMethods), DynamicApiServiceCallback
48
+ (use AfterSaveCallback), DynamicAPIServiceProvider (use
49
+ DynamicApiServiceProvider), DynamicAPISwaggerExtraConfig (use
50
+ DynamicApiSwaggerExtraConfig), DynamicAPISwaggerOptions (use
51
+ DynamicApiSwaggerOptions).
52
+
53
+ Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
54
+ Claude-Session: https://claude.ai/code/session_012Rfw85JqCRePDfX9utkEou
55
+ * **websockets:** `enableDynamicAPIWebSockets(app, 50)` no longer works.
56
+ Use `enableDynamicAPIWebSockets(app, { maxListeners: 50 })` instead.
57
+
58
+ Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
59
+ Claude-Session: https://claude.ai/code/session_012Rfw85JqCRePDfX9utkEou
60
+ * **schema:** the `DynamicApiSchemaOptions`/`DynamicAPISchemaOptions`
61
+ decorator and the `DynamicApiSchemaOptionsInterface`/`DynamicAPISchemaOptionsInterface`
62
+ type aliases are gone. Use `@DynamicApiSchema({ ...mongooseOptions, ...mdaOptions })`
63
+ instead of stacking `@Schema()` + the old decorator; `DynamicApiSchemaOptions` is
64
+ now the type name for just the MDA-specific options.
65
+
66
+ Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
67
+ Claude-Session: https://claude.ai/code/session_012Rfw85JqCRePDfX9utkEou
68
+ * **services:** restore BcryptService and DynamicApiBroadcastService to the public API
69
+ * **utils:** `utils/deep-patial.ts` no longer exists. Nothing publicly
70
+ exported changes shape or name — `DeepPartial` continues to be exported the
71
+ same way it always has been.
72
+
73
+ Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
74
+ Claude-Session: https://claude.ai/code/session_012Rfw85JqCRePDfX9utkEou
75
+ * **api:** the following are no longer exported from
76
+ `mongodb-dynamic-api`: `ApiEndpointVisibility`, `RateLimit`, `ValidatorPipe`,
77
+ `IS_PUBLIC_KEY`, `ManyEntityQuery`, `DeletePresenter`, `EntityParam`,
78
+ `EntityQuery`, `DynamicApiDecoratorBuilder`, `PoliciesGuard`,
79
+ `PoliciesGuardConstructor`, `AuthPoliciesGuardConstructor`, `RouteModule`,
80
+ `DYNAMIC_API_GLOBAL_STATE`, `Credentials`, `EntitySchemas`,
81
+ `DynamicApiGlobalState`, `AfterSaveCallbackConfig`, `GatewayResponse`, every
82
+ internal helper under `helpers/**` other than the `enableDynamicAPI*`
83
+ functions/`mintTokenPair`/`parsePagingParams`, `MongoDBDynamicApiLogger`,
84
+ `createHealthController`, `PresenceController`, `InMemoryPresenceAdapter`,
85
+ `RedisPresenceAdapter` and `createPresenceGateway`. None of these were ever
86
+ documented; none has a supported replacement.
87
+
88
+ Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
89
+ Claude-Session: https://claude.ai/code/session_012Rfw85JqCRePDfX9utkEou
90
+ * **services:** `DynamicApiGlobalStateService` is no longer exported from
91
+ `mongodb-dynamic-api`. Use `DynamicApiEntityService.getModel(Entity)` instead
92
+ of `DynamicApiGlobalStateService.getEntityModel(Entity)` to resolve a
93
+ registered entity's Mongoose model outside the HTTP request cycle.
94
+
95
+ Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
96
+ Claude-Session: https://claude.ai/code/session_012Rfw85JqCRePDfX9utkEou
97
+
98
+ ### schematics
99
+
100
+ * **schematics:** scaffold new entities with @DynamicApiSchema ([eec767f](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/eec767fcd9a3fc8e2521aeaff5b282ae379b8f6c))
101
+
102
+ ### migrate-v5
103
+
104
+ * **migrate-v5:** add a codemod + CLI for the v4 to v5 upgrade ([85bddc6](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/85bddc6f83958b0e7dd9474801fb2e3ed1cbfbb1))
105
+ * **migrate-v5:** catch up the codemod with the deprecated-alias sweep ([313e790](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/313e7909dbebd1c03c068f00d7e6d0f342bfcd31))
106
+
107
+ ### websockets
108
+
109
+ * **websockets:** remove deprecated numeric overload from enableDynamicAPIWebSockets ([3feb38f](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/3feb38f4f6b240c010bd7318f07cf23f01a00509))
110
+ * **websockets:** remove the deprecated query.accessToken auth fallback ([6e7de96](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/6e7de964e7260b87c767f5e4ae1bb016652dd343))
111
+
112
+ ### interfaces
113
+
114
+ * **interfaces:** remove deprecated verbose/all-caps type aliases ([33ab1bf](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/33ab1bfdc180d58e3d51949503ee17333c0411f6))
115
+
116
+ ### schema
117
+
118
+ * **schema:** add DynamicApiSchema decorator, replace @Schema + DynamicApiSchemaOptions ([ff49b49](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/ff49b49e0831d74423c574ea035ca62d165781a1))
119
+
120
+ ### services
121
+
122
+ * **services:** expose DynamicApiEntityService.getModel instead of the internal DynamicApiGlobalStateService ([925c0c0](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/925c0c0aebee8aa62924ce54f3b8cd27333f5c58))
123
+ * **services:** restore BcryptService and DynamicApiBroadcastService to the public API ([89c317d](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/89c317d65bc8939c656481deb57b29735c596b94))
124
+
125
+ ### utils
126
+
127
+ * **utils:** remove deep-patial typo alias ([b547822](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/b54782225377eeb3ac795cdfba3f8a5d83f50639))
128
+
129
+ ### api
130
+
131
+ * **api:** curate decorators, dtos, interfaces, helpers, logger and health/presence exports ([4a62b79](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/4a62b79ee5efa076d13b4189f9f28374ba40ef2e))
132
+
133
+ ### test
134
+
135
+ * **test:** Vitest codemod for 154 unit specs + 2 shared mock fixtures (migration Phase 3, partial) ([3f06e33](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/3f06e3317c6dd0cf7171c7c8040d5fa3f854fc03)), closes [#2](https://github.com/MikeDev75015/mongodb-dynamic-api/issues/2)
136
+ * **test:** Vitest codemod for 154 unit specs + 2 shared mock fixtures (migration Phase 3, partial) ([c3727df](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/c3727df5bb5ba4e7756c8c4b0a8ddab6b3cfa9a2)), closes [#2](https://github.com/MikeDev75015/mongodb-dynamic-api/issues/2)
137
+ * **test:** wire SWC into Vitest, convert 2 pilot unit specs (migration Phase 2) ([d8908dc](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/d8908dc7e01fe606842ea510e556684169c79a53))
138
+
139
+ ### guards,cache
140
+
141
+ * **guards,cache:** bypass global HTTP-only guard/interceptor for websocket contexts under Nest 12 ([a2b078c](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/a2b078c8c3419067a1ce484699fa894ace4aa91f))
142
+
143
+ ### auth
144
+
145
+ * **auth:** register AuthModuleOptions to fix Nest 12 AuthGuard() DI regression ([64a0852](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/64a08523f62266733caee79fadff0e7201e9bd45))
146
+
147
+ ### vitest
148
+
149
+ * **vitest:** 3 real production bugs surfaced by the e2e Vitest batch conversion ([684b6eb](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/684b6eba05a527958bbbea96d82a2ee82f370acb))
150
+ * **vitest:** convert all 53 e2e-spec files + shared e2e.setup.ts (Phase 3 complete) ([fc6bd55](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/fc6bd55c5b379954f2d8042930057c29e31382fd))
151
+ * **vitest:** convert the last 6 jest.requireActual unit specs (Phase 3 unit specs done) ([3f48c8b](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/3f48c8b098f5a86d060f6310df4a824d554f738d)), closes [#2](https://github.com/MikeDev75015/mongodb-dynamic-api/issues/2)
152
+ * **vitest:** cut CI over from Jest to Vitest (Phase 4) ([ed758b9](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/ed758b9fb5ebea569d7fb51a4cfb0f4859693d1e))
153
+ * **vitest:** register a native require() hook for .ts, closing the schematics gap ([f6b2340](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/f6b23403bf1c8533ae811e4f04deccbb630ba4b5))
154
+ * **vitest:** repair 22 spec files after switching to a real vitest run (Phase 3) ([7af1830](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/7af1830c1fe74b3943a487c6ee263d89559446b7))
155
+ * **vitest:** stop mint-token-pair from resetting global state on every call ([50e5ddb](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/50e5ddb9d3bf4227b832576c3cdc7446b87e2a4f))
156
+
3
157
  ## [4.24.1](https://github.com/MikeDev75015/mongodb-dynamic-api/compare/v4.24.0...v4.24.1) (2026-09-01)
4
158
 
5
159
  ### aggregate
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  <p align="center">
2
2
  <h1 align="center">mongodb-dynamic-api</h1>
3
3
  <p align="center">
4
- A production-ready <strong>NestJS 11</strong> module that instantly generates fully typed REST APIs + WebSockets<br/>
4
+ A production-ready <strong>NestJS 12</strong> module that instantly generates fully typed REST APIs + WebSockets<br/>
5
5
  for any MongoDB collection — zero boilerplate, enterprise features included.
6
6
  </p>
7
7
  </p>
@@ -25,6 +25,82 @@
25
25
 
26
26
  ---
27
27
 
28
+ > [!WARNING]
29
+ > **v5 — Breaking changes.** The package's public export surface was curated: internal implementation classes, mixins, builders and helpers that were never meant to be imported directly are no longer exported from `mongodb-dynamic-api`. Everything documented in this README and in `README/*.md` is unaffected.
30
+ >
31
+ > 🚚 **`npx mongodb-dynamic-api migrate-v5 <path>`** applies every mechanical rename below (`DynamicApiGlobalStateService` → `DynamicApiEntityService`, `@Schema`+`@DynamicApiSchemaOptions` → `@DynamicApiSchema`, every verbose/all-caps alias → its short name, `enableDynamicAPIWebSockets`'s numeric overload → the options-object form) across your codebase automatically, and flags anything else it can't safely fix — including a note on the `query.accessToken` client-side change it cannot detect. See [migration-v5.md](./README/migration-v5.md).
32
+ >
33
+ > <details>
34
+ > <summary>📋 Full list of removed public exports (v4 → v5)</summary>
35
+ >
36
+ > ### Why
37
+ > Since v1, every internal file was re-exported through `export *` barrels, so essentially every class/function/type under `libs/dynamic-api/src/**` leaked into the package's public API — including plumbing that only exists to build the auto-generated routes internally. None of it was ever documented, and importing it directly was never a supported usage. v5 curates the barrel down to what real consumers actually use.
38
+ >
39
+ > ### Removed — routes internals
40
+ > Every `Base*Service`, controller/gateway/presenter/body mixin, controller/gateway/service interface, route `*Module` class and route `*.helper.ts` factory function for all 12 route types (`Aggregate`, `CreateOne`/`CreateMany`, `UpdateOne`/`UpdateMany`, `ReplaceOne`, `DuplicateOne`/`DuplicateMany`, `DeleteOne`/`DeleteMany`, `GetOne`/`GetMany`), plus `createCustomRouteController`/`createCustomRouteGateway` and `createCachePurgeController`.
41
+ >
42
+ > ### Removed — base services
43
+ > `BaseService`, `DynamicApiGlobalStateService`.
44
+ > `DynamicApiGlobalStateService.getEntityModel()` — the one capability consumers actually relied on (resolving a registered entity's Mongoose model outside the HTTP cycle) — is now exposed through a new, narrow **`DynamicApiEntityService.getModel(Entity)`**, a `static` method (no DI required — callable from a bootstrap function, a cron job, or any plain utility) . See [caching.md](./README/caching.md) for the updated example.
45
+ >
46
+ > `BcryptService` and `DynamicApiBroadcastService` were briefly removed in an earlier draft of this cleanup and are **kept public** — both are small, self-contained utilities real consumers reach for directly (password hashing outside `useAuth`; broadcasting from a custom route with the same room-resolution and error-isolation guarantees as the auto-generated routes). See the [Unaffected](#unaffected) list below.
47
+ >
48
+ > ### Removed — mixins & builders
49
+ > `RoutePoliciesGuardMixin`, `SocketPoliciesGuardMixin`, `EntityBodyMixin`, `EntityPresenterMixin`, `AuthDecoratorsBuilder`, `RouteDecoratorsBuilder`.
50
+ >
51
+ > ### Removed — guards, gateways, interceptors, filters, logger
52
+ > `BasePoliciesGuard`, `BaseSocketPoliciesGuard`, `DynamicApiJwtAuthGuard`, `JwtSocketGuard` and every internal auth guard (`JwtAuthGuard`, `JwtRefreshGuard`, `JwtSocketAuthGuard`, `JwtSocketRefreshGuard`, `LocalAuthGuard`, `PasswordlessGuard`, `ResetPasswordGuard`); `BaseGateway`, `createDynamicApiBroadcastGateway`; `DynamicApiCacheInterceptor`, `MergeIdParamInterceptor`; `DynamicAPIWsExceptionFilter`; `MongoDBDynamicApiLogger`.
53
+ >
54
+ > ### Removed — internal DTOs & decorators
55
+ > `ManyEntityQuery`, `DeletePresenter`, `EntityParam`, `EntityQuery`; `ApiEndpointVisibility`, `RateLimit`, `ValidatorPipe`, `IS_PUBLIC_KEY`.
56
+ >
57
+ > ### Removed — internal interfaces
58
+ > `DynamicApiDecoratorBuilder`, `PoliciesGuard`, `PoliciesGuardConstructor`, `AuthPoliciesGuardConstructor`, `RouteModule`, `DYNAMIC_API_GLOBAL_STATE`, `Credentials`, `EntitySchemas`, `DynamicApiGlobalState`, `AfterSaveCallbackConfig`, `GatewayResponse`.
59
+ >
60
+ > ### Removed — internal modules & helpers
61
+ > `AuthModule`, `DynamicApiConfigModule`, and every internal auth controller/gateway/policies-guard mixin, `BaseAuthService`, `JwtStrategy`, `JwtRefreshStrategy`; `HealthController`/`createHealthController`; `PresenceController`, `InMemoryPresenceAdapter`, `RedisPresenceAdapter`, `createPresenceGateway`. Most of `helpers/**` (internal wiring only — the documented `enableDynamicAPI*` functions, `mintTokenPair`, `parsePagingParams` and `isTransactionsUnsupportedError` are unaffected).
62
+ >
63
+ > ### Removed — `DeepPartial` typo alias
64
+ > `utils/deep-patial.ts` (a typo'd duplicate of `deep-partial.ts`, already marked "will be removed in v5") is deleted. `DeepPartial` itself is still exported — import it as before, from the main package.
65
+ >
66
+ > ### Changed — `@DynamicApiSchema` replaces `@Schema` + `@DynamicApiSchemaOptions`
67
+ > The old stacked pattern:
68
+ > ```typescript
69
+ > @DynamicApiSchemaOptions({ indexes: [...] })
70
+ > @Schema({ collection: 'users' })
71
+ > export class User extends BaseEntity {}
72
+ > ```
73
+ > is now a single decorator taking the union of mongoose's own `SchemaOptions` and DynamicAPI's extras:
74
+ > ```typescript
75
+ > @DynamicApiSchema({
76
+ > collection: 'users',
77
+ > indexes: [{ fields: { email: 1 }, options: { unique: true } }],
78
+ > })
79
+ > export class User extends BaseEntity {}
80
+ > ```
81
+ > `DynamicApiSchemaOptions`/`DynamicAPISchemaOptions` (the old decorator) and `DynamicApiSchemaOptionsInterface`/`DynamicAPISchemaOptionsInterface` are gone — `DynamicApiSchemaOptions` is now the type name for just the MDA-specific options (`indexes`/`hooks`/`customInit`). Mongoose's own `@Schema()` still works standalone if you want to call it yourself. See [schema-options.md](./README/schema-options.md).
82
+ >
83
+ > ### Removed — deprecated verbose/all-caps aliases
84
+ > **Route config:** `DynamicAPIRouteConfig` (all-caps) — use `DynamicApiRouteConfig`.
85
+ >
86
+ > **Before-save callback aliases:** `AnyBeforeSaveCallback` — no longer needed, use the discriminated union's per-route narrowing directly. `DynamicApiServiceBeforeSaveCreateContext`, `...CreateManyContext`, `...UpdateContext`, `...UpdateManyContext`, `...ReplaceContext`, `...DeleteContext`, `...DeleteManyContext`, `...DuplicateContext`, `...DuplicateManyContext` — use the matching `BeforeSave*Context` type. `DynamicApiServiceBeforeSaveCallback`, `...ListCallback`, `...DeleteCallback`, `...DeleteManyCallback` — use the matching `BeforeSave*Callback` type.
87
+ >
88
+ > **Service callback aliases:** `DynamicApiCallbackMethods` — use `CallbackMethods`. `DynamicApiServiceCallback` — use `AfterSaveCallback`.
89
+ >
90
+ > **Service provider alias:** `DynamicAPIServiceProvider` (all-caps) — use `DynamicApiServiceProvider`.
91
+ >
92
+ > **Swagger options aliases:** `DynamicAPISwaggerExtraConfig`/`DynamicAPISwaggerOptions` (all-caps) — use `DynamicApiSwaggerExtraConfig`/`DynamicApiSwaggerOptions`.
93
+ >
94
+ > **WebSockets:** `enableDynamicAPIWebSockets(app, maxListeners: number)` — the numeric second-argument overload is gone, pass `enableDynamicAPIWebSockets(app, { maxListeners })` instead.
95
+ >
96
+ > ### Removed — `query.accessToken` WebSocket authentication
97
+ > The server only reads `socket.handshake.auth.token` now. The `query.accessToken` (query string) transport — deprecated since it exposes the token in URLs and server logs — is gone. Update any client still connecting with `io(url, { query: { accessToken } })` to `io(url, { auth: { token } })` instead. See [Authenticating WebSocket Connections](./README/websockets.md#authenticating-websocket-connections).
98
+ >
99
+ > ### Unaffected
100
+ > `DynamicApiCacheService`, `DynamicApiEntityService`, `BcryptService`, `DynamicApiBroadcastService`, `DynamicApiModule`, `DynamicApiHealthModule`, `DynamicApiPresenceModule`, all `decorators/`, all `predicates/`, `BaseEntity`/`SoftDeletableEntity`, every documented route-config/callback/auth/websocket/caching/authorization/validation/schema-options interface and type, and everything else shown in this README and `README/*.md` — none of it moved or changed shape. `DynamicApiPresenceModule`'s DI token `DYNAMIC_API_PRESENCE_ADAPTER` and the `PresenceAdapter` interface are also unaffected — only the internal `InMemoryPresenceAdapter`/`RedisPresenceAdapter` concrete classes are gone, since [Presence](./README/presence.md) was always meant to be consumed through the module's `register()` options and the `PresenceAdapter` DI token, never by importing a concrete adapter class directly.
101
+ >
102
+ > </details>
103
+
28
104
  > [!WARNING]
29
105
  > **v4 — Breaking changes.** Dual-token auth (`accessToken` + `refreshToken`), new default expiry (`expiresIn: '15m'`), 2 new endpoints (`/auth/refresh-token`, `/auth/logout`).
30
106
  >
@@ -271,10 +347,11 @@ Register `UsersModule` in `AppModule`, run `npm run start:dev` — your API is l
271
347
  | 🩺 **Health Check** | `GET /health` readiness probe, `DynamicApiHealthModule` ⭐ *New* | [View](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/main/README/health-check.md) |
272
348
  | 🧪 **Testing** | `createDynamicApiTestingApp`, in-memory MongoDB, zero Docker ⭐ *New* | [View](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/main/README/testing.md) |
273
349
  | 🏗️ **Schematics** | `nest g -c mongodb-dynamic-api resource <name>` — scaffold entity + module in one command ⭐ *New* | [View](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/main/README/schematics.md) |
350
+ | 🚚 **Migrating to v5** | `npx mongodb-dynamic-api migrate-v5 <path>` — codemod for the mechanical v5 renames ⭐ *New* | [View](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/main/README/migration-v5.md) |
274
351
 
275
352
  > [!NOTE]
276
353
  > **Key reminders:**
277
- > - `BaseEntity` auto-enables timestamps — no `timestamps: true` needed in `@Schema()`
354
+ > - `BaseEntity` auto-enables timestamps — no `timestamps: true` needed in `@DynamicApiSchema()`/`@Schema()`
278
355
  > - Soft delete: extend `SoftDeletableEntity` to get `isDeleted` + `deletedAt` fields
279
356
  > - Version strings must be numeric (`'1'`, `'2'`), not semver
280
357
  > - WebSocket auth event names are fixed: `auth-login`, `auth-register`, `auth-refresh-token`, `auth-logout`…
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ declare function run(argv: string[]): void;
3
+ export { run };
@@ -0,0 +1,38 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.run = run;
5
+ const migrate_v5_1 = require("./migrate-v5");
6
+ function run(argv) {
7
+ const [command, targetPath, ...rest] = argv;
8
+ if (command !== 'migrate-v5' || !targetPath) {
9
+ console.log('Usage: npx mongodb-dynamic-api migrate-v5 <path> [--dry-run]');
10
+ process.exitCode = 1;
11
+ return;
12
+ }
13
+ const dryRun = rest.includes('--dry-run');
14
+ const report = (0, migrate_v5_1.migrateV5)(targetPath, { dryRun });
15
+ console.log(`\nmongodb-dynamic-api migrate-v5${dryRun ? ' (dry run)' : ''}`);
16
+ console.log(`Scanned ${report.filesScanned} file(s), changed ${report.filesChanged}.\n`);
17
+ let warningCount = 0;
18
+ for (const result of report.results) {
19
+ if (result.fixes.length === 0 && result.warnings.length === 0) {
20
+ continue;
21
+ }
22
+ console.log(result.filePath);
23
+ result.fixes.forEach((fix) => console.log(` ✓ ${fix}`));
24
+ result.warnings.forEach((warning) => console.log(` ⚠ ${warning}`));
25
+ warningCount += result.warnings.length;
26
+ }
27
+ if (warningCount > 0) {
28
+ console.log(`\n${warningCount} item(s) need manual review — see the ⚠ lines above.`);
29
+ process.exitCode = 1;
30
+ }
31
+ else {
32
+ console.log('\nNo manual review needed.');
33
+ }
34
+ }
35
+ if (require.main === module) {
36
+ run(process.argv.slice(2));
37
+ }
38
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../libs/dynamic-api/codemods/migrate-v5/cli.ts"],"names":[],"mappings":";;;AAkDS,kBAAG;AAjDZ,6CAAyC;AAQzC,SAAS,GAAG,CAAC,IAAc;IACzB,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAE5C,IAAI,OAAO,KAAK,YAAY,IAAI,CAAC,UAAU,EAAE,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;QAC5E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAA,sBAAS,EAAC,UAAU,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAEjD,OAAO,CAAC,GAAG,CAAC,mCAAmC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,YAAY,qBAAqB,MAAM,CAAC,YAAY,KAAK,CAAC,CAAC;IAEzF,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACpC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9D,SAAS;QACX,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7B,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC;QACzD,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;QACpE,YAAY,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;IACzC,CAAC;IAED,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,KAAK,YAAY,sDAAsD,CAAC,CAAC;QACrF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAGD,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { SourceFile } from 'ts-morph';
2
+ interface FileMigrationResult {
3
+ filePath: string;
4
+ changed: boolean;
5
+ fixes: string[];
6
+ warnings: string[];
7
+ }
8
+ interface MigrationReport {
9
+ filesScanned: number;
10
+ filesChanged: number;
11
+ results: FileMigrationResult[];
12
+ }
13
+ declare function migrateSourceFile(sourceFile: SourceFile): FileMigrationResult;
14
+ declare function migrateV5(rootDir: string, options?: {
15
+ dryRun?: boolean;
16
+ }): MigrationReport;
17
+ export { migrateV5, migrateSourceFile };
18
+ export type { FileMigrationResult, MigrationReport };
@@ -0,0 +1,263 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.migrateV5 = migrateV5;
4
+ exports.migrateSourceFile = migrateSourceFile;
5
+ const ts_morph_1 = require("ts-morph");
6
+ const removed_symbols_1 = require("./removed-symbols");
7
+ const PACKAGE_NAME = 'mongodb-dynamic-api';
8
+ function findImports(sourceFile, moduleSpecifier) {
9
+ return sourceFile
10
+ .getImportDeclarations()
11
+ .filter((declaration) => declaration.getModuleSpecifierValue() === moduleSpecifier);
12
+ }
13
+ function findNamedImport(sourceFile, moduleSpecifier, name) {
14
+ for (const importDeclaration of findImports(sourceFile, moduleSpecifier)) {
15
+ const namedImport = importDeclaration.getNamedImports().find((specifier) => specifier.getName() === name);
16
+ if (namedImport) {
17
+ return { importDeclaration, namedImport };
18
+ }
19
+ }
20
+ return undefined;
21
+ }
22
+ function addNamedImport(sourceFile, moduleSpecifier, name) {
23
+ const existingDeclarations = findImports(sourceFile, moduleSpecifier);
24
+ const alreadyImported = existingDeclarations.some((declaration) => declaration.getNamedImports().some((namedImport) => namedImport.getName() === name));
25
+ if (alreadyImported) {
26
+ return;
27
+ }
28
+ const targetDeclaration = existingDeclarations.find((declaration) => !declaration.isTypeOnly()) ??
29
+ sourceFile.addImportDeclaration({ moduleSpecifier, namedImports: [] });
30
+ targetDeclaration.addNamedImport(name);
31
+ }
32
+ function removeNamedImport(sourceFile, moduleSpecifier, name) {
33
+ const found = findNamedImport(sourceFile, moduleSpecifier, name);
34
+ if (!found) {
35
+ return;
36
+ }
37
+ const { importDeclaration, namedImport } = found;
38
+ namedImport.remove();
39
+ const hasNoImportsLeft = importDeclaration.getNamedImports().length === 0 &&
40
+ !importDeclaration.getDefaultImport() &&
41
+ !importDeclaration.getNamespaceImport();
42
+ if (hasNoImportsLeft) {
43
+ importDeclaration.remove();
44
+ }
45
+ }
46
+ function migrateGlobalStateService(sourceFile) {
47
+ const filePath = sourceFile.getFilePath();
48
+ const fixes = [];
49
+ const warnings = [];
50
+ const found = findNamedImport(sourceFile, PACKAGE_NAME, 'DynamicApiGlobalStateService');
51
+ if (!found) {
52
+ return { filePath, changed: false, fixes, warnings };
53
+ }
54
+ const { namedImport } = found;
55
+ if (namedImport.getAliasNode()) {
56
+ warnings.push("imports DynamicApiGlobalStateService under an alias ('as ...') — not auto-migrated, rename its usages to DynamicApiEntityService.getModel() manually.");
57
+ return { filePath, changed: false, fixes, warnings };
58
+ }
59
+ const propertyAccesses = sourceFile
60
+ .getDescendantsOfKind(ts_morph_1.SyntaxKind.PropertyAccessExpression)
61
+ .filter((node) => node.getExpression().getText() === 'DynamicApiGlobalStateService');
62
+ const safeAccesses = propertyAccesses.filter((node) => node.getName() === 'getEntityModel');
63
+ const unsafeAccesses = propertyAccesses.filter((node) => node.getName() !== 'getEntityModel');
64
+ for (const access of unsafeAccesses) {
65
+ warnings.push(`line ${access.getStartLineNumber()}: DynamicApiGlobalStateService.${access.getName()}() has no direct v5 replacement — review manually.`);
66
+ }
67
+ const otherReferences = sourceFile
68
+ .getDescendantsOfKind(ts_morph_1.SyntaxKind.Identifier)
69
+ .filter((node) => node.getText() === 'DynamicApiGlobalStateService' &&
70
+ !node.getFirstAncestorByKind(ts_morph_1.SyntaxKind.ImportSpecifier) &&
71
+ !propertyAccesses.some((access) => access.getExpression() === node));
72
+ for (const reference of otherReferences) {
73
+ warnings.push(`line ${reference.getStartLineNumber()}: DynamicApiGlobalStateService is referenced directly (not as a static member access) — review manually, it is no longer exported in v5.`);
74
+ }
75
+ for (const access of safeAccesses) {
76
+ access.getExpression().replaceWithText('DynamicApiEntityService');
77
+ access.getNameNode().replaceWithText('getModel');
78
+ fixes.push(`line ${access.getStartLineNumber()}: renamed DynamicApiGlobalStateService.getEntityModel(...) to DynamicApiEntityService.getModel(...).`);
79
+ }
80
+ const totalUsages = propertyAccesses.length + otherReferences.length;
81
+ if (totalUsages === 0) {
82
+ removeNamedImport(sourceFile, PACKAGE_NAME, 'DynamicApiGlobalStateService');
83
+ fixes.push('removed the now-unused import of DynamicApiGlobalStateService (no longer exported in v5).');
84
+ }
85
+ else if (unsafeAccesses.length === 0 && otherReferences.length === 0) {
86
+ addNamedImport(sourceFile, PACKAGE_NAME, 'DynamicApiEntityService');
87
+ removeNamedImport(sourceFile, PACKAGE_NAME, 'DynamicApiGlobalStateService');
88
+ }
89
+ else if (safeAccesses.length > 0) {
90
+ addNamedImport(sourceFile, PACKAGE_NAME, 'DynamicApiEntityService');
91
+ }
92
+ return { filePath, changed: fixes.length > 0, fixes, warnings };
93
+ }
94
+ function migrateSchemaDecorators(sourceFile) {
95
+ const filePath = sourceFile.getFilePath();
96
+ const fixes = [];
97
+ const warnings = [];
98
+ let mergedAtLeastOne = false;
99
+ for (const classDeclaration of sourceFile.getClasses()) {
100
+ const decorators = classDeclaration.getDecorators();
101
+ const mdaDecorator = decorators.find((decorator) => ['DynamicApiSchemaOptions', 'DynamicAPISchemaOptions'].includes(decorator.getName()));
102
+ if (!mdaDecorator) {
103
+ continue;
104
+ }
105
+ const mongooseDecorator = decorators.find((decorator) => decorator.getName() === 'Schema');
106
+ const mdaArgs = mdaDecorator.getArguments();
107
+ const mongooseArgs = mongooseDecorator?.getArguments() ?? [];
108
+ const mdaObjectLiteral = mdaArgs[0]?.asKind(ts_morph_1.SyntaxKind.ObjectLiteralExpression);
109
+ const mongooseObjectLiteral = mongooseArgs[0]?.asKind(ts_morph_1.SyntaxKind.ObjectLiteralExpression);
110
+ if (mdaArgs.length > 0 && !mdaObjectLiteral) {
111
+ warnings.push(`line ${mdaDecorator.getStartLineNumber()}: @${mdaDecorator.getName()}'s argument is not a plain object literal — merge it with @Schema into @DynamicApiSchema manually.`);
112
+ continue;
113
+ }
114
+ if (mongooseArgs.length > 0 && !mongooseObjectLiteral) {
115
+ warnings.push(`line ${mongooseDecorator.getStartLineNumber()}: @Schema's argument is not a plain object literal — merge it with @${mdaDecorator.getName()} into @DynamicApiSchema manually.`);
116
+ continue;
117
+ }
118
+ const mongooseProps = mongooseObjectLiteral?.getProperties().map((property) => property.getText()) ?? [];
119
+ const mdaProps = mdaObjectLiteral?.getProperties().map((property) => property.getText()) ?? [];
120
+ const mergedProps = [...mongooseProps, ...mdaProps];
121
+ const mergedArgumentText = mergedProps.length > 0 ? `{\n ${mergedProps.join(',\n ')},\n}` : '{}';
122
+ const className = classDeclaration.getName() ?? '<anonymous>';
123
+ const line = mdaDecorator.getStartLineNumber();
124
+ const mdaDecoratorName = mdaDecorator.getName();
125
+ mdaDecorator.remove();
126
+ mongooseDecorator?.remove();
127
+ classDeclaration.insertDecorator(0, { name: 'DynamicApiSchema', arguments: [mergedArgumentText] });
128
+ fixes.push(`line ${line}: merged @${mdaDecoratorName} + @Schema into @DynamicApiSchema on class ${className}.`);
129
+ mergedAtLeastOne = true;
130
+ }
131
+ if (!mergedAtLeastOne) {
132
+ return { filePath, changed: false, fixes, warnings };
133
+ }
134
+ const stillUsesMongooseSchema = sourceFile
135
+ .getClasses()
136
+ .some((classDeclaration) => classDeclaration.getDecorators().some((decorator) => decorator.getName() === 'Schema'));
137
+ if (!stillUsesMongooseSchema) {
138
+ removeNamedImport(sourceFile, '@nestjs/mongoose', 'Schema');
139
+ }
140
+ addNamedImport(sourceFile, PACKAGE_NAME, 'DynamicApiSchema');
141
+ removeNamedImport(sourceFile, PACKAGE_NAME, 'DynamicApiSchemaOptions');
142
+ removeNamedImport(sourceFile, PACKAGE_NAME, 'DynamicAPISchemaOptions');
143
+ sourceFile.formatText({ indentSize: 2 });
144
+ sourceFile.replaceWithText(sourceFile.getFullText().replace(/\n{3,}/g, '\n\n'));
145
+ return { filePath, changed: true, fixes, warnings };
146
+ }
147
+ const SIMPLE_RENAMES = [
148
+ { oldName: 'DynamicAPIRouteConfig', newName: 'DynamicApiRouteConfig' },
149
+ { oldName: 'DynamicApiServiceBeforeSaveCreateContext', newName: 'BeforeSaveCreateContext' },
150
+ { oldName: 'DynamicApiServiceBeforeSaveCreateManyContext', newName: 'BeforeSaveCreateManyContext' },
151
+ { oldName: 'DynamicApiServiceBeforeSaveUpdateContext', newName: 'BeforeSaveUpdateContext' },
152
+ { oldName: 'DynamicApiServiceBeforeSaveUpdateManyContext', newName: 'BeforeSaveUpdateManyContext' },
153
+ { oldName: 'DynamicApiServiceBeforeSaveReplaceContext', newName: 'BeforeSaveReplaceContext' },
154
+ { oldName: 'DynamicApiServiceBeforeSaveDeleteContext', newName: 'BeforeSaveDeleteContext' },
155
+ { oldName: 'DynamicApiServiceBeforeSaveDeleteManyContext', newName: 'BeforeSaveDeleteManyContext' },
156
+ { oldName: 'DynamicApiServiceBeforeSaveDuplicateContext', newName: 'BeforeSaveDuplicateContext' },
157
+ { oldName: 'DynamicApiServiceBeforeSaveDuplicateManyContext', newName: 'BeforeSaveDuplicateManyContext' },
158
+ { oldName: 'DynamicApiServiceBeforeSaveCallback', newName: 'BeforeSaveCallback' },
159
+ { oldName: 'DynamicApiServiceBeforeSaveListCallback', newName: 'BeforeSaveListCallback' },
160
+ { oldName: 'DynamicApiServiceBeforeSaveDeleteCallback', newName: 'BeforeSaveDeleteCallback' },
161
+ { oldName: 'DynamicApiServiceBeforeSaveDeleteManyCallback', newName: 'BeforeSaveDeleteManyCallback' },
162
+ { oldName: 'DynamicApiCallbackMethods', newName: 'CallbackMethods' },
163
+ { oldName: 'DynamicApiServiceCallback', newName: 'AfterSaveCallback' },
164
+ { oldName: 'DynamicAPIServiceProvider', newName: 'DynamicApiServiceProvider' },
165
+ { oldName: 'DynamicAPISwaggerExtraConfig', newName: 'DynamicApiSwaggerExtraConfig' },
166
+ { oldName: 'DynamicAPISwaggerOptions', newName: 'DynamicApiSwaggerOptions' },
167
+ ];
168
+ function migrateSimpleRenames(sourceFile) {
169
+ const filePath = sourceFile.getFilePath();
170
+ const fixes = [];
171
+ const warnings = [];
172
+ for (const { oldName, newName } of SIMPLE_RENAMES) {
173
+ const found = findNamedImport(sourceFile, PACKAGE_NAME, oldName);
174
+ if (!found) {
175
+ continue;
176
+ }
177
+ const { namedImport } = found;
178
+ if (namedImport.getAliasNode()) {
179
+ warnings.push(`imports ${oldName} under an alias ('as ...') — not auto-migrated, rename its usages to ${newName} manually.`);
180
+ continue;
181
+ }
182
+ const identifiers = sourceFile
183
+ .getDescendantsOfKind(ts_morph_1.SyntaxKind.Identifier)
184
+ .filter((node) => node.getText() === oldName && !node.getFirstAncestorByKind(ts_morph_1.SyntaxKind.ImportSpecifier));
185
+ identifiers.forEach((identifier) => identifier.replaceWithText(newName));
186
+ addNamedImport(sourceFile, PACKAGE_NAME, newName);
187
+ removeNamedImport(sourceFile, PACKAGE_NAME, oldName);
188
+ fixes.push(`renamed ${oldName} to ${newName} (${identifiers.length} usage(s)).`);
189
+ }
190
+ return { filePath, changed: fixes.length > 0, fixes, warnings };
191
+ }
192
+ function migrateWebSocketsMaxListenersOverload(sourceFile) {
193
+ const filePath = sourceFile.getFilePath();
194
+ const fixes = [];
195
+ const warnings = [];
196
+ const calls = sourceFile
197
+ .getDescendantsOfKind(ts_morph_1.SyntaxKind.CallExpression)
198
+ .filter((call) => call.getExpression().getText() === 'enableDynamicAPIWebSockets' && call.getArguments().length === 2);
199
+ for (const call of calls) {
200
+ const secondArg = call.getArguments()[1];
201
+ if (secondArg.asKind(ts_morph_1.SyntaxKind.ObjectLiteralExpression)) {
202
+ continue;
203
+ }
204
+ if (secondArg.asKind(ts_morph_1.SyntaxKind.NumericLiteral)) {
205
+ const line = call.getStartLineNumber();
206
+ const originalText = secondArg.getText();
207
+ secondArg.replaceWithText(`{ maxListeners: ${originalText} }`);
208
+ fixes.push(`line ${line}: rewrote enableDynamicAPIWebSockets(app, ${originalText}) to the options-object form.`);
209
+ continue;
210
+ }
211
+ warnings.push(`line ${call.getStartLineNumber()}: enableDynamicAPIWebSockets's second argument is not a plain number literal — the numeric-overload form is gone in v5, pass { maxListeners } manually.`);
212
+ }
213
+ return { filePath, changed: fixes.length > 0, fixes, warnings };
214
+ }
215
+ function scanForRemovedSymbols(sourceFile) {
216
+ const filePath = sourceFile.getFilePath();
217
+ const warnings = [];
218
+ const importDeclarations = findImports(sourceFile, PACKAGE_NAME);
219
+ if (importDeclarations.length === 0) {
220
+ return { filePath, changed: false, fixes: [], warnings };
221
+ }
222
+ const importedNames = new Set(importDeclarations.flatMap((declaration) => declaration.getNamedImports().map((specifier) => specifier.getName())));
223
+ for (const removed of removed_symbols_1.REMOVED_SYMBOLS) {
224
+ if (importedNames.has(removed.name)) {
225
+ warnings.push(`imports '${removed.name}', which is no longer exported in v5 — ${removed.guidance}`);
226
+ }
227
+ }
228
+ return { filePath, changed: false, fixes: [], warnings };
229
+ }
230
+ function migrateSourceFile(sourceFile) {
231
+ const results = [
232
+ migrateGlobalStateService(sourceFile),
233
+ migrateSchemaDecorators(sourceFile),
234
+ migrateSimpleRenames(sourceFile),
235
+ migrateWebSocketsMaxListenersOverload(sourceFile),
236
+ scanForRemovedSymbols(sourceFile),
237
+ ];
238
+ return {
239
+ filePath: sourceFile.getFilePath(),
240
+ changed: results.some((result) => result.changed),
241
+ fixes: results.flatMap((result) => result.fixes),
242
+ warnings: results.flatMap((result) => result.warnings),
243
+ };
244
+ }
245
+ function migrateV5(rootDir, options = {}) {
246
+ const project = new ts_morph_1.Project({ skipAddingFilesFromTsConfig: true });
247
+ project.addSourceFilesAtPaths([
248
+ `${rootDir}/**/*.ts`,
249
+ `!${rootDir}/**/*.d.ts`,
250
+ `!${rootDir}/**/*.spec.ts`,
251
+ `!${rootDir}/**/node_modules/**`,
252
+ ]);
253
+ const results = project.getSourceFiles().map((sourceFile) => migrateSourceFile(sourceFile));
254
+ if (!options.dryRun) {
255
+ project.saveSync();
256
+ }
257
+ return {
258
+ filesScanned: results.length,
259
+ filesChanged: results.filter((result) => result.changed).length,
260
+ results,
261
+ };
262
+ }
263
+ //# sourceMappingURL=migrate-v5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate-v5.js","sourceRoot":"","sources":["../../../libs/dynamic-api/codemods/migrate-v5/migrate-v5.ts"],"names":[],"mappings":";;AAydS,8BAAS;AAAE,8CAAiB;AAzdrC,uCAA8E;AAC9E,uDAAoD;AAuBpD,MAAM,YAAY,GAAG,qBAAqB,CAAC;AAS3C,SAAS,WAAW,CAAC,UAAsB,EAAE,eAAuB;IAClE,OAAO,UAAU;SACd,qBAAqB,EAAE;SACvB,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,uBAAuB,EAAE,KAAK,eAAe,CAAC,CAAC;AACxF,CAAC;AAMD,SAAS,eAAe,CACtB,UAAsB,EACtB,eAAuB,EACvB,IAAY;IAEZ,KAAK,MAAM,iBAAiB,IAAI,WAAW,CAAC,UAAU,EAAE,eAAe,CAAC,EAAE,CAAC;QACzE,MAAM,WAAW,GAAG,iBAAiB,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC;QAC1G,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,CAAC;QAC5C,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAOD,SAAS,cAAc,CAAC,UAAsB,EAAE,eAAuB,EAAE,IAAY;IACnF,MAAM,oBAAoB,GAAG,WAAW,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IAEtE,MAAM,eAAe,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAChE,WAAW,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,CACpF,CAAC;IAEF,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO;IACT,CAAC;IAKD,MAAM,iBAAiB,GACrB,oBAAoB,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;QACrE,UAAU,CAAC,oBAAoB,CAAC,EAAE,eAAe,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;IAEzE,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAOD,SAAS,iBAAiB,CAAC,UAAsB,EAAE,eAAuB,EAAE,IAAY;IACtF,MAAM,KAAK,GAAG,eAAe,CAAC,UAAU,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;IAEjE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;IACT,CAAC;IAED,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAEjD,WAAW,CAAC,MAAM,EAAE,CAAC;IAErB,MAAM,gBAAgB,GACpB,iBAAiB,CAAC,eAAe,EAAE,CAAC,MAAM,KAAK,CAAC;QAChD,CAAC,iBAAiB,CAAC,gBAAgB,EAAE;QACrC,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,CAAC;IAE1C,IAAI,gBAAgB,EAAE,CAAC;QACrB,iBAAiB,CAAC,MAAM,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC;AAQD,SAAS,yBAAyB,CAAC,UAAsB;IACvD,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;IAC1C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,MAAM,KAAK,GAAG,eAAe,CAAC,UAAU,EAAE,YAAY,EAAE,8BAA8B,CAAC,CAAC;IAExF,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACvD,CAAC;IAED,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAE9B,IAAI,WAAW,CAAC,YAAY,EAAE,EAAE,CAAC;QAC/B,QAAQ,CAAC,IAAI,CACX,uJAAuJ,CACxJ,CAAC;QACF,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACvD,CAAC;IAED,MAAM,gBAAgB,GAAG,UAAU;SAChC,oBAAoB,CAAC,qBAAU,CAAC,wBAAwB,CAAC;SACzD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,KAAK,8BAA8B,CAAC,CAAC;IAEvF,MAAM,YAAY,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,gBAAgB,CAAC,CAAC;IAC5F,MAAM,cAAc,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,gBAAgB,CAAC,CAAC;IAE9F,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;QACpC,QAAQ,CAAC,IAAI,CACX,QAAQ,MAAM,CAAC,kBAAkB,EAAE,kCAAkC,MAAM,CAAC,OAAO,EAAE,oDAAoD,CAC1I,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,GAAG,UAAU;SAC/B,oBAAoB,CAAC,qBAAU,CAAC,UAAU,CAAC;SAC3C,MAAM,CACL,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,OAAO,EAAE,KAAK,8BAA8B;QACjD,CAAC,IAAI,CAAC,sBAAsB,CAAC,qBAAU,CAAC,eAAe,CAAC;QACxD,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,IAAI,CAAC,CACtE,CAAC;IAEJ,KAAK,MAAM,SAAS,IAAI,eAAe,EAAE,CAAC;QACxC,QAAQ,CAAC,IAAI,CACX,QAAQ,SAAS,CAAC,kBAAkB,EAAE,0IAA0I,CACjL,CAAC;IACJ,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QAClC,MAAM,CAAC,aAAa,EAAE,CAAC,eAAe,CAAC,yBAAyB,CAAC,CAAC;QAClE,MAAM,CAAC,WAAW,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QACjD,KAAK,CAAC,IAAI,CACR,QAAQ,MAAM,CAAC,kBAAkB,EAAE,sGAAsG,CAC1I,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;IAErE,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;QACtB,iBAAiB,CAAC,UAAU,EAAE,YAAY,EAAE,8BAA8B,CAAC,CAAC;QAC5E,KAAK,CAAC,IAAI,CAAC,2FAA2F,CAAC,CAAC;IAC1G,CAAC;SAAM,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAGvE,cAAc,CAAC,UAAU,EAAE,YAAY,EAAE,yBAAyB,CAAC,CAAC;QACpE,iBAAiB,CAAC,UAAU,EAAE,YAAY,EAAE,8BAA8B,CAAC,CAAC;IAC9E,CAAC;SAAM,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAInC,cAAc,CAAC,UAAU,EAAE,YAAY,EAAE,yBAAyB,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAClE,CAAC;AAQD,SAAS,uBAAuB,CAAC,UAAsB;IACrD,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;IAC1C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAE7B,KAAK,MAAM,gBAAgB,IAAI,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC;QACvD,MAAM,UAAU,GAAG,gBAAgB,CAAC,aAAa,EAAE,CAAC;QACpD,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CACjD,CAAC,yBAAyB,EAAE,yBAAyB,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CACrF,CAAC;QAEF,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,SAAS;QACX,CAAC;QAED,MAAM,iBAAiB,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC;QAC3F,MAAM,OAAO,GAAG,YAAY,CAAC,YAAY,EAAE,CAAC;QAC5C,MAAM,YAAY,GAAG,iBAAiB,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QAC7D,MAAM,gBAAgB,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,qBAAU,CAAC,uBAAuB,CAAC,CAAC;QAChF,MAAM,qBAAqB,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,qBAAU,CAAC,uBAAuB,CAAC,CAAC;QAE1F,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC5C,QAAQ,CAAC,IAAI,CACX,QAAQ,YAAY,CAAC,kBAAkB,EAAE,MAAM,YAAY,CAAC,OAAO,EAAE,oGAAoG,CAC1K,CAAC;YACF,SAAS;QACX,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACtD,QAAQ,CAAC,IAAI,CACX,QAAQ,iBAAkB,CAAC,kBAAkB,EAAE,uEAAuE,YAAY,CAAC,OAAO,EAAE,mCAAmC,CAChL,CAAC;YACF,SAAS;QACX,CAAC;QAED,MAAM,aAAa,GAAG,qBAAqB,EAAE,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC;QACzG,MAAM,QAAQ,GAAG,gBAAgB,EAAE,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC;QAC/F,MAAM,WAAW,GAAG,CAAC,GAAG,aAAa,EAAE,GAAG,QAAQ,CAAC,CAAC;QACpD,MAAM,kBAAkB,GACtB,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QAE1E,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,EAAE,IAAI,aAAa,CAAC;QAC9D,MAAM,IAAI,GAAG,YAAY,CAAC,kBAAkB,EAAE,CAAC;QAC/C,MAAM,gBAAgB,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC;QAEhD,YAAY,CAAC,MAAM,EAAE,CAAC;QACtB,iBAAiB,EAAE,MAAM,EAAE,CAAC;QAC5B,gBAAgB,CAAC,eAAe,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAEnG,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,aAAa,gBAAgB,8CAA8C,SAAS,GAAG,CAAC,CAAC;QAChH,gBAAgB,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACvD,CAAC;IAED,MAAM,uBAAuB,GAAG,UAAU;SACvC,UAAU,EAAE;SACZ,IAAI,CAAC,CAAC,gBAAgB,EAAE,EAAE,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC;IAEtH,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC7B,iBAAiB,CAAC,UAAU,EAAE,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IAC9D,CAAC;IAKD,cAAc,CAAC,UAAU,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC;IAC7D,iBAAiB,CAAC,UAAU,EAAE,YAAY,EAAE,yBAAyB,CAAC,CAAC;IACvE,iBAAiB,CAAC,UAAU,EAAE,YAAY,EAAE,yBAAyB,CAAC,CAAC;IAEvE,UAAU,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;IAIzC,UAAU,CAAC,eAAe,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IAEhF,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACtD,CAAC;AAOD,MAAM,cAAc,GAA2C;IAC7D,EAAE,OAAO,EAAE,uBAAuB,EAAE,OAAO,EAAE,uBAAuB,EAAE;IACtE,EAAE,OAAO,EAAE,0CAA0C,EAAE,OAAO,EAAE,yBAAyB,EAAE;IAC3F,EAAE,OAAO,EAAE,8CAA8C,EAAE,OAAO,EAAE,6BAA6B,EAAE;IACnG,EAAE,OAAO,EAAE,0CAA0C,EAAE,OAAO,EAAE,yBAAyB,EAAE;IAC3F,EAAE,OAAO,EAAE,8CAA8C,EAAE,OAAO,EAAE,6BAA6B,EAAE;IACnG,EAAE,OAAO,EAAE,2CAA2C,EAAE,OAAO,EAAE,0BAA0B,EAAE;IAC7F,EAAE,OAAO,EAAE,0CAA0C,EAAE,OAAO,EAAE,yBAAyB,EAAE;IAC3F,EAAE,OAAO,EAAE,8CAA8C,EAAE,OAAO,EAAE,6BAA6B,EAAE;IACnG,EAAE,OAAO,EAAE,6CAA6C,EAAE,OAAO,EAAE,4BAA4B,EAAE;IACjG,EAAE,OAAO,EAAE,iDAAiD,EAAE,OAAO,EAAE,gCAAgC,EAAE;IACzG,EAAE,OAAO,EAAE,qCAAqC,EAAE,OAAO,EAAE,oBAAoB,EAAE;IACjF,EAAE,OAAO,EAAE,yCAAyC,EAAE,OAAO,EAAE,wBAAwB,EAAE;IACzF,EAAE,OAAO,EAAE,2CAA2C,EAAE,OAAO,EAAE,0BAA0B,EAAE;IAC7F,EAAE,OAAO,EAAE,+CAA+C,EAAE,OAAO,EAAE,8BAA8B,EAAE;IACrG,EAAE,OAAO,EAAE,2BAA2B,EAAE,OAAO,EAAE,iBAAiB,EAAE;IACpE,EAAE,OAAO,EAAE,2BAA2B,EAAE,OAAO,EAAE,mBAAmB,EAAE;IACtE,EAAE,OAAO,EAAE,2BAA2B,EAAE,OAAO,EAAE,2BAA2B,EAAE;IAC9E,EAAE,OAAO,EAAE,8BAA8B,EAAE,OAAO,EAAE,8BAA8B,EAAE;IACpF,EAAE,OAAO,EAAE,0BAA0B,EAAE,OAAO,EAAE,0BAA0B,EAAE;CAC7E,CAAC;AAMF,SAAS,oBAAoB,CAAC,UAAsB;IAClD,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;IAC1C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,cAAc,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,eAAe,CAAC,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;QAEjE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,SAAS;QACX,CAAC;QAED,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;QAE9B,IAAI,WAAW,CAAC,YAAY,EAAE,EAAE,CAAC;YAC/B,QAAQ,CAAC,IAAI,CACX,WAAW,OAAO,wEAAwE,OAAO,YAAY,CAC9G,CAAC;YACF,SAAS;QACX,CAAC;QAED,MAAM,WAAW,GAAG,UAAU;aAC3B,oBAAoB,CAAC,qBAAU,CAAC,UAAU,CAAC;aAC3C,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,qBAAU,CAAC,eAAe,CAAC,CAAC,CAAC;QAE5G,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;QAIzE,cAAc,CAAC,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;QAClD,iBAAiB,CAAC,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;QAErD,KAAK,CAAC,IAAI,CAAC,WAAW,OAAO,OAAO,OAAO,KAAK,WAAW,CAAC,MAAM,aAAa,CAAC,CAAC;IACnF,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAClE,CAAC;AAOD,SAAS,qCAAqC,CAAC,UAAsB;IACnE,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;IAC1C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,MAAM,KAAK,GAAG,UAAU;SACrB,oBAAoB,CAAC,qBAAU,CAAC,cAAc,CAAC;SAC/C,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,KAAK,4BAA4B,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IAEzH,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;QAEzC,IAAI,SAAS,CAAC,MAAM,CAAC,qBAAU,CAAC,uBAAuB,CAAC,EAAE,CAAC;YACzD,SAAS;QACX,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,CAAC,qBAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACvC,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;YACzC,SAAS,CAAC,eAAe,CAAC,mBAAmB,YAAY,IAAI,CAAC,CAAC;YAC/D,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,6CAA6C,YAAY,+BAA+B,CAAC,CAAC;YACjH,SAAS;QACX,CAAC;QAED,QAAQ,CAAC,IAAI,CACX,QAAQ,IAAI,CAAC,kBAAkB,EAAE,yJAAyJ,CAC3L,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAClE,CAAC;AAMD,SAAS,qBAAqB,CAAC,UAAsB;IACnD,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;IAC1C,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,MAAM,kBAAkB,GAAG,WAAW,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACjE,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;IAC3D,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,GAAG,CAC3B,kBAAkB,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CACnH,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,iCAAe,EAAE,CAAC;QACtC,IAAI,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,QAAQ,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,IAAI,0CAA0C,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QACtG,CAAC;IACH,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;AAC3D,CAAC;AAOD,SAAS,iBAAiB,CAAC,UAAsB;IAC/C,MAAM,OAAO,GAAG;QACd,yBAAyB,CAAC,UAAU,CAAC;QACrC,uBAAuB,CAAC,UAAU,CAAC;QACnC,oBAAoB,CAAC,UAAU,CAAC;QAChC,qCAAqC,CAAC,UAAU,CAAC;QACjD,qBAAqB,CAAC,UAAU,CAAC;KAClC,CAAC;IAEF,OAAO;QACL,QAAQ,EAAE,UAAU,CAAC,WAAW,EAAE;QAClC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;QACjD,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;QAChD,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;KACvD,CAAC;AACJ,CAAC;AAoBD,SAAS,SAAS,CAAC,OAAe,EAAE,UAAgC,EAAE;IACpE,MAAM,OAAO,GAAG,IAAI,kBAAO,CAAC,EAAE,2BAA2B,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,OAAO,CAAC,qBAAqB,CAAC;QAC5B,GAAG,OAAO,UAAU;QACpB,IAAI,OAAO,YAAY;QACvB,IAAI,OAAO,eAAe;QAC1B,IAAI,OAAO,qBAAqB;KACjC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;IAE5F,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO,CAAC,QAAQ,EAAE,CAAC;IACrB,CAAC;IAED,OAAO;QACL,YAAY,EAAE,OAAO,CAAC,MAAM;QAC5B,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM;QAC/D,OAAO;KACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ interface RemovedSymbol {
2
+ name: string;
3
+ guidance: string;
4
+ }
5
+ declare const REMOVED_SYMBOLS: RemovedSymbol[];
6
+ export { REMOVED_SYMBOLS };
7
+ export type { RemovedSymbol };