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