@contember/engine-tenant-api 2.0.0-alpha.32 → 2.0.0-alpha.36

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 (730) hide show
  1. package/dist/development/src/TenantContainer.cjs.map +1 -1
  2. package/dist/development/src/TenantContainer.js.map +1 -1
  3. package/dist/development/src/bridges/system/IdentityFetcher.cjs.map +1 -1
  4. package/dist/development/src/bridges/system/IdentityFetcher.js.map +1 -1
  5. package/dist/development/src/exceptions.cjs.map +1 -1
  6. package/dist/development/src/exceptions.js.map +1 -1
  7. package/dist/development/src/migrations/runner.cjs.map +1 -1
  8. package/dist/development/src/migrations/runner.js.map +1 -1
  9. package/dist/development/src/migrations/tenantCredentials.cjs.map +1 -1
  10. package/dist/development/src/migrations/tenantCredentials.js.map +1 -1
  11. package/dist/development/src/model/authorization/AclSchemaAccessNodeFactory.cjs.map +1 -1
  12. package/dist/development/src/model/authorization/AclSchemaAccessNodeFactory.js.map +1 -1
  13. package/dist/development/src/model/authorization/DirectPermissionsAccessNode.cjs.map +1 -1
  14. package/dist/development/src/model/authorization/DirectPermissionsAccessNode.js.map +1 -1
  15. package/dist/development/src/model/authorization/Identity.cjs.map +1 -1
  16. package/dist/development/src/model/authorization/Identity.js.map +1 -1
  17. package/dist/development/src/model/authorization/IdentityFactory.cjs.map +1 -1
  18. package/dist/development/src/model/authorization/IdentityFactory.js.map +1 -1
  19. package/dist/development/src/model/authorization/IdentityScope.cjs.map +1 -1
  20. package/dist/development/src/model/authorization/IdentityScope.js.map +1 -1
  21. package/dist/development/src/model/authorization/MembershipMatcher.cjs.map +1 -1
  22. package/dist/development/src/model/authorization/MembershipMatcher.js.map +1 -1
  23. package/dist/development/src/model/authorization/PermissionActions.cjs.map +1 -1
  24. package/dist/development/src/model/authorization/PermissionActions.js.map +1 -1
  25. package/dist/development/src/model/authorization/PermissionContext.cjs.map +1 -1
  26. package/dist/development/src/model/authorization/PermissionContext.js.map +1 -1
  27. package/dist/development/src/model/authorization/PermissionContextFactory.cjs.map +1 -1
  28. package/dist/development/src/model/authorization/PermissionContextFactory.js.map +1 -1
  29. package/dist/development/src/model/authorization/PermissionsFactory.cjs.map +1 -1
  30. package/dist/development/src/model/authorization/PermissionsFactory.js.map +1 -1
  31. package/dist/development/src/model/authorization/ProjectScope.cjs.map +1 -1
  32. package/dist/development/src/model/authorization/ProjectScope.js.map +1 -1
  33. package/dist/development/src/model/authorization/ProjectScopeFactory.cjs.map +1 -1
  34. package/dist/development/src/model/authorization/ProjectScopeFactory.js.map +1 -1
  35. package/dist/development/src/model/commands/CommandBus.cjs.map +1 -1
  36. package/dist/development/src/model/commands/CommandBus.js.map +1 -1
  37. package/dist/development/src/model/commands/apiKey/ApiKeyHelper.cjs.map +1 -1
  38. package/dist/development/src/model/commands/apiKey/ApiKeyHelper.js.map +1 -1
  39. package/dist/development/src/model/commands/apiKey/CreateApiKeyCommand.cjs.map +1 -1
  40. package/dist/development/src/model/commands/apiKey/CreateApiKeyCommand.js.map +1 -1
  41. package/dist/development/src/model/commands/apiKey/DisableApiKeyCommand.cjs.map +1 -1
  42. package/dist/development/src/model/commands/apiKey/DisableApiKeyCommand.js.map +1 -1
  43. package/dist/development/src/model/commands/apiKey/DisableIdentityApiKeysCommand.cjs.map +1 -1
  44. package/dist/development/src/model/commands/apiKey/DisableIdentityApiKeysCommand.js.map +1 -1
  45. package/dist/development/src/model/commands/apiKey/DisableOneOffApiKeyCommand.cjs.map +1 -1
  46. package/dist/development/src/model/commands/apiKey/DisableOneOffApiKeyCommand.js.map +1 -1
  47. package/dist/development/src/model/commands/apiKey/ProlongApiKeyCommand.cjs.map +1 -1
  48. package/dist/development/src/model/commands/apiKey/ProlongApiKeyCommand.js.map +1 -1
  49. package/dist/development/src/model/commands/configuration/UpdateConfigurationCommand.cjs.map +1 -1
  50. package/dist/development/src/model/commands/configuration/UpdateConfigurationCommand.js.map +1 -1
  51. package/dist/development/src/model/commands/identity/CreateIdentityCommand.cjs.map +1 -1
  52. package/dist/development/src/model/commands/identity/CreateIdentityCommand.js.map +1 -1
  53. package/dist/development/src/model/commands/identity/PatchIdentityGlobalRoles.cjs.map +1 -1
  54. package/dist/development/src/model/commands/identity/PatchIdentityGlobalRoles.js.map +1 -1
  55. package/dist/development/src/model/commands/idp/CreateIdpCommand.cjs.map +1 -1
  56. package/dist/development/src/model/commands/idp/CreateIdpCommand.js.map +1 -1
  57. package/dist/development/src/model/commands/idp/DisableIdpCommand.cjs.map +1 -1
  58. package/dist/development/src/model/commands/idp/DisableIdpCommand.js.map +1 -1
  59. package/dist/development/src/model/commands/idp/EnableIdpCommand.cjs.map +1 -1
  60. package/dist/development/src/model/commands/idp/EnableIdpCommand.js.map +1 -1
  61. package/dist/development/src/model/commands/idp/UpdateIdpCommand.cjs.map +1 -1
  62. package/dist/development/src/model/commands/idp/UpdateIdpCommand.js.map +1 -1
  63. package/dist/development/src/model/commands/mailTemplate/AddMailTemplateCommand.cjs.map +1 -1
  64. package/dist/development/src/model/commands/mailTemplate/AddMailTemplateCommand.js.map +1 -1
  65. package/dist/development/src/model/commands/mailTemplate/RemoveMailTemplateCommand.cjs.map +1 -1
  66. package/dist/development/src/model/commands/mailTemplate/RemoveMailTemplateCommand.js.map +1 -1
  67. package/dist/development/src/model/commands/membership/AddProjectMemberCommand.cjs.map +1 -1
  68. package/dist/development/src/model/commands/membership/AddProjectMemberCommand.js.map +1 -1
  69. package/dist/development/src/model/commands/membership/CreateOrUpdateProjectMembershipCommand.cjs.map +1 -1
  70. package/dist/development/src/model/commands/membership/CreateOrUpdateProjectMembershipCommand.js.map +1 -1
  71. package/dist/development/src/model/commands/membership/RemoveProjectMemberCommand.cjs.map +1 -1
  72. package/dist/development/src/model/commands/membership/RemoveProjectMemberCommand.js.map +1 -1
  73. package/dist/development/src/model/commands/membership/RemoveProjectMembershipsCommand.cjs.map +1 -1
  74. package/dist/development/src/model/commands/membership/RemoveProjectMembershipsCommand.js.map +1 -1
  75. package/dist/development/src/model/commands/membership/UpdateProjectMemberCommand.cjs.map +1 -1
  76. package/dist/development/src/model/commands/membership/UpdateProjectMemberCommand.js.map +1 -1
  77. package/dist/development/src/model/commands/membership/variables/PatchProjectMembershipVariableValuesCommand.cjs.map +1 -1
  78. package/dist/development/src/model/commands/membership/variables/PatchProjectMembershipVariableValuesCommand.js.map +1 -1
  79. package/dist/development/src/model/commands/membership/variables/PatchProjectMembershipVariablesCommand.cjs.map +1 -1
  80. package/dist/development/src/model/commands/membership/variables/PatchProjectMembershipVariablesCommand.js.map +1 -1
  81. package/dist/development/src/model/commands/membership/variables/SetProjectMembershipVariableValuesCommand.cjs.map +1 -1
  82. package/dist/development/src/model/commands/membership/variables/SetProjectMembershipVariableValuesCommand.js.map +1 -1
  83. package/dist/development/src/model/commands/otp/ConfirmOtpCommand.cjs.map +1 -1
  84. package/dist/development/src/model/commands/otp/ConfirmOtpCommand.js.map +1 -1
  85. package/dist/development/src/model/commands/otp/DisableOtpCommand.cjs.map +1 -1
  86. package/dist/development/src/model/commands/otp/DisableOtpCommand.js.map +1 -1
  87. package/dist/development/src/model/commands/otp/PrepareOtpCommand.cjs.map +1 -1
  88. package/dist/development/src/model/commands/otp/PrepareOtpCommand.js.map +1 -1
  89. package/dist/development/src/model/commands/person/ChangePasswordCommand.cjs.map +1 -1
  90. package/dist/development/src/model/commands/person/ChangePasswordCommand.js.map +1 -1
  91. package/dist/development/src/model/commands/person/ChangeProfileCommand.cjs.map +1 -1
  92. package/dist/development/src/model/commands/person/ChangeProfileCommand.js.map +1 -1
  93. package/dist/development/src/model/commands/person/CreatePersonCommand.cjs.map +1 -1
  94. package/dist/development/src/model/commands/person/CreatePersonCommand.js.map +1 -1
  95. package/dist/development/src/model/commands/person/CreatePersonIdentityProviderIdentifierCommand.cjs.map +1 -1
  96. package/dist/development/src/model/commands/person/CreatePersonIdentityProviderIdentifierCommand.js.map +1 -1
  97. package/dist/development/src/model/commands/person/DisablePersonCommand.cjs.map +1 -1
  98. package/dist/development/src/model/commands/person/DisablePersonCommand.js.map +1 -1
  99. package/dist/development/src/model/commands/person/TogglePersonPasswordlessCommand.cjs.map +1 -1
  100. package/dist/development/src/model/commands/person/TogglePersonPasswordlessCommand.js.map +1 -1
  101. package/dist/development/src/model/commands/personToken/ActivateOtpCommand.cjs.map +1 -1
  102. package/dist/development/src/model/commands/personToken/ActivateOtpCommand.js.map +1 -1
  103. package/dist/development/src/model/commands/personToken/CreatePersonTokenCommand.cjs.map +1 -1
  104. package/dist/development/src/model/commands/personToken/CreatePersonTokenCommand.js.map +1 -1
  105. package/dist/development/src/model/commands/personToken/IncreaseOtpAttemptCommand.cjs.map +1 -1
  106. package/dist/development/src/model/commands/personToken/IncreaseOtpAttemptCommand.js.map +1 -1
  107. package/dist/development/src/model/commands/personToken/InvalidateTokenCommand.cjs.map +1 -1
  108. package/dist/development/src/model/commands/personToken/InvalidateTokenCommand.js.map +1 -1
  109. package/dist/development/src/model/commands/personToken/ResetPasswordCommand.cjs.map +1 -1
  110. package/dist/development/src/model/commands/personToken/ResetPasswordCommand.js.map +1 -1
  111. package/dist/development/src/model/commands/personToken/SavePersonTokenCommand.cjs.map +1 -1
  112. package/dist/development/src/model/commands/personToken/SavePersonTokenCommand.js.map +1 -1
  113. package/dist/development/src/model/commands/project/CreateProjectCommand.cjs.map +1 -1
  114. package/dist/development/src/model/commands/project/CreateProjectCommand.js.map +1 -1
  115. package/dist/development/src/model/commands/project/SetProjectSecretCommand.cjs.map +1 -1
  116. package/dist/development/src/model/commands/project/SetProjectSecretCommand.js.map +1 -1
  117. package/dist/development/src/model/commands/project/UpdateProjectCommand.cjs.map +1 -1
  118. package/dist/development/src/model/commands/project/UpdateProjectCommand.js.map +1 -1
  119. package/dist/development/src/model/dtos/Password.cjs.map +1 -1
  120. package/dist/development/src/model/dtos/Password.js.map +1 -1
  121. package/dist/development/src/model/mailing/UserMailer.cjs.map +1 -1
  122. package/dist/development/src/model/mailing/UserMailer.js.map +1 -1
  123. package/dist/development/src/model/mailing/templates/ExistingUserInvited.mustache.cjs.map +1 -1
  124. package/dist/development/src/model/mailing/templates/ExistingUserInvited.mustache.js.map +1 -1
  125. package/dist/development/src/model/mailing/templates/NewUserInvited.mustache.cjs.map +1 -1
  126. package/dist/development/src/model/mailing/templates/NewUserInvited.mustache.js.map +1 -1
  127. package/dist/development/src/model/mailing/templates/PasswordReset.mustache.cjs.map +1 -1
  128. package/dist/development/src/model/mailing/templates/PasswordReset.mustache.js.map +1 -1
  129. package/dist/development/src/model/mailing/templates/PasswordlessSignIn.mustache.cjs.map +1 -1
  130. package/dist/development/src/model/mailing/templates/PasswordlessSignIn.mustache.js.map +1 -1
  131. package/dist/development/src/model/mailing/type.cjs.map +1 -1
  132. package/dist/development/src/model/mailing/type.js.map +1 -1
  133. package/dist/development/src/model/queries/apiKey/ApiKeyQuery.cjs.map +1 -1
  134. package/dist/development/src/model/queries/apiKey/ApiKeyQuery.js.map +1 -1
  135. package/dist/development/src/model/queries/configuration/ConfigurationQuery.cjs.map +1 -1
  136. package/dist/development/src/model/queries/configuration/ConfigurationQuery.js.map +1 -1
  137. package/dist/development/src/model/queries/identity/IdentityQuery.cjs.map +1 -1
  138. package/dist/development/src/model/queries/identity/IdentityQuery.js.map +1 -1
  139. package/dist/development/src/model/queries/idp/IdentityProviderBySlugQuery.cjs.map +1 -1
  140. package/dist/development/src/model/queries/idp/IdentityProviderBySlugQuery.js.map +1 -1
  141. package/dist/development/src/model/queries/idp/IdentityProvidersQuery.cjs.map +1 -1
  142. package/dist/development/src/model/queries/idp/IdentityProvidersQuery.js.map +1 -1
  143. package/dist/development/src/model/queries/idp/helpers.cjs.map +1 -1
  144. package/dist/development/src/model/queries/idp/helpers.js.map +1 -1
  145. package/dist/development/src/model/queries/mailTemplate/MailTemplateListQuery.cjs.map +1 -1
  146. package/dist/development/src/model/queries/mailTemplate/MailTemplateListQuery.js.map +1 -1
  147. package/dist/development/src/model/queries/mailTemplate/MailTemplateQuery.cjs.map +1 -1
  148. package/dist/development/src/model/queries/mailTemplate/MailTemplateQuery.js.map +1 -1
  149. package/dist/development/src/model/queries/membership/ProjectMembersQuery.cjs.map +1 -1
  150. package/dist/development/src/model/queries/membership/ProjectMembersQuery.js.map +1 -1
  151. package/dist/development/src/model/queries/membership/ProjectMembershipByIdentityQuery.cjs.map +1 -1
  152. package/dist/development/src/model/queries/membership/ProjectMembershipByIdentityQuery.js.map +1 -1
  153. package/dist/development/src/model/queries/membership/ProjectRolesByIdentityQuery.cjs.map +1 -1
  154. package/dist/development/src/model/queries/membership/ProjectRolesByIdentityQuery.js.map +1 -1
  155. package/dist/development/src/model/queries/membership/ProjectSlugSpecification.cjs.map +1 -1
  156. package/dist/development/src/model/queries/membership/ProjectSlugSpecification.js.map +1 -1
  157. package/dist/development/src/model/queries/person/PersonByIdPQuery.cjs.map +1 -1
  158. package/dist/development/src/model/queries/person/PersonByIdPQuery.js.map +1 -1
  159. package/dist/development/src/model/queries/person/PersonByIdentityBatchQuery.cjs.map +1 -1
  160. package/dist/development/src/model/queries/person/PersonByIdentityBatchQuery.js.map +1 -1
  161. package/dist/development/src/model/queries/person/PersonQuery.cjs.map +1 -1
  162. package/dist/development/src/model/queries/person/PersonQuery.js.map +1 -1
  163. package/dist/development/src/model/queries/person/PersonQueryBuilderFactory.cjs.map +1 -1
  164. package/dist/development/src/model/queries/person/PersonQueryBuilderFactory.js.map +1 -1
  165. package/dist/development/src/model/queries/personToken/PersonTokenQuery.cjs.map +1 -1
  166. package/dist/development/src/model/queries/personToken/PersonTokenQuery.js.map +1 -1
  167. package/dist/development/src/model/queries/project/ProjectBySlugQuery.cjs.map +1 -1
  168. package/dist/development/src/model/queries/project/ProjectBySlugQuery.js.map +1 -1
  169. package/dist/development/src/model/queries/project/ProjectSecretsQuery.cjs.map +1 -1
  170. package/dist/development/src/model/queries/project/ProjectSecretsQuery.js.map +1 -1
  171. package/dist/development/src/model/queries/project/ProjectUpdateTimestampQuery.cjs.map +1 -1
  172. package/dist/development/src/model/queries/project/ProjectUpdateTimestampQuery.js.map +1 -1
  173. package/dist/development/src/model/queries/project/ProjectsByIdentityQuery.cjs.map +1 -1
  174. package/dist/development/src/model/queries/project/ProjectsByIdentityQuery.js.map +1 -1
  175. package/dist/development/src/model/queries/project/ProjectsQuery.cjs.map +1 -1
  176. package/dist/development/src/model/queries/project/ProjectsQuery.js.map +1 -1
  177. package/dist/development/src/model/service/ConfigurationManager.cjs.map +1 -1
  178. package/dist/development/src/model/service/ConfigurationManager.js.map +1 -1
  179. package/dist/development/src/model/service/EmailValidator.cjs.map +1 -1
  180. package/dist/development/src/model/service/EmailValidator.js.map +1 -1
  181. package/dist/development/src/model/service/IDPSignInManager.cjs.map +1 -1
  182. package/dist/development/src/model/service/IDPSignInManager.js.map +1 -1
  183. package/dist/development/src/model/service/InviteManager.cjs.map +1 -1
  184. package/dist/development/src/model/service/InviteManager.js.map +1 -1
  185. package/dist/development/src/model/service/MailTemplateManager.cjs.map +1 -1
  186. package/dist/development/src/model/service/MailTemplateManager.js.map +1 -1
  187. package/dist/development/src/model/service/MembershipValidator.cjs.map +1 -1
  188. package/dist/development/src/model/service/MembershipValidator.js.map +1 -1
  189. package/dist/development/src/model/service/OtpAuthenticator.cjs.map +1 -1
  190. package/dist/development/src/model/service/OtpAuthenticator.js.map +1 -1
  191. package/dist/development/src/model/service/OtpManager.cjs.map +1 -1
  192. package/dist/development/src/model/service/OtpManager.js.map +1 -1
  193. package/dist/development/src/model/service/PasswordChangeManager.cjs.map +1 -1
  194. package/dist/development/src/model/service/PasswordChangeManager.js.map +1 -1
  195. package/dist/development/src/model/service/PasswordResetManager.cjs.map +1 -1
  196. package/dist/development/src/model/service/PasswordResetManager.js.map +1 -1
  197. package/dist/development/src/model/service/PasswordlessSignInManager.cjs.map +1 -1
  198. package/dist/development/src/model/service/PasswordlessSignInManager.js.map +1 -1
  199. package/dist/development/src/model/service/PersonAccessManager.cjs.map +1 -1
  200. package/dist/development/src/model/service/PersonAccessManager.js.map +1 -1
  201. package/dist/development/src/model/service/PersonManager.cjs.map +1 -1
  202. package/dist/development/src/model/service/PersonManager.js.map +1 -1
  203. package/dist/development/src/model/service/ProjectManager.cjs.map +1 -1
  204. package/dist/development/src/model/service/ProjectManager.js.map +1 -1
  205. package/dist/development/src/model/service/ProjectMemberManager.cjs.map +1 -1
  206. package/dist/development/src/model/service/ProjectMemberManager.js.map +1 -1
  207. package/dist/development/src/model/service/RolesManager.cjs.map +1 -1
  208. package/dist/development/src/model/service/RolesManager.js.map +1 -1
  209. package/dist/development/src/model/service/SecretsManager.cjs.map +1 -1
  210. package/dist/development/src/model/service/SecretsManager.js.map +1 -1
  211. package/dist/development/src/model/service/SignInManager.cjs.map +1 -1
  212. package/dist/development/src/model/service/SignInManager.js.map +1 -1
  213. package/dist/development/src/model/service/SignUpManager.cjs.map +1 -1
  214. package/dist/development/src/model/service/SignUpManager.js.map +1 -1
  215. package/dist/development/src/model/service/apiKey/ApiKeyManager.cjs.map +1 -1
  216. package/dist/development/src/model/service/apiKey/ApiKeyManager.js.map +1 -1
  217. package/dist/development/src/model/service/apiKey/ApiKeyService.cjs.map +1 -1
  218. package/dist/development/src/model/service/apiKey/ApiKeyService.js.map +1 -1
  219. package/dist/development/src/model/service/helpers/getPreferredProject.cjs.map +1 -1
  220. package/dist/development/src/model/service/helpers/getPreferredProject.js.map +1 -1
  221. package/dist/development/src/model/service/idp/IDPHandlerRegistry.cjs.map +1 -1
  222. package/dist/development/src/model/service/idp/IDPHandlerRegistry.js.map +1 -1
  223. package/dist/development/src/model/service/idp/IDPManager.cjs.map +1 -1
  224. package/dist/development/src/model/service/idp/IDPManager.js.map +1 -1
  225. package/dist/development/src/model/service/idp/IDPResponseError.cjs.map +1 -1
  226. package/dist/development/src/model/service/idp/IDPResponseError.js.map +1 -1
  227. package/dist/development/src/model/service/idp/IDPValidationError.cjs.map +1 -1
  228. package/dist/development/src/model/service/idp/IDPValidationError.js.map +1 -1
  229. package/dist/development/src/model/service/idp/IdentityProviderNotFoundError.cjs.map +1 -1
  230. package/dist/development/src/model/service/idp/IdentityProviderNotFoundError.js.map +1 -1
  231. package/dist/development/src/model/service/idp/InvalidIDPConfigurationError.cjs.map +1 -1
  232. package/dist/development/src/model/service/idp/InvalidIDPConfigurationError.js.map +1 -1
  233. package/dist/development/src/model/service/idp/providers/AppleProvider.cjs.map +1 -1
  234. package/dist/development/src/model/service/idp/providers/AppleProvider.js.map +1 -1
  235. package/dist/development/src/model/service/idp/providers/FacebookProvider.cjs.map +1 -1
  236. package/dist/development/src/model/service/idp/providers/FacebookProvider.js.map +1 -1
  237. package/dist/development/src/model/service/idp/providers/OIDCHelpers.cjs.map +1 -1
  238. package/dist/development/src/model/service/idp/providers/OIDCHelpers.js.map +1 -1
  239. package/dist/development/src/model/service/idp/providers/OIDCProvider.cjs.map +1 -1
  240. package/dist/development/src/model/service/idp/providers/OIDCProvider.js.map +1 -1
  241. package/dist/development/src/model/service/idp/providers/OIDCTypes.cjs.map +1 -1
  242. package/dist/development/src/model/service/idp/providers/OIDCTypes.js.map +1 -1
  243. package/dist/development/src/model/service/idp/providers/helpers.cjs.map +1 -1
  244. package/dist/development/src/model/service/idp/providers/helpers.js.map +1 -1
  245. package/dist/development/src/model/service/membershipUtils.cjs.map +1 -1
  246. package/dist/development/src/model/service/membershipUtils.js.map +1 -1
  247. package/dist/development/src/model/type/ApiKey.cjs.map +1 -1
  248. package/dist/development/src/model/type/ApiKey.js.map +1 -1
  249. package/dist/development/src/model/utils/DatabaseContext.cjs.map +1 -1
  250. package/dist/development/src/model/utils/DatabaseContext.js.map +1 -1
  251. package/dist/development/src/model/utils/Response.cjs.map +1 -1
  252. package/dist/development/src/model/utils/Response.js.map +1 -1
  253. package/dist/development/src/model/utils/password.cjs.map +1 -1
  254. package/dist/development/src/model/utils/password.js.map +1 -1
  255. package/dist/development/src/model/utils/tokenUtils.cjs.map +1 -1
  256. package/dist/development/src/model/utils/tokenUtils.js.map +1 -1
  257. package/dist/development/src/resolvers/ResolverFactory.cjs.map +1 -1
  258. package/dist/development/src/resolvers/ResolverFactory.js.map +1 -1
  259. package/dist/development/src/resolvers/TenantResolverContextFactory.cjs.map +1 -1
  260. package/dist/development/src/resolvers/TenantResolverContextFactory.js.map +1 -1
  261. package/dist/development/src/resolvers/errorUtils.cjs.map +1 -1
  262. package/dist/development/src/resolvers/errorUtils.js.map +1 -1
  263. package/dist/development/src/resolvers/membershipUtils.cjs.map +1 -1
  264. package/dist/development/src/resolvers/membershipUtils.js.map +1 -1
  265. package/dist/development/src/resolvers/mutation/apiKey/CreateApiKeyMutationResolver.cjs.map +1 -1
  266. package/dist/development/src/resolvers/mutation/apiKey/CreateApiKeyMutationResolver.js.map +1 -1
  267. package/dist/development/src/resolvers/mutation/apiKey/DisableApiKeyMutationResolver.cjs.map +1 -1
  268. package/dist/development/src/resolvers/mutation/apiKey/DisableApiKeyMutationResolver.js.map +1 -1
  269. package/dist/development/src/resolvers/mutation/configuration/ConfigurationMutationResolver.cjs.map +1 -1
  270. package/dist/development/src/resolvers/mutation/configuration/ConfigurationMutationResolver.js.map +1 -1
  271. package/dist/development/src/resolvers/mutation/identity/GlobalRolesMutationResolver.cjs.map +1 -1
  272. package/dist/development/src/resolvers/mutation/identity/GlobalRolesMutationResolver.js.map +1 -1
  273. package/dist/development/src/resolvers/mutation/idp/AddIDPMutationResolver.cjs.map +1 -1
  274. package/dist/development/src/resolvers/mutation/idp/AddIDPMutationResolver.js.map +1 -1
  275. package/dist/development/src/resolvers/mutation/idp/DisableIDPMutationResolver.cjs.map +1 -1
  276. package/dist/development/src/resolvers/mutation/idp/DisableIDPMutationResolver.js.map +1 -1
  277. package/dist/development/src/resolvers/mutation/idp/EnableIDPMutationResolver.cjs.map +1 -1
  278. package/dist/development/src/resolvers/mutation/idp/EnableIDPMutationResolver.js.map +1 -1
  279. package/dist/development/src/resolvers/mutation/idp/UpdateIDPMutationResolver.cjs.map +1 -1
  280. package/dist/development/src/resolvers/mutation/idp/UpdateIDPMutationResolver.js.map +1 -1
  281. package/dist/development/src/resolvers/mutation/mailTemplates/MailTemplateMutationResolver.cjs.map +1 -1
  282. package/dist/development/src/resolvers/mutation/mailTemplates/MailTemplateMutationResolver.js.map +1 -1
  283. package/dist/development/src/resolvers/mutation/person/ChangePasswordMutationResolver.cjs.map +1 -1
  284. package/dist/development/src/resolvers/mutation/person/ChangePasswordMutationResolver.js.map +1 -1
  285. package/dist/development/src/resolvers/mutation/person/ChangeProfileMutationResolver.cjs.map +1 -1
  286. package/dist/development/src/resolvers/mutation/person/ChangeProfileMutationResolver.js.map +1 -1
  287. package/dist/development/src/resolvers/mutation/person/DisablePersonMutationResolver.cjs.map +1 -1
  288. package/dist/development/src/resolvers/mutation/person/DisablePersonMutationResolver.js.map +1 -1
  289. package/dist/development/src/resolvers/mutation/person/IDPMutationResolver.cjs.map +1 -1
  290. package/dist/development/src/resolvers/mutation/person/IDPMutationResolver.js.map +1 -1
  291. package/dist/development/src/resolvers/mutation/person/InviteMutationResolver.cjs.map +1 -1
  292. package/dist/development/src/resolvers/mutation/person/InviteMutationResolver.js.map +1 -1
  293. package/dist/development/src/resolvers/mutation/person/OtpMutationResolver.cjs.map +1 -1
  294. package/dist/development/src/resolvers/mutation/person/OtpMutationResolver.js.map +1 -1
  295. package/dist/development/src/resolvers/mutation/person/PasswordlessMutationResolver.cjs.map +1 -1
  296. package/dist/development/src/resolvers/mutation/person/PasswordlessMutationResolver.js.map +1 -1
  297. package/dist/development/src/resolvers/mutation/person/ResetPasswordMutationResolver.cjs.map +1 -1
  298. package/dist/development/src/resolvers/mutation/person/ResetPasswordMutationResolver.js.map +1 -1
  299. package/dist/development/src/resolvers/mutation/person/SignInMutationResolver.cjs.map +1 -1
  300. package/dist/development/src/resolvers/mutation/person/SignInMutationResolver.js.map +1 -1
  301. package/dist/development/src/resolvers/mutation/person/SignOutMutationResolver.cjs.map +1 -1
  302. package/dist/development/src/resolvers/mutation/person/SignOutMutationResolver.js.map +1 -1
  303. package/dist/development/src/resolvers/mutation/person/SignUpMutationResolver.cjs.map +1 -1
  304. package/dist/development/src/resolvers/mutation/person/SignUpMutationResolver.js.map +1 -1
  305. package/dist/development/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.cjs.map +1 -1
  306. package/dist/development/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.js.map +1 -1
  307. package/dist/development/src/resolvers/mutation/project/CreateProjectMutationResolver.cjs.map +1 -1
  308. package/dist/development/src/resolvers/mutation/project/CreateProjectMutationResolver.js.map +1 -1
  309. package/dist/development/src/resolvers/mutation/project/SetProjectSecretMutationResolver.cjs.map +1 -1
  310. package/dist/development/src/resolvers/mutation/project/SetProjectSecretMutationResolver.js.map +1 -1
  311. package/dist/development/src/resolvers/mutation/project/UpdateProjectMutationResolver.cjs.map +1 -1
  312. package/dist/development/src/resolvers/mutation/project/UpdateProjectMutationResolver.js.map +1 -1
  313. package/dist/development/src/resolvers/mutation/projectMember/AddProjectMemberMutationResolver.cjs.map +1 -1
  314. package/dist/development/src/resolvers/mutation/projectMember/AddProjectMemberMutationResolver.js.map +1 -1
  315. package/dist/development/src/resolvers/mutation/projectMember/RemoveProjectMemberMutationResolver.cjs.map +1 -1
  316. package/dist/development/src/resolvers/mutation/projectMember/RemoveProjectMemberMutationResolver.js.map +1 -1
  317. package/dist/development/src/resolvers/mutation/projectMember/UpdateProjectMemberMutationResolver.cjs.map +1 -1
  318. package/dist/development/src/resolvers/mutation/projectMember/UpdateProjectMemberMutationResolver.js.map +1 -1
  319. package/dist/development/src/resolvers/query/ConfigurationQueryResolver.cjs.map +1 -1
  320. package/dist/development/src/resolvers/query/ConfigurationQueryResolver.js.map +1 -1
  321. package/dist/development/src/resolvers/query/IDPQueryResolver.cjs.map +1 -1
  322. package/dist/development/src/resolvers/query/IDPQueryResolver.js.map +1 -1
  323. package/dist/development/src/resolvers/query/MailTemplateQueryResolver.cjs.map +1 -1
  324. package/dist/development/src/resolvers/query/MailTemplateQueryResolver.js.map +1 -1
  325. package/dist/development/src/resolvers/query/MeQueryResolver.cjs.map +1 -1
  326. package/dist/development/src/resolvers/query/MeQueryResolver.js.map +1 -1
  327. package/dist/development/src/resolvers/query/PersonQueryResolver.cjs.map +1 -1
  328. package/dist/development/src/resolvers/query/PersonQueryResolver.js.map +1 -1
  329. package/dist/development/src/resolvers/query/ProjectMembersQueryResolver.cjs.map +1 -1
  330. package/dist/development/src/resolvers/query/ProjectMembersQueryResolver.js.map +1 -1
  331. package/dist/development/src/resolvers/query/ProjectQueryResolver.cjs.map +1 -1
  332. package/dist/development/src/resolvers/query/ProjectQueryResolver.js.map +1 -1
  333. package/dist/development/src/resolvers/responseHelpers/PersonResponseFactory.cjs.map +1 -1
  334. package/dist/development/src/resolvers/responseHelpers/PersonResponseFactory.js.map +1 -1
  335. package/dist/development/src/resolvers/responseHelpers/SignInResponseFactory.cjs.map +1 -1
  336. package/dist/development/src/resolvers/responseHelpers/SignInResponseFactory.js.map +1 -1
  337. package/dist/development/src/resolvers/types/IdentityTypeResolver.cjs.map +1 -1
  338. package/dist/development/src/resolvers/types/IdentityTypeResolver.js.map +1 -1
  339. package/dist/development/src/resolvers/types/ProjectTypeResolver.cjs.map +1 -1
  340. package/dist/development/src/resolvers/types/ProjectTypeResolver.js.map +1 -1
  341. package/dist/development/src/schema/tenant.graphql.cjs.map +1 -1
  342. package/dist/development/src/utils/Mailer.cjs.map +1 -1
  343. package/dist/development/src/utils/Mailer.js.map +1 -1
  344. package/dist/development/src/utils/TemplateRenderer.cjs.map +1 -1
  345. package/dist/development/src/utils/TemplateRenderer.js.map +1 -1
  346. package/dist/development/src/utils/array.cjs.map +1 -1
  347. package/dist/development/src/utils/array.js.map +1 -1
  348. package/dist/development/src/utils/batchQuery.cjs.map +1 -1
  349. package/dist/development/src/utils/batchQuery.js.map +1 -1
  350. package/dist/production/src/TenantContainer.cjs.map +1 -1
  351. package/dist/production/src/TenantContainer.js.map +1 -1
  352. package/dist/production/src/bridges/system/IdentityFetcher.cjs.map +1 -1
  353. package/dist/production/src/bridges/system/IdentityFetcher.js.map +1 -1
  354. package/dist/production/src/exceptions.cjs.map +1 -1
  355. package/dist/production/src/exceptions.js.map +1 -1
  356. package/dist/production/src/migrations/runner.cjs.map +1 -1
  357. package/dist/production/src/migrations/runner.js.map +1 -1
  358. package/dist/production/src/migrations/tenantCredentials.cjs.map +1 -1
  359. package/dist/production/src/migrations/tenantCredentials.js.map +1 -1
  360. package/dist/production/src/model/authorization/AclSchemaAccessNodeFactory.cjs.map +1 -1
  361. package/dist/production/src/model/authorization/AclSchemaAccessNodeFactory.js.map +1 -1
  362. package/dist/production/src/model/authorization/DirectPermissionsAccessNode.cjs.map +1 -1
  363. package/dist/production/src/model/authorization/DirectPermissionsAccessNode.js.map +1 -1
  364. package/dist/production/src/model/authorization/Identity.cjs.map +1 -1
  365. package/dist/production/src/model/authorization/Identity.js.map +1 -1
  366. package/dist/production/src/model/authorization/IdentityFactory.cjs.map +1 -1
  367. package/dist/production/src/model/authorization/IdentityFactory.js.map +1 -1
  368. package/dist/production/src/model/authorization/IdentityScope.cjs.map +1 -1
  369. package/dist/production/src/model/authorization/IdentityScope.js.map +1 -1
  370. package/dist/production/src/model/authorization/MembershipMatcher.cjs.map +1 -1
  371. package/dist/production/src/model/authorization/MembershipMatcher.js.map +1 -1
  372. package/dist/production/src/model/authorization/PermissionActions.cjs.map +1 -1
  373. package/dist/production/src/model/authorization/PermissionActions.js.map +1 -1
  374. package/dist/production/src/model/authorization/PermissionContext.cjs.map +1 -1
  375. package/dist/production/src/model/authorization/PermissionContext.js.map +1 -1
  376. package/dist/production/src/model/authorization/PermissionContextFactory.cjs.map +1 -1
  377. package/dist/production/src/model/authorization/PermissionContextFactory.js.map +1 -1
  378. package/dist/production/src/model/authorization/PermissionsFactory.cjs.map +1 -1
  379. package/dist/production/src/model/authorization/PermissionsFactory.js.map +1 -1
  380. package/dist/production/src/model/authorization/ProjectScope.cjs.map +1 -1
  381. package/dist/production/src/model/authorization/ProjectScope.js.map +1 -1
  382. package/dist/production/src/model/authorization/ProjectScopeFactory.cjs.map +1 -1
  383. package/dist/production/src/model/authorization/ProjectScopeFactory.js.map +1 -1
  384. package/dist/production/src/model/commands/CommandBus.cjs.map +1 -1
  385. package/dist/production/src/model/commands/CommandBus.js.map +1 -1
  386. package/dist/production/src/model/commands/apiKey/ApiKeyHelper.cjs.map +1 -1
  387. package/dist/production/src/model/commands/apiKey/ApiKeyHelper.js.map +1 -1
  388. package/dist/production/src/model/commands/apiKey/CreateApiKeyCommand.cjs.map +1 -1
  389. package/dist/production/src/model/commands/apiKey/CreateApiKeyCommand.js.map +1 -1
  390. package/dist/production/src/model/commands/apiKey/DisableApiKeyCommand.cjs.map +1 -1
  391. package/dist/production/src/model/commands/apiKey/DisableApiKeyCommand.js.map +1 -1
  392. package/dist/production/src/model/commands/apiKey/DisableIdentityApiKeysCommand.cjs.map +1 -1
  393. package/dist/production/src/model/commands/apiKey/DisableIdentityApiKeysCommand.js.map +1 -1
  394. package/dist/production/src/model/commands/apiKey/DisableOneOffApiKeyCommand.cjs.map +1 -1
  395. package/dist/production/src/model/commands/apiKey/DisableOneOffApiKeyCommand.js.map +1 -1
  396. package/dist/production/src/model/commands/apiKey/ProlongApiKeyCommand.cjs.map +1 -1
  397. package/dist/production/src/model/commands/apiKey/ProlongApiKeyCommand.js.map +1 -1
  398. package/dist/production/src/model/commands/configuration/UpdateConfigurationCommand.cjs.map +1 -1
  399. package/dist/production/src/model/commands/configuration/UpdateConfigurationCommand.js.map +1 -1
  400. package/dist/production/src/model/commands/identity/CreateIdentityCommand.cjs.map +1 -1
  401. package/dist/production/src/model/commands/identity/CreateIdentityCommand.js.map +1 -1
  402. package/dist/production/src/model/commands/identity/PatchIdentityGlobalRoles.cjs.map +1 -1
  403. package/dist/production/src/model/commands/identity/PatchIdentityGlobalRoles.js.map +1 -1
  404. package/dist/production/src/model/commands/idp/CreateIdpCommand.cjs.map +1 -1
  405. package/dist/production/src/model/commands/idp/CreateIdpCommand.js.map +1 -1
  406. package/dist/production/src/model/commands/idp/DisableIdpCommand.cjs.map +1 -1
  407. package/dist/production/src/model/commands/idp/DisableIdpCommand.js.map +1 -1
  408. package/dist/production/src/model/commands/idp/EnableIdpCommand.cjs.map +1 -1
  409. package/dist/production/src/model/commands/idp/EnableIdpCommand.js.map +1 -1
  410. package/dist/production/src/model/commands/idp/UpdateIdpCommand.cjs.map +1 -1
  411. package/dist/production/src/model/commands/idp/UpdateIdpCommand.js.map +1 -1
  412. package/dist/production/src/model/commands/mailTemplate/AddMailTemplateCommand.cjs.map +1 -1
  413. package/dist/production/src/model/commands/mailTemplate/AddMailTemplateCommand.js.map +1 -1
  414. package/dist/production/src/model/commands/mailTemplate/RemoveMailTemplateCommand.cjs.map +1 -1
  415. package/dist/production/src/model/commands/mailTemplate/RemoveMailTemplateCommand.js.map +1 -1
  416. package/dist/production/src/model/commands/membership/AddProjectMemberCommand.cjs.map +1 -1
  417. package/dist/production/src/model/commands/membership/AddProjectMemberCommand.js.map +1 -1
  418. package/dist/production/src/model/commands/membership/CreateOrUpdateProjectMembershipCommand.cjs.map +1 -1
  419. package/dist/production/src/model/commands/membership/CreateOrUpdateProjectMembershipCommand.js.map +1 -1
  420. package/dist/production/src/model/commands/membership/RemoveProjectMemberCommand.cjs.map +1 -1
  421. package/dist/production/src/model/commands/membership/RemoveProjectMemberCommand.js.map +1 -1
  422. package/dist/production/src/model/commands/membership/RemoveProjectMembershipsCommand.cjs.map +1 -1
  423. package/dist/production/src/model/commands/membership/RemoveProjectMembershipsCommand.js.map +1 -1
  424. package/dist/production/src/model/commands/membership/UpdateProjectMemberCommand.cjs.map +1 -1
  425. package/dist/production/src/model/commands/membership/UpdateProjectMemberCommand.js.map +1 -1
  426. package/dist/production/src/model/commands/membership/variables/PatchProjectMembershipVariableValuesCommand.cjs.map +1 -1
  427. package/dist/production/src/model/commands/membership/variables/PatchProjectMembershipVariableValuesCommand.js.map +1 -1
  428. package/dist/production/src/model/commands/membership/variables/PatchProjectMembershipVariablesCommand.cjs.map +1 -1
  429. package/dist/production/src/model/commands/membership/variables/PatchProjectMembershipVariablesCommand.js.map +1 -1
  430. package/dist/production/src/model/commands/membership/variables/SetProjectMembershipVariableValuesCommand.cjs.map +1 -1
  431. package/dist/production/src/model/commands/membership/variables/SetProjectMembershipVariableValuesCommand.js.map +1 -1
  432. package/dist/production/src/model/commands/otp/ConfirmOtpCommand.cjs.map +1 -1
  433. package/dist/production/src/model/commands/otp/ConfirmOtpCommand.js.map +1 -1
  434. package/dist/production/src/model/commands/otp/DisableOtpCommand.cjs.map +1 -1
  435. package/dist/production/src/model/commands/otp/DisableOtpCommand.js.map +1 -1
  436. package/dist/production/src/model/commands/otp/PrepareOtpCommand.cjs.map +1 -1
  437. package/dist/production/src/model/commands/otp/PrepareOtpCommand.js.map +1 -1
  438. package/dist/production/src/model/commands/person/ChangePasswordCommand.cjs.map +1 -1
  439. package/dist/production/src/model/commands/person/ChangePasswordCommand.js.map +1 -1
  440. package/dist/production/src/model/commands/person/ChangeProfileCommand.cjs.map +1 -1
  441. package/dist/production/src/model/commands/person/ChangeProfileCommand.js.map +1 -1
  442. package/dist/production/src/model/commands/person/CreatePersonCommand.cjs.map +1 -1
  443. package/dist/production/src/model/commands/person/CreatePersonCommand.js.map +1 -1
  444. package/dist/production/src/model/commands/person/CreatePersonIdentityProviderIdentifierCommand.cjs.map +1 -1
  445. package/dist/production/src/model/commands/person/CreatePersonIdentityProviderIdentifierCommand.js.map +1 -1
  446. package/dist/production/src/model/commands/person/DisablePersonCommand.cjs.map +1 -1
  447. package/dist/production/src/model/commands/person/DisablePersonCommand.js.map +1 -1
  448. package/dist/production/src/model/commands/person/TogglePersonPasswordlessCommand.cjs.map +1 -1
  449. package/dist/production/src/model/commands/person/TogglePersonPasswordlessCommand.js.map +1 -1
  450. package/dist/production/src/model/commands/personToken/ActivateOtpCommand.cjs.map +1 -1
  451. package/dist/production/src/model/commands/personToken/ActivateOtpCommand.js.map +1 -1
  452. package/dist/production/src/model/commands/personToken/CreatePersonTokenCommand.cjs.map +1 -1
  453. package/dist/production/src/model/commands/personToken/CreatePersonTokenCommand.js.map +1 -1
  454. package/dist/production/src/model/commands/personToken/IncreaseOtpAttemptCommand.cjs.map +1 -1
  455. package/dist/production/src/model/commands/personToken/IncreaseOtpAttemptCommand.js.map +1 -1
  456. package/dist/production/src/model/commands/personToken/InvalidateTokenCommand.cjs.map +1 -1
  457. package/dist/production/src/model/commands/personToken/InvalidateTokenCommand.js.map +1 -1
  458. package/dist/production/src/model/commands/personToken/ResetPasswordCommand.cjs.map +1 -1
  459. package/dist/production/src/model/commands/personToken/ResetPasswordCommand.js.map +1 -1
  460. package/dist/production/src/model/commands/personToken/SavePersonTokenCommand.cjs.map +1 -1
  461. package/dist/production/src/model/commands/personToken/SavePersonTokenCommand.js.map +1 -1
  462. package/dist/production/src/model/commands/project/CreateProjectCommand.cjs.map +1 -1
  463. package/dist/production/src/model/commands/project/CreateProjectCommand.js.map +1 -1
  464. package/dist/production/src/model/commands/project/SetProjectSecretCommand.cjs.map +1 -1
  465. package/dist/production/src/model/commands/project/SetProjectSecretCommand.js.map +1 -1
  466. package/dist/production/src/model/commands/project/UpdateProjectCommand.cjs.map +1 -1
  467. package/dist/production/src/model/commands/project/UpdateProjectCommand.js.map +1 -1
  468. package/dist/production/src/model/dtos/Password.cjs.map +1 -1
  469. package/dist/production/src/model/dtos/Password.js.map +1 -1
  470. package/dist/production/src/model/mailing/UserMailer.cjs.map +1 -1
  471. package/dist/production/src/model/mailing/UserMailer.js.map +1 -1
  472. package/dist/production/src/model/mailing/templates/ExistingUserInvited.mustache.cjs.map +1 -1
  473. package/dist/production/src/model/mailing/templates/ExistingUserInvited.mustache.js.map +1 -1
  474. package/dist/production/src/model/mailing/templates/NewUserInvited.mustache.cjs.map +1 -1
  475. package/dist/production/src/model/mailing/templates/NewUserInvited.mustache.js.map +1 -1
  476. package/dist/production/src/model/mailing/templates/PasswordReset.mustache.cjs.map +1 -1
  477. package/dist/production/src/model/mailing/templates/PasswordReset.mustache.js.map +1 -1
  478. package/dist/production/src/model/mailing/templates/PasswordlessSignIn.mustache.cjs.map +1 -1
  479. package/dist/production/src/model/mailing/templates/PasswordlessSignIn.mustache.js.map +1 -1
  480. package/dist/production/src/model/mailing/type.cjs.map +1 -1
  481. package/dist/production/src/model/mailing/type.js.map +1 -1
  482. package/dist/production/src/model/queries/apiKey/ApiKeyQuery.cjs.map +1 -1
  483. package/dist/production/src/model/queries/apiKey/ApiKeyQuery.js.map +1 -1
  484. package/dist/production/src/model/queries/configuration/ConfigurationQuery.cjs.map +1 -1
  485. package/dist/production/src/model/queries/configuration/ConfigurationQuery.js.map +1 -1
  486. package/dist/production/src/model/queries/identity/IdentityQuery.cjs.map +1 -1
  487. package/dist/production/src/model/queries/identity/IdentityQuery.js.map +1 -1
  488. package/dist/production/src/model/queries/idp/IdentityProviderBySlugQuery.cjs.map +1 -1
  489. package/dist/production/src/model/queries/idp/IdentityProviderBySlugQuery.js.map +1 -1
  490. package/dist/production/src/model/queries/idp/IdentityProvidersQuery.cjs.map +1 -1
  491. package/dist/production/src/model/queries/idp/IdentityProvidersQuery.js.map +1 -1
  492. package/dist/production/src/model/queries/idp/helpers.cjs.map +1 -1
  493. package/dist/production/src/model/queries/idp/helpers.js.map +1 -1
  494. package/dist/production/src/model/queries/mailTemplate/MailTemplateListQuery.cjs.map +1 -1
  495. package/dist/production/src/model/queries/mailTemplate/MailTemplateListQuery.js.map +1 -1
  496. package/dist/production/src/model/queries/mailTemplate/MailTemplateQuery.cjs.map +1 -1
  497. package/dist/production/src/model/queries/mailTemplate/MailTemplateQuery.js.map +1 -1
  498. package/dist/production/src/model/queries/membership/ProjectMembersQuery.cjs.map +1 -1
  499. package/dist/production/src/model/queries/membership/ProjectMembersQuery.js.map +1 -1
  500. package/dist/production/src/model/queries/membership/ProjectMembershipByIdentityQuery.cjs.map +1 -1
  501. package/dist/production/src/model/queries/membership/ProjectMembershipByIdentityQuery.js.map +1 -1
  502. package/dist/production/src/model/queries/membership/ProjectRolesByIdentityQuery.cjs.map +1 -1
  503. package/dist/production/src/model/queries/membership/ProjectRolesByIdentityQuery.js.map +1 -1
  504. package/dist/production/src/model/queries/membership/ProjectSlugSpecification.cjs.map +1 -1
  505. package/dist/production/src/model/queries/membership/ProjectSlugSpecification.js.map +1 -1
  506. package/dist/production/src/model/queries/person/PersonByIdPQuery.cjs.map +1 -1
  507. package/dist/production/src/model/queries/person/PersonByIdPQuery.js.map +1 -1
  508. package/dist/production/src/model/queries/person/PersonByIdentityBatchQuery.cjs.map +1 -1
  509. package/dist/production/src/model/queries/person/PersonByIdentityBatchQuery.js.map +1 -1
  510. package/dist/production/src/model/queries/person/PersonQuery.cjs.map +1 -1
  511. package/dist/production/src/model/queries/person/PersonQuery.js.map +1 -1
  512. package/dist/production/src/model/queries/person/PersonQueryBuilderFactory.cjs.map +1 -1
  513. package/dist/production/src/model/queries/person/PersonQueryBuilderFactory.js.map +1 -1
  514. package/dist/production/src/model/queries/personToken/PersonTokenQuery.cjs.map +1 -1
  515. package/dist/production/src/model/queries/personToken/PersonTokenQuery.js.map +1 -1
  516. package/dist/production/src/model/queries/project/ProjectBySlugQuery.cjs.map +1 -1
  517. package/dist/production/src/model/queries/project/ProjectBySlugQuery.js.map +1 -1
  518. package/dist/production/src/model/queries/project/ProjectSecretsQuery.cjs.map +1 -1
  519. package/dist/production/src/model/queries/project/ProjectSecretsQuery.js.map +1 -1
  520. package/dist/production/src/model/queries/project/ProjectUpdateTimestampQuery.cjs.map +1 -1
  521. package/dist/production/src/model/queries/project/ProjectUpdateTimestampQuery.js.map +1 -1
  522. package/dist/production/src/model/queries/project/ProjectsByIdentityQuery.cjs.map +1 -1
  523. package/dist/production/src/model/queries/project/ProjectsByIdentityQuery.js.map +1 -1
  524. package/dist/production/src/model/queries/project/ProjectsQuery.cjs.map +1 -1
  525. package/dist/production/src/model/queries/project/ProjectsQuery.js.map +1 -1
  526. package/dist/production/src/model/service/ConfigurationManager.cjs.map +1 -1
  527. package/dist/production/src/model/service/ConfigurationManager.js.map +1 -1
  528. package/dist/production/src/model/service/EmailValidator.cjs.map +1 -1
  529. package/dist/production/src/model/service/EmailValidator.js.map +1 -1
  530. package/dist/production/src/model/service/IDPSignInManager.cjs.map +1 -1
  531. package/dist/production/src/model/service/IDPSignInManager.js.map +1 -1
  532. package/dist/production/src/model/service/InviteManager.cjs.map +1 -1
  533. package/dist/production/src/model/service/InviteManager.js.map +1 -1
  534. package/dist/production/src/model/service/MailTemplateManager.cjs.map +1 -1
  535. package/dist/production/src/model/service/MailTemplateManager.js.map +1 -1
  536. package/dist/production/src/model/service/MembershipValidator.cjs.map +1 -1
  537. package/dist/production/src/model/service/MembershipValidator.js.map +1 -1
  538. package/dist/production/src/model/service/OtpAuthenticator.cjs.map +1 -1
  539. package/dist/production/src/model/service/OtpAuthenticator.js.map +1 -1
  540. package/dist/production/src/model/service/OtpManager.cjs.map +1 -1
  541. package/dist/production/src/model/service/OtpManager.js.map +1 -1
  542. package/dist/production/src/model/service/PasswordChangeManager.cjs.map +1 -1
  543. package/dist/production/src/model/service/PasswordChangeManager.js.map +1 -1
  544. package/dist/production/src/model/service/PasswordResetManager.cjs.map +1 -1
  545. package/dist/production/src/model/service/PasswordResetManager.js.map +1 -1
  546. package/dist/production/src/model/service/PasswordlessSignInManager.cjs.map +1 -1
  547. package/dist/production/src/model/service/PasswordlessSignInManager.js.map +1 -1
  548. package/dist/production/src/model/service/PersonAccessManager.cjs.map +1 -1
  549. package/dist/production/src/model/service/PersonAccessManager.js.map +1 -1
  550. package/dist/production/src/model/service/PersonManager.cjs.map +1 -1
  551. package/dist/production/src/model/service/PersonManager.js.map +1 -1
  552. package/dist/production/src/model/service/ProjectManager.cjs.map +1 -1
  553. package/dist/production/src/model/service/ProjectManager.js.map +1 -1
  554. package/dist/production/src/model/service/ProjectMemberManager.cjs.map +1 -1
  555. package/dist/production/src/model/service/ProjectMemberManager.js.map +1 -1
  556. package/dist/production/src/model/service/RolesManager.cjs.map +1 -1
  557. package/dist/production/src/model/service/RolesManager.js.map +1 -1
  558. package/dist/production/src/model/service/SecretsManager.cjs.map +1 -1
  559. package/dist/production/src/model/service/SecretsManager.js.map +1 -1
  560. package/dist/production/src/model/service/SignInManager.cjs.map +1 -1
  561. package/dist/production/src/model/service/SignInManager.js.map +1 -1
  562. package/dist/production/src/model/service/SignUpManager.cjs.map +1 -1
  563. package/dist/production/src/model/service/SignUpManager.js.map +1 -1
  564. package/dist/production/src/model/service/apiKey/ApiKeyManager.cjs.map +1 -1
  565. package/dist/production/src/model/service/apiKey/ApiKeyManager.js.map +1 -1
  566. package/dist/production/src/model/service/apiKey/ApiKeyService.cjs.map +1 -1
  567. package/dist/production/src/model/service/apiKey/ApiKeyService.js.map +1 -1
  568. package/dist/production/src/model/service/helpers/getPreferredProject.cjs.map +1 -1
  569. package/dist/production/src/model/service/helpers/getPreferredProject.js.map +1 -1
  570. package/dist/production/src/model/service/idp/IDPHandlerRegistry.cjs.map +1 -1
  571. package/dist/production/src/model/service/idp/IDPHandlerRegistry.js.map +1 -1
  572. package/dist/production/src/model/service/idp/IDPManager.cjs.map +1 -1
  573. package/dist/production/src/model/service/idp/IDPManager.js.map +1 -1
  574. package/dist/production/src/model/service/idp/IDPResponseError.cjs.map +1 -1
  575. package/dist/production/src/model/service/idp/IDPResponseError.js.map +1 -1
  576. package/dist/production/src/model/service/idp/IDPValidationError.cjs.map +1 -1
  577. package/dist/production/src/model/service/idp/IDPValidationError.js.map +1 -1
  578. package/dist/production/src/model/service/idp/IdentityProviderNotFoundError.cjs.map +1 -1
  579. package/dist/production/src/model/service/idp/IdentityProviderNotFoundError.js.map +1 -1
  580. package/dist/production/src/model/service/idp/InvalidIDPConfigurationError.cjs.map +1 -1
  581. package/dist/production/src/model/service/idp/InvalidIDPConfigurationError.js.map +1 -1
  582. package/dist/production/src/model/service/idp/providers/AppleProvider.cjs.map +1 -1
  583. package/dist/production/src/model/service/idp/providers/AppleProvider.js.map +1 -1
  584. package/dist/production/src/model/service/idp/providers/FacebookProvider.cjs.map +1 -1
  585. package/dist/production/src/model/service/idp/providers/FacebookProvider.js.map +1 -1
  586. package/dist/production/src/model/service/idp/providers/OIDCHelpers.cjs.map +1 -1
  587. package/dist/production/src/model/service/idp/providers/OIDCHelpers.js.map +1 -1
  588. package/dist/production/src/model/service/idp/providers/OIDCProvider.cjs.map +1 -1
  589. package/dist/production/src/model/service/idp/providers/OIDCProvider.js.map +1 -1
  590. package/dist/production/src/model/service/idp/providers/OIDCTypes.cjs.map +1 -1
  591. package/dist/production/src/model/service/idp/providers/OIDCTypes.js.map +1 -1
  592. package/dist/production/src/model/service/idp/providers/helpers.cjs.map +1 -1
  593. package/dist/production/src/model/service/idp/providers/helpers.js.map +1 -1
  594. package/dist/production/src/model/service/membershipUtils.cjs.map +1 -1
  595. package/dist/production/src/model/service/membershipUtils.js.map +1 -1
  596. package/dist/production/src/model/type/ApiKey.cjs.map +1 -1
  597. package/dist/production/src/model/type/ApiKey.js.map +1 -1
  598. package/dist/production/src/model/utils/DatabaseContext.cjs.map +1 -1
  599. package/dist/production/src/model/utils/DatabaseContext.js.map +1 -1
  600. package/dist/production/src/model/utils/Response.cjs.map +1 -1
  601. package/dist/production/src/model/utils/Response.js.map +1 -1
  602. package/dist/production/src/model/utils/password.cjs.map +1 -1
  603. package/dist/production/src/model/utils/password.js.map +1 -1
  604. package/dist/production/src/model/utils/tokenUtils.cjs.map +1 -1
  605. package/dist/production/src/model/utils/tokenUtils.js.map +1 -1
  606. package/dist/production/src/resolvers/ResolverFactory.cjs.map +1 -1
  607. package/dist/production/src/resolvers/ResolverFactory.js.map +1 -1
  608. package/dist/production/src/resolvers/TenantResolverContextFactory.cjs.map +1 -1
  609. package/dist/production/src/resolvers/TenantResolverContextFactory.js.map +1 -1
  610. package/dist/production/src/resolvers/errorUtils.cjs.map +1 -1
  611. package/dist/production/src/resolvers/errorUtils.js.map +1 -1
  612. package/dist/production/src/resolvers/membershipUtils.cjs.map +1 -1
  613. package/dist/production/src/resolvers/membershipUtils.js.map +1 -1
  614. package/dist/production/src/resolvers/mutation/apiKey/CreateApiKeyMutationResolver.cjs.map +1 -1
  615. package/dist/production/src/resolvers/mutation/apiKey/CreateApiKeyMutationResolver.js.map +1 -1
  616. package/dist/production/src/resolvers/mutation/apiKey/DisableApiKeyMutationResolver.cjs.map +1 -1
  617. package/dist/production/src/resolvers/mutation/apiKey/DisableApiKeyMutationResolver.js.map +1 -1
  618. package/dist/production/src/resolvers/mutation/configuration/ConfigurationMutationResolver.cjs.map +1 -1
  619. package/dist/production/src/resolvers/mutation/configuration/ConfigurationMutationResolver.js.map +1 -1
  620. package/dist/production/src/resolvers/mutation/identity/GlobalRolesMutationResolver.cjs.map +1 -1
  621. package/dist/production/src/resolvers/mutation/identity/GlobalRolesMutationResolver.js.map +1 -1
  622. package/dist/production/src/resolvers/mutation/idp/AddIDPMutationResolver.cjs.map +1 -1
  623. package/dist/production/src/resolvers/mutation/idp/AddIDPMutationResolver.js.map +1 -1
  624. package/dist/production/src/resolvers/mutation/idp/DisableIDPMutationResolver.cjs.map +1 -1
  625. package/dist/production/src/resolvers/mutation/idp/DisableIDPMutationResolver.js.map +1 -1
  626. package/dist/production/src/resolvers/mutation/idp/EnableIDPMutationResolver.cjs.map +1 -1
  627. package/dist/production/src/resolvers/mutation/idp/EnableIDPMutationResolver.js.map +1 -1
  628. package/dist/production/src/resolvers/mutation/idp/UpdateIDPMutationResolver.cjs.map +1 -1
  629. package/dist/production/src/resolvers/mutation/idp/UpdateIDPMutationResolver.js.map +1 -1
  630. package/dist/production/src/resolvers/mutation/mailTemplates/MailTemplateMutationResolver.cjs.map +1 -1
  631. package/dist/production/src/resolvers/mutation/mailTemplates/MailTemplateMutationResolver.js.map +1 -1
  632. package/dist/production/src/resolvers/mutation/person/ChangePasswordMutationResolver.cjs.map +1 -1
  633. package/dist/production/src/resolvers/mutation/person/ChangePasswordMutationResolver.js.map +1 -1
  634. package/dist/production/src/resolvers/mutation/person/ChangeProfileMutationResolver.cjs.map +1 -1
  635. package/dist/production/src/resolvers/mutation/person/ChangeProfileMutationResolver.js.map +1 -1
  636. package/dist/production/src/resolvers/mutation/person/DisablePersonMutationResolver.cjs.map +1 -1
  637. package/dist/production/src/resolvers/mutation/person/DisablePersonMutationResolver.js.map +1 -1
  638. package/dist/production/src/resolvers/mutation/person/IDPMutationResolver.cjs.map +1 -1
  639. package/dist/production/src/resolvers/mutation/person/IDPMutationResolver.js.map +1 -1
  640. package/dist/production/src/resolvers/mutation/person/InviteMutationResolver.cjs.map +1 -1
  641. package/dist/production/src/resolvers/mutation/person/InviteMutationResolver.js.map +1 -1
  642. package/dist/production/src/resolvers/mutation/person/OtpMutationResolver.cjs.map +1 -1
  643. package/dist/production/src/resolvers/mutation/person/OtpMutationResolver.js.map +1 -1
  644. package/dist/production/src/resolvers/mutation/person/PasswordlessMutationResolver.cjs.map +1 -1
  645. package/dist/production/src/resolvers/mutation/person/PasswordlessMutationResolver.js.map +1 -1
  646. package/dist/production/src/resolvers/mutation/person/ResetPasswordMutationResolver.cjs.map +1 -1
  647. package/dist/production/src/resolvers/mutation/person/ResetPasswordMutationResolver.js.map +1 -1
  648. package/dist/production/src/resolvers/mutation/person/SignInMutationResolver.cjs.map +1 -1
  649. package/dist/production/src/resolvers/mutation/person/SignInMutationResolver.js.map +1 -1
  650. package/dist/production/src/resolvers/mutation/person/SignOutMutationResolver.cjs.map +1 -1
  651. package/dist/production/src/resolvers/mutation/person/SignOutMutationResolver.js.map +1 -1
  652. package/dist/production/src/resolvers/mutation/person/SignUpMutationResolver.cjs.map +1 -1
  653. package/dist/production/src/resolvers/mutation/person/SignUpMutationResolver.js.map +1 -1
  654. package/dist/production/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.cjs.map +1 -1
  655. package/dist/production/src/resolvers/mutation/person/TogglePasswordlessMutationResolver.js.map +1 -1
  656. package/dist/production/src/resolvers/mutation/project/CreateProjectMutationResolver.cjs.map +1 -1
  657. package/dist/production/src/resolvers/mutation/project/CreateProjectMutationResolver.js.map +1 -1
  658. package/dist/production/src/resolvers/mutation/project/SetProjectSecretMutationResolver.cjs.map +1 -1
  659. package/dist/production/src/resolvers/mutation/project/SetProjectSecretMutationResolver.js.map +1 -1
  660. package/dist/production/src/resolvers/mutation/project/UpdateProjectMutationResolver.cjs.map +1 -1
  661. package/dist/production/src/resolvers/mutation/project/UpdateProjectMutationResolver.js.map +1 -1
  662. package/dist/production/src/resolvers/mutation/projectMember/AddProjectMemberMutationResolver.cjs.map +1 -1
  663. package/dist/production/src/resolvers/mutation/projectMember/AddProjectMemberMutationResolver.js.map +1 -1
  664. package/dist/production/src/resolvers/mutation/projectMember/RemoveProjectMemberMutationResolver.cjs.map +1 -1
  665. package/dist/production/src/resolvers/mutation/projectMember/RemoveProjectMemberMutationResolver.js.map +1 -1
  666. package/dist/production/src/resolvers/mutation/projectMember/UpdateProjectMemberMutationResolver.cjs.map +1 -1
  667. package/dist/production/src/resolvers/mutation/projectMember/UpdateProjectMemberMutationResolver.js.map +1 -1
  668. package/dist/production/src/resolvers/query/ConfigurationQueryResolver.cjs.map +1 -1
  669. package/dist/production/src/resolvers/query/ConfigurationQueryResolver.js.map +1 -1
  670. package/dist/production/src/resolvers/query/IDPQueryResolver.cjs.map +1 -1
  671. package/dist/production/src/resolvers/query/IDPQueryResolver.js.map +1 -1
  672. package/dist/production/src/resolvers/query/MailTemplateQueryResolver.cjs.map +1 -1
  673. package/dist/production/src/resolvers/query/MailTemplateQueryResolver.js.map +1 -1
  674. package/dist/production/src/resolvers/query/MeQueryResolver.cjs.map +1 -1
  675. package/dist/production/src/resolvers/query/MeQueryResolver.js.map +1 -1
  676. package/dist/production/src/resolvers/query/PersonQueryResolver.cjs.map +1 -1
  677. package/dist/production/src/resolvers/query/PersonQueryResolver.js.map +1 -1
  678. package/dist/production/src/resolvers/query/ProjectMembersQueryResolver.cjs.map +1 -1
  679. package/dist/production/src/resolvers/query/ProjectMembersQueryResolver.js.map +1 -1
  680. package/dist/production/src/resolvers/query/ProjectQueryResolver.cjs.map +1 -1
  681. package/dist/production/src/resolvers/query/ProjectQueryResolver.js.map +1 -1
  682. package/dist/production/src/resolvers/responseHelpers/PersonResponseFactory.cjs.map +1 -1
  683. package/dist/production/src/resolvers/responseHelpers/PersonResponseFactory.js.map +1 -1
  684. package/dist/production/src/resolvers/responseHelpers/SignInResponseFactory.cjs.map +1 -1
  685. package/dist/production/src/resolvers/responseHelpers/SignInResponseFactory.js.map +1 -1
  686. package/dist/production/src/resolvers/types/IdentityTypeResolver.cjs.map +1 -1
  687. package/dist/production/src/resolvers/types/IdentityTypeResolver.js.map +1 -1
  688. package/dist/production/src/resolvers/types/ProjectTypeResolver.cjs.map +1 -1
  689. package/dist/production/src/resolvers/types/ProjectTypeResolver.js.map +1 -1
  690. package/dist/production/src/schema/tenant.graphql.cjs.map +1 -1
  691. package/dist/production/src/utils/Mailer.cjs.map +1 -1
  692. package/dist/production/src/utils/Mailer.js.map +1 -1
  693. package/dist/production/src/utils/TemplateRenderer.cjs.map +1 -1
  694. package/dist/production/src/utils/TemplateRenderer.js.map +1 -1
  695. package/dist/production/src/utils/array.cjs.map +1 -1
  696. package/dist/production/src/utils/array.js.map +1 -1
  697. package/dist/production/src/utils/batchQuery.cjs.map +1 -1
  698. package/dist/production/src/utils/batchQuery.js.map +1 -1
  699. package/dist/tests/src/mailer.d.ts.map +1 -1
  700. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  701. package/dist/types/tsconfig.tsbuildinfo +1 -1
  702. package/package.json +13 -13
  703. package/src/model/service/OtpAuthenticator.ts +1 -1
  704. package/tests/cases/integration/mocked/addProjectMemberMutation.test.ts +1 -1
  705. package/tests/cases/integration/mocked/changeMyPasswordMutation.test.ts +2 -2
  706. package/tests/cases/integration/mocked/changeMyProfileMutation.test.ts +2 -2
  707. package/tests/cases/integration/mocked/changePasswordMutation.test.ts +1 -1
  708. package/tests/cases/integration/mocked/changeProfileMutation.test.ts +2 -2
  709. package/tests/cases/integration/mocked/confirmOtpMutation.test.ts +1 -1
  710. package/tests/cases/integration/mocked/createApiKeyMutation.test.ts +1 -1
  711. package/tests/cases/integration/mocked/createSessionKeyMutation.test.ts +1 -1
  712. package/tests/cases/integration/mocked/disableApiKeyMutation.ts +1 -1
  713. package/tests/cases/integration/mocked/inviteMutations.test.ts +1 -1
  714. package/tests/cases/integration/mocked/listProjectMembersQuery.test.ts +1 -1
  715. package/tests/cases/integration/mocked/personByIdQuery.test.ts +1 -1
  716. package/tests/cases/integration/mocked/prepareOtpMutation.test.ts +3 -3
  717. package/tests/cases/integration/mocked/removeProjectMemberMutation.test.ts +1 -1
  718. package/tests/cases/integration/mocked/signInIdpMutation.test.ts +1 -1
  719. package/tests/cases/integration/mocked/signInMutation.test.ts +1 -1
  720. package/tests/cases/integration/mocked/signOutMutation.test.ts +1 -1
  721. package/tests/cases/integration/mocked/signUpMutation.test.ts +1 -1
  722. package/tests/cases/integration/mocked/updateProjectMemberMutation.test.ts +1 -1
  723. package/tests/cases/migrations/2020-06-08-134000-tenant-credentials.test.ts +5 -3
  724. package/tests/cases/unit/authorization/membershipAwareAccessNode.test.ts +9 -9
  725. package/tests/cases/unit/authorization/membershipMatcher.test.ts +10 -10
  726. package/tests/src/mailer.ts +3 -4
  727. package/tests/src/testGraphql.ts +2 -2
  728. package/dist/tests/src/testTenantDb.d.ts +0 -31
  729. package/dist/tests/src/testTenantDb.d.ts.map +0 -1
  730. package/tests/src/testTenantDb.ts +0 -202
@@ -1 +1 @@
1
- {"version":3,"file":"IDPManager.js","sources":["../../../../../../../packages/engine-tenant-api/src/model/service/idp/IDPManager.ts"],"sourcesContent":["import { Response, ResponseError, ResponseOk } from '../../utils/Response'\nimport { AddIdpErrorCode, DisableIdpErrorCode, EnableIdpErrorCode, UpdateIdpErrorCode } from '../../../schema'\nimport { DatabaseContext } from '../../utils'\nimport { IdentityProviderData } from '../../type'\nimport { IdentityProviderBySlugQuery, IdentityProvidersQuery } from '../../queries'\nimport { CreateIdpCommand } from '../../commands/idp/CreateIdpCommand'\nimport { IDPHandlerRegistry } from './IDPHandlerRegistry'\nimport { IdentityProviderNotFoundError } from './IdentityProviderNotFoundError'\nimport { InvalidIDPConfigurationError } from './InvalidIDPConfigurationError'\nimport { DisableIdpCommand } from '../../commands/idp/DisableIdpCommand'\nimport { EnableIdpCommand } from '../../commands/idp/EnableIdpCommand'\nimport { UpdateIdpCommand, UpdateIdpData } from '../../commands/idp/UpdateIdpCommand'\nimport { IdentityProviderDto } from '../../queries/idp/types'\n\nexport class IDPManager {\n\tconstructor(\n\t\tprivate readonly idpRegistry: IDPHandlerRegistry,\n\t) {\n\t}\n\n\tpublic async addIDP(db: DatabaseContext, idp: IdentityProviderData): Promise<RegisterIDPResponse> {\n\t\treturn await db.transaction(async (db): Promise<RegisterIDPResponse> => {\n\t\t\ttry {\n\t\t\t\tconst providerService = this.idpRegistry.getHandler(idp.type)\n\t\t\t\tproviderService.validateConfiguration(idp.configuration)\n\t\t\t} catch (e) {\n\t\t\t\tif (e instanceof IdentityProviderNotFoundError) {\n\t\t\t\t\treturn new ResponseError('UNKNOWN_TYPE', `IDP type ${idp.type} not found`)\n\t\t\t\t}\n\t\t\t\tif (e instanceof InvalidIDPConfigurationError) {\n\t\t\t\t\treturn new ResponseError('INVALID_CONFIGURATION', `Invalid IDP configuration: ${e.message}`)\n\t\t\t\t}\n\t\t\t\tthrow e\n\t\t\t}\n\n\t\t\tconst existing = await db.queryHandler.fetch(new IdentityProviderBySlugQuery(idp.slug))\n\t\t\tif (existing) {\n\t\t\t\treturn new ResponseError('ALREADY_EXISTS', `IDP with slug ${idp.slug} already exists`)\n\t\t\t}\n\t\t\tawait db.commandBus.execute(new CreateIdpCommand(idp))\n\t\t\treturn new ResponseOk(null)\n\t\t})\n\t}\n\n\tpublic async disableIDP(db: DatabaseContext, slug: string): Promise<DisableIDPResponse> {\n\t\treturn await db.transaction(async db => {\n\t\t\tconst existing = await db.queryHandler.fetch(new IdentityProviderBySlugQuery(slug))\n\t\t\tif (!existing) {\n\t\t\t\treturn new ResponseError('NOT_FOUND', `IDP ${slug} not found`)\n\t\t\t}\n\t\t\tif (!existing.disabledAt) {\n\t\t\t\tawait db.commandBus.execute(new DisableIdpCommand(existing.id))\n\t\t\t}\n\t\t\treturn new ResponseOk(null)\n\t\t})\n\t}\n\n\n\tpublic async enableIDP(db: DatabaseContext, slug: string): Promise<EnableIDPResponse> {\n\t\treturn await db.transaction(async db => {\n\t\t\tconst existing = await db.queryHandler.fetch(new IdentityProviderBySlugQuery(slug))\n\t\t\tif (!existing) {\n\t\t\t\treturn new ResponseError('NOT_FOUND', `IDP ${slug} not found`)\n\t\t\t}\n\t\t\tif (existing.disabledAt) {\n\t\t\t\tawait db.commandBus.execute(new EnableIdpCommand(existing.id))\n\t\t\t}\n\t\t\treturn new ResponseOk(null)\n\t\t})\n\t}\n\n\tpublic async updateIDP(db: DatabaseContext, slug: string, data: UpdateIdpData, mergeConfiguration: boolean): Promise<UpdateIDPResponse> {\n\t\treturn await db.transaction(async db => {\n\t\t\tconst existing = await db.queryHandler.fetch(new IdentityProviderBySlugQuery(slug))\n\t\t\tif (!existing) {\n\t\t\t\treturn new ResponseError('NOT_FOUND', `IDP ${slug} not found`)\n\t\t\t}\n\n\t\t\tconst newConfiguration = (() => {\n\t\t\t\tif (!data.configuration) {\n\t\t\t\t\treturn existing.configuration\n\t\t\t\t}\n\t\t\t\tif (!mergeConfiguration) {\n\t\t\t\t\treturn data.configuration\n\t\t\t\t}\n\n\t\t\t\tconst newConfiguration = { ...existing.configuration }\n\t\t\t\tfor (const [key, value] of Object.entries(data.configuration)) {\n\t\t\t\t\tif (value === null) {\n\t\t\t\t\t\tdelete newConfiguration[key]\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnewConfiguration[key] = value\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn newConfiguration\n\t\t\t})()\n\n\t\t\ttry {\n\t\t\t\tconst type = data.type ?? existing.type\n\t\t\t\tconst providerService = this.idpRegistry.getHandler(type)\n\t\t\t\tif (data.configuration !== undefined || type !== existing.type) {\n\t\t\t\t\tproviderService.validateConfiguration(newConfiguration)\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tif (e instanceof InvalidIDPConfigurationError) {\n\t\t\t\t\treturn new ResponseError('INVALID_CONFIGURATION', `Invalid IDP configuration: ${e.message}`)\n\t\t\t\t}\n\t\t\t\tthrow e\n\t\t\t}\n\n\t\t\tawait db.commandBus.execute(new UpdateIdpCommand(existing.id, {\n\t\t\t\t...data,\n\t\t\t\tconfiguration: data.configuration ? newConfiguration : undefined,\n\t\t\t}))\n\n\t\t\treturn new ResponseOk(null)\n\t\t})\n\t}\n\n\tpublic async listIDP(db: DatabaseContext): Promise<IdentityProviderDto[]> {\n\t\tconst result = await db.queryHandler.fetch(new IdentityProvidersQuery())\n\t\treturn result.map(it => {\n\t\t\tconst providerService = this.idpRegistry.getHandlerOrNull(it.type)\n\t\t\tconst configuration = providerService?.getPublicConfiguration\n\t\t\t\t? providerService.getPublicConfiguration(it.configuration)\n\t\t\t\t: it.configuration\n\n\t\t\treturn { ...it, configuration }\n\t\t})\n\t}\n}\n\nexport type RegisterIDPResponse = Response<null, AddIdpErrorCode>\nexport type DisableIDPResponse = Response<null, DisableIdpErrorCode>\nexport type EnableIDPResponse = Response<null, EnableIdpErrorCode>\nexport type UpdateIDPResponse = Response<null, UpdateIdpErrorCode>\n"],"names":["db","newConfiguration"],"mappings":"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"}
1
+ {"version":3,"file":"IDPManager.js","sources":["../../../../../../../packages/engine-tenant-api/src/model/service/idp/IDPManager.ts"],"sourcesContent":["import { Response, ResponseError, ResponseOk } from '../../utils/Response'\nimport { AddIdpErrorCode, DisableIdpErrorCode, EnableIdpErrorCode, UpdateIdpErrorCode } from '../../../schema'\nimport { DatabaseContext } from '../../utils'\nimport { IdentityProviderData } from '../../type'\nimport { IdentityProviderBySlugQuery, IdentityProvidersQuery } from '../../queries'\nimport { CreateIdpCommand } from '../../commands/idp/CreateIdpCommand'\nimport { IDPHandlerRegistry } from './IDPHandlerRegistry'\nimport { IdentityProviderNotFoundError } from './IdentityProviderNotFoundError'\nimport { InvalidIDPConfigurationError } from './InvalidIDPConfigurationError'\nimport { DisableIdpCommand } from '../../commands/idp/DisableIdpCommand'\nimport { EnableIdpCommand } from '../../commands/idp/EnableIdpCommand'\nimport { UpdateIdpCommand, UpdateIdpData } from '../../commands/idp/UpdateIdpCommand'\nimport { IdentityProviderDto } from '../../queries/idp/types'\n\nexport class IDPManager {\n\tconstructor(\n\t\tprivate readonly idpRegistry: IDPHandlerRegistry,\n\t) {\n\t}\n\n\tpublic async addIDP(db: DatabaseContext, idp: IdentityProviderData): Promise<RegisterIDPResponse> {\n\t\treturn await db.transaction(async (db): Promise<RegisterIDPResponse> => {\n\t\t\ttry {\n\t\t\t\tconst providerService = this.idpRegistry.getHandler(idp.type)\n\t\t\t\tproviderService.validateConfiguration(idp.configuration)\n\t\t\t} catch (e) {\n\t\t\t\tif (e instanceof IdentityProviderNotFoundError) {\n\t\t\t\t\treturn new ResponseError('UNKNOWN_TYPE', `IDP type ${idp.type} not found`)\n\t\t\t\t}\n\t\t\t\tif (e instanceof InvalidIDPConfigurationError) {\n\t\t\t\t\treturn new ResponseError('INVALID_CONFIGURATION', `Invalid IDP configuration: ${e.message}`)\n\t\t\t\t}\n\t\t\t\tthrow e\n\t\t\t}\n\n\t\t\tconst existing = await db.queryHandler.fetch(new IdentityProviderBySlugQuery(idp.slug))\n\t\t\tif (existing) {\n\t\t\t\treturn new ResponseError('ALREADY_EXISTS', `IDP with slug ${idp.slug} already exists`)\n\t\t\t}\n\t\t\tawait db.commandBus.execute(new CreateIdpCommand(idp))\n\t\t\treturn new ResponseOk(null)\n\t\t})\n\t}\n\n\tpublic async disableIDP(db: DatabaseContext, slug: string): Promise<DisableIDPResponse> {\n\t\treturn await db.transaction(async db => {\n\t\t\tconst existing = await db.queryHandler.fetch(new IdentityProviderBySlugQuery(slug))\n\t\t\tif (!existing) {\n\t\t\t\treturn new ResponseError('NOT_FOUND', `IDP ${slug} not found`)\n\t\t\t}\n\t\t\tif (!existing.disabledAt) {\n\t\t\t\tawait db.commandBus.execute(new DisableIdpCommand(existing.id))\n\t\t\t}\n\t\t\treturn new ResponseOk(null)\n\t\t})\n\t}\n\n\n\tpublic async enableIDP(db: DatabaseContext, slug: string): Promise<EnableIDPResponse> {\n\t\treturn await db.transaction(async db => {\n\t\t\tconst existing = await db.queryHandler.fetch(new IdentityProviderBySlugQuery(slug))\n\t\t\tif (!existing) {\n\t\t\t\treturn new ResponseError('NOT_FOUND', `IDP ${slug} not found`)\n\t\t\t}\n\t\t\tif (existing.disabledAt) {\n\t\t\t\tawait db.commandBus.execute(new EnableIdpCommand(existing.id))\n\t\t\t}\n\t\t\treturn new ResponseOk(null)\n\t\t})\n\t}\n\n\tpublic async updateIDP(db: DatabaseContext, slug: string, data: UpdateIdpData, mergeConfiguration: boolean): Promise<UpdateIDPResponse> {\n\t\treturn await db.transaction(async db => {\n\t\t\tconst existing = await db.queryHandler.fetch(new IdentityProviderBySlugQuery(slug))\n\t\t\tif (!existing) {\n\t\t\t\treturn new ResponseError('NOT_FOUND', `IDP ${slug} not found`)\n\t\t\t}\n\n\t\t\tconst newConfiguration = (() => {\n\t\t\t\tif (!data.configuration) {\n\t\t\t\t\treturn existing.configuration\n\t\t\t\t}\n\t\t\t\tif (!mergeConfiguration) {\n\t\t\t\t\treturn data.configuration\n\t\t\t\t}\n\n\t\t\t\tconst newConfiguration = { ...existing.configuration }\n\t\t\t\tfor (const [key, value] of Object.entries(data.configuration)) {\n\t\t\t\t\tif (value === null) {\n\t\t\t\t\t\tdelete newConfiguration[key]\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnewConfiguration[key] = value\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn newConfiguration\n\t\t\t})()\n\n\t\t\ttry {\n\t\t\t\tconst type = data.type ?? existing.type\n\t\t\t\tconst providerService = this.idpRegistry.getHandler(type)\n\t\t\t\tif (data.configuration !== undefined || type !== existing.type) {\n\t\t\t\t\tproviderService.validateConfiguration(newConfiguration)\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tif (e instanceof InvalidIDPConfigurationError) {\n\t\t\t\t\treturn new ResponseError('INVALID_CONFIGURATION', `Invalid IDP configuration: ${e.message}`)\n\t\t\t\t}\n\t\t\t\tthrow e\n\t\t\t}\n\n\t\t\tawait db.commandBus.execute(new UpdateIdpCommand(existing.id, {\n\t\t\t\t...data,\n\t\t\t\tconfiguration: data.configuration ? newConfiguration : undefined,\n\t\t\t}))\n\n\t\t\treturn new ResponseOk(null)\n\t\t})\n\t}\n\n\tpublic async listIDP(db: DatabaseContext): Promise<IdentityProviderDto[]> {\n\t\tconst result = await db.queryHandler.fetch(new IdentityProvidersQuery())\n\t\treturn result.map(it => {\n\t\t\tconst providerService = this.idpRegistry.getHandlerOrNull(it.type)\n\t\t\tconst configuration = providerService?.getPublicConfiguration\n\t\t\t\t? providerService.getPublicConfiguration(it.configuration)\n\t\t\t\t: it.configuration\n\n\t\t\treturn { ...it, configuration }\n\t\t})\n\t}\n}\n\nexport type RegisterIDPResponse = Response<null, AddIdpErrorCode>\nexport type DisableIDPResponse = Response<null, DisableIdpErrorCode>\nexport type EnableIDPResponse = Response<null, EnableIdpErrorCode>\nexport type UpdateIDPResponse = Response<null, UpdateIdpErrorCode>\n"],"names":["db","newConfiguration"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"IDPResponseError.cjs","sources":["../../../../../../../packages/engine-tenant-api/src/model/service/idp/IDPResponseError.ts"],"sourcesContent":["export class IDPResponseError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message)\n\t}\n}\n"],"names":[],"mappings":";;AAAO,MAAM,yBAAyB,MAAM;AAAA,EAC3C,YAAY,SAAiB;AAC5B,UAAM,OAAO;AAAA,EACd;AACD;;"}
1
+ {"version":3,"file":"IDPResponseError.cjs","sources":["../../../../../../../packages/engine-tenant-api/src/model/service/idp/IDPResponseError.ts"],"sourcesContent":["export class IDPResponseError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message)\n\t}\n}\n"],"names":[],"mappings":";;AAAO,MAAM,yBAAyB,MAAM;AAAA,EAC3C,YAAY,SAAiB;AAC5B,UAAM,OAAO;AAAA,EAAA;AAEf;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"IDPResponseError.js","sources":["../../../../../../../packages/engine-tenant-api/src/model/service/idp/IDPResponseError.ts"],"sourcesContent":["export class IDPResponseError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message)\n\t}\n}\n"],"names":[],"mappings":"AAAO,MAAM,yBAAyB,MAAM;AAAA,EAC3C,YAAY,SAAiB;AAC5B,UAAM,OAAO;AAAA,EACd;AACD;"}
1
+ {"version":3,"file":"IDPResponseError.js","sources":["../../../../../../../packages/engine-tenant-api/src/model/service/idp/IDPResponseError.ts"],"sourcesContent":["export class IDPResponseError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message)\n\t}\n}\n"],"names":[],"mappings":"AAAO,MAAM,yBAAyB,MAAM;AAAA,EAC3C,YAAY,SAAiB;AAC5B,UAAM,OAAO;AAAA,EAAA;AAEf;"}
@@ -1 +1 @@
1
- {"version":3,"file":"IDPValidationError.cjs","sources":["../../../../../../../packages/engine-tenant-api/src/model/service/idp/IDPValidationError.ts"],"sourcesContent":["export class IDPValidationError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message)\n\t}\n}\n"],"names":[],"mappings":";;AAAO,MAAM,2BAA2B,MAAM;AAAA,EAC7C,YAAY,SAAiB;AAC5B,UAAM,OAAO;AAAA,EACd;AACD;;"}
1
+ {"version":3,"file":"IDPValidationError.cjs","sources":["../../../../../../../packages/engine-tenant-api/src/model/service/idp/IDPValidationError.ts"],"sourcesContent":["export class IDPValidationError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message)\n\t}\n}\n"],"names":[],"mappings":";;AAAO,MAAM,2BAA2B,MAAM;AAAA,EAC7C,YAAY,SAAiB;AAC5B,UAAM,OAAO;AAAA,EAAA;AAEf;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"IDPValidationError.js","sources":["../../../../../../../packages/engine-tenant-api/src/model/service/idp/IDPValidationError.ts"],"sourcesContent":["export class IDPValidationError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message)\n\t}\n}\n"],"names":[],"mappings":"AAAO,MAAM,2BAA2B,MAAM;AAAA,EAC7C,YAAY,SAAiB;AAC5B,UAAM,OAAO;AAAA,EACd;AACD;"}
1
+ {"version":3,"file":"IDPValidationError.js","sources":["../../../../../../../packages/engine-tenant-api/src/model/service/idp/IDPValidationError.ts"],"sourcesContent":["export class IDPValidationError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message)\n\t}\n}\n"],"names":[],"mappings":"AAAO,MAAM,2BAA2B,MAAM;AAAA,EAC7C,YAAY,SAAiB;AAC5B,UAAM,OAAO;AAAA,EAAA;AAEf;"}
@@ -1 +1 @@
1
- {"version":3,"file":"IdentityProviderNotFoundError.cjs","sources":["../../../../../../../packages/engine-tenant-api/src/model/service/idp/IdentityProviderNotFoundError.ts"],"sourcesContent":["export class IdentityProviderNotFoundError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message)\n\t}\n}\n"],"names":[],"mappings":";;AAAO,MAAM,sCAAsC,MAAM;AAAA,EACxD,YAAY,SAAiB;AAC5B,UAAM,OAAO;AAAA,EACd;AACD;;"}
1
+ {"version":3,"file":"IdentityProviderNotFoundError.cjs","sources":["../../../../../../../packages/engine-tenant-api/src/model/service/idp/IdentityProviderNotFoundError.ts"],"sourcesContent":["export class IdentityProviderNotFoundError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message)\n\t}\n}\n"],"names":[],"mappings":";;AAAO,MAAM,sCAAsC,MAAM;AAAA,EACxD,YAAY,SAAiB;AAC5B,UAAM,OAAO;AAAA,EAAA;AAEf;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"IdentityProviderNotFoundError.js","sources":["../../../../../../../packages/engine-tenant-api/src/model/service/idp/IdentityProviderNotFoundError.ts"],"sourcesContent":["export class IdentityProviderNotFoundError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message)\n\t}\n}\n"],"names":[],"mappings":"AAAO,MAAM,sCAAsC,MAAM;AAAA,EACxD,YAAY,SAAiB;AAC5B,UAAM,OAAO;AAAA,EACd;AACD;"}
1
+ {"version":3,"file":"IdentityProviderNotFoundError.js","sources":["../../../../../../../packages/engine-tenant-api/src/model/service/idp/IdentityProviderNotFoundError.ts"],"sourcesContent":["export class IdentityProviderNotFoundError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message)\n\t}\n}\n"],"names":[],"mappings":"AAAO,MAAM,sCAAsC,MAAM;AAAA,EACxD,YAAY,SAAiB;AAC5B,UAAM,OAAO;AAAA,EAAA;AAEf;"}
@@ -1 +1 @@
1
- {"version":3,"file":"InvalidIDPConfigurationError.cjs","sources":["../../../../../../../packages/engine-tenant-api/src/model/service/idp/InvalidIDPConfigurationError.ts"],"sourcesContent":["export class InvalidIDPConfigurationError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message)\n\t}\n}\n"],"names":[],"mappings":";;AAAO,MAAM,qCAAqC,MAAM;AAAA,EACvD,YAAY,SAAiB;AAC5B,UAAM,OAAO;AAAA,EACd;AACD;;"}
1
+ {"version":3,"file":"InvalidIDPConfigurationError.cjs","sources":["../../../../../../../packages/engine-tenant-api/src/model/service/idp/InvalidIDPConfigurationError.ts"],"sourcesContent":["export class InvalidIDPConfigurationError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message)\n\t}\n}\n"],"names":[],"mappings":";;AAAO,MAAM,qCAAqC,MAAM;AAAA,EACvD,YAAY,SAAiB;AAC5B,UAAM,OAAO;AAAA,EAAA;AAEf;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"InvalidIDPConfigurationError.js","sources":["../../../../../../../packages/engine-tenant-api/src/model/service/idp/InvalidIDPConfigurationError.ts"],"sourcesContent":["export class InvalidIDPConfigurationError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message)\n\t}\n}\n"],"names":[],"mappings":"AAAO,MAAM,qCAAqC,MAAM;AAAA,EACvD,YAAY,SAAiB;AAC5B,UAAM,OAAO;AAAA,EACd;AACD;"}
1
+ {"version":3,"file":"InvalidIDPConfigurationError.js","sources":["../../../../../../../packages/engine-tenant-api/src/model/service/idp/InvalidIDPConfigurationError.ts"],"sourcesContent":["export class InvalidIDPConfigurationError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message)\n\t}\n}\n"],"names":[],"mappings":"AAAO,MAAM,qCAAqC,MAAM;AAAA,EACvD,YAAY,SAAiB;AAC5B,UAAM,OAAO;AAAA,EAAA;AAEf;"}
@@ -1 +1 @@
1
- {"version":3,"file":"AppleProvider.cjs","sources":["../../../../../../../../packages/engine-tenant-api/src/model/service/idp/providers/AppleProvider.ts"],"sourcesContent":["import * as Typesafe from '@contember/typesafe'\nimport { IdentityProviderHandler, IDPResponse, InitIDPAuthResult } from '../IdentityProviderHandler'\nimport { OIDCConfiguration, OIDCConfigurationOptions, OIDCInitData, OIDCResponseData, OIDCSessionData } from './OIDCTypes'\nimport { catchTypesafe } from './helpers'\nimport { IDPValidationError } from '../IDPValidationError'\nimport { InvalidIDPConfigurationError } from '../InvalidIDPConfigurationError'\nimport { handleOIDCResponse, initOIDCAuth } from './OIDCHelpers'\nimport { Client, Issuer } from 'openid-client'\nimport { importPKCS8, SignJWT } from 'jose'\n\nexport const AppleConfiguration = Typesafe.intersection(\n\tTypesafe.object({\n\t\tkeyId: Typesafe.string,\n\t\tteamId: Typesafe.string,\n\t\tclientId: Typesafe.string,\n\t\tprivateKey: Typesafe.string,\n\t}),\n\tOIDCConfigurationOptions,\n)\n\ntype AppleConfiguration = ReturnType<typeof AppleConfiguration>\n\nconst APPLE_OIDC_CONFIGURATION_ENDPOINT = 'https://appleid.apple.com/.well-known/openid-configuration'\n\nexport class AppleProvider implements IdentityProviderHandler<AppleConfiguration> {\n\tprivate issuer: Issuer<Client> | undefined\n\n\tvalidateConfiguration = catchTypesafe(AppleConfiguration, InvalidIDPConfigurationError)\n\n\tpublic async initAuth(configuration: AppleConfiguration, data: unknown): Promise<InitIDPAuthResult> {\n\t\tconst initData = catchTypesafe(OIDCInitData, IDPValidationError)(data)\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn await initOIDCAuth(client, {\n\t\t\tscope: configuration.scope ?? configuration.claims,\n\t\t\t...initData,\n\t\t})\n\t}\n\n\tpublic async processResponse(configuration: AppleConfiguration, data: unknown): Promise<IDPResponse> {\n\t\tconst responseData = catchTypesafe(OIDCResponseData, IDPValidationError)(data)\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn await handleOIDCResponse(client, responseData)\n\t}\n\n\tgetPublicConfiguration({ privateKey, ...config }: AppleConfiguration): Partial<AppleConfiguration> {\n\t\treturn config\n\t}\n\n\tprivate async createOIDCClient(configuration: AppleConfiguration): Promise<Client> {\n\t\tthis.issuer ??= await Issuer.discover(APPLE_OIDC_CONFIGURATION_ENDPOINT)\n\t\tconst privateKey = await importPKCS8(configuration.privateKey, 'ES256')\n\n\t\tconst jwt = await new SignJWT({})\n\t\t\t.setProtectedHeader({ alg: 'ES256', typ: 'JWT', kid: configuration.keyId })\n\t\t\t.setIssuedAt()\n\t\t\t.setIssuer(configuration.teamId)\n\t\t\t.setAudience('https://appleid.apple.com')\n\t\t\t.setSubject(configuration.clientId)\n\t\t\t.setExpirationTime('10m')\n\t\t\t.sign(privateKey)\n\n\t\treturn new this.issuer.Client(\n\t\t\t{\n\t\t\t\tclient_id: configuration.clientId,\n\t\t\t\tclient_secret: jwt,\n\t\t\t\tresponse_types: [configuration.responseType || 'code'],\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{\n\t\t\t\tadditionalAuthorizedParties: [...(configuration.additionalAuthorizedParties ?? [])],\n\t\t\t},\n\t\t)\n\t}\n}\n"],"names":["Typesafe","OIDCConfigurationOptions","catchTypesafe","InvalidIDPConfigurationError","OIDCInitData","IDPValidationError","initOIDCAuth","OIDCResponseData","handleOIDCResponse","Issuer","importPKCS8","SignJWT"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUO,MAAM,qBAAqBA,oBAAS;AAAA,EAC1CA,oBAAS,OAAO;AAAA,IACf,OAAOA,oBAAS;AAAA,IAChB,QAAQA,oBAAS;AAAA,IACjB,UAAUA,oBAAS;AAAA,IACnB,YAAYA,oBAAS;AAAA,EAAA,CACrB;AAAA,EACDC,UAAA;AACD;AAIA,MAAM,oCAAoC;AAEnC,MAAM,cAAqE;AAAA,EAA3E,cAAA;AACE,kBAAA,MAAA,QAAA;AAEgB,kBAAA,MAAA,yBAAAC,QAAA,cAAc,oBAAoBC,6BAA4B,4BAAA,CAAA;AAAA,EAAA;AAAA,EAEtF,MAAa,SAAS,eAAmC,MAA2C;AACnG,UAAM,WAAWD,QAAAA,cAAcE,UAAAA,cAAcC,mBAAAA,kBAAkB,EAAE,IAAI;AACrE,UAAM,SAAS,MAAM,KAAK,iBAAiB,aAAa;AACjD,WAAA,MAAMC,yBAAa,QAAQ;AAAA,MACjC,OAAO,cAAc,SAAS,cAAc;AAAA,MAC5C,GAAG;AAAA,IAAA,CACH;AAAA,EACF;AAAA,EAEA,MAAa,gBAAgB,eAAmC,MAAqC;AACpG,UAAM,eAAeJ,QAAAA,cAAcK,UAAAA,kBAAkBF,mBAAAA,kBAAkB,EAAE,IAAI;AAC7E,UAAM,SAAS,MAAM,KAAK,iBAAiB,aAAa;AACjD,WAAA,MAAMG,YAAmB,mBAAA,QAAQ,YAAY;AAAA,EACrD;AAAA,EAEA,uBAAuB,EAAE,YAAY,GAAG,UAA2D;AAC3F,WAAA;AAAA,EACR;AAAA,EAEA,MAAc,iBAAiB,eAAoD;AAClF,SAAK,WAAL,KAAK,SAAW,MAAMC,aAAAA,OAAO,SAAS,iCAAiC;AACvE,UAAM,aAAa,MAAMC,KAAY,YAAA,cAAc,YAAY,OAAO;AAEtE,UAAM,MAAM,MAAM,IAAIC,KAAAA,QAAQ,CAAA,CAAE,EAC9B,mBAAmB,EAAE,KAAK,SAAS,KAAK,OAAO,KAAK,cAAc,MAAO,CAAA,EACzE,cACA,UAAU,cAAc,MAAM,EAC9B,YAAY,2BAA2B,EACvC,WAAW,cAAc,QAAQ,EACjC,kBAAkB,KAAK,EACvB,KAAK,UAAU;AAEV,WAAA,IAAI,KAAK,OAAO;AAAA,MACtB;AAAA,QACC,WAAW,cAAc;AAAA,QACzB,eAAe;AAAA,QACf,gBAAgB,CAAC,cAAc,gBAAgB,MAAM;AAAA,MACtD;AAAA,MACA;AAAA,MACA;AAAA,QACC,6BAA6B,CAAC,GAAI,cAAc,+BAA+B,CAAA,CAAG;AAAA,MACnF;AAAA,IAAA;AAAA,EAEF;AACD;;;"}
1
+ {"version":3,"file":"AppleProvider.cjs","sources":["../../../../../../../../packages/engine-tenant-api/src/model/service/idp/providers/AppleProvider.ts"],"sourcesContent":["import * as Typesafe from '@contember/typesafe'\nimport { IdentityProviderHandler, IDPResponse, InitIDPAuthResult } from '../IdentityProviderHandler'\nimport { OIDCConfiguration, OIDCConfigurationOptions, OIDCInitData, OIDCResponseData, OIDCSessionData } from './OIDCTypes'\nimport { catchTypesafe } from './helpers'\nimport { IDPValidationError } from '../IDPValidationError'\nimport { InvalidIDPConfigurationError } from '../InvalidIDPConfigurationError'\nimport { handleOIDCResponse, initOIDCAuth } from './OIDCHelpers'\nimport { Client, Issuer } from 'openid-client'\nimport { importPKCS8, SignJWT } from 'jose'\n\nexport const AppleConfiguration = Typesafe.intersection(\n\tTypesafe.object({\n\t\tkeyId: Typesafe.string,\n\t\tteamId: Typesafe.string,\n\t\tclientId: Typesafe.string,\n\t\tprivateKey: Typesafe.string,\n\t}),\n\tOIDCConfigurationOptions,\n)\n\ntype AppleConfiguration = ReturnType<typeof AppleConfiguration>\n\nconst APPLE_OIDC_CONFIGURATION_ENDPOINT = 'https://appleid.apple.com/.well-known/openid-configuration'\n\nexport class AppleProvider implements IdentityProviderHandler<AppleConfiguration> {\n\tprivate issuer: Issuer<Client> | undefined\n\n\tvalidateConfiguration = catchTypesafe(AppleConfiguration, InvalidIDPConfigurationError)\n\n\tpublic async initAuth(configuration: AppleConfiguration, data: unknown): Promise<InitIDPAuthResult> {\n\t\tconst initData = catchTypesafe(OIDCInitData, IDPValidationError)(data)\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn await initOIDCAuth(client, {\n\t\t\tscope: configuration.scope ?? configuration.claims,\n\t\t\t...initData,\n\t\t})\n\t}\n\n\tpublic async processResponse(configuration: AppleConfiguration, data: unknown): Promise<IDPResponse> {\n\t\tconst responseData = catchTypesafe(OIDCResponseData, IDPValidationError)(data)\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn await handleOIDCResponse(client, responseData)\n\t}\n\n\tgetPublicConfiguration({ privateKey, ...config }: AppleConfiguration): Partial<AppleConfiguration> {\n\t\treturn config\n\t}\n\n\tprivate async createOIDCClient(configuration: AppleConfiguration): Promise<Client> {\n\t\tthis.issuer ??= await Issuer.discover(APPLE_OIDC_CONFIGURATION_ENDPOINT)\n\t\tconst privateKey = await importPKCS8(configuration.privateKey, 'ES256')\n\n\t\tconst jwt = await new SignJWT({})\n\t\t\t.setProtectedHeader({ alg: 'ES256', typ: 'JWT', kid: configuration.keyId })\n\t\t\t.setIssuedAt()\n\t\t\t.setIssuer(configuration.teamId)\n\t\t\t.setAudience('https://appleid.apple.com')\n\t\t\t.setSubject(configuration.clientId)\n\t\t\t.setExpirationTime('10m')\n\t\t\t.sign(privateKey)\n\n\t\treturn new this.issuer.Client(\n\t\t\t{\n\t\t\t\tclient_id: configuration.clientId,\n\t\t\t\tclient_secret: jwt,\n\t\t\t\tresponse_types: [configuration.responseType || 'code'],\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{\n\t\t\t\tadditionalAuthorizedParties: [...(configuration.additionalAuthorizedParties ?? [])],\n\t\t\t},\n\t\t)\n\t}\n}\n"],"names":["Typesafe","OIDCConfigurationOptions","catchTypesafe","InvalidIDPConfigurationError","OIDCInitData","IDPValidationError","initOIDCAuth","OIDCResponseData","handleOIDCResponse","Issuer","importPKCS8","SignJWT"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUO,MAAM,qBAAqBA,oBAAS;AAAA,EAC1CA,oBAAS,OAAO;AAAA,IACf,OAAOA,oBAAS;AAAA,IAChB,QAAQA,oBAAS;AAAA,IACjB,UAAUA,oBAAS;AAAA,IACnB,YAAYA,oBAAS;AAAA,EAAA,CACrB;AAAA,EACDC,UAAAA;AACD;AAIA,MAAM,oCAAoC;AAEnC,MAAM,cAAqE;AAAA,EAA3E,cAAA;AACE,kBAAA,MAAA,QAAA;AAEgB,kBAAA,MAAA,yBAAAC,QAAA,cAAc,oBAAoBC,6BAA4B,4BAAA,CAAA;AAAA,EAAA;AAAA,EAEtF,MAAa,SAAS,eAAmC,MAA2C;AACnG,UAAM,WAAWD,QAAA,cAAcE,UAAc,cAAAC,mBAAkB,kBAAA,EAAE,IAAI;AACrE,UAAM,SAAS,MAAM,KAAK,iBAAiB,aAAa;AACjD,WAAA,MAAMC,yBAAa,QAAQ;AAAA,MACjC,OAAO,cAAc,SAAS,cAAc;AAAA,MAC5C,GAAG;AAAA,IAAA,CACH;AAAA,EAAA;AAAA,EAGF,MAAa,gBAAgB,eAAmC,MAAqC;AACpG,UAAM,eAAeJ,QAAA,cAAcK,UAAkB,kBAAAF,mBAAkB,kBAAA,EAAE,IAAI;AAC7E,UAAM,SAAS,MAAM,KAAK,iBAAiB,aAAa;AACjD,WAAA,MAAMG,YAAAA,mBAAmB,QAAQ,YAAY;AAAA,EAAA;AAAA,EAGrD,uBAAuB,EAAE,YAAY,GAAG,UAA2D;AAC3F,WAAA;AAAA,EAAA;AAAA,EAGR,MAAc,iBAAiB,eAAoD;AAClF,SAAK,WAAL,KAAK,SAAW,MAAMC,oBAAO,SAAS,iCAAiC;AACvE,UAAM,aAAa,MAAMC,KAAAA,YAAY,cAAc,YAAY,OAAO;AAEtE,UAAM,MAAM,MAAM,IAAIC,KAAA,QAAQ,CAAE,CAAA,EAC9B,mBAAmB,EAAE,KAAK,SAAS,KAAK,OAAO,KAAK,cAAc,MAAM,CAAC,EACzE,YAAA,EACA,UAAU,cAAc,MAAM,EAC9B,YAAY,2BAA2B,EACvC,WAAW,cAAc,QAAQ,EACjC,kBAAkB,KAAK,EACvB,KAAK,UAAU;AAEV,WAAA,IAAI,KAAK,OAAO;AAAA,MACtB;AAAA,QACC,WAAW,cAAc;AAAA,QACzB,eAAe;AAAA,QACf,gBAAgB,CAAC,cAAc,gBAAgB,MAAM;AAAA,MACtD;AAAA,MACA;AAAA,MACA;AAAA,QACC,6BAA6B,CAAC,GAAI,cAAc,+BAA+B,CAAG,CAAA;AAAA,MAAA;AAAA,IAEpF;AAAA,EAAA;AAEF;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"AppleProvider.js","sources":["../../../../../../../../packages/engine-tenant-api/src/model/service/idp/providers/AppleProvider.ts"],"sourcesContent":["import * as Typesafe from '@contember/typesafe'\nimport { IdentityProviderHandler, IDPResponse, InitIDPAuthResult } from '../IdentityProviderHandler'\nimport { OIDCConfiguration, OIDCConfigurationOptions, OIDCInitData, OIDCResponseData, OIDCSessionData } from './OIDCTypes'\nimport { catchTypesafe } from './helpers'\nimport { IDPValidationError } from '../IDPValidationError'\nimport { InvalidIDPConfigurationError } from '../InvalidIDPConfigurationError'\nimport { handleOIDCResponse, initOIDCAuth } from './OIDCHelpers'\nimport { Client, Issuer } from 'openid-client'\nimport { importPKCS8, SignJWT } from 'jose'\n\nexport const AppleConfiguration = Typesafe.intersection(\n\tTypesafe.object({\n\t\tkeyId: Typesafe.string,\n\t\tteamId: Typesafe.string,\n\t\tclientId: Typesafe.string,\n\t\tprivateKey: Typesafe.string,\n\t}),\n\tOIDCConfigurationOptions,\n)\n\ntype AppleConfiguration = ReturnType<typeof AppleConfiguration>\n\nconst APPLE_OIDC_CONFIGURATION_ENDPOINT = 'https://appleid.apple.com/.well-known/openid-configuration'\n\nexport class AppleProvider implements IdentityProviderHandler<AppleConfiguration> {\n\tprivate issuer: Issuer<Client> | undefined\n\n\tvalidateConfiguration = catchTypesafe(AppleConfiguration, InvalidIDPConfigurationError)\n\n\tpublic async initAuth(configuration: AppleConfiguration, data: unknown): Promise<InitIDPAuthResult> {\n\t\tconst initData = catchTypesafe(OIDCInitData, IDPValidationError)(data)\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn await initOIDCAuth(client, {\n\t\t\tscope: configuration.scope ?? configuration.claims,\n\t\t\t...initData,\n\t\t})\n\t}\n\n\tpublic async processResponse(configuration: AppleConfiguration, data: unknown): Promise<IDPResponse> {\n\t\tconst responseData = catchTypesafe(OIDCResponseData, IDPValidationError)(data)\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn await handleOIDCResponse(client, responseData)\n\t}\n\n\tgetPublicConfiguration({ privateKey, ...config }: AppleConfiguration): Partial<AppleConfiguration> {\n\t\treturn config\n\t}\n\n\tprivate async createOIDCClient(configuration: AppleConfiguration): Promise<Client> {\n\t\tthis.issuer ??= await Issuer.discover(APPLE_OIDC_CONFIGURATION_ENDPOINT)\n\t\tconst privateKey = await importPKCS8(configuration.privateKey, 'ES256')\n\n\t\tconst jwt = await new SignJWT({})\n\t\t\t.setProtectedHeader({ alg: 'ES256', typ: 'JWT', kid: configuration.keyId })\n\t\t\t.setIssuedAt()\n\t\t\t.setIssuer(configuration.teamId)\n\t\t\t.setAudience('https://appleid.apple.com')\n\t\t\t.setSubject(configuration.clientId)\n\t\t\t.setExpirationTime('10m')\n\t\t\t.sign(privateKey)\n\n\t\treturn new this.issuer.Client(\n\t\t\t{\n\t\t\t\tclient_id: configuration.clientId,\n\t\t\t\tclient_secret: jwt,\n\t\t\t\tresponse_types: [configuration.responseType || 'code'],\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{\n\t\t\t\tadditionalAuthorizedParties: [...(configuration.additionalAuthorizedParties ?? [])],\n\t\t\t},\n\t\t)\n\t}\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAUO,MAAM,qBAAqB,SAAS;AAAA,EAC1C,SAAS,OAAO;AAAA,IACf,OAAO,SAAS;AAAA,IAChB,QAAQ,SAAS;AAAA,IACjB,UAAU,SAAS;AAAA,IACnB,YAAY,SAAS;AAAA,EAAA,CACrB;AAAA,EACD;AACD;AAIA,MAAM,oCAAoC;AAEnC,MAAM,cAAqE;AAAA,EAA3E,cAAA;AACE,kBAAA,MAAA,QAAA;AAEgB,kBAAA,MAAA,yBAAA,cAAc,oBAAoB,4BAA4B,CAAA;AAAA,EAAA;AAAA,EAEtF,MAAa,SAAS,eAAmC,MAA2C;AACnG,UAAM,WAAW,cAAc,cAAc,kBAAkB,EAAE,IAAI;AACrE,UAAM,SAAS,MAAM,KAAK,iBAAiB,aAAa;AACjD,WAAA,MAAM,aAAa,QAAQ;AAAA,MACjC,OAAO,cAAc,SAAS,cAAc;AAAA,MAC5C,GAAG;AAAA,IAAA,CACH;AAAA,EACF;AAAA,EAEA,MAAa,gBAAgB,eAAmC,MAAqC;AACpG,UAAM,eAAe,cAAc,kBAAkB,kBAAkB,EAAE,IAAI;AAC7E,UAAM,SAAS,MAAM,KAAK,iBAAiB,aAAa;AACjD,WAAA,MAAM,mBAAmB,QAAQ,YAAY;AAAA,EACrD;AAAA,EAEA,uBAAuB,EAAE,YAAY,GAAG,UAA2D;AAC3F,WAAA;AAAA,EACR;AAAA,EAEA,MAAc,iBAAiB,eAAoD;AAClF,SAAK,WAAL,KAAK,SAAW,MAAM,OAAO,SAAS,iCAAiC;AACvE,UAAM,aAAa,MAAM,YAAY,cAAc,YAAY,OAAO;AAEtE,UAAM,MAAM,MAAM,IAAI,QAAQ,CAAA,CAAE,EAC9B,mBAAmB,EAAE,KAAK,SAAS,KAAK,OAAO,KAAK,cAAc,MAAO,CAAA,EACzE,cACA,UAAU,cAAc,MAAM,EAC9B,YAAY,2BAA2B,EACvC,WAAW,cAAc,QAAQ,EACjC,kBAAkB,KAAK,EACvB,KAAK,UAAU;AAEV,WAAA,IAAI,KAAK,OAAO;AAAA,MACtB;AAAA,QACC,WAAW,cAAc;AAAA,QACzB,eAAe;AAAA,QACf,gBAAgB,CAAC,cAAc,gBAAgB,MAAM;AAAA,MACtD;AAAA,MACA;AAAA,MACA;AAAA,QACC,6BAA6B,CAAC,GAAI,cAAc,+BAA+B,CAAA,CAAG;AAAA,MACnF;AAAA,IAAA;AAAA,EAEF;AACD;"}
1
+ {"version":3,"file":"AppleProvider.js","sources":["../../../../../../../../packages/engine-tenant-api/src/model/service/idp/providers/AppleProvider.ts"],"sourcesContent":["import * as Typesafe from '@contember/typesafe'\nimport { IdentityProviderHandler, IDPResponse, InitIDPAuthResult } from '../IdentityProviderHandler'\nimport { OIDCConfiguration, OIDCConfigurationOptions, OIDCInitData, OIDCResponseData, OIDCSessionData } from './OIDCTypes'\nimport { catchTypesafe } from './helpers'\nimport { IDPValidationError } from '../IDPValidationError'\nimport { InvalidIDPConfigurationError } from '../InvalidIDPConfigurationError'\nimport { handleOIDCResponse, initOIDCAuth } from './OIDCHelpers'\nimport { Client, Issuer } from 'openid-client'\nimport { importPKCS8, SignJWT } from 'jose'\n\nexport const AppleConfiguration = Typesafe.intersection(\n\tTypesafe.object({\n\t\tkeyId: Typesafe.string,\n\t\tteamId: Typesafe.string,\n\t\tclientId: Typesafe.string,\n\t\tprivateKey: Typesafe.string,\n\t}),\n\tOIDCConfigurationOptions,\n)\n\ntype AppleConfiguration = ReturnType<typeof AppleConfiguration>\n\nconst APPLE_OIDC_CONFIGURATION_ENDPOINT = 'https://appleid.apple.com/.well-known/openid-configuration'\n\nexport class AppleProvider implements IdentityProviderHandler<AppleConfiguration> {\n\tprivate issuer: Issuer<Client> | undefined\n\n\tvalidateConfiguration = catchTypesafe(AppleConfiguration, InvalidIDPConfigurationError)\n\n\tpublic async initAuth(configuration: AppleConfiguration, data: unknown): Promise<InitIDPAuthResult> {\n\t\tconst initData = catchTypesafe(OIDCInitData, IDPValidationError)(data)\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn await initOIDCAuth(client, {\n\t\t\tscope: configuration.scope ?? configuration.claims,\n\t\t\t...initData,\n\t\t})\n\t}\n\n\tpublic async processResponse(configuration: AppleConfiguration, data: unknown): Promise<IDPResponse> {\n\t\tconst responseData = catchTypesafe(OIDCResponseData, IDPValidationError)(data)\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn await handleOIDCResponse(client, responseData)\n\t}\n\n\tgetPublicConfiguration({ privateKey, ...config }: AppleConfiguration): Partial<AppleConfiguration> {\n\t\treturn config\n\t}\n\n\tprivate async createOIDCClient(configuration: AppleConfiguration): Promise<Client> {\n\t\tthis.issuer ??= await Issuer.discover(APPLE_OIDC_CONFIGURATION_ENDPOINT)\n\t\tconst privateKey = await importPKCS8(configuration.privateKey, 'ES256')\n\n\t\tconst jwt = await new SignJWT({})\n\t\t\t.setProtectedHeader({ alg: 'ES256', typ: 'JWT', kid: configuration.keyId })\n\t\t\t.setIssuedAt()\n\t\t\t.setIssuer(configuration.teamId)\n\t\t\t.setAudience('https://appleid.apple.com')\n\t\t\t.setSubject(configuration.clientId)\n\t\t\t.setExpirationTime('10m')\n\t\t\t.sign(privateKey)\n\n\t\treturn new this.issuer.Client(\n\t\t\t{\n\t\t\t\tclient_id: configuration.clientId,\n\t\t\t\tclient_secret: jwt,\n\t\t\t\tresponse_types: [configuration.responseType || 'code'],\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{\n\t\t\t\tadditionalAuthorizedParties: [...(configuration.additionalAuthorizedParties ?? [])],\n\t\t\t},\n\t\t)\n\t}\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAUO,MAAM,qBAAqB,SAAS;AAAA,EAC1C,SAAS,OAAO;AAAA,IACf,OAAO,SAAS;AAAA,IAChB,QAAQ,SAAS;AAAA,IACjB,UAAU,SAAS;AAAA,IACnB,YAAY,SAAS;AAAA,EAAA,CACrB;AAAA,EACD;AACD;AAIA,MAAM,oCAAoC;AAEnC,MAAM,cAAqE;AAAA,EAA3E,cAAA;AACE,kBAAA,MAAA,QAAA;AAEgB,kBAAA,MAAA,yBAAA,cAAc,oBAAoB,4BAA4B,CAAA;AAAA,EAAA;AAAA,EAEtF,MAAa,SAAS,eAAmC,MAA2C;AACnG,UAAM,WAAW,cAAc,cAAc,kBAAkB,EAAE,IAAI;AACrE,UAAM,SAAS,MAAM,KAAK,iBAAiB,aAAa;AACjD,WAAA,MAAM,aAAa,QAAQ;AAAA,MACjC,OAAO,cAAc,SAAS,cAAc;AAAA,MAC5C,GAAG;AAAA,IAAA,CACH;AAAA,EAAA;AAAA,EAGF,MAAa,gBAAgB,eAAmC,MAAqC;AACpG,UAAM,eAAe,cAAc,kBAAkB,kBAAkB,EAAE,IAAI;AAC7E,UAAM,SAAS,MAAM,KAAK,iBAAiB,aAAa;AACjD,WAAA,MAAM,mBAAmB,QAAQ,YAAY;AAAA,EAAA;AAAA,EAGrD,uBAAuB,EAAE,YAAY,GAAG,UAA2D;AAC3F,WAAA;AAAA,EAAA;AAAA,EAGR,MAAc,iBAAiB,eAAoD;AAClF,SAAK,WAAL,KAAK,SAAW,MAAM,OAAO,SAAS,iCAAiC;AACvE,UAAM,aAAa,MAAM,YAAY,cAAc,YAAY,OAAO;AAEtE,UAAM,MAAM,MAAM,IAAI,QAAQ,CAAE,CAAA,EAC9B,mBAAmB,EAAE,KAAK,SAAS,KAAK,OAAO,KAAK,cAAc,MAAM,CAAC,EACzE,YAAA,EACA,UAAU,cAAc,MAAM,EAC9B,YAAY,2BAA2B,EACvC,WAAW,cAAc,QAAQ,EACjC,kBAAkB,KAAK,EACvB,KAAK,UAAU;AAEV,WAAA,IAAI,KAAK,OAAO;AAAA,MACtB;AAAA,QACC,WAAW,cAAc;AAAA,QACzB,eAAe;AAAA,QACf,gBAAgB,CAAC,cAAc,gBAAgB,MAAM;AAAA,MACtD;AAAA,MACA;AAAA,MACA;AAAA,QACC,6BAA6B,CAAC,GAAI,cAAc,+BAA+B,CAAG,CAAA;AAAA,MAAA;AAAA,IAEpF;AAAA,EAAA;AAEF;"}
@@ -1 +1 @@
1
- {"version":3,"file":"FacebookProvider.cjs","sources":["../../../../../../../../packages/engine-tenant-api/src/model/service/idp/providers/FacebookProvider.ts"],"sourcesContent":["import * as Typesafe from '@contember/typesafe'\nimport { Client, Issuer } from 'openid-client'\nimport { IdentityProviderHandler, IDPResponse, InitIDPAuthResult } from '../IdentityProviderHandler'\nimport { IDPValidationError } from '../IDPValidationError'\nimport { InvalidIDPConfigurationError } from '../InvalidIDPConfigurationError'\nimport { catchTypesafe } from './helpers'\nimport { BaseOIDCConfiguration, OIDCConfiguration, OIDCInitData, OIDCResponseData } from './OIDCTypes'\nimport { handleOIDCResponse, initOIDCAuth } from './OIDCHelpers'\nimport { createHmac } from 'node:crypto'\nimport { IDPResponseError } from '../IDPResponseError'\n\n\n\nconst FacebookConfiguration = BaseOIDCConfiguration\ntype FacebookConfiguration = ReturnType<typeof FacebookConfiguration>\n\nconst FacebookResponseData = Typesafe.union(\n\tOIDCResponseData,\n\tTypesafe.object({\n\t\tauthResponse: Typesafe.object({\n\t\t\taccessToken: Typesafe.string,\n\t\t\tsignedRequest: Typesafe.string,\n\t\t}),\n\t}),\n)\nconst FacebookResponsePayload = Typesafe.object({\n\tuser_id: Typesafe.string,\n\tcode: Typesafe.string,\n})\n\ntype FacebookResponseData = ReturnType<typeof FacebookResponseData>\n\n\nexport class FacebookProvider implements IdentityProviderHandler<FacebookConfiguration> {\n\t// based on https://www.facebook.com/.well-known/openid-configuration/\n\t// facebook .well-known endpoint does have \"token_endpoint\" field\n\tprivate facebookIssuer = new Issuer({\n\t\tissuer: 'https://www.facebook.com',\n\t\tauthorization_endpoint: 'https://facebook.com/dialog/oauth/',\n\t\tjwks_uri: 'https://www.facebook.com/.well-known/oauth/openid/jwks/',\n\t\tresponse_types_supported: [\n\t\t\t'id_token',\n\t\t\t'token id_token',\n\t\t],\n\t\tsubject_types_supported: [\n\t\t\t'pairwise',\n\t\t],\n\t\tid_token_signing_alg_values_supported: [\n\t\t\t'RS256',\n\t\t],\n\t\tclaims_supported: [\n\t\t\t'iss',\n\t\t\t'aud',\n\t\t\t'sub',\n\t\t\t'iat',\n\t\t\t'exp',\n\t\t\t'jti',\n\t\t\t'nonce',\n\t\t\t'at_hash',\n\t\t\t'name',\n\t\t\t'given_name',\n\t\t\t'middle_name',\n\t\t\t'family_name',\n\t\t\t'email',\n\t\t\t'picture',\n\t\t\t'user_friends',\n\t\t\t'user_birthday',\n\t\t\t'user_age_range',\n\t\t\t'user_link',\n\t\t\t'user_hometown',\n\t\t\t'user_location',\n\t\t\t'user_gender',\n\t\t],\n\t\ttoken_endpoint: 'https://graph.facebook.com/v11.0/oauth/access_token',\n\t})\n\n\tvalidateConfiguration = catchTypesafe(FacebookConfiguration, InvalidIDPConfigurationError)\n\n\tpublic async initAuth(configuration: FacebookConfiguration, data: unknown): Promise<InitIDPAuthResult> {\n\t\tconst initData = catchTypesafe(OIDCInitData, IDPValidationError)(data)\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn await initOIDCAuth(client, {\n\t\t\tscope: configuration.scope ?? configuration.claims,\n\t\t\t...initData,\n\t\t})\n\t}\n\n\tpublic async processResponse(configuration: FacebookConfiguration, data: unknown): Promise<IDPResponse> {\n\t\tconst responseData = catchTypesafe(FacebookResponseData, IDPValidationError)(data)\n\n\t\tif (!('authResponse' in responseData)) {\n\t\t\tconst client = await this.createOIDCClient(configuration)\n\t\t\treturn await handleOIDCResponse(client, responseData)\n\t\t} else {\n\t\t\tconst [sig, payload] = responseData.authResponse.signedRequest.split('.')\n\t\t\tconst data = catchTypesafe(FacebookResponsePayload, IDPValidationError)(JSON.parse(Buffer.from(payload, 'base64').toString('utf8')))\n\t\t\tconst hmac = createHmac('sha256', configuration.clientSecret)\n\t\t\tconst signature = hmac.update(payload).digest()\n\t\t\tconst isSignatureValid = signature.compare(Buffer.from(sig, 'base64')) === 0\n\t\t\tif (!isSignatureValid) {\n\t\t\t\tthrow new IDPValidationError('Invalid signature')\n\t\t\t}\n\t\t\tconst url = `https://graph.facebook.com/${data.user_id}?fields=id,email,name&access_token=${responseData.authResponse.accessToken}`\n\t\t\tconst response = await fetch(url)\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new IDPResponseError(`Invalid Facebook response: [${response.status}] ${await response.text()}`)\n\t\t\t}\n\t\t\tconst apiData = await response.json()\n\n\t\t\treturn {\n\t\t\t\texternalIdentifier: data.user_id,\n\t\t\t\tname: apiData.name,\n\t\t\t\temail: apiData.email,\n\t\t\t}\n\t\t}\n\t}\n\n\tgetPublicConfiguration({ clientSecret, ...config }: FacebookConfiguration): Partial<FacebookConfiguration> {\n\t\treturn config\n\t}\n\n\tprivate async createOIDCClient(configuration: FacebookConfiguration): Promise<Client> {\n\t\treturn new this.facebookIssuer.Client(\n\t\t\t{\n\t\t\t\tclient_id: configuration.clientId,\n\t\t\t\tclient_secret: configuration.clientSecret,\n\t\t\t\tresponse_types: [configuration.responseType || 'code'],\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{\n\t\t\t\tadditionalAuthorizedParties: [...(configuration.additionalAuthorizedParties ?? [])],\n\t\t\t},\n\t\t)\n\t}\n}\n"],"names":["BaseOIDCConfiguration","Typesafe","OIDCResponseData","Issuer","catchTypesafe","InvalidIDPConfigurationError","OIDCInitData","IDPValidationError","initOIDCAuth","handleOIDCResponse","data","createHmac","IDPResponseError"],"mappings":"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"}
1
+ {"version":3,"file":"FacebookProvider.cjs","sources":["../../../../../../../../packages/engine-tenant-api/src/model/service/idp/providers/FacebookProvider.ts"],"sourcesContent":["import * as Typesafe from '@contember/typesafe'\nimport { Client, Issuer } from 'openid-client'\nimport { IdentityProviderHandler, IDPResponse, InitIDPAuthResult } from '../IdentityProviderHandler'\nimport { IDPValidationError } from '../IDPValidationError'\nimport { InvalidIDPConfigurationError } from '../InvalidIDPConfigurationError'\nimport { catchTypesafe } from './helpers'\nimport { BaseOIDCConfiguration, OIDCConfiguration, OIDCInitData, OIDCResponseData } from './OIDCTypes'\nimport { handleOIDCResponse, initOIDCAuth } from './OIDCHelpers'\nimport { createHmac } from 'node:crypto'\nimport { IDPResponseError } from '../IDPResponseError'\n\n\n\nconst FacebookConfiguration = BaseOIDCConfiguration\ntype FacebookConfiguration = ReturnType<typeof FacebookConfiguration>\n\nconst FacebookResponseData = Typesafe.union(\n\tOIDCResponseData,\n\tTypesafe.object({\n\t\tauthResponse: Typesafe.object({\n\t\t\taccessToken: Typesafe.string,\n\t\t\tsignedRequest: Typesafe.string,\n\t\t}),\n\t}),\n)\nconst FacebookResponsePayload = Typesafe.object({\n\tuser_id: Typesafe.string,\n\tcode: Typesafe.string,\n})\n\ntype FacebookResponseData = ReturnType<typeof FacebookResponseData>\n\n\nexport class FacebookProvider implements IdentityProviderHandler<FacebookConfiguration> {\n\t// based on https://www.facebook.com/.well-known/openid-configuration/\n\t// facebook .well-known endpoint does have \"token_endpoint\" field\n\tprivate facebookIssuer = new Issuer({\n\t\tissuer: 'https://www.facebook.com',\n\t\tauthorization_endpoint: 'https://facebook.com/dialog/oauth/',\n\t\tjwks_uri: 'https://www.facebook.com/.well-known/oauth/openid/jwks/',\n\t\tresponse_types_supported: [\n\t\t\t'id_token',\n\t\t\t'token id_token',\n\t\t],\n\t\tsubject_types_supported: [\n\t\t\t'pairwise',\n\t\t],\n\t\tid_token_signing_alg_values_supported: [\n\t\t\t'RS256',\n\t\t],\n\t\tclaims_supported: [\n\t\t\t'iss',\n\t\t\t'aud',\n\t\t\t'sub',\n\t\t\t'iat',\n\t\t\t'exp',\n\t\t\t'jti',\n\t\t\t'nonce',\n\t\t\t'at_hash',\n\t\t\t'name',\n\t\t\t'given_name',\n\t\t\t'middle_name',\n\t\t\t'family_name',\n\t\t\t'email',\n\t\t\t'picture',\n\t\t\t'user_friends',\n\t\t\t'user_birthday',\n\t\t\t'user_age_range',\n\t\t\t'user_link',\n\t\t\t'user_hometown',\n\t\t\t'user_location',\n\t\t\t'user_gender',\n\t\t],\n\t\ttoken_endpoint: 'https://graph.facebook.com/v11.0/oauth/access_token',\n\t})\n\n\tvalidateConfiguration = catchTypesafe(FacebookConfiguration, InvalidIDPConfigurationError)\n\n\tpublic async initAuth(configuration: FacebookConfiguration, data: unknown): Promise<InitIDPAuthResult> {\n\t\tconst initData = catchTypesafe(OIDCInitData, IDPValidationError)(data)\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn await initOIDCAuth(client, {\n\t\t\tscope: configuration.scope ?? configuration.claims,\n\t\t\t...initData,\n\t\t})\n\t}\n\n\tpublic async processResponse(configuration: FacebookConfiguration, data: unknown): Promise<IDPResponse> {\n\t\tconst responseData = catchTypesafe(FacebookResponseData, IDPValidationError)(data)\n\n\t\tif (!('authResponse' in responseData)) {\n\t\t\tconst client = await this.createOIDCClient(configuration)\n\t\t\treturn await handleOIDCResponse(client, responseData)\n\t\t} else {\n\t\t\tconst [sig, payload] = responseData.authResponse.signedRequest.split('.')\n\t\t\tconst data = catchTypesafe(FacebookResponsePayload, IDPValidationError)(JSON.parse(Buffer.from(payload, 'base64').toString('utf8')))\n\t\t\tconst hmac = createHmac('sha256', configuration.clientSecret)\n\t\t\tconst signature = hmac.update(payload).digest()\n\t\t\tconst isSignatureValid = signature.compare(Buffer.from(sig, 'base64')) === 0\n\t\t\tif (!isSignatureValid) {\n\t\t\t\tthrow new IDPValidationError('Invalid signature')\n\t\t\t}\n\t\t\tconst url = `https://graph.facebook.com/${data.user_id}?fields=id,email,name&access_token=${responseData.authResponse.accessToken}`\n\t\t\tconst response = await fetch(url)\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new IDPResponseError(`Invalid Facebook response: [${response.status}] ${await response.text()}`)\n\t\t\t}\n\t\t\tconst apiData = await response.json()\n\n\t\t\treturn {\n\t\t\t\texternalIdentifier: data.user_id,\n\t\t\t\tname: apiData.name,\n\t\t\t\temail: apiData.email,\n\t\t\t}\n\t\t}\n\t}\n\n\tgetPublicConfiguration({ clientSecret, ...config }: FacebookConfiguration): Partial<FacebookConfiguration> {\n\t\treturn config\n\t}\n\n\tprivate async createOIDCClient(configuration: FacebookConfiguration): Promise<Client> {\n\t\treturn new this.facebookIssuer.Client(\n\t\t\t{\n\t\t\t\tclient_id: configuration.clientId,\n\t\t\t\tclient_secret: configuration.clientSecret,\n\t\t\t\tresponse_types: [configuration.responseType || 'code'],\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{\n\t\t\t\tadditionalAuthorizedParties: [...(configuration.additionalAuthorizedParties ?? [])],\n\t\t\t},\n\t\t)\n\t}\n}\n"],"names":["BaseOIDCConfiguration","Typesafe","OIDCResponseData","Issuer","catchTypesafe","InvalidIDPConfigurationError","OIDCInitData","IDPValidationError","initOIDCAuth","handleOIDCResponse","data","createHmac","IDPResponseError"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,MAAM,wBAAwBA,UAAA;AAG9B,MAAM,uBAAuBC,oBAAS;AAAA,EACrCC,UAAA;AAAA,EACAD,oBAAS,OAAO;AAAA,IACf,cAAcA,oBAAS,OAAO;AAAA,MAC7B,aAAaA,oBAAS;AAAA,MACtB,eAAeA,oBAAS;AAAA,IACxB,CAAA;AAAA,EACD,CAAA;AACF;AACA,MAAM,0BAA0BA,oBAAS,OAAO;AAAA,EAC/C,SAASA,oBAAS;AAAA,EAClB,MAAMA,oBAAS;AAChB,CAAC;AAKM,MAAM,iBAA2E;AAAA,EAAjF,cAAA;AAGE,kBAAA,MAAA,kBAAiB,IAAIE,oBAAO;AAAA,MACnC,QAAQ;AAAA,MACR,wBAAwB;AAAA,MACxB,UAAU;AAAA,MACV,0BAA0B;AAAA,QACzB;AAAA,QACA;AAAA,MACD;AAAA,MACA,yBAAyB;AAAA,QACxB;AAAA,MACD;AAAA,MACA,uCAAuC;AAAA,QACtC;AAAA,MACD;AAAA,MACA,kBAAkB;AAAA,QACjB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA,MACA,gBAAgB;AAAA,IAAA,CAChB,CAAA;AAEuB,kBAAA,MAAA,yBAAAC,QAAA,cAAc,uBAAuBC,6BAA4B,4BAAA,CAAA;AAAA,EAAA;AAAA,EAEzF,MAAa,SAAS,eAAsC,MAA2C;AACtG,UAAM,WAAWD,QAAA,cAAcE,UAAc,cAAAC,mBAAkB,kBAAA,EAAE,IAAI;AACrE,UAAM,SAAS,MAAM,KAAK,iBAAiB,aAAa;AACjD,WAAA,MAAMC,yBAAa,QAAQ;AAAA,MACjC,OAAO,cAAc,SAAS,cAAc;AAAA,MAC5C,GAAG;AAAA,IAAA,CACH;AAAA,EAAA;AAAA,EAGF,MAAa,gBAAgB,eAAsC,MAAqC;AACvG,UAAM,eAAeJ,QAAA,cAAc,sBAAsBG,mBAAkB,kBAAA,EAAE,IAAI;AAE7E,QAAA,EAAE,kBAAkB,eAAe;AACtC,YAAM,SAAS,MAAM,KAAK,iBAAiB,aAAa;AACjD,aAAA,MAAME,YAAAA,mBAAmB,QAAQ,YAAY;AAAA,IAAA,OAC9C;AACA,YAAA,CAAC,KAAK,OAAO,IAAI,aAAa,aAAa,cAAc,MAAM,GAAG;AACxE,YAAMC,QAAON,QAAAA,cAAc,yBAAyBG,mBAAAA,kBAAkB,EAAE,KAAK,MAAM,OAAO,KAAK,SAAS,QAAQ,EAAE,SAAS,MAAM,CAAC,CAAC;AACnI,YAAM,OAAOI,OAAA,WAAW,UAAU,cAAc,YAAY;AAC5D,YAAM,YAAY,KAAK,OAAO,OAAO,EAAE,OAAO;AACxC,YAAA,mBAAmB,UAAU,QAAQ,OAAO,KAAK,KAAK,QAAQ,CAAC,MAAM;AAC3E,UAAI,CAAC,kBAAkB;AAChB,cAAA,IAAIJ,sCAAmB,mBAAmB;AAAA,MAAA;AAEjD,YAAM,MAAM,8BAA8BG,MAAK,OAAO,sCAAsC,aAAa,aAAa,WAAW;AAC3H,YAAA,WAAW,MAAM,MAAM,GAAG;AAC5B,UAAA,CAAC,SAAS,IAAI;AACX,cAAA,IAAIE,iBAAiB,iBAAA,+BAA+B,SAAS,MAAM,KAAK,MAAM,SAAS,KAAM,CAAA,EAAE;AAAA,MAAA;AAEhG,YAAA,UAAU,MAAM,SAAS,KAAK;AAE7B,aAAA;AAAA,QACN,oBAAoBF,MAAK;AAAA,QACzB,MAAM,QAAQ;AAAA,QACd,OAAO,QAAQ;AAAA,MAChB;AAAA,IAAA;AAAA,EACD;AAAA,EAGD,uBAAuB,EAAE,cAAc,GAAG,UAAiE;AACnG,WAAA;AAAA,EAAA;AAAA,EAGR,MAAc,iBAAiB,eAAuD;AAC9E,WAAA,IAAI,KAAK,eAAe;AAAA,MAC9B;AAAA,QACC,WAAW,cAAc;AAAA,QACzB,eAAe,cAAc;AAAA,QAC7B,gBAAgB,CAAC,cAAc,gBAAgB,MAAM;AAAA,MACtD;AAAA,MACA;AAAA,MACA;AAAA,QACC,6BAA6B,CAAC,GAAI,cAAc,+BAA+B,CAAG,CAAA;AAAA,MAAA;AAAA,IAEpF;AAAA,EAAA;AAEF;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"FacebookProvider.js","sources":["../../../../../../../../packages/engine-tenant-api/src/model/service/idp/providers/FacebookProvider.ts"],"sourcesContent":["import * as Typesafe from '@contember/typesafe'\nimport { Client, Issuer } from 'openid-client'\nimport { IdentityProviderHandler, IDPResponse, InitIDPAuthResult } from '../IdentityProviderHandler'\nimport { IDPValidationError } from '../IDPValidationError'\nimport { InvalidIDPConfigurationError } from '../InvalidIDPConfigurationError'\nimport { catchTypesafe } from './helpers'\nimport { BaseOIDCConfiguration, OIDCConfiguration, OIDCInitData, OIDCResponseData } from './OIDCTypes'\nimport { handleOIDCResponse, initOIDCAuth } from './OIDCHelpers'\nimport { createHmac } from 'node:crypto'\nimport { IDPResponseError } from '../IDPResponseError'\n\n\n\nconst FacebookConfiguration = BaseOIDCConfiguration\ntype FacebookConfiguration = ReturnType<typeof FacebookConfiguration>\n\nconst FacebookResponseData = Typesafe.union(\n\tOIDCResponseData,\n\tTypesafe.object({\n\t\tauthResponse: Typesafe.object({\n\t\t\taccessToken: Typesafe.string,\n\t\t\tsignedRequest: Typesafe.string,\n\t\t}),\n\t}),\n)\nconst FacebookResponsePayload = Typesafe.object({\n\tuser_id: Typesafe.string,\n\tcode: Typesafe.string,\n})\n\ntype FacebookResponseData = ReturnType<typeof FacebookResponseData>\n\n\nexport class FacebookProvider implements IdentityProviderHandler<FacebookConfiguration> {\n\t// based on https://www.facebook.com/.well-known/openid-configuration/\n\t// facebook .well-known endpoint does have \"token_endpoint\" field\n\tprivate facebookIssuer = new Issuer({\n\t\tissuer: 'https://www.facebook.com',\n\t\tauthorization_endpoint: 'https://facebook.com/dialog/oauth/',\n\t\tjwks_uri: 'https://www.facebook.com/.well-known/oauth/openid/jwks/',\n\t\tresponse_types_supported: [\n\t\t\t'id_token',\n\t\t\t'token id_token',\n\t\t],\n\t\tsubject_types_supported: [\n\t\t\t'pairwise',\n\t\t],\n\t\tid_token_signing_alg_values_supported: [\n\t\t\t'RS256',\n\t\t],\n\t\tclaims_supported: [\n\t\t\t'iss',\n\t\t\t'aud',\n\t\t\t'sub',\n\t\t\t'iat',\n\t\t\t'exp',\n\t\t\t'jti',\n\t\t\t'nonce',\n\t\t\t'at_hash',\n\t\t\t'name',\n\t\t\t'given_name',\n\t\t\t'middle_name',\n\t\t\t'family_name',\n\t\t\t'email',\n\t\t\t'picture',\n\t\t\t'user_friends',\n\t\t\t'user_birthday',\n\t\t\t'user_age_range',\n\t\t\t'user_link',\n\t\t\t'user_hometown',\n\t\t\t'user_location',\n\t\t\t'user_gender',\n\t\t],\n\t\ttoken_endpoint: 'https://graph.facebook.com/v11.0/oauth/access_token',\n\t})\n\n\tvalidateConfiguration = catchTypesafe(FacebookConfiguration, InvalidIDPConfigurationError)\n\n\tpublic async initAuth(configuration: FacebookConfiguration, data: unknown): Promise<InitIDPAuthResult> {\n\t\tconst initData = catchTypesafe(OIDCInitData, IDPValidationError)(data)\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn await initOIDCAuth(client, {\n\t\t\tscope: configuration.scope ?? configuration.claims,\n\t\t\t...initData,\n\t\t})\n\t}\n\n\tpublic async processResponse(configuration: FacebookConfiguration, data: unknown): Promise<IDPResponse> {\n\t\tconst responseData = catchTypesafe(FacebookResponseData, IDPValidationError)(data)\n\n\t\tif (!('authResponse' in responseData)) {\n\t\t\tconst client = await this.createOIDCClient(configuration)\n\t\t\treturn await handleOIDCResponse(client, responseData)\n\t\t} else {\n\t\t\tconst [sig, payload] = responseData.authResponse.signedRequest.split('.')\n\t\t\tconst data = catchTypesafe(FacebookResponsePayload, IDPValidationError)(JSON.parse(Buffer.from(payload, 'base64').toString('utf8')))\n\t\t\tconst hmac = createHmac('sha256', configuration.clientSecret)\n\t\t\tconst signature = hmac.update(payload).digest()\n\t\t\tconst isSignatureValid = signature.compare(Buffer.from(sig, 'base64')) === 0\n\t\t\tif (!isSignatureValid) {\n\t\t\t\tthrow new IDPValidationError('Invalid signature')\n\t\t\t}\n\t\t\tconst url = `https://graph.facebook.com/${data.user_id}?fields=id,email,name&access_token=${responseData.authResponse.accessToken}`\n\t\t\tconst response = await fetch(url)\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new IDPResponseError(`Invalid Facebook response: [${response.status}] ${await response.text()}`)\n\t\t\t}\n\t\t\tconst apiData = await response.json()\n\n\t\t\treturn {\n\t\t\t\texternalIdentifier: data.user_id,\n\t\t\t\tname: apiData.name,\n\t\t\t\temail: apiData.email,\n\t\t\t}\n\t\t}\n\t}\n\n\tgetPublicConfiguration({ clientSecret, ...config }: FacebookConfiguration): Partial<FacebookConfiguration> {\n\t\treturn config\n\t}\n\n\tprivate async createOIDCClient(configuration: FacebookConfiguration): Promise<Client> {\n\t\treturn new this.facebookIssuer.Client(\n\t\t\t{\n\t\t\t\tclient_id: configuration.clientId,\n\t\t\t\tclient_secret: configuration.clientSecret,\n\t\t\t\tresponse_types: [configuration.responseType || 'code'],\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{\n\t\t\t\tadditionalAuthorizedParties: [...(configuration.additionalAuthorizedParties ?? [])],\n\t\t\t},\n\t\t)\n\t}\n}\n"],"names":["data"],"mappings":"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"}
1
+ {"version":3,"file":"FacebookProvider.js","sources":["../../../../../../../../packages/engine-tenant-api/src/model/service/idp/providers/FacebookProvider.ts"],"sourcesContent":["import * as Typesafe from '@contember/typesafe'\nimport { Client, Issuer } from 'openid-client'\nimport { IdentityProviderHandler, IDPResponse, InitIDPAuthResult } from '../IdentityProviderHandler'\nimport { IDPValidationError } from '../IDPValidationError'\nimport { InvalidIDPConfigurationError } from '../InvalidIDPConfigurationError'\nimport { catchTypesafe } from './helpers'\nimport { BaseOIDCConfiguration, OIDCConfiguration, OIDCInitData, OIDCResponseData } from './OIDCTypes'\nimport { handleOIDCResponse, initOIDCAuth } from './OIDCHelpers'\nimport { createHmac } from 'node:crypto'\nimport { IDPResponseError } from '../IDPResponseError'\n\n\n\nconst FacebookConfiguration = BaseOIDCConfiguration\ntype FacebookConfiguration = ReturnType<typeof FacebookConfiguration>\n\nconst FacebookResponseData = Typesafe.union(\n\tOIDCResponseData,\n\tTypesafe.object({\n\t\tauthResponse: Typesafe.object({\n\t\t\taccessToken: Typesafe.string,\n\t\t\tsignedRequest: Typesafe.string,\n\t\t}),\n\t}),\n)\nconst FacebookResponsePayload = Typesafe.object({\n\tuser_id: Typesafe.string,\n\tcode: Typesafe.string,\n})\n\ntype FacebookResponseData = ReturnType<typeof FacebookResponseData>\n\n\nexport class FacebookProvider implements IdentityProviderHandler<FacebookConfiguration> {\n\t// based on https://www.facebook.com/.well-known/openid-configuration/\n\t// facebook .well-known endpoint does have \"token_endpoint\" field\n\tprivate facebookIssuer = new Issuer({\n\t\tissuer: 'https://www.facebook.com',\n\t\tauthorization_endpoint: 'https://facebook.com/dialog/oauth/',\n\t\tjwks_uri: 'https://www.facebook.com/.well-known/oauth/openid/jwks/',\n\t\tresponse_types_supported: [\n\t\t\t'id_token',\n\t\t\t'token id_token',\n\t\t],\n\t\tsubject_types_supported: [\n\t\t\t'pairwise',\n\t\t],\n\t\tid_token_signing_alg_values_supported: [\n\t\t\t'RS256',\n\t\t],\n\t\tclaims_supported: [\n\t\t\t'iss',\n\t\t\t'aud',\n\t\t\t'sub',\n\t\t\t'iat',\n\t\t\t'exp',\n\t\t\t'jti',\n\t\t\t'nonce',\n\t\t\t'at_hash',\n\t\t\t'name',\n\t\t\t'given_name',\n\t\t\t'middle_name',\n\t\t\t'family_name',\n\t\t\t'email',\n\t\t\t'picture',\n\t\t\t'user_friends',\n\t\t\t'user_birthday',\n\t\t\t'user_age_range',\n\t\t\t'user_link',\n\t\t\t'user_hometown',\n\t\t\t'user_location',\n\t\t\t'user_gender',\n\t\t],\n\t\ttoken_endpoint: 'https://graph.facebook.com/v11.0/oauth/access_token',\n\t})\n\n\tvalidateConfiguration = catchTypesafe(FacebookConfiguration, InvalidIDPConfigurationError)\n\n\tpublic async initAuth(configuration: FacebookConfiguration, data: unknown): Promise<InitIDPAuthResult> {\n\t\tconst initData = catchTypesafe(OIDCInitData, IDPValidationError)(data)\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn await initOIDCAuth(client, {\n\t\t\tscope: configuration.scope ?? configuration.claims,\n\t\t\t...initData,\n\t\t})\n\t}\n\n\tpublic async processResponse(configuration: FacebookConfiguration, data: unknown): Promise<IDPResponse> {\n\t\tconst responseData = catchTypesafe(FacebookResponseData, IDPValidationError)(data)\n\n\t\tif (!('authResponse' in responseData)) {\n\t\t\tconst client = await this.createOIDCClient(configuration)\n\t\t\treturn await handleOIDCResponse(client, responseData)\n\t\t} else {\n\t\t\tconst [sig, payload] = responseData.authResponse.signedRequest.split('.')\n\t\t\tconst data = catchTypesafe(FacebookResponsePayload, IDPValidationError)(JSON.parse(Buffer.from(payload, 'base64').toString('utf8')))\n\t\t\tconst hmac = createHmac('sha256', configuration.clientSecret)\n\t\t\tconst signature = hmac.update(payload).digest()\n\t\t\tconst isSignatureValid = signature.compare(Buffer.from(sig, 'base64')) === 0\n\t\t\tif (!isSignatureValid) {\n\t\t\t\tthrow new IDPValidationError('Invalid signature')\n\t\t\t}\n\t\t\tconst url = `https://graph.facebook.com/${data.user_id}?fields=id,email,name&access_token=${responseData.authResponse.accessToken}`\n\t\t\tconst response = await fetch(url)\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new IDPResponseError(`Invalid Facebook response: [${response.status}] ${await response.text()}`)\n\t\t\t}\n\t\t\tconst apiData = await response.json()\n\n\t\t\treturn {\n\t\t\t\texternalIdentifier: data.user_id,\n\t\t\t\tname: apiData.name,\n\t\t\t\temail: apiData.email,\n\t\t\t}\n\t\t}\n\t}\n\n\tgetPublicConfiguration({ clientSecret, ...config }: FacebookConfiguration): Partial<FacebookConfiguration> {\n\t\treturn config\n\t}\n\n\tprivate async createOIDCClient(configuration: FacebookConfiguration): Promise<Client> {\n\t\treturn new this.facebookIssuer.Client(\n\t\t\t{\n\t\t\t\tclient_id: configuration.clientId,\n\t\t\t\tclient_secret: configuration.clientSecret,\n\t\t\t\tresponse_types: [configuration.responseType || 'code'],\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{\n\t\t\t\tadditionalAuthorizedParties: [...(configuration.additionalAuthorizedParties ?? [])],\n\t\t\t},\n\t\t)\n\t}\n}\n"],"names":["data"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"OIDCHelpers.cjs","sources":["../../../../../../../../packages/engine-tenant-api/src/model/service/idp/providers/OIDCHelpers.ts"],"sourcesContent":["import { Client, custom, errors, generators } from 'openid-client'\nimport { OIDCResponseData } from './OIDCTypes'\nimport { IDPValidationError } from '../IDPValidationError'\nimport { IDPResponseError } from '../IDPResponseError'\nimport { IDPResponse, InitIDPAuthResult } from '../IdentityProviderHandler'\n\ncustom.setHttpOptionsDefaults({\n\ttimeout: 5000,\n})\n\nexport const initOIDCAuth = async (client: Client, { redirectUrl, scope, responseMode }: { redirectUrl: string; scope?: string; responseMode?: string }): Promise<InitIDPAuthResult> => {\n\tconst nonce = generators.nonce()\n\tconst state = generators.state()\n\tconst url = client.authorizationUrl({\n\t\tredirect_uri: redirectUrl,\n\t\tresponse_mode: responseMode,\n\t\tscope: scope ?? 'openid email',\n\t\tnonce,\n\t\tstate,\n\t})\n\n\treturn {\n\t\tauthUrl: url,\n\t\tsessionData: { nonce, state },\n\t}\n}\n\nexport const handleOIDCResponse = async (client: Client, { sessionData, redirectUrl, ...otherData }: OIDCResponseData, fetchUserInfo?: boolean, returnOIDCResult?: boolean): Promise<IDPResponse> => {\n\tconst params = 'parameters' in otherData ? otherData.parameters : client.callbackParams(otherData.url)\n\tif (params.state && !sessionData?.state) {\n\t\tthrow new IDPValidationError(`state is present in parameters, but missing in session data`)\n\t}\n\ttry {\n\t\tconst result = await client.callback(redirectUrl, params, sessionData)\n\t\tconst claims = result.claims()\n\t\tconst { at_hash, c_hash, nonce, ...claimsWithoutHashes } = claims\n\t\tconst userInfo = result.access_token && fetchUserInfo ? await client.userinfo(result) : {}\n\t\tconst oidcResult = returnOIDCResult ? result : {}\n\t\t\n\t\treturn {\n\t\t\texternalIdentifier: claims.sub,\n\t\t\t...oidcResult,\n\t\t\t...claimsWithoutHashes,\n\t\t\t...userInfo,\n\t\t}\n\t} catch (e: any) {\n\t\tif (e instanceof errors.RPError) {\n\t\t\tthrow new IDPValidationError(e.message)\n\t\t}\n\t\tif (e instanceof errors.OPError) {\n\t\t\tconst body = e.response?.body as any\n\t\t\tif (typeof body === 'object' && typeof body?.error === 'object' && typeof body.error?.message === 'string') {\n\t\t\t\tthrow new IDPResponseError(body.error.message)\n\t\t\t}\n\t\t\tthrow new IDPResponseError(e.message)\n\t\t}\n\t\tthrow e\n\t}\n}\n"],"names":["custom","generators","IDPValidationError","errors","IDPResponseError"],"mappings":";;;;;AAMAA,aAAA,OAAO,uBAAuB;AAAA,EAC7B,SAAS;AACV,CAAC;AAEM,MAAM,eAAe,OAAO,QAAgB,EAAE,aAAa,OAAO,mBAA+G;AACjL,QAAA,QAAQC,wBAAW;AACnB,QAAA,QAAQA,wBAAW;AACnB,QAAA,MAAM,OAAO,iBAAiB;AAAA,IACnC,cAAc;AAAA,IACd,eAAe;AAAA,IACf,OAAO,SAAS;AAAA,IAChB;AAAA,IACA;AAAA,EAAA,CACA;AAEM,SAAA;AAAA,IACN,SAAS;AAAA,IACT,aAAa,EAAE,OAAO,MAAM;AAAA,EAAA;AAE9B;AAEa,MAAA,qBAAqB,OAAO,QAAgB,EAAE,aAAa,aAAa,GAAG,UAAA,GAA+B,eAAyB,qBAAqD;AAC9L,QAAA,SAAS,gBAAgB,YAAY,UAAU,aAAa,OAAO,eAAe,UAAU,GAAG;AACrG,MAAI,OAAO,SAAS,CAAC,aAAa,OAAO;AAClC,UAAA,IAAIC,sCAAmB,6DAA6D;AAAA,EAC3F;AACI,MAAA;AACH,UAAM,SAAS,MAAM,OAAO,SAAS,aAAa,QAAQ,WAAW;AAC/D,UAAA,SAAS,OAAO;AACtB,UAAM,EAAE,SAAS,QAAQ,OAAO,GAAG,oBAAwB,IAAA;AACrD,UAAA,WAAW,OAAO,gBAAgB,gBAAgB,MAAM,OAAO,SAAS,MAAM,IAAI;AAClF,UAAA,aAAa,mBAAmB,SAAS;AAExC,WAAA;AAAA,MACN,oBAAoB,OAAO;AAAA,MAC3B,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IAAA;AAAA,WAEI,GAAQ;AACZ,QAAA,aAAaC,oBAAO,SAAS;AAC1B,YAAA,IAAID,mBAAmB,mBAAA,EAAE,OAAO;AAAA,IACvC;AACI,QAAA,aAAaC,oBAAO,SAAS;AAC1B,YAAA,OAAO,EAAE,UAAU;AACrB,UAAA,OAAO,SAAS,YAAY,OAAO,MAAM,UAAU,YAAY,OAAO,KAAK,OAAO,YAAY,UAAU;AAC3G,cAAM,IAAIC,iBAAAA,iBAAiB,KAAK,MAAM,OAAO;AAAA,MAC9C;AACM,YAAA,IAAIA,iBAAiB,iBAAA,EAAE,OAAO;AAAA,IACrC;AACM,UAAA;AAAA,EACP;AACD;;;"}
1
+ {"version":3,"file":"OIDCHelpers.cjs","sources":["../../../../../../../../packages/engine-tenant-api/src/model/service/idp/providers/OIDCHelpers.ts"],"sourcesContent":["import { Client, custom, errors, generators } from 'openid-client'\nimport { OIDCResponseData } from './OIDCTypes'\nimport { IDPValidationError } from '../IDPValidationError'\nimport { IDPResponseError } from '../IDPResponseError'\nimport { IDPResponse, InitIDPAuthResult } from '../IdentityProviderHandler'\n\ncustom.setHttpOptionsDefaults({\n\ttimeout: 5000,\n})\n\nexport const initOIDCAuth = async (client: Client, { redirectUrl, scope, responseMode }: { redirectUrl: string; scope?: string; responseMode?: string }): Promise<InitIDPAuthResult> => {\n\tconst nonce = generators.nonce()\n\tconst state = generators.state()\n\tconst url = client.authorizationUrl({\n\t\tredirect_uri: redirectUrl,\n\t\tresponse_mode: responseMode,\n\t\tscope: scope ?? 'openid email',\n\t\tnonce,\n\t\tstate,\n\t})\n\n\treturn {\n\t\tauthUrl: url,\n\t\tsessionData: { nonce, state },\n\t}\n}\n\nexport const handleOIDCResponse = async (client: Client, { sessionData, redirectUrl, ...otherData }: OIDCResponseData, fetchUserInfo?: boolean, returnOIDCResult?: boolean): Promise<IDPResponse> => {\n\tconst params = 'parameters' in otherData ? otherData.parameters : client.callbackParams(otherData.url)\n\tif (params.state && !sessionData?.state) {\n\t\tthrow new IDPValidationError(`state is present in parameters, but missing in session data`)\n\t}\n\ttry {\n\t\tconst result = await client.callback(redirectUrl, params, sessionData)\n\t\tconst claims = result.claims()\n\t\tconst { at_hash, c_hash, nonce, ...claimsWithoutHashes } = claims\n\t\tconst userInfo = result.access_token && fetchUserInfo ? await client.userinfo(result) : {}\n\t\tconst oidcResult = returnOIDCResult ? result : {}\n\t\t\n\t\treturn {\n\t\t\texternalIdentifier: claims.sub,\n\t\t\t...oidcResult,\n\t\t\t...claimsWithoutHashes,\n\t\t\t...userInfo,\n\t\t}\n\t} catch (e: any) {\n\t\tif (e instanceof errors.RPError) {\n\t\t\tthrow new IDPValidationError(e.message)\n\t\t}\n\t\tif (e instanceof errors.OPError) {\n\t\t\tconst body = e.response?.body as any\n\t\t\tif (typeof body === 'object' && typeof body?.error === 'object' && typeof body.error?.message === 'string') {\n\t\t\t\tthrow new IDPResponseError(body.error.message)\n\t\t\t}\n\t\t\tthrow new IDPResponseError(e.message)\n\t\t}\n\t\tthrow e\n\t}\n}\n"],"names":["custom","generators","IDPValidationError","errors","IDPResponseError"],"mappings":";;;;;AAMAA,aAAA,OAAO,uBAAuB;AAAA,EAC7B,SAAS;AACV,CAAC;AAEM,MAAM,eAAe,OAAO,QAAgB,EAAE,aAAa,OAAO,mBAA+G;AACjL,QAAA,QAAQC,wBAAW,MAAM;AACzB,QAAA,QAAQA,wBAAW,MAAM;AACzB,QAAA,MAAM,OAAO,iBAAiB;AAAA,IACnC,cAAc;AAAA,IACd,eAAe;AAAA,IACf,OAAO,SAAS;AAAA,IAChB;AAAA,IACA;AAAA,EAAA,CACA;AAEM,SAAA;AAAA,IACN,SAAS;AAAA,IACT,aAAa,EAAE,OAAO,MAAM;AAAA,EAC7B;AACD;AAEa,MAAA,qBAAqB,OAAO,QAAgB,EAAE,aAAa,aAAa,GAAG,UAAA,GAA+B,eAAyB,qBAAqD;AAC9L,QAAA,SAAS,gBAAgB,YAAY,UAAU,aAAa,OAAO,eAAe,UAAU,GAAG;AACrG,MAAI,OAAO,SAAS,CAAC,aAAa,OAAO;AAClC,UAAA,IAAIC,mBAAAA,mBAAmB,6DAA6D;AAAA,EAAA;AAEvF,MAAA;AACH,UAAM,SAAS,MAAM,OAAO,SAAS,aAAa,QAAQ,WAAW;AAC/D,UAAA,SAAS,OAAO,OAAO;AAC7B,UAAM,EAAE,SAAS,QAAQ,OAAO,GAAG,oBAAwB,IAAA;AACrD,UAAA,WAAW,OAAO,gBAAgB,gBAAgB,MAAM,OAAO,SAAS,MAAM,IAAI,CAAC;AACnF,UAAA,aAAa,mBAAmB,SAAS,CAAC;AAEzC,WAAA;AAAA,MACN,oBAAoB,OAAO;AAAA,MAC3B,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,WACQ,GAAQ;AACZ,QAAA,aAAaC,oBAAO,SAAS;AAC1B,YAAA,IAAID,mBAAAA,mBAAmB,EAAE,OAAO;AAAA,IAAA;AAEnC,QAAA,aAAaC,oBAAO,SAAS;AAC1B,YAAA,OAAO,EAAE,UAAU;AACrB,UAAA,OAAO,SAAS,YAAY,OAAO,MAAM,UAAU,YAAY,OAAO,KAAK,OAAO,YAAY,UAAU;AAC3G,cAAM,IAAIC,iBAAA,iBAAiB,KAAK,MAAM,OAAO;AAAA,MAAA;AAExC,YAAA,IAAIA,iBAAAA,iBAAiB,EAAE,OAAO;AAAA,IAAA;AAE/B,UAAA;AAAA,EAAA;AAER;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"OIDCHelpers.js","sources":["../../../../../../../../packages/engine-tenant-api/src/model/service/idp/providers/OIDCHelpers.ts"],"sourcesContent":["import { Client, custom, errors, generators } from 'openid-client'\nimport { OIDCResponseData } from './OIDCTypes'\nimport { IDPValidationError } from '../IDPValidationError'\nimport { IDPResponseError } from '../IDPResponseError'\nimport { IDPResponse, InitIDPAuthResult } from '../IdentityProviderHandler'\n\ncustom.setHttpOptionsDefaults({\n\ttimeout: 5000,\n})\n\nexport const initOIDCAuth = async (client: Client, { redirectUrl, scope, responseMode }: { redirectUrl: string; scope?: string; responseMode?: string }): Promise<InitIDPAuthResult> => {\n\tconst nonce = generators.nonce()\n\tconst state = generators.state()\n\tconst url = client.authorizationUrl({\n\t\tredirect_uri: redirectUrl,\n\t\tresponse_mode: responseMode,\n\t\tscope: scope ?? 'openid email',\n\t\tnonce,\n\t\tstate,\n\t})\n\n\treturn {\n\t\tauthUrl: url,\n\t\tsessionData: { nonce, state },\n\t}\n}\n\nexport const handleOIDCResponse = async (client: Client, { sessionData, redirectUrl, ...otherData }: OIDCResponseData, fetchUserInfo?: boolean, returnOIDCResult?: boolean): Promise<IDPResponse> => {\n\tconst params = 'parameters' in otherData ? otherData.parameters : client.callbackParams(otherData.url)\n\tif (params.state && !sessionData?.state) {\n\t\tthrow new IDPValidationError(`state is present in parameters, but missing in session data`)\n\t}\n\ttry {\n\t\tconst result = await client.callback(redirectUrl, params, sessionData)\n\t\tconst claims = result.claims()\n\t\tconst { at_hash, c_hash, nonce, ...claimsWithoutHashes } = claims\n\t\tconst userInfo = result.access_token && fetchUserInfo ? await client.userinfo(result) : {}\n\t\tconst oidcResult = returnOIDCResult ? result : {}\n\t\t\n\t\treturn {\n\t\t\texternalIdentifier: claims.sub,\n\t\t\t...oidcResult,\n\t\t\t...claimsWithoutHashes,\n\t\t\t...userInfo,\n\t\t}\n\t} catch (e: any) {\n\t\tif (e instanceof errors.RPError) {\n\t\t\tthrow new IDPValidationError(e.message)\n\t\t}\n\t\tif (e instanceof errors.OPError) {\n\t\t\tconst body = e.response?.body as any\n\t\t\tif (typeof body === 'object' && typeof body?.error === 'object' && typeof body.error?.message === 'string') {\n\t\t\t\tthrow new IDPResponseError(body.error.message)\n\t\t\t}\n\t\t\tthrow new IDPResponseError(e.message)\n\t\t}\n\t\tthrow e\n\t}\n}\n"],"names":[],"mappings":";;;AAMA,OAAO,uBAAuB;AAAA,EAC7B,SAAS;AACV,CAAC;AAEM,MAAM,eAAe,OAAO,QAAgB,EAAE,aAAa,OAAO,mBAA+G;AACjL,QAAA,QAAQ,WAAW;AACnB,QAAA,QAAQ,WAAW;AACnB,QAAA,MAAM,OAAO,iBAAiB;AAAA,IACnC,cAAc;AAAA,IACd,eAAe;AAAA,IACf,OAAO,SAAS;AAAA,IAChB;AAAA,IACA;AAAA,EAAA,CACA;AAEM,SAAA;AAAA,IACN,SAAS;AAAA,IACT,aAAa,EAAE,OAAO,MAAM;AAAA,EAAA;AAE9B;AAEa,MAAA,qBAAqB,OAAO,QAAgB,EAAE,aAAa,aAAa,GAAG,UAAA,GAA+B,eAAyB,qBAAqD;AAC9L,QAAA,SAAS,gBAAgB,YAAY,UAAU,aAAa,OAAO,eAAe,UAAU,GAAG;AACrG,MAAI,OAAO,SAAS,CAAC,aAAa,OAAO;AAClC,UAAA,IAAI,mBAAmB,6DAA6D;AAAA,EAC3F;AACI,MAAA;AACH,UAAM,SAAS,MAAM,OAAO,SAAS,aAAa,QAAQ,WAAW;AAC/D,UAAA,SAAS,OAAO;AACtB,UAAM,EAAE,SAAS,QAAQ,OAAO,GAAG,oBAAwB,IAAA;AACrD,UAAA,WAAW,OAAO,gBAAgB,gBAAgB,MAAM,OAAO,SAAS,MAAM,IAAI;AAClF,UAAA,aAAa,mBAAmB,SAAS;AAExC,WAAA;AAAA,MACN,oBAAoB,OAAO;AAAA,MAC3B,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IAAA;AAAA,WAEI,GAAQ;AACZ,QAAA,aAAa,OAAO,SAAS;AAC1B,YAAA,IAAI,mBAAmB,EAAE,OAAO;AAAA,IACvC;AACI,QAAA,aAAa,OAAO,SAAS;AAC1B,YAAA,OAAO,EAAE,UAAU;AACrB,UAAA,OAAO,SAAS,YAAY,OAAO,MAAM,UAAU,YAAY,OAAO,KAAK,OAAO,YAAY,UAAU;AAC3G,cAAM,IAAI,iBAAiB,KAAK,MAAM,OAAO;AAAA,MAC9C;AACM,YAAA,IAAI,iBAAiB,EAAE,OAAO;AAAA,IACrC;AACM,UAAA;AAAA,EACP;AACD;"}
1
+ {"version":3,"file":"OIDCHelpers.js","sources":["../../../../../../../../packages/engine-tenant-api/src/model/service/idp/providers/OIDCHelpers.ts"],"sourcesContent":["import { Client, custom, errors, generators } from 'openid-client'\nimport { OIDCResponseData } from './OIDCTypes'\nimport { IDPValidationError } from '../IDPValidationError'\nimport { IDPResponseError } from '../IDPResponseError'\nimport { IDPResponse, InitIDPAuthResult } from '../IdentityProviderHandler'\n\ncustom.setHttpOptionsDefaults({\n\ttimeout: 5000,\n})\n\nexport const initOIDCAuth = async (client: Client, { redirectUrl, scope, responseMode }: { redirectUrl: string; scope?: string; responseMode?: string }): Promise<InitIDPAuthResult> => {\n\tconst nonce = generators.nonce()\n\tconst state = generators.state()\n\tconst url = client.authorizationUrl({\n\t\tredirect_uri: redirectUrl,\n\t\tresponse_mode: responseMode,\n\t\tscope: scope ?? 'openid email',\n\t\tnonce,\n\t\tstate,\n\t})\n\n\treturn {\n\t\tauthUrl: url,\n\t\tsessionData: { nonce, state },\n\t}\n}\n\nexport const handleOIDCResponse = async (client: Client, { sessionData, redirectUrl, ...otherData }: OIDCResponseData, fetchUserInfo?: boolean, returnOIDCResult?: boolean): Promise<IDPResponse> => {\n\tconst params = 'parameters' in otherData ? otherData.parameters : client.callbackParams(otherData.url)\n\tif (params.state && !sessionData?.state) {\n\t\tthrow new IDPValidationError(`state is present in parameters, but missing in session data`)\n\t}\n\ttry {\n\t\tconst result = await client.callback(redirectUrl, params, sessionData)\n\t\tconst claims = result.claims()\n\t\tconst { at_hash, c_hash, nonce, ...claimsWithoutHashes } = claims\n\t\tconst userInfo = result.access_token && fetchUserInfo ? await client.userinfo(result) : {}\n\t\tconst oidcResult = returnOIDCResult ? result : {}\n\t\t\n\t\treturn {\n\t\t\texternalIdentifier: claims.sub,\n\t\t\t...oidcResult,\n\t\t\t...claimsWithoutHashes,\n\t\t\t...userInfo,\n\t\t}\n\t} catch (e: any) {\n\t\tif (e instanceof errors.RPError) {\n\t\t\tthrow new IDPValidationError(e.message)\n\t\t}\n\t\tif (e instanceof errors.OPError) {\n\t\t\tconst body = e.response?.body as any\n\t\t\tif (typeof body === 'object' && typeof body?.error === 'object' && typeof body.error?.message === 'string') {\n\t\t\t\tthrow new IDPResponseError(body.error.message)\n\t\t\t}\n\t\t\tthrow new IDPResponseError(e.message)\n\t\t}\n\t\tthrow e\n\t}\n}\n"],"names":[],"mappings":";;;AAMA,OAAO,uBAAuB;AAAA,EAC7B,SAAS;AACV,CAAC;AAEM,MAAM,eAAe,OAAO,QAAgB,EAAE,aAAa,OAAO,mBAA+G;AACjL,QAAA,QAAQ,WAAW,MAAM;AACzB,QAAA,QAAQ,WAAW,MAAM;AACzB,QAAA,MAAM,OAAO,iBAAiB;AAAA,IACnC,cAAc;AAAA,IACd,eAAe;AAAA,IACf,OAAO,SAAS;AAAA,IAChB;AAAA,IACA;AAAA,EAAA,CACA;AAEM,SAAA;AAAA,IACN,SAAS;AAAA,IACT,aAAa,EAAE,OAAO,MAAM;AAAA,EAC7B;AACD;AAEa,MAAA,qBAAqB,OAAO,QAAgB,EAAE,aAAa,aAAa,GAAG,UAAA,GAA+B,eAAyB,qBAAqD;AAC9L,QAAA,SAAS,gBAAgB,YAAY,UAAU,aAAa,OAAO,eAAe,UAAU,GAAG;AACrG,MAAI,OAAO,SAAS,CAAC,aAAa,OAAO;AAClC,UAAA,IAAI,mBAAmB,6DAA6D;AAAA,EAAA;AAEvF,MAAA;AACH,UAAM,SAAS,MAAM,OAAO,SAAS,aAAa,QAAQ,WAAW;AAC/D,UAAA,SAAS,OAAO,OAAO;AAC7B,UAAM,EAAE,SAAS,QAAQ,OAAO,GAAG,oBAAwB,IAAA;AACrD,UAAA,WAAW,OAAO,gBAAgB,gBAAgB,MAAM,OAAO,SAAS,MAAM,IAAI,CAAC;AACnF,UAAA,aAAa,mBAAmB,SAAS,CAAC;AAEzC,WAAA;AAAA,MACN,oBAAoB,OAAO;AAAA,MAC3B,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,WACQ,GAAQ;AACZ,QAAA,aAAa,OAAO,SAAS;AAC1B,YAAA,IAAI,mBAAmB,EAAE,OAAO;AAAA,IAAA;AAEnC,QAAA,aAAa,OAAO,SAAS;AAC1B,YAAA,OAAO,EAAE,UAAU;AACrB,UAAA,OAAO,SAAS,YAAY,OAAO,MAAM,UAAU,YAAY,OAAO,KAAK,OAAO,YAAY,UAAU;AAC3G,cAAM,IAAI,iBAAiB,KAAK,MAAM,OAAO;AAAA,MAAA;AAExC,YAAA,IAAI,iBAAiB,EAAE,OAAO;AAAA,IAAA;AAE/B,UAAA;AAAA,EAAA;AAER;"}
@@ -1 +1 @@
1
- {"version":3,"file":"OIDCProvider.cjs","sources":["../../../../../../../../packages/engine-tenant-api/src/model/service/idp/providers/OIDCProvider.ts"],"sourcesContent":["import { Client, Issuer } from 'openid-client'\nimport { IdentityProviderHandler, IDPResponse, InitIDPAuthResult } from '../IdentityProviderHandler'\nimport { InvalidIDPConfigurationError } from '../InvalidIDPConfigurationError'\nimport { catchTypesafe } from './helpers'\nimport { OIDCConfiguration, OIDCInitData, OIDCResponseData } from './OIDCTypes'\nimport { handleOIDCResponse, initOIDCAuth } from './OIDCHelpers'\nimport { IDPValidationError } from '../IDPValidationError'\n\n\nexport class OIDCProvider implements IdentityProviderHandler<OIDCConfiguration> {\n\tprivate issuerCache: Record<string, Issuer<Client>> = {}\n\n\tvalidateConfiguration = catchTypesafe(OIDCConfiguration, InvalidIDPConfigurationError)\n\n\tpublic async initAuth(configuration: OIDCConfiguration, data: unknown): Promise<InitIDPAuthResult> {\n\t\tconst initData = catchTypesafe(OIDCInitData, IDPValidationError)(data)\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn await initOIDCAuth(client, {\n\t\t\tscope: configuration.scope ?? configuration.claims,\n\t\t\t...initData,\n\t\t})\n\t}\n\n\tpublic async processResponse(configuration: OIDCConfiguration, data: unknown): Promise<IDPResponse> {\n\t\tconst responseData = catchTypesafe(OIDCResponseData, IDPValidationError)(data)\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn await handleOIDCResponse(\n\t\t\tclient,\n\t\t\tresponseData,\n\t\t\tconfiguration.fetchUserInfo,\n\t\t\tconfiguration.returnOIDCResult,\n\t\t)\n\t}\n\n\n\tgetPublicConfiguration({ clientSecret, ...config }: OIDCConfiguration): Partial<OIDCConfiguration> {\n\t\treturn config\n\t}\n\n\tprivate async createOIDCClient(configuration: OIDCConfiguration): Promise<Client> {\n\t\tthis.issuerCache[configuration.url] ??= await Issuer.discover(configuration.url)\n\n\t\treturn new this.issuerCache[configuration.url].Client(\n\t\t\t{\n\t\t\t\tclient_id: configuration.clientId,\n\t\t\t\tclient_secret: configuration.clientSecret,\n\t\t\t\tresponse_types: [configuration.responseType || 'code'],\n\t\t\t\tid_token_signed_response_alg: configuration.idTokenSignedResponseAlg ?? 'RS256',\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{\n\t\t\t\tadditionalAuthorizedParties: [...(configuration.additionalAuthorizedParties ?? [])],\n\t\t\t},\n\t\t)\n\t}\n}\n"],"names":["catchTypesafe","OIDCConfiguration","InvalidIDPConfigurationError","OIDCInitData","IDPValidationError","initOIDCAuth","OIDCResponseData","handleOIDCResponse","Issuer"],"mappings":";;;;;;;;;;;AASO,MAAM,aAAmE;AAAA,EAAzE,cAAA;AACN,kBAAA,MAAQ,eAA8C,CAAA,CAAC;AAE/B,kBAAA,MAAA,yBAAAA,QAAA,cAAcC,6BAAmBC,6BAA4B,4BAAA,CAAA;AAAA,EAAA;AAAA,EAErF,MAAa,SAAS,eAAkC,MAA2C;AAClG,UAAM,WAAWF,QAAAA,cAAcG,UAAAA,cAAcC,mBAAAA,kBAAkB,EAAE,IAAI;AACrE,UAAM,SAAS,MAAM,KAAK,iBAAiB,aAAa;AACjD,WAAA,MAAMC,yBAAa,QAAQ;AAAA,MACjC,OAAO,cAAc,SAAS,cAAc;AAAA,MAC5C,GAAG;AAAA,IAAA,CACH;AAAA,EACF;AAAA,EAEA,MAAa,gBAAgB,eAAkC,MAAqC;AACnG,UAAM,eAAeL,QAAAA,cAAcM,UAAAA,kBAAkBF,mBAAAA,kBAAkB,EAAE,IAAI;AAC7E,UAAM,SAAS,MAAM,KAAK,iBAAiB,aAAa;AACxD,WAAO,MAAMG,YAAA;AAAA,MACZ;AAAA,MACA;AAAA,MACA,cAAc;AAAA,MACd,cAAc;AAAA,IAAA;AAAA,EAEhB;AAAA,EAGA,uBAAuB,EAAE,cAAc,GAAG,UAAyD;AAC3F,WAAA;AAAA,EACR;AAAA,EAEA,MAAc,iBAAiB,eAAmD;AAvCnF,QAAA,IAAA;AAwCO,KAAA,KAAA,KAAA,aAAL,KAAiB,cAAc,GAAA,MAA/B,SAAwC,MAAMC,aAAA,OAAO,SAAS,cAAc,GAAG;AAE/E,WAAO,IAAI,KAAK,YAAY,cAAc,GAAG,EAAE;AAAA,MAC9C;AAAA,QACC,WAAW,cAAc;AAAA,QACzB,eAAe,cAAc;AAAA,QAC7B,gBAAgB,CAAC,cAAc,gBAAgB,MAAM;AAAA,QACrD,8BAA8B,cAAc,4BAA4B;AAAA,MACzE;AAAA,MACA;AAAA,MACA;AAAA,QACC,6BAA6B,CAAC,GAAI,cAAc,+BAA+B,CAAA,CAAG;AAAA,MACnF;AAAA,IAAA;AAAA,EAEF;AACD;;"}
1
+ {"version":3,"file":"OIDCProvider.cjs","sources":["../../../../../../../../packages/engine-tenant-api/src/model/service/idp/providers/OIDCProvider.ts"],"sourcesContent":["import { Client, Issuer } from 'openid-client'\nimport { IdentityProviderHandler, IDPResponse, InitIDPAuthResult } from '../IdentityProviderHandler'\nimport { InvalidIDPConfigurationError } from '../InvalidIDPConfigurationError'\nimport { catchTypesafe } from './helpers'\nimport { OIDCConfiguration, OIDCInitData, OIDCResponseData } from './OIDCTypes'\nimport { handleOIDCResponse, initOIDCAuth } from './OIDCHelpers'\nimport { IDPValidationError } from '../IDPValidationError'\n\n\nexport class OIDCProvider implements IdentityProviderHandler<OIDCConfiguration> {\n\tprivate issuerCache: Record<string, Issuer<Client>> = {}\n\n\tvalidateConfiguration = catchTypesafe(OIDCConfiguration, InvalidIDPConfigurationError)\n\n\tpublic async initAuth(configuration: OIDCConfiguration, data: unknown): Promise<InitIDPAuthResult> {\n\t\tconst initData = catchTypesafe(OIDCInitData, IDPValidationError)(data)\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn await initOIDCAuth(client, {\n\t\t\tscope: configuration.scope ?? configuration.claims,\n\t\t\t...initData,\n\t\t})\n\t}\n\n\tpublic async processResponse(configuration: OIDCConfiguration, data: unknown): Promise<IDPResponse> {\n\t\tconst responseData = catchTypesafe(OIDCResponseData, IDPValidationError)(data)\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn await handleOIDCResponse(\n\t\t\tclient,\n\t\t\tresponseData,\n\t\t\tconfiguration.fetchUserInfo,\n\t\t\tconfiguration.returnOIDCResult,\n\t\t)\n\t}\n\n\n\tgetPublicConfiguration({ clientSecret, ...config }: OIDCConfiguration): Partial<OIDCConfiguration> {\n\t\treturn config\n\t}\n\n\tprivate async createOIDCClient(configuration: OIDCConfiguration): Promise<Client> {\n\t\tthis.issuerCache[configuration.url] ??= await Issuer.discover(configuration.url)\n\n\t\treturn new this.issuerCache[configuration.url].Client(\n\t\t\t{\n\t\t\t\tclient_id: configuration.clientId,\n\t\t\t\tclient_secret: configuration.clientSecret,\n\t\t\t\tresponse_types: [configuration.responseType || 'code'],\n\t\t\t\tid_token_signed_response_alg: configuration.idTokenSignedResponseAlg ?? 'RS256',\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{\n\t\t\t\tadditionalAuthorizedParties: [...(configuration.additionalAuthorizedParties ?? [])],\n\t\t\t},\n\t\t)\n\t}\n}\n"],"names":["catchTypesafe","OIDCConfiguration","InvalidIDPConfigurationError","OIDCInitData","IDPValidationError","initOIDCAuth","OIDCResponseData","handleOIDCResponse","Issuer"],"mappings":";;;;;;;;;;;AASO,MAAM,aAAmE;AAAA,EAAzE,cAAA;AACN,kBAAA,MAAQ,eAA8C,EAAC;AAE/B,kBAAA,MAAA,yBAAAA,QAAA,cAAcC,6BAAmBC,6BAA4B,4BAAA,CAAA;AAAA,EAAA;AAAA,EAErF,MAAa,SAAS,eAAkC,MAA2C;AAClG,UAAM,WAAWF,QAAA,cAAcG,UAAc,cAAAC,mBAAkB,kBAAA,EAAE,IAAI;AACrE,UAAM,SAAS,MAAM,KAAK,iBAAiB,aAAa;AACjD,WAAA,MAAMC,yBAAa,QAAQ;AAAA,MACjC,OAAO,cAAc,SAAS,cAAc;AAAA,MAC5C,GAAG;AAAA,IAAA,CACH;AAAA,EAAA;AAAA,EAGF,MAAa,gBAAgB,eAAkC,MAAqC;AACnG,UAAM,eAAeL,QAAA,cAAcM,UAAkB,kBAAAF,mBAAkB,kBAAA,EAAE,IAAI;AAC7E,UAAM,SAAS,MAAM,KAAK,iBAAiB,aAAa;AACxD,WAAO,MAAMG,YAAA;AAAA,MACZ;AAAA,MACA;AAAA,MACA,cAAc;AAAA,MACd,cAAc;AAAA,IACf;AAAA,EAAA;AAAA,EAID,uBAAuB,EAAE,cAAc,GAAG,UAAyD;AAC3F,WAAA;AAAA,EAAA;AAAA,EAGR,MAAc,iBAAiB,eAAmD;AAvCnF,QAAA,IAAA;AAwCO,KAAA,KAAA,KAAA,aAAL,KAAiB,cAAc,GAAA,MAA/B,SAAwC,MAAMC,aAAA,OAAO,SAAS,cAAc,GAAG;AAE/E,WAAO,IAAI,KAAK,YAAY,cAAc,GAAG,EAAE;AAAA,MAC9C;AAAA,QACC,WAAW,cAAc;AAAA,QACzB,eAAe,cAAc;AAAA,QAC7B,gBAAgB,CAAC,cAAc,gBAAgB,MAAM;AAAA,QACrD,8BAA8B,cAAc,4BAA4B;AAAA,MACzE;AAAA,MACA;AAAA,MACA;AAAA,QACC,6BAA6B,CAAC,GAAI,cAAc,+BAA+B,CAAG,CAAA;AAAA,MAAA;AAAA,IAEpF;AAAA,EAAA;AAEF;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"OIDCProvider.js","sources":["../../../../../../../../packages/engine-tenant-api/src/model/service/idp/providers/OIDCProvider.ts"],"sourcesContent":["import { Client, Issuer } from 'openid-client'\nimport { IdentityProviderHandler, IDPResponse, InitIDPAuthResult } from '../IdentityProviderHandler'\nimport { InvalidIDPConfigurationError } from '../InvalidIDPConfigurationError'\nimport { catchTypesafe } from './helpers'\nimport { OIDCConfiguration, OIDCInitData, OIDCResponseData } from './OIDCTypes'\nimport { handleOIDCResponse, initOIDCAuth } from './OIDCHelpers'\nimport { IDPValidationError } from '../IDPValidationError'\n\n\nexport class OIDCProvider implements IdentityProviderHandler<OIDCConfiguration> {\n\tprivate issuerCache: Record<string, Issuer<Client>> = {}\n\n\tvalidateConfiguration = catchTypesafe(OIDCConfiguration, InvalidIDPConfigurationError)\n\n\tpublic async initAuth(configuration: OIDCConfiguration, data: unknown): Promise<InitIDPAuthResult> {\n\t\tconst initData = catchTypesafe(OIDCInitData, IDPValidationError)(data)\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn await initOIDCAuth(client, {\n\t\t\tscope: configuration.scope ?? configuration.claims,\n\t\t\t...initData,\n\t\t})\n\t}\n\n\tpublic async processResponse(configuration: OIDCConfiguration, data: unknown): Promise<IDPResponse> {\n\t\tconst responseData = catchTypesafe(OIDCResponseData, IDPValidationError)(data)\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn await handleOIDCResponse(\n\t\t\tclient,\n\t\t\tresponseData,\n\t\t\tconfiguration.fetchUserInfo,\n\t\t\tconfiguration.returnOIDCResult,\n\t\t)\n\t}\n\n\n\tgetPublicConfiguration({ clientSecret, ...config }: OIDCConfiguration): Partial<OIDCConfiguration> {\n\t\treturn config\n\t}\n\n\tprivate async createOIDCClient(configuration: OIDCConfiguration): Promise<Client> {\n\t\tthis.issuerCache[configuration.url] ??= await Issuer.discover(configuration.url)\n\n\t\treturn new this.issuerCache[configuration.url].Client(\n\t\t\t{\n\t\t\t\tclient_id: configuration.clientId,\n\t\t\t\tclient_secret: configuration.clientSecret,\n\t\t\t\tresponse_types: [configuration.responseType || 'code'],\n\t\t\t\tid_token_signed_response_alg: configuration.idTokenSignedResponseAlg ?? 'RS256',\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{\n\t\t\t\tadditionalAuthorizedParties: [...(configuration.additionalAuthorizedParties ?? [])],\n\t\t\t},\n\t\t)\n\t}\n}\n"],"names":[],"mappings":";;;;;;;;;AASO,MAAM,aAAmE;AAAA,EAAzE,cAAA;AACN,kBAAA,MAAQ,eAA8C,CAAA,CAAC;AAE/B,kBAAA,MAAA,yBAAA,cAAc,mBAAmB,4BAA4B,CAAA;AAAA,EAAA;AAAA,EAErF,MAAa,SAAS,eAAkC,MAA2C;AAClG,UAAM,WAAW,cAAc,cAAc,kBAAkB,EAAE,IAAI;AACrE,UAAM,SAAS,MAAM,KAAK,iBAAiB,aAAa;AACjD,WAAA,MAAM,aAAa,QAAQ;AAAA,MACjC,OAAO,cAAc,SAAS,cAAc;AAAA,MAC5C,GAAG;AAAA,IAAA,CACH;AAAA,EACF;AAAA,EAEA,MAAa,gBAAgB,eAAkC,MAAqC;AACnG,UAAM,eAAe,cAAc,kBAAkB,kBAAkB,EAAE,IAAI;AAC7E,UAAM,SAAS,MAAM,KAAK,iBAAiB,aAAa;AACxD,WAAO,MAAM;AAAA,MACZ;AAAA,MACA;AAAA,MACA,cAAc;AAAA,MACd,cAAc;AAAA,IAAA;AAAA,EAEhB;AAAA,EAGA,uBAAuB,EAAE,cAAc,GAAG,UAAyD;AAC3F,WAAA;AAAA,EACR;AAAA,EAEA,MAAc,iBAAiB,eAAmD;AAvCnF,QAAA,IAAA;AAwCO,KAAA,KAAA,KAAA,aAAL,KAAiB,cAAc,GAAA,MAA/B,SAAwC,MAAM,OAAO,SAAS,cAAc,GAAG;AAE/E,WAAO,IAAI,KAAK,YAAY,cAAc,GAAG,EAAE;AAAA,MAC9C;AAAA,QACC,WAAW,cAAc;AAAA,QACzB,eAAe,cAAc;AAAA,QAC7B,gBAAgB,CAAC,cAAc,gBAAgB,MAAM;AAAA,QACrD,8BAA8B,cAAc,4BAA4B;AAAA,MACzE;AAAA,MACA;AAAA,MACA;AAAA,QACC,6BAA6B,CAAC,GAAI,cAAc,+BAA+B,CAAA,CAAG;AAAA,MACnF;AAAA,IAAA;AAAA,EAEF;AACD;"}
1
+ {"version":3,"file":"OIDCProvider.js","sources":["../../../../../../../../packages/engine-tenant-api/src/model/service/idp/providers/OIDCProvider.ts"],"sourcesContent":["import { Client, Issuer } from 'openid-client'\nimport { IdentityProviderHandler, IDPResponse, InitIDPAuthResult } from '../IdentityProviderHandler'\nimport { InvalidIDPConfigurationError } from '../InvalidIDPConfigurationError'\nimport { catchTypesafe } from './helpers'\nimport { OIDCConfiguration, OIDCInitData, OIDCResponseData } from './OIDCTypes'\nimport { handleOIDCResponse, initOIDCAuth } from './OIDCHelpers'\nimport { IDPValidationError } from '../IDPValidationError'\n\n\nexport class OIDCProvider implements IdentityProviderHandler<OIDCConfiguration> {\n\tprivate issuerCache: Record<string, Issuer<Client>> = {}\n\n\tvalidateConfiguration = catchTypesafe(OIDCConfiguration, InvalidIDPConfigurationError)\n\n\tpublic async initAuth(configuration: OIDCConfiguration, data: unknown): Promise<InitIDPAuthResult> {\n\t\tconst initData = catchTypesafe(OIDCInitData, IDPValidationError)(data)\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn await initOIDCAuth(client, {\n\t\t\tscope: configuration.scope ?? configuration.claims,\n\t\t\t...initData,\n\t\t})\n\t}\n\n\tpublic async processResponse(configuration: OIDCConfiguration, data: unknown): Promise<IDPResponse> {\n\t\tconst responseData = catchTypesafe(OIDCResponseData, IDPValidationError)(data)\n\t\tconst client = await this.createOIDCClient(configuration)\n\t\treturn await handleOIDCResponse(\n\t\t\tclient,\n\t\t\tresponseData,\n\t\t\tconfiguration.fetchUserInfo,\n\t\t\tconfiguration.returnOIDCResult,\n\t\t)\n\t}\n\n\n\tgetPublicConfiguration({ clientSecret, ...config }: OIDCConfiguration): Partial<OIDCConfiguration> {\n\t\treturn config\n\t}\n\n\tprivate async createOIDCClient(configuration: OIDCConfiguration): Promise<Client> {\n\t\tthis.issuerCache[configuration.url] ??= await Issuer.discover(configuration.url)\n\n\t\treturn new this.issuerCache[configuration.url].Client(\n\t\t\t{\n\t\t\t\tclient_id: configuration.clientId,\n\t\t\t\tclient_secret: configuration.clientSecret,\n\t\t\t\tresponse_types: [configuration.responseType || 'code'],\n\t\t\t\tid_token_signed_response_alg: configuration.idTokenSignedResponseAlg ?? 'RS256',\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{\n\t\t\t\tadditionalAuthorizedParties: [...(configuration.additionalAuthorizedParties ?? [])],\n\t\t\t},\n\t\t)\n\t}\n}\n"],"names":[],"mappings":";;;;;;;;;AASO,MAAM,aAAmE;AAAA,EAAzE,cAAA;AACN,kBAAA,MAAQ,eAA8C,EAAC;AAE/B,kBAAA,MAAA,yBAAA,cAAc,mBAAmB,4BAA4B,CAAA;AAAA,EAAA;AAAA,EAErF,MAAa,SAAS,eAAkC,MAA2C;AAClG,UAAM,WAAW,cAAc,cAAc,kBAAkB,EAAE,IAAI;AACrE,UAAM,SAAS,MAAM,KAAK,iBAAiB,aAAa;AACjD,WAAA,MAAM,aAAa,QAAQ;AAAA,MACjC,OAAO,cAAc,SAAS,cAAc;AAAA,MAC5C,GAAG;AAAA,IAAA,CACH;AAAA,EAAA;AAAA,EAGF,MAAa,gBAAgB,eAAkC,MAAqC;AACnG,UAAM,eAAe,cAAc,kBAAkB,kBAAkB,EAAE,IAAI;AAC7E,UAAM,SAAS,MAAM,KAAK,iBAAiB,aAAa;AACxD,WAAO,MAAM;AAAA,MACZ;AAAA,MACA;AAAA,MACA,cAAc;AAAA,MACd,cAAc;AAAA,IACf;AAAA,EAAA;AAAA,EAID,uBAAuB,EAAE,cAAc,GAAG,UAAyD;AAC3F,WAAA;AAAA,EAAA;AAAA,EAGR,MAAc,iBAAiB,eAAmD;AAvCnF,QAAA,IAAA;AAwCO,KAAA,KAAA,KAAA,aAAL,KAAiB,cAAc,GAAA,MAA/B,SAAwC,MAAM,OAAO,SAAS,cAAc,GAAG;AAE/E,WAAO,IAAI,KAAK,YAAY,cAAc,GAAG,EAAE;AAAA,MAC9C;AAAA,QACC,WAAW,cAAc;AAAA,QACzB,eAAe,cAAc;AAAA,QAC7B,gBAAgB,CAAC,cAAc,gBAAgB,MAAM;AAAA,QACrD,8BAA8B,cAAc,4BAA4B;AAAA,MACzE;AAAA,MACA;AAAA,MACA;AAAA,QACC,6BAA6B,CAAC,GAAI,cAAc,+BAA+B,CAAG,CAAA;AAAA,MAAA;AAAA,IAEpF;AAAA,EAAA;AAEF;"}
@@ -1 +1 @@
1
- {"version":3,"file":"OIDCTypes.cjs","sources":["../../../../../../../../packages/engine-tenant-api/src/model/service/idp/providers/OIDCTypes.ts"],"sourcesContent":["import * as Typesafe from '@contember/typesafe'\nimport { ResponseType } from 'openid-client'\n\nexport interface OIDCSessionData {\n\tnonce: string\n\tstate: string\n}\n\nexport const OIDCConfigurationOptions = Typesafe.partial({\n\tresponseType: Typesafe.enumeration<ResponseType>('code', 'code id_token', 'code id_token token', 'code token', 'id_token', 'id_token token', 'none'),\n\tclaims: Typesafe.string, // deprecated, use scope instead\n\tscope: Typesafe.string,\n\tadditionalAuthorizedParties: Typesafe.array(Typesafe.string),\n\tidTokenSignedResponseAlg: Typesafe.string,\n\tfetchUserInfo: Typesafe.boolean,\n\treturnOIDCResult: Typesafe.boolean,\n})\nexport const BaseOIDCConfiguration = Typesafe.intersection(\n\tTypesafe.object({\n\t\turl: Typesafe.string,\n\t\tclientId: Typesafe.string,\n\t\tclientSecret: Typesafe.string,\n\t}),\n\tOIDCConfigurationOptions,\n)\n\nexport const OIDCConfiguration = Typesafe.intersection(\n\tBaseOIDCConfiguration,\n\tTypesafe.object({\n\t\turl: Typesafe.string,\n\t}),\n)\n\nexport type OIDCConfiguration = ReturnType<typeof OIDCConfiguration>\n\nexport const OIDCResponseData = Typesafe.intersection(\n\tTypesafe.union(\n\t\tTypesafe.object({\n\t\t\turl: Typesafe.string,\n\t\t}),\n\t\tTypesafe.object({\n\t\t\tparameters: Typesafe.record(Typesafe.string, Typesafe.string),\n\t\t}),\n\t),\n\tTypesafe.partial({\n\t\tredirectUrl: Typesafe.string,\n\t\tsessionData: Typesafe.partial({\n\t\t\tnonce: Typesafe.string,\n\t\t\tstate: Typesafe.string,\n\t\t}),\n\n\t}),\n)\n\nexport type OIDCResponseData = ReturnType<typeof OIDCResponseData>\n\nexport const OIDCInitData = Typesafe.noExtraProps(Typesafe.intersection(\n\tTypesafe.object({\n\t\tredirectUrl: Typesafe.string,\n\t}),\n\tTypesafe.partial({\n\t\tresponseMode: Typesafe.string,\n\t}),\n))\n\nexport type OIDCInitData = ReturnType<typeof OIDCInitData>\n"],"names":["Typesafe"],"mappings":";;;;;;;;;;;;;;;;;;;;AAQa,MAAA,2BAA2BA,oBAAS,QAAQ;AAAA,EACxD,cAAcA,oBAAS,YAA0B,QAAQ,iBAAiB,uBAAuB,cAAc,YAAY,kBAAkB,MAAM;AAAA,EACnJ,QAAQA,oBAAS;AAAA;AAAA,EACjB,OAAOA,oBAAS;AAAA,EAChB,6BAA6BA,oBAAS,MAAMA,oBAAS,MAAM;AAAA,EAC3D,0BAA0BA,oBAAS;AAAA,EACnC,eAAeA,oBAAS;AAAA,EACxB,kBAAkBA,oBAAS;AAC5B,CAAC;AACM,MAAM,wBAAwBA,oBAAS;AAAA,EAC7CA,oBAAS,OAAO;AAAA,IACf,KAAKA,oBAAS;AAAA,IACd,UAAUA,oBAAS;AAAA,IACnB,cAAcA,oBAAS;AAAA,EAAA,CACvB;AAAA,EACD;AACD;AAEO,MAAM,oBAAoBA,oBAAS;AAAA,EACzC;AAAA,EACAA,oBAAS,OAAO;AAAA,IACf,KAAKA,oBAAS;AAAA,EAAA,CACd;AACF;AAIO,MAAM,mBAAmBA,oBAAS;AAAA,EACxCA,oBAAS;AAAA,IACRA,oBAAS,OAAO;AAAA,MACf,KAAKA,oBAAS;AAAA,IAAA,CACd;AAAA,IACDA,oBAAS,OAAO;AAAA,MACf,YAAYA,oBAAS,OAAOA,oBAAS,QAAQA,oBAAS,MAAM;AAAA,IAAA,CAC5D;AAAA,EACF;AAAA,EACAA,oBAAS,QAAQ;AAAA,IAChB,aAAaA,oBAAS;AAAA,IACtB,aAAaA,oBAAS,QAAQ;AAAA,MAC7B,OAAOA,oBAAS;AAAA,MAChB,OAAOA,oBAAS;AAAA,IAAA,CAChB;AAAA,EAAA,CAED;AACF;AAIa,MAAA,eAAeA,oBAAS,aAAaA,oBAAS;AAAA,EAC1DA,oBAAS,OAAO;AAAA,IACf,aAAaA,oBAAS;AAAA,EAAA,CACtB;AAAA,EACDA,oBAAS,QAAQ;AAAA,IAChB,cAAcA,oBAAS;AAAA,EAAA,CACvB;AACF,CAAC;;;;;;"}
1
+ {"version":3,"file":"OIDCTypes.cjs","sources":["../../../../../../../../packages/engine-tenant-api/src/model/service/idp/providers/OIDCTypes.ts"],"sourcesContent":["import * as Typesafe from '@contember/typesafe'\nimport { ResponseType } from 'openid-client'\n\nexport interface OIDCSessionData {\n\tnonce: string\n\tstate: string\n}\n\nexport const OIDCConfigurationOptions = Typesafe.partial({\n\tresponseType: Typesafe.enumeration<ResponseType>('code', 'code id_token', 'code id_token token', 'code token', 'id_token', 'id_token token', 'none'),\n\tclaims: Typesafe.string, // deprecated, use scope instead\n\tscope: Typesafe.string,\n\tadditionalAuthorizedParties: Typesafe.array(Typesafe.string),\n\tidTokenSignedResponseAlg: Typesafe.string,\n\tfetchUserInfo: Typesafe.boolean,\n\treturnOIDCResult: Typesafe.boolean,\n})\nexport const BaseOIDCConfiguration = Typesafe.intersection(\n\tTypesafe.object({\n\t\turl: Typesafe.string,\n\t\tclientId: Typesafe.string,\n\t\tclientSecret: Typesafe.string,\n\t}),\n\tOIDCConfigurationOptions,\n)\n\nexport const OIDCConfiguration = Typesafe.intersection(\n\tBaseOIDCConfiguration,\n\tTypesafe.object({\n\t\turl: Typesafe.string,\n\t}),\n)\n\nexport type OIDCConfiguration = ReturnType<typeof OIDCConfiguration>\n\nexport const OIDCResponseData = Typesafe.intersection(\n\tTypesafe.union(\n\t\tTypesafe.object({\n\t\t\turl: Typesafe.string,\n\t\t}),\n\t\tTypesafe.object({\n\t\t\tparameters: Typesafe.record(Typesafe.string, Typesafe.string),\n\t\t}),\n\t),\n\tTypesafe.partial({\n\t\tredirectUrl: Typesafe.string,\n\t\tsessionData: Typesafe.partial({\n\t\t\tnonce: Typesafe.string,\n\t\t\tstate: Typesafe.string,\n\t\t}),\n\n\t}),\n)\n\nexport type OIDCResponseData = ReturnType<typeof OIDCResponseData>\n\nexport const OIDCInitData = Typesafe.noExtraProps(Typesafe.intersection(\n\tTypesafe.object({\n\t\tredirectUrl: Typesafe.string,\n\t}),\n\tTypesafe.partial({\n\t\tresponseMode: Typesafe.string,\n\t}),\n))\n\nexport type OIDCInitData = ReturnType<typeof OIDCInitData>\n"],"names":["Typesafe"],"mappings":";;;;;;;;;;;;;;;;;;;;AAQa,MAAA,2BAA2BA,oBAAS,QAAQ;AAAA,EACxD,cAAcA,oBAAS,YAA0B,QAAQ,iBAAiB,uBAAuB,cAAc,YAAY,kBAAkB,MAAM;AAAA,EACnJ,QAAQA,oBAAS;AAAA;AAAA,EACjB,OAAOA,oBAAS;AAAA,EAChB,6BAA6BA,oBAAS,MAAMA,oBAAS,MAAM;AAAA,EAC3D,0BAA0BA,oBAAS;AAAA,EACnC,eAAeA,oBAAS;AAAA,EACxB,kBAAkBA,oBAAS;AAC5B,CAAC;AACM,MAAM,wBAAwBA,oBAAS;AAAA,EAC7CA,oBAAS,OAAO;AAAA,IACf,KAAKA,oBAAS;AAAA,IACd,UAAUA,oBAAS;AAAA,IACnB,cAAcA,oBAAS;AAAA,EAAA,CACvB;AAAA,EACD;AACD;AAEO,MAAM,oBAAoBA,oBAAS;AAAA,EACzC;AAAA,EACAA,oBAAS,OAAO;AAAA,IACf,KAAKA,oBAAS;AAAA,EACd,CAAA;AACF;AAIO,MAAM,mBAAmBA,oBAAS;AAAA,EACxCA,oBAAS;AAAA,IACRA,oBAAS,OAAO;AAAA,MACf,KAAKA,oBAAS;AAAA,IAAA,CACd;AAAA,IACDA,oBAAS,OAAO;AAAA,MACf,YAAYA,oBAAS,OAAOA,oBAAS,QAAQA,oBAAS,MAAM;AAAA,IAC5D,CAAA;AAAA,EACF;AAAA,EACAA,oBAAS,QAAQ;AAAA,IAChB,aAAaA,oBAAS;AAAA,IACtB,aAAaA,oBAAS,QAAQ;AAAA,MAC7B,OAAOA,oBAAS;AAAA,MAChB,OAAOA,oBAAS;AAAA,IAChB,CAAA;AAAA,EAED,CAAA;AACF;AAIa,MAAA,eAAeA,oBAAS,aAAaA,oBAAS;AAAA,EAC1DA,oBAAS,OAAO;AAAA,IACf,aAAaA,oBAAS;AAAA,EAAA,CACtB;AAAA,EACDA,oBAAS,QAAQ;AAAA,IAChB,cAAcA,oBAAS;AAAA,EACvB,CAAA;AACF,CAAC;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"OIDCTypes.js","sources":["../../../../../../../../packages/engine-tenant-api/src/model/service/idp/providers/OIDCTypes.ts"],"sourcesContent":["import * as Typesafe from '@contember/typesafe'\nimport { ResponseType } from 'openid-client'\n\nexport interface OIDCSessionData {\n\tnonce: string\n\tstate: string\n}\n\nexport const OIDCConfigurationOptions = Typesafe.partial({\n\tresponseType: Typesafe.enumeration<ResponseType>('code', 'code id_token', 'code id_token token', 'code token', 'id_token', 'id_token token', 'none'),\n\tclaims: Typesafe.string, // deprecated, use scope instead\n\tscope: Typesafe.string,\n\tadditionalAuthorizedParties: Typesafe.array(Typesafe.string),\n\tidTokenSignedResponseAlg: Typesafe.string,\n\tfetchUserInfo: Typesafe.boolean,\n\treturnOIDCResult: Typesafe.boolean,\n})\nexport const BaseOIDCConfiguration = Typesafe.intersection(\n\tTypesafe.object({\n\t\turl: Typesafe.string,\n\t\tclientId: Typesafe.string,\n\t\tclientSecret: Typesafe.string,\n\t}),\n\tOIDCConfigurationOptions,\n)\n\nexport const OIDCConfiguration = Typesafe.intersection(\n\tBaseOIDCConfiguration,\n\tTypesafe.object({\n\t\turl: Typesafe.string,\n\t}),\n)\n\nexport type OIDCConfiguration = ReturnType<typeof OIDCConfiguration>\n\nexport const OIDCResponseData = Typesafe.intersection(\n\tTypesafe.union(\n\t\tTypesafe.object({\n\t\t\turl: Typesafe.string,\n\t\t}),\n\t\tTypesafe.object({\n\t\t\tparameters: Typesafe.record(Typesafe.string, Typesafe.string),\n\t\t}),\n\t),\n\tTypesafe.partial({\n\t\tredirectUrl: Typesafe.string,\n\t\tsessionData: Typesafe.partial({\n\t\t\tnonce: Typesafe.string,\n\t\t\tstate: Typesafe.string,\n\t\t}),\n\n\t}),\n)\n\nexport type OIDCResponseData = ReturnType<typeof OIDCResponseData>\n\nexport const OIDCInitData = Typesafe.noExtraProps(Typesafe.intersection(\n\tTypesafe.object({\n\t\tredirectUrl: Typesafe.string,\n\t}),\n\tTypesafe.partial({\n\t\tresponseMode: Typesafe.string,\n\t}),\n))\n\nexport type OIDCInitData = ReturnType<typeof OIDCInitData>\n"],"names":[],"mappings":";AAQa,MAAA,2BAA2B,SAAS,QAAQ;AAAA,EACxD,cAAc,SAAS,YAA0B,QAAQ,iBAAiB,uBAAuB,cAAc,YAAY,kBAAkB,MAAM;AAAA,EACnJ,QAAQ,SAAS;AAAA;AAAA,EACjB,OAAO,SAAS;AAAA,EAChB,6BAA6B,SAAS,MAAM,SAAS,MAAM;AAAA,EAC3D,0BAA0B,SAAS;AAAA,EACnC,eAAe,SAAS;AAAA,EACxB,kBAAkB,SAAS;AAC5B,CAAC;AACM,MAAM,wBAAwB,SAAS;AAAA,EAC7C,SAAS,OAAO;AAAA,IACf,KAAK,SAAS;AAAA,IACd,UAAU,SAAS;AAAA,IACnB,cAAc,SAAS;AAAA,EAAA,CACvB;AAAA,EACD;AACD;AAEO,MAAM,oBAAoB,SAAS;AAAA,EACzC;AAAA,EACA,SAAS,OAAO;AAAA,IACf,KAAK,SAAS;AAAA,EAAA,CACd;AACF;AAIO,MAAM,mBAAmB,SAAS;AAAA,EACxC,SAAS;AAAA,IACR,SAAS,OAAO;AAAA,MACf,KAAK,SAAS;AAAA,IAAA,CACd;AAAA,IACD,SAAS,OAAO;AAAA,MACf,YAAY,SAAS,OAAO,SAAS,QAAQ,SAAS,MAAM;AAAA,IAAA,CAC5D;AAAA,EACF;AAAA,EACA,SAAS,QAAQ;AAAA,IAChB,aAAa,SAAS;AAAA,IACtB,aAAa,SAAS,QAAQ;AAAA,MAC7B,OAAO,SAAS;AAAA,MAChB,OAAO,SAAS;AAAA,IAAA,CAChB;AAAA,EAAA,CAED;AACF;AAIa,MAAA,eAAe,SAAS,aAAa,SAAS;AAAA,EAC1D,SAAS,OAAO;AAAA,IACf,aAAa,SAAS;AAAA,EAAA,CACtB;AAAA,EACD,SAAS,QAAQ;AAAA,IAChB,cAAc,SAAS;AAAA,EAAA,CACvB;AACF,CAAC;"}
1
+ {"version":3,"file":"OIDCTypes.js","sources":["../../../../../../../../packages/engine-tenant-api/src/model/service/idp/providers/OIDCTypes.ts"],"sourcesContent":["import * as Typesafe from '@contember/typesafe'\nimport { ResponseType } from 'openid-client'\n\nexport interface OIDCSessionData {\n\tnonce: string\n\tstate: string\n}\n\nexport const OIDCConfigurationOptions = Typesafe.partial({\n\tresponseType: Typesafe.enumeration<ResponseType>('code', 'code id_token', 'code id_token token', 'code token', 'id_token', 'id_token token', 'none'),\n\tclaims: Typesafe.string, // deprecated, use scope instead\n\tscope: Typesafe.string,\n\tadditionalAuthorizedParties: Typesafe.array(Typesafe.string),\n\tidTokenSignedResponseAlg: Typesafe.string,\n\tfetchUserInfo: Typesafe.boolean,\n\treturnOIDCResult: Typesafe.boolean,\n})\nexport const BaseOIDCConfiguration = Typesafe.intersection(\n\tTypesafe.object({\n\t\turl: Typesafe.string,\n\t\tclientId: Typesafe.string,\n\t\tclientSecret: Typesafe.string,\n\t}),\n\tOIDCConfigurationOptions,\n)\n\nexport const OIDCConfiguration = Typesafe.intersection(\n\tBaseOIDCConfiguration,\n\tTypesafe.object({\n\t\turl: Typesafe.string,\n\t}),\n)\n\nexport type OIDCConfiguration = ReturnType<typeof OIDCConfiguration>\n\nexport const OIDCResponseData = Typesafe.intersection(\n\tTypesafe.union(\n\t\tTypesafe.object({\n\t\t\turl: Typesafe.string,\n\t\t}),\n\t\tTypesafe.object({\n\t\t\tparameters: Typesafe.record(Typesafe.string, Typesafe.string),\n\t\t}),\n\t),\n\tTypesafe.partial({\n\t\tredirectUrl: Typesafe.string,\n\t\tsessionData: Typesafe.partial({\n\t\t\tnonce: Typesafe.string,\n\t\t\tstate: Typesafe.string,\n\t\t}),\n\n\t}),\n)\n\nexport type OIDCResponseData = ReturnType<typeof OIDCResponseData>\n\nexport const OIDCInitData = Typesafe.noExtraProps(Typesafe.intersection(\n\tTypesafe.object({\n\t\tredirectUrl: Typesafe.string,\n\t}),\n\tTypesafe.partial({\n\t\tresponseMode: Typesafe.string,\n\t}),\n))\n\nexport type OIDCInitData = ReturnType<typeof OIDCInitData>\n"],"names":[],"mappings":";AAQa,MAAA,2BAA2B,SAAS,QAAQ;AAAA,EACxD,cAAc,SAAS,YAA0B,QAAQ,iBAAiB,uBAAuB,cAAc,YAAY,kBAAkB,MAAM;AAAA,EACnJ,QAAQ,SAAS;AAAA;AAAA,EACjB,OAAO,SAAS;AAAA,EAChB,6BAA6B,SAAS,MAAM,SAAS,MAAM;AAAA,EAC3D,0BAA0B,SAAS;AAAA,EACnC,eAAe,SAAS;AAAA,EACxB,kBAAkB,SAAS;AAC5B,CAAC;AACM,MAAM,wBAAwB,SAAS;AAAA,EAC7C,SAAS,OAAO;AAAA,IACf,KAAK,SAAS;AAAA,IACd,UAAU,SAAS;AAAA,IACnB,cAAc,SAAS;AAAA,EAAA,CACvB;AAAA,EACD;AACD;AAEO,MAAM,oBAAoB,SAAS;AAAA,EACzC;AAAA,EACA,SAAS,OAAO;AAAA,IACf,KAAK,SAAS;AAAA,EACd,CAAA;AACF;AAIO,MAAM,mBAAmB,SAAS;AAAA,EACxC,SAAS;AAAA,IACR,SAAS,OAAO;AAAA,MACf,KAAK,SAAS;AAAA,IAAA,CACd;AAAA,IACD,SAAS,OAAO;AAAA,MACf,YAAY,SAAS,OAAO,SAAS,QAAQ,SAAS,MAAM;AAAA,IAC5D,CAAA;AAAA,EACF;AAAA,EACA,SAAS,QAAQ;AAAA,IAChB,aAAa,SAAS;AAAA,IACtB,aAAa,SAAS,QAAQ;AAAA,MAC7B,OAAO,SAAS;AAAA,MAChB,OAAO,SAAS;AAAA,IAChB,CAAA;AAAA,EAED,CAAA;AACF;AAIa,MAAA,eAAe,SAAS,aAAa,SAAS;AAAA,EAC1D,SAAS,OAAO;AAAA,IACf,aAAa,SAAS;AAAA,EAAA,CACtB;AAAA,EACD,SAAS,QAAQ;AAAA,IAChB,cAAc,SAAS;AAAA,EACvB,CAAA;AACF,CAAC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.cjs","sources":["../../../../../../../../packages/engine-tenant-api/src/model/service/idp/providers/helpers.ts"],"sourcesContent":["import * as Typesafe from '@contember/typesafe'\n\nexport const catchTypesafe = <T extends Typesafe.Json>(type: Typesafe.Type<T>, errorConstructor: { new(message: string): Error }) => (value: unknown): T => {\n\ttry {\n\t\treturn type(value)\n\t} catch (e) {\n\t\tif (e instanceof Typesafe.ParseError) {\n\t\t\tthrow new errorConstructor(e.message)\n\t\t}\n\t\tthrow e\n\t}\n}\n"],"names":["Typesafe"],"mappings":";;;;;;;;;;;;;;;;;;;;AAEO,MAAM,gBAAgB,CAA0B,MAAwB,qBAAsD,CAAC,UAAsB;AACvJ,MAAA;AACH,WAAO,KAAK,KAAK;AAAA,WACT,GAAG;AACP,QAAA,aAAaA,oBAAS,YAAY;AAC/B,YAAA,IAAI,iBAAiB,EAAE,OAAO;AAAA,IACrC;AACM,UAAA;AAAA,EACP;AACD;;"}
1
+ {"version":3,"file":"helpers.cjs","sources":["../../../../../../../../packages/engine-tenant-api/src/model/service/idp/providers/helpers.ts"],"sourcesContent":["import * as Typesafe from '@contember/typesafe'\n\nexport const catchTypesafe = <T extends Typesafe.Json>(type: Typesafe.Type<T>, errorConstructor: { new(message: string): Error }) => (value: unknown): T => {\n\ttry {\n\t\treturn type(value)\n\t} catch (e) {\n\t\tif (e instanceof Typesafe.ParseError) {\n\t\t\tthrow new errorConstructor(e.message)\n\t\t}\n\t\tthrow e\n\t}\n}\n"],"names":["Typesafe"],"mappings":";;;;;;;;;;;;;;;;;;;;AAEO,MAAM,gBAAgB,CAA0B,MAAwB,qBAAsD,CAAC,UAAsB;AACvJ,MAAA;AACH,WAAO,KAAK,KAAK;AAAA,WACT,GAAG;AACP,QAAA,aAAaA,oBAAS,YAAY;AAC/B,YAAA,IAAI,iBAAiB,EAAE,OAAO;AAAA,IAAA;AAE/B,UAAA;AAAA,EAAA;AAER;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sources":["../../../../../../../../packages/engine-tenant-api/src/model/service/idp/providers/helpers.ts"],"sourcesContent":["import * as Typesafe from '@contember/typesafe'\n\nexport const catchTypesafe = <T extends Typesafe.Json>(type: Typesafe.Type<T>, errorConstructor: { new(message: string): Error }) => (value: unknown): T => {\n\ttry {\n\t\treturn type(value)\n\t} catch (e) {\n\t\tif (e instanceof Typesafe.ParseError) {\n\t\t\tthrow new errorConstructor(e.message)\n\t\t}\n\t\tthrow e\n\t}\n}\n"],"names":[],"mappings":";AAEO,MAAM,gBAAgB,CAA0B,MAAwB,qBAAsD,CAAC,UAAsB;AACvJ,MAAA;AACH,WAAO,KAAK,KAAK;AAAA,WACT,GAAG;AACP,QAAA,aAAa,SAAS,YAAY;AAC/B,YAAA,IAAI,iBAAiB,EAAE,OAAO;AAAA,IACrC;AACM,UAAA;AAAA,EACP;AACD;"}
1
+ {"version":3,"file":"helpers.js","sources":["../../../../../../../../packages/engine-tenant-api/src/model/service/idp/providers/helpers.ts"],"sourcesContent":["import * as Typesafe from '@contember/typesafe'\n\nexport const catchTypesafe = <T extends Typesafe.Json>(type: Typesafe.Type<T>, errorConstructor: { new(message: string): Error }) => (value: unknown): T => {\n\ttry {\n\t\treturn type(value)\n\t} catch (e) {\n\t\tif (e instanceof Typesafe.ParseError) {\n\t\t\tthrow new errorConstructor(e.message)\n\t\t}\n\t\tthrow e\n\t}\n}\n"],"names":[],"mappings":";AAEO,MAAM,gBAAgB,CAA0B,MAAwB,qBAAsD,CAAC,UAAsB;AACvJ,MAAA;AACH,WAAO,KAAK,KAAK;AAAA,WACT,GAAG;AACP,QAAA,aAAa,SAAS,YAAY;AAC/B,YAAA,IAAI,iBAAiB,EAAE,OAAO;AAAA,IAAA;AAE/B,UAAA;AAAA,EAAA;AAER;"}
@@ -1 +1 @@
1
- {"version":3,"file":"membershipUtils.cjs","sources":["../../../../../../packages/engine-tenant-api/src/model/service/membershipUtils.ts"],"sourcesContent":["import { MembershipInput, MembershipUpdateInput, VariableUpdateInput } from '../commands'\nimport { Acl } from '@contember/schema'\n\nexport const createSetMembershipVariables = (memberships: readonly Acl.Membership[]): MembershipInput[] => {\n\treturn memberships.map(it => ({\n\t\trole: it.role,\n\t\tvariables: it.variables.map(it => ({ name: it.name, set: it.values })),\n\t}))\n}\nexport const createAppendMembershipVariables = (memberships: readonly Acl.Membership[]): MembershipInput[] => {\n\treturn memberships.map(it => ({\n\t\trole: it.role,\n\t\tvariables: it.variables.map(it => ({ name: it.name, append: it.values, remove: [] })),\n\t}))\n}\n\nexport const createMembershipModification = (\n\toldMemberships: readonly Acl.Membership[],\n\tnewMemberships: readonly Acl.Membership[],\n): MembershipUpdateInput[] => {\n\tconst input: MembershipUpdateInput[] = []\n\tfor (const membership of newMemberships) {\n\t\tconst old = oldMemberships.find(it => it.role === membership.role)\n\t\tif (!old) {\n\t\t\tinput.push({\n\t\t\t\trole: membership.role,\n\t\t\t\toperation: 'create',\n\t\t\t\tvariables: createMembershipVariablePatch([], membership.variables),\n\t\t\t})\n\t\t} else {\n\t\t\tinput.push({\n\t\t\t\trole: membership.role,\n\t\t\t\toperation: 'update',\n\t\t\t\tvariables: createMembershipVariablePatch(old.variables, membership.variables),\n\t\t\t})\n\t\t}\n\t}\n\tfor (const old of oldMemberships) {\n\t\tconst newMembership = newMemberships.find(it => it.role === old.role)\n\t\tif (!newMembership) {\n\t\t\tinput.push({\n\t\t\t\trole: old.role,\n\t\t\t\toperation: 'remove',\n\t\t\t\tvariables: createMembershipVariablePatch(old.variables, []), // for acl check\n\t\t\t})\n\t\t}\n\t}\n\n\treturn input\n}\n\nconst createMembershipVariablePatch = (\n\toldVariables: readonly Acl.MembershipVariable[],\n\tnewVariables: readonly Acl.MembershipVariable[],\n): VariableUpdateInput[] => {\n\tconst update: VariableUpdateInput[] = []\n\tconst varANames = newVariables.map(it => it.name)\n\tfor (const varA of newVariables) {\n\t\tconst varB = oldVariables.find(it => it.name === varA.name)\n\t\tif (!varB) {\n\t\t\tupdate.push({\n\t\t\t\tname: varA.name,\n\t\t\t\tset: varA.values,\n\t\t\t})\n\t\t} else {\n\t\t\tupdate.push({\n\t\t\t\tname: varA.name,\n\t\t\t\tappend: varA.values.filter(valA => !varB.values.includes(valA)),\n\t\t\t\tremove: varB.values.filter(valB => !varA.values.includes(valB)),\n\t\t\t})\n\t\t}\n\t}\n\tupdate.push(\n\t\t...oldVariables\n\t\t\t.filter(varB => !varANames.includes(varB.name))\n\t\t\t.map(it => ({\n\t\t\t\tname: it.name,\n\t\t\t\tset: [],\n\t\t\t})),\n\t)\n\treturn update\n}\n"],"names":["it"],"mappings":";;AAGa,MAAA,+BAA+B,CAAC,gBAA8D;AACnG,SAAA,YAAY,IAAI,CAAO,QAAA;AAAA,IAC7B,MAAM,GAAG;AAAA,IACT,WAAW,GAAG,UAAU,IAAI,CAAAA,SAAO,EAAE,MAAMA,IAAG,MAAM,KAAKA,IAAG,OAAS,EAAA;AAAA,EACpE,EAAA;AACH;AACa,MAAA,kCAAkC,CAAC,gBAA8D;AACtG,SAAA,YAAY,IAAI,CAAO,QAAA;AAAA,IAC7B,MAAM,GAAG;AAAA,IACT,WAAW,GAAG,UAAU,IAAI,CAAAA,SAAO,EAAE,MAAMA,IAAG,MAAM,QAAQA,IAAG,QAAQ,QAAQ,KAAK;AAAA,EACnF,EAAA;AACH;AAEa,MAAA,+BAA+B,CAC3C,gBACA,mBAC6B;AAC7B,QAAM,QAAiC,CAAA;AACvC,aAAW,cAAc,gBAAgB;AACxC,UAAM,MAAM,eAAe,KAAK,QAAM,GAAG,SAAS,WAAW,IAAI;AACjE,QAAI,CAAC,KAAK;AACT,YAAM,KAAK;AAAA,QACV,MAAM,WAAW;AAAA,QACjB,WAAW;AAAA,QACX,WAAW,8BAA8B,IAAI,WAAW,SAAS;AAAA,MAAA,CACjE;AAAA,IAAA,OACK;AACN,YAAM,KAAK;AAAA,QACV,MAAM,WAAW;AAAA,QACjB,WAAW;AAAA,QACX,WAAW,8BAA8B,IAAI,WAAW,WAAW,SAAS;AAAA,MAAA,CAC5E;AAAA,IACF;AAAA,EACD;AACA,aAAW,OAAO,gBAAgB;AACjC,UAAM,gBAAgB,eAAe,KAAK,QAAM,GAAG,SAAS,IAAI,IAAI;AACpE,QAAI,CAAC,eAAe;AACnB,YAAM,KAAK;AAAA,QACV,MAAM,IAAI;AAAA,QACV,WAAW;AAAA,QACX,WAAW,8BAA8B,IAAI,WAAW,CAAA,CAAE;AAAA;AAAA,MAAA,CAC1D;AAAA,IACF;AAAA,EACD;AAEO,SAAA;AACR;AAEA,MAAM,gCAAgC,CACrC,cACA,iBAC2B;AAC3B,QAAM,SAAgC,CAAA;AACtC,QAAM,YAAY,aAAa,IAAI,CAAA,OAAM,GAAG,IAAI;AAChD,aAAW,QAAQ,cAAc;AAChC,UAAM,OAAO,aAAa,KAAK,QAAM,GAAG,SAAS,KAAK,IAAI;AAC1D,QAAI,CAAC,MAAM;AACV,aAAO,KAAK;AAAA,QACX,MAAM,KAAK;AAAA,QACX,KAAK,KAAK;AAAA,MAAA,CACV;AAAA,IAAA,OACK;AACN,aAAO,KAAK;AAAA,QACX,MAAM,KAAK;AAAA,QACX,QAAQ,KAAK,OAAO,OAAO,CAAA,SAAQ,CAAC,KAAK,OAAO,SAAS,IAAI,CAAC;AAAA,QAC9D,QAAQ,KAAK,OAAO,OAAO,CAAA,SAAQ,CAAC,KAAK,OAAO,SAAS,IAAI,CAAC;AAAA,MAAA,CAC9D;AAAA,IACF;AAAA,EACD;AACO,SAAA;AAAA,IACN,GAAG,aACD,OAAO,CAAA,SAAQ,CAAC,UAAU,SAAS,KAAK,IAAI,CAAC,EAC7C,IAAI,CAAO,QAAA;AAAA,MACX,MAAM,GAAG;AAAA,MACT,KAAK,CAAC;AAAA,IAAA,EACL;AAAA,EAAA;AAEG,SAAA;AACR;;;;"}
1
+ {"version":3,"file":"membershipUtils.cjs","sources":["../../../../../../packages/engine-tenant-api/src/model/service/membershipUtils.ts"],"sourcesContent":["import { MembershipInput, MembershipUpdateInput, VariableUpdateInput } from '../commands'\nimport { Acl } from '@contember/schema'\n\nexport const createSetMembershipVariables = (memberships: readonly Acl.Membership[]): MembershipInput[] => {\n\treturn memberships.map(it => ({\n\t\trole: it.role,\n\t\tvariables: it.variables.map(it => ({ name: it.name, set: it.values })),\n\t}))\n}\nexport const createAppendMembershipVariables = (memberships: readonly Acl.Membership[]): MembershipInput[] => {\n\treturn memberships.map(it => ({\n\t\trole: it.role,\n\t\tvariables: it.variables.map(it => ({ name: it.name, append: it.values, remove: [] })),\n\t}))\n}\n\nexport const createMembershipModification = (\n\toldMemberships: readonly Acl.Membership[],\n\tnewMemberships: readonly Acl.Membership[],\n): MembershipUpdateInput[] => {\n\tconst input: MembershipUpdateInput[] = []\n\tfor (const membership of newMemberships) {\n\t\tconst old = oldMemberships.find(it => it.role === membership.role)\n\t\tif (!old) {\n\t\t\tinput.push({\n\t\t\t\trole: membership.role,\n\t\t\t\toperation: 'create',\n\t\t\t\tvariables: createMembershipVariablePatch([], membership.variables),\n\t\t\t})\n\t\t} else {\n\t\t\tinput.push({\n\t\t\t\trole: membership.role,\n\t\t\t\toperation: 'update',\n\t\t\t\tvariables: createMembershipVariablePatch(old.variables, membership.variables),\n\t\t\t})\n\t\t}\n\t}\n\tfor (const old of oldMemberships) {\n\t\tconst newMembership = newMemberships.find(it => it.role === old.role)\n\t\tif (!newMembership) {\n\t\t\tinput.push({\n\t\t\t\trole: old.role,\n\t\t\t\toperation: 'remove',\n\t\t\t\tvariables: createMembershipVariablePatch(old.variables, []), // for acl check\n\t\t\t})\n\t\t}\n\t}\n\n\treturn input\n}\n\nconst createMembershipVariablePatch = (\n\toldVariables: readonly Acl.MembershipVariable[],\n\tnewVariables: readonly Acl.MembershipVariable[],\n): VariableUpdateInput[] => {\n\tconst update: VariableUpdateInput[] = []\n\tconst varANames = newVariables.map(it => it.name)\n\tfor (const varA of newVariables) {\n\t\tconst varB = oldVariables.find(it => it.name === varA.name)\n\t\tif (!varB) {\n\t\t\tupdate.push({\n\t\t\t\tname: varA.name,\n\t\t\t\tset: varA.values,\n\t\t\t})\n\t\t} else {\n\t\t\tupdate.push({\n\t\t\t\tname: varA.name,\n\t\t\t\tappend: varA.values.filter(valA => !varB.values.includes(valA)),\n\t\t\t\tremove: varB.values.filter(valB => !varA.values.includes(valB)),\n\t\t\t})\n\t\t}\n\t}\n\tupdate.push(\n\t\t...oldVariables\n\t\t\t.filter(varB => !varANames.includes(varB.name))\n\t\t\t.map(it => ({\n\t\t\t\tname: it.name,\n\t\t\t\tset: [],\n\t\t\t})),\n\t)\n\treturn update\n}\n"],"names":["it"],"mappings":";;AAGa,MAAA,+BAA+B,CAAC,gBAA8D;AACnG,SAAA,YAAY,IAAI,CAAO,QAAA;AAAA,IAC7B,MAAM,GAAG;AAAA,IACT,WAAW,GAAG,UAAU,IAAI,CAAAA,SAAO,EAAE,MAAMA,IAAG,MAAM,KAAKA,IAAG,SAAS;AAAA,EAAA,EACpE;AACH;AACa,MAAA,kCAAkC,CAAC,gBAA8D;AACtG,SAAA,YAAY,IAAI,CAAO,QAAA;AAAA,IAC7B,MAAM,GAAG;AAAA,IACT,WAAW,GAAG,UAAU,IAAI,CAAAA,SAAO,EAAE,MAAMA,IAAG,MAAM,QAAQA,IAAG,QAAQ,QAAQ,KAAK;AAAA,EAAA,EACnF;AACH;AAEa,MAAA,+BAA+B,CAC3C,gBACA,mBAC6B;AAC7B,QAAM,QAAiC,CAAC;AACxC,aAAW,cAAc,gBAAgB;AACxC,UAAM,MAAM,eAAe,KAAK,QAAM,GAAG,SAAS,WAAW,IAAI;AACjE,QAAI,CAAC,KAAK;AACT,YAAM,KAAK;AAAA,QACV,MAAM,WAAW;AAAA,QACjB,WAAW;AAAA,QACX,WAAW,8BAA8B,IAAI,WAAW,SAAS;AAAA,MAAA,CACjE;AAAA,IAAA,OACK;AACN,YAAM,KAAK;AAAA,QACV,MAAM,WAAW;AAAA,QACjB,WAAW;AAAA,QACX,WAAW,8BAA8B,IAAI,WAAW,WAAW,SAAS;AAAA,MAAA,CAC5E;AAAA,IAAA;AAAA,EACF;AAED,aAAW,OAAO,gBAAgB;AACjC,UAAM,gBAAgB,eAAe,KAAK,QAAM,GAAG,SAAS,IAAI,IAAI;AACpE,QAAI,CAAC,eAAe;AACnB,YAAM,KAAK;AAAA,QACV,MAAM,IAAI;AAAA,QACV,WAAW;AAAA,QACX,WAAW,8BAA8B,IAAI,WAAW,CAAE,CAAA;AAAA;AAAA,MAAA,CAC1D;AAAA,IAAA;AAAA,EACF;AAGM,SAAA;AACR;AAEA,MAAM,gCAAgC,CACrC,cACA,iBAC2B;AAC3B,QAAM,SAAgC,CAAC;AACvC,QAAM,YAAY,aAAa,IAAI,CAAA,OAAM,GAAG,IAAI;AAChD,aAAW,QAAQ,cAAc;AAChC,UAAM,OAAO,aAAa,KAAK,QAAM,GAAG,SAAS,KAAK,IAAI;AAC1D,QAAI,CAAC,MAAM;AACV,aAAO,KAAK;AAAA,QACX,MAAM,KAAK;AAAA,QACX,KAAK,KAAK;AAAA,MAAA,CACV;AAAA,IAAA,OACK;AACN,aAAO,KAAK;AAAA,QACX,MAAM,KAAK;AAAA,QACX,QAAQ,KAAK,OAAO,OAAO,CAAA,SAAQ,CAAC,KAAK,OAAO,SAAS,IAAI,CAAC;AAAA,QAC9D,QAAQ,KAAK,OAAO,OAAO,CAAA,SAAQ,CAAC,KAAK,OAAO,SAAS,IAAI,CAAC;AAAA,MAAA,CAC9D;AAAA,IAAA;AAAA,EACF;AAEM,SAAA;AAAA,IACN,GAAG,aACD,OAAO,CAAA,SAAQ,CAAC,UAAU,SAAS,KAAK,IAAI,CAAC,EAC7C,IAAI,CAAO,QAAA;AAAA,MACX,MAAM,GAAG;AAAA,MACT,KAAK,CAAA;AAAA,IAAC,EACL;AAAA,EACJ;AACO,SAAA;AACR;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"membershipUtils.js","sources":["../../../../../../packages/engine-tenant-api/src/model/service/membershipUtils.ts"],"sourcesContent":["import { MembershipInput, MembershipUpdateInput, VariableUpdateInput } from '../commands'\nimport { Acl } from '@contember/schema'\n\nexport const createSetMembershipVariables = (memberships: readonly Acl.Membership[]): MembershipInput[] => {\n\treturn memberships.map(it => ({\n\t\trole: it.role,\n\t\tvariables: it.variables.map(it => ({ name: it.name, set: it.values })),\n\t}))\n}\nexport const createAppendMembershipVariables = (memberships: readonly Acl.Membership[]): MembershipInput[] => {\n\treturn memberships.map(it => ({\n\t\trole: it.role,\n\t\tvariables: it.variables.map(it => ({ name: it.name, append: it.values, remove: [] })),\n\t}))\n}\n\nexport const createMembershipModification = (\n\toldMemberships: readonly Acl.Membership[],\n\tnewMemberships: readonly Acl.Membership[],\n): MembershipUpdateInput[] => {\n\tconst input: MembershipUpdateInput[] = []\n\tfor (const membership of newMemberships) {\n\t\tconst old = oldMemberships.find(it => it.role === membership.role)\n\t\tif (!old) {\n\t\t\tinput.push({\n\t\t\t\trole: membership.role,\n\t\t\t\toperation: 'create',\n\t\t\t\tvariables: createMembershipVariablePatch([], membership.variables),\n\t\t\t})\n\t\t} else {\n\t\t\tinput.push({\n\t\t\t\trole: membership.role,\n\t\t\t\toperation: 'update',\n\t\t\t\tvariables: createMembershipVariablePatch(old.variables, membership.variables),\n\t\t\t})\n\t\t}\n\t}\n\tfor (const old of oldMemberships) {\n\t\tconst newMembership = newMemberships.find(it => it.role === old.role)\n\t\tif (!newMembership) {\n\t\t\tinput.push({\n\t\t\t\trole: old.role,\n\t\t\t\toperation: 'remove',\n\t\t\t\tvariables: createMembershipVariablePatch(old.variables, []), // for acl check\n\t\t\t})\n\t\t}\n\t}\n\n\treturn input\n}\n\nconst createMembershipVariablePatch = (\n\toldVariables: readonly Acl.MembershipVariable[],\n\tnewVariables: readonly Acl.MembershipVariable[],\n): VariableUpdateInput[] => {\n\tconst update: VariableUpdateInput[] = []\n\tconst varANames = newVariables.map(it => it.name)\n\tfor (const varA of newVariables) {\n\t\tconst varB = oldVariables.find(it => it.name === varA.name)\n\t\tif (!varB) {\n\t\t\tupdate.push({\n\t\t\t\tname: varA.name,\n\t\t\t\tset: varA.values,\n\t\t\t})\n\t\t} else {\n\t\t\tupdate.push({\n\t\t\t\tname: varA.name,\n\t\t\t\tappend: varA.values.filter(valA => !varB.values.includes(valA)),\n\t\t\t\tremove: varB.values.filter(valB => !varA.values.includes(valB)),\n\t\t\t})\n\t\t}\n\t}\n\tupdate.push(\n\t\t...oldVariables\n\t\t\t.filter(varB => !varANames.includes(varB.name))\n\t\t\t.map(it => ({\n\t\t\t\tname: it.name,\n\t\t\t\tset: [],\n\t\t\t})),\n\t)\n\treturn update\n}\n"],"names":["it"],"mappings":"AAGa,MAAA,+BAA+B,CAAC,gBAA8D;AACnG,SAAA,YAAY,IAAI,CAAO,QAAA;AAAA,IAC7B,MAAM,GAAG;AAAA,IACT,WAAW,GAAG,UAAU,IAAI,CAAAA,SAAO,EAAE,MAAMA,IAAG,MAAM,KAAKA,IAAG,OAAS,EAAA;AAAA,EACpE,EAAA;AACH;AACa,MAAA,kCAAkC,CAAC,gBAA8D;AACtG,SAAA,YAAY,IAAI,CAAO,QAAA;AAAA,IAC7B,MAAM,GAAG;AAAA,IACT,WAAW,GAAG,UAAU,IAAI,CAAAA,SAAO,EAAE,MAAMA,IAAG,MAAM,QAAQA,IAAG,QAAQ,QAAQ,KAAK;AAAA,EACnF,EAAA;AACH;AAEa,MAAA,+BAA+B,CAC3C,gBACA,mBAC6B;AAC7B,QAAM,QAAiC,CAAA;AACvC,aAAW,cAAc,gBAAgB;AACxC,UAAM,MAAM,eAAe,KAAK,QAAM,GAAG,SAAS,WAAW,IAAI;AACjE,QAAI,CAAC,KAAK;AACT,YAAM,KAAK;AAAA,QACV,MAAM,WAAW;AAAA,QACjB,WAAW;AAAA,QACX,WAAW,8BAA8B,IAAI,WAAW,SAAS;AAAA,MAAA,CACjE;AAAA,IAAA,OACK;AACN,YAAM,KAAK;AAAA,QACV,MAAM,WAAW;AAAA,QACjB,WAAW;AAAA,QACX,WAAW,8BAA8B,IAAI,WAAW,WAAW,SAAS;AAAA,MAAA,CAC5E;AAAA,IACF;AAAA,EACD;AACA,aAAW,OAAO,gBAAgB;AACjC,UAAM,gBAAgB,eAAe,KAAK,QAAM,GAAG,SAAS,IAAI,IAAI;AACpE,QAAI,CAAC,eAAe;AACnB,YAAM,KAAK;AAAA,QACV,MAAM,IAAI;AAAA,QACV,WAAW;AAAA,QACX,WAAW,8BAA8B,IAAI,WAAW,CAAA,CAAE;AAAA;AAAA,MAAA,CAC1D;AAAA,IACF;AAAA,EACD;AAEO,SAAA;AACR;AAEA,MAAM,gCAAgC,CACrC,cACA,iBAC2B;AAC3B,QAAM,SAAgC,CAAA;AACtC,QAAM,YAAY,aAAa,IAAI,CAAA,OAAM,GAAG,IAAI;AAChD,aAAW,QAAQ,cAAc;AAChC,UAAM,OAAO,aAAa,KAAK,QAAM,GAAG,SAAS,KAAK,IAAI;AAC1D,QAAI,CAAC,MAAM;AACV,aAAO,KAAK;AAAA,QACX,MAAM,KAAK;AAAA,QACX,KAAK,KAAK;AAAA,MAAA,CACV;AAAA,IAAA,OACK;AACN,aAAO,KAAK;AAAA,QACX,MAAM,KAAK;AAAA,QACX,QAAQ,KAAK,OAAO,OAAO,CAAA,SAAQ,CAAC,KAAK,OAAO,SAAS,IAAI,CAAC;AAAA,QAC9D,QAAQ,KAAK,OAAO,OAAO,CAAA,SAAQ,CAAC,KAAK,OAAO,SAAS,IAAI,CAAC;AAAA,MAAA,CAC9D;AAAA,IACF;AAAA,EACD;AACO,SAAA;AAAA,IACN,GAAG,aACD,OAAO,CAAA,SAAQ,CAAC,UAAU,SAAS,KAAK,IAAI,CAAC,EAC7C,IAAI,CAAO,QAAA;AAAA,MACX,MAAM,GAAG;AAAA,MACT,KAAK,CAAC;AAAA,IAAA,EACL;AAAA,EAAA;AAEG,SAAA;AACR;"}
1
+ {"version":3,"file":"membershipUtils.js","sources":["../../../../../../packages/engine-tenant-api/src/model/service/membershipUtils.ts"],"sourcesContent":["import { MembershipInput, MembershipUpdateInput, VariableUpdateInput } from '../commands'\nimport { Acl } from '@contember/schema'\n\nexport const createSetMembershipVariables = (memberships: readonly Acl.Membership[]): MembershipInput[] => {\n\treturn memberships.map(it => ({\n\t\trole: it.role,\n\t\tvariables: it.variables.map(it => ({ name: it.name, set: it.values })),\n\t}))\n}\nexport const createAppendMembershipVariables = (memberships: readonly Acl.Membership[]): MembershipInput[] => {\n\treturn memberships.map(it => ({\n\t\trole: it.role,\n\t\tvariables: it.variables.map(it => ({ name: it.name, append: it.values, remove: [] })),\n\t}))\n}\n\nexport const createMembershipModification = (\n\toldMemberships: readonly Acl.Membership[],\n\tnewMemberships: readonly Acl.Membership[],\n): MembershipUpdateInput[] => {\n\tconst input: MembershipUpdateInput[] = []\n\tfor (const membership of newMemberships) {\n\t\tconst old = oldMemberships.find(it => it.role === membership.role)\n\t\tif (!old) {\n\t\t\tinput.push({\n\t\t\t\trole: membership.role,\n\t\t\t\toperation: 'create',\n\t\t\t\tvariables: createMembershipVariablePatch([], membership.variables),\n\t\t\t})\n\t\t} else {\n\t\t\tinput.push({\n\t\t\t\trole: membership.role,\n\t\t\t\toperation: 'update',\n\t\t\t\tvariables: createMembershipVariablePatch(old.variables, membership.variables),\n\t\t\t})\n\t\t}\n\t}\n\tfor (const old of oldMemberships) {\n\t\tconst newMembership = newMemberships.find(it => it.role === old.role)\n\t\tif (!newMembership) {\n\t\t\tinput.push({\n\t\t\t\trole: old.role,\n\t\t\t\toperation: 'remove',\n\t\t\t\tvariables: createMembershipVariablePatch(old.variables, []), // for acl check\n\t\t\t})\n\t\t}\n\t}\n\n\treturn input\n}\n\nconst createMembershipVariablePatch = (\n\toldVariables: readonly Acl.MembershipVariable[],\n\tnewVariables: readonly Acl.MembershipVariable[],\n): VariableUpdateInput[] => {\n\tconst update: VariableUpdateInput[] = []\n\tconst varANames = newVariables.map(it => it.name)\n\tfor (const varA of newVariables) {\n\t\tconst varB = oldVariables.find(it => it.name === varA.name)\n\t\tif (!varB) {\n\t\t\tupdate.push({\n\t\t\t\tname: varA.name,\n\t\t\t\tset: varA.values,\n\t\t\t})\n\t\t} else {\n\t\t\tupdate.push({\n\t\t\t\tname: varA.name,\n\t\t\t\tappend: varA.values.filter(valA => !varB.values.includes(valA)),\n\t\t\t\tremove: varB.values.filter(valB => !varA.values.includes(valB)),\n\t\t\t})\n\t\t}\n\t}\n\tupdate.push(\n\t\t...oldVariables\n\t\t\t.filter(varB => !varANames.includes(varB.name))\n\t\t\t.map(it => ({\n\t\t\t\tname: it.name,\n\t\t\t\tset: [],\n\t\t\t})),\n\t)\n\treturn update\n}\n"],"names":["it"],"mappings":"AAGa,MAAA,+BAA+B,CAAC,gBAA8D;AACnG,SAAA,YAAY,IAAI,CAAO,QAAA;AAAA,IAC7B,MAAM,GAAG;AAAA,IACT,WAAW,GAAG,UAAU,IAAI,CAAAA,SAAO,EAAE,MAAMA,IAAG,MAAM,KAAKA,IAAG,SAAS;AAAA,EAAA,EACpE;AACH;AACa,MAAA,kCAAkC,CAAC,gBAA8D;AACtG,SAAA,YAAY,IAAI,CAAO,QAAA;AAAA,IAC7B,MAAM,GAAG;AAAA,IACT,WAAW,GAAG,UAAU,IAAI,CAAAA,SAAO,EAAE,MAAMA,IAAG,MAAM,QAAQA,IAAG,QAAQ,QAAQ,KAAK;AAAA,EAAA,EACnF;AACH;AAEa,MAAA,+BAA+B,CAC3C,gBACA,mBAC6B;AAC7B,QAAM,QAAiC,CAAC;AACxC,aAAW,cAAc,gBAAgB;AACxC,UAAM,MAAM,eAAe,KAAK,QAAM,GAAG,SAAS,WAAW,IAAI;AACjE,QAAI,CAAC,KAAK;AACT,YAAM,KAAK;AAAA,QACV,MAAM,WAAW;AAAA,QACjB,WAAW;AAAA,QACX,WAAW,8BAA8B,IAAI,WAAW,SAAS;AAAA,MAAA,CACjE;AAAA,IAAA,OACK;AACN,YAAM,KAAK;AAAA,QACV,MAAM,WAAW;AAAA,QACjB,WAAW;AAAA,QACX,WAAW,8BAA8B,IAAI,WAAW,WAAW,SAAS;AAAA,MAAA,CAC5E;AAAA,IAAA;AAAA,EACF;AAED,aAAW,OAAO,gBAAgB;AACjC,UAAM,gBAAgB,eAAe,KAAK,QAAM,GAAG,SAAS,IAAI,IAAI;AACpE,QAAI,CAAC,eAAe;AACnB,YAAM,KAAK;AAAA,QACV,MAAM,IAAI;AAAA,QACV,WAAW;AAAA,QACX,WAAW,8BAA8B,IAAI,WAAW,CAAE,CAAA;AAAA;AAAA,MAAA,CAC1D;AAAA,IAAA;AAAA,EACF;AAGM,SAAA;AACR;AAEA,MAAM,gCAAgC,CACrC,cACA,iBAC2B;AAC3B,QAAM,SAAgC,CAAC;AACvC,QAAM,YAAY,aAAa,IAAI,CAAA,OAAM,GAAG,IAAI;AAChD,aAAW,QAAQ,cAAc;AAChC,UAAM,OAAO,aAAa,KAAK,QAAM,GAAG,SAAS,KAAK,IAAI;AAC1D,QAAI,CAAC,MAAM;AACV,aAAO,KAAK;AAAA,QACX,MAAM,KAAK;AAAA,QACX,KAAK,KAAK;AAAA,MAAA,CACV;AAAA,IAAA,OACK;AACN,aAAO,KAAK;AAAA,QACX,MAAM,KAAK;AAAA,QACX,QAAQ,KAAK,OAAO,OAAO,CAAA,SAAQ,CAAC,KAAK,OAAO,SAAS,IAAI,CAAC;AAAA,QAC9D,QAAQ,KAAK,OAAO,OAAO,CAAA,SAAQ,CAAC,KAAK,OAAO,SAAS,IAAI,CAAC;AAAA,MAAA,CAC9D;AAAA,IAAA;AAAA,EACF;AAEM,SAAA;AAAA,IACN,GAAG,aACD,OAAO,CAAA,SAAQ,CAAC,UAAU,SAAS,KAAK,IAAI,CAAC,EAC7C,IAAI,CAAO,QAAA;AAAA,MACX,MAAM,GAAG;AAAA,MACT,KAAK,CAAA;AAAA,IAAC,EACL;AAAA,EACJ;AACO,SAAA;AACR;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ApiKey.cjs","sources":["../../../../../../packages/engine-tenant-api/src/model/type/ApiKey.ts"],"sourcesContent":["namespace ApiKey {\n\texport const enum Type {\n\t\tSESSION = 'session',\n\t\tPERMANENT = 'permanent',\n\t\tONE_OFF = 'one_off',\n\t}\n}\n\nexport { ApiKey }\n"],"names":["ApiKey","Type"],"mappings":";;AAAUA,QAAA,SAAA;AAAA,CAAV,CAAUA,YAAV;AACQ,GAAA,CAAWC,UAAX;AACNA,UAAA,SAAU,IAAA;AACVA,UAAA,WAAY,IAAA;AACZA,UAAA,SAAU,IAAA;AAAA,EAAA,GAHOD,QAAA,SAAAA,QAAA,OAAA,CAAA,EAAA;AAAA,GADTA,QAAA,WAAAA,iBAAA,CAAA,EAAA;"}
1
+ {"version":3,"file":"ApiKey.cjs","sources":["../../../../../../packages/engine-tenant-api/src/model/type/ApiKey.ts"],"sourcesContent":["namespace ApiKey {\n\texport const enum Type {\n\t\tSESSION = 'session',\n\t\tPERMANENT = 'permanent',\n\t\tONE_OFF = 'one_off',\n\t}\n}\n\nexport { ApiKey }\n"],"names":["ApiKey","Type"],"mappings":";;AAAUA,QAAAA,SAAAA;AAAAA,CAAV,CAAUA,YAAV;AACQ,GAAA,CAAWC,UAAX;AACNA,UAAA,SAAU,IAAA;AACVA,UAAA,WAAY,IAAA;AACZA,UAAA,SAAU,IAAA;AAAA,EAHO,GAAAD,QAAA,SAAAA,QAAA,OAAA,CAAA,EAAA;AAAA,GADTA,QAAA,WAAAA,iBAAA,CAAA,EAAA;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ApiKey.js","sources":["../../../../../../packages/engine-tenant-api/src/model/type/ApiKey.ts"],"sourcesContent":["namespace ApiKey {\n\texport const enum Type {\n\t\tSESSION = 'session',\n\t\tPERMANENT = 'permanent',\n\t\tONE_OFF = 'one_off',\n\t}\n}\n\nexport { ApiKey }\n"],"names":["ApiKey","Type"],"mappings":"AAAU,IAAA;AAAA,CAAV,CAAUA,YAAV;AACQ,GAAA,CAAWC,UAAX;AACNA,UAAA,SAAU,IAAA;AACVA,UAAA,WAAY,IAAA;AACZA,UAAA,SAAU,IAAA;AAAA,EAAA,GAHOD,QAAA,SAAAA,QAAA,OAAA,CAAA,EAAA;AAAA,GADT,WAAA,SAAA,CAAA,EAAA;"}
1
+ {"version":3,"file":"ApiKey.js","sources":["../../../../../../packages/engine-tenant-api/src/model/type/ApiKey.ts"],"sourcesContent":["namespace ApiKey {\n\texport const enum Type {\n\t\tSESSION = 'session',\n\t\tPERMANENT = 'permanent',\n\t\tONE_OFF = 'one_off',\n\t}\n}\n\nexport { ApiKey }\n"],"names":["ApiKey","Type"],"mappings":"AAAU,IAAA;AAAA,CAAV,CAAUA,YAAV;AACQ,GAAA,CAAWC,UAAX;AACNA,UAAA,SAAU,IAAA;AACVA,UAAA,WAAY,IAAA;AACZA,UAAA,SAAU,IAAA;AAAA,EAHO,GAAAD,QAAA,SAAAA,QAAA,OAAA,CAAA,EAAA;AAAA,GADT,WAAA,SAAA,CAAA,EAAA;"}
@@ -1 +1 @@
1
- {"version":3,"file":"DatabaseContext.cjs","sources":["../../../../../../packages/engine-tenant-api/src/model/utils/DatabaseContext.ts"],"sourcesContent":["import { Client, Connection } from '@contember/database'\nimport { Providers } from '../providers'\nimport { CommandBus } from '../commands'\nimport { BatchLoaderArgs, initBatchLoader, ItemLoader } from '../../utils/batchQuery'\n\n\nexport class DatabaseContext<Conn extends Connection.ConnectionLike = Connection.ConnectionLike> {\n\tprivate loaders = new Map<BatchLoaderArgs<any, any, any>, ItemLoader<any, any>>()\n\n\tconstructor(\n\t\tpublic readonly client: Client<Conn>,\n\t\tpublic readonly providers: Providers,\n\t) {\n\t}\n\n\tpublic get commandBus() {\n\t\treturn new CommandBus(this.client, this.providers)\n\t}\n\n\tpublic get queryHandler() {\n\t\treturn this.client.createQueryHandler()\n\t}\n\n\tpublic async transaction<T>(cb: (dbContext: DatabaseContext<Connection.TransactionLike>) => Promise<T>): Promise<T> {\n\t\treturn await this.client.transaction(async db => {\n\t\t\tawait db.query(Connection.REPEATABLE_READ)\n\t\t\treturn await cb(new DatabaseContext(db, this.providers))\n\t\t})\n\t}\n\n\tpublic async scope<T>(cb: (dbContext: DatabaseContext<Connection.AcquiredConnectionLike>) => Promise<T>): Promise<T> {\n\t\treturn await this.client.scope(async db => {\n\t\t\treturn await cb(new DatabaseContext(db, this.providers))\n\t\t})\n\t}\n\n\tpublic batchLoad<Arg, Result, Item>(loaderArgs: BatchLoaderArgs<Arg, Result, Item>, arg: Arg): Promise<Item> {\n\t\tconst existing = this.loaders.get(loaderArgs)\n\t\tif (existing) {\n\t\t\treturn existing(arg)\n\t\t}\n\t\tconst newLoader = initBatchLoader(loaderArgs, this)\n\t\tthis.loaders.set(loaderArgs, newLoader)\n\t\treturn newLoader(arg)\n\t}\n}\n"],"names":["CommandBus","Connection","initBatchLoader"],"mappings":";;;;;;;;;;AAMO,MAAM,gBAAoF;AAAA,EAGhG,YACiB,QACA,WACf;AAFe,SAAA,SAAA;AACA,SAAA,YAAA;AAJT,kBAAA,MAAA,+BAAc,IAA0D,CAAA;AAAA,EAMhF;AAAA,EAEA,IAAW,aAAa;AACvB,WAAO,IAAIA,WAAA,WAAW,KAAK,QAAQ,KAAK,SAAS;AAAA,EAClD;AAAA,EAEA,IAAW,eAAe;AAClB,WAAA,KAAK,OAAO;EACpB;AAAA,EAEA,MAAa,YAAe,IAAwF;AACnH,WAAO,MAAM,KAAK,OAAO,YAAY,OAAM,OAAM;AAC1C,YAAA,GAAG,MAAMC,SAAA,WAAW,eAAe;AACzC,aAAO,MAAM,GAAG,IAAI,gBAAgB,IAAI,KAAK,SAAS,CAAC;AAAA,IAAA,CACvD;AAAA,EACF;AAAA,EAEA,MAAa,MAAS,IAA+F;AACpH,WAAO,MAAM,KAAK,OAAO,MAAM,OAAM,OAAM;AAC1C,aAAO,MAAM,GAAG,IAAI,gBAAgB,IAAI,KAAK,SAAS,CAAC;AAAA,IAAA,CACvD;AAAA,EACF;AAAA,EAEO,UAA6B,YAAgD,KAAyB;AAC5G,UAAM,WAAW,KAAK,QAAQ,IAAI,UAAU;AAC5C,QAAI,UAAU;AACb,aAAO,SAAS,GAAG;AAAA,IACpB;AACM,UAAA,YAAYC,WAAAA,gBAAgB,YAAY,IAAI;AAC7C,SAAA,QAAQ,IAAI,YAAY,SAAS;AACtC,WAAO,UAAU,GAAG;AAAA,EACrB;AACD;;"}
1
+ {"version":3,"file":"DatabaseContext.cjs","sources":["../../../../../../packages/engine-tenant-api/src/model/utils/DatabaseContext.ts"],"sourcesContent":["import { Client, Connection } from '@contember/database'\nimport { Providers } from '../providers'\nimport { CommandBus } from '../commands'\nimport { BatchLoaderArgs, initBatchLoader, ItemLoader } from '../../utils/batchQuery'\n\n\nexport class DatabaseContext<Conn extends Connection.ConnectionLike = Connection.ConnectionLike> {\n\tprivate loaders = new Map<BatchLoaderArgs<any, any, any>, ItemLoader<any, any>>()\n\n\tconstructor(\n\t\tpublic readonly client: Client<Conn>,\n\t\tpublic readonly providers: Providers,\n\t) {\n\t}\n\n\tpublic get commandBus() {\n\t\treturn new CommandBus(this.client, this.providers)\n\t}\n\n\tpublic get queryHandler() {\n\t\treturn this.client.createQueryHandler()\n\t}\n\n\tpublic async transaction<T>(cb: (dbContext: DatabaseContext<Connection.TransactionLike>) => Promise<T>): Promise<T> {\n\t\treturn await this.client.transaction(async db => {\n\t\t\tawait db.query(Connection.REPEATABLE_READ)\n\t\t\treturn await cb(new DatabaseContext(db, this.providers))\n\t\t})\n\t}\n\n\tpublic async scope<T>(cb: (dbContext: DatabaseContext<Connection.AcquiredConnectionLike>) => Promise<T>): Promise<T> {\n\t\treturn await this.client.scope(async db => {\n\t\t\treturn await cb(new DatabaseContext(db, this.providers))\n\t\t})\n\t}\n\n\tpublic batchLoad<Arg, Result, Item>(loaderArgs: BatchLoaderArgs<Arg, Result, Item>, arg: Arg): Promise<Item> {\n\t\tconst existing = this.loaders.get(loaderArgs)\n\t\tif (existing) {\n\t\t\treturn existing(arg)\n\t\t}\n\t\tconst newLoader = initBatchLoader(loaderArgs, this)\n\t\tthis.loaders.set(loaderArgs, newLoader)\n\t\treturn newLoader(arg)\n\t}\n}\n"],"names":["CommandBus","Connection","initBatchLoader"],"mappings":";;;;;;;;;;AAMO,MAAM,gBAAoF;AAAA,EAGhG,YACiB,QACA,WACf;AAFe,SAAA,SAAA;AACA,SAAA,YAAA;AAJT,kBAAA,MAAA,+BAAc,IAA0D,CAAA;AAAA,EAAA;AAAA,EAQhF,IAAW,aAAa;AACvB,WAAO,IAAIA,WAAAA,WAAW,KAAK,QAAQ,KAAK,SAAS;AAAA,EAAA;AAAA,EAGlD,IAAW,eAAe;AAClB,WAAA,KAAK,OAAO,mBAAmB;AAAA,EAAA;AAAA,EAGvC,MAAa,YAAe,IAAwF;AACnH,WAAO,MAAM,KAAK,OAAO,YAAY,OAAM,OAAM;AAC1C,YAAA,GAAG,MAAMC,SAAA,WAAW,eAAe;AACzC,aAAO,MAAM,GAAG,IAAI,gBAAgB,IAAI,KAAK,SAAS,CAAC;AAAA,IAAA,CACvD;AAAA,EAAA;AAAA,EAGF,MAAa,MAAS,IAA+F;AACpH,WAAO,MAAM,KAAK,OAAO,MAAM,OAAM,OAAM;AAC1C,aAAO,MAAM,GAAG,IAAI,gBAAgB,IAAI,KAAK,SAAS,CAAC;AAAA,IAAA,CACvD;AAAA,EAAA;AAAA,EAGK,UAA6B,YAAgD,KAAyB;AAC5G,UAAM,WAAW,KAAK,QAAQ,IAAI,UAAU;AAC5C,QAAI,UAAU;AACb,aAAO,SAAS,GAAG;AAAA,IAAA;AAEd,UAAA,YAAYC,WAAAA,gBAAgB,YAAY,IAAI;AAC7C,SAAA,QAAQ,IAAI,YAAY,SAAS;AACtC,WAAO,UAAU,GAAG;AAAA,EAAA;AAEtB;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"DatabaseContext.js","sources":["../../../../../../packages/engine-tenant-api/src/model/utils/DatabaseContext.ts"],"sourcesContent":["import { Client, Connection } from '@contember/database'\nimport { Providers } from '../providers'\nimport { CommandBus } from '../commands'\nimport { BatchLoaderArgs, initBatchLoader, ItemLoader } from '../../utils/batchQuery'\n\n\nexport class DatabaseContext<Conn extends Connection.ConnectionLike = Connection.ConnectionLike> {\n\tprivate loaders = new Map<BatchLoaderArgs<any, any, any>, ItemLoader<any, any>>()\n\n\tconstructor(\n\t\tpublic readonly client: Client<Conn>,\n\t\tpublic readonly providers: Providers,\n\t) {\n\t}\n\n\tpublic get commandBus() {\n\t\treturn new CommandBus(this.client, this.providers)\n\t}\n\n\tpublic get queryHandler() {\n\t\treturn this.client.createQueryHandler()\n\t}\n\n\tpublic async transaction<T>(cb: (dbContext: DatabaseContext<Connection.TransactionLike>) => Promise<T>): Promise<T> {\n\t\treturn await this.client.transaction(async db => {\n\t\t\tawait db.query(Connection.REPEATABLE_READ)\n\t\t\treturn await cb(new DatabaseContext(db, this.providers))\n\t\t})\n\t}\n\n\tpublic async scope<T>(cb: (dbContext: DatabaseContext<Connection.AcquiredConnectionLike>) => Promise<T>): Promise<T> {\n\t\treturn await this.client.scope(async db => {\n\t\t\treturn await cb(new DatabaseContext(db, this.providers))\n\t\t})\n\t}\n\n\tpublic batchLoad<Arg, Result, Item>(loaderArgs: BatchLoaderArgs<Arg, Result, Item>, arg: Arg): Promise<Item> {\n\t\tconst existing = this.loaders.get(loaderArgs)\n\t\tif (existing) {\n\t\t\treturn existing(arg)\n\t\t}\n\t\tconst newLoader = initBatchLoader(loaderArgs, this)\n\t\tthis.loaders.set(loaderArgs, newLoader)\n\t\treturn newLoader(arg)\n\t}\n}\n"],"names":[],"mappings":";;;;;;;;AAMO,MAAM,gBAAoF;AAAA,EAGhG,YACiB,QACA,WACf;AAFe,SAAA,SAAA;AACA,SAAA,YAAA;AAJT,kBAAA,MAAA,+BAAc,IAA0D,CAAA;AAAA,EAMhF;AAAA,EAEA,IAAW,aAAa;AACvB,WAAO,IAAI,WAAW,KAAK,QAAQ,KAAK,SAAS;AAAA,EAClD;AAAA,EAEA,IAAW,eAAe;AAClB,WAAA,KAAK,OAAO;EACpB;AAAA,EAEA,MAAa,YAAe,IAAwF;AACnH,WAAO,MAAM,KAAK,OAAO,YAAY,OAAM,OAAM;AAC1C,YAAA,GAAG,MAAM,WAAW,eAAe;AACzC,aAAO,MAAM,GAAG,IAAI,gBAAgB,IAAI,KAAK,SAAS,CAAC;AAAA,IAAA,CACvD;AAAA,EACF;AAAA,EAEA,MAAa,MAAS,IAA+F;AACpH,WAAO,MAAM,KAAK,OAAO,MAAM,OAAM,OAAM;AAC1C,aAAO,MAAM,GAAG,IAAI,gBAAgB,IAAI,KAAK,SAAS,CAAC;AAAA,IAAA,CACvD;AAAA,EACF;AAAA,EAEO,UAA6B,YAAgD,KAAyB;AAC5G,UAAM,WAAW,KAAK,QAAQ,IAAI,UAAU;AAC5C,QAAI,UAAU;AACb,aAAO,SAAS,GAAG;AAAA,IACpB;AACM,UAAA,YAAY,gBAAgB,YAAY,IAAI;AAC7C,SAAA,QAAQ,IAAI,YAAY,SAAS;AACtC,WAAO,UAAU,GAAG;AAAA,EACrB;AACD;"}
1
+ {"version":3,"file":"DatabaseContext.js","sources":["../../../../../../packages/engine-tenant-api/src/model/utils/DatabaseContext.ts"],"sourcesContent":["import { Client, Connection } from '@contember/database'\nimport { Providers } from '../providers'\nimport { CommandBus } from '../commands'\nimport { BatchLoaderArgs, initBatchLoader, ItemLoader } from '../../utils/batchQuery'\n\n\nexport class DatabaseContext<Conn extends Connection.ConnectionLike = Connection.ConnectionLike> {\n\tprivate loaders = new Map<BatchLoaderArgs<any, any, any>, ItemLoader<any, any>>()\n\n\tconstructor(\n\t\tpublic readonly client: Client<Conn>,\n\t\tpublic readonly providers: Providers,\n\t) {\n\t}\n\n\tpublic get commandBus() {\n\t\treturn new CommandBus(this.client, this.providers)\n\t}\n\n\tpublic get queryHandler() {\n\t\treturn this.client.createQueryHandler()\n\t}\n\n\tpublic async transaction<T>(cb: (dbContext: DatabaseContext<Connection.TransactionLike>) => Promise<T>): Promise<T> {\n\t\treturn await this.client.transaction(async db => {\n\t\t\tawait db.query(Connection.REPEATABLE_READ)\n\t\t\treturn await cb(new DatabaseContext(db, this.providers))\n\t\t})\n\t}\n\n\tpublic async scope<T>(cb: (dbContext: DatabaseContext<Connection.AcquiredConnectionLike>) => Promise<T>): Promise<T> {\n\t\treturn await this.client.scope(async db => {\n\t\t\treturn await cb(new DatabaseContext(db, this.providers))\n\t\t})\n\t}\n\n\tpublic batchLoad<Arg, Result, Item>(loaderArgs: BatchLoaderArgs<Arg, Result, Item>, arg: Arg): Promise<Item> {\n\t\tconst existing = this.loaders.get(loaderArgs)\n\t\tif (existing) {\n\t\t\treturn existing(arg)\n\t\t}\n\t\tconst newLoader = initBatchLoader(loaderArgs, this)\n\t\tthis.loaders.set(loaderArgs, newLoader)\n\t\treturn newLoader(arg)\n\t}\n}\n"],"names":[],"mappings":";;;;;;;;AAMO,MAAM,gBAAoF;AAAA,EAGhG,YACiB,QACA,WACf;AAFe,SAAA,SAAA;AACA,SAAA,YAAA;AAJT,kBAAA,MAAA,+BAAc,IAA0D,CAAA;AAAA,EAAA;AAAA,EAQhF,IAAW,aAAa;AACvB,WAAO,IAAI,WAAW,KAAK,QAAQ,KAAK,SAAS;AAAA,EAAA;AAAA,EAGlD,IAAW,eAAe;AAClB,WAAA,KAAK,OAAO,mBAAmB;AAAA,EAAA;AAAA,EAGvC,MAAa,YAAe,IAAwF;AACnH,WAAO,MAAM,KAAK,OAAO,YAAY,OAAM,OAAM;AAC1C,YAAA,GAAG,MAAM,WAAW,eAAe;AACzC,aAAO,MAAM,GAAG,IAAI,gBAAgB,IAAI,KAAK,SAAS,CAAC;AAAA,IAAA,CACvD;AAAA,EAAA;AAAA,EAGF,MAAa,MAAS,IAA+F;AACpH,WAAO,MAAM,KAAK,OAAO,MAAM,OAAM,OAAM;AAC1C,aAAO,MAAM,GAAG,IAAI,gBAAgB,IAAI,KAAK,SAAS,CAAC;AAAA,IAAA,CACvD;AAAA,EAAA;AAAA,EAGK,UAA6B,YAAgD,KAAyB;AAC5G,UAAM,WAAW,KAAK,QAAQ,IAAI,UAAU;AAC5C,QAAI,UAAU;AACb,aAAO,SAAS,GAAG;AAAA,IAAA;AAEd,UAAA,YAAY,gBAAgB,YAAY,IAAI;AAC7C,SAAA,QAAQ,IAAI,YAAY,SAAS;AACtC,WAAO,UAAU,GAAG;AAAA,EAAA;AAEtB;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Response.cjs","sources":["../../../../../../packages/engine-tenant-api/src/model/utils/Response.ts"],"sourcesContent":["export type Response<Result, Error> = ResponseOk<Result> | (Error extends never ? never : ResponseError<Error>)\n\nexport class ResponseOk<Result> {\n\tpublic readonly ok = true\n\n\tconstructor(public readonly result: Result) {}\n}\n\nexport class ResponseError<const Error> {\n\tpublic readonly ok = false\n\n\tconstructor(public readonly error: Error, public readonly errorMessage: string) {}\n}\n"],"names":[],"mappings":";;;;;AAEO,MAAM,WAAmB;AAAA,EAG/B,YAA4B,QAAgB;AAAhB,SAAA,SAAA;AAF5B,kBAAA,MAAgB,MAAK,IAAA;AAAA,EAEwB;AAC9C;AAEO,MAAM,cAA2B;AAAA,EAGvC,YAA4B,OAA8B,cAAsB;AAApD,SAAA,QAAA;AAA8B,SAAA,eAAA;AAF1D,kBAAA,MAAgB,MAAK,KAAA;AAAA,EAE4D;AAClF;;;"}
1
+ {"version":3,"file":"Response.cjs","sources":["../../../../../../packages/engine-tenant-api/src/model/utils/Response.ts"],"sourcesContent":["export type Response<Result, Error> = ResponseOk<Result> | (Error extends never ? never : ResponseError<Error>)\n\nexport class ResponseOk<Result> {\n\tpublic readonly ok = true\n\n\tconstructor(public readonly result: Result) {}\n}\n\nexport class ResponseError<const Error> {\n\tpublic readonly ok = false\n\n\tconstructor(public readonly error: Error, public readonly errorMessage: string) {}\n}\n"],"names":[],"mappings":";;;;;AAEO,MAAM,WAAmB;AAAA,EAG/B,YAA4B,QAAgB;AAAhB,SAAA,SAAA;AAF5B,kBAAA,MAAgB,MAAK,IAAA;AAAA,EAAA;AAGtB;AAEO,MAAM,cAA2B;AAAA,EAGvC,YAA4B,OAA8B,cAAsB;AAApD,SAAA,QAAA;AAA8B,SAAA,eAAA;AAF1D,kBAAA,MAAgB,MAAK,KAAA;AAAA,EAAA;AAGtB;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Response.js","sources":["../../../../../../packages/engine-tenant-api/src/model/utils/Response.ts"],"sourcesContent":["export type Response<Result, Error> = ResponseOk<Result> | (Error extends never ? never : ResponseError<Error>)\n\nexport class ResponseOk<Result> {\n\tpublic readonly ok = true\n\n\tconstructor(public readonly result: Result) {}\n}\n\nexport class ResponseError<const Error> {\n\tpublic readonly ok = false\n\n\tconstructor(public readonly error: Error, public readonly errorMessage: string) {}\n}\n"],"names":[],"mappings":";;;AAEO,MAAM,WAAmB;AAAA,EAG/B,YAA4B,QAAgB;AAAhB,SAAA,SAAA;AAF5B,kBAAA,MAAgB,MAAK,IAAA;AAAA,EAEwB;AAC9C;AAEO,MAAM,cAA2B;AAAA,EAGvC,YAA4B,OAA8B,cAAsB;AAApD,SAAA,QAAA;AAA8B,SAAA,eAAA;AAF1D,kBAAA,MAAgB,MAAK,KAAA;AAAA,EAE4D;AAClF;"}
1
+ {"version":3,"file":"Response.js","sources":["../../../../../../packages/engine-tenant-api/src/model/utils/Response.ts"],"sourcesContent":["export type Response<Result, Error> = ResponseOk<Result> | (Error extends never ? never : ResponseError<Error>)\n\nexport class ResponseOk<Result> {\n\tpublic readonly ok = true\n\n\tconstructor(public readonly result: Result) {}\n}\n\nexport class ResponseError<const Error> {\n\tpublic readonly ok = false\n\n\tconstructor(public readonly error: Error, public readonly errorMessage: string) {}\n}\n"],"names":[],"mappings":";;;AAEO,MAAM,WAAmB;AAAA,EAG/B,YAA4B,QAAgB;AAAhB,SAAA,SAAA;AAF5B,kBAAA,MAAgB,MAAK,IAAA;AAAA,EAAA;AAGtB;AAEO,MAAM,cAA2B;AAAA,EAGvC,YAA4B,OAA8B,cAAsB;AAApD,SAAA,QAAA;AAA8B,SAAA,eAAA;AAF1D,kBAAA,MAAgB,MAAK,KAAA;AAAA,EAAA;AAGtB;"}
@@ -1 +1 @@
1
- {"version":3,"file":"password.cjs","sources":["../../../../../../packages/engine-tenant-api/src/model/utils/password.ts"],"sourcesContent":["export const MIN_PASSWORD_LENGTH = 6\nexport const isWeakPassword = (password: string) => password.length < MIN_PASSWORD_LENGTH\nexport const getPasswordWeaknessMessage = (password: string): null | string => {\n\tif (password.length < MIN_PASSWORD_LENGTH) {\n\t\treturn `Password is too weak. Minimum length is ${MIN_PASSWORD_LENGTH}`\n\t}\n\treturn null\n}\n"],"names":[],"mappings":";;AAAO,MAAM,sBAAsB;AAEtB,MAAA,6BAA6B,CAAC,aAAoC;AAC1E,MAAA,SAAS,SAAS,qBAAqB;AAC1C,WAAO,2CAA2C,mBAAmB;AAAA,EACtE;AACO,SAAA;AACR;;;"}
1
+ {"version":3,"file":"password.cjs","sources":["../../../../../../packages/engine-tenant-api/src/model/utils/password.ts"],"sourcesContent":["export const MIN_PASSWORD_LENGTH = 6\nexport const isWeakPassword = (password: string) => password.length < MIN_PASSWORD_LENGTH\nexport const getPasswordWeaknessMessage = (password: string): null | string => {\n\tif (password.length < MIN_PASSWORD_LENGTH) {\n\t\treturn `Password is too weak. Minimum length is ${MIN_PASSWORD_LENGTH}`\n\t}\n\treturn null\n}\n"],"names":[],"mappings":";;AAAO,MAAM,sBAAsB;AAEtB,MAAA,6BAA6B,CAAC,aAAoC;AAC1E,MAAA,SAAS,SAAS,qBAAqB;AAC1C,WAAO,2CAA2C,mBAAmB;AAAA,EAAA;AAE/D,SAAA;AACR;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"password.js","sources":["../../../../../../packages/engine-tenant-api/src/model/utils/password.ts"],"sourcesContent":["export const MIN_PASSWORD_LENGTH = 6\nexport const isWeakPassword = (password: string) => password.length < MIN_PASSWORD_LENGTH\nexport const getPasswordWeaknessMessage = (password: string): null | string => {\n\tif (password.length < MIN_PASSWORD_LENGTH) {\n\t\treturn `Password is too weak. Minimum length is ${MIN_PASSWORD_LENGTH}`\n\t}\n\treturn null\n}\n"],"names":[],"mappings":"AAAO,MAAM,sBAAsB;AAEtB,MAAA,6BAA6B,CAAC,aAAoC;AAC1E,MAAA,SAAS,SAAS,qBAAqB;AAC1C,WAAO,2CAA2C,mBAAmB;AAAA,EACtE;AACO,SAAA;AACR;"}
1
+ {"version":3,"file":"password.js","sources":["../../../../../../packages/engine-tenant-api/src/model/utils/password.ts"],"sourcesContent":["export const MIN_PASSWORD_LENGTH = 6\nexport const isWeakPassword = (password: string) => password.length < MIN_PASSWORD_LENGTH\nexport const getPasswordWeaknessMessage = (password: string): null | string => {\n\tif (password.length < MIN_PASSWORD_LENGTH) {\n\t\treturn `Password is too weak. Minimum length is ${MIN_PASSWORD_LENGTH}`\n\t}\n\treturn null\n}\n"],"names":[],"mappings":"AAAO,MAAM,sBAAsB;AAEtB,MAAA,6BAA6B,CAAC,aAAoC;AAC1E,MAAA,SAAS,SAAS,qBAAqB;AAC1C,WAAO,2CAA2C,mBAAmB;AAAA,EAAA;AAE/D,SAAA;AACR;"}
@@ -1 +1 @@
1
- {"version":3,"file":"tokenUtils.cjs","sources":["../../../../../../packages/engine-tenant-api/src/model/utils/tokenUtils.ts"],"sourcesContent":["import crypto from 'node:crypto'\nimport { FixedLengthHexString, isFixedLengthHexString } from './typeUtils'\nimport { PersonToken } from '../type'\nimport { ImplementationException } from '../../exceptions'\nimport { Response, ResponseError, ResponseOk } from './Response'\n\nexport const generateToken = async (generator: {\n\trandomBytes: (bytes: number) => Promise<Buffer>\n}): Promise<string> => {\n\treturn (await generator.randomBytes(20)).toString('hex')\n}\n\nexport type TokenHash = FixedLengthHexString<64>\n\nexport const computeTokenHash = (token: string): TokenHash => {\n\treturn crypto //\n\t\t.createHash('sha256')\n\t\t.update(token, 'ascii')\n\t\t.digest('hex') as TokenHash\n}\n\nexport const isTokenHash = (token: string): token is TokenHash => isFixedLengthHexString(token, 64)\n\n\nconst MAX_OTP_ATTEMPTS = 3\n\nexport const validateToken = ({ entry, validationType, token, now }: {\n\tentry: PersonToken.Row | null\n\tvalidationType: PersonToken.ValidationType\n\ttoken: string\n\tnow: Date\n}): Response<PersonToken.Row, PersonToken.TokenValidationError> => {\n\tif (!entry) {\n\t\treturn new ResponseError('TOKEN_NOT_FOUND', 'Token not found')\n\t}\n\tif (validationType === 'otp' && entry.otp_attempts >= MAX_OTP_ATTEMPTS) {\n\t\treturn new ResponseError('TOKEN_EXPIRED', 'OTP attempts exceeded')\n\t}\n\tswitch (validationType) {\n\t\tcase 'token':\n\t\t\tif (entry.otp_hash !== null) {\n\t\t\t\treturn new ResponseError('TOKEN_INVALID', 'The token was exchanged for OTP')\n\t\t\t}\n\t\t\tif (entry.token_hash !== computeTokenHash(token)) {\n\t\t\t\treturn new ResponseError('TOKEN_INVALID', 'Token invalid')\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'otp':\n\t\t\tif (entry.otp_hash === null) {\n\t\t\t\treturn new ResponseError('TOKEN_INVALID', 'OTP not set')\n\t\t\t}\n\t\t\tif (entry.otp_hash !== computeTokenHash(token)) {\n\t\t\t\treturn new ResponseError('TOKEN_INVALID', 'OTP invalid')\n\t\t\t}\n\t\t\tbreak\n\t\tdefault:\n\t\t\tthrow new ImplementationException()\n\t}\n\tif (entry.used_at) {\n\t\treturn new ResponseError('TOKEN_USED', 'Token used at ' + entry.used_at.toISOString())\n\t}\n\tif (entry.expires_at < now) {\n\t\treturn new ResponseError('TOKEN_EXPIRED', 'Token expired at ' + entry.expires_at.toISOString())\n\t}\n\treturn new ResponseOk(entry)\n}\n"],"names":["isFixedLengthHexString","ResponseError","ImplementationException","ResponseOk"],"mappings":";;;;;;AAMa,MAAA,gBAAgB,OAAO,cAEb;AACtB,UAAQ,MAAM,UAAU,YAAY,EAAE,GAAG,SAAS,KAAK;AACxD;AAIa,MAAA,mBAAmB,CAAC,UAA6B;AACtD,SAAA,OACL,WAAW,QAAQ,EACnB,OAAO,OAAO,OAAO,EACrB,OAAO,KAAK;AACf;AAEO,MAAM,cAAc,CAAC,UAAsCA,iCAAuB,OAAO,EAAE;AAGlG,MAAM,mBAAmB;AAElB,MAAM,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,OAAO,UAKK;AAClE,MAAI,CAAC,OAAO;AACJ,WAAA,IAAIC,SAAc,cAAA,mBAAmB,iBAAiB;AAAA,EAC9D;AACA,MAAI,mBAAmB,SAAS,MAAM,gBAAgB,kBAAkB;AAChE,WAAA,IAAIA,SAAc,cAAA,iBAAiB,uBAAuB;AAAA,EAClE;AACA,UAAQ,gBAAgB;AAAA,IACvB,KAAK;AACA,UAAA,MAAM,aAAa,MAAM;AACrB,eAAA,IAAIA,SAAc,cAAA,iBAAiB,iCAAiC;AAAA,MAC5E;AACA,UAAI,MAAM,eAAe,iBAAiB,KAAK,GAAG;AAC1C,eAAA,IAAIA,SAAc,cAAA,iBAAiB,eAAe;AAAA,MAC1D;AACA;AAAA,IACD,KAAK;AACA,UAAA,MAAM,aAAa,MAAM;AACrB,eAAA,IAAIA,SAAc,cAAA,iBAAiB,aAAa;AAAA,MACxD;AACA,UAAI,MAAM,aAAa,iBAAiB,KAAK,GAAG;AACxC,eAAA,IAAIA,SAAc,cAAA,iBAAiB,aAAa;AAAA,MACxD;AACA;AAAA,IACD;AACC,YAAM,IAAIC,WAAwB,wBAAA;AAAA,EACpC;AACA,MAAI,MAAM,SAAS;AAClB,WAAO,IAAID,SAAc,cAAA,cAAc,mBAAmB,MAAM,QAAQ,aAAa;AAAA,EACtF;AACI,MAAA,MAAM,aAAa,KAAK;AAC3B,WAAO,IAAIA,SAAc,cAAA,iBAAiB,sBAAsB,MAAM,WAAW,aAAa;AAAA,EAC/F;AACO,SAAA,IAAIE,SAAAA,WAAW,KAAK;AAC5B;;;;;"}
1
+ {"version":3,"file":"tokenUtils.cjs","sources":["../../../../../../packages/engine-tenant-api/src/model/utils/tokenUtils.ts"],"sourcesContent":["import crypto from 'node:crypto'\nimport { FixedLengthHexString, isFixedLengthHexString } from './typeUtils'\nimport { PersonToken } from '../type'\nimport { ImplementationException } from '../../exceptions'\nimport { Response, ResponseError, ResponseOk } from './Response'\n\nexport const generateToken = async (generator: {\n\trandomBytes: (bytes: number) => Promise<Buffer>\n}): Promise<string> => {\n\treturn (await generator.randomBytes(20)).toString('hex')\n}\n\nexport type TokenHash = FixedLengthHexString<64>\n\nexport const computeTokenHash = (token: string): TokenHash => {\n\treturn crypto //\n\t\t.createHash('sha256')\n\t\t.update(token, 'ascii')\n\t\t.digest('hex') as TokenHash\n}\n\nexport const isTokenHash = (token: string): token is TokenHash => isFixedLengthHexString(token, 64)\n\n\nconst MAX_OTP_ATTEMPTS = 3\n\nexport const validateToken = ({ entry, validationType, token, now }: {\n\tentry: PersonToken.Row | null\n\tvalidationType: PersonToken.ValidationType\n\ttoken: string\n\tnow: Date\n}): Response<PersonToken.Row, PersonToken.TokenValidationError> => {\n\tif (!entry) {\n\t\treturn new ResponseError('TOKEN_NOT_FOUND', 'Token not found')\n\t}\n\tif (validationType === 'otp' && entry.otp_attempts >= MAX_OTP_ATTEMPTS) {\n\t\treturn new ResponseError('TOKEN_EXPIRED', 'OTP attempts exceeded')\n\t}\n\tswitch (validationType) {\n\t\tcase 'token':\n\t\t\tif (entry.otp_hash !== null) {\n\t\t\t\treturn new ResponseError('TOKEN_INVALID', 'The token was exchanged for OTP')\n\t\t\t}\n\t\t\tif (entry.token_hash !== computeTokenHash(token)) {\n\t\t\t\treturn new ResponseError('TOKEN_INVALID', 'Token invalid')\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'otp':\n\t\t\tif (entry.otp_hash === null) {\n\t\t\t\treturn new ResponseError('TOKEN_INVALID', 'OTP not set')\n\t\t\t}\n\t\t\tif (entry.otp_hash !== computeTokenHash(token)) {\n\t\t\t\treturn new ResponseError('TOKEN_INVALID', 'OTP invalid')\n\t\t\t}\n\t\t\tbreak\n\t\tdefault:\n\t\t\tthrow new ImplementationException()\n\t}\n\tif (entry.used_at) {\n\t\treturn new ResponseError('TOKEN_USED', 'Token used at ' + entry.used_at.toISOString())\n\t}\n\tif (entry.expires_at < now) {\n\t\treturn new ResponseError('TOKEN_EXPIRED', 'Token expired at ' + entry.expires_at.toISOString())\n\t}\n\treturn new ResponseOk(entry)\n}\n"],"names":["isFixedLengthHexString","ResponseError","ImplementationException","ResponseOk"],"mappings":";;;;;;AAMa,MAAA,gBAAgB,OAAO,cAEb;AACtB,UAAQ,MAAM,UAAU,YAAY,EAAE,GAAG,SAAS,KAAK;AACxD;AAIa,MAAA,mBAAmB,CAAC,UAA6B;AACtD,SAAA,OACL,WAAW,QAAQ,EACnB,OAAO,OAAO,OAAO,EACrB,OAAO,KAAK;AACf;AAEO,MAAM,cAAc,CAAC,UAAsCA,UAAA,uBAAuB,OAAO,EAAE;AAGlG,MAAM,mBAAmB;AAElB,MAAM,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,OAAO,UAKK;AAClE,MAAI,CAAC,OAAO;AACJ,WAAA,IAAIC,SAAAA,cAAc,mBAAmB,iBAAiB;AAAA,EAAA;AAE9D,MAAI,mBAAmB,SAAS,MAAM,gBAAgB,kBAAkB;AAChE,WAAA,IAAIA,SAAAA,cAAc,iBAAiB,uBAAuB;AAAA,EAAA;AAElE,UAAQ,gBAAgB;AAAA,IACvB,KAAK;AACA,UAAA,MAAM,aAAa,MAAM;AACrB,eAAA,IAAIA,SAAAA,cAAc,iBAAiB,iCAAiC;AAAA,MAAA;AAE5E,UAAI,MAAM,eAAe,iBAAiB,KAAK,GAAG;AAC1C,eAAA,IAAIA,SAAAA,cAAc,iBAAiB,eAAe;AAAA,MAAA;AAE1D;AAAA,IACD,KAAK;AACA,UAAA,MAAM,aAAa,MAAM;AACrB,eAAA,IAAIA,SAAAA,cAAc,iBAAiB,aAAa;AAAA,MAAA;AAExD,UAAI,MAAM,aAAa,iBAAiB,KAAK,GAAG;AACxC,eAAA,IAAIA,SAAAA,cAAc,iBAAiB,aAAa;AAAA,MAAA;AAExD;AAAA,IACD;AACC,YAAM,IAAIC,WAAAA,wBAAwB;AAAA,EAAA;AAEpC,MAAI,MAAM,SAAS;AAClB,WAAO,IAAID,SAAc,cAAA,cAAc,mBAAmB,MAAM,QAAQ,aAAa;AAAA,EAAA;AAElF,MAAA,MAAM,aAAa,KAAK;AAC3B,WAAO,IAAIA,SAAc,cAAA,iBAAiB,sBAAsB,MAAM,WAAW,aAAa;AAAA,EAAA;AAExF,SAAA,IAAIE,oBAAW,KAAK;AAC5B;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"tokenUtils.js","sources":["../../../../../../packages/engine-tenant-api/src/model/utils/tokenUtils.ts"],"sourcesContent":["import crypto from 'node:crypto'\nimport { FixedLengthHexString, isFixedLengthHexString } from './typeUtils'\nimport { PersonToken } from '../type'\nimport { ImplementationException } from '../../exceptions'\nimport { Response, ResponseError, ResponseOk } from './Response'\n\nexport const generateToken = async (generator: {\n\trandomBytes: (bytes: number) => Promise<Buffer>\n}): Promise<string> => {\n\treturn (await generator.randomBytes(20)).toString('hex')\n}\n\nexport type TokenHash = FixedLengthHexString<64>\n\nexport const computeTokenHash = (token: string): TokenHash => {\n\treturn crypto //\n\t\t.createHash('sha256')\n\t\t.update(token, 'ascii')\n\t\t.digest('hex') as TokenHash\n}\n\nexport const isTokenHash = (token: string): token is TokenHash => isFixedLengthHexString(token, 64)\n\n\nconst MAX_OTP_ATTEMPTS = 3\n\nexport const validateToken = ({ entry, validationType, token, now }: {\n\tentry: PersonToken.Row | null\n\tvalidationType: PersonToken.ValidationType\n\ttoken: string\n\tnow: Date\n}): Response<PersonToken.Row, PersonToken.TokenValidationError> => {\n\tif (!entry) {\n\t\treturn new ResponseError('TOKEN_NOT_FOUND', 'Token not found')\n\t}\n\tif (validationType === 'otp' && entry.otp_attempts >= MAX_OTP_ATTEMPTS) {\n\t\treturn new ResponseError('TOKEN_EXPIRED', 'OTP attempts exceeded')\n\t}\n\tswitch (validationType) {\n\t\tcase 'token':\n\t\t\tif (entry.otp_hash !== null) {\n\t\t\t\treturn new ResponseError('TOKEN_INVALID', 'The token was exchanged for OTP')\n\t\t\t}\n\t\t\tif (entry.token_hash !== computeTokenHash(token)) {\n\t\t\t\treturn new ResponseError('TOKEN_INVALID', 'Token invalid')\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'otp':\n\t\t\tif (entry.otp_hash === null) {\n\t\t\t\treturn new ResponseError('TOKEN_INVALID', 'OTP not set')\n\t\t\t}\n\t\t\tif (entry.otp_hash !== computeTokenHash(token)) {\n\t\t\t\treturn new ResponseError('TOKEN_INVALID', 'OTP invalid')\n\t\t\t}\n\t\t\tbreak\n\t\tdefault:\n\t\t\tthrow new ImplementationException()\n\t}\n\tif (entry.used_at) {\n\t\treturn new ResponseError('TOKEN_USED', 'Token used at ' + entry.used_at.toISOString())\n\t}\n\tif (entry.expires_at < now) {\n\t\treturn new ResponseError('TOKEN_EXPIRED', 'Token expired at ' + entry.expires_at.toISOString())\n\t}\n\treturn new ResponseOk(entry)\n}\n"],"names":["crypto"],"mappings":";;;;AAMa,MAAA,gBAAgB,OAAO,cAEb;AACtB,UAAQ,MAAM,UAAU,YAAY,EAAE,GAAG,SAAS,KAAK;AACxD;AAIa,MAAA,mBAAmB,CAAC,UAA6B;AACtD,SAAAA,gBACL,WAAW,QAAQ,EACnB,OAAO,OAAO,OAAO,EACrB,OAAO,KAAK;AACf;AAEO,MAAM,cAAc,CAAC,UAAsC,uBAAuB,OAAO,EAAE;AAGlG,MAAM,mBAAmB;AAElB,MAAM,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,OAAO,UAKK;AAClE,MAAI,CAAC,OAAO;AACJ,WAAA,IAAI,cAAc,mBAAmB,iBAAiB;AAAA,EAC9D;AACA,MAAI,mBAAmB,SAAS,MAAM,gBAAgB,kBAAkB;AAChE,WAAA,IAAI,cAAc,iBAAiB,uBAAuB;AAAA,EAClE;AACA,UAAQ,gBAAgB;AAAA,IACvB,KAAK;AACA,UAAA,MAAM,aAAa,MAAM;AACrB,eAAA,IAAI,cAAc,iBAAiB,iCAAiC;AAAA,MAC5E;AACA,UAAI,MAAM,eAAe,iBAAiB,KAAK,GAAG;AAC1C,eAAA,IAAI,cAAc,iBAAiB,eAAe;AAAA,MAC1D;AACA;AAAA,IACD,KAAK;AACA,UAAA,MAAM,aAAa,MAAM;AACrB,eAAA,IAAI,cAAc,iBAAiB,aAAa;AAAA,MACxD;AACA,UAAI,MAAM,aAAa,iBAAiB,KAAK,GAAG;AACxC,eAAA,IAAI,cAAc,iBAAiB,aAAa;AAAA,MACxD;AACA;AAAA,IACD;AACC,YAAM,IAAI,wBAAwB;AAAA,EACpC;AACA,MAAI,MAAM,SAAS;AAClB,WAAO,IAAI,cAAc,cAAc,mBAAmB,MAAM,QAAQ,aAAa;AAAA,EACtF;AACI,MAAA,MAAM,aAAa,KAAK;AAC3B,WAAO,IAAI,cAAc,iBAAiB,sBAAsB,MAAM,WAAW,aAAa;AAAA,EAC/F;AACO,SAAA,IAAI,WAAW,KAAK;AAC5B;"}
1
+ {"version":3,"file":"tokenUtils.js","sources":["../../../../../../packages/engine-tenant-api/src/model/utils/tokenUtils.ts"],"sourcesContent":["import crypto from 'node:crypto'\nimport { FixedLengthHexString, isFixedLengthHexString } from './typeUtils'\nimport { PersonToken } from '../type'\nimport { ImplementationException } from '../../exceptions'\nimport { Response, ResponseError, ResponseOk } from './Response'\n\nexport const generateToken = async (generator: {\n\trandomBytes: (bytes: number) => Promise<Buffer>\n}): Promise<string> => {\n\treturn (await generator.randomBytes(20)).toString('hex')\n}\n\nexport type TokenHash = FixedLengthHexString<64>\n\nexport const computeTokenHash = (token: string): TokenHash => {\n\treturn crypto //\n\t\t.createHash('sha256')\n\t\t.update(token, 'ascii')\n\t\t.digest('hex') as TokenHash\n}\n\nexport const isTokenHash = (token: string): token is TokenHash => isFixedLengthHexString(token, 64)\n\n\nconst MAX_OTP_ATTEMPTS = 3\n\nexport const validateToken = ({ entry, validationType, token, now }: {\n\tentry: PersonToken.Row | null\n\tvalidationType: PersonToken.ValidationType\n\ttoken: string\n\tnow: Date\n}): Response<PersonToken.Row, PersonToken.TokenValidationError> => {\n\tif (!entry) {\n\t\treturn new ResponseError('TOKEN_NOT_FOUND', 'Token not found')\n\t}\n\tif (validationType === 'otp' && entry.otp_attempts >= MAX_OTP_ATTEMPTS) {\n\t\treturn new ResponseError('TOKEN_EXPIRED', 'OTP attempts exceeded')\n\t}\n\tswitch (validationType) {\n\t\tcase 'token':\n\t\t\tif (entry.otp_hash !== null) {\n\t\t\t\treturn new ResponseError('TOKEN_INVALID', 'The token was exchanged for OTP')\n\t\t\t}\n\t\t\tif (entry.token_hash !== computeTokenHash(token)) {\n\t\t\t\treturn new ResponseError('TOKEN_INVALID', 'Token invalid')\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'otp':\n\t\t\tif (entry.otp_hash === null) {\n\t\t\t\treturn new ResponseError('TOKEN_INVALID', 'OTP not set')\n\t\t\t}\n\t\t\tif (entry.otp_hash !== computeTokenHash(token)) {\n\t\t\t\treturn new ResponseError('TOKEN_INVALID', 'OTP invalid')\n\t\t\t}\n\t\t\tbreak\n\t\tdefault:\n\t\t\tthrow new ImplementationException()\n\t}\n\tif (entry.used_at) {\n\t\treturn new ResponseError('TOKEN_USED', 'Token used at ' + entry.used_at.toISOString())\n\t}\n\tif (entry.expires_at < now) {\n\t\treturn new ResponseError('TOKEN_EXPIRED', 'Token expired at ' + entry.expires_at.toISOString())\n\t}\n\treturn new ResponseOk(entry)\n}\n"],"names":["crypto"],"mappings":";;;;AAMa,MAAA,gBAAgB,OAAO,cAEb;AACtB,UAAQ,MAAM,UAAU,YAAY,EAAE,GAAG,SAAS,KAAK;AACxD;AAIa,MAAA,mBAAmB,CAAC,UAA6B;AACtD,SAAAA,gBACL,WAAW,QAAQ,EACnB,OAAO,OAAO,OAAO,EACrB,OAAO,KAAK;AACf;AAEO,MAAM,cAAc,CAAC,UAAsC,uBAAuB,OAAO,EAAE;AAGlG,MAAM,mBAAmB;AAElB,MAAM,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,OAAO,UAKK;AAClE,MAAI,CAAC,OAAO;AACJ,WAAA,IAAI,cAAc,mBAAmB,iBAAiB;AAAA,EAAA;AAE9D,MAAI,mBAAmB,SAAS,MAAM,gBAAgB,kBAAkB;AAChE,WAAA,IAAI,cAAc,iBAAiB,uBAAuB;AAAA,EAAA;AAElE,UAAQ,gBAAgB;AAAA,IACvB,KAAK;AACA,UAAA,MAAM,aAAa,MAAM;AACrB,eAAA,IAAI,cAAc,iBAAiB,iCAAiC;AAAA,MAAA;AAE5E,UAAI,MAAM,eAAe,iBAAiB,KAAK,GAAG;AAC1C,eAAA,IAAI,cAAc,iBAAiB,eAAe;AAAA,MAAA;AAE1D;AAAA,IACD,KAAK;AACA,UAAA,MAAM,aAAa,MAAM;AACrB,eAAA,IAAI,cAAc,iBAAiB,aAAa;AAAA,MAAA;AAExD,UAAI,MAAM,aAAa,iBAAiB,KAAK,GAAG;AACxC,eAAA,IAAI,cAAc,iBAAiB,aAAa;AAAA,MAAA;AAExD;AAAA,IACD;AACC,YAAM,IAAI,wBAAwB;AAAA,EAAA;AAEpC,MAAI,MAAM,SAAS;AAClB,WAAO,IAAI,cAAc,cAAc,mBAAmB,MAAM,QAAQ,aAAa;AAAA,EAAA;AAElF,MAAA,MAAM,aAAa,KAAK;AAC3B,WAAO,IAAI,cAAc,iBAAiB,sBAAsB,MAAM,WAAW,aAAa;AAAA,EAAA;AAExF,SAAA,IAAI,WAAW,KAAK;AAC5B;"}