@punks/backend-entity-manager 0.0.28 → 0.0.30

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 (429) hide show
  1. package/dist/cjs/index.js +1096 -296
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/types/abstractions/app.d.ts +4 -0
  4. package/dist/cjs/types/abstractions/email.d.ts +30 -0
  5. package/dist/cjs/types/abstractions/errors.d.ts +3 -0
  6. package/dist/cjs/types/abstractions/index.d.ts +1 -0
  7. package/dist/cjs/types/authorization/allowAll.d.ts +1 -0
  8. package/dist/cjs/types/platforms/nest/__test__/server/app/auth/auth.actions.d.ts +18 -0
  9. package/dist/cjs/types/platforms/nest/__test__/server/app/auth/auth.controller.d.ts +12 -0
  10. package/dist/cjs/types/platforms/nest/__test__/server/app/auth/auth.dto.d.ts +51 -0
  11. package/dist/cjs/types/platforms/nest/__test__/server/app/auth/auth.module.d.ts +2 -0
  12. package/dist/cjs/types/platforms/nest/__test__/server/app/auth/user.service.d.ts +18 -0
  13. package/dist/cjs/types/platforms/nest/__test__/server/app/companies/company.actions.d.ts +7 -0
  14. package/dist/cjs/types/platforms/nest/__test__/server/app/companies/company.controller.d.ts +11 -0
  15. package/dist/cjs/types/platforms/nest/__test__/server/app/companies/company.converter.d.ts +9 -0
  16. package/dist/cjs/types/platforms/nest/__test__/server/app/companies/company.dto.d.ts +20 -0
  17. package/dist/cjs/types/platforms/nest/__test__/server/app/companies/company.module.d.ts +2 -0
  18. package/dist/cjs/types/platforms/nest/__test__/server/app/divisions/division.actions.d.ts +7 -0
  19. package/dist/cjs/types/platforms/nest/__test__/server/app/divisions/division.controller.d.ts +11 -0
  20. package/dist/cjs/types/platforms/nest/__test__/server/app/divisions/division.converter.d.ts +9 -0
  21. package/dist/cjs/types/platforms/nest/__test__/server/app/divisions/division.dto.d.ts +20 -0
  22. package/dist/cjs/types/platforms/nest/__test__/server/app/divisions/division.module.d.ts +2 -0
  23. package/dist/cjs/types/platforms/nest/__test__/server/app/index.d.ts +2 -0
  24. package/dist/cjs/types/platforms/nest/__test__/server/app/organizations/organization.actions.d.ts +7 -0
  25. package/dist/cjs/types/platforms/nest/__test__/server/app/organizations/organization.controller.d.ts +11 -0
  26. package/dist/cjs/types/platforms/nest/__test__/server/app/organizations/organization.converter.d.ts +9 -0
  27. package/dist/cjs/types/platforms/nest/__test__/server/app/organizations/organization.dto.d.ts +20 -0
  28. package/dist/cjs/types/platforms/nest/__test__/server/app/organizations/organization.module.d.ts +2 -0
  29. package/dist/cjs/types/platforms/nest/__test__/server/app/roles/role.actions.d.ts +7 -0
  30. package/dist/cjs/types/platforms/nest/__test__/server/app/roles/role.controller.d.ts +11 -0
  31. package/dist/cjs/types/platforms/nest/__test__/server/app/roles/role.converter.d.ts +9 -0
  32. package/dist/cjs/types/platforms/nest/__test__/server/app/roles/role.dto.d.ts +20 -0
  33. package/dist/cjs/types/platforms/nest/__test__/server/app/roles/role.module.d.ts +2 -0
  34. package/dist/cjs/types/platforms/nest/__test__/server/app/tenants/tenant.actions.d.ts +7 -0
  35. package/dist/cjs/types/platforms/nest/__test__/server/app/tenants/tenant.controller.d.ts +11 -0
  36. package/dist/cjs/types/platforms/nest/__test__/server/app/tenants/tenant.converter.d.ts +9 -0
  37. package/dist/cjs/types/platforms/nest/__test__/server/app/tenants/tenant.dto.d.ts +20 -0
  38. package/dist/cjs/types/platforms/nest/__test__/server/app/tenants/tenant.module.d.ts +2 -0
  39. package/dist/cjs/types/platforms/nest/__test__/server/app/userGroupMembers/userGroupMember.actions.d.ts +7 -0
  40. package/dist/cjs/types/platforms/nest/__test__/server/app/userGroupMembers/userGroupMember.controller.d.ts +11 -0
  41. package/dist/cjs/types/platforms/nest/__test__/server/app/userGroupMembers/userGroupMember.converter.d.ts +9 -0
  42. package/dist/cjs/types/platforms/nest/__test__/server/app/userGroupMembers/userGroupMember.dto.d.ts +20 -0
  43. package/dist/cjs/types/platforms/nest/__test__/server/app/userGroupMembers/userGroupMember.module.d.ts +2 -0
  44. package/dist/cjs/types/platforms/nest/__test__/server/app/userGroups/userGroup.actions.d.ts +7 -0
  45. package/dist/cjs/types/platforms/nest/__test__/server/app/userGroups/userGroup.controller.d.ts +11 -0
  46. package/dist/cjs/types/platforms/nest/__test__/server/app/userGroups/userGroup.converter.d.ts +9 -0
  47. package/dist/cjs/types/platforms/nest/__test__/server/app/userGroups/userGroup.dto.d.ts +20 -0
  48. package/dist/cjs/types/platforms/nest/__test__/server/app/userGroups/userGroup.module.d.ts +2 -0
  49. package/dist/cjs/types/platforms/nest/__test__/server/app/userProfiles/userProfile.actions.d.ts +7 -0
  50. package/dist/cjs/types/platforms/nest/__test__/server/app/userProfiles/userProfile.controller.d.ts +11 -0
  51. package/dist/cjs/types/platforms/nest/__test__/server/app/userProfiles/userProfile.converter.d.ts +9 -0
  52. package/dist/cjs/types/platforms/nest/__test__/server/app/userProfiles/userProfile.dto.d.ts +20 -0
  53. package/dist/cjs/types/platforms/nest/__test__/server/app/userProfiles/userProfile.module.d.ts +2 -0
  54. package/dist/cjs/types/platforms/nest/__test__/server/app/userRoles/userRole.actions.d.ts +7 -0
  55. package/dist/cjs/types/platforms/nest/__test__/server/app/userRoles/userRole.controller.d.ts +11 -0
  56. package/dist/cjs/types/platforms/nest/__test__/server/app/userRoles/userRole.converter.d.ts +9 -0
  57. package/dist/cjs/types/platforms/nest/__test__/server/app/userRoles/userRole.dto.d.ts +20 -0
  58. package/dist/cjs/types/platforms/nest/__test__/server/app/userRoles/userRole.module.d.ts +2 -0
  59. package/dist/cjs/types/platforms/nest/__test__/server/app/users/user.actions.d.ts +7 -0
  60. package/dist/cjs/types/platforms/nest/__test__/server/app/users/user.controller.d.ts +11 -0
  61. package/dist/cjs/types/platforms/nest/__test__/server/app/users/user.converter.d.ts +9 -0
  62. package/dist/cjs/types/platforms/nest/__test__/server/app/users/user.dto.d.ts +20 -0
  63. package/dist/cjs/types/platforms/nest/__test__/server/app/users/user.module.d.ts +2 -0
  64. package/dist/cjs/types/platforms/nest/__test__/server/database/core/entities/company.entity.d.ts +11 -0
  65. package/dist/cjs/types/platforms/nest/__test__/server/database/core/entities/division.entity.d.ts +9 -0
  66. package/dist/cjs/types/platforms/nest/__test__/server/database/core/entities/organization.entity.d.ts +15 -0
  67. package/dist/cjs/types/platforms/nest/__test__/server/database/core/entities/role.entity.d.ts +9 -0
  68. package/dist/cjs/types/platforms/nest/__test__/server/database/core/entities/tenant.entity.d.ts +11 -0
  69. package/dist/cjs/types/platforms/nest/__test__/server/database/core/entities/user.entity.d.ts +32 -0
  70. package/dist/cjs/types/platforms/nest/__test__/server/database/core/entities/userGroup.entity.d.ts +11 -0
  71. package/dist/cjs/types/platforms/nest/__test__/server/database/core/entities/userGroupMember.entity.d.ts +9 -0
  72. package/dist/cjs/types/platforms/nest/__test__/server/database/core/entities/userProfile.entity.d.ts +7 -0
  73. package/dist/cjs/types/platforms/nest/__test__/server/database/core/entities/userRole.entity.d.ts +9 -0
  74. package/dist/cjs/types/platforms/nest/__test__/server/database/core/entities.d.ts +12 -0
  75. package/dist/cjs/types/platforms/nest/__test__/server/database/core/index.d.ts +50 -0
  76. package/dist/cjs/types/platforms/nest/__test__/server/database/core/repositories/company.repository.d.ts +7 -0
  77. package/dist/cjs/types/platforms/nest/__test__/server/database/core/repositories/division.repository.d.ts +7 -0
  78. package/dist/{esm/types/platforms/nest/__test__/server/entities/foo/repository.d.ts → cjs/types/platforms/nest/__test__/server/database/core/repositories/foo.repository.d.ts} +3 -3
  79. package/dist/cjs/types/platforms/nest/__test__/server/database/core/repositories/organization.repository.d.ts +7 -0
  80. package/dist/cjs/types/platforms/nest/__test__/server/database/core/repositories/role.repository.d.ts +7 -0
  81. package/dist/cjs/types/platforms/nest/__test__/server/database/core/repositories/tenant.repository.d.ts +7 -0
  82. package/dist/cjs/types/platforms/nest/__test__/server/database/core/repositories/user.repository.d.ts +7 -0
  83. package/dist/cjs/types/platforms/nest/__test__/server/database/core/repositories/userGroup.repository.d.ts +7 -0
  84. package/dist/cjs/types/platforms/nest/__test__/server/database/core/repositories/userGroupMember.repository.d.ts +7 -0
  85. package/dist/cjs/types/platforms/nest/__test__/server/database/core/repositories/userProfile.repository.d.ts +7 -0
  86. package/dist/cjs/types/platforms/nest/__test__/server/database/core/repositories/userRole.repository.d.ts +7 -0
  87. package/dist/cjs/types/platforms/nest/__test__/server/database/core/repositories.d.ts +11 -0
  88. package/dist/cjs/types/platforms/nest/__test__/server/entities/companies/company.adapter.d.ts +7 -0
  89. package/dist/cjs/types/platforms/nest/__test__/server/entities/companies/company.authentication.d.ts +10 -0
  90. package/dist/cjs/types/platforms/nest/__test__/server/entities/companies/company.manager.d.ts +6 -0
  91. package/dist/cjs/types/platforms/nest/__test__/server/entities/companies/company.models.d.ts +49 -0
  92. package/dist/cjs/types/platforms/nest/__test__/server/entities/companies/company.module.d.ts +2 -0
  93. package/dist/cjs/types/platforms/nest/__test__/server/entities/companies/company.query.d.ts +11 -0
  94. package/dist/cjs/types/platforms/nest/__test__/server/entities/divisions/division.adapter.d.ts +7 -0
  95. package/dist/cjs/types/platforms/nest/__test__/server/entities/divisions/division.authentication.d.ts +10 -0
  96. package/dist/cjs/types/platforms/nest/__test__/server/entities/divisions/division.manager.d.ts +6 -0
  97. package/dist/cjs/types/platforms/nest/__test__/server/entities/divisions/division.models.d.ts +49 -0
  98. package/dist/cjs/types/platforms/nest/__test__/server/entities/divisions/division.module.d.ts +2 -0
  99. package/dist/cjs/types/platforms/nest/__test__/server/entities/divisions/division.query.d.ts +11 -0
  100. package/dist/cjs/types/platforms/nest/__test__/server/entities/foo/actions.d.ts +1 -1
  101. package/dist/cjs/types/platforms/nest/__test__/server/entities/foo/authentication.d.ts +2 -2
  102. package/dist/cjs/types/platforms/nest/__test__/server/entities/foo/converter.d.ts +1 -1
  103. package/dist/cjs/types/platforms/nest/__test__/server/entities/foo/index.d.ts +1 -1
  104. package/dist/cjs/types/platforms/nest/__test__/server/entities/foo/manager.d.ts +1 -1
  105. package/dist/cjs/types/platforms/nest/__test__/server/entities/foo/models.d.ts +1 -1
  106. package/dist/cjs/types/platforms/nest/__test__/server/entities/foo/query.d.ts +2 -2
  107. package/dist/cjs/types/platforms/nest/__test__/server/entities/index.d.ts +2 -6
  108. package/dist/cjs/types/platforms/nest/__test__/server/entities/modules.d.ts +2 -0
  109. package/dist/cjs/types/platforms/nest/__test__/server/entities/organizations/organization.adapter.d.ts +7 -0
  110. package/dist/cjs/types/platforms/nest/__test__/server/entities/organizations/organization.authentication.d.ts +10 -0
  111. package/dist/cjs/types/platforms/nest/__test__/server/entities/organizations/organization.manager.d.ts +6 -0
  112. package/dist/cjs/types/platforms/nest/__test__/server/entities/organizations/organization.models.d.ts +50 -0
  113. package/dist/cjs/types/platforms/nest/__test__/server/entities/organizations/organization.module.d.ts +2 -0
  114. package/dist/cjs/types/platforms/nest/__test__/server/entities/organizations/organization.query.d.ts +11 -0
  115. package/dist/cjs/types/platforms/nest/__test__/server/entities/roles/role.adapter.d.ts +7 -0
  116. package/dist/cjs/types/platforms/nest/__test__/server/entities/roles/role.authentication.d.ts +10 -0
  117. package/dist/cjs/types/platforms/nest/__test__/server/entities/roles/role.manager.d.ts +6 -0
  118. package/dist/cjs/types/platforms/nest/__test__/server/entities/roles/role.models.d.ts +49 -0
  119. package/dist/cjs/types/platforms/nest/__test__/server/entities/roles/role.module.d.ts +2 -0
  120. package/dist/cjs/types/platforms/nest/__test__/server/entities/roles/role.query.d.ts +11 -0
  121. package/dist/cjs/types/platforms/nest/__test__/server/entities/tenants/tenant.adapter.d.ts +7 -0
  122. package/dist/cjs/types/platforms/nest/__test__/server/entities/tenants/tenant.authentication.d.ts +10 -0
  123. package/dist/cjs/types/platforms/nest/__test__/server/entities/tenants/tenant.manager.d.ts +6 -0
  124. package/dist/cjs/types/platforms/nest/__test__/server/entities/tenants/tenant.models.d.ts +49 -0
  125. package/dist/cjs/types/platforms/nest/__test__/server/entities/tenants/tenant.module.d.ts +2 -0
  126. package/dist/cjs/types/platforms/nest/__test__/server/entities/tenants/tenant.query.d.ts +11 -0
  127. package/dist/cjs/types/platforms/nest/__test__/server/entities/userGroupMembers/userGroupMember.adapter.d.ts +7 -0
  128. package/dist/cjs/types/platforms/nest/__test__/server/entities/userGroupMembers/userGroupMember.authentication.d.ts +10 -0
  129. package/dist/cjs/types/platforms/nest/__test__/server/entities/userGroupMembers/userGroupMember.manager.d.ts +6 -0
  130. package/dist/cjs/types/platforms/nest/__test__/server/entities/userGroupMembers/userGroupMember.models.d.ts +49 -0
  131. package/dist/cjs/types/platforms/nest/__test__/server/entities/userGroupMembers/userGroupMember.module.d.ts +2 -0
  132. package/dist/cjs/types/platforms/nest/__test__/server/entities/userGroupMembers/userGroupMember.query.d.ts +11 -0
  133. package/dist/cjs/types/platforms/nest/__test__/server/entities/userGroups/userGroup.adapter.d.ts +7 -0
  134. package/dist/cjs/types/platforms/nest/__test__/server/entities/userGroups/userGroup.authentication.d.ts +10 -0
  135. package/dist/cjs/types/platforms/nest/__test__/server/entities/userGroups/userGroup.manager.d.ts +6 -0
  136. package/dist/cjs/types/platforms/nest/__test__/server/entities/userGroups/userGroup.models.d.ts +49 -0
  137. package/dist/cjs/types/platforms/nest/__test__/server/entities/userGroups/userGroup.module.d.ts +2 -0
  138. package/dist/cjs/types/platforms/nest/__test__/server/entities/userGroups/userGroup.query.d.ts +11 -0
  139. package/dist/cjs/types/platforms/nest/__test__/server/entities/userProfiles/userProfile.adapter.d.ts +7 -0
  140. package/dist/cjs/types/platforms/nest/__test__/server/entities/userProfiles/userProfile.authentication.d.ts +10 -0
  141. package/dist/cjs/types/platforms/nest/__test__/server/entities/userProfiles/userProfile.manager.d.ts +6 -0
  142. package/dist/cjs/types/platforms/nest/__test__/server/entities/userProfiles/userProfile.models.d.ts +49 -0
  143. package/dist/cjs/types/platforms/nest/__test__/server/entities/userProfiles/userProfile.module.d.ts +2 -0
  144. package/dist/cjs/types/platforms/nest/__test__/server/entities/userProfiles/userProfile.query.d.ts +11 -0
  145. package/dist/cjs/types/platforms/nest/__test__/server/entities/userRoles/userRole.adapter.d.ts +7 -0
  146. package/dist/cjs/types/platforms/nest/__test__/server/entities/userRoles/userRole.authentication.d.ts +10 -0
  147. package/dist/cjs/types/platforms/nest/__test__/server/entities/userRoles/userRole.manager.d.ts +6 -0
  148. package/dist/cjs/types/platforms/nest/__test__/server/entities/userRoles/userRole.models.d.ts +49 -0
  149. package/dist/cjs/types/platforms/nest/__test__/server/entities/userRoles/userRole.module.d.ts +2 -0
  150. package/dist/cjs/types/platforms/nest/__test__/server/entities/userRoles/userRole.query.d.ts +11 -0
  151. package/dist/cjs/types/platforms/nest/__test__/server/entities/users/user.adapter.d.ts +7 -0
  152. package/dist/cjs/types/platforms/nest/__test__/server/entities/users/user.authentication.d.ts +10 -0
  153. package/dist/cjs/types/platforms/nest/__test__/server/entities/users/user.manager.d.ts +6 -0
  154. package/dist/cjs/types/platforms/nest/__test__/server/entities/users/user.models.d.ts +55 -0
  155. package/dist/cjs/types/platforms/nest/__test__/server/entities/users/user.module.d.ts +2 -0
  156. package/dist/cjs/types/platforms/nest/__test__/server/entities/users/user.query.d.ts +11 -0
  157. package/dist/cjs/types/platforms/nest/__test__/server/index.d.ts +2 -1
  158. package/dist/cjs/types/platforms/nest/__test__/server/infrastructure/authentication/index.d.ts +3 -0
  159. package/dist/cjs/types/platforms/nest/__test__/server/infrastructure/authentication/module.d.ts +2 -0
  160. package/dist/cjs/types/platforms/nest/__test__/server/infrastructure/authentication/processors/entity-auth/index.d.ts +10 -0
  161. package/dist/cjs/types/platforms/nest/__test__/server/infrastructure/authentication/providers/auth-context/index.d.ts +5 -0
  162. package/dist/cjs/types/platforms/nest/__test__/server/infrastructure/authentication/providers/index.d.ts +2 -0
  163. package/dist/cjs/types/platforms/nest/__test__/server/infrastructure/authentication/types.d.ts +16 -0
  164. package/dist/cjs/types/platforms/nest/__test__/server/infrastructure/index.d.ts +2 -0
  165. package/dist/cjs/types/platforms/nest/__test__/server/services/email-provider/index.d.ts +12 -0
  166. package/dist/{esm/types/platforms/nest/__test__/server/middlewares/index.d.ts → cjs/types/platforms/nest/__test__/server/shared/errors/middleware.d.ts} +1 -2
  167. package/dist/cjs/types/platforms/nest/__test__/server/shared/module.d.ts +2 -0
  168. package/dist/cjs/types/platforms/nest/__test__/tests/authentication/test_auth_api.test.d.ts +1 -0
  169. package/dist/cjs/types/platforms/nest/decorators/email.d.ts +8 -0
  170. package/dist/cjs/types/platforms/nest/decorators/index.d.ts +2 -0
  171. package/dist/cjs/types/platforms/nest/decorators/initializer.d.ts +1 -0
  172. package/dist/cjs/types/platforms/nest/decorators/symbols.d.ts +3 -0
  173. package/dist/cjs/types/platforms/nest/extensions/authentication/abstractions/index.d.ts +38 -0
  174. package/dist/cjs/types/platforms/nest/extensions/authentication/converters/index.d.ts +2 -0
  175. package/dist/cjs/types/platforms/nest/extensions/authentication/decorators/index.d.ts +2 -0
  176. package/dist/cjs/types/platforms/nest/extensions/authentication/decorators/symbols.d.ts +3 -0
  177. package/dist/cjs/types/platforms/nest/extensions/authentication/decorators/userService.d.ts +1 -0
  178. package/dist/cjs/types/platforms/nest/extensions/authentication/email/index.d.ts +1 -0
  179. package/dist/cjs/types/platforms/nest/extensions/authentication/email/templates/index.d.ts +20 -0
  180. package/dist/cjs/types/platforms/nest/extensions/authentication/errors/index.d.ts +9 -0
  181. package/dist/cjs/types/platforms/nest/extensions/authentication/handlers/index.d.ts +11 -0
  182. package/dist/cjs/types/platforms/nest/extensions/authentication/handlers/user-disable/index.d.ts +9 -0
  183. package/dist/cjs/types/platforms/nest/extensions/authentication/handlers/user-enable/index.d.ts +9 -0
  184. package/dist/cjs/types/platforms/nest/extensions/authentication/handlers/user-login/index.d.ts +22 -0
  185. package/dist/cjs/types/platforms/nest/extensions/authentication/handlers/user-password-change/index.d.ts +13 -0
  186. package/dist/cjs/types/platforms/nest/extensions/authentication/handlers/user-password-reset-complete/index.d.ts +18 -0
  187. package/dist/cjs/types/platforms/nest/extensions/authentication/handlers/user-password-reset-request/index.d.ts +26 -0
  188. package/dist/cjs/types/platforms/nest/extensions/authentication/handlers/user-register/index.d.ts +42 -0
  189. package/dist/cjs/types/platforms/nest/extensions/authentication/handlers/user-token-verify/index.d.ts +15 -0
  190. package/dist/cjs/types/platforms/nest/extensions/authentication/handlers/user-verify-complete/index.d.ts +14 -0
  191. package/dist/cjs/types/platforms/nest/extensions/authentication/handlers/user-verify-request/index.d.ts +26 -0
  192. package/dist/cjs/types/platforms/nest/extensions/authentication/index.d.ts +6 -0
  193. package/dist/cjs/types/platforms/nest/extensions/authentication/initializer/index.d.ts +12 -0
  194. package/dist/cjs/types/platforms/nest/extensions/authentication/module.d.ts +3 -0
  195. package/dist/cjs/types/platforms/nest/extensions/authentication/providers/index.d.ts +3 -0
  196. package/dist/cjs/types/platforms/nest/extensions/authentication/providers/jwt/index.d.ts +8 -0
  197. package/dist/cjs/types/platforms/nest/extensions/authentication/providers/password-hasher/index.d.ts +17 -0
  198. package/dist/cjs/types/platforms/nest/extensions/authentication/resolver/index.d.ts +6 -0
  199. package/dist/cjs/types/platforms/nest/extensions/authentication/services/authentication/index.d.ts +38 -1
  200. package/dist/cjs/types/platforms/nest/extensions/authentication/settings/index.d.ts +3 -0
  201. package/dist/cjs/types/platforms/nest/extensions/authentication/types/index.d.ts +14 -0
  202. package/dist/cjs/types/platforms/nest/ioc/discovery/index.d.ts +1 -0
  203. package/dist/cjs/types/platforms/nest/processors/initializer/index.d.ts +8 -1
  204. package/dist/cjs/types/platforms/nest/providers/email-templates/index.d.ts +6 -0
  205. package/dist/cjs/types/platforms/nest/services/email/index.d.ts +9 -0
  206. package/dist/cjs/types/platforms/nest/services/hashing/index.d.ts +4 -0
  207. package/dist/cjs/types/platforms/nest/services/index.d.ts +3 -0
  208. package/dist/cjs/types/platforms/nest/services/manager/index.d.ts +9 -0
  209. package/dist/cjs/types/platforms/nest/services/providers.d.ts +4 -1
  210. package/dist/cjs/types/providers/services.d.ts +5 -1
  211. package/dist/cjs/types/symbols/ioc.d.ts +4 -0
  212. package/dist/esm/index.js +1081 -290
  213. package/dist/esm/index.js.map +1 -1
  214. package/dist/esm/types/abstractions/app.d.ts +4 -0
  215. package/dist/esm/types/abstractions/email.d.ts +30 -0
  216. package/dist/esm/types/abstractions/errors.d.ts +3 -0
  217. package/dist/esm/types/abstractions/index.d.ts +1 -0
  218. package/dist/esm/types/authorization/allowAll.d.ts +1 -0
  219. package/dist/esm/types/platforms/nest/__test__/server/app/auth/auth.actions.d.ts +18 -0
  220. package/dist/esm/types/platforms/nest/__test__/server/app/auth/auth.controller.d.ts +12 -0
  221. package/dist/esm/types/platforms/nest/__test__/server/app/auth/auth.dto.d.ts +51 -0
  222. package/dist/esm/types/platforms/nest/__test__/server/app/auth/auth.module.d.ts +2 -0
  223. package/dist/esm/types/platforms/nest/__test__/server/app/auth/user.service.d.ts +18 -0
  224. package/dist/esm/types/platforms/nest/__test__/server/app/companies/company.actions.d.ts +7 -0
  225. package/dist/esm/types/platforms/nest/__test__/server/app/companies/company.controller.d.ts +11 -0
  226. package/dist/esm/types/platforms/nest/__test__/server/app/companies/company.converter.d.ts +9 -0
  227. package/dist/esm/types/platforms/nest/__test__/server/app/companies/company.dto.d.ts +20 -0
  228. package/dist/esm/types/platforms/nest/__test__/server/app/companies/company.module.d.ts +2 -0
  229. package/dist/esm/types/platforms/nest/__test__/server/app/divisions/division.actions.d.ts +7 -0
  230. package/dist/esm/types/platforms/nest/__test__/server/app/divisions/division.controller.d.ts +11 -0
  231. package/dist/esm/types/platforms/nest/__test__/server/app/divisions/division.converter.d.ts +9 -0
  232. package/dist/esm/types/platforms/nest/__test__/server/app/divisions/division.dto.d.ts +20 -0
  233. package/dist/esm/types/platforms/nest/__test__/server/app/divisions/division.module.d.ts +2 -0
  234. package/dist/esm/types/platforms/nest/__test__/server/app/index.d.ts +2 -0
  235. package/dist/esm/types/platforms/nest/__test__/server/app/organizations/organization.actions.d.ts +7 -0
  236. package/dist/esm/types/platforms/nest/__test__/server/app/organizations/organization.controller.d.ts +11 -0
  237. package/dist/esm/types/platforms/nest/__test__/server/app/organizations/organization.converter.d.ts +9 -0
  238. package/dist/esm/types/platforms/nest/__test__/server/app/organizations/organization.dto.d.ts +20 -0
  239. package/dist/esm/types/platforms/nest/__test__/server/app/organizations/organization.module.d.ts +2 -0
  240. package/dist/esm/types/platforms/nest/__test__/server/app/roles/role.actions.d.ts +7 -0
  241. package/dist/esm/types/platforms/nest/__test__/server/app/roles/role.controller.d.ts +11 -0
  242. package/dist/esm/types/platforms/nest/__test__/server/app/roles/role.converter.d.ts +9 -0
  243. package/dist/esm/types/platforms/nest/__test__/server/app/roles/role.dto.d.ts +20 -0
  244. package/dist/esm/types/platforms/nest/__test__/server/app/roles/role.module.d.ts +2 -0
  245. package/dist/esm/types/platforms/nest/__test__/server/app/tenants/tenant.actions.d.ts +7 -0
  246. package/dist/esm/types/platforms/nest/__test__/server/app/tenants/tenant.controller.d.ts +11 -0
  247. package/dist/esm/types/platforms/nest/__test__/server/app/tenants/tenant.converter.d.ts +9 -0
  248. package/dist/esm/types/platforms/nest/__test__/server/app/tenants/tenant.dto.d.ts +20 -0
  249. package/dist/esm/types/platforms/nest/__test__/server/app/tenants/tenant.module.d.ts +2 -0
  250. package/dist/esm/types/platforms/nest/__test__/server/app/userGroupMembers/userGroupMember.actions.d.ts +7 -0
  251. package/dist/esm/types/platforms/nest/__test__/server/app/userGroupMembers/userGroupMember.controller.d.ts +11 -0
  252. package/dist/esm/types/platforms/nest/__test__/server/app/userGroupMembers/userGroupMember.converter.d.ts +9 -0
  253. package/dist/esm/types/platforms/nest/__test__/server/app/userGroupMembers/userGroupMember.dto.d.ts +20 -0
  254. package/dist/esm/types/platforms/nest/__test__/server/app/userGroupMembers/userGroupMember.module.d.ts +2 -0
  255. package/dist/esm/types/platforms/nest/__test__/server/app/userGroups/userGroup.actions.d.ts +7 -0
  256. package/dist/esm/types/platforms/nest/__test__/server/app/userGroups/userGroup.controller.d.ts +11 -0
  257. package/dist/esm/types/platforms/nest/__test__/server/app/userGroups/userGroup.converter.d.ts +9 -0
  258. package/dist/esm/types/platforms/nest/__test__/server/app/userGroups/userGroup.dto.d.ts +20 -0
  259. package/dist/esm/types/platforms/nest/__test__/server/app/userGroups/userGroup.module.d.ts +2 -0
  260. package/dist/esm/types/platforms/nest/__test__/server/app/userProfiles/userProfile.actions.d.ts +7 -0
  261. package/dist/esm/types/platforms/nest/__test__/server/app/userProfiles/userProfile.controller.d.ts +11 -0
  262. package/dist/esm/types/platforms/nest/__test__/server/app/userProfiles/userProfile.converter.d.ts +9 -0
  263. package/dist/esm/types/platforms/nest/__test__/server/app/userProfiles/userProfile.dto.d.ts +20 -0
  264. package/dist/esm/types/platforms/nest/__test__/server/app/userProfiles/userProfile.module.d.ts +2 -0
  265. package/dist/esm/types/platforms/nest/__test__/server/app/userRoles/userRole.actions.d.ts +7 -0
  266. package/dist/esm/types/platforms/nest/__test__/server/app/userRoles/userRole.controller.d.ts +11 -0
  267. package/dist/esm/types/platforms/nest/__test__/server/app/userRoles/userRole.converter.d.ts +9 -0
  268. package/dist/esm/types/platforms/nest/__test__/server/app/userRoles/userRole.dto.d.ts +20 -0
  269. package/dist/esm/types/platforms/nest/__test__/server/app/userRoles/userRole.module.d.ts +2 -0
  270. package/dist/esm/types/platforms/nest/__test__/server/app/users/user.actions.d.ts +7 -0
  271. package/dist/esm/types/platforms/nest/__test__/server/app/users/user.controller.d.ts +11 -0
  272. package/dist/esm/types/platforms/nest/__test__/server/app/users/user.converter.d.ts +9 -0
  273. package/dist/esm/types/platforms/nest/__test__/server/app/users/user.dto.d.ts +20 -0
  274. package/dist/esm/types/platforms/nest/__test__/server/app/users/user.module.d.ts +2 -0
  275. package/dist/esm/types/platforms/nest/__test__/server/database/core/entities/company.entity.d.ts +11 -0
  276. package/dist/esm/types/platforms/nest/__test__/server/database/core/entities/division.entity.d.ts +9 -0
  277. package/dist/esm/types/platforms/nest/__test__/server/database/core/entities/organization.entity.d.ts +15 -0
  278. package/dist/esm/types/platforms/nest/__test__/server/database/core/entities/role.entity.d.ts +9 -0
  279. package/dist/esm/types/platforms/nest/__test__/server/database/core/entities/tenant.entity.d.ts +11 -0
  280. package/dist/esm/types/platforms/nest/__test__/server/database/core/entities/user.entity.d.ts +32 -0
  281. package/dist/esm/types/platforms/nest/__test__/server/database/core/entities/userGroup.entity.d.ts +11 -0
  282. package/dist/esm/types/platforms/nest/__test__/server/database/core/entities/userGroupMember.entity.d.ts +9 -0
  283. package/dist/esm/types/platforms/nest/__test__/server/database/core/entities/userProfile.entity.d.ts +7 -0
  284. package/dist/esm/types/platforms/nest/__test__/server/database/core/entities/userRole.entity.d.ts +9 -0
  285. package/dist/esm/types/platforms/nest/__test__/server/database/core/entities.d.ts +12 -0
  286. package/dist/esm/types/platforms/nest/__test__/server/database/core/index.d.ts +50 -0
  287. package/dist/esm/types/platforms/nest/__test__/server/database/core/repositories/company.repository.d.ts +7 -0
  288. package/dist/esm/types/platforms/nest/__test__/server/database/core/repositories/division.repository.d.ts +7 -0
  289. package/dist/{cjs/types/platforms/nest/__test__/server/entities/foo/repository.d.ts → esm/types/platforms/nest/__test__/server/database/core/repositories/foo.repository.d.ts} +3 -3
  290. package/dist/esm/types/platforms/nest/__test__/server/database/core/repositories/organization.repository.d.ts +7 -0
  291. package/dist/esm/types/platforms/nest/__test__/server/database/core/repositories/role.repository.d.ts +7 -0
  292. package/dist/esm/types/platforms/nest/__test__/server/database/core/repositories/tenant.repository.d.ts +7 -0
  293. package/dist/esm/types/platforms/nest/__test__/server/database/core/repositories/user.repository.d.ts +7 -0
  294. package/dist/esm/types/platforms/nest/__test__/server/database/core/repositories/userGroup.repository.d.ts +7 -0
  295. package/dist/esm/types/platforms/nest/__test__/server/database/core/repositories/userGroupMember.repository.d.ts +7 -0
  296. package/dist/esm/types/platforms/nest/__test__/server/database/core/repositories/userProfile.repository.d.ts +7 -0
  297. package/dist/esm/types/platforms/nest/__test__/server/database/core/repositories/userRole.repository.d.ts +7 -0
  298. package/dist/esm/types/platforms/nest/__test__/server/database/core/repositories.d.ts +11 -0
  299. package/dist/esm/types/platforms/nest/__test__/server/entities/companies/company.adapter.d.ts +7 -0
  300. package/dist/esm/types/platforms/nest/__test__/server/entities/companies/company.authentication.d.ts +10 -0
  301. package/dist/esm/types/platforms/nest/__test__/server/entities/companies/company.manager.d.ts +6 -0
  302. package/dist/esm/types/platforms/nest/__test__/server/entities/companies/company.models.d.ts +49 -0
  303. package/dist/esm/types/platforms/nest/__test__/server/entities/companies/company.module.d.ts +2 -0
  304. package/dist/esm/types/platforms/nest/__test__/server/entities/companies/company.query.d.ts +11 -0
  305. package/dist/esm/types/platforms/nest/__test__/server/entities/divisions/division.adapter.d.ts +7 -0
  306. package/dist/esm/types/platforms/nest/__test__/server/entities/divisions/division.authentication.d.ts +10 -0
  307. package/dist/esm/types/platforms/nest/__test__/server/entities/divisions/division.manager.d.ts +6 -0
  308. package/dist/esm/types/platforms/nest/__test__/server/entities/divisions/division.models.d.ts +49 -0
  309. package/dist/esm/types/platforms/nest/__test__/server/entities/divisions/division.module.d.ts +2 -0
  310. package/dist/esm/types/platforms/nest/__test__/server/entities/divisions/division.query.d.ts +11 -0
  311. package/dist/esm/types/platforms/nest/__test__/server/entities/foo/actions.d.ts +1 -1
  312. package/dist/esm/types/platforms/nest/__test__/server/entities/foo/authentication.d.ts +2 -2
  313. package/dist/esm/types/platforms/nest/__test__/server/entities/foo/converter.d.ts +1 -1
  314. package/dist/esm/types/platforms/nest/__test__/server/entities/foo/index.d.ts +1 -1
  315. package/dist/esm/types/platforms/nest/__test__/server/entities/foo/manager.d.ts +1 -1
  316. package/dist/esm/types/platforms/nest/__test__/server/entities/foo/models.d.ts +1 -1
  317. package/dist/esm/types/platforms/nest/__test__/server/entities/foo/query.d.ts +2 -2
  318. package/dist/esm/types/platforms/nest/__test__/server/entities/index.d.ts +2 -6
  319. package/dist/esm/types/platforms/nest/__test__/server/entities/modules.d.ts +2 -0
  320. package/dist/esm/types/platforms/nest/__test__/server/entities/organizations/organization.adapter.d.ts +7 -0
  321. package/dist/esm/types/platforms/nest/__test__/server/entities/organizations/organization.authentication.d.ts +10 -0
  322. package/dist/esm/types/platforms/nest/__test__/server/entities/organizations/organization.manager.d.ts +6 -0
  323. package/dist/esm/types/platforms/nest/__test__/server/entities/organizations/organization.models.d.ts +50 -0
  324. package/dist/esm/types/platforms/nest/__test__/server/entities/organizations/organization.module.d.ts +2 -0
  325. package/dist/esm/types/platforms/nest/__test__/server/entities/organizations/organization.query.d.ts +11 -0
  326. package/dist/esm/types/platforms/nest/__test__/server/entities/roles/role.adapter.d.ts +7 -0
  327. package/dist/esm/types/platforms/nest/__test__/server/entities/roles/role.authentication.d.ts +10 -0
  328. package/dist/esm/types/platforms/nest/__test__/server/entities/roles/role.manager.d.ts +6 -0
  329. package/dist/esm/types/platforms/nest/__test__/server/entities/roles/role.models.d.ts +49 -0
  330. package/dist/esm/types/platforms/nest/__test__/server/entities/roles/role.module.d.ts +2 -0
  331. package/dist/esm/types/platforms/nest/__test__/server/entities/roles/role.query.d.ts +11 -0
  332. package/dist/esm/types/platforms/nest/__test__/server/entities/tenants/tenant.adapter.d.ts +7 -0
  333. package/dist/esm/types/platforms/nest/__test__/server/entities/tenants/tenant.authentication.d.ts +10 -0
  334. package/dist/esm/types/platforms/nest/__test__/server/entities/tenants/tenant.manager.d.ts +6 -0
  335. package/dist/esm/types/platforms/nest/__test__/server/entities/tenants/tenant.models.d.ts +49 -0
  336. package/dist/esm/types/platforms/nest/__test__/server/entities/tenants/tenant.module.d.ts +2 -0
  337. package/dist/esm/types/platforms/nest/__test__/server/entities/tenants/tenant.query.d.ts +11 -0
  338. package/dist/esm/types/platforms/nest/__test__/server/entities/userGroupMembers/userGroupMember.adapter.d.ts +7 -0
  339. package/dist/esm/types/platforms/nest/__test__/server/entities/userGroupMembers/userGroupMember.authentication.d.ts +10 -0
  340. package/dist/esm/types/platforms/nest/__test__/server/entities/userGroupMembers/userGroupMember.manager.d.ts +6 -0
  341. package/dist/esm/types/platforms/nest/__test__/server/entities/userGroupMembers/userGroupMember.models.d.ts +49 -0
  342. package/dist/esm/types/platforms/nest/__test__/server/entities/userGroupMembers/userGroupMember.module.d.ts +2 -0
  343. package/dist/esm/types/platforms/nest/__test__/server/entities/userGroupMembers/userGroupMember.query.d.ts +11 -0
  344. package/dist/esm/types/platforms/nest/__test__/server/entities/userGroups/userGroup.adapter.d.ts +7 -0
  345. package/dist/esm/types/platforms/nest/__test__/server/entities/userGroups/userGroup.authentication.d.ts +10 -0
  346. package/dist/esm/types/platforms/nest/__test__/server/entities/userGroups/userGroup.manager.d.ts +6 -0
  347. package/dist/esm/types/platforms/nest/__test__/server/entities/userGroups/userGroup.models.d.ts +49 -0
  348. package/dist/esm/types/platforms/nest/__test__/server/entities/userGroups/userGroup.module.d.ts +2 -0
  349. package/dist/esm/types/platforms/nest/__test__/server/entities/userGroups/userGroup.query.d.ts +11 -0
  350. package/dist/esm/types/platforms/nest/__test__/server/entities/userProfiles/userProfile.adapter.d.ts +7 -0
  351. package/dist/esm/types/platforms/nest/__test__/server/entities/userProfiles/userProfile.authentication.d.ts +10 -0
  352. package/dist/esm/types/platforms/nest/__test__/server/entities/userProfiles/userProfile.manager.d.ts +6 -0
  353. package/dist/esm/types/platforms/nest/__test__/server/entities/userProfiles/userProfile.models.d.ts +49 -0
  354. package/dist/esm/types/platforms/nest/__test__/server/entities/userProfiles/userProfile.module.d.ts +2 -0
  355. package/dist/esm/types/platforms/nest/__test__/server/entities/userProfiles/userProfile.query.d.ts +11 -0
  356. package/dist/esm/types/platforms/nest/__test__/server/entities/userRoles/userRole.adapter.d.ts +7 -0
  357. package/dist/esm/types/platforms/nest/__test__/server/entities/userRoles/userRole.authentication.d.ts +10 -0
  358. package/dist/esm/types/platforms/nest/__test__/server/entities/userRoles/userRole.manager.d.ts +6 -0
  359. package/dist/esm/types/platforms/nest/__test__/server/entities/userRoles/userRole.models.d.ts +49 -0
  360. package/dist/esm/types/platforms/nest/__test__/server/entities/userRoles/userRole.module.d.ts +2 -0
  361. package/dist/esm/types/platforms/nest/__test__/server/entities/userRoles/userRole.query.d.ts +11 -0
  362. package/dist/esm/types/platforms/nest/__test__/server/entities/users/user.adapter.d.ts +7 -0
  363. package/dist/esm/types/platforms/nest/__test__/server/entities/users/user.authentication.d.ts +10 -0
  364. package/dist/esm/types/platforms/nest/__test__/server/entities/users/user.manager.d.ts +6 -0
  365. package/dist/esm/types/platforms/nest/__test__/server/entities/users/user.models.d.ts +55 -0
  366. package/dist/esm/types/platforms/nest/__test__/server/entities/users/user.module.d.ts +2 -0
  367. package/dist/esm/types/platforms/nest/__test__/server/entities/users/user.query.d.ts +11 -0
  368. package/dist/esm/types/platforms/nest/__test__/server/index.d.ts +2 -1
  369. package/dist/esm/types/platforms/nest/__test__/server/infrastructure/authentication/index.d.ts +3 -0
  370. package/dist/esm/types/platforms/nest/__test__/server/infrastructure/authentication/module.d.ts +2 -0
  371. package/dist/esm/types/platforms/nest/__test__/server/infrastructure/authentication/processors/entity-auth/index.d.ts +10 -0
  372. package/dist/esm/types/platforms/nest/__test__/server/infrastructure/authentication/providers/auth-context/index.d.ts +5 -0
  373. package/dist/esm/types/platforms/nest/__test__/server/infrastructure/authentication/providers/index.d.ts +2 -0
  374. package/dist/esm/types/platforms/nest/__test__/server/infrastructure/authentication/types.d.ts +16 -0
  375. package/dist/esm/types/platforms/nest/__test__/server/infrastructure/index.d.ts +2 -0
  376. package/dist/esm/types/platforms/nest/__test__/server/services/email-provider/index.d.ts +12 -0
  377. package/dist/{cjs/types/platforms/nest/__test__/server/middlewares/index.d.ts → esm/types/platforms/nest/__test__/server/shared/errors/middleware.d.ts} +1 -2
  378. package/dist/esm/types/platforms/nest/__test__/server/shared/module.d.ts +2 -0
  379. package/dist/esm/types/platforms/nest/__test__/tests/authentication/test_auth_api.test.d.ts +1 -0
  380. package/dist/esm/types/platforms/nest/decorators/email.d.ts +8 -0
  381. package/dist/esm/types/platforms/nest/decorators/index.d.ts +2 -0
  382. package/dist/esm/types/platforms/nest/decorators/initializer.d.ts +1 -0
  383. package/dist/esm/types/platforms/nest/decorators/symbols.d.ts +3 -0
  384. package/dist/esm/types/platforms/nest/extensions/authentication/abstractions/index.d.ts +38 -0
  385. package/dist/esm/types/platforms/nest/extensions/authentication/converters/index.d.ts +2 -0
  386. package/dist/esm/types/platforms/nest/extensions/authentication/decorators/index.d.ts +2 -0
  387. package/dist/esm/types/platforms/nest/extensions/authentication/decorators/symbols.d.ts +3 -0
  388. package/dist/esm/types/platforms/nest/extensions/authentication/decorators/userService.d.ts +1 -0
  389. package/dist/esm/types/platforms/nest/extensions/authentication/email/index.d.ts +1 -0
  390. package/dist/esm/types/platforms/nest/extensions/authentication/email/templates/index.d.ts +20 -0
  391. package/dist/esm/types/platforms/nest/extensions/authentication/errors/index.d.ts +9 -0
  392. package/dist/esm/types/platforms/nest/extensions/authentication/handlers/index.d.ts +11 -0
  393. package/dist/esm/types/platforms/nest/extensions/authentication/handlers/user-disable/index.d.ts +9 -0
  394. package/dist/esm/types/platforms/nest/extensions/authentication/handlers/user-enable/index.d.ts +9 -0
  395. package/dist/esm/types/platforms/nest/extensions/authentication/handlers/user-login/index.d.ts +22 -0
  396. package/dist/esm/types/platforms/nest/extensions/authentication/handlers/user-password-change/index.d.ts +13 -0
  397. package/dist/esm/types/platforms/nest/extensions/authentication/handlers/user-password-reset-complete/index.d.ts +18 -0
  398. package/dist/esm/types/platforms/nest/extensions/authentication/handlers/user-password-reset-request/index.d.ts +26 -0
  399. package/dist/esm/types/platforms/nest/extensions/authentication/handlers/user-register/index.d.ts +42 -0
  400. package/dist/esm/types/platforms/nest/extensions/authentication/handlers/user-token-verify/index.d.ts +15 -0
  401. package/dist/esm/types/platforms/nest/extensions/authentication/handlers/user-verify-complete/index.d.ts +14 -0
  402. package/dist/esm/types/platforms/nest/extensions/authentication/handlers/user-verify-request/index.d.ts +26 -0
  403. package/dist/esm/types/platforms/nest/extensions/authentication/index.d.ts +6 -0
  404. package/dist/esm/types/platforms/nest/extensions/authentication/initializer/index.d.ts +12 -0
  405. package/dist/esm/types/platforms/nest/extensions/authentication/module.d.ts +3 -0
  406. package/dist/esm/types/platforms/nest/extensions/authentication/providers/index.d.ts +3 -0
  407. package/dist/esm/types/platforms/nest/extensions/authentication/providers/jwt/index.d.ts +8 -0
  408. package/dist/esm/types/platforms/nest/extensions/authentication/providers/password-hasher/index.d.ts +17 -0
  409. package/dist/esm/types/platforms/nest/extensions/authentication/resolver/index.d.ts +6 -0
  410. package/dist/esm/types/platforms/nest/extensions/authentication/services/authentication/index.d.ts +38 -1
  411. package/dist/esm/types/platforms/nest/extensions/authentication/settings/index.d.ts +3 -0
  412. package/dist/esm/types/platforms/nest/extensions/authentication/types/index.d.ts +14 -0
  413. package/dist/esm/types/platforms/nest/ioc/discovery/index.d.ts +1 -0
  414. package/dist/esm/types/platforms/nest/processors/initializer/index.d.ts +8 -1
  415. package/dist/esm/types/platforms/nest/providers/email-templates/index.d.ts +6 -0
  416. package/dist/esm/types/platforms/nest/services/email/index.d.ts +9 -0
  417. package/dist/esm/types/platforms/nest/services/hashing/index.d.ts +4 -0
  418. package/dist/esm/types/platforms/nest/services/index.d.ts +3 -0
  419. package/dist/esm/types/platforms/nest/services/manager/index.d.ts +9 -0
  420. package/dist/esm/types/platforms/nest/services/providers.d.ts +4 -1
  421. package/dist/esm/types/providers/services.d.ts +5 -1
  422. package/dist/esm/types/symbols/ioc.d.ts +4 -0
  423. package/dist/index.d.ts +416 -11
  424. package/package.json +7 -1
  425. package/readme.md +1 -1
  426. package/dist/cjs/types/platforms/nest/__test__/server/authentication/index.d.ts +0 -13
  427. package/dist/esm/types/platforms/nest/__test__/server/authentication/index.d.ts +0 -13
  428. /package/dist/cjs/types/platforms/nest/__test__/server/{entities/foo/entity.d.ts → database/core/entities/foo.entity.d.ts} +0 -0
  429. /package/dist/esm/types/platforms/nest/__test__/server/{entities/foo/entity.d.ts → database/core/entities/foo.entity.d.ts} +0 -0
package/dist/esm/index.js CHANGED
@@ -1,11 +1,13 @@
1
- import { applyDecorators, Injectable, SetMetadata, Module, Global, Scope, HttpStatus, HttpException, Logger } from '@nestjs/common';
2
- import { In } from 'typeorm';
1
+ import { applyDecorators, Injectable, SetMetadata, Global, Module, Scope, Logger, HttpStatus, HttpException } from '@nestjs/common';
2
+ import { AsyncLocalStorage } from 'async_hooks';
3
+ import { hash } from 'bcrypt';
3
4
  import { Log, toDict, newUuid as newUuid$1 } from '@punks/backend-core';
4
5
  import { PATH_METADATA } from '@nestjs/common/constants';
5
6
  import { STATIC_CONTEXT } from '@nestjs/core/injector/constants';
6
7
  import { MetadataScanner } from '@nestjs/core/metadata-scanner';
7
- import { AsyncLocalStorage } from 'async_hooks';
8
+ import { JwtService, JwtModule } from '@nestjs/jwt';
8
9
  import { EventEmitterModule } from '@nestjs/event-emitter';
10
+ import { In } from 'typeorm';
9
11
 
10
12
  class EntityManagerException extends Error {
11
13
  constructor(message) {
@@ -54,6 +56,12 @@ class MultipleEntitiesFoundException extends EntityManagerException {
54
56
  super("Multiple entities found");
55
57
  }
56
58
  }
59
+ class EntityManagerConfigurationError extends EntityManagerException {
60
+ constructor(message) {
61
+ super(message);
62
+ this.name = "EntityManagerConfigurationError";
63
+ }
64
+ }
57
65
 
58
66
  var ReplicationMode;
59
67
  (function (ReplicationMode) {
@@ -100,15 +108,18 @@ class NestEntityManager {
100
108
  }
101
109
 
102
110
  const EntityManagerSymbols = {
103
- Entity: Symbol.for("WP.ENTITY"),
104
- EntityActions: Symbol.for("WP.ENTITY_ACTIONS"),
105
- EntityAdapter: Symbol.for("WP.ENTITY_ADAPTER"),
106
- EntityAuthMiddleware: Symbol.for("WP.ENTITY_AUTH_MIDDLEWARE"),
107
- EntityRepository: Symbol.for("WP.ENTITY_REPOSITORY"),
108
- EntityConnector: Symbol.for("WP.ENTITY_CONNECTOR"),
109
- EntityConverter: Symbol.for("WP.ENTITY_CONVERTER"),
110
- EntityManager: Symbol.for("WP.ENTITY_MANAGER"),
111
- EntityQueryBuilder: Symbol.for("WP.ENTITY_QUERY_BUILDER"),
111
+ AppInitializer: Symbol.for("WP:APP_INITIALIZER"),
112
+ Entity: Symbol.for("WP:ENTITY"),
113
+ EntityActions: Symbol.for("WP:ENTITY_ACTIONS"),
114
+ EntityAdapter: Symbol.for("WP:ENTITY_ADAPTER"),
115
+ EntityAuthMiddleware: Symbol.for("WP:ENTITY_AUTH_MIDDLEWARE"),
116
+ EntityRepository: Symbol.for("WP:ENTITY_REPOSITORY"),
117
+ EntityConnector: Symbol.for("WP:ENTITY_CONNECTOR"),
118
+ EntityConverter: Symbol.for("WP:ENTITY_CONVERTER"),
119
+ EntityManager: Symbol.for("WP:ENTITY_MANAGER"),
120
+ EntityQueryBuilder: Symbol.for("WP:ENTITY_QUERY_BUILDER"),
121
+ EmailProvider: Symbol.for("WP:EMAIL_PROVIDER"),
122
+ EmailTemplate: Symbol.for("WP:EMAIL_TEMPLATE"),
112
123
  };
113
124
 
114
125
  const WpEntityAuthMiddleware = (entityName, props = {}) => applyDecorators(Injectable(), SetMetadata(EntityManagerSymbols.EntityAuthMiddleware, {
@@ -136,11 +147,17 @@ const WpEntityConverter = (entityName, props = {}) => applyDecorators(Injectable
136
147
  ...props,
137
148
  }));
138
149
 
150
+ const WpEmailTemplate = (templateId) => applyDecorators(Injectable(), SetMetadata(EntityManagerSymbols.EmailTemplate, {
151
+ templateId,
152
+ }));
153
+
139
154
  const WpEntity = (name, props = {}) => applyDecorators(SetMetadata(EntityManagerSymbols.Entity, {
140
155
  name,
141
156
  ...props,
142
157
  }));
143
158
 
159
+ const WpAppInitializer = () => applyDecorators(Injectable(), SetMetadata(EntityManagerSymbols.AppInitializer, true));
160
+
144
161
  const WpEntityRepository = (entityName, props = {}) => applyDecorators(Injectable(), SetMetadata(EntityManagerSymbols.EntityRepository, {
145
162
  entityName,
146
163
  ...props,
@@ -156,6 +173,37 @@ const WpEntityQueryBuilder = (entityName, props = {}) => applyDecorators(Injecta
156
173
  ...props,
157
174
  }));
158
175
 
176
+ const AuthenticationExtensionSymbols = {
177
+ UserService: Symbol.for("WP.EXT:AUTHENTICATION.USER_SERVICE"),
178
+ };
179
+
180
+ const WpUserService = () => applyDecorators(Injectable(), SetMetadata(AuthenticationExtensionSymbols.UserService, true));
181
+
182
+ const AuthenticationEmailTemplates = {
183
+ Registration: "registration",
184
+ PasswordReset: "passwordReset",
185
+ EmailVerify: "emailVerify",
186
+ };
187
+
188
+ class AuthenticationError extends Error {
189
+ constructor(message) {
190
+ super(message);
191
+ this.name = "AuthenticationError";
192
+ }
193
+ }
194
+ class InvalidCredentialsError extends AuthenticationError {
195
+ constructor(message) {
196
+ super(message);
197
+ this.name = "InvalidCredentialsError";
198
+ }
199
+ }
200
+ class OperationTokenMismatchError extends AuthenticationError {
201
+ constructor(message) {
202
+ super(message);
203
+ this.name = "OperationTokenMismatchError";
204
+ }
205
+ }
206
+
159
207
  /******************************************************************************
160
208
  Copyright (c) Microsoft Corporation.
161
209
 
@@ -187,204 +235,44 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
187
235
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
188
236
  };
189
237
 
190
- let AuthenticationService = class AuthenticationService {
191
- };
192
- AuthenticationService = __decorate([
193
- Injectable()
194
- ], AuthenticationService);
195
-
196
- const Services$1 = [AuthenticationService];
197
-
198
- let AuthenticationModule = class AuthenticationModule {
199
- };
200
- AuthenticationModule = __decorate([
201
- Module({
202
- providers: [...Services$1],
203
- exports: [...Services$1],
204
- })
205
- ], AuthenticationModule);
206
-
207
- let MultiTenancyModule = class MultiTenancyModule {
208
- };
209
- MultiTenancyModule = __decorate([
210
- Module({})
211
- ], MultiTenancyModule);
212
-
213
- class QueryBuilderBase {
214
- getIndexBasedPagingResult({ paging, totResults, currentPageResults, }) {
215
- if (!paging) {
216
- return undefined;
217
- }
218
- const cursor = paging.cursor ?? 0;
219
- const hasMorePages = cursor * paging.pageSize + currentPageResults < totResults;
220
- return {
221
- pageIndex: cursor,
222
- pageSize: paging.pageSize,
223
- totItems: totResults,
224
- totPageItems: currentPageResults,
225
- totPages: Math.ceil(totResults / paging.pageSize),
226
- currentPageCursor: cursor,
227
- prevPageCursor: cursor > 0 ? cursor - 1 : undefined,
228
- nextPageCursor: hasMorePages ? cursor + 1 : undefined,
229
- };
230
- }
231
- }
232
-
233
- class TypeOrmQueryBuilder extends QueryBuilderBase {
234
- constructor(services) {
235
- super();
236
- this.services = services;
237
- }
238
- async search(request, context) {
239
- // todo: execute inside read transaction in order to perform the three queries on the same dataset
240
- const queryResults = await this.countQueryResults(request, context);
241
- const results = await this.findPagedQueryResults(request, context);
242
- const facets = await this.calculateFacets(request, context);
243
- return {
244
- items: results,
245
- request,
246
- paging: this.getIndexBasedPagingResult({
247
- paging: request.paging,
248
- currentPageResults: results.length,
249
- totResults: queryResults,
250
- }),
251
- facets,
252
- };
253
- }
254
- async findPagedQueryResults(request, context) {
255
- return await this.getRepository().find({
256
- where: {
257
- ...(context ? this.buildContextFilter(context) : {}),
258
- ...this.buildWhereClause(request),
259
- },
260
- relations: this.getRelationsToLoad(request),
261
- ...this.buildPagingParameters(request),
262
- });
263
- }
264
- getRelationsToLoad(request, context) {
265
- return undefined;
266
- }
267
- buildPagingParameters(request) {
268
- return {
269
- skip: request.paging?.cursor
270
- ? request.paging.cursor * request.paging.pageSize
271
- : undefined,
272
- take: request.paging?.pageSize,
273
- };
274
- }
275
- async countQueryResults(request, context) {
276
- return await this.getRepository().count({
277
- where: {
278
- ...(context ? this.buildContextFilter(context) : {}),
279
- ...this.buildWhereClause(request),
280
- },
281
- });
282
- }
283
- getRepository() {
284
- if (!this.repository) {
285
- this.repository = this.services.resolveRepository();
286
- }
287
- return this.repository;
288
- }
289
- }
238
+ const asyncLocalStorage = new AsyncLocalStorage();
290
239
 
291
- class TypeOrmRepository {
292
- constructor(innerRepository) {
293
- this.innerRepository = innerRepository;
294
- }
295
- async exists(id) {
296
- if (typeof id === "undefined") {
297
- throw new Error("Invalid 'id' parameter.");
298
- }
299
- return await this.innerRepository.exist({
300
- where: {
301
- id: id,
302
- },
303
- });
304
- }
305
- async existsBy(condition) {
306
- return await this.innerRepository.exist(condition);
307
- }
308
- async get(id) {
309
- if (typeof id === "undefined") {
310
- throw new Error("Invalid 'id' parameter.");
311
- }
312
- const result = await this.innerRepository.findOne({
313
- where: {
314
- id: id,
315
- },
316
- });
317
- return result ?? undefined;
318
- }
319
- async getBy(condition) {
320
- const result = await this.innerRepository.findOne(condition);
321
- return result ?? undefined;
322
- }
323
- async all() {
324
- return await this.innerRepository.find();
325
- }
326
- async count(condition) {
327
- return await this.innerRepository.count(condition);
328
- }
329
- async find(condition) {
330
- return await this.innerRepository.find(condition);
331
- }
332
- async findById(id) {
333
- return await this.innerRepository.findBy({
334
- id: In(id),
335
- });
336
- }
337
- async delete(id) {
338
- await this.innerRepository.delete({
339
- id: id,
340
- });
341
- }
342
- async deleteBy(condition) {
343
- await this.innerRepository.delete(condition);
240
+ let AppSessionService = class AppSessionService {
241
+ getValue(key) {
242
+ return this.getSession().get(key);
344
243
  }
345
- async create(entity) {
346
- const createResult = await this.innerRepository.insert(entity);
347
- const current = await this.get(createResult.identifiers[0].id);
348
- if (!current) {
349
- throw new Error(`Entity ${entity.id} not found`);
350
- }
351
- return current;
244
+ setValue(key, value) {
245
+ this.getSession().set(key, value);
352
246
  }
353
- async update(id, entity) {
354
- await this.innerRepository.update(id, entity);
355
- const current = await this.get(id);
356
- if (!current) {
357
- throw new Error(`Entity ${id} not found`);
358
- }
359
- return current;
247
+ clearValue(key) {
248
+ this.getSession().set(key, undefined);
360
249
  }
361
- async updateBy(entity, condition) {
362
- const updateResult = await this.innerRepository.update(condition, entity);
363
- return await this.findById(updateResult.generatedMaps.map((x) => x.id));
250
+ getRequest() {
251
+ return this.getSession().request;
364
252
  }
365
- async upsert(id, entity) {
366
- if (await this.exists(id)) {
367
- return await this.update(id, entity);
253
+ getSession() {
254
+ const store = asyncLocalStorage.getStore();
255
+ if (!store) {
256
+ throw new Error("No active context found");
368
257
  }
369
- return await this.create({
370
- ...entity,
371
- id,
372
- });
258
+ return store;
373
259
  }
374
- }
260
+ };
261
+ AppSessionService = __decorate([
262
+ Injectable()
263
+ ], AppSessionService);
375
264
 
376
- class NestTypeOrmQueryBuilder extends TypeOrmQueryBuilder {
377
- constructor(entityName, registry) {
378
- // todo: discover entityName from decorator
379
- super(registry.resolveEntityServicesCollection(entityName));
265
+ let AppHashingService = class AppHashingService {
266
+ async hash(value, salt) {
267
+ return await hash(value, salt);
380
268
  }
381
- }
382
-
383
- class NestTypeOrmRepository extends TypeOrmRepository {
384
- constructor(repository) {
385
- super(repository);
269
+ async compare(hash, value, salt) {
270
+ return (await this.hash(value, salt)) === hash;
386
271
  }
387
- }
272
+ };
273
+ AppHashingService = __decorate([
274
+ Injectable()
275
+ ], AppHashingService);
388
276
 
389
277
  class EntityCreateAction {
390
278
  constructor(services) {
@@ -753,6 +641,10 @@ const GlobalServices = {
753
641
  Authentication: {
754
642
  IAuthenticationContextProvider: "IAuthenticationContextProvider",
755
643
  },
644
+ Messaging: {
645
+ IEmailProvider: "IEmailProvider",
646
+ IEmailTemplatesCollection: "IEmailTemplatesCollection",
647
+ },
756
648
  };
757
649
 
758
650
  class EntityServiceLocator {
@@ -866,6 +758,18 @@ class EntitiesServiceLocator {
866
758
  registerEventEmitter(instance) {
867
759
  this.provider.register(GlobalServices.Events.IEventEmitter, instance);
868
760
  }
761
+ resolveEmailProvider() {
762
+ return this.provider.resolve(GlobalServices.Messaging.IEmailProvider);
763
+ }
764
+ registerEmailProvider(instance) {
765
+ this.provider.register(GlobalServices.Messaging.IEmailProvider, instance);
766
+ }
767
+ resolveEmailTemplatesCollection() {
768
+ return this.provider.resolve(GlobalServices.Messaging.IEmailTemplatesCollection);
769
+ }
770
+ registerEmailTemplatesCollection(instance) {
771
+ this.provider.register(GlobalServices.Messaging.IEmailTemplatesCollection, instance);
772
+ }
869
773
  resolveAuthenticationContextProvider() {
870
774
  return this.provider.resolve(GlobalServices.Authentication.IAuthenticationContextProvider);
871
775
  }
@@ -18794,6 +18698,19 @@ let CustomDiscoveryService = class CustomDiscoveryService {
18794
18698
  discoveredClass: x,
18795
18699
  }));
18796
18700
  }
18701
+ async providerWithMetaAtKey(metaKey) {
18702
+ const providers = await this.providers(withMetaAtKey(metaKey));
18703
+ if (providers.length > 1) {
18704
+ throw new Error(`Found multiple providers with meta key ${metaKey.toString()}`);
18705
+ }
18706
+ if (!providers.length) {
18707
+ return undefined;
18708
+ }
18709
+ return {
18710
+ meta: getComponentMetaAtKey(metaKey, providers[0]),
18711
+ discoveredClass: providers[0],
18712
+ };
18713
+ }
18797
18714
  /**
18798
18715
  * Discovers all controllers in a Nest App that match a filter
18799
18716
  * @param filter
@@ -18920,42 +18837,596 @@ CustomDiscoveryModule = __decorate([
18920
18837
  })
18921
18838
  ], CustomDiscoveryModule);
18922
18839
 
18923
- class AppExceptionsFilterBase {
18924
- catch(exception, host) {
18925
- const ctx = host.switchToHttp();
18926
- const response = ctx.getResponse();
18927
- const request = ctx.getRequest();
18928
- this.logError({
18929
- exception,
18930
- request,
18931
- response,
18932
- }).catch((error) => {
18933
- Log.getLogger("AllExceptionsFilter").error("Error logging failed", error);
18840
+ let EntityManagerService = class EntityManagerService {
18841
+ constructor(registry) {
18842
+ this.registry = registry;
18843
+ }
18844
+ getManager(entityName) {
18845
+ return this.registry
18846
+ .resolveEntityServicesCollection(entityName)
18847
+ .resolveEntityManager();
18848
+ }
18849
+ getActions(entityName) {
18850
+ return this.registry
18851
+ .resolveEntityServicesCollection(entityName)
18852
+ .resolveEntityActions();
18853
+ }
18854
+ getRepository(entityName) {
18855
+ return this.registry
18856
+ .resolveEntityServicesCollection(entityName)
18857
+ .resolveRepository();
18858
+ }
18859
+ };
18860
+ EntityManagerService = __decorate([
18861
+ Injectable(),
18862
+ __metadata("design:paramtypes", [EntityManagerRegistry])
18863
+ ], EntityManagerService);
18864
+
18865
+ let EmailService = class EmailService {
18866
+ constructor(registry) {
18867
+ this.registry = registry;
18868
+ }
18869
+ async sendTemplatedEmail(input) {
18870
+ await this.provider.sendTemplatedEmail(input);
18871
+ }
18872
+ async sendHtmlEmail(input) {
18873
+ await this.provider.sendHtmlEmail(input);
18874
+ }
18875
+ get provider() {
18876
+ return this.registry
18877
+ .getContainer()
18878
+ .getEntitiesServicesLocator()
18879
+ .resolveEmailProvider();
18880
+ }
18881
+ };
18882
+ EmailService = __decorate([
18883
+ Injectable(),
18884
+ __metadata("design:paramtypes", [EntityManagerRegistry])
18885
+ ], EmailService);
18886
+
18887
+ let AuthenticationServicesResolver = class AuthenticationServicesResolver {
18888
+ registerUsersService(usersService) {
18889
+ this.usersService = usersService;
18890
+ }
18891
+ getUsersService() {
18892
+ if (!this.usersService) {
18893
+ throw new Error("Users service is not registered");
18894
+ }
18895
+ return this.usersService;
18896
+ }
18897
+ };
18898
+ AuthenticationServicesResolver = __decorate([
18899
+ Injectable()
18900
+ ], AuthenticationServicesResolver);
18901
+
18902
+ let settings;
18903
+ const setAuthSettings = (input) => {
18904
+ settings = input;
18905
+ };
18906
+ const getAuthSettings = () => settings;
18907
+
18908
+ let JwtProvider = class JwtProvider {
18909
+ constructor(jwtService) {
18910
+ this.jwtService = jwtService;
18911
+ }
18912
+ async sign(payload) {
18913
+ return await this.jwtService.signAsync(JSON.stringify(payload), {
18914
+ secret: getAuthSettings().jwtSecret,
18934
18915
  });
18935
- const status = this.getErrorStatusCode(exception);
18936
- response.status(status).json({
18937
- statusCode: status,
18938
- timestamp: new Date().toISOString(),
18939
- path: request.url,
18916
+ }
18917
+ async parse(token) {
18918
+ return await this.jwtService.verifyAsync(token, {
18919
+ ignoreExpiration: true,
18920
+ secret: getAuthSettings().jwtSecret,
18940
18921
  });
18941
18922
  }
18942
- getErrorStatusCode(exception) {
18943
- const customErrorCode = this.getCustomErrorStatusCode(exception);
18944
- if (customErrorCode) {
18945
- return customErrorCode;
18923
+ async verify(token) {
18924
+ return await this.jwtService.verifyAsync(token, {
18925
+ ignoreExpiration: false,
18926
+ secret: getAuthSettings().jwtSecret,
18927
+ });
18928
+ }
18929
+ };
18930
+ JwtProvider = __decorate([
18931
+ Injectable(),
18932
+ __metadata("design:paramtypes", [JwtService])
18933
+ ], JwtProvider);
18934
+
18935
+ let PasswordHashingProvider = class PasswordHashingProvider {
18936
+ constructor(hashing) {
18937
+ this.hashing = hashing;
18938
+ this.buildUserSalt = (input) => {
18939
+ return `${input.salt}${input.userId}`;
18940
+ };
18941
+ }
18942
+ async hashPassword(input) {
18943
+ return await this.hashing.hash(input.password, this.buildUserSalt({
18944
+ salt: getAuthSettings().passwordSalt,
18945
+ userId: input.userId,
18946
+ }));
18947
+ }
18948
+ async verifyPassword(input) {
18949
+ const padHash = await this.hashPassword({
18950
+ password: input.password,
18951
+ userId: input.userId,
18952
+ });
18953
+ return {
18954
+ isMatching: padHash === input.hash,
18955
+ };
18956
+ }
18957
+ };
18958
+ PasswordHashingProvider = __decorate([
18959
+ Injectable(),
18960
+ __metadata("design:paramtypes", [AppHashingService])
18961
+ ], PasswordHashingProvider);
18962
+
18963
+ var UserRegistrationError;
18964
+ (function (UserRegistrationError) {
18965
+ UserRegistrationError[UserRegistrationError["UserAlreadyExists"] = 0] = "UserAlreadyExists";
18966
+ })(UserRegistrationError || (UserRegistrationError = {}));
18967
+ let UserRegistrationHandler = class UserRegistrationHandler {
18968
+ constructor(services, passwordHashingProvider, emailService, jwtProvider) {
18969
+ this.services = services;
18970
+ this.passwordHashingProvider = passwordHashingProvider;
18971
+ this.emailService = emailService;
18972
+ this.jwtProvider = jwtProvider;
18973
+ }
18974
+ async execute(input) {
18975
+ const user = await this.resolveUser(input.email, input.context);
18976
+ if (user && user.verified) {
18977
+ return {
18978
+ success: false,
18979
+ error: UserRegistrationError.UserAlreadyExists,
18980
+ };
18946
18981
  }
18947
- if (exception instanceof EntityOperationUnauthorizedException) {
18948
- return HttpStatus.UNAUTHORIZED;
18982
+ if (user && !user.verified) {
18983
+ const passwordHash = await this.createPasswordHash(input.password, user.id);
18984
+ await this.services.getUsersService().update(user.id, {
18985
+ passwordHash,
18986
+ passwordUpdateTimestamp: new Date(),
18987
+ });
18988
+ await this.sendRegistrationEmail(user, input.callback);
18989
+ return {
18990
+ success: true,
18991
+ };
18949
18992
  }
18950
- if (exception instanceof EntityNotFoundException) {
18951
- return HttpStatus.NOT_FOUND;
18993
+ const newUser = await this.createUser(input.email, input.registrationInfo, input.context);
18994
+ const passwordHash = await this.createPasswordHash(input.password, newUser.id);
18995
+ await this.services.getUsersService().update(newUser.id, {
18996
+ passwordHash,
18997
+ passwordUpdateTimestamp: new Date(),
18998
+ });
18999
+ await this.sendRegistrationEmail(newUser, input.callback);
19000
+ return {
19001
+ success: true,
19002
+ };
19003
+ }
19004
+ async createPasswordHash(password, userId) {
19005
+ return await this.passwordHashingProvider.hashPassword({
19006
+ password,
19007
+ userId,
19008
+ });
19009
+ }
19010
+ async sendRegistrationEmail(user, callback) {
19011
+ const token = await this.generateEmailVerifyToken(user);
19012
+ await this.emailService.sendTemplatedEmail({
19013
+ to: [user.email],
19014
+ templateId: AuthenticationEmailTemplates.Registration,
19015
+ payload: {
19016
+ firstName: user.profile?.firstName,
19017
+ lastName: user.profile?.lastName,
19018
+ callbackUrl: callback.urlTemplate.replace(callback.tokenPlaceholder, token),
19019
+ },
19020
+ });
19021
+ }
19022
+ async generateEmailVerifyToken(user) {
19023
+ return await this.jwtProvider.sign({
19024
+ email: user.email,
19025
+ userId: user.id,
19026
+ timestamp: Date.now(),
19027
+ });
19028
+ }
19029
+ async createUser(email, info, context) {
19030
+ return await this.services.getUsersService().create(email, info, context);
19031
+ }
19032
+ async resolveUser(userName, context) {
19033
+ return ((await this.services
19034
+ .getUsersService()
19035
+ .getByUserName(userName, context)) ??
19036
+ (await this.services.getUsersService().getByEmail(userName, context)));
19037
+ }
19038
+ };
19039
+ UserRegistrationHandler = __decorate([
19040
+ Injectable(),
19041
+ __metadata("design:paramtypes", [AuthenticationServicesResolver,
19042
+ PasswordHashingProvider,
19043
+ EmailService,
19044
+ JwtProvider])
19045
+ ], UserRegistrationHandler);
19046
+
19047
+ let UserDisableHandler = class UserDisableHandler {
19048
+ constructor(services) {
19049
+ this.services = services;
19050
+ }
19051
+ async execute(input) {
19052
+ await this.services.getUsersService().update(input.userId, {
19053
+ disabled: true,
19054
+ });
19055
+ }
19056
+ };
19057
+ UserDisableHandler = __decorate([
19058
+ Injectable(),
19059
+ __metadata("design:paramtypes", [AuthenticationServicesResolver])
19060
+ ], UserDisableHandler);
19061
+
19062
+ let UserEnableHandler = class UserEnableHandler {
19063
+ constructor(services) {
19064
+ this.services = services;
19065
+ }
19066
+ async execute(input) {
19067
+ await this.services.getUsersService().update(input.userId, {
19068
+ disabled: false,
19069
+ });
19070
+ }
19071
+ };
19072
+ UserEnableHandler = __decorate([
19073
+ Injectable(),
19074
+ __metadata("design:paramtypes", [AuthenticationServicesResolver])
19075
+ ], UserEnableHandler);
19076
+
19077
+ const extractUserTokenData = (user, context) => ({
19078
+ email: user.email,
19079
+ userId: user.id,
19080
+ context,
19081
+ });
19082
+
19083
+ let UserLoginHandler = class UserLoginHandler {
19084
+ constructor(services, passwordHashingProvider, jwtProvider) {
19085
+ this.services = services;
19086
+ this.passwordHashingProvider = passwordHashingProvider;
19087
+ this.jwtProvider = jwtProvider;
19088
+ }
19089
+ async execute(input) {
19090
+ const user = await this.resolveUser(input.userName, input.context);
19091
+ if (!user) {
19092
+ return {
19093
+ success: false,
19094
+ };
18952
19095
  }
18953
- if (exception instanceof HttpException) {
18954
- return exception.getStatus();
19096
+ const newPasswordHash = await this.passwordHashingProvider.verifyPassword({
19097
+ password: input.password,
19098
+ hash: user.passwordHash,
19099
+ userId: user.id,
19100
+ });
19101
+ if (!newPasswordHash.isMatching) {
19102
+ return {
19103
+ success: false,
19104
+ };
18955
19105
  }
18956
- return HttpStatus.INTERNAL_SERVER_ERROR;
19106
+ return {
19107
+ success: true,
19108
+ token: await this.generateUserJwtToken(user, input.context),
19109
+ };
18957
19110
  }
18958
- }
19111
+ async generateUserJwtToken(user, context) {
19112
+ return await this.jwtProvider.sign(extractUserTokenData(user, context));
19113
+ }
19114
+ async resolveUser(userName, context) {
19115
+ return ((await this.services
19116
+ .getUsersService()
19117
+ .getByUserName(userName, context)) ??
19118
+ (await this.services.getUsersService().getByEmail(userName, context)));
19119
+ }
19120
+ };
19121
+ UserLoginHandler = __decorate([
19122
+ Injectable(),
19123
+ __metadata("design:paramtypes", [AuthenticationServicesResolver,
19124
+ PasswordHashingProvider,
19125
+ JwtProvider])
19126
+ ], UserLoginHandler);
19127
+
19128
+ let UserPasswordChangeHandler = class UserPasswordChangeHandler {
19129
+ constructor(services, passwordHashingProvider) {
19130
+ this.services = services;
19131
+ this.passwordHashingProvider = passwordHashingProvider;
19132
+ }
19133
+ async execute(input) {
19134
+ const newPasswordHash = await this.passwordHashingProvider.hashPassword({
19135
+ password: input.newPassword,
19136
+ userId: input.userId,
19137
+ });
19138
+ await this.services.getUsersService().update(input.userId, {
19139
+ passwordHash: newPasswordHash,
19140
+ passwordUpdateTimestamp: new Date(),
19141
+ temporaryPassword: input.temporary ?? false,
19142
+ });
19143
+ }
19144
+ };
19145
+ UserPasswordChangeHandler = __decorate([
19146
+ Injectable(),
19147
+ __metadata("design:paramtypes", [AuthenticationServicesResolver,
19148
+ PasswordHashingProvider])
19149
+ ], UserPasswordChangeHandler);
19150
+
19151
+ let UserPasswordResetCompleteHandler = class UserPasswordResetCompleteHandler {
19152
+ constructor(services, passwordHashingProvider, jwtProvider) {
19153
+ this.services = services;
19154
+ this.passwordHashingProvider = passwordHashingProvider;
19155
+ this.jwtProvider = jwtProvider;
19156
+ }
19157
+ async execute(input) {
19158
+ const tokenPayload = await this.decodeToken(input.token);
19159
+ const user = await this.getUser(tokenPayload);
19160
+ this.validateUser(user, tokenPayload);
19161
+ const newPasswordHash = await this.passwordHashingProvider.hashPassword({
19162
+ password: input.newPassword,
19163
+ userId: user.id,
19164
+ });
19165
+ await this.services.getUsersService().update(user.id, {
19166
+ passwordHash: newPasswordHash,
19167
+ passwordUpdateTimestamp: new Date(),
19168
+ temporaryPassword: input.temporary ?? false,
19169
+ ...(!user.verified
19170
+ ? {
19171
+ verified: true,
19172
+ verifiedTimestamp: new Date(),
19173
+ }
19174
+ : {}),
19175
+ });
19176
+ }
19177
+ async decodeToken(token) {
19178
+ return await this.jwtProvider.verify(token);
19179
+ }
19180
+ validateUser(user, tokenPayload) {
19181
+ if (user.email !== tokenPayload.email) {
19182
+ throw new OperationTokenMismatchError("Verify token user email not matching");
19183
+ }
19184
+ }
19185
+ async getUser(tokenPayload) {
19186
+ const user = await this.services
19187
+ .getUsersService()
19188
+ .getById(tokenPayload.userId);
19189
+ if (!user) {
19190
+ throw new OperationTokenMismatchError("Verify token user not found");
19191
+ }
19192
+ return user;
19193
+ }
19194
+ };
19195
+ UserPasswordResetCompleteHandler = __decorate([
19196
+ Injectable(),
19197
+ __metadata("design:paramtypes", [AuthenticationServicesResolver,
19198
+ PasswordHashingProvider,
19199
+ JwtProvider])
19200
+ ], UserPasswordResetCompleteHandler);
19201
+
19202
+ let UserPasswordResetRequestHandler = class UserPasswordResetRequestHandler {
19203
+ constructor(services, emailService, jwtProvider) {
19204
+ this.services = services;
19205
+ this.emailService = emailService;
19206
+ this.jwtProvider = jwtProvider;
19207
+ }
19208
+ async execute(input) {
19209
+ const user = await this.resolveUser(input.email, input.context);
19210
+ if (!user) {
19211
+ return {
19212
+ success: false,
19213
+ };
19214
+ }
19215
+ await this.sendPasswordResetEmail(user, input.callback);
19216
+ return {
19217
+ success: true,
19218
+ };
19219
+ }
19220
+ async sendPasswordResetEmail(user, callback) {
19221
+ const token = await this.generatePasswordResetToken(user);
19222
+ await this.emailService.sendTemplatedEmail({
19223
+ to: [user.email],
19224
+ templateId: AuthenticationEmailTemplates.PasswordReset,
19225
+ payload: {
19226
+ firstName: user.profile.firstName,
19227
+ lastName: user.profile.lastName,
19228
+ callbackUrl: callback.urlTemplate.replace(callback.tokenPlaceholder, token),
19229
+ },
19230
+ });
19231
+ }
19232
+ async generatePasswordResetToken(user) {
19233
+ return await this.jwtProvider.sign({
19234
+ email: user.email,
19235
+ userId: user.id,
19236
+ timestamp: Date.now(),
19237
+ });
19238
+ }
19239
+ async resolveUser(userName, context) {
19240
+ return ((await this.services
19241
+ .getUsersService()
19242
+ .getByUserName(userName, context)) ??
19243
+ (await this.services.getUsersService().getByEmail(userName, context)));
19244
+ }
19245
+ };
19246
+ UserPasswordResetRequestHandler = __decorate([
19247
+ Injectable(),
19248
+ __metadata("design:paramtypes", [AuthenticationServicesResolver,
19249
+ EmailService,
19250
+ JwtProvider])
19251
+ ], UserPasswordResetRequestHandler);
19252
+
19253
+ let UserVerifyCompleteHandler = class UserVerifyCompleteHandler {
19254
+ constructor(services, jwtProvider) {
19255
+ this.services = services;
19256
+ this.jwtProvider = jwtProvider;
19257
+ }
19258
+ async execute(input) {
19259
+ const tokenPayload = await this.decodeToken(input.token);
19260
+ const user = await this.getUser(tokenPayload);
19261
+ this.validateUser(user, tokenPayload);
19262
+ await this.services.getUsersService().update(user.id, {
19263
+ verified: true,
19264
+ verifiedTimestamp: new Date(),
19265
+ });
19266
+ }
19267
+ async decodeToken(token) {
19268
+ return await this.jwtProvider.verify(token);
19269
+ }
19270
+ validateUser(user, tokenPayload) {
19271
+ if (user.email !== tokenPayload.email) {
19272
+ throw new OperationTokenMismatchError("Verify token user email not matching");
19273
+ }
19274
+ }
19275
+ async getUser(tokenPayload) {
19276
+ const user = await this.services
19277
+ .getUsersService()
19278
+ .getById(tokenPayload.userId);
19279
+ if (!user) {
19280
+ throw new OperationTokenMismatchError("Verify token user not found");
19281
+ }
19282
+ return user;
19283
+ }
19284
+ };
19285
+ UserVerifyCompleteHandler = __decorate([
19286
+ Injectable(),
19287
+ __metadata("design:paramtypes", [AuthenticationServicesResolver,
19288
+ JwtProvider])
19289
+ ], UserVerifyCompleteHandler);
19290
+
19291
+ let UserTokenVerifyHandler = class UserTokenVerifyHandler {
19292
+ constructor(jwtProvider) {
19293
+ this.jwtProvider = jwtProvider;
19294
+ }
19295
+ async execute(input) {
19296
+ const decodedToken = await this.decodeUserJwtToken(input.token);
19297
+ return {
19298
+ isValid: !!decodedToken,
19299
+ data: decodedToken,
19300
+ };
19301
+ }
19302
+ async decodeUserJwtToken(token) {
19303
+ return await this.jwtProvider.verify(token);
19304
+ }
19305
+ };
19306
+ UserTokenVerifyHandler = __decorate([
19307
+ Injectable(),
19308
+ __metadata("design:paramtypes", [JwtProvider])
19309
+ ], UserTokenVerifyHandler);
19310
+
19311
+ let UserVerifyRequestHandler = class UserVerifyRequestHandler {
19312
+ constructor(services, emailService, jwtProvider) {
19313
+ this.services = services;
19314
+ this.emailService = emailService;
19315
+ this.jwtProvider = jwtProvider;
19316
+ }
19317
+ async execute(input) {
19318
+ const user = await this.resolveUser(input.email, input.context);
19319
+ if (!user) {
19320
+ return {
19321
+ success: false,
19322
+ };
19323
+ }
19324
+ await this.sendEmailVerifyEmail(user, input.callback);
19325
+ return {
19326
+ success: true,
19327
+ };
19328
+ }
19329
+ async sendEmailVerifyEmail(user, callback) {
19330
+ const token = await this.generateEmailVerifyToken(user);
19331
+ await this.emailService.sendTemplatedEmail({
19332
+ to: [user.email],
19333
+ templateId: AuthenticationEmailTemplates.EmailVerify,
19334
+ payload: {
19335
+ firstName: user.profile.firstName,
19336
+ lastName: user.profile.lastName,
19337
+ callbackUrl: callback.urlTemplate.replace(callback.tokenPlaceholder, token),
19338
+ },
19339
+ });
19340
+ }
19341
+ async generateEmailVerifyToken(user) {
19342
+ return await this.jwtProvider.sign({
19343
+ email: user.email,
19344
+ userId: user.id,
19345
+ timestamp: Date.now(),
19346
+ });
19347
+ }
19348
+ async resolveUser(userName, context) {
19349
+ return ((await this.services
19350
+ .getUsersService()
19351
+ .getByUserName(userName, context)) ??
19352
+ (await this.services.getUsersService().getByEmail(userName, context)));
19353
+ }
19354
+ };
19355
+ UserVerifyRequestHandler = __decorate([
19356
+ Injectable(),
19357
+ __metadata("design:paramtypes", [AuthenticationServicesResolver,
19358
+ EmailService,
19359
+ JwtProvider])
19360
+ ], UserVerifyRequestHandler);
19361
+
19362
+ let AuthenticationService = class AuthenticationService {
19363
+ constructor(userDisableHandler, userEnableHandler, userLoginHandler, userPasswordChangeHandler, userPasswordResetFinalizeHandler, userPasswordResetRequestHandler, userRegistrationHandler, userTokenVerifyHandler, userVerifyRequestHandler, userVerifyCompleteHandler) {
19364
+ this.userDisableHandler = userDisableHandler;
19365
+ this.userEnableHandler = userEnableHandler;
19366
+ this.userLoginHandler = userLoginHandler;
19367
+ this.userPasswordChangeHandler = userPasswordChangeHandler;
19368
+ this.userPasswordResetFinalizeHandler = userPasswordResetFinalizeHandler;
19369
+ this.userPasswordResetRequestHandler = userPasswordResetRequestHandler;
19370
+ this.userRegistrationHandler = userRegistrationHandler;
19371
+ this.userTokenVerifyHandler = userTokenVerifyHandler;
19372
+ this.userVerifyRequestHandler = userVerifyRequestHandler;
19373
+ this.userVerifyCompleteHandler = userVerifyCompleteHandler;
19374
+ }
19375
+ async userDisable(input) {
19376
+ return await this.userDisableHandler.execute(input);
19377
+ }
19378
+ async userEnable(input) {
19379
+ return await this.userEnableHandler.execute(input);
19380
+ }
19381
+ async userLogin(input) {
19382
+ return await this.userLoginHandler.execute(input);
19383
+ }
19384
+ async userPasswordChange(input) {
19385
+ return await this.userPasswordChangeHandler.execute(input);
19386
+ }
19387
+ async userPasswordResetFinalize(input) {
19388
+ return await this.userPasswordResetFinalizeHandler.execute(input);
19389
+ }
19390
+ async userPasswordResetRequest(input) {
19391
+ return await this.userPasswordResetRequestHandler.execute(input);
19392
+ }
19393
+ async userRegister(input) {
19394
+ return await this.userRegistrationHandler.execute(input);
19395
+ }
19396
+ async userVerifyRequest(input) {
19397
+ return await this.userVerifyRequestHandler.execute(input);
19398
+ }
19399
+ async userVerifyComplete(input) {
19400
+ return await this.userVerifyCompleteHandler.execute(input);
19401
+ }
19402
+ async userTokenVerify(input) {
19403
+ return await this.userTokenVerifyHandler.execute(input);
19404
+ }
19405
+ };
19406
+ AuthenticationService = __decorate([
19407
+ Injectable(),
19408
+ __metadata("design:paramtypes", [UserDisableHandler,
19409
+ UserEnableHandler,
19410
+ UserLoginHandler,
19411
+ UserPasswordChangeHandler,
19412
+ UserPasswordResetCompleteHandler,
19413
+ UserPasswordResetRequestHandler,
19414
+ UserRegistrationHandler,
19415
+ UserTokenVerifyHandler,
19416
+ UserVerifyRequestHandler,
19417
+ UserVerifyCompleteHandler])
19418
+ ], AuthenticationService);
19419
+
19420
+ const Services$1 = [AuthenticationService];
19421
+
19422
+ const Services = [
19423
+ AppSessionService,
19424
+ AppHashingService,
19425
+ EntityManagerService,
19426
+ EmailService,
19427
+ ];
19428
+
19429
+ const IoC = [EntityManagerRegistry];
18959
19430
 
18960
19431
  let NestEventEmitter = class NestEventEmitter {
18961
19432
  constructor() { }
@@ -18971,6 +19442,24 @@ NestEventEmitter = __decorate([
18971
19442
  __metadata("design:paramtypes", [])
18972
19443
  ], NestEventEmitter);
18973
19444
 
19445
+ class EmailTemplatesCollection {
19446
+ constructor() {
19447
+ this._collection = new Map();
19448
+ }
19449
+ registerTemplate(id, template) {
19450
+ if (this._collection.has(id)) {
19451
+ throw new EntityManagerConfigurationError(`Email template with id "${id}" already registered`);
19452
+ }
19453
+ this._collection.set(id, template);
19454
+ }
19455
+ getTemplate(id) {
19456
+ if (!this._collection.has(id)) {
19457
+ throw new EntityManagerConfigurationError(`Email template with id "${id}" not found`);
19458
+ }
19459
+ return this._collection.get(id);
19460
+ }
19461
+ }
19462
+
18974
19463
  var EntityManagerInitializer_1;
18975
19464
  let EntityManagerInitializer = EntityManagerInitializer_1 = class EntityManagerInitializer {
18976
19465
  constructor(discover, registry, eventEmitter) {
@@ -18987,7 +19476,22 @@ let EntityManagerInitializer = EntityManagerInitializer_1 = class EntityManagerI
18987
19476
  eventEmitter: this.eventEmitter,
18988
19477
  });
18989
19478
  this.logger.log("Initializing entity manager types 🥁");
18990
- // const entities = await this.discoverEntities()
19479
+ await this.registerEntities(app);
19480
+ if (staticProviders.authenticationProvider) {
19481
+ await this.registerAuthentication(staticProviders.authenticationProvider);
19482
+ this.logger.log("Entity manager authentication initialized 🔑");
19483
+ }
19484
+ await this.registerEmailTemplates();
19485
+ await this.registerEmailProviders();
19486
+ await this.executeInitializers(app);
19487
+ this.logger.log("Entity manager initialization completed 🚀");
19488
+ }
19489
+ async registerAuthentication(authenticationProvider) {
19490
+ this.registry.getContainer().addAuthentication({
19491
+ provider: authenticationProvider,
19492
+ });
19493
+ }
19494
+ async registerEntities(app) {
18991
19495
  const repositories = await this.discoverRepositories();
18992
19496
  const queryBuilders = await this.discoverQueryBuilders();
18993
19497
  const converters = await this.discoverConverters();
@@ -19014,7 +19518,7 @@ let EntityManagerInitializer = EntityManagerInitializer_1 = class EntityManagerI
19014
19518
  converter,
19015
19519
  authMiddleware,
19016
19520
  });
19017
- this.logger.debug(`Entity ${entityName} registered:
19521
+ this.logger.log(`Entity ${entityName} registered:
19018
19522
  - Repository: ${repository.discoveredClass.injectType?.name ?? ""}
19019
19523
  - Query builder: ${queryBuilder.discoveredClass.injectType?.name ?? ""}
19020
19524
  - Adapter: ${adapter?.discoveredClass.injectType?.name ?? ""}
@@ -19023,13 +19527,39 @@ let EntityManagerInitializer = EntityManagerInitializer_1 = class EntityManagerI
19023
19527
 
19024
19528
  `);
19025
19529
  }
19026
- this.logger.log("Entity manager types initialized 🚀");
19027
- if (staticProviders.authenticationProvider) {
19028
- this.registry.getContainer().addAuthentication({
19029
- provider: staticProviders.authenticationProvider,
19030
- });
19031
- this.logger.log("Entity manager authentication initialized 🔑");
19530
+ this.logger.log("Entity manager types initialized 👌");
19531
+ }
19532
+ async executeInitializers(app) {
19533
+ const initializers = await this.discoverAppInitializers();
19534
+ for (const initializer of initializers) {
19535
+ await initializer.discoveredClass.instance.initialize(app);
19536
+ this.logger.log(`Entity manager app initializer ${initializer.discoveredClass.name} initialized 💪`);
19537
+ }
19538
+ }
19539
+ async registerEmailProviders() {
19540
+ const providers = await this.discoverEmailProviders();
19541
+ if (!providers.length) {
19542
+ this.logger.warn("No email providers found ⚠️");
19543
+ return;
19544
+ }
19545
+ // todo: handle multiple email providers
19546
+ this.registry
19547
+ .getContainer()
19548
+ .getEntitiesServicesLocator()
19549
+ .registerEmailProvider(providers[0].discoveredClass.instance);
19550
+ this.logger.log(`Email provider ${providers[0].discoveredClass.name} registered 📧`);
19551
+ }
19552
+ async registerEmailTemplates() {
19553
+ const emailTemplates = await this.discoverEmailTemplates();
19554
+ const collection = new EmailTemplatesCollection();
19555
+ for (const emailTemplate of emailTemplates) {
19556
+ collection.registerTemplate(emailTemplate.meta.templateId, emailTemplate.discoveredClass.instance);
19557
+ this.logger.log(`Entity manager email template ${emailTemplate.discoveredClass.name} registered 📧`);
19032
19558
  }
19559
+ this.registry
19560
+ .getContainer()
19561
+ .getEntitiesServicesLocator()
19562
+ .registerEmailTemplatesCollection(collection);
19033
19563
  }
19034
19564
  async initializeProviders(app, staticProviders) {
19035
19565
  app
@@ -19037,9 +19567,6 @@ let EntityManagerInitializer = EntityManagerInitializer_1 = class EntityManagerI
19037
19567
  .setModulesContainer(staticProviders.modulesContainer);
19038
19568
  app.get(NestEventEmitter).setEmitter(staticProviders.eventEmitter);
19039
19569
  }
19040
- async discoverEntities() {
19041
- return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.Entity);
19042
- }
19043
19570
  async discoverRepositories() {
19044
19571
  return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.EntityRepository);
19045
19572
  }
@@ -19055,6 +19582,15 @@ let EntityManagerInitializer = EntityManagerInitializer_1 = class EntityManagerI
19055
19582
  async discoverAuthMiddlewares() {
19056
19583
  return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.EntityAuthMiddleware);
19057
19584
  }
19585
+ async discoverAppInitializers() {
19586
+ return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.AppInitializer);
19587
+ }
19588
+ async discoverEmailTemplates() {
19589
+ return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.EmailTemplate);
19590
+ }
19591
+ async discoverEmailProviders() {
19592
+ return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.EmailProvider);
19593
+ }
19058
19594
  };
19059
19595
  EntityManagerInitializer = EntityManagerInitializer_1 = __decorate([
19060
19596
  Injectable(),
@@ -19063,15 +19599,313 @@ EntityManagerInitializer = EntityManagerInitializer_1 = __decorate([
19063
19599
  NestEventEmitter])
19064
19600
  ], EntityManagerInitializer);
19065
19601
 
19066
- const asyncLocalStorage = new AsyncLocalStorage();
19602
+ const Processors = [EntityManagerInitializer];
19067
19603
 
19068
- class AppSession {
19069
- constructor(request, response) {
19070
- this._map = new Map();
19071
- this._request = request;
19072
- this._response = response;
19604
+ const Providers = [NestEventEmitter];
19605
+
19606
+ let EntityManagerModule = class EntityManagerModule {
19607
+ };
19608
+ EntityManagerModule = __decorate([
19609
+ Module({
19610
+ imports: [CustomDiscoveryModule, EventEmitterModule],
19611
+ providers: [...IoC, ...Providers, ...Processors, ...Services],
19612
+ exports: [EntityManagerRegistry, ...Services],
19613
+ })
19614
+ ], EntityManagerModule);
19615
+
19616
+ const UserHandlers = [
19617
+ UserDisableHandler,
19618
+ UserEnableHandler,
19619
+ UserLoginHandler,
19620
+ UserPasswordChangeHandler,
19621
+ UserPasswordResetCompleteHandler,
19622
+ UserPasswordResetRequestHandler,
19623
+ UserRegistrationHandler,
19624
+ UserTokenVerifyHandler,
19625
+ UserVerifyCompleteHandler,
19626
+ UserVerifyRequestHandler,
19627
+ ];
19628
+
19629
+ const AuthenticationProviders = [JwtProvider, PasswordHashingProvider];
19630
+
19631
+ var AuthenticationInitializer_1;
19632
+ let AuthenticationInitializer = AuthenticationInitializer_1 = class AuthenticationInitializer {
19633
+ constructor(discover, registry) {
19634
+ this.discover = discover;
19635
+ this.registry = registry;
19636
+ this.logger = new Logger(AuthenticationInitializer_1.name);
19073
19637
  }
19074
- get(key) {
19638
+ async initialize(app) {
19639
+ const userService = await this.discoverUserService();
19640
+ if (!userService) {
19641
+ throw new Error("No user service found");
19642
+ }
19643
+ this.registry.registerUsersService(userService.discoveredClass.instance);
19644
+ this.logger.log("Authentication initialized 🔑");
19645
+ }
19646
+ async discoverUserService() {
19647
+ return await this.discover.providerWithMetaAtKey(AuthenticationExtensionSymbols.UserService);
19648
+ }
19649
+ };
19650
+ AuthenticationInitializer = AuthenticationInitializer_1 = __decorate([
19651
+ WpAppInitializer(),
19652
+ __metadata("design:paramtypes", [CustomDiscoveryService,
19653
+ AuthenticationServicesResolver])
19654
+ ], AuthenticationInitializer);
19655
+
19656
+ var AuthenticationModule_1;
19657
+ const ModuleData = {
19658
+ imports: [EntityManagerModule, JwtModule],
19659
+ providers: [
19660
+ AuthenticationServicesResolver,
19661
+ AuthenticationInitializer,
19662
+ ...Services$1,
19663
+ ...UserHandlers,
19664
+ ...AuthenticationProviders,
19665
+ ],
19666
+ exports: [...Services$1],
19667
+ };
19668
+ let AuthenticationModule = AuthenticationModule_1 = class AuthenticationModule {
19669
+ static forRoot(input) {
19670
+ setAuthSettings(input);
19671
+ return {
19672
+ module: AuthenticationModule_1,
19673
+ ...ModuleData,
19674
+ };
19675
+ }
19676
+ };
19677
+ AuthenticationModule = AuthenticationModule_1 = __decorate([
19678
+ Module({
19679
+ ...ModuleData,
19680
+ })
19681
+ ], AuthenticationModule);
19682
+
19683
+ let MultiTenancyModule = class MultiTenancyModule {
19684
+ };
19685
+ MultiTenancyModule = __decorate([
19686
+ Module({})
19687
+ ], MultiTenancyModule);
19688
+
19689
+ class QueryBuilderBase {
19690
+ getIndexBasedPagingResult({ paging, totResults, currentPageResults, }) {
19691
+ if (!paging) {
19692
+ return undefined;
19693
+ }
19694
+ const cursor = paging.cursor ?? 0;
19695
+ const hasMorePages = cursor * paging.pageSize + currentPageResults < totResults;
19696
+ return {
19697
+ pageIndex: cursor,
19698
+ pageSize: paging.pageSize,
19699
+ totItems: totResults,
19700
+ totPageItems: currentPageResults,
19701
+ totPages: Math.ceil(totResults / paging.pageSize),
19702
+ currentPageCursor: cursor,
19703
+ prevPageCursor: cursor > 0 ? cursor - 1 : undefined,
19704
+ nextPageCursor: hasMorePages ? cursor + 1 : undefined,
19705
+ };
19706
+ }
19707
+ }
19708
+
19709
+ class TypeOrmQueryBuilder extends QueryBuilderBase {
19710
+ constructor(services) {
19711
+ super();
19712
+ this.services = services;
19713
+ }
19714
+ async search(request, context) {
19715
+ // todo: execute inside read transaction in order to perform the three queries on the same dataset
19716
+ const queryResults = await this.countQueryResults(request, context);
19717
+ const results = await this.findPagedQueryResults(request, context);
19718
+ const facets = await this.calculateFacets(request, context);
19719
+ return {
19720
+ items: results,
19721
+ request,
19722
+ paging: this.getIndexBasedPagingResult({
19723
+ paging: request.paging,
19724
+ currentPageResults: results.length,
19725
+ totResults: queryResults,
19726
+ }),
19727
+ facets,
19728
+ };
19729
+ }
19730
+ async findPagedQueryResults(request, context) {
19731
+ return await this.getRepository().find({
19732
+ where: {
19733
+ ...(context ? this.buildContextFilter(context) : {}),
19734
+ ...this.buildWhereClause(request),
19735
+ },
19736
+ relations: this.getRelationsToLoad(request),
19737
+ ...this.buildPagingParameters(request),
19738
+ });
19739
+ }
19740
+ getRelationsToLoad(request, context) {
19741
+ return undefined;
19742
+ }
19743
+ buildPagingParameters(request) {
19744
+ return {
19745
+ skip: request.paging?.cursor
19746
+ ? request.paging.cursor * request.paging.pageSize
19747
+ : undefined,
19748
+ take: request.paging?.pageSize,
19749
+ };
19750
+ }
19751
+ async countQueryResults(request, context) {
19752
+ return await this.getRepository().count({
19753
+ where: {
19754
+ ...(context ? this.buildContextFilter(context) : {}),
19755
+ ...this.buildWhereClause(request),
19756
+ },
19757
+ });
19758
+ }
19759
+ getRepository() {
19760
+ if (!this.repository) {
19761
+ this.repository = this.services.resolveRepository();
19762
+ }
19763
+ return this.repository;
19764
+ }
19765
+ }
19766
+
19767
+ class TypeOrmRepository {
19768
+ constructor(innerRepository) {
19769
+ this.innerRepository = innerRepository;
19770
+ }
19771
+ async exists(id) {
19772
+ if (typeof id === "undefined") {
19773
+ throw new Error("Invalid 'id' parameter.");
19774
+ }
19775
+ return await this.innerRepository.exist({
19776
+ where: {
19777
+ id: id,
19778
+ },
19779
+ });
19780
+ }
19781
+ async existsBy(condition) {
19782
+ return await this.innerRepository.exist(condition);
19783
+ }
19784
+ async get(id) {
19785
+ if (typeof id === "undefined") {
19786
+ throw new Error("Invalid 'id' parameter.");
19787
+ }
19788
+ const result = await this.innerRepository.findOne({
19789
+ where: {
19790
+ id: id,
19791
+ },
19792
+ });
19793
+ return result ?? undefined;
19794
+ }
19795
+ async getBy(condition) {
19796
+ const result = await this.innerRepository.findOne(condition);
19797
+ return result ?? undefined;
19798
+ }
19799
+ async all() {
19800
+ return await this.innerRepository.find();
19801
+ }
19802
+ async count(condition) {
19803
+ return await this.innerRepository.count(condition);
19804
+ }
19805
+ async find(condition) {
19806
+ return await this.innerRepository.find(condition);
19807
+ }
19808
+ async findById(id) {
19809
+ return await this.innerRepository.findBy({
19810
+ id: In(id),
19811
+ });
19812
+ }
19813
+ async delete(id) {
19814
+ await this.innerRepository.delete({
19815
+ id: id,
19816
+ });
19817
+ }
19818
+ async deleteBy(condition) {
19819
+ await this.innerRepository.delete(condition);
19820
+ }
19821
+ async create(entity) {
19822
+ const createResult = await this.innerRepository.insert(entity);
19823
+ const current = await this.get(createResult.identifiers[0].id);
19824
+ if (!current) {
19825
+ throw new Error(`Entity ${entity.id} not found`);
19826
+ }
19827
+ return current;
19828
+ }
19829
+ async update(id, entity) {
19830
+ await this.innerRepository.update(id, entity);
19831
+ const current = await this.get(id);
19832
+ if (!current) {
19833
+ throw new Error(`Entity ${id} not found`);
19834
+ }
19835
+ return current;
19836
+ }
19837
+ async updateBy(entity, condition) {
19838
+ const updateResult = await this.innerRepository.update(condition, entity);
19839
+ return await this.findById(updateResult.generatedMaps.map((x) => x.id));
19840
+ }
19841
+ async upsert(id, entity) {
19842
+ if (await this.exists(id)) {
19843
+ return await this.update(id, entity);
19844
+ }
19845
+ return await this.create({
19846
+ ...entity,
19847
+ id,
19848
+ });
19849
+ }
19850
+ }
19851
+
19852
+ class NestTypeOrmQueryBuilder extends TypeOrmQueryBuilder {
19853
+ constructor(entityName, registry) {
19854
+ // todo: discover entityName from decorator
19855
+ super(registry.resolveEntityServicesCollection(entityName));
19856
+ }
19857
+ }
19858
+
19859
+ class NestTypeOrmRepository extends TypeOrmRepository {
19860
+ constructor(repository) {
19861
+ super(repository);
19862
+ }
19863
+ }
19864
+
19865
+ class AppExceptionsFilterBase {
19866
+ catch(exception, host) {
19867
+ const ctx = host.switchToHttp();
19868
+ const response = ctx.getResponse();
19869
+ const request = ctx.getRequest();
19870
+ this.logError({
19871
+ exception,
19872
+ request,
19873
+ response,
19874
+ }).catch((error) => {
19875
+ Log.getLogger("AllExceptionsFilter").error("Error logging failed", error);
19876
+ });
19877
+ const status = this.getErrorStatusCode(exception);
19878
+ response.status(status).json({
19879
+ statusCode: status,
19880
+ timestamp: new Date().toISOString(),
19881
+ path: request.url,
19882
+ });
19883
+ }
19884
+ getErrorStatusCode(exception) {
19885
+ const customErrorCode = this.getCustomErrorStatusCode(exception);
19886
+ if (customErrorCode) {
19887
+ return customErrorCode;
19888
+ }
19889
+ if (exception instanceof EntityOperationUnauthorizedException) {
19890
+ return HttpStatus.UNAUTHORIZED;
19891
+ }
19892
+ if (exception instanceof EntityNotFoundException) {
19893
+ return HttpStatus.NOT_FOUND;
19894
+ }
19895
+ if (exception instanceof HttpException) {
19896
+ return exception.getStatus();
19897
+ }
19898
+ return HttpStatus.INTERNAL_SERVER_ERROR;
19899
+ }
19900
+ }
19901
+
19902
+ class AppSession {
19903
+ constructor(request, response) {
19904
+ this._map = new Map();
19905
+ this._request = request;
19906
+ this._response = response;
19907
+ }
19908
+ get(key) {
19075
19909
  return this._map.get(key);
19076
19910
  }
19077
19911
  set(key, value) {
@@ -19102,50 +19936,7 @@ AppSessionMiddleware = __decorate([
19102
19936
  Injectable()
19103
19937
  ], AppSessionMiddleware);
19104
19938
 
19105
- let AppSessionService = class AppSessionService {
19106
- getValue(key) {
19107
- return this.getSession().get(key);
19108
- }
19109
- setValue(key, value) {
19110
- this.getSession().set(key, value);
19111
- }
19112
- clearValue(key) {
19113
- this.getSession().set(key, undefined);
19114
- }
19115
- getRequest() {
19116
- return this.getSession().request;
19117
- }
19118
- getSession() {
19119
- const store = asyncLocalStorage.getStore();
19120
- if (!store) {
19121
- throw new Error("No active context found");
19122
- }
19123
- return store;
19124
- }
19125
- };
19126
- AppSessionService = __decorate([
19127
- Injectable()
19128
- ], AppSessionService);
19129
-
19130
- const Services = [AppSessionService];
19131
-
19132
- const IoC = [EntityManagerRegistry];
19133
-
19134
- const Processors = [EntityManagerInitializer];
19135
-
19136
- const Providers = [NestEventEmitter];
19137
-
19138
- let EntityManagerModule = class EntityManagerModule {
19139
- };
19140
- EntityManagerModule = __decorate([
19141
- Module({
19142
- imports: [CustomDiscoveryModule, EventEmitterModule],
19143
- providers: [...IoC, ...Providers, ...Processors, ...Services],
19144
- exports: [EntityManagerRegistry, ...Services],
19145
- })
19146
- ], EntityManagerModule);
19147
-
19148
19939
  const newUuid = newUuid$1;
19149
19940
 
19150
- export { AppExceptionsFilterBase, AppSessionMiddleware, AppSessionService, AuthenticationModule, EntityManagerException, EntityManagerInitializer, EntityManagerModule, EntityManagerRegistry, EntityManagerSymbols, EntityManagerUnauthorizedException, EntityNotFoundException, EntityOperationType, EntityOperationUnauthorizedException, ModulesContainerProvider, MultiTenancyModule, MultipleEntitiesFoundException, NestEntityActions, NestEntityAuthorizationMiddleware, NestEntityManager, NestTypeOrmQueryBuilder, NestTypeOrmRepository, QueryBuilderBase, ReplicationMode, SortDirection, WpEntity, WpEntityActions, WpEntityAdapter, WpEntityAuthMiddleware, WpEntityConnector, WpEntityConverter, WpEntityManager, WpEntityQueryBuilder, WpEntityRepository, newUuid };
19941
+ export { AppExceptionsFilterBase, AppHashingService, AppSessionMiddleware, AppSessionService, AuthenticationEmailTemplates, AuthenticationError, AuthenticationExtensionSymbols, AuthenticationModule, AuthenticationService, EmailService, EntityManagerConfigurationError, EntityManagerException, EntityManagerInitializer, EntityManagerModule, EntityManagerRegistry, EntityManagerService, EntityManagerSymbols, EntityManagerUnauthorizedException, EntityNotFoundException, EntityOperationType, EntityOperationUnauthorizedException, InvalidCredentialsError, ModulesContainerProvider, MultiTenancyModule, MultipleEntitiesFoundException, NestEntityActions, NestEntityAuthorizationMiddleware, NestEntityManager, NestTypeOrmQueryBuilder, NestTypeOrmRepository, OperationTokenMismatchError, QueryBuilderBase, ReplicationMode, SortDirection, WpAppInitializer, WpEmailTemplate, WpEntity, WpEntityActions, WpEntityAdapter, WpEntityAuthMiddleware, WpEntityConnector, WpEntityConverter, WpEntityManager, WpEntityQueryBuilder, WpEntityRepository, WpUserService, newUuid };
19151
19942
  //# sourceMappingURL=index.js.map