@taon-dev/session 21.0.216 → 21.0.240

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 (1460) hide show
  1. package/VERIFIED-BUILD-DATA.jsonc +3 -3
  2. package/bin/session +0 -0
  3. package/bin/session-debug +0 -0
  4. package/bin/session-debug-brk +0 -0
  5. package/bin/start.js +38 -0
  6. package/browser/fesm2022/session-browser.mjs +8204 -1083
  7. package/browser/fesm2022/session-browser.mjs.map +1 -1
  8. package/browser/package.json +1 -1
  9. package/browser/types/session-browser.d.ts +1692 -55
  10. package/browser-prod/fesm2022/session-browser-prod.mjs +8290 -1162
  11. package/browser-prod/fesm2022/session-browser-prod.mjs.map +1 -1
  12. package/browser-prod/package.json +1 -1
  13. package/browser-prod/types/session-browser-prod.d.ts +1661 -53
  14. package/browser-prod.split-namespaces.json +59 -7
  15. package/full-dts/build-info._auto-generated_.d.ts +27 -0
  16. package/full-dts/env/env.angular-node-app.d.ts +71 -0
  17. package/full-dts/env/env.docs-webapp.d.ts +71 -0
  18. package/full-dts/env/env.electron-app.d.ts +71 -0
  19. package/full-dts/env/env.mobile-app.d.ts +71 -0
  20. package/full-dts/env/env.npm-lib-and-cli-tool.d.ts +71 -0
  21. package/full-dts/env/env.vscode-plugin.d.ts +71 -0
  22. package/full-dts/env/index.d.ts +6 -0
  23. package/full-dts/index._auto-generated_.d.ts +138 -0
  24. package/full-dts/index.d.ts +8 -0
  25. package/full-dts/migrations/1790328479283_initial.d.ts +21 -0
  26. package/full-dts/migrations/index.d.ts +1 -0
  27. package/full-dts/migrations/migrations_index._auto-generated_.d.ts +4 -0
  28. package/full-dts/my-organization-proj.d.ts +1 -0
  29. package/full-dts/start-cli.d.ts +7 -0
  30. package/full-dts/taon-audit-events/index.d.ts +11 -0
  31. package/full-dts/taon-audit-events/taon-audit-events.abstract.context.d.ts +16 -0
  32. package/full-dts/taon-audit-events/taon-audit-events.constants.d.ts +2 -0
  33. package/full-dts/taon-audit-events/taon-audit-events.controller.d.ts +11 -0
  34. package/full-dts/taon-audit-events/taon-audit-events.entity.d.ts +18 -0
  35. package/full-dts/taon-audit-events/taon-audit-events.middleware.d.ts +3 -0
  36. package/full-dts/taon-audit-events/taon-audit-events.models.d.ts +4 -0
  37. package/full-dts/taon-audit-events/taon-audit-events.provider.d.ts +3 -0
  38. package/full-dts/taon-audit-events/taon-audit-events.repository.d.ts +9 -0
  39. package/full-dts/taon-audit-events/taon-audit-events.subscriber.d.ts +7 -0
  40. package/full-dts/taon-audit-events/taon-audit-events.utils.d.ts +4 -0
  41. package/full-dts/taon-auth-context/index.d.ts +3 -0
  42. package/full-dts/taon-auth-context/taon-auth-context.abstract.context.d.ts +16 -0
  43. package/full-dts/taon-auth-context/taon-auth-context.entity.d.ts +24 -0
  44. package/full-dts/taon-auth-context/taon-auth-context.repository.d.ts +36 -0
  45. package/full-dts/taon-authorization-backoffice/index.d.ts +1 -0
  46. package/full-dts/taon-authorization-backoffice/taon-authorization-backoffice.models.d.ts +1 -0
  47. package/full-dts/taon-group/index.d.ts +8 -0
  48. package/full-dts/taon-group/taon-group-backoffice/index.d.ts +1 -0
  49. package/full-dts/taon-group/taon-group-backoffice/taon-group-backoffice.models.d.ts +9 -0
  50. package/full-dts/taon-group/taon-group-chooser/index.d.ts +1 -0
  51. package/full-dts/taon-group/taon-group-role.entity.d.ts +9 -0
  52. package/full-dts/taon-group/taon-group-role.repository.d.ts +13 -0
  53. package/full-dts/taon-group/taon-group.abstract.context.d.ts +16 -0
  54. package/full-dts/taon-group/taon-group.constants.d.ts +2 -0
  55. package/full-dts/taon-group/taon-group.controller.d.ts +19 -0
  56. package/full-dts/taon-group/taon-group.entity.d.ts +10 -0
  57. package/full-dts/taon-group/taon-group.middleware.d.ts +3 -0
  58. package/full-dts/taon-group/taon-group.provider.d.ts +3 -0
  59. package/full-dts/taon-group/taon-group.repository.d.ts +6 -0
  60. package/full-dts/taon-group/taon-group.utils.d.ts +0 -0
  61. package/full-dts/taon-notification/index.d.ts +11 -0
  62. package/full-dts/taon-notification/taon-notification-recipient.entity.d.ts +12 -0
  63. package/full-dts/taon-notification/taon-notification.abstract.context.d.ts +16 -0
  64. package/full-dts/taon-notification/taon-notification.constants.d.ts +2 -0
  65. package/full-dts/taon-notification/taon-notification.controller.d.ts +11 -0
  66. package/full-dts/taon-notification/taon-notification.entity.d.ts +29 -0
  67. package/full-dts/taon-notification/taon-notification.middleware.d.ts +3 -0
  68. package/full-dts/taon-notification/taon-notification.models.d.ts +4 -0
  69. package/full-dts/taon-notification/taon-notification.provider.d.ts +3 -0
  70. package/full-dts/taon-notification/taon-notification.repository.d.ts +9 -0
  71. package/full-dts/taon-notification/taon-notification.subscriber.d.ts +7 -0
  72. package/full-dts/taon-notification/taon-notification.utils.d.ts +4 -0
  73. package/full-dts/taon-permission/index.d.ts +11 -0
  74. package/full-dts/taon-permission/taon-permission-backoffice/index.d.ts +1 -0
  75. package/full-dts/taon-permission/taon-permission-backoffice/taon-permission-backoffice.models.d.ts +1 -0
  76. package/full-dts/taon-permission/taon-permission-chooser/index.d.ts +1 -0
  77. package/full-dts/taon-permission/taon-permission-view-edit/index.d.ts +1 -0
  78. package/full-dts/taon-permission/taon-permission.abstract.context.d.ts +16 -0
  79. package/full-dts/taon-permission/taon-permission.constants.d.ts +2 -0
  80. package/full-dts/taon-permission/taon-permission.controller.d.ts +11 -0
  81. package/full-dts/taon-permission/taon-permission.entity.d.ts +16 -0
  82. package/full-dts/taon-permission/taon-permission.middleware.d.ts +3 -0
  83. package/full-dts/taon-permission/taon-permission.models.d.ts +4 -0
  84. package/full-dts/taon-permission/taon-permission.provider.d.ts +3 -0
  85. package/full-dts/taon-permission/taon-permission.repository.d.ts +7 -0
  86. package/full-dts/taon-permission/taon-permission.subscriber.d.ts +7 -0
  87. package/full-dts/taon-permission/taon-permission.utils.d.ts +4 -0
  88. package/full-dts/taon-role/index.d.ts +8 -0
  89. package/full-dts/taon-role/taon-role-backoffice/index.d.ts +1 -0
  90. package/full-dts/taon-role/taon-role-backoffice/taon-role-backoffice.models.d.ts +9 -0
  91. package/full-dts/taon-role/taon-role-chooser/index.d.ts +1 -0
  92. package/full-dts/taon-role/taon-role-permission.entity.d.ts +9 -0
  93. package/full-dts/taon-role/taon-role-permission.repository.d.ts +13 -0
  94. package/full-dts/taon-role/taon-role.abstract.context.d.ts +16 -0
  95. package/full-dts/taon-role/taon-role.constants.d.ts +2 -0
  96. package/full-dts/taon-role/taon-role.controller.d.ts +15 -0
  97. package/full-dts/taon-role/taon-role.entity.d.ts +18 -0
  98. package/full-dts/taon-role/taon-role.models.d.ts +4 -0
  99. package/full-dts/taon-role/taon-role.provider.d.ts +3 -0
  100. package/full-dts/taon-role/taon-role.repository.d.ts +6 -0
  101. package/full-dts/taon-session/index.d.ts +12 -0
  102. package/full-dts/taon-session/taon-profile/index.d.ts +8 -0
  103. package/full-dts/taon-session/taon-profile/taon-profile-picture/index.d.ts +1 -0
  104. package/full-dts/taon-session/taon-profile/taon-profile-picture/taon-profile-picture.models.d.ts +1 -0
  105. package/full-dts/taon-session/taon-profile/taon-profile.abstract.context.d.ts +16 -0
  106. package/full-dts/taon-session/taon-profile/taon-profile.constants.d.ts +6 -0
  107. package/full-dts/taon-session/taon-profile/taon-profile.controller.d.ts +21 -0
  108. package/full-dts/taon-session/taon-profile/taon-profile.entity.d.ts +4 -0
  109. package/full-dts/taon-session/taon-profile/taon-profile.kv.repository.d.ts +7 -0
  110. package/full-dts/taon-session/taon-profile/taon-profile.models.d.ts +8 -0
  111. package/full-dts/taon-session/taon-profile/taon-profile.provider.d.ts +12 -0
  112. package/full-dts/taon-session/taon-session/index.d.ts +1 -0
  113. package/full-dts/taon-session/taon-session/taon-session-profile/index.d.ts +1 -0
  114. package/full-dts/taon-session/taon-session/taon-session-profile/taon-session-profile.models.d.ts +1 -0
  115. package/full-dts/taon-session/taon-session-backoffice/index.d.ts +6 -0
  116. package/full-dts/taon-session/taon-session-backoffice/taon-session-backoffice.controller.d.ts +13 -0
  117. package/full-dts/taon-session/taon-session-backoffice/taon-session-backoffice.models.d.ts +10 -0
  118. package/full-dts/taon-session/taon-session-button/index.d.ts +1 -0
  119. package/full-dts/taon-session/taon-session.abstract.context.d.ts +16 -0
  120. package/full-dts/taon-session/taon-session.controller.d.ts +25 -0
  121. package/full-dts/taon-session/taon-session.entity.d.ts +21 -0
  122. package/{lib/taon-session/taon-session-kv.repository.d.ts → full-dts/taon-session/taon-session.kv.repository.d.ts} +8 -4
  123. package/full-dts/taon-session/taon-session.middleware.d.ts +6 -0
  124. package/full-dts/taon-session/taon-session.models.d.ts +33 -0
  125. package/full-dts/taon-session/taon-session.provider.d.ts +169 -0
  126. package/full-dts/taon-session/taon-session.repository.d.ts +13 -0
  127. package/full-dts/taon-session/taon-session.utils.d.ts +15 -0
  128. package/full-dts/taon-session/taon-session.validators.d.ts +4 -0
  129. package/full-dts/taon-session-user/index.d.ts +12 -0
  130. package/full-dts/taon-session-user/taon-session-backoffice-users/index.d.ts +1 -0
  131. package/full-dts/taon-session-user/taon-session-backoffice-users/taon-session-backoffice-users.models.d.ts +14 -0
  132. package/full-dts/taon-session-user/taon-session-user-group.entity.d.ts +10 -0
  133. package/full-dts/taon-session-user/taon-session-user-group.repository.d.ts +7 -0
  134. package/full-dts/taon-session-user/taon-session-user-identity.entity.d.ts +37 -0
  135. package/full-dts/taon-session-user/taon-session-user-identity.repository.d.ts +21 -0
  136. package/full-dts/taon-session-user/taon-session-user-role.entity.d.ts +10 -0
  137. package/full-dts/taon-session-user/taon-session-user.abstract.context.d.ts +16 -0
  138. package/full-dts/taon-session-user/taon-session-user.constants.d.ts +2 -0
  139. package/full-dts/taon-session-user/taon-session-user.controller.d.ts +11 -0
  140. package/full-dts/taon-session-user/taon-session-user.entity.d.ts +15 -0
  141. package/full-dts/taon-session-user/taon-session-user.middleware.d.ts +3 -0
  142. package/full-dts/taon-session-user/taon-session-user.models.d.ts +12 -0
  143. package/full-dts/taon-session-user/taon-session-user.provider.d.ts +3 -0
  144. package/full-dts/taon-session-user/taon-session-user.repository.d.ts +10 -0
  145. package/full-dts/taon-session-user/taon-session-user.subscriber.d.ts +7 -0
  146. package/full-dts/taon-session-user/taon-session-user.utils.d.ts +3 -0
  147. package/html/app/baseline-backoffice/taon-baseline-backoffice.component.html +17 -0
  148. package/html/app/session-example/session-example.component.html +2 -0
  149. package/html/assets/generated/pwa/html-pwa.html +53 -53
  150. package/html/imports.html +1 -0
  151. package/html/lib/taon-authorization-backoffice/taon-authorization-backoffice.component.html +10 -0
  152. package/html/lib/taon-group/taon-group-backoffice/taon-group-backoffice.component.html +11 -0
  153. package/html/lib/taon-group/taon-group-backoffice/taon-group-details.component.html +37 -0
  154. package/html/lib/taon-group/taon-group-chooser/taon-group-chooser.component.html +39 -0
  155. package/html/lib/taon-permission/taon-permission-backoffice/taon-permission-backoffice.component.html +14 -0
  156. package/html/lib/taon-permission/taon-permission-chooser/taon-permission-chooser.component.html +39 -0
  157. package/html/lib/taon-permission/taon-permission-view-edit/taon-permission-view-edit.component.html +54 -0
  158. package/html/lib/taon-role/taon-role-backoffice/taon-role-backoffice.component.html +11 -0
  159. package/html/lib/taon-role/taon-role-backoffice/taon-role-details.component.html +37 -0
  160. package/html/lib/taon-role/taon-role-chooser/taon-role-chooser.component.html +39 -0
  161. package/html/lib/taon-session/taon-profile/taon-profile-picture/taon-profile-picture.component.html +61 -0
  162. package/html/lib/taon-session/taon-session/social-buttons/google-login-register-button.component.html +26 -0
  163. package/html/lib/taon-session/taon-session/taon-session-profile/taon-session-profile.component.html +147 -0
  164. package/html/lib/taon-session/taon-session/taon-session.component.html +414 -31
  165. package/html/lib/taon-session/taon-session-backoffice/taon-session-backoffice.component.html +12 -0
  166. package/html/lib/taon-session/taon-session-backoffice/taon-session-details.component.html +50 -0
  167. package/html/lib/taon-session/taon-session-button/taon-session-button.component.html +32 -0
  168. package/html/lib/taon-session-user/taon-session-backoffice-users/taon-session-backoffice-users.component.html +11 -0
  169. package/html/lib/taon-session-user/taon-session-backoffice-users/taon-session-user-details.component.html +99 -0
  170. package/index.d.ts +2 -0
  171. package/index.js +2 -0
  172. package/index.js.map +1 -1
  173. package/lib/build-info._auto-generated_.d.ts +4 -1
  174. package/lib/build-info._auto-generated_.js +6 -2
  175. package/lib/build-info._auto-generated_.js.map +1 -1
  176. package/lib/env/env.angular-node-app.d.ts +4 -0
  177. package/lib/env/env.angular-node-app.js +14 -2
  178. package/lib/env/env.angular-node-app.js.map +1 -1
  179. package/lib/env/env.docs-webapp.d.ts +4 -0
  180. package/lib/env/env.docs-webapp.js +14 -2
  181. package/lib/env/env.docs-webapp.js.map +1 -1
  182. package/lib/env/env.electron-app.d.ts +4 -0
  183. package/lib/env/env.electron-app.js +14 -2
  184. package/lib/env/env.electron-app.js.map +1 -1
  185. package/lib/env/env.mobile-app.d.ts +4 -0
  186. package/lib/env/env.mobile-app.js +14 -2
  187. package/lib/env/env.mobile-app.js.map +1 -1
  188. package/lib/env/env.npm-lib-and-cli-tool.d.ts +4 -0
  189. package/lib/env/env.npm-lib-and-cli-tool.js +14 -2
  190. package/lib/env/env.npm-lib-and-cli-tool.js.map +1 -1
  191. package/lib/env/env.vscode-plugin.d.ts +4 -0
  192. package/lib/env/env.vscode-plugin.js +14 -2
  193. package/lib/env/env.vscode-plugin.js.map +1 -1
  194. package/lib/index._auto-generated_.d.ts +87 -5
  195. package/lib/index._auto-generated_.js +128 -4
  196. package/lib/index._auto-generated_.js.map +1 -1
  197. package/lib/index.d.ts +4 -0
  198. package/lib/index.js +4 -0
  199. package/lib/index.js.map +1 -1
  200. package/lib/migrations/1790328479283_initial.d.ts +21 -0
  201. package/lib/migrations/1790328479283_initial.js +256 -0
  202. package/lib/migrations/1790328479283_initial.js.map +1 -0
  203. package/lib/migrations/migrations_index._auto-generated_.d.ts +4 -0
  204. package/lib/migrations/migrations_index._auto-generated_.js +7 -0
  205. package/lib/migrations/migrations_index._auto-generated_.js.map +1 -1
  206. package/lib/package.json +1 -1
  207. package/lib/start-cli.js +214 -31
  208. package/lib/start-cli.js.map +1 -1
  209. package/lib/taon-audit-events/index.d.ts +10 -0
  210. package/lib/taon-audit-events/index.js +28 -0
  211. package/lib/taon-audit-events/index.js.map +1 -0
  212. package/lib/taon-audit-events/taon-audit-events.abstract.context.d.ts +16 -0
  213. package/lib/taon-audit-events/taon-audit-events.abstract.context.js +24 -0
  214. package/lib/taon-audit-events/taon-audit-events.abstract.context.js.map +1 -0
  215. package/lib/taon-audit-events/taon-audit-events.constants.d.ts +2 -0
  216. package/lib/taon-audit-events/taon-audit-events.constants.js +9 -0
  217. package/lib/taon-audit-events/taon-audit-events.constants.js.map +1 -0
  218. package/lib/taon-audit-events/taon-audit-events.controller.d.ts +11 -0
  219. package/lib/taon-audit-events/taon-audit-events.controller.js +56 -0
  220. package/lib/taon-audit-events/taon-audit-events.controller.js.map +1 -0
  221. package/lib/taon-audit-events/taon-audit-events.entity.d.ts +18 -0
  222. package/lib/taon-audit-events/taon-audit-events.entity.js +116 -0
  223. package/lib/taon-audit-events/taon-audit-events.entity.js.map +1 -0
  224. package/lib/taon-audit-events/taon-audit-events.middleware.d.ts +3 -0
  225. package/lib/taon-audit-events/taon-audit-events.middleware.js +21 -0
  226. package/lib/taon-audit-events/taon-audit-events.middleware.js.map +1 -0
  227. package/lib/taon-audit-events/taon-audit-events.models.d.ts +4 -0
  228. package/lib/taon-audit-events/taon-audit-events.models.js +9 -0
  229. package/lib/taon-audit-events/taon-audit-events.models.js.map +1 -0
  230. package/lib/taon-audit-events/taon-audit-events.provider.d.ts +3 -0
  231. package/lib/taon-audit-events/taon-audit-events.provider.js +21 -0
  232. package/lib/taon-audit-events/taon-audit-events.provider.js.map +1 -0
  233. package/lib/taon-audit-events/taon-audit-events.repository.d.ts +9 -0
  234. package/lib/taon-audit-events/taon-audit-events.repository.js +37 -0
  235. package/lib/taon-audit-events/taon-audit-events.repository.js.map +1 -0
  236. package/lib/taon-audit-events/taon-audit-events.subscriber.d.ts +7 -0
  237. package/lib/taon-audit-events/taon-audit-events.subscriber.js +28 -0
  238. package/lib/taon-audit-events/taon-audit-events.subscriber.js.map +1 -0
  239. package/lib/taon-audit-events/taon-audit-events.utils.d.ts +4 -0
  240. package/lib/taon-audit-events/taon-audit-events.utils.js +11 -0
  241. package/lib/taon-audit-events/taon-audit-events.utils.js.map +1 -0
  242. package/lib/taon-auth-context/index.d.ts +3 -0
  243. package/lib/taon-auth-context/index.js +20 -0
  244. package/lib/taon-auth-context/index.js.map +1 -0
  245. package/lib/taon-auth-context/taon-auth-context.abstract.context.d.ts +16 -0
  246. package/lib/taon-auth-context/taon-auth-context.abstract.context.js +16 -0
  247. package/lib/taon-auth-context/taon-auth-context.abstract.context.js.map +1 -0
  248. package/lib/taon-auth-context/taon-auth-context.entity.d.ts +24 -0
  249. package/lib/taon-auth-context/taon-auth-context.entity.js +45 -0
  250. package/lib/taon-auth-context/taon-auth-context.entity.js.map +1 -0
  251. package/lib/taon-auth-context/taon-auth-context.repository.d.ts +36 -0
  252. package/lib/taon-auth-context/taon-auth-context.repository.js +234 -0
  253. package/lib/taon-auth-context/taon-auth-context.repository.js.map +1 -0
  254. package/lib/taon-authorization-backoffice/index.d.ts +1 -0
  255. package/lib/taon-authorization-backoffice/index.js +5 -0
  256. package/lib/taon-authorization-backoffice/index.js.map +1 -0
  257. package/lib/taon-authorization-backoffice/taon-authorization-backoffice.models.d.ts +1 -0
  258. package/lib/taon-authorization-backoffice/taon-authorization-backoffice.models.js +3 -0
  259. package/lib/taon-authorization-backoffice/taon-authorization-backoffice.models.js.map +1 -0
  260. package/lib/taon-group/index.d.ts +7 -0
  261. package/lib/taon-group/index.js +27 -0
  262. package/lib/taon-group/index.js.map +1 -0
  263. package/lib/taon-group/taon-group-backoffice/index.d.ts +1 -0
  264. package/lib/taon-group/taon-group-backoffice/index.js +5 -0
  265. package/lib/taon-group/taon-group-backoffice/index.js.map +1 -0
  266. package/lib/taon-group/taon-group-backoffice/taon-group-backoffice.models.d.ts +9 -0
  267. package/lib/taon-group/taon-group-backoffice/taon-group-backoffice.models.js +3 -0
  268. package/lib/taon-group/taon-group-backoffice/taon-group-backoffice.models.js.map +1 -0
  269. package/lib/taon-group/taon-group-chooser/index.d.ts +1 -0
  270. package/lib/taon-group/taon-group-chooser/index.js +5 -0
  271. package/lib/taon-group/taon-group-chooser/index.js.map +1 -0
  272. package/lib/taon-group/taon-group-role.entity.d.ts +9 -0
  273. package/lib/taon-group/taon-group-role.entity.js +75 -0
  274. package/lib/taon-group/taon-group-role.entity.js.map +1 -0
  275. package/lib/taon-group/taon-group-role.repository.d.ts +13 -0
  276. package/lib/taon-group/taon-group-role.repository.js +89 -0
  277. package/lib/taon-group/taon-group-role.repository.js.map +1 -0
  278. package/lib/taon-group/taon-group.abstract.context.d.ts +16 -0
  279. package/lib/taon-group/taon-group.abstract.context.js +27 -0
  280. package/lib/taon-group/taon-group.abstract.context.js.map +1 -0
  281. package/lib/taon-group/taon-group.constants.d.ts +2 -0
  282. package/lib/taon-group/taon-group.constants.js +5 -0
  283. package/lib/taon-group/taon-group.constants.js.map +1 -0
  284. package/lib/taon-group/taon-group.controller.d.ts +19 -0
  285. package/lib/taon-group/taon-group.controller.js +157 -0
  286. package/lib/taon-group/taon-group.controller.js.map +1 -0
  287. package/lib/taon-group/taon-group.entity.d.ts +10 -0
  288. package/lib/taon-group/taon-group.entity.js +76 -0
  289. package/lib/taon-group/taon-group.entity.js.map +1 -0
  290. package/lib/taon-group/taon-group.middleware.d.ts +3 -0
  291. package/lib/taon-group/taon-group.middleware.js +21 -0
  292. package/lib/taon-group/taon-group.middleware.js.map +1 -0
  293. package/lib/taon-group/taon-group.models.d.ts +0 -0
  294. package/lib/taon-group/taon-group.models.js +3 -0
  295. package/lib/taon-group/taon-group.models.js.map +1 -0
  296. package/lib/taon-group/taon-group.provider.d.ts +3 -0
  297. package/lib/taon-group/taon-group.provider.js +21 -0
  298. package/lib/taon-group/taon-group.provider.js.map +1 -0
  299. package/lib/taon-group/taon-group.repository.d.ts +6 -0
  300. package/lib/taon-group/taon-group.repository.js +40 -0
  301. package/lib/taon-group/taon-group.repository.js.map +1 -0
  302. package/lib/taon-group/taon-group.utils.d.ts +0 -0
  303. package/lib/taon-group/taon-group.utils.js +3 -0
  304. package/lib/taon-group/taon-group.utils.js.map +1 -0
  305. package/lib/taon-notification/index.d.ts +10 -0
  306. package/lib/taon-notification/index.js +28 -0
  307. package/lib/taon-notification/index.js.map +1 -0
  308. package/lib/taon-notification/taon-notification-recipient.entity.d.ts +12 -0
  309. package/lib/taon-notification/taon-notification-recipient.entity.js +96 -0
  310. package/lib/taon-notification/taon-notification-recipient.entity.js.map +1 -0
  311. package/lib/taon-notification/taon-notification.abstract.context.d.ts +16 -0
  312. package/lib/taon-notification/taon-notification.abstract.context.js +25 -0
  313. package/lib/taon-notification/taon-notification.abstract.context.js.map +1 -0
  314. package/lib/taon-notification/taon-notification.constants.d.ts +2 -0
  315. package/lib/taon-notification/taon-notification.constants.js +9 -0
  316. package/lib/taon-notification/taon-notification.constants.js.map +1 -0
  317. package/lib/taon-notification/taon-notification.controller.d.ts +11 -0
  318. package/lib/taon-notification/taon-notification.controller.js +56 -0
  319. package/lib/taon-notification/taon-notification.controller.js.map +1 -0
  320. package/lib/taon-notification/taon-notification.entity.d.ts +29 -0
  321. package/lib/taon-notification/taon-notification.entity.js +122 -0
  322. package/lib/taon-notification/taon-notification.entity.js.map +1 -0
  323. package/lib/taon-notification/taon-notification.middleware.d.ts +3 -0
  324. package/lib/taon-notification/taon-notification.middleware.js +21 -0
  325. package/lib/taon-notification/taon-notification.middleware.js.map +1 -0
  326. package/lib/taon-notification/taon-notification.models.d.ts +4 -0
  327. package/lib/taon-notification/taon-notification.models.js +9 -0
  328. package/lib/taon-notification/taon-notification.models.js.map +1 -0
  329. package/lib/taon-notification/taon-notification.provider.d.ts +3 -0
  330. package/lib/taon-notification/taon-notification.provider.js +21 -0
  331. package/lib/taon-notification/taon-notification.provider.js.map +1 -0
  332. package/lib/taon-notification/taon-notification.repository.d.ts +9 -0
  333. package/lib/taon-notification/taon-notification.repository.js +37 -0
  334. package/lib/taon-notification/taon-notification.repository.js.map +1 -0
  335. package/lib/taon-notification/taon-notification.subscriber.d.ts +7 -0
  336. package/lib/taon-notification/taon-notification.subscriber.js +28 -0
  337. package/lib/taon-notification/taon-notification.subscriber.js.map +1 -0
  338. package/lib/taon-notification/taon-notification.utils.d.ts +4 -0
  339. package/lib/taon-notification/taon-notification.utils.js +11 -0
  340. package/lib/taon-notification/taon-notification.utils.js.map +1 -0
  341. package/lib/taon-permission/index.d.ts +10 -0
  342. package/lib/taon-permission/index.js +28 -0
  343. package/lib/taon-permission/index.js.map +1 -0
  344. package/lib/taon-permission/taon-permission-backoffice/index.d.ts +1 -0
  345. package/lib/taon-permission/taon-permission-backoffice/index.js +5 -0
  346. package/lib/taon-permission/taon-permission-backoffice/index.js.map +1 -0
  347. package/lib/taon-permission/taon-permission-backoffice/taon-permission-backoffice.models.d.ts +1 -0
  348. package/lib/taon-permission/taon-permission-backoffice/taon-permission-backoffice.models.js +3 -0
  349. package/lib/taon-permission/taon-permission-backoffice/taon-permission-backoffice.models.js.map +1 -0
  350. package/lib/taon-permission/taon-permission-chooser/index.d.ts +1 -0
  351. package/lib/taon-permission/taon-permission-chooser/index.js +5 -0
  352. package/lib/taon-permission/taon-permission-chooser/index.js.map +1 -0
  353. package/lib/taon-permission/taon-permission-view-edit/index.d.ts +1 -0
  354. package/lib/taon-permission/taon-permission-view-edit/index.js +5 -0
  355. package/lib/taon-permission/taon-permission-view-edit/index.js.map +1 -0
  356. package/lib/taon-permission/taon-permission.abstract.context.d.ts +16 -0
  357. package/lib/taon-permission/taon-permission.abstract.context.js +24 -0
  358. package/lib/taon-permission/taon-permission.abstract.context.js.map +1 -0
  359. package/lib/taon-permission/taon-permission.constants.d.ts +2 -0
  360. package/lib/taon-permission/taon-permission.constants.js +9 -0
  361. package/lib/taon-permission/taon-permission.constants.js.map +1 -0
  362. package/lib/taon-permission/taon-permission.controller.d.ts +11 -0
  363. package/lib/taon-permission/taon-permission.controller.js +62 -0
  364. package/lib/taon-permission/taon-permission.controller.js.map +1 -0
  365. package/lib/taon-permission/taon-permission.entity.d.ts +16 -0
  366. package/lib/taon-permission/taon-permission.entity.js +74 -0
  367. package/lib/taon-permission/taon-permission.entity.js.map +1 -0
  368. package/lib/taon-permission/taon-permission.middleware.d.ts +3 -0
  369. package/lib/taon-permission/taon-permission.middleware.js +21 -0
  370. package/lib/taon-permission/taon-permission.middleware.js.map +1 -0
  371. package/lib/taon-permission/taon-permission.models.d.ts +4 -0
  372. package/lib/taon-permission/taon-permission.models.js +9 -0
  373. package/lib/taon-permission/taon-permission.models.js.map +1 -0
  374. package/lib/taon-permission/taon-permission.provider.d.ts +3 -0
  375. package/lib/taon-permission/taon-permission.provider.js +21 -0
  376. package/lib/taon-permission/taon-permission.provider.js.map +1 -0
  377. package/lib/taon-permission/taon-permission.repository.d.ts +7 -0
  378. package/lib/taon-permission/taon-permission.repository.js +44 -0
  379. package/lib/taon-permission/taon-permission.repository.js.map +1 -0
  380. package/lib/taon-permission/taon-permission.subscriber.d.ts +7 -0
  381. package/lib/taon-permission/taon-permission.subscriber.js +28 -0
  382. package/lib/taon-permission/taon-permission.subscriber.js.map +1 -0
  383. package/lib/taon-permission/taon-permission.utils.d.ts +4 -0
  384. package/lib/taon-permission/taon-permission.utils.js +11 -0
  385. package/lib/taon-permission/taon-permission.utils.js.map +1 -0
  386. package/lib/taon-role/index.d.ts +7 -0
  387. package/lib/taon-role/index.js +25 -0
  388. package/lib/taon-role/index.js.map +1 -0
  389. package/lib/taon-role/taon-role-backoffice/index.d.ts +1 -0
  390. package/lib/taon-role/taon-role-backoffice/index.js +5 -0
  391. package/lib/taon-role/taon-role-backoffice/index.js.map +1 -0
  392. package/lib/taon-role/taon-role-backoffice/taon-role-backoffice.models.d.ts +9 -0
  393. package/lib/taon-role/taon-role-backoffice/taon-role-backoffice.models.js +3 -0
  394. package/lib/taon-role/taon-role-backoffice/taon-role-backoffice.models.js.map +1 -0
  395. package/lib/taon-role/taon-role-chooser/index.d.ts +1 -0
  396. package/lib/taon-role/taon-role-chooser/index.js +5 -0
  397. package/lib/taon-role/taon-role-chooser/index.js.map +1 -0
  398. package/lib/taon-role/taon-role-permission.entity.d.ts +9 -0
  399. package/lib/taon-role/taon-role-permission.entity.js +75 -0
  400. package/lib/taon-role/taon-role-permission.entity.js.map +1 -0
  401. package/lib/taon-role/taon-role-permission.repository.d.ts +13 -0
  402. package/lib/taon-role/taon-role-permission.repository.js +84 -0
  403. package/lib/taon-role/taon-role-permission.repository.js.map +1 -0
  404. package/lib/taon-role/taon-role.abstract.context.d.ts +16 -0
  405. package/lib/taon-role/taon-role.abstract.context.js +29 -0
  406. package/lib/taon-role/taon-role.abstract.context.js.map +1 -0
  407. package/lib/taon-role/taon-role.constants.d.ts +2 -0
  408. package/lib/taon-role/taon-role.constants.js +9 -0
  409. package/lib/taon-role/taon-role.constants.js.map +1 -0
  410. package/lib/taon-role/taon-role.controller.d.ts +15 -0
  411. package/lib/taon-role/taon-role.controller.js +100 -0
  412. package/lib/taon-role/taon-role.controller.js.map +1 -0
  413. package/lib/taon-role/taon-role.entity.d.ts +18 -0
  414. package/lib/taon-role/taon-role.entity.js +92 -0
  415. package/lib/taon-role/taon-role.entity.js.map +1 -0
  416. package/lib/taon-role/taon-role.models.d.ts +4 -0
  417. package/lib/taon-role/taon-role.models.js +9 -0
  418. package/lib/taon-role/taon-role.models.js.map +1 -0
  419. package/lib/taon-role/taon-role.provider.d.ts +3 -0
  420. package/lib/taon-role/taon-role.provider.js +21 -0
  421. package/lib/taon-role/taon-role.provider.js.map +1 -0
  422. package/lib/taon-role/taon-role.repository.d.ts +6 -0
  423. package/lib/{taon-session/taon-session-user.repository.js → taon-role/taon-role.repository.js} +13 -9
  424. package/lib/taon-role/taon-role.repository.js.map +1 -0
  425. package/lib/taon-session/index.d.ts +3 -5
  426. package/lib/taon-session/index.js +4 -3
  427. package/lib/taon-session/index.js.map +1 -1
  428. package/lib/taon-session/taon-profile/index.d.ts +6 -0
  429. package/lib/taon-session/taon-profile/index.js +25 -0
  430. package/lib/taon-session/taon-profile/index.js.map +1 -0
  431. package/lib/taon-session/taon-profile/taon-profile-picture/index.d.ts +1 -0
  432. package/lib/taon-session/taon-profile/taon-profile-picture/index.js +5 -0
  433. package/lib/taon-session/taon-profile/taon-profile-picture/index.js.map +1 -0
  434. package/lib/taon-session/taon-profile/taon-profile-picture/taon-profile-picture.models.d.ts +1 -0
  435. package/lib/taon-session/taon-profile/taon-profile-picture/taon-profile-picture.models.js +3 -0
  436. package/lib/taon-session/taon-profile/taon-profile-picture/taon-profile-picture.models.js.map +1 -0
  437. package/lib/taon-session/taon-profile/taon-profile.abstract.context.d.ts +16 -0
  438. package/lib/taon-session/taon-profile/taon-profile.abstract.context.js +28 -0
  439. package/lib/taon-session/taon-profile/taon-profile.abstract.context.js.map +1 -0
  440. package/lib/taon-session/taon-profile/taon-profile.constants.d.ts +6 -0
  441. package/lib/taon-session/taon-profile/taon-profile.constants.js +18 -0
  442. package/lib/taon-session/taon-profile/taon-profile.constants.js.map +1 -0
  443. package/lib/taon-session/taon-profile/taon-profile.controller.d.ts +21 -0
  444. package/lib/taon-session/taon-profile/taon-profile.controller.js +112 -0
  445. package/lib/taon-session/taon-profile/taon-profile.controller.js.map +1 -0
  446. package/lib/taon-session/taon-profile/taon-profile.entity.d.ts +4 -0
  447. package/lib/taon-session/{taon-session-user.entity.js → taon-profile/taon-profile.entity.js} +21 -20
  448. package/lib/taon-session/taon-profile/taon-profile.entity.js.map +1 -0
  449. package/lib/taon-session/taon-profile/taon-profile.kv.repository.d.ts +7 -0
  450. package/lib/taon-session/taon-profile/taon-profile.kv.repository.js +24 -0
  451. package/lib/taon-session/taon-profile/taon-profile.kv.repository.js.map +1 -0
  452. package/lib/taon-session/taon-profile/taon-profile.models.d.ts +8 -0
  453. package/lib/taon-session/taon-profile/taon-profile.models.js +15 -0
  454. package/lib/taon-session/taon-profile/taon-profile.models.js.map +1 -0
  455. package/lib/taon-session/taon-profile/taon-profile.provider.d.ts +12 -0
  456. package/lib/taon-session/taon-profile/taon-profile.provider.js +32 -0
  457. package/lib/taon-session/taon-profile/taon-profile.provider.js.map +1 -0
  458. package/lib/taon-session/taon-session/index.d.ts +1 -1
  459. package/lib/taon-session/taon-session/index.js +2 -2
  460. package/lib/taon-session/taon-session/taon-session-profile/index.d.ts +1 -0
  461. package/lib/taon-session/taon-session/taon-session-profile/index.js +5 -0
  462. package/lib/taon-session/taon-session/taon-session-profile/index.js.map +1 -0
  463. package/lib/taon-session/taon-session/taon-session-profile/taon-session-profile.models.d.ts +1 -0
  464. package/lib/taon-session/taon-session/taon-session-profile/taon-session-profile.models.js +3 -0
  465. package/lib/taon-session/taon-session/taon-session-profile/taon-session-profile.models.js.map +1 -0
  466. package/lib/taon-session/taon-session-backoffice/index.d.ts +2 -0
  467. package/lib/taon-session/taon-session-backoffice/index.js +23 -0
  468. package/lib/taon-session/taon-session-backoffice/index.js.map +1 -0
  469. package/lib/taon-session/taon-session-backoffice/taon-session-backoffice.controller.d.ts +13 -0
  470. package/lib/taon-session/taon-session-backoffice/taon-session-backoffice.controller.js +185 -0
  471. package/lib/taon-session/taon-session-backoffice/taon-session-backoffice.controller.js.map +1 -0
  472. package/lib/taon-session/taon-session-backoffice/taon-session-backoffice.models.d.ts +10 -0
  473. package/lib/taon-session/taon-session-backoffice/taon-session-backoffice.models.js +3 -0
  474. package/lib/taon-session/taon-session-backoffice/taon-session-backoffice.models.js.map +1 -0
  475. package/lib/taon-session/taon-session-button/index.d.ts +1 -0
  476. package/lib/taon-session/taon-session-button/index.js +5 -0
  477. package/lib/taon-session/taon-session-button/index.js.map +1 -0
  478. package/lib/taon-session/taon-session.abstract.context.d.ts +10 -13
  479. package/lib/taon-session/taon-session.abstract.context.js +42 -12
  480. package/lib/taon-session/taon-session.abstract.context.js.map +1 -1
  481. package/lib/taon-session/taon-session.controller.d.ts +22 -11
  482. package/lib/taon-session/taon-session.controller.js +491 -59
  483. package/lib/taon-session/taon-session.controller.js.map +1 -1
  484. package/lib/taon-session/taon-session.entity.d.ts +21 -0
  485. package/lib/taon-session/taon-session.entity.js +157 -0
  486. package/lib/taon-session/taon-session.entity.js.map +1 -0
  487. package/lib/taon-session/taon-session.kv.repository.d.ts +15 -0
  488. package/lib/taon-session/{taon-session-kv.repository.js → taon-session.kv.repository.js} +29 -21
  489. package/lib/taon-session/taon-session.kv.repository.js.map +1 -0
  490. package/lib/taon-session/taon-session.middleware.d.ts +5 -7
  491. package/lib/taon-session/taon-session.middleware.js +5 -20
  492. package/lib/taon-session/taon-session.middleware.js.map +1 -1
  493. package/lib/taon-session/taon-session.models.d.ts +32 -7
  494. package/lib/taon-session/taon-session.models.js +38 -6
  495. package/lib/taon-session/taon-session.models.js.map +1 -1
  496. package/lib/taon-session/taon-session.provider.d.ts +165 -3
  497. package/lib/taon-session/taon-session.provider.js +212 -6
  498. package/lib/taon-session/taon-session.provider.js.map +1 -1
  499. package/lib/taon-session/taon-session.repository.d.ts +13 -0
  500. package/lib/taon-session/taon-session.repository.js +147 -0
  501. package/lib/taon-session/taon-session.repository.js.map +1 -0
  502. package/lib/taon-session/taon-session.state.service.d.ts +59 -0
  503. package/lib/taon-session/taon-session.state.service.js +393 -0
  504. package/lib/taon-session/taon-session.state.service.js.map +1 -0
  505. package/lib/taon-session/taon-session.utils.d.ts +15 -1
  506. package/lib/taon-session/taon-session.utils.js +160 -0
  507. package/lib/taon-session/taon-session.utils.js.map +1 -1
  508. package/lib/taon-session/taon-session.validators.d.ts +2 -0
  509. package/lib/taon-session/taon-session.validators.js +3 -0
  510. package/lib/taon-session/taon-session.validators.js.map +1 -0
  511. package/lib/taon-session-user/index.d.ts +11 -0
  512. package/lib/taon-session-user/index.js +29 -0
  513. package/lib/taon-session-user/index.js.map +1 -0
  514. package/lib/taon-session-user/taon-session-backoffice-users/index.d.ts +1 -0
  515. package/lib/taon-session-user/taon-session-backoffice-users/index.js +5 -0
  516. package/lib/taon-session-user/taon-session-backoffice-users/index.js.map +1 -0
  517. package/lib/taon-session-user/taon-session-backoffice-users/taon-session-backoffice-users.models.d.ts +14 -0
  518. package/lib/taon-session-user/taon-session-backoffice-users/taon-session-backoffice-users.models.js +3 -0
  519. package/lib/taon-session-user/taon-session-backoffice-users/taon-session-backoffice-users.models.js.map +1 -0
  520. package/lib/taon-session-user/taon-session-user-group.entity.d.ts +10 -0
  521. package/lib/taon-session-user/taon-session-user-group.entity.js +84 -0
  522. package/lib/taon-session-user/taon-session-user-group.entity.js.map +1 -0
  523. package/lib/taon-session-user/taon-session-user-group.repository.d.ts +7 -0
  524. package/lib/taon-session-user/taon-session-user-group.repository.js +55 -0
  525. package/lib/taon-session-user/taon-session-user-group.repository.js.map +1 -0
  526. package/lib/taon-session-user/taon-session-user-identity.entity.d.ts +37 -0
  527. package/lib/taon-session-user/taon-session-user-identity.entity.js +139 -0
  528. package/lib/taon-session-user/taon-session-user-identity.entity.js.map +1 -0
  529. package/lib/taon-session-user/taon-session-user-identity.repository.d.ts +21 -0
  530. package/lib/taon-session-user/taon-session-user-identity.repository.js +216 -0
  531. package/lib/taon-session-user/taon-session-user-identity.repository.js.map +1 -0
  532. package/lib/taon-session-user/taon-session-user-role.entity.d.ts +10 -0
  533. package/lib/taon-session-user/taon-session-user-role.entity.js +84 -0
  534. package/lib/taon-session-user/taon-session-user-role.entity.js.map +1 -0
  535. package/lib/taon-session-user/taon-session-user.abstract.context.d.ts +16 -0
  536. package/lib/taon-session-user/taon-session-user.abstract.context.js +38 -0
  537. package/lib/taon-session-user/taon-session-user.abstract.context.js.map +1 -0
  538. package/lib/taon-session-user/taon-session-user.constants.d.ts +2 -0
  539. package/lib/taon-session-user/taon-session-user.constants.js +5 -0
  540. package/lib/taon-session-user/taon-session-user.constants.js.map +1 -0
  541. package/lib/taon-session-user/taon-session-user.controller.d.ts +11 -0
  542. package/lib/taon-session-user/taon-session-user.controller.js +98 -0
  543. package/lib/taon-session-user/taon-session-user.controller.js.map +1 -0
  544. package/lib/taon-session-user/taon-session-user.entity.d.ts +15 -0
  545. package/lib/taon-session-user/taon-session-user.entity.js +109 -0
  546. package/lib/taon-session-user/taon-session-user.entity.js.map +1 -0
  547. package/lib/taon-session-user/taon-session-user.middleware.d.ts +3 -0
  548. package/lib/taon-session-user/taon-session-user.middleware.js +21 -0
  549. package/lib/taon-session-user/taon-session-user.middleware.js.map +1 -0
  550. package/lib/taon-session-user/taon-session-user.models.d.ts +12 -0
  551. package/lib/taon-session-user/taon-session-user.models.js +18 -0
  552. package/lib/taon-session-user/taon-session-user.models.js.map +1 -0
  553. package/lib/taon-session-user/taon-session-user.provider.d.ts +3 -0
  554. package/lib/taon-session-user/taon-session-user.provider.js +21 -0
  555. package/lib/taon-session-user/taon-session-user.provider.js.map +1 -0
  556. package/lib/taon-session-user/taon-session-user.repository.d.ts +10 -0
  557. package/lib/taon-session-user/taon-session-user.repository.js +102 -0
  558. package/lib/taon-session-user/taon-session-user.repository.js.map +1 -0
  559. package/lib/taon-session-user/taon-session-user.subscriber.d.ts +7 -0
  560. package/lib/taon-session-user/taon-session-user.subscriber.js +28 -0
  561. package/lib/taon-session-user/taon-session-user.subscriber.js.map +1 -0
  562. package/lib/taon-session-user/taon-session-user.utils.d.ts +3 -0
  563. package/lib/taon-session-user/taon-session-user.utils.js +11 -0
  564. package/lib/taon-session-user/taon-session-user.utils.js.map +1 -0
  565. package/lib-esm/app/anything-test/anything-test-api.service.d.ts +0 -0
  566. package/lib-esm/app/anything-test/anything-test-api.service.js +2 -0
  567. package/lib-esm/app/anything-test/anything-test-api.service.js.map +1 -0
  568. package/lib-esm/app/anything-test/anything-test.abstract.context.d.ts +0 -0
  569. package/lib-esm/app/anything-test/anything-test.abstract.context.js +2 -0
  570. package/lib-esm/app/anything-test/anything-test.abstract.context.js.map +1 -0
  571. package/lib-esm/app/anything-test/anything-test.constants.d.ts +0 -0
  572. package/lib-esm/app/anything-test/anything-test.constants.js +2 -0
  573. package/lib-esm/app/anything-test/anything-test.constants.js.map +1 -0
  574. package/lib-esm/app/anything-test/anything-test.controller.d.ts +0 -0
  575. package/lib-esm/app/anything-test/anything-test.controller.js +2 -0
  576. package/lib-esm/app/anything-test/anything-test.controller.js.map +1 -0
  577. package/lib-esm/app/anything-test/anything-test.entity.d.ts +0 -0
  578. package/lib-esm/app/anything-test/anything-test.entity.js +2 -0
  579. package/lib-esm/app/anything-test/anything-test.entity.js.map +1 -0
  580. package/lib-esm/app/anything-test/anything-test.repository.d.ts +0 -0
  581. package/lib-esm/app/anything-test/anything-test.repository.js +2 -0
  582. package/lib-esm/app/anything-test/anything-test.repository.js.map +1 -0
  583. package/lib-esm/app/anything-test/index.d.ts +0 -0
  584. package/lib-esm/app/anything-test/index.js +2 -0
  585. package/lib-esm/app/anything-test/index.js.map +1 -0
  586. package/lib-esm/app/baseline-backoffice/index.d.ts +0 -0
  587. package/lib-esm/app/baseline-backoffice/index.js +2 -0
  588. package/lib-esm/app/baseline-backoffice/index.js.map +1 -0
  589. package/lib-esm/app/baseline-backoffice/taon-baseline-backoffice.component.d.ts +0 -0
  590. package/lib-esm/app/baseline-backoffice/taon-baseline-backoffice.component.js +2 -0
  591. package/lib-esm/app/baseline-backoffice/taon-baseline-backoffice.component.js.map +1 -0
  592. package/lib-esm/app/baseline-backoffice/taon-baseline-backoffice.models.d.ts +0 -0
  593. package/lib-esm/app/baseline-backoffice/taon-baseline-backoffice.models.js +2 -0
  594. package/lib-esm/app/baseline-backoffice/taon-baseline-backoffice.models.js.map +1 -0
  595. package/lib-esm/app/baseline-backoffice/taon-baseline-backoffice.routes.d.ts +0 -0
  596. package/lib-esm/app/baseline-backoffice/taon-baseline-backoffice.routes.js +2 -0
  597. package/lib-esm/app/baseline-backoffice/taon-baseline-backoffice.routes.js.map +1 -0
  598. package/lib-esm/app/session-example/index.d.ts +0 -0
  599. package/lib-esm/app/session-example/index.js +2 -0
  600. package/lib-esm/app/session-example/index.js.map +1 -0
  601. package/lib-esm/app/session-example/session-example.component.d.ts +0 -0
  602. package/lib-esm/app/session-example/session-example.component.js +2 -0
  603. package/lib-esm/app/session-example/session-example.component.js.map +1 -0
  604. package/lib-esm/app/session-example/session-example.models.d.ts +0 -0
  605. package/lib-esm/app/session-example/session-example.models.js +2 -0
  606. package/lib-esm/app/session-example/session-example.models.js.map +1 -0
  607. package/lib-esm/app/session-example/session-example.routes.d.ts +0 -0
  608. package/lib-esm/app/session-example/session-example.routes.js +2 -0
  609. package/lib-esm/app/session-example/session-example.routes.js.map +1 -0
  610. package/lib-esm/app.d.ts +0 -3
  611. package/lib-esm/app.electron.d.ts +0 -1
  612. package/lib-esm/app.electron.js +1 -1
  613. package/lib-esm/app.electron.js.map +1 -1
  614. package/lib-esm/app.hosts.d.ts +0 -95
  615. package/lib-esm/app.hosts.js +1 -156
  616. package/lib-esm/app.hosts.js.map +1 -1
  617. package/lib-esm/app.js +1 -266
  618. package/lib-esm/app.js.map +1 -1
  619. package/lib-esm/app.vscode.d.ts +0 -9
  620. package/lib-esm/app.vscode.js +1 -36
  621. package/lib-esm/app.vscode.js.map +1 -1
  622. package/lib-esm/index.d.ts +2 -0
  623. package/lib-esm/index.js +2 -0
  624. package/lib-esm/index.js.map +1 -1
  625. package/lib-esm/lib/build-info._auto-generated_.d.ts +4 -1
  626. package/lib-esm/lib/build-info._auto-generated_.js +5 -1
  627. package/lib-esm/lib/build-info._auto-generated_.js.map +1 -1
  628. package/lib-esm/lib/env/env.angular-node-app.d.ts +4 -0
  629. package/lib-esm/lib/env/env.angular-node-app.js +9 -0
  630. package/lib-esm/lib/env/env.angular-node-app.js.map +1 -1
  631. package/lib-esm/lib/env/env.docs-webapp.d.ts +4 -0
  632. package/lib-esm/lib/env/env.docs-webapp.js +9 -0
  633. package/lib-esm/lib/env/env.docs-webapp.js.map +1 -1
  634. package/lib-esm/lib/env/env.electron-app.d.ts +4 -0
  635. package/lib-esm/lib/env/env.electron-app.js +9 -0
  636. package/lib-esm/lib/env/env.electron-app.js.map +1 -1
  637. package/lib-esm/lib/env/env.mobile-app.d.ts +4 -0
  638. package/lib-esm/lib/env/env.mobile-app.js +9 -0
  639. package/lib-esm/lib/env/env.mobile-app.js.map +1 -1
  640. package/lib-esm/lib/env/env.npm-lib-and-cli-tool.d.ts +4 -0
  641. package/lib-esm/lib/env/env.npm-lib-and-cli-tool.js +9 -0
  642. package/lib-esm/lib/env/env.npm-lib-and-cli-tool.js.map +1 -1
  643. package/lib-esm/lib/env/env.vscode-plugin.d.ts +4 -0
  644. package/lib-esm/lib/env/env.vscode-plugin.js +9 -0
  645. package/lib-esm/lib/env/env.vscode-plugin.js.map +1 -1
  646. package/lib-esm/lib/index._auto-generated_.d.ts +87 -3
  647. package/lib-esm/lib/index._auto-generated_.js +128 -4
  648. package/lib-esm/lib/index._auto-generated_.js.map +1 -1
  649. package/lib-esm/lib/index.d.ts +4 -0
  650. package/lib-esm/lib/index.js +3 -0
  651. package/lib-esm/lib/index.js.map +1 -1
  652. package/lib-esm/lib/migrations/1790328479283_initial.d.ts +21 -0
  653. package/lib-esm/lib/migrations/1790328479283_initial.js +247 -0
  654. package/lib-esm/lib/migrations/1790328479283_initial.js.map +1 -0
  655. package/lib-esm/lib/migrations/migrations_index._auto-generated_.d.ts +4 -0
  656. package/lib-esm/lib/migrations/migrations_index._auto-generated_.js +4 -0
  657. package/lib-esm/lib/migrations/migrations_index._auto-generated_.js.map +1 -1
  658. package/lib-esm/lib/start-cli.js +214 -31
  659. package/lib-esm/lib/start-cli.js.map +1 -1
  660. package/lib-esm/lib/taon-audit-events/index.d.ts +10 -0
  661. package/lib-esm/lib/taon-audit-events/index.js +12 -0
  662. package/lib-esm/lib/taon-audit-events/index.js.map +1 -0
  663. package/lib-esm/lib/taon-audit-events/taon-audit-events.abstract.context.d.ts +16 -0
  664. package/lib-esm/lib/taon-audit-events/taon-audit-events.abstract.context.js +21 -0
  665. package/lib-esm/lib/taon-audit-events/taon-audit-events.abstract.context.js.map +1 -0
  666. package/lib-esm/lib/taon-audit-events/taon-audit-events.constants.d.ts +2 -0
  667. package/lib-esm/lib/taon-audit-events/taon-audit-events.constants.js +6 -0
  668. package/lib-esm/lib/taon-audit-events/taon-audit-events.constants.js.map +1 -0
  669. package/lib-esm/lib/taon-audit-events/taon-audit-events.controller.d.ts +11 -0
  670. package/lib-esm/lib/taon-audit-events/taon-audit-events.controller.js +41 -0
  671. package/lib-esm/lib/taon-audit-events/taon-audit-events.controller.js.map +1 -0
  672. package/lib-esm/lib/taon-audit-events/taon-audit-events.entity.d.ts +18 -0
  673. package/lib-esm/lib/taon-audit-events/taon-audit-events.entity.js +104 -0
  674. package/lib-esm/lib/taon-audit-events/taon-audit-events.entity.js.map +1 -0
  675. package/lib-esm/lib/taon-audit-events/taon-audit-events.middleware.d.ts +3 -0
  676. package/lib-esm/lib/taon-audit-events/taon-audit-events.middleware.js +12 -0
  677. package/lib-esm/lib/taon-audit-events/taon-audit-events.middleware.js.map +1 -0
  678. package/lib-esm/lib/taon-audit-events/taon-audit-events.models.d.ts +4 -0
  679. package/lib-esm/lib/taon-audit-events/taon-audit-events.models.js +6 -0
  680. package/lib-esm/lib/taon-audit-events/taon-audit-events.models.js.map +1 -0
  681. package/lib-esm/lib/taon-audit-events/taon-audit-events.provider.d.ts +3 -0
  682. package/lib-esm/lib/taon-audit-events/taon-audit-events.provider.js +12 -0
  683. package/lib-esm/lib/taon-audit-events/taon-audit-events.provider.js.map +1 -0
  684. package/lib-esm/lib/taon-audit-events/taon-audit-events.repository.d.ts +9 -0
  685. package/lib-esm/lib/taon-audit-events/taon-audit-events.repository.js +28 -0
  686. package/lib-esm/lib/taon-audit-events/taon-audit-events.repository.js.map +1 -0
  687. package/lib-esm/lib/taon-audit-events/taon-audit-events.subscriber.d.ts +7 -0
  688. package/lib-esm/lib/taon-audit-events/taon-audit-events.subscriber.js +19 -0
  689. package/lib-esm/lib/taon-audit-events/taon-audit-events.subscriber.js.map +1 -0
  690. package/lib-esm/lib/taon-audit-events/taon-audit-events.utils.d.ts +4 -0
  691. package/lib-esm/lib/taon-audit-events/taon-audit-events.utils.js +8 -0
  692. package/lib-esm/lib/taon-audit-events/taon-audit-events.utils.js.map +1 -0
  693. package/lib-esm/lib/taon-auth-context/index.d.ts +3 -0
  694. package/lib-esm/lib/taon-auth-context/index.js +4 -0
  695. package/lib-esm/lib/taon-auth-context/index.js.map +1 -0
  696. package/lib-esm/lib/taon-auth-context/taon-auth-context.abstract.context.d.ts +16 -0
  697. package/lib-esm/lib/taon-auth-context/taon-auth-context.abstract.context.js +13 -0
  698. package/lib-esm/lib/taon-auth-context/taon-auth-context.abstract.context.js.map +1 -0
  699. package/lib-esm/lib/taon-auth-context/taon-auth-context.entity.d.ts +24 -0
  700. package/lib-esm/lib/taon-auth-context/taon-auth-context.entity.js +36 -0
  701. package/lib-esm/lib/taon-auth-context/taon-auth-context.entity.js.map +1 -0
  702. package/lib-esm/lib/taon-auth-context/taon-auth-context.repository.d.ts +36 -0
  703. package/lib-esm/lib/taon-auth-context/taon-auth-context.repository.js +225 -0
  704. package/lib-esm/lib/taon-auth-context/taon-auth-context.repository.js.map +1 -0
  705. package/lib-esm/lib/taon-authorization-backoffice/index.d.ts +1 -0
  706. package/lib-esm/lib/taon-authorization-backoffice/index.js +2 -0
  707. package/lib-esm/lib/taon-authorization-backoffice/index.js.map +1 -0
  708. package/lib-esm/lib/taon-authorization-backoffice/taon-authorization-backoffice.models.d.ts +1 -0
  709. package/lib-esm/lib/taon-authorization-backoffice/taon-authorization-backoffice.models.js +2 -0
  710. package/lib-esm/lib/taon-authorization-backoffice/taon-authorization-backoffice.models.js.map +1 -0
  711. package/lib-esm/lib/taon-group/index.d.ts +7 -0
  712. package/lib-esm/lib/taon-group/index.js +11 -0
  713. package/lib-esm/lib/taon-group/index.js.map +1 -0
  714. package/lib-esm/lib/taon-group/taon-group-backoffice/index.d.ts +1 -0
  715. package/lib-esm/lib/taon-group/taon-group-backoffice/index.js +2 -0
  716. package/lib-esm/lib/taon-group/taon-group-backoffice/index.js.map +1 -0
  717. package/lib-esm/lib/taon-group/taon-group-backoffice/taon-group-backoffice.models.d.ts +9 -0
  718. package/lib-esm/lib/taon-group/taon-group-backoffice/taon-group-backoffice.models.js +2 -0
  719. package/lib-esm/lib/taon-group/taon-group-backoffice/taon-group-backoffice.models.js.map +1 -0
  720. package/lib-esm/lib/taon-group/taon-group-chooser/index.d.ts +1 -0
  721. package/lib-esm/lib/taon-group/taon-group-chooser/index.js +2 -0
  722. package/lib-esm/lib/taon-group/taon-group-chooser/index.js.map +1 -0
  723. package/lib-esm/lib/taon-group/taon-group-role.entity.d.ts +9 -0
  724. package/lib-esm/lib/taon-group/taon-group-role.entity.js +63 -0
  725. package/lib-esm/lib/taon-group/taon-group-role.entity.js.map +1 -0
  726. package/lib-esm/lib/taon-group/taon-group-role.repository.d.ts +13 -0
  727. package/lib-esm/lib/taon-group/taon-group-role.repository.js +80 -0
  728. package/lib-esm/lib/taon-group/taon-group-role.repository.js.map +1 -0
  729. package/lib-esm/lib/taon-group/taon-group.abstract.context.d.ts +16 -0
  730. package/lib-esm/lib/taon-group/taon-group.abstract.context.js +24 -0
  731. package/lib-esm/lib/taon-group/taon-group.abstract.context.js.map +1 -0
  732. package/lib-esm/lib/taon-group/taon-group.constants.d.ts +2 -0
  733. package/lib-esm/lib/taon-group/taon-group.constants.js +2 -0
  734. package/lib-esm/lib/taon-group/taon-group.constants.js.map +1 -0
  735. package/lib-esm/lib/taon-group/taon-group.controller.d.ts +19 -0
  736. package/lib-esm/lib/taon-group/taon-group.controller.js +142 -0
  737. package/lib-esm/lib/taon-group/taon-group.controller.js.map +1 -0
  738. package/lib-esm/lib/taon-group/taon-group.entity.d.ts +10 -0
  739. package/lib-esm/lib/taon-group/taon-group.entity.js +64 -0
  740. package/lib-esm/lib/taon-group/taon-group.entity.js.map +1 -0
  741. package/lib-esm/lib/taon-group/taon-group.middleware.d.ts +3 -0
  742. package/lib-esm/lib/taon-group/taon-group.middleware.js +12 -0
  743. package/lib-esm/lib/taon-group/taon-group.middleware.js.map +1 -0
  744. package/lib-esm/lib/taon-group/taon-group.models.d.ts +0 -0
  745. package/lib-esm/lib/taon-group/taon-group.models.js +3 -0
  746. package/lib-esm/lib/taon-group/taon-group.models.js.map +1 -0
  747. package/lib-esm/lib/taon-group/taon-group.provider.d.ts +3 -0
  748. package/lib-esm/lib/taon-group/taon-group.provider.js +12 -0
  749. package/lib-esm/lib/taon-group/taon-group.provider.js.map +1 -0
  750. package/lib-esm/lib/taon-group/taon-group.repository.d.ts +6 -0
  751. package/lib-esm/lib/taon-group/taon-group.repository.js +31 -0
  752. package/lib-esm/lib/taon-group/taon-group.repository.js.map +1 -0
  753. package/lib-esm/lib/taon-group/taon-group.utils.d.ts +0 -0
  754. package/lib-esm/lib/taon-group/taon-group.utils.js +3 -0
  755. package/lib-esm/lib/taon-group/taon-group.utils.js.map +1 -0
  756. package/lib-esm/lib/taon-notification/index.d.ts +10 -0
  757. package/lib-esm/lib/taon-notification/index.js +12 -0
  758. package/lib-esm/lib/taon-notification/index.js.map +1 -0
  759. package/lib-esm/lib/taon-notification/taon-notification-recipient.entity.d.ts +12 -0
  760. package/lib-esm/lib/taon-notification/taon-notification-recipient.entity.js +84 -0
  761. package/lib-esm/lib/taon-notification/taon-notification-recipient.entity.js.map +1 -0
  762. package/lib-esm/lib/taon-notification/taon-notification.abstract.context.d.ts +16 -0
  763. package/lib-esm/lib/taon-notification/taon-notification.abstract.context.js +22 -0
  764. package/lib-esm/lib/taon-notification/taon-notification.abstract.context.js.map +1 -0
  765. package/lib-esm/lib/taon-notification/taon-notification.constants.d.ts +2 -0
  766. package/lib-esm/lib/taon-notification/taon-notification.constants.js +6 -0
  767. package/lib-esm/lib/taon-notification/taon-notification.constants.js.map +1 -0
  768. package/lib-esm/lib/taon-notification/taon-notification.controller.d.ts +11 -0
  769. package/lib-esm/lib/taon-notification/taon-notification.controller.js +41 -0
  770. package/lib-esm/lib/taon-notification/taon-notification.controller.js.map +1 -0
  771. package/lib-esm/lib/taon-notification/taon-notification.entity.d.ts +29 -0
  772. package/lib-esm/lib/taon-notification/taon-notification.entity.js +110 -0
  773. package/lib-esm/lib/taon-notification/taon-notification.entity.js.map +1 -0
  774. package/lib-esm/lib/taon-notification/taon-notification.middleware.d.ts +3 -0
  775. package/lib-esm/lib/taon-notification/taon-notification.middleware.js +12 -0
  776. package/lib-esm/lib/taon-notification/taon-notification.middleware.js.map +1 -0
  777. package/lib-esm/lib/taon-notification/taon-notification.models.d.ts +4 -0
  778. package/lib-esm/lib/taon-notification/taon-notification.models.js +6 -0
  779. package/lib-esm/lib/taon-notification/taon-notification.models.js.map +1 -0
  780. package/lib-esm/lib/taon-notification/taon-notification.provider.d.ts +3 -0
  781. package/lib-esm/lib/taon-notification/taon-notification.provider.js +12 -0
  782. package/lib-esm/lib/taon-notification/taon-notification.provider.js.map +1 -0
  783. package/lib-esm/lib/taon-notification/taon-notification.repository.d.ts +9 -0
  784. package/lib-esm/lib/taon-notification/taon-notification.repository.js +28 -0
  785. package/lib-esm/lib/taon-notification/taon-notification.repository.js.map +1 -0
  786. package/lib-esm/lib/taon-notification/taon-notification.subscriber.d.ts +7 -0
  787. package/lib-esm/lib/taon-notification/taon-notification.subscriber.js +19 -0
  788. package/lib-esm/lib/taon-notification/taon-notification.subscriber.js.map +1 -0
  789. package/lib-esm/lib/taon-notification/taon-notification.utils.d.ts +4 -0
  790. package/lib-esm/lib/taon-notification/taon-notification.utils.js +8 -0
  791. package/lib-esm/lib/taon-notification/taon-notification.utils.js.map +1 -0
  792. package/lib-esm/lib/taon-permission/index.d.ts +10 -0
  793. package/lib-esm/lib/taon-permission/index.js +12 -0
  794. package/lib-esm/lib/taon-permission/index.js.map +1 -0
  795. package/lib-esm/lib/taon-permission/taon-permission-backoffice/index.d.ts +1 -0
  796. package/lib-esm/lib/taon-permission/taon-permission-backoffice/index.js +2 -0
  797. package/lib-esm/lib/taon-permission/taon-permission-backoffice/index.js.map +1 -0
  798. package/lib-esm/lib/taon-permission/taon-permission-backoffice/taon-permission-backoffice.models.d.ts +1 -0
  799. package/lib-esm/lib/taon-permission/taon-permission-backoffice/taon-permission-backoffice.models.js +2 -0
  800. package/lib-esm/lib/taon-permission/taon-permission-backoffice/taon-permission-backoffice.models.js.map +1 -0
  801. package/lib-esm/lib/taon-permission/taon-permission-chooser/index.d.ts +1 -0
  802. package/lib-esm/lib/taon-permission/taon-permission-chooser/index.js +2 -0
  803. package/lib-esm/lib/taon-permission/taon-permission-chooser/index.js.map +1 -0
  804. package/lib-esm/lib/taon-permission/taon-permission-view-edit/index.d.ts +1 -0
  805. package/lib-esm/lib/taon-permission/taon-permission-view-edit/index.js +2 -0
  806. package/lib-esm/lib/taon-permission/taon-permission-view-edit/index.js.map +1 -0
  807. package/lib-esm/lib/taon-permission/taon-permission.abstract.context.d.ts +16 -0
  808. package/lib-esm/lib/taon-permission/taon-permission.abstract.context.js +21 -0
  809. package/lib-esm/lib/taon-permission/taon-permission.abstract.context.js.map +1 -0
  810. package/lib-esm/lib/taon-permission/taon-permission.constants.d.ts +2 -0
  811. package/lib-esm/lib/taon-permission/taon-permission.constants.js +6 -0
  812. package/lib-esm/lib/taon-permission/taon-permission.constants.js.map +1 -0
  813. package/lib-esm/lib/taon-permission/taon-permission.controller.d.ts +11 -0
  814. package/lib-esm/lib/taon-permission/taon-permission.controller.js +47 -0
  815. package/lib-esm/lib/taon-permission/taon-permission.controller.js.map +1 -0
  816. package/lib-esm/lib/taon-permission/taon-permission.entity.d.ts +16 -0
  817. package/lib-esm/lib/taon-permission/taon-permission.entity.js +62 -0
  818. package/lib-esm/lib/taon-permission/taon-permission.entity.js.map +1 -0
  819. package/lib-esm/lib/taon-permission/taon-permission.middleware.d.ts +3 -0
  820. package/lib-esm/lib/taon-permission/taon-permission.middleware.js +12 -0
  821. package/lib-esm/lib/taon-permission/taon-permission.middleware.js.map +1 -0
  822. package/lib-esm/lib/taon-permission/taon-permission.models.d.ts +4 -0
  823. package/lib-esm/lib/taon-permission/taon-permission.models.js +6 -0
  824. package/lib-esm/lib/taon-permission/taon-permission.models.js.map +1 -0
  825. package/lib-esm/lib/taon-permission/taon-permission.provider.d.ts +3 -0
  826. package/lib-esm/lib/taon-permission/taon-permission.provider.js +12 -0
  827. package/lib-esm/lib/taon-permission/taon-permission.provider.js.map +1 -0
  828. package/lib-esm/lib/taon-permission/taon-permission.repository.d.ts +7 -0
  829. package/lib-esm/lib/taon-permission/taon-permission.repository.js +35 -0
  830. package/lib-esm/lib/taon-permission/taon-permission.repository.js.map +1 -0
  831. package/lib-esm/lib/taon-permission/taon-permission.subscriber.d.ts +7 -0
  832. package/lib-esm/lib/taon-permission/taon-permission.subscriber.js +19 -0
  833. package/lib-esm/lib/taon-permission/taon-permission.subscriber.js.map +1 -0
  834. package/lib-esm/lib/taon-permission/taon-permission.utils.d.ts +4 -0
  835. package/lib-esm/lib/taon-permission/taon-permission.utils.js +8 -0
  836. package/lib-esm/lib/taon-permission/taon-permission.utils.js.map +1 -0
  837. package/lib-esm/lib/taon-role/index.d.ts +7 -0
  838. package/lib-esm/lib/taon-role/index.js +9 -0
  839. package/lib-esm/lib/taon-role/index.js.map +1 -0
  840. package/lib-esm/lib/taon-role/taon-role-backoffice/index.d.ts +1 -0
  841. package/lib-esm/lib/taon-role/taon-role-backoffice/index.js +2 -0
  842. package/lib-esm/lib/taon-role/taon-role-backoffice/index.js.map +1 -0
  843. package/lib-esm/lib/taon-role/taon-role-backoffice/taon-role-backoffice.models.d.ts +9 -0
  844. package/lib-esm/lib/taon-role/taon-role-backoffice/taon-role-backoffice.models.js +2 -0
  845. package/lib-esm/lib/taon-role/taon-role-backoffice/taon-role-backoffice.models.js.map +1 -0
  846. package/lib-esm/lib/taon-role/taon-role-chooser/index.d.ts +1 -0
  847. package/lib-esm/lib/taon-role/taon-role-chooser/index.js +2 -0
  848. package/lib-esm/lib/taon-role/taon-role-chooser/index.js.map +1 -0
  849. package/lib-esm/lib/taon-role/taon-role-permission.entity.d.ts +9 -0
  850. package/lib-esm/lib/taon-role/taon-role-permission.entity.js +63 -0
  851. package/lib-esm/lib/taon-role/taon-role-permission.entity.js.map +1 -0
  852. package/lib-esm/lib/taon-role/taon-role-permission.repository.d.ts +13 -0
  853. package/lib-esm/lib/taon-role/taon-role-permission.repository.js +75 -0
  854. package/lib-esm/lib/taon-role/taon-role-permission.repository.js.map +1 -0
  855. package/lib-esm/lib/taon-role/taon-role.abstract.context.d.ts +16 -0
  856. package/lib-esm/lib/taon-role/taon-role.abstract.context.js +26 -0
  857. package/lib-esm/lib/taon-role/taon-role.abstract.context.js.map +1 -0
  858. package/lib-esm/lib/taon-role/taon-role.constants.d.ts +2 -0
  859. package/lib-esm/lib/taon-role/taon-role.constants.js +6 -0
  860. package/lib-esm/lib/taon-role/taon-role.constants.js.map +1 -0
  861. package/lib-esm/lib/taon-role/taon-role.controller.d.ts +15 -0
  862. package/lib-esm/lib/taon-role/taon-role.controller.js +85 -0
  863. package/lib-esm/lib/taon-role/taon-role.controller.js.map +1 -0
  864. package/lib-esm/lib/taon-role/taon-role.entity.d.ts +18 -0
  865. package/lib-esm/lib/taon-role/taon-role.entity.js +80 -0
  866. package/lib-esm/lib/taon-role/taon-role.entity.js.map +1 -0
  867. package/lib-esm/lib/taon-role/taon-role.models.d.ts +4 -0
  868. package/lib-esm/lib/taon-role/taon-role.models.js +6 -0
  869. package/lib-esm/lib/taon-role/taon-role.models.js.map +1 -0
  870. package/lib-esm/lib/taon-role/taon-role.provider.d.ts +3 -0
  871. package/lib-esm/lib/taon-role/taon-role.provider.js +12 -0
  872. package/lib-esm/lib/taon-role/taon-role.provider.js.map +1 -0
  873. package/lib-esm/lib/taon-role/taon-role.repository.d.ts +6 -0
  874. package/lib-esm/lib/taon-role/taon-role.repository.js +18 -0
  875. package/lib-esm/lib/taon-role/taon-role.repository.js.map +1 -0
  876. package/lib-esm/lib/taon-session/index.d.ts +2 -3
  877. package/lib-esm/lib/taon-session/index.js +4 -3
  878. package/lib-esm/lib/taon-session/index.js.map +1 -1
  879. package/lib-esm/lib/taon-session/taon-profile/index.d.ts +6 -0
  880. package/lib-esm/lib/taon-session/taon-profile/index.js +9 -0
  881. package/lib-esm/lib/taon-session/taon-profile/index.js.map +1 -0
  882. package/lib-esm/lib/taon-session/taon-profile/taon-profile-picture/index.d.ts +1 -0
  883. package/lib-esm/lib/taon-session/taon-profile/taon-profile-picture/index.js +2 -0
  884. package/lib-esm/lib/taon-session/taon-profile/taon-profile-picture/index.js.map +1 -0
  885. package/lib-esm/lib/taon-session/taon-profile/taon-profile-picture/taon-profile-picture.models.d.ts +1 -0
  886. package/lib-esm/lib/taon-session/taon-profile/taon-profile-picture/taon-profile-picture.models.js +2 -0
  887. package/lib-esm/lib/taon-session/taon-profile/taon-profile-picture/taon-profile-picture.models.js.map +1 -0
  888. package/lib-esm/lib/taon-session/taon-profile/taon-profile.abstract.context.d.ts +16 -0
  889. package/lib-esm/lib/taon-session/taon-profile/taon-profile.abstract.context.js +25 -0
  890. package/lib-esm/lib/taon-session/taon-profile/taon-profile.abstract.context.js.map +1 -0
  891. package/lib-esm/lib/taon-session/taon-profile/taon-profile.constants.d.ts +6 -0
  892. package/lib-esm/lib/taon-session/taon-profile/taon-profile.constants.js +15 -0
  893. package/lib-esm/lib/taon-session/taon-profile/taon-profile.constants.js.map +1 -0
  894. package/lib-esm/lib/taon-session/taon-profile/taon-profile.controller.d.ts +21 -0
  895. package/lib-esm/lib/taon-session/taon-profile/taon-profile.controller.js +103 -0
  896. package/lib-esm/lib/taon-session/taon-profile/taon-profile.controller.js.map +1 -0
  897. package/lib-esm/lib/taon-session/taon-profile/taon-profile.entity.d.ts +4 -0
  898. package/lib-esm/lib/taon-session/taon-profile/taon-profile.entity.js +32 -0
  899. package/lib-esm/lib/taon-session/taon-profile/taon-profile.entity.js.map +1 -0
  900. package/lib-esm/lib/taon-session/taon-profile/taon-profile.kv.repository.d.ts +7 -0
  901. package/lib-esm/lib/taon-session/taon-profile/taon-profile.kv.repository.js +15 -0
  902. package/lib-esm/lib/taon-session/taon-profile/taon-profile.kv.repository.js.map +1 -0
  903. package/lib-esm/lib/taon-session/taon-profile/taon-profile.models.d.ts +8 -0
  904. package/lib-esm/lib/taon-session/taon-profile/taon-profile.models.js +12 -0
  905. package/lib-esm/lib/taon-session/taon-profile/taon-profile.models.js.map +1 -0
  906. package/lib-esm/lib/taon-session/taon-profile/taon-profile.provider.d.ts +12 -0
  907. package/lib-esm/lib/taon-session/taon-profile/taon-profile.provider.js +22 -0
  908. package/lib-esm/lib/taon-session/taon-profile/taon-profile.provider.js.map +1 -0
  909. package/lib-esm/lib/taon-session/taon-session/index.d.ts +1 -1
  910. package/lib-esm/lib/taon-session/taon-session/index.js +1 -1
  911. package/lib-esm/lib/taon-session/taon-session/taon-session-profile/index.d.ts +1 -0
  912. package/lib-esm/lib/taon-session/taon-session/taon-session-profile/index.js +2 -0
  913. package/lib-esm/lib/taon-session/taon-session/taon-session-profile/index.js.map +1 -0
  914. package/lib-esm/lib/taon-session/taon-session/taon-session-profile/taon-session-profile.models.d.ts +1 -0
  915. package/lib-esm/lib/taon-session/taon-session/taon-session-profile/taon-session-profile.models.js +2 -0
  916. package/lib-esm/lib/taon-session/taon-session/taon-session-profile/taon-session-profile.models.js.map +1 -0
  917. package/lib-esm/lib/taon-session/taon-session-backoffice/index.d.ts +2 -0
  918. package/lib-esm/lib/taon-session/taon-session-backoffice/index.js +7 -0
  919. package/lib-esm/lib/taon-session/taon-session-backoffice/index.js.map +1 -0
  920. package/lib-esm/lib/taon-session/taon-session-backoffice/taon-session-backoffice.controller.d.ts +13 -0
  921. package/lib-esm/lib/taon-session/taon-session-backoffice/taon-session-backoffice.controller.js +170 -0
  922. package/lib-esm/lib/taon-session/taon-session-backoffice/taon-session-backoffice.controller.js.map +1 -0
  923. package/lib-esm/lib/taon-session/taon-session-backoffice/taon-session-backoffice.models.d.ts +10 -0
  924. package/lib-esm/lib/taon-session/taon-session-backoffice/taon-session-backoffice.models.js +2 -0
  925. package/lib-esm/lib/taon-session/taon-session-backoffice/taon-session-backoffice.models.js.map +1 -0
  926. package/lib-esm/lib/taon-session/taon-session-button/index.d.ts +1 -0
  927. package/lib-esm/lib/taon-session/taon-session-button/index.js +2 -0
  928. package/lib-esm/lib/taon-session/taon-session-button/index.js.map +1 -0
  929. package/lib-esm/lib/taon-session/taon-session.abstract.context.d.ts +4 -7
  930. package/lib-esm/lib/taon-session/taon-session.abstract.context.js +40 -10
  931. package/lib-esm/lib/taon-session/taon-session.abstract.context.js.map +1 -1
  932. package/lib-esm/lib/taon-session/taon-session.controller.d.ts +20 -9
  933. package/lib-esm/lib/taon-session/taon-session.controller.js +481 -49
  934. package/lib-esm/lib/taon-session/taon-session.controller.js.map +1 -1
  935. package/lib-esm/lib/taon-session/taon-session.entity.d.ts +21 -0
  936. package/lib-esm/lib/taon-session/taon-session.entity.js +145 -0
  937. package/lib-esm/lib/taon-session/taon-session.entity.js.map +1 -0
  938. package/lib-esm/lib/taon-session/{taon-session-kv.repository.d.ts → taon-session.kv.repository.d.ts} +7 -3
  939. package/lib-esm/lib/taon-session/{taon-session-kv.repository.js → taon-session.kv.repository.js} +29 -21
  940. package/lib-esm/lib/taon-session/taon-session.kv.repository.js.map +1 -0
  941. package/lib-esm/lib/taon-session/taon-session.middleware.d.ts +4 -6
  942. package/lib-esm/lib/taon-session/taon-session.middleware.js +5 -20
  943. package/lib-esm/lib/taon-session/taon-session.middleware.js.map +1 -1
  944. package/lib-esm/lib/taon-session/taon-session.models.d.ts +32 -7
  945. package/lib-esm/lib/taon-session/taon-session.models.js +37 -5
  946. package/lib-esm/lib/taon-session/taon-session.models.js.map +1 -1
  947. package/lib-esm/lib/taon-session/taon-session.provider.d.ts +164 -2
  948. package/lib-esm/lib/taon-session/taon-session.provider.js +200 -6
  949. package/lib-esm/lib/taon-session/taon-session.provider.js.map +1 -1
  950. package/lib-esm/lib/taon-session/taon-session.repository.d.ts +13 -0
  951. package/lib-esm/lib/taon-session/taon-session.repository.js +138 -0
  952. package/lib-esm/lib/taon-session/taon-session.repository.js.map +1 -0
  953. package/lib-esm/lib/taon-session/taon-session.state.service.d.ts +59 -0
  954. package/lib-esm/lib/taon-session/taon-session.state.service.js +384 -0
  955. package/lib-esm/lib/taon-session/taon-session.state.service.js.map +1 -0
  956. package/lib-esm/lib/taon-session/taon-session.utils.d.ts +15 -1
  957. package/lib-esm/lib/taon-session/taon-session.utils.js +159 -1
  958. package/lib-esm/lib/taon-session/taon-session.utils.js.map +1 -1
  959. package/lib-esm/lib/taon-session/taon-session.validators.d.ts +2 -0
  960. package/lib-esm/lib/taon-session/taon-session.validators.js +2 -0
  961. package/lib-esm/lib/taon-session/taon-session.validators.js.map +1 -0
  962. package/lib-esm/lib/taon-session-user/index.d.ts +11 -0
  963. package/lib-esm/lib/taon-session-user/index.js +13 -0
  964. package/lib-esm/lib/taon-session-user/index.js.map +1 -0
  965. package/lib-esm/lib/taon-session-user/taon-session-backoffice-users/index.d.ts +1 -0
  966. package/lib-esm/lib/taon-session-user/taon-session-backoffice-users/index.js +2 -0
  967. package/lib-esm/lib/taon-session-user/taon-session-backoffice-users/index.js.map +1 -0
  968. package/lib-esm/lib/taon-session-user/taon-session-backoffice-users/taon-session-backoffice-users.models.d.ts +14 -0
  969. package/lib-esm/lib/taon-session-user/taon-session-backoffice-users/taon-session-backoffice-users.models.js +2 -0
  970. package/lib-esm/lib/taon-session-user/taon-session-backoffice-users/taon-session-backoffice-users.models.js.map +1 -0
  971. package/lib-esm/lib/taon-session-user/taon-session-user-group.entity.d.ts +10 -0
  972. package/lib-esm/lib/taon-session-user/taon-session-user-group.entity.js +72 -0
  973. package/lib-esm/lib/taon-session-user/taon-session-user-group.entity.js.map +1 -0
  974. package/lib-esm/lib/taon-session-user/taon-session-user-group.repository.d.ts +7 -0
  975. package/lib-esm/lib/taon-session-user/taon-session-user-group.repository.js +46 -0
  976. package/lib-esm/lib/taon-session-user/taon-session-user-group.repository.js.map +1 -0
  977. package/lib-esm/lib/taon-session-user/taon-session-user-identity.entity.d.ts +37 -0
  978. package/lib-esm/lib/taon-session-user/taon-session-user-identity.entity.js +127 -0
  979. package/lib-esm/lib/taon-session-user/taon-session-user-identity.entity.js.map +1 -0
  980. package/lib-esm/lib/taon-session-user/taon-session-user-identity.repository.d.ts +21 -0
  981. package/lib-esm/lib/taon-session-user/taon-session-user-identity.repository.js +207 -0
  982. package/lib-esm/lib/taon-session-user/taon-session-user-identity.repository.js.map +1 -0
  983. package/lib-esm/lib/taon-session-user/taon-session-user-role.entity.d.ts +10 -0
  984. package/lib-esm/lib/taon-session-user/taon-session-user-role.entity.js +72 -0
  985. package/lib-esm/lib/taon-session-user/taon-session-user-role.entity.js.map +1 -0
  986. package/lib-esm/lib/taon-session-user/taon-session-user.abstract.context.d.ts +16 -0
  987. package/lib-esm/lib/taon-session-user/taon-session-user.abstract.context.js +35 -0
  988. package/lib-esm/lib/taon-session-user/taon-session-user.abstract.context.js.map +1 -0
  989. package/lib-esm/lib/taon-session-user/taon-session-user.constants.d.ts +2 -0
  990. package/lib-esm/lib/taon-session-user/taon-session-user.constants.js +2 -0
  991. package/lib-esm/lib/taon-session-user/taon-session-user.constants.js.map +1 -0
  992. package/lib-esm/lib/taon-session-user/taon-session-user.controller.d.ts +11 -0
  993. package/lib-esm/lib/taon-session-user/taon-session-user.controller.js +83 -0
  994. package/lib-esm/lib/taon-session-user/taon-session-user.controller.js.map +1 -0
  995. package/lib-esm/lib/taon-session-user/taon-session-user.entity.d.ts +15 -0
  996. package/lib-esm/lib/taon-session-user/taon-session-user.entity.js +97 -0
  997. package/lib-esm/lib/taon-session-user/taon-session-user.entity.js.map +1 -0
  998. package/lib-esm/lib/taon-session-user/taon-session-user.middleware.d.ts +3 -0
  999. package/lib-esm/lib/taon-session-user/taon-session-user.middleware.js +12 -0
  1000. package/lib-esm/lib/taon-session-user/taon-session-user.middleware.js.map +1 -0
  1001. package/lib-esm/lib/taon-session-user/taon-session-user.models.d.ts +12 -0
  1002. package/lib-esm/lib/taon-session-user/taon-session-user.models.js +15 -0
  1003. package/lib-esm/lib/taon-session-user/taon-session-user.models.js.map +1 -0
  1004. package/lib-esm/lib/taon-session-user/taon-session-user.provider.d.ts +3 -0
  1005. package/lib-esm/lib/taon-session-user/taon-session-user.provider.js +12 -0
  1006. package/lib-esm/lib/taon-session-user/taon-session-user.provider.js.map +1 -0
  1007. package/lib-esm/lib/taon-session-user/taon-session-user.repository.d.ts +10 -0
  1008. package/lib-esm/lib/taon-session-user/taon-session-user.repository.js +93 -0
  1009. package/lib-esm/lib/taon-session-user/taon-session-user.repository.js.map +1 -0
  1010. package/lib-esm/lib/taon-session-user/taon-session-user.subscriber.d.ts +7 -0
  1011. package/lib-esm/lib/taon-session-user/taon-session-user.subscriber.js +19 -0
  1012. package/lib-esm/lib/taon-session-user/taon-session-user.subscriber.js.map +1 -0
  1013. package/lib-esm/lib/taon-session-user/taon-session-user.utils.d.ts +3 -0
  1014. package/lib-esm/lib/taon-session-user/taon-session-user.utils.js +8 -0
  1015. package/lib-esm/lib/taon-session-user/taon-session-user.utils.js.map +1 -0
  1016. package/lib-prod/build-info._auto-generated_.d.ts +2 -1
  1017. package/lib-prod/build-info._auto-generated_.js +4 -1
  1018. package/lib-prod/build-info._auto-generated_.js.map +1 -1
  1019. package/lib-prod/env/env.angular-node-app.d.ts +4 -0
  1020. package/lib-prod/env/env.angular-node-app.js +9 -0
  1021. package/lib-prod/env/env.angular-node-app.js.map +1 -1
  1022. package/lib-prod/env/env.docs-webapp.d.ts +4 -0
  1023. package/lib-prod/env/env.docs-webapp.js +9 -0
  1024. package/lib-prod/env/env.docs-webapp.js.map +1 -1
  1025. package/lib-prod/env/env.electron-app.d.ts +4 -0
  1026. package/lib-prod/env/env.electron-app.js +9 -0
  1027. package/lib-prod/env/env.electron-app.js.map +1 -1
  1028. package/lib-prod/env/env.mobile-app.d.ts +4 -0
  1029. package/lib-prod/env/env.mobile-app.js +9 -0
  1030. package/lib-prod/env/env.mobile-app.js.map +1 -1
  1031. package/lib-prod/env/env.npm-lib-and-cli-tool.d.ts +4 -0
  1032. package/lib-prod/env/env.npm-lib-and-cli-tool.js +9 -0
  1033. package/lib-prod/env/env.npm-lib-and-cli-tool.js.map +1 -1
  1034. package/lib-prod/env/env.vscode-plugin.d.ts +4 -0
  1035. package/lib-prod/env/env.vscode-plugin.js +9 -0
  1036. package/lib-prod/env/env.vscode-plugin.js.map +1 -1
  1037. package/lib-prod/index._auto-generated_.d.ts +87 -3
  1038. package/lib-prod/index._auto-generated_.js +128 -4
  1039. package/lib-prod/index._auto-generated_.js.map +1 -1
  1040. package/lib-prod/index.d.ts +4 -0
  1041. package/lib-prod/index.js +3 -0
  1042. package/lib-prod/index.js.map +1 -1
  1043. package/lib-prod/migrations/1790328479283_initial.d.ts +21 -0
  1044. package/lib-prod/migrations/1790328479283_initial.js +247 -0
  1045. package/lib-prod/migrations/1790328479283_initial.js.map +1 -0
  1046. package/lib-prod/migrations/migrations_index._auto-generated_.d.ts +4 -0
  1047. package/lib-prod/migrations/migrations_index._auto-generated_.js +4 -0
  1048. package/lib-prod/migrations/migrations_index._auto-generated_.js.map +1 -1
  1049. package/lib-prod/package.json +1 -1
  1050. package/lib-prod/start-cli.js +214 -31
  1051. package/lib-prod/start-cli.js.map +1 -1
  1052. package/lib-prod/taon-audit-events/index.d.ts +10 -0
  1053. package/lib-prod/taon-audit-events/index.js +12 -0
  1054. package/lib-prod/taon-audit-events/index.js.map +1 -0
  1055. package/lib-prod/taon-audit-events/taon-audit-events.abstract.context.d.ts +16 -0
  1056. package/lib-prod/taon-audit-events/taon-audit-events.abstract.context.js +21 -0
  1057. package/lib-prod/taon-audit-events/taon-audit-events.abstract.context.js.map +1 -0
  1058. package/lib-prod/taon-audit-events/taon-audit-events.constants.d.ts +2 -0
  1059. package/lib-prod/taon-audit-events/taon-audit-events.constants.js +6 -0
  1060. package/lib-prod/taon-audit-events/taon-audit-events.constants.js.map +1 -0
  1061. package/lib-prod/taon-audit-events/taon-audit-events.controller.d.ts +11 -0
  1062. package/lib-prod/taon-audit-events/taon-audit-events.controller.js +41 -0
  1063. package/lib-prod/taon-audit-events/taon-audit-events.controller.js.map +1 -0
  1064. package/lib-prod/taon-audit-events/taon-audit-events.entity.d.ts +18 -0
  1065. package/lib-prod/taon-audit-events/taon-audit-events.entity.js +104 -0
  1066. package/lib-prod/taon-audit-events/taon-audit-events.entity.js.map +1 -0
  1067. package/lib-prod/taon-audit-events/taon-audit-events.middleware.d.ts +3 -0
  1068. package/lib-prod/taon-audit-events/taon-audit-events.middleware.js +12 -0
  1069. package/lib-prod/taon-audit-events/taon-audit-events.middleware.js.map +1 -0
  1070. package/lib-prod/taon-audit-events/taon-audit-events.models.d.ts +4 -0
  1071. package/lib-prod/taon-audit-events/taon-audit-events.models.js +6 -0
  1072. package/lib-prod/taon-audit-events/taon-audit-events.models.js.map +1 -0
  1073. package/lib-prod/taon-audit-events/taon-audit-events.provider.d.ts +3 -0
  1074. package/lib-prod/taon-audit-events/taon-audit-events.provider.js +12 -0
  1075. package/lib-prod/taon-audit-events/taon-audit-events.provider.js.map +1 -0
  1076. package/lib-prod/taon-audit-events/taon-audit-events.repository.d.ts +9 -0
  1077. package/lib-prod/taon-audit-events/taon-audit-events.repository.js +28 -0
  1078. package/lib-prod/taon-audit-events/taon-audit-events.repository.js.map +1 -0
  1079. package/lib-prod/taon-audit-events/taon-audit-events.subscriber.d.ts +7 -0
  1080. package/lib-prod/taon-audit-events/taon-audit-events.subscriber.js +19 -0
  1081. package/lib-prod/taon-audit-events/taon-audit-events.subscriber.js.map +1 -0
  1082. package/lib-prod/taon-audit-events/taon-audit-events.utils.d.ts +2 -0
  1083. package/lib-prod/taon-audit-events/taon-audit-events.utils.js +6 -0
  1084. package/lib-prod/taon-audit-events/taon-audit-events.utils.js.map +1 -0
  1085. package/lib-prod/taon-auth-context/index.d.ts +3 -0
  1086. package/lib-prod/taon-auth-context/index.js +4 -0
  1087. package/lib-prod/taon-auth-context/index.js.map +1 -0
  1088. package/lib-prod/taon-auth-context/taon-auth-context.abstract.context.d.ts +16 -0
  1089. package/lib-prod/taon-auth-context/taon-auth-context.abstract.context.js +13 -0
  1090. package/lib-prod/taon-auth-context/taon-auth-context.abstract.context.js.map +1 -0
  1091. package/lib-prod/taon-auth-context/taon-auth-context.entity.d.ts +24 -0
  1092. package/lib-prod/taon-auth-context/taon-auth-context.entity.js +36 -0
  1093. package/lib-prod/taon-auth-context/taon-auth-context.entity.js.map +1 -0
  1094. package/lib-prod/taon-auth-context/taon-auth-context.repository.d.ts +36 -0
  1095. package/lib-prod/taon-auth-context/taon-auth-context.repository.js +225 -0
  1096. package/lib-prod/taon-auth-context/taon-auth-context.repository.js.map +1 -0
  1097. package/lib-prod/taon-authorization-backoffice/index.d.ts +1 -0
  1098. package/lib-prod/taon-authorization-backoffice/index.js +2 -0
  1099. package/lib-prod/taon-authorization-backoffice/index.js.map +1 -0
  1100. package/lib-prod/taon-authorization-backoffice/taon-authorization-backoffice.models.d.ts +0 -0
  1101. package/lib-prod/taon-authorization-backoffice/taon-authorization-backoffice.models.js +3 -0
  1102. package/lib-prod/taon-authorization-backoffice/taon-authorization-backoffice.models.js.map +1 -0
  1103. package/lib-prod/taon-group/index.d.ts +7 -0
  1104. package/lib-prod/taon-group/index.js +11 -0
  1105. package/lib-prod/taon-group/index.js.map +1 -0
  1106. package/lib-prod/taon-group/taon-group-backoffice/index.d.ts +1 -0
  1107. package/lib-prod/taon-group/taon-group-backoffice/index.js +2 -0
  1108. package/lib-prod/taon-group/taon-group-backoffice/index.js.map +1 -0
  1109. package/lib-prod/taon-group/taon-group-backoffice/taon-group-backoffice.models.d.ts +7 -0
  1110. package/lib-prod/taon-group/taon-group-backoffice/taon-group-backoffice.models.js +4 -0
  1111. package/lib-prod/taon-group/taon-group-backoffice/taon-group-backoffice.models.js.map +1 -0
  1112. package/lib-prod/taon-group/taon-group-chooser/index.d.ts +1 -0
  1113. package/lib-prod/taon-group/taon-group-chooser/index.js +2 -0
  1114. package/lib-prod/taon-group/taon-group-chooser/index.js.map +1 -0
  1115. package/lib-prod/taon-group/taon-group-role.entity.d.ts +9 -0
  1116. package/lib-prod/taon-group/taon-group-role.entity.js +63 -0
  1117. package/lib-prod/taon-group/taon-group-role.entity.js.map +1 -0
  1118. package/lib-prod/taon-group/taon-group-role.repository.d.ts +13 -0
  1119. package/lib-prod/taon-group/taon-group-role.repository.js +80 -0
  1120. package/lib-prod/taon-group/taon-group-role.repository.js.map +1 -0
  1121. package/lib-prod/taon-group/taon-group.abstract.context.d.ts +16 -0
  1122. package/lib-prod/taon-group/taon-group.abstract.context.js +24 -0
  1123. package/lib-prod/taon-group/taon-group.abstract.context.js.map +1 -0
  1124. package/lib-prod/taon-group/taon-group.constants.d.ts +2 -0
  1125. package/lib-prod/taon-group/taon-group.constants.js +2 -0
  1126. package/lib-prod/taon-group/taon-group.constants.js.map +1 -0
  1127. package/lib-prod/taon-group/taon-group.controller.d.ts +19 -0
  1128. package/lib-prod/taon-group/taon-group.controller.js +142 -0
  1129. package/lib-prod/taon-group/taon-group.controller.js.map +1 -0
  1130. package/lib-prod/taon-group/taon-group.entity.d.ts +10 -0
  1131. package/lib-prod/taon-group/taon-group.entity.js +64 -0
  1132. package/lib-prod/taon-group/taon-group.entity.js.map +1 -0
  1133. package/lib-prod/taon-group/taon-group.middleware.d.ts +3 -0
  1134. package/lib-prod/taon-group/taon-group.middleware.js +12 -0
  1135. package/lib-prod/taon-group/taon-group.middleware.js.map +1 -0
  1136. package/lib-prod/taon-group/taon-group.models.d.ts +0 -0
  1137. package/lib-prod/taon-group/taon-group.models.js +3 -0
  1138. package/lib-prod/taon-group/taon-group.models.js.map +1 -0
  1139. package/lib-prod/taon-group/taon-group.provider.d.ts +3 -0
  1140. package/lib-prod/taon-group/taon-group.provider.js +12 -0
  1141. package/lib-prod/taon-group/taon-group.provider.js.map +1 -0
  1142. package/lib-prod/taon-group/taon-group.repository.d.ts +6 -0
  1143. package/lib-prod/taon-group/taon-group.repository.js +31 -0
  1144. package/lib-prod/taon-group/taon-group.repository.js.map +1 -0
  1145. package/lib-prod/taon-group/taon-group.utils.d.ts +0 -0
  1146. package/lib-prod/taon-group/taon-group.utils.js +3 -0
  1147. package/lib-prod/taon-group/taon-group.utils.js.map +1 -0
  1148. package/lib-prod/taon-notification/index.d.ts +10 -0
  1149. package/lib-prod/taon-notification/index.js +12 -0
  1150. package/lib-prod/taon-notification/index.js.map +1 -0
  1151. package/lib-prod/taon-notification/taon-notification-recipient.entity.d.ts +12 -0
  1152. package/lib-prod/taon-notification/taon-notification-recipient.entity.js +84 -0
  1153. package/lib-prod/taon-notification/taon-notification-recipient.entity.js.map +1 -0
  1154. package/lib-prod/taon-notification/taon-notification.abstract.context.d.ts +16 -0
  1155. package/lib-prod/taon-notification/taon-notification.abstract.context.js +22 -0
  1156. package/lib-prod/taon-notification/taon-notification.abstract.context.js.map +1 -0
  1157. package/lib-prod/taon-notification/taon-notification.constants.d.ts +2 -0
  1158. package/lib-prod/taon-notification/taon-notification.constants.js +6 -0
  1159. package/lib-prod/taon-notification/taon-notification.constants.js.map +1 -0
  1160. package/lib-prod/taon-notification/taon-notification.controller.d.ts +11 -0
  1161. package/lib-prod/taon-notification/taon-notification.controller.js +41 -0
  1162. package/lib-prod/taon-notification/taon-notification.controller.js.map +1 -0
  1163. package/lib-prod/taon-notification/taon-notification.entity.d.ts +29 -0
  1164. package/lib-prod/taon-notification/taon-notification.entity.js +110 -0
  1165. package/lib-prod/taon-notification/taon-notification.entity.js.map +1 -0
  1166. package/lib-prod/taon-notification/taon-notification.middleware.d.ts +3 -0
  1167. package/lib-prod/taon-notification/taon-notification.middleware.js +12 -0
  1168. package/lib-prod/taon-notification/taon-notification.middleware.js.map +1 -0
  1169. package/lib-prod/taon-notification/taon-notification.models.d.ts +4 -0
  1170. package/lib-prod/taon-notification/taon-notification.models.js +6 -0
  1171. package/lib-prod/taon-notification/taon-notification.models.js.map +1 -0
  1172. package/lib-prod/taon-notification/taon-notification.provider.d.ts +3 -0
  1173. package/lib-prod/taon-notification/taon-notification.provider.js +12 -0
  1174. package/lib-prod/taon-notification/taon-notification.provider.js.map +1 -0
  1175. package/lib-prod/taon-notification/taon-notification.repository.d.ts +9 -0
  1176. package/lib-prod/taon-notification/taon-notification.repository.js +28 -0
  1177. package/lib-prod/taon-notification/taon-notification.repository.js.map +1 -0
  1178. package/lib-prod/taon-notification/taon-notification.subscriber.d.ts +7 -0
  1179. package/lib-prod/taon-notification/taon-notification.subscriber.js +19 -0
  1180. package/lib-prod/taon-notification/taon-notification.subscriber.js.map +1 -0
  1181. package/lib-prod/taon-notification/taon-notification.utils.d.ts +2 -0
  1182. package/lib-prod/taon-notification/taon-notification.utils.js +6 -0
  1183. package/lib-prod/taon-notification/taon-notification.utils.js.map +1 -0
  1184. package/lib-prod/taon-permission/index.d.ts +10 -0
  1185. package/lib-prod/taon-permission/index.js +12 -0
  1186. package/lib-prod/taon-permission/index.js.map +1 -0
  1187. package/lib-prod/taon-permission/taon-permission-backoffice/index.d.ts +1 -0
  1188. package/lib-prod/taon-permission/taon-permission-backoffice/index.js +2 -0
  1189. package/lib-prod/taon-permission/taon-permission-backoffice/index.js.map +1 -0
  1190. package/lib-prod/taon-permission/taon-permission-backoffice/taon-permission-backoffice.models.d.ts +0 -0
  1191. package/lib-prod/taon-permission/taon-permission-backoffice/taon-permission-backoffice.models.js +3 -0
  1192. package/lib-prod/taon-permission/taon-permission-backoffice/taon-permission-backoffice.models.js.map +1 -0
  1193. package/lib-prod/taon-permission/taon-permission-chooser/index.d.ts +1 -0
  1194. package/lib-prod/taon-permission/taon-permission-chooser/index.js +2 -0
  1195. package/lib-prod/taon-permission/taon-permission-chooser/index.js.map +1 -0
  1196. package/lib-prod/taon-permission/taon-permission-view-edit/index.d.ts +1 -0
  1197. package/lib-prod/taon-permission/taon-permission-view-edit/index.js +2 -0
  1198. package/lib-prod/taon-permission/taon-permission-view-edit/index.js.map +1 -0
  1199. package/lib-prod/taon-permission/taon-permission.abstract.context.d.ts +16 -0
  1200. package/lib-prod/taon-permission/taon-permission.abstract.context.js +21 -0
  1201. package/lib-prod/taon-permission/taon-permission.abstract.context.js.map +1 -0
  1202. package/lib-prod/taon-permission/taon-permission.constants.d.ts +2 -0
  1203. package/lib-prod/taon-permission/taon-permission.constants.js +6 -0
  1204. package/lib-prod/taon-permission/taon-permission.constants.js.map +1 -0
  1205. package/lib-prod/taon-permission/taon-permission.controller.d.ts +11 -0
  1206. package/lib-prod/taon-permission/taon-permission.controller.js +47 -0
  1207. package/lib-prod/taon-permission/taon-permission.controller.js.map +1 -0
  1208. package/lib-prod/taon-permission/taon-permission.entity.d.ts +16 -0
  1209. package/lib-prod/taon-permission/taon-permission.entity.js +62 -0
  1210. package/lib-prod/taon-permission/taon-permission.entity.js.map +1 -0
  1211. package/lib-prod/taon-permission/taon-permission.middleware.d.ts +3 -0
  1212. package/lib-prod/taon-permission/taon-permission.middleware.js +12 -0
  1213. package/lib-prod/taon-permission/taon-permission.middleware.js.map +1 -0
  1214. package/lib-prod/taon-permission/taon-permission.models.d.ts +4 -0
  1215. package/lib-prod/taon-permission/taon-permission.models.js +6 -0
  1216. package/lib-prod/taon-permission/taon-permission.models.js.map +1 -0
  1217. package/lib-prod/taon-permission/taon-permission.provider.d.ts +3 -0
  1218. package/lib-prod/taon-permission/taon-permission.provider.js +12 -0
  1219. package/lib-prod/taon-permission/taon-permission.provider.js.map +1 -0
  1220. package/lib-prod/taon-permission/taon-permission.repository.d.ts +7 -0
  1221. package/lib-prod/taon-permission/taon-permission.repository.js +35 -0
  1222. package/lib-prod/taon-permission/taon-permission.repository.js.map +1 -0
  1223. package/lib-prod/taon-permission/taon-permission.subscriber.d.ts +7 -0
  1224. package/lib-prod/taon-permission/taon-permission.subscriber.js +19 -0
  1225. package/lib-prod/taon-permission/taon-permission.subscriber.js.map +1 -0
  1226. package/lib-prod/taon-permission/taon-permission.utils.d.ts +2 -0
  1227. package/lib-prod/taon-permission/taon-permission.utils.js +6 -0
  1228. package/lib-prod/taon-permission/taon-permission.utils.js.map +1 -0
  1229. package/lib-prod/taon-role/index.d.ts +7 -0
  1230. package/lib-prod/taon-role/index.js +9 -0
  1231. package/lib-prod/taon-role/index.js.map +1 -0
  1232. package/lib-prod/taon-role/taon-role-backoffice/index.d.ts +1 -0
  1233. package/lib-prod/taon-role/taon-role-backoffice/index.js +2 -0
  1234. package/lib-prod/taon-role/taon-role-backoffice/index.js.map +1 -0
  1235. package/lib-prod/taon-role/taon-role-backoffice/taon-role-backoffice.models.d.ts +7 -0
  1236. package/lib-prod/taon-role/taon-role-backoffice/taon-role-backoffice.models.js +4 -0
  1237. package/lib-prod/taon-role/taon-role-backoffice/taon-role-backoffice.models.js.map +1 -0
  1238. package/lib-prod/taon-role/taon-role-chooser/index.d.ts +1 -0
  1239. package/lib-prod/taon-role/taon-role-chooser/index.js +2 -0
  1240. package/lib-prod/taon-role/taon-role-chooser/index.js.map +1 -0
  1241. package/lib-prod/taon-role/taon-role-permission.entity.d.ts +9 -0
  1242. package/lib-prod/taon-role/taon-role-permission.entity.js +63 -0
  1243. package/lib-prod/taon-role/taon-role-permission.entity.js.map +1 -0
  1244. package/lib-prod/taon-role/taon-role-permission.repository.d.ts +13 -0
  1245. package/lib-prod/taon-role/taon-role-permission.repository.js +75 -0
  1246. package/lib-prod/taon-role/taon-role-permission.repository.js.map +1 -0
  1247. package/lib-prod/taon-role/taon-role.abstract.context.d.ts +16 -0
  1248. package/lib-prod/taon-role/taon-role.abstract.context.js +26 -0
  1249. package/lib-prod/taon-role/taon-role.abstract.context.js.map +1 -0
  1250. package/lib-prod/taon-role/taon-role.constants.d.ts +2 -0
  1251. package/lib-prod/taon-role/taon-role.constants.js +6 -0
  1252. package/lib-prod/taon-role/taon-role.constants.js.map +1 -0
  1253. package/lib-prod/taon-role/taon-role.controller.d.ts +15 -0
  1254. package/lib-prod/taon-role/taon-role.controller.js +85 -0
  1255. package/lib-prod/taon-role/taon-role.controller.js.map +1 -0
  1256. package/lib-prod/taon-role/taon-role.entity.d.ts +18 -0
  1257. package/lib-prod/taon-role/taon-role.entity.js +80 -0
  1258. package/lib-prod/taon-role/taon-role.entity.js.map +1 -0
  1259. package/lib-prod/taon-role/taon-role.models.d.ts +4 -0
  1260. package/lib-prod/taon-role/taon-role.models.js +6 -0
  1261. package/lib-prod/taon-role/taon-role.models.js.map +1 -0
  1262. package/lib-prod/taon-role/taon-role.provider.d.ts +3 -0
  1263. package/lib-prod/taon-role/taon-role.provider.js +12 -0
  1264. package/lib-prod/taon-role/taon-role.provider.js.map +1 -0
  1265. package/lib-prod/taon-role/taon-role.repository.d.ts +6 -0
  1266. package/lib-prod/taon-role/taon-role.repository.js +18 -0
  1267. package/lib-prod/taon-role/taon-role.repository.js.map +1 -0
  1268. package/lib-prod/taon-session/index.d.ts +2 -3
  1269. package/lib-prod/taon-session/index.js +4 -3
  1270. package/lib-prod/taon-session/index.js.map +1 -1
  1271. package/lib-prod/taon-session/taon-profile/index.d.ts +6 -0
  1272. package/lib-prod/taon-session/taon-profile/index.js +9 -0
  1273. package/lib-prod/taon-session/taon-profile/index.js.map +1 -0
  1274. package/lib-prod/taon-session/taon-profile/taon-profile-picture/index.d.ts +1 -0
  1275. package/lib-prod/taon-session/taon-profile/taon-profile-picture/index.js +2 -0
  1276. package/lib-prod/taon-session/taon-profile/taon-profile-picture/index.js.map +1 -0
  1277. package/lib-prod/taon-session/taon-profile/taon-profile-picture/taon-profile-picture.models.d.ts +0 -0
  1278. package/lib-prod/taon-session/taon-profile/taon-profile-picture/taon-profile-picture.models.js +3 -0
  1279. package/lib-prod/taon-session/taon-profile/taon-profile-picture/taon-profile-picture.models.js.map +1 -0
  1280. package/lib-prod/taon-session/taon-profile/taon-profile.abstract.context.d.ts +16 -0
  1281. package/lib-prod/taon-session/taon-profile/taon-profile.abstract.context.js +25 -0
  1282. package/lib-prod/taon-session/taon-profile/taon-profile.abstract.context.js.map +1 -0
  1283. package/lib-prod/taon-session/taon-profile/taon-profile.constants.d.ts +6 -0
  1284. package/lib-prod/taon-session/taon-profile/taon-profile.constants.js +15 -0
  1285. package/lib-prod/taon-session/taon-profile/taon-profile.constants.js.map +1 -0
  1286. package/lib-prod/taon-session/taon-profile/taon-profile.controller.d.ts +21 -0
  1287. package/lib-prod/taon-session/taon-profile/taon-profile.controller.js +103 -0
  1288. package/lib-prod/taon-session/taon-profile/taon-profile.controller.js.map +1 -0
  1289. package/lib-prod/taon-session/taon-profile/taon-profile.entity.d.ts +4 -0
  1290. package/lib-prod/taon-session/taon-profile/taon-profile.entity.js +32 -0
  1291. package/lib-prod/taon-session/taon-profile/taon-profile.entity.js.map +1 -0
  1292. package/lib-prod/taon-session/taon-profile/taon-profile.kv.repository.d.ts +7 -0
  1293. package/lib-prod/taon-session/taon-profile/taon-profile.kv.repository.js +15 -0
  1294. package/lib-prod/taon-session/taon-profile/taon-profile.kv.repository.js.map +1 -0
  1295. package/lib-prod/taon-session/taon-profile/taon-profile.models.d.ts +6 -0
  1296. package/lib-prod/taon-session/taon-profile/taon-profile.models.js +10 -0
  1297. package/lib-prod/taon-session/taon-profile/taon-profile.models.js.map +1 -0
  1298. package/lib-prod/taon-session/taon-profile/taon-profile.provider.d.ts +12 -0
  1299. package/lib-prod/taon-session/taon-profile/taon-profile.provider.js +22 -0
  1300. package/lib-prod/taon-session/taon-profile/taon-profile.provider.js.map +1 -0
  1301. package/lib-prod/taon-session/taon-session/index.d.ts +1 -1
  1302. package/lib-prod/taon-session/taon-session/index.js +1 -1
  1303. package/lib-prod/taon-session/taon-session/taon-session-profile/index.d.ts +1 -0
  1304. package/lib-prod/taon-session/taon-session/taon-session-profile/index.js +2 -0
  1305. package/lib-prod/taon-session/taon-session/taon-session-profile/index.js.map +1 -0
  1306. package/lib-prod/taon-session/taon-session/taon-session-profile/taon-session-profile.models.d.ts +0 -0
  1307. package/lib-prod/taon-session/taon-session/taon-session-profile/taon-session-profile.models.js +3 -0
  1308. package/lib-prod/taon-session/taon-session/taon-session-profile/taon-session-profile.models.js.map +1 -0
  1309. package/lib-prod/taon-session/taon-session-backoffice/index.d.ts +2 -0
  1310. package/lib-prod/taon-session/taon-session-backoffice/index.js +7 -0
  1311. package/lib-prod/taon-session/taon-session-backoffice/index.js.map +1 -0
  1312. package/lib-prod/taon-session/taon-session-backoffice/taon-session-backoffice.controller.d.ts +13 -0
  1313. package/lib-prod/taon-session/taon-session-backoffice/taon-session-backoffice.controller.js +170 -0
  1314. package/lib-prod/taon-session/taon-session-backoffice/taon-session-backoffice.controller.js.map +1 -0
  1315. package/lib-prod/taon-session/taon-session-backoffice/taon-session-backoffice.models.d.ts +8 -0
  1316. package/lib-prod/taon-session/taon-session-backoffice/taon-session-backoffice.models.js +3 -0
  1317. package/lib-prod/taon-session/taon-session-backoffice/taon-session-backoffice.models.js.map +1 -0
  1318. package/lib-prod/taon-session/taon-session-button/index.d.ts +1 -0
  1319. package/lib-prod/taon-session/taon-session-button/index.js +2 -0
  1320. package/lib-prod/taon-session/taon-session-button/index.js.map +1 -0
  1321. package/lib-prod/taon-session/taon-session.abstract.context.d.ts +4 -7
  1322. package/lib-prod/taon-session/taon-session.abstract.context.js +40 -10
  1323. package/lib-prod/taon-session/taon-session.abstract.context.js.map +1 -1
  1324. package/lib-prod/taon-session/taon-session.controller.d.ts +20 -9
  1325. package/lib-prod/taon-session/taon-session.controller.js +481 -48
  1326. package/lib-prod/taon-session/taon-session.controller.js.map +1 -1
  1327. package/lib-prod/taon-session/taon-session.entity.d.ts +21 -0
  1328. package/lib-prod/taon-session/taon-session.entity.js +145 -0
  1329. package/lib-prod/taon-session/taon-session.entity.js.map +1 -0
  1330. package/lib-prod/taon-session/{taon-session-kv.repository.d.ts → taon-session.kv.repository.d.ts} +7 -3
  1331. package/lib-prod/taon-session/{taon-session-kv.repository.js → taon-session.kv.repository.js} +29 -21
  1332. package/lib-prod/taon-session/taon-session.kv.repository.js.map +1 -0
  1333. package/lib-prod/taon-session/taon-session.middleware.d.ts +4 -6
  1334. package/lib-prod/taon-session/taon-session.middleware.js +5 -20
  1335. package/lib-prod/taon-session/taon-session.middleware.js.map +1 -1
  1336. package/lib-prod/taon-session/taon-session.models.d.ts +30 -3
  1337. package/lib-prod/taon-session/taon-session.models.js +37 -4
  1338. package/lib-prod/taon-session/taon-session.models.js.map +1 -1
  1339. package/lib-prod/taon-session/taon-session.provider.d.ts +164 -2
  1340. package/lib-prod/taon-session/taon-session.provider.js +200 -6
  1341. package/lib-prod/taon-session/taon-session.provider.js.map +1 -1
  1342. package/lib-prod/taon-session/taon-session.repository.d.ts +13 -0
  1343. package/lib-prod/taon-session/taon-session.repository.js +138 -0
  1344. package/lib-prod/taon-session/taon-session.repository.js.map +1 -0
  1345. package/lib-prod/taon-session/taon-session.state.service.d.ts +59 -0
  1346. package/lib-prod/taon-session/taon-session.state.service.js +384 -0
  1347. package/lib-prod/taon-session/taon-session.state.service.js.map +1 -0
  1348. package/lib-prod/taon-session/taon-session.utils.d.ts +13 -1
  1349. package/lib-prod/taon-session/taon-session.utils.js +155 -1
  1350. package/lib-prod/taon-session/taon-session.utils.js.map +1 -1
  1351. package/lib-prod/taon-session/taon-session.validators.d.ts +1 -0
  1352. package/lib-prod/taon-session/taon-session.validators.js +23 -0
  1353. package/lib-prod/taon-session/taon-session.validators.js.map +1 -0
  1354. package/lib-prod/taon-session-user/index.d.ts +11 -0
  1355. package/lib-prod/taon-session-user/index.js +13 -0
  1356. package/lib-prod/taon-session-user/index.js.map +1 -0
  1357. package/lib-prod/taon-session-user/taon-session-backoffice-users/index.d.ts +1 -0
  1358. package/lib-prod/taon-session-user/taon-session-backoffice-users/index.js +2 -0
  1359. package/lib-prod/taon-session-user/taon-session-backoffice-users/index.js.map +1 -0
  1360. package/lib-prod/taon-session-user/taon-session-backoffice-users/taon-session-backoffice-users.models.d.ts +12 -0
  1361. package/lib-prod/taon-session-user/taon-session-backoffice-users/taon-session-backoffice-users.models.js +4 -0
  1362. package/lib-prod/taon-session-user/taon-session-backoffice-users/taon-session-backoffice-users.models.js.map +1 -0
  1363. package/lib-prod/taon-session-user/taon-session-user-group.entity.d.ts +10 -0
  1364. package/lib-prod/taon-session-user/taon-session-user-group.entity.js +72 -0
  1365. package/lib-prod/taon-session-user/taon-session-user-group.entity.js.map +1 -0
  1366. package/lib-prod/taon-session-user/taon-session-user-group.repository.d.ts +7 -0
  1367. package/lib-prod/taon-session-user/taon-session-user-group.repository.js +46 -0
  1368. package/lib-prod/taon-session-user/taon-session-user-group.repository.js.map +1 -0
  1369. package/lib-prod/taon-session-user/taon-session-user-identity.entity.d.ts +37 -0
  1370. package/lib-prod/taon-session-user/taon-session-user-identity.entity.js +127 -0
  1371. package/lib-prod/taon-session-user/taon-session-user-identity.entity.js.map +1 -0
  1372. package/lib-prod/taon-session-user/taon-session-user-identity.repository.d.ts +21 -0
  1373. package/lib-prod/taon-session-user/taon-session-user-identity.repository.js +207 -0
  1374. package/lib-prod/taon-session-user/taon-session-user-identity.repository.js.map +1 -0
  1375. package/lib-prod/taon-session-user/taon-session-user-role.entity.d.ts +10 -0
  1376. package/lib-prod/taon-session-user/taon-session-user-role.entity.js +72 -0
  1377. package/lib-prod/taon-session-user/taon-session-user-role.entity.js.map +1 -0
  1378. package/lib-prod/taon-session-user/taon-session-user.abstract.context.d.ts +16 -0
  1379. package/lib-prod/taon-session-user/taon-session-user.abstract.context.js +35 -0
  1380. package/lib-prod/taon-session-user/taon-session-user.abstract.context.js.map +1 -0
  1381. package/lib-prod/taon-session-user/taon-session-user.constants.d.ts +2 -0
  1382. package/lib-prod/taon-session-user/taon-session-user.constants.js +2 -0
  1383. package/lib-prod/taon-session-user/taon-session-user.constants.js.map +1 -0
  1384. package/lib-prod/taon-session-user/taon-session-user.controller.d.ts +11 -0
  1385. package/lib-prod/taon-session-user/taon-session-user.controller.js +83 -0
  1386. package/lib-prod/taon-session-user/taon-session-user.controller.js.map +1 -0
  1387. package/lib-prod/taon-session-user/taon-session-user.entity.d.ts +15 -0
  1388. package/lib-prod/taon-session-user/taon-session-user.entity.js +97 -0
  1389. package/lib-prod/taon-session-user/taon-session-user.entity.js.map +1 -0
  1390. package/lib-prod/taon-session-user/taon-session-user.middleware.d.ts +3 -0
  1391. package/lib-prod/taon-session-user/taon-session-user.middleware.js +12 -0
  1392. package/lib-prod/taon-session-user/taon-session-user.middleware.js.map +1 -0
  1393. package/lib-prod/taon-session-user/taon-session-user.models.d.ts +12 -0
  1394. package/lib-prod/taon-session-user/taon-session-user.models.js +15 -0
  1395. package/lib-prod/taon-session-user/taon-session-user.models.js.map +1 -0
  1396. package/lib-prod/taon-session-user/taon-session-user.provider.d.ts +3 -0
  1397. package/lib-prod/taon-session-user/taon-session-user.provider.js +12 -0
  1398. package/lib-prod/taon-session-user/taon-session-user.provider.js.map +1 -0
  1399. package/lib-prod/taon-session-user/taon-session-user.repository.d.ts +10 -0
  1400. package/lib-prod/taon-session-user/taon-session-user.repository.js +93 -0
  1401. package/lib-prod/taon-session-user/taon-session-user.repository.js.map +1 -0
  1402. package/lib-prod/taon-session-user/taon-session-user.subscriber.d.ts +7 -0
  1403. package/lib-prod/taon-session-user/taon-session-user.subscriber.js +19 -0
  1404. package/lib-prod/taon-session-user/taon-session-user.subscriber.js.map +1 -0
  1405. package/lib-prod/taon-session-user/taon-session-user.utils.d.ts +1 -0
  1406. package/lib-prod/taon-session-user/taon-session-user.utils.js +6 -0
  1407. package/lib-prod/taon-session-user/taon-session-user.utils.js.map +1 -0
  1408. package/lib-prod.split-namespaces.json +55 -7
  1409. package/package.json +5 -2
  1410. package/scss/app/baseline-backoffice/taon-baseline-backoffice.component.scss +3 -0
  1411. package/scss/app/session-example/session-example.component.scss +3 -0
  1412. package/scss/global.scss +6 -3
  1413. package/scss/lib/taon-authorization-backoffice/taon-authorization-backoffice.component.scss +3 -0
  1414. package/scss/lib/taon-group/taon-group-backoffice/taon-group-backoffice.component.scss +24 -0
  1415. package/scss/lib/taon-group/taon-group-chooser/taon-group-chooser.component.scss +14 -0
  1416. package/scss/lib/taon-permission/taon-permission-backoffice/taon-permission-backoffice.component.scss +17 -0
  1417. package/scss/lib/taon-permission/taon-permission-chooser/taon-permission-chooser.component.scss +14 -0
  1418. package/scss/lib/taon-permission/taon-permission-view-edit/taon-permission-view-edit.component.scss +23 -0
  1419. package/scss/lib/taon-role/taon-role-backoffice/taon-role-backoffice.component.scss +24 -0
  1420. package/scss/lib/taon-role/taon-role-chooser/taon-role-chooser.component.scss +14 -0
  1421. package/scss/lib/taon-session/taon-profile/taon-profile-picture/taon-profile-picture.component.scss +92 -0
  1422. package/scss/lib/taon-session/taon-session/taon-session-profile/taon-session-profile.component.scss +31 -0
  1423. package/scss/lib/taon-session/taon-session/taon-session.component.scss +54 -2
  1424. package/scss/lib/taon-session/taon-session-backoffice/taon-session-backoffice.component.scss +3 -0
  1425. package/scss/lib/taon-session/taon-session-button/taon-session-button.component.scss +3 -0
  1426. package/scss/lib/taon-session-user/taon-session-backoffice-users/taon-session-backoffice-users.component.scss +91 -0
  1427. package/src.d.ts +1 -1
  1428. package/websql/fesm2022/session-websql.mjs +8289 -1213
  1429. package/websql/fesm2022/session-websql.mjs.map +1 -1
  1430. package/websql/package.json +1 -1
  1431. package/websql/types/session-websql.d.ts +1703 -55
  1432. package/websql-prod/fesm2022/session-websql-prod.mjs +8299 -1216
  1433. package/websql-prod/fesm2022/session-websql-prod.mjs.map +1 -1
  1434. package/websql-prod/package.json +1 -1
  1435. package/websql-prod/types/session-websql-prod.d.ts +1672 -53
  1436. package/websql-prod.split-namespaces.json +59 -7
  1437. package/lib/taon-session/taon-session/taon-session.component.d.ts +0 -14
  1438. package/lib/taon-session/taon-session-api.service.d.ts +0 -9
  1439. package/lib/taon-session/taon-session-kv.repository.js.map +0 -1
  1440. package/lib/taon-session/taon-session-user.entity.d.ts +0 -5
  1441. package/lib/taon-session/taon-session-user.entity.js.map +0 -1
  1442. package/lib/taon-session/taon-session-user.repository.d.ts +0 -5
  1443. package/lib/taon-session/taon-session-user.repository.js.map +0 -1
  1444. package/lib-esm/app.cloudflare.js +0 -4
  1445. package/lib-esm/app.cloudflare.js.map +0 -1
  1446. package/lib-esm/lib/taon-session/taon-session-kv.repository.js.map +0 -1
  1447. package/lib-esm/lib/taon-session/taon-session-user.entity.d.ts +0 -5
  1448. package/lib-esm/lib/taon-session/taon-session-user.entity.js +0 -31
  1449. package/lib-esm/lib/taon-session/taon-session-user.entity.js.map +0 -1
  1450. package/lib-esm/lib/taon-session/taon-session-user.repository.d.ts +0 -5
  1451. package/lib-esm/lib/taon-session/taon-session-user.repository.js +0 -14
  1452. package/lib-esm/lib/taon-session/taon-session-user.repository.js.map +0 -1
  1453. package/lib-prod/taon-session/taon-session-kv.repository.js.map +0 -1
  1454. package/lib-prod/taon-session/taon-session-user.entity.d.ts +0 -5
  1455. package/lib-prod/taon-session/taon-session-user.entity.js +0 -31
  1456. package/lib-prod/taon-session/taon-session-user.entity.js.map +0 -1
  1457. package/lib-prod/taon-session/taon-session-user.repository.d.ts +0 -5
  1458. package/lib-prod/taon-session/taon-session-user.repository.js +0 -14
  1459. package/lib-prod/taon-session/taon-session-user.repository.js.map +0 -1
  1460. /package/{lib-esm/app.cloudflare.d.ts → full-dts/taon-group/taon-group.models.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"session-websql.mjs","sources":["../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/migrations/migrations_index._auto-generated_.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/migrations/index.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/env/env.angular-node-app.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/env/env.docs-webapp.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/env/env.electron-app.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/env/env.mobile-app.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/env/env.npm-lib-and-cli-tool.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/env/env.vscode-plugin.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/build-info._auto-generated_.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/my-organization-proj.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/start-cli.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session.provider.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session-kv.repository.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session-user.entity.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session-user.repository.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session.middleware.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session.models.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session.controller.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session-api.service.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session.abstract.context.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session/taon-session.component.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session/taon-session.component.html","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/index._auto-generated_.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/index.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/session-websql.ts"],"sourcesContent":["// THIS FILE IS GENERATED - DO NOT MODIFY\n\n// THIS FILE IS GENERATED - DO NOT MODIFY\n\n// THIS FILE IS GENERATED - DO NOT MODIFY\n","//@ts-nocheck\nexport * from './migrations_index._auto-generated_';\n","// THIS FILE IS GENERATED - DO NOT MODIFY\n// loading.preAngularBootstrap.background\nexport const ENV_ANGULAR_NODE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND = '#fdebed';\n// loading.preAngularBootstrap.loader.name\nexport const ENV_ANGULAR_NODE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME = 'lds-default';\n// website.domain\nexport const ENV_ANGULAR_NODE_APP_WEBSITE_DOMAIN = 'session.example.domain.com';\n// website.title\nexport const ENV_ANGULAR_NODE_APP_WEBSITE_TITLE = 'Session';\n// website.useDomain\nexport const ENV_ANGULAR_NODE_APP_WEBSITE_USE_DOMAIN = true;\n// release.targetArtifact\nexport const ENV_ANGULAR_NODE_APP_RELEASE_TARGET_ARTIFACT = 'angular-node-app';\n// release.envName\nexport const ENV_ANGULAR_NODE_APP_RELEASE_ENV_NAME = '__';\n// container.only\nexport const ENV_ANGULAR_NODE_APP_CONTAINER_ONLY = undefined;\n// container.end\nexport const ENV_ANGULAR_NODE_APP_CONTAINER_END = undefined;\n// container.start\nexport const ENV_ANGULAR_NODE_APP_CONTAINER_START = undefined;\n// container.skipReleased\nexport const ENV_ANGULAR_NODE_APP_CONTAINER_SKIP_RELEASED = undefined;\n// container.skip\nexport const ENV_ANGULAR_NODE_APP_CONTAINER_SKIP = undefined;\n// init.branding\nexport const ENV_ANGULAR_NODE_APP_INIT_BRANDING = undefined;\n// init.struct\nexport const ENV_ANGULAR_NODE_APP_INIT_STRUCT = undefined;\n// build.pwa.disableServiceWorker\nexport const ENV_ANGULAR_NODE_APP_BUILD_PWA_DISABLE_SERVICE_WORKER = undefined;\n// build.pwa.name\nexport const ENV_ANGULAR_NODE_APP_BUILD_PWA_NAME = undefined;\n// build.pwa.short_name\nexport const ENV_ANGULAR_NODE_APP_BUILD_PWA_SHORT_NAME = undefined;\n// build.pwa.start_url\nexport const ENV_ANGULAR_NODE_APP_BUILD_PWA_START_URL = undefined;\n// build.electron.showDevTools\nexport const ENV_ANGULAR_NODE_APP_BUILD_ELECTRON_SHOW_DEV_TOOLS = undefined;\n// build.ssr\nexport const ENV_ANGULAR_NODE_APP_BUILD_SSR = undefined;\n// build.websql\nexport const ENV_ANGULAR_NODE_APP_BUILD_WEBSQL = undefined;\n// build.prod\nexport const ENV_ANGULAR_NODE_APP_BUILD_PROD = undefined;\n// build.overrideOutputPath\nexport const ENV_ANGULAR_NODE_APP_BUILD_OVERRIDE_OUTPUT_PATH = undefined;\n// build.baseHref\nexport const ENV_ANGULAR_NODE_APP_BUILD_BASE_HREF = undefined;\n// build.watch\nexport const ENV_ANGULAR_NODE_APP_BUILD_WATCH = undefined;\n// build.genOnlyClientCode\nexport const ENV_ANGULAR_NODE_APP_BUILD_GEN_ONLY_CLIENT_CODE = undefined;\n// loading.preAngularBootstrap.loader\nexport const ENV_ANGULAR_NODE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER = undefined;\n// release.cli.minify\nexport const ENV_ANGULAR_NODE_APP_RELEASE_CLI_MINIFY = undefined;\n// release.cli.includeNodeModules\nexport const ENV_ANGULAR_NODE_APP_RELEASE_CLI_INCLUDE_NODE_MODULES = undefined;\n// release.cli.uglify\nexport const ENV_ANGULAR_NODE_APP_RELEASE_CLI_UGLIFY = undefined;\n// release.cli.obscure\nexport const ENV_ANGULAR_NODE_APP_RELEASE_CLI_OBSCURE = undefined;\n// release.cli.compress\nexport const ENV_ANGULAR_NODE_APP_RELEASE_CLI_COMPRESS = undefined;\n// release.nodeBackendApp.minify\nexport const ENV_ANGULAR_NODE_APP_RELEASE_NODE_BACKEND_APP_MINIFY = undefined;\n// release.lib.removeDts\nexport const ENV_ANGULAR_NODE_APP_RELEASE_LIB_REMOVE_DTS = undefined;\n// release.lib.obscureFileByFile\nexport const ENV_ANGULAR_NODE_APP_RELEASE_LIB_OBSCURE_FILE_BY_FILE = undefined;\n// release.lib.uglifyFileByFile\nexport const ENV_ANGULAR_NODE_APP_RELEASE_LIB_UGLIFY_FILE_BY_FILE = undefined;\n// release.lib.includeSourceMaps\nexport const ENV_ANGULAR_NODE_APP_RELEASE_LIB_INCLUDE_SOURCE_MAPS = undefined;\n// release.lib.compress\nexport const ENV_ANGULAR_NODE_APP_RELEASE_LIB_COMPRESS = undefined;\n// release.lib.doNotIncludeLibFiles\nexport const ENV_ANGULAR_NODE_APP_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES = undefined;\n// release.resolvedNewVersion\nexport const ENV_ANGULAR_NODE_APP_RELEASE_RESOLVED_NEW_VERSION = undefined;\n// release.releaseVersionBumpType\nexport const ENV_ANGULAR_NODE_APP_RELEASE_RELEASE_VERSION_BUMP_TYPE = undefined;\n// release.envNumber\nexport const ENV_ANGULAR_NODE_APP_RELEASE_ENV_NUMBER = undefined;\n// release.installLocally\nexport const ENV_ANGULAR_NODE_APP_RELEASE_INSTALL_LOCALLY = undefined;\n// release.removeReleaseOutputAfterLocalInstall\nexport const ENV_ANGULAR_NODE_APP_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL = undefined;\n// release.releaseType\nexport const ENV_ANGULAR_NODE_APP_RELEASE_RELEASE_TYPE = undefined;\n// release.autoReleaseUsingConfig\nexport const ENV_ANGULAR_NODE_APP_RELEASE_AUTO_RELEASE_USING_CONFIG = undefined;\n// release.autoReleaseTaskName\nexport const ENV_ANGULAR_NODE_APP_RELEASE_AUTO_RELEASE_TASK_NAME = undefined;\n// release.taonInstanceIp\nexport const ENV_ANGULAR_NODE_APP_RELEASE_TAON_INSTANCE_IP = undefined;\n// release.skipNpmPublish\nexport const ENV_ANGULAR_NODE_APP_RELEASE_SKIP_NPM_PUBLISH = undefined;\n// release.skipDeploy\nexport const ENV_ANGULAR_NODE_APP_RELEASE_SKIP_DEPLOY = undefined;\n// release.skipTagGitPush\nexport const ENV_ANGULAR_NODE_APP_RELEASE_SKIP_TAG_GIT_PUSH = undefined;\n// release.skipReleaseQuestion\nexport const ENV_ANGULAR_NODE_APP_RELEASE_SKIP_RELEASE_QUESTION = undefined;\n// release.skipResolvingGitChanges\nexport const ENV_ANGULAR_NODE_APP_RELEASE_SKIP_RESOLVING_GIT_CHANGES = undefined;\n// release.skipCodeCutting\nexport const ENV_ANGULAR_NODE_APP_RELEASE_SKIP_CODE_CUTTING = undefined;\n// release.skipBuildingArtifacts\nexport const ENV_ANGULAR_NODE_APP_RELEASE_SKIP_BUILDING_ARTIFACTS = undefined;\n// release.pushToAllOriginsWhenLocalReleaseBranch\nexport const ENV_ANGULAR_NODE_APP_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH = undefined;\n// release.useLocalReleaseBranch\nexport const ENV_ANGULAR_NODE_APP_RELEASE_USE_LOCAL_RELEASE_BRANCH = undefined;\n// copyToManager.beforeCopyHook\nexport const ENV_ANGULAR_NODE_APP_COPY_TO_MANAGER_BEFORE_COPY_HOOK = undefined;\n// copyToManager.copyToLocations\nexport const ENV_ANGULAR_NODE_APP_COPY_TO_MANAGER_COPY_TO_LOCATIONS = undefined;\n// copyToManager.copyToProjects\nexport const ENV_ANGULAR_NODE_APP_COPY_TO_MANAGER_COPY_TO_PROJECTS = undefined;\n// copyToManager.skip\nexport const ENV_ANGULAR_NODE_APP_COPY_TO_MANAGER_SKIP = undefined;\n// purpose\nexport const ENV_ANGULAR_NODE_APP_PURPOSE = undefined;\n// recursiveAction\nexport const ENV_ANGULAR_NODE_APP_RECURSIVE_ACTION = undefined;\n// isCiProcess\nexport const ENV_ANGULAR_NODE_APP_IS_CI_PROCESS = undefined;\n// docker.additionalContainer\nexport const ENV_ANGULAR_NODE_APP_DOCKER_ADDITIONAL_CONTAINER = undefined;\n// docker.skipStartInOrder\nexport const ENV_ANGULAR_NODE_APP_DOCKER_SKIP_START_IN_ORDER = undefined;\n// docker.skipUsingMysqlDb\nexport const ENV_ANGULAR_NODE_APP_DOCKER_SKIP_USING_MYSQL_DB = undefined;\n// THIS FILE IS GENERATED - DO NOT MODIFY","// THIS FILE IS GENERATED - DO NOT MODIFY\n// loading.preAngularBootstrap.background\nexport const ENV_DOCS_WEBAPP_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND = '#fdebed';\n// loading.preAngularBootstrap.loader.name\nexport const ENV_DOCS_WEBAPP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME = 'lds-default';\n// website.domain\nexport const ENV_DOCS_WEBAPP_WEBSITE_DOMAIN = 'session.example.domain.com';\n// website.title\nexport const ENV_DOCS_WEBAPP_WEBSITE_TITLE = 'Session';\n// website.useDomain\nexport const ENV_DOCS_WEBAPP_WEBSITE_USE_DOMAIN = true;\n// release.targetArtifact\nexport const ENV_DOCS_WEBAPP_RELEASE_TARGET_ARTIFACT = 'docs-webapp';\n// release.envName\nexport const ENV_DOCS_WEBAPP_RELEASE_ENV_NAME = '__';\n// container.only\nexport const ENV_DOCS_WEBAPP_CONTAINER_ONLY = undefined;\n// container.end\nexport const ENV_DOCS_WEBAPP_CONTAINER_END = undefined;\n// container.start\nexport const ENV_DOCS_WEBAPP_CONTAINER_START = undefined;\n// container.skipReleased\nexport const ENV_DOCS_WEBAPP_CONTAINER_SKIP_RELEASED = undefined;\n// container.skip\nexport const ENV_DOCS_WEBAPP_CONTAINER_SKIP = undefined;\n// init.branding\nexport const ENV_DOCS_WEBAPP_INIT_BRANDING = undefined;\n// init.struct\nexport const ENV_DOCS_WEBAPP_INIT_STRUCT = undefined;\n// build.pwa.disableServiceWorker\nexport const ENV_DOCS_WEBAPP_BUILD_PWA_DISABLE_SERVICE_WORKER = undefined;\n// build.pwa.name\nexport const ENV_DOCS_WEBAPP_BUILD_PWA_NAME = undefined;\n// build.pwa.short_name\nexport const ENV_DOCS_WEBAPP_BUILD_PWA_SHORT_NAME = undefined;\n// build.pwa.start_url\nexport const ENV_DOCS_WEBAPP_BUILD_PWA_START_URL = undefined;\n// build.electron.showDevTools\nexport const ENV_DOCS_WEBAPP_BUILD_ELECTRON_SHOW_DEV_TOOLS = undefined;\n// build.ssr\nexport const ENV_DOCS_WEBAPP_BUILD_SSR = undefined;\n// build.websql\nexport const ENV_DOCS_WEBAPP_BUILD_WEBSQL = undefined;\n// build.prod\nexport const ENV_DOCS_WEBAPP_BUILD_PROD = undefined;\n// build.overrideOutputPath\nexport const ENV_DOCS_WEBAPP_BUILD_OVERRIDE_OUTPUT_PATH = undefined;\n// build.baseHref\nexport const ENV_DOCS_WEBAPP_BUILD_BASE_HREF = undefined;\n// build.watch\nexport const ENV_DOCS_WEBAPP_BUILD_WATCH = undefined;\n// build.genOnlyClientCode\nexport const ENV_DOCS_WEBAPP_BUILD_GEN_ONLY_CLIENT_CODE = undefined;\n// loading.preAngularBootstrap.loader\nexport const ENV_DOCS_WEBAPP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER = undefined;\n// release.cli.minify\nexport const ENV_DOCS_WEBAPP_RELEASE_CLI_MINIFY = undefined;\n// release.cli.includeNodeModules\nexport const ENV_DOCS_WEBAPP_RELEASE_CLI_INCLUDE_NODE_MODULES = undefined;\n// release.cli.uglify\nexport const ENV_DOCS_WEBAPP_RELEASE_CLI_UGLIFY = undefined;\n// release.cli.obscure\nexport const ENV_DOCS_WEBAPP_RELEASE_CLI_OBSCURE = undefined;\n// release.cli.compress\nexport const ENV_DOCS_WEBAPP_RELEASE_CLI_COMPRESS = undefined;\n// release.nodeBackendApp.minify\nexport const ENV_DOCS_WEBAPP_RELEASE_NODE_BACKEND_APP_MINIFY = undefined;\n// release.lib.removeDts\nexport const ENV_DOCS_WEBAPP_RELEASE_LIB_REMOVE_DTS = undefined;\n// release.lib.obscureFileByFile\nexport const ENV_DOCS_WEBAPP_RELEASE_LIB_OBSCURE_FILE_BY_FILE = undefined;\n// release.lib.uglifyFileByFile\nexport const ENV_DOCS_WEBAPP_RELEASE_LIB_UGLIFY_FILE_BY_FILE = undefined;\n// release.lib.includeSourceMaps\nexport const ENV_DOCS_WEBAPP_RELEASE_LIB_INCLUDE_SOURCE_MAPS = undefined;\n// release.lib.compress\nexport const ENV_DOCS_WEBAPP_RELEASE_LIB_COMPRESS = undefined;\n// release.lib.doNotIncludeLibFiles\nexport const ENV_DOCS_WEBAPP_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES = undefined;\n// release.resolvedNewVersion\nexport const ENV_DOCS_WEBAPP_RELEASE_RESOLVED_NEW_VERSION = undefined;\n// release.releaseVersionBumpType\nexport const ENV_DOCS_WEBAPP_RELEASE_RELEASE_VERSION_BUMP_TYPE = undefined;\n// release.envNumber\nexport const ENV_DOCS_WEBAPP_RELEASE_ENV_NUMBER = undefined;\n// release.installLocally\nexport const ENV_DOCS_WEBAPP_RELEASE_INSTALL_LOCALLY = undefined;\n// release.removeReleaseOutputAfterLocalInstall\nexport const ENV_DOCS_WEBAPP_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL = undefined;\n// release.releaseType\nexport const ENV_DOCS_WEBAPP_RELEASE_RELEASE_TYPE = undefined;\n// release.autoReleaseUsingConfig\nexport const ENV_DOCS_WEBAPP_RELEASE_AUTO_RELEASE_USING_CONFIG = undefined;\n// release.autoReleaseTaskName\nexport const ENV_DOCS_WEBAPP_RELEASE_AUTO_RELEASE_TASK_NAME = undefined;\n// release.taonInstanceIp\nexport const ENV_DOCS_WEBAPP_RELEASE_TAON_INSTANCE_IP = undefined;\n// release.skipNpmPublish\nexport const ENV_DOCS_WEBAPP_RELEASE_SKIP_NPM_PUBLISH = undefined;\n// release.skipDeploy\nexport const ENV_DOCS_WEBAPP_RELEASE_SKIP_DEPLOY = undefined;\n// release.skipTagGitPush\nexport const ENV_DOCS_WEBAPP_RELEASE_SKIP_TAG_GIT_PUSH = undefined;\n// release.skipReleaseQuestion\nexport const ENV_DOCS_WEBAPP_RELEASE_SKIP_RELEASE_QUESTION = undefined;\n// release.skipResolvingGitChanges\nexport const ENV_DOCS_WEBAPP_RELEASE_SKIP_RESOLVING_GIT_CHANGES = undefined;\n// release.skipCodeCutting\nexport const ENV_DOCS_WEBAPP_RELEASE_SKIP_CODE_CUTTING = undefined;\n// release.skipBuildingArtifacts\nexport const ENV_DOCS_WEBAPP_RELEASE_SKIP_BUILDING_ARTIFACTS = undefined;\n// release.pushToAllOriginsWhenLocalReleaseBranch\nexport const ENV_DOCS_WEBAPP_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH = undefined;\n// release.useLocalReleaseBranch\nexport const ENV_DOCS_WEBAPP_RELEASE_USE_LOCAL_RELEASE_BRANCH = undefined;\n// copyToManager.beforeCopyHook\nexport const ENV_DOCS_WEBAPP_COPY_TO_MANAGER_BEFORE_COPY_HOOK = undefined;\n// copyToManager.copyToLocations\nexport const ENV_DOCS_WEBAPP_COPY_TO_MANAGER_COPY_TO_LOCATIONS = undefined;\n// copyToManager.copyToProjects\nexport const ENV_DOCS_WEBAPP_COPY_TO_MANAGER_COPY_TO_PROJECTS = undefined;\n// copyToManager.skip\nexport const ENV_DOCS_WEBAPP_COPY_TO_MANAGER_SKIP = undefined;\n// purpose\nexport const ENV_DOCS_WEBAPP_PURPOSE = undefined;\n// recursiveAction\nexport const ENV_DOCS_WEBAPP_RECURSIVE_ACTION = undefined;\n// isCiProcess\nexport const ENV_DOCS_WEBAPP_IS_CI_PROCESS = undefined;\n// docker.additionalContainer\nexport const ENV_DOCS_WEBAPP_DOCKER_ADDITIONAL_CONTAINER = undefined;\n// docker.skipStartInOrder\nexport const ENV_DOCS_WEBAPP_DOCKER_SKIP_START_IN_ORDER = undefined;\n// docker.skipUsingMysqlDb\nexport const ENV_DOCS_WEBAPP_DOCKER_SKIP_USING_MYSQL_DB = undefined;\n// THIS FILE IS GENERATED - DO NOT MODIFY","// THIS FILE IS GENERATED - DO NOT MODIFY\n// build.ssr\nexport const ENV_ELECTRON_APP_BUILD_SSR = false;\n// loading.preAngularBootstrap.background\nexport const ENV_ELECTRON_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND = '#fdebed';\n// loading.preAngularBootstrap.loader.name\nexport const ENV_ELECTRON_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME = 'lds-default';\n// website.domain\nexport const ENV_ELECTRON_APP_WEBSITE_DOMAIN = 'session.example.domain.com';\n// website.title\nexport const ENV_ELECTRON_APP_WEBSITE_TITLE = 'Session';\n// website.useDomain\nexport const ENV_ELECTRON_APP_WEBSITE_USE_DOMAIN = true;\n// release.targetArtifact\nexport const ENV_ELECTRON_APP_RELEASE_TARGET_ARTIFACT = 'electron-app';\n// release.envName\nexport const ENV_ELECTRON_APP_RELEASE_ENV_NAME = '__';\n// container.only\nexport const ENV_ELECTRON_APP_CONTAINER_ONLY = undefined;\n// container.end\nexport const ENV_ELECTRON_APP_CONTAINER_END = undefined;\n// container.start\nexport const ENV_ELECTRON_APP_CONTAINER_START = undefined;\n// container.skipReleased\nexport const ENV_ELECTRON_APP_CONTAINER_SKIP_RELEASED = undefined;\n// container.skip\nexport const ENV_ELECTRON_APP_CONTAINER_SKIP = undefined;\n// init.branding\nexport const ENV_ELECTRON_APP_INIT_BRANDING = undefined;\n// init.struct\nexport const ENV_ELECTRON_APP_INIT_STRUCT = undefined;\n// build.pwa.disableServiceWorker\nexport const ENV_ELECTRON_APP_BUILD_PWA_DISABLE_SERVICE_WORKER = undefined;\n// build.pwa.name\nexport const ENV_ELECTRON_APP_BUILD_PWA_NAME = undefined;\n// build.pwa.short_name\nexport const ENV_ELECTRON_APP_BUILD_PWA_SHORT_NAME = undefined;\n// build.pwa.start_url\nexport const ENV_ELECTRON_APP_BUILD_PWA_START_URL = undefined;\n// build.electron.showDevTools\nexport const ENV_ELECTRON_APP_BUILD_ELECTRON_SHOW_DEV_TOOLS = undefined;\n// build.websql\nexport const ENV_ELECTRON_APP_BUILD_WEBSQL = undefined;\n// build.prod\nexport const ENV_ELECTRON_APP_BUILD_PROD = undefined;\n// build.overrideOutputPath\nexport const ENV_ELECTRON_APP_BUILD_OVERRIDE_OUTPUT_PATH = undefined;\n// build.baseHref\nexport const ENV_ELECTRON_APP_BUILD_BASE_HREF = undefined;\n// build.watch\nexport const ENV_ELECTRON_APP_BUILD_WATCH = undefined;\n// build.genOnlyClientCode\nexport const ENV_ELECTRON_APP_BUILD_GEN_ONLY_CLIENT_CODE = undefined;\n// loading.preAngularBootstrap.loader\nexport const ENV_ELECTRON_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER = undefined;\n// release.cli.minify\nexport const ENV_ELECTRON_APP_RELEASE_CLI_MINIFY = undefined;\n// release.cli.includeNodeModules\nexport const ENV_ELECTRON_APP_RELEASE_CLI_INCLUDE_NODE_MODULES = undefined;\n// release.cli.uglify\nexport const ENV_ELECTRON_APP_RELEASE_CLI_UGLIFY = undefined;\n// release.cli.obscure\nexport const ENV_ELECTRON_APP_RELEASE_CLI_OBSCURE = undefined;\n// release.cli.compress\nexport const ENV_ELECTRON_APP_RELEASE_CLI_COMPRESS = undefined;\n// release.nodeBackendApp.minify\nexport const ENV_ELECTRON_APP_RELEASE_NODE_BACKEND_APP_MINIFY = undefined;\n// release.lib.removeDts\nexport const ENV_ELECTRON_APP_RELEASE_LIB_REMOVE_DTS = undefined;\n// release.lib.obscureFileByFile\nexport const ENV_ELECTRON_APP_RELEASE_LIB_OBSCURE_FILE_BY_FILE = undefined;\n// release.lib.uglifyFileByFile\nexport const ENV_ELECTRON_APP_RELEASE_LIB_UGLIFY_FILE_BY_FILE = undefined;\n// release.lib.includeSourceMaps\nexport const ENV_ELECTRON_APP_RELEASE_LIB_INCLUDE_SOURCE_MAPS = undefined;\n// release.lib.compress\nexport const ENV_ELECTRON_APP_RELEASE_LIB_COMPRESS = undefined;\n// release.lib.doNotIncludeLibFiles\nexport const ENV_ELECTRON_APP_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES = undefined;\n// release.resolvedNewVersion\nexport const ENV_ELECTRON_APP_RELEASE_RESOLVED_NEW_VERSION = undefined;\n// release.releaseVersionBumpType\nexport const ENV_ELECTRON_APP_RELEASE_RELEASE_VERSION_BUMP_TYPE = undefined;\n// release.envNumber\nexport const ENV_ELECTRON_APP_RELEASE_ENV_NUMBER = undefined;\n// release.installLocally\nexport const ENV_ELECTRON_APP_RELEASE_INSTALL_LOCALLY = undefined;\n// release.removeReleaseOutputAfterLocalInstall\nexport const ENV_ELECTRON_APP_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL = undefined;\n// release.releaseType\nexport const ENV_ELECTRON_APP_RELEASE_RELEASE_TYPE = undefined;\n// release.autoReleaseUsingConfig\nexport const ENV_ELECTRON_APP_RELEASE_AUTO_RELEASE_USING_CONFIG = undefined;\n// release.autoReleaseTaskName\nexport const ENV_ELECTRON_APP_RELEASE_AUTO_RELEASE_TASK_NAME = undefined;\n// release.taonInstanceIp\nexport const ENV_ELECTRON_APP_RELEASE_TAON_INSTANCE_IP = undefined;\n// release.skipNpmPublish\nexport const ENV_ELECTRON_APP_RELEASE_SKIP_NPM_PUBLISH = undefined;\n// release.skipDeploy\nexport const ENV_ELECTRON_APP_RELEASE_SKIP_DEPLOY = undefined;\n// release.skipTagGitPush\nexport const ENV_ELECTRON_APP_RELEASE_SKIP_TAG_GIT_PUSH = undefined;\n// release.skipReleaseQuestion\nexport const ENV_ELECTRON_APP_RELEASE_SKIP_RELEASE_QUESTION = undefined;\n// release.skipResolvingGitChanges\nexport const ENV_ELECTRON_APP_RELEASE_SKIP_RESOLVING_GIT_CHANGES = undefined;\n// release.skipCodeCutting\nexport const ENV_ELECTRON_APP_RELEASE_SKIP_CODE_CUTTING = undefined;\n// release.skipBuildingArtifacts\nexport const ENV_ELECTRON_APP_RELEASE_SKIP_BUILDING_ARTIFACTS = undefined;\n// release.pushToAllOriginsWhenLocalReleaseBranch\nexport const ENV_ELECTRON_APP_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH = undefined;\n// release.useLocalReleaseBranch\nexport const ENV_ELECTRON_APP_RELEASE_USE_LOCAL_RELEASE_BRANCH = undefined;\n// copyToManager.beforeCopyHook\nexport const ENV_ELECTRON_APP_COPY_TO_MANAGER_BEFORE_COPY_HOOK = undefined;\n// copyToManager.copyToLocations\nexport const ENV_ELECTRON_APP_COPY_TO_MANAGER_COPY_TO_LOCATIONS = undefined;\n// copyToManager.copyToProjects\nexport const ENV_ELECTRON_APP_COPY_TO_MANAGER_COPY_TO_PROJECTS = undefined;\n// copyToManager.skip\nexport const ENV_ELECTRON_APP_COPY_TO_MANAGER_SKIP = undefined;\n// purpose\nexport const ENV_ELECTRON_APP_PURPOSE = undefined;\n// recursiveAction\nexport const ENV_ELECTRON_APP_RECURSIVE_ACTION = undefined;\n// isCiProcess\nexport const ENV_ELECTRON_APP_IS_CI_PROCESS = undefined;\n// docker.additionalContainer\nexport const ENV_ELECTRON_APP_DOCKER_ADDITIONAL_CONTAINER = undefined;\n// docker.skipStartInOrder\nexport const ENV_ELECTRON_APP_DOCKER_SKIP_START_IN_ORDER = undefined;\n// docker.skipUsingMysqlDb\nexport const ENV_ELECTRON_APP_DOCKER_SKIP_USING_MYSQL_DB = undefined;\n// THIS FILE IS GENERATED - DO NOT MODIFY","// THIS FILE IS GENERATED - DO NOT MODIFY\n// loading.preAngularBootstrap.background\nexport const ENV_MOBILE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND = '#fdebed';\n// loading.preAngularBootstrap.loader.name\nexport const ENV_MOBILE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME = 'lds-default';\n// website.domain\nexport const ENV_MOBILE_APP_WEBSITE_DOMAIN = 'session.example.domain.com';\n// website.title\nexport const ENV_MOBILE_APP_WEBSITE_TITLE = 'Session';\n// website.useDomain\nexport const ENV_MOBILE_APP_WEBSITE_USE_DOMAIN = true;\n// release.targetArtifact\nexport const ENV_MOBILE_APP_RELEASE_TARGET_ARTIFACT = 'mobile-app';\n// release.envName\nexport const ENV_MOBILE_APP_RELEASE_ENV_NAME = '__';\n// container.only\nexport const ENV_MOBILE_APP_CONTAINER_ONLY = undefined;\n// container.end\nexport const ENV_MOBILE_APP_CONTAINER_END = undefined;\n// container.start\nexport const ENV_MOBILE_APP_CONTAINER_START = undefined;\n// container.skipReleased\nexport const ENV_MOBILE_APP_CONTAINER_SKIP_RELEASED = undefined;\n// container.skip\nexport const ENV_MOBILE_APP_CONTAINER_SKIP = undefined;\n// init.branding\nexport const ENV_MOBILE_APP_INIT_BRANDING = undefined;\n// init.struct\nexport const ENV_MOBILE_APP_INIT_STRUCT = undefined;\n// build.pwa.disableServiceWorker\nexport const ENV_MOBILE_APP_BUILD_PWA_DISABLE_SERVICE_WORKER = undefined;\n// build.pwa.name\nexport const ENV_MOBILE_APP_BUILD_PWA_NAME = undefined;\n// build.pwa.short_name\nexport const ENV_MOBILE_APP_BUILD_PWA_SHORT_NAME = undefined;\n// build.pwa.start_url\nexport const ENV_MOBILE_APP_BUILD_PWA_START_URL = undefined;\n// build.electron.showDevTools\nexport const ENV_MOBILE_APP_BUILD_ELECTRON_SHOW_DEV_TOOLS = undefined;\n// build.ssr\nexport const ENV_MOBILE_APP_BUILD_SSR = undefined;\n// build.websql\nexport const ENV_MOBILE_APP_BUILD_WEBSQL = undefined;\n// build.prod\nexport const ENV_MOBILE_APP_BUILD_PROD = undefined;\n// build.overrideOutputPath\nexport const ENV_MOBILE_APP_BUILD_OVERRIDE_OUTPUT_PATH = undefined;\n// build.baseHref\nexport const ENV_MOBILE_APP_BUILD_BASE_HREF = undefined;\n// build.watch\nexport const ENV_MOBILE_APP_BUILD_WATCH = undefined;\n// build.genOnlyClientCode\nexport const ENV_MOBILE_APP_BUILD_GEN_ONLY_CLIENT_CODE = undefined;\n// loading.preAngularBootstrap.loader\nexport const ENV_MOBILE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER = undefined;\n// release.cli.minify\nexport const ENV_MOBILE_APP_RELEASE_CLI_MINIFY = undefined;\n// release.cli.includeNodeModules\nexport const ENV_MOBILE_APP_RELEASE_CLI_INCLUDE_NODE_MODULES = undefined;\n// release.cli.uglify\nexport const ENV_MOBILE_APP_RELEASE_CLI_UGLIFY = undefined;\n// release.cli.obscure\nexport const ENV_MOBILE_APP_RELEASE_CLI_OBSCURE = undefined;\n// release.cli.compress\nexport const ENV_MOBILE_APP_RELEASE_CLI_COMPRESS = undefined;\n// release.nodeBackendApp.minify\nexport const ENV_MOBILE_APP_RELEASE_NODE_BACKEND_APP_MINIFY = undefined;\n// release.lib.removeDts\nexport const ENV_MOBILE_APP_RELEASE_LIB_REMOVE_DTS = undefined;\n// release.lib.obscureFileByFile\nexport const ENV_MOBILE_APP_RELEASE_LIB_OBSCURE_FILE_BY_FILE = undefined;\n// release.lib.uglifyFileByFile\nexport const ENV_MOBILE_APP_RELEASE_LIB_UGLIFY_FILE_BY_FILE = undefined;\n// release.lib.includeSourceMaps\nexport const ENV_MOBILE_APP_RELEASE_LIB_INCLUDE_SOURCE_MAPS = undefined;\n// release.lib.compress\nexport const ENV_MOBILE_APP_RELEASE_LIB_COMPRESS = undefined;\n// release.lib.doNotIncludeLibFiles\nexport const ENV_MOBILE_APP_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES = undefined;\n// release.resolvedNewVersion\nexport const ENV_MOBILE_APP_RELEASE_RESOLVED_NEW_VERSION = undefined;\n// release.releaseVersionBumpType\nexport const ENV_MOBILE_APP_RELEASE_RELEASE_VERSION_BUMP_TYPE = undefined;\n// release.envNumber\nexport const ENV_MOBILE_APP_RELEASE_ENV_NUMBER = undefined;\n// release.installLocally\nexport const ENV_MOBILE_APP_RELEASE_INSTALL_LOCALLY = undefined;\n// release.removeReleaseOutputAfterLocalInstall\nexport const ENV_MOBILE_APP_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL = undefined;\n// release.releaseType\nexport const ENV_MOBILE_APP_RELEASE_RELEASE_TYPE = undefined;\n// release.autoReleaseUsingConfig\nexport const ENV_MOBILE_APP_RELEASE_AUTO_RELEASE_USING_CONFIG = undefined;\n// release.autoReleaseTaskName\nexport const ENV_MOBILE_APP_RELEASE_AUTO_RELEASE_TASK_NAME = undefined;\n// release.taonInstanceIp\nexport const ENV_MOBILE_APP_RELEASE_TAON_INSTANCE_IP = undefined;\n// release.skipNpmPublish\nexport const ENV_MOBILE_APP_RELEASE_SKIP_NPM_PUBLISH = undefined;\n// release.skipDeploy\nexport const ENV_MOBILE_APP_RELEASE_SKIP_DEPLOY = undefined;\n// release.skipTagGitPush\nexport const ENV_MOBILE_APP_RELEASE_SKIP_TAG_GIT_PUSH = undefined;\n// release.skipReleaseQuestion\nexport const ENV_MOBILE_APP_RELEASE_SKIP_RELEASE_QUESTION = undefined;\n// release.skipResolvingGitChanges\nexport const ENV_MOBILE_APP_RELEASE_SKIP_RESOLVING_GIT_CHANGES = undefined;\n// release.skipCodeCutting\nexport const ENV_MOBILE_APP_RELEASE_SKIP_CODE_CUTTING = undefined;\n// release.skipBuildingArtifacts\nexport const ENV_MOBILE_APP_RELEASE_SKIP_BUILDING_ARTIFACTS = undefined;\n// release.pushToAllOriginsWhenLocalReleaseBranch\nexport const ENV_MOBILE_APP_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH = undefined;\n// release.useLocalReleaseBranch\nexport const ENV_MOBILE_APP_RELEASE_USE_LOCAL_RELEASE_BRANCH = undefined;\n// copyToManager.beforeCopyHook\nexport const ENV_MOBILE_APP_COPY_TO_MANAGER_BEFORE_COPY_HOOK = undefined;\n// copyToManager.copyToLocations\nexport const ENV_MOBILE_APP_COPY_TO_MANAGER_COPY_TO_LOCATIONS = undefined;\n// copyToManager.copyToProjects\nexport const ENV_MOBILE_APP_COPY_TO_MANAGER_COPY_TO_PROJECTS = undefined;\n// copyToManager.skip\nexport const ENV_MOBILE_APP_COPY_TO_MANAGER_SKIP = undefined;\n// purpose\nexport const ENV_MOBILE_APP_PURPOSE = undefined;\n// recursiveAction\nexport const ENV_MOBILE_APP_RECURSIVE_ACTION = undefined;\n// isCiProcess\nexport const ENV_MOBILE_APP_IS_CI_PROCESS = undefined;\n// docker.additionalContainer\nexport const ENV_MOBILE_APP_DOCKER_ADDITIONAL_CONTAINER = undefined;\n// docker.skipStartInOrder\nexport const ENV_MOBILE_APP_DOCKER_SKIP_START_IN_ORDER = undefined;\n// docker.skipUsingMysqlDb\nexport const ENV_MOBILE_APP_DOCKER_SKIP_USING_MYSQL_DB = undefined;\n// THIS FILE IS GENERATED - DO NOT MODIFY","// THIS FILE IS GENERATED - DO NOT MODIFY\n// loading.preAngularBootstrap.background\nexport const ENV_NPM_LIB_AND_CLI_TOOL_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND = '#fdebed';\n// loading.preAngularBootstrap.loader.name\nexport const ENV_NPM_LIB_AND_CLI_TOOL_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME = 'lds-default';\n// website.domain\nexport const ENV_NPM_LIB_AND_CLI_TOOL_WEBSITE_DOMAIN = 'session.example.domain.com';\n// website.title\nexport const ENV_NPM_LIB_AND_CLI_TOOL_WEBSITE_TITLE = 'Session';\n// website.useDomain\nexport const ENV_NPM_LIB_AND_CLI_TOOL_WEBSITE_USE_DOMAIN = true;\n// release.targetArtifact\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_TARGET_ARTIFACT = 'npm-lib-and-cli-tool';\n// release.envName\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_ENV_NAME = '__';\n// container.only\nexport const ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_ONLY = undefined;\n// container.end\nexport const ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_END = undefined;\n// container.start\nexport const ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_START = undefined;\n// container.skipReleased\nexport const ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_SKIP_RELEASED = undefined;\n// container.skip\nexport const ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_SKIP = undefined;\n// init.branding\nexport const ENV_NPM_LIB_AND_CLI_TOOL_INIT_BRANDING = undefined;\n// init.struct\nexport const ENV_NPM_LIB_AND_CLI_TOOL_INIT_STRUCT = undefined;\n// build.pwa.disableServiceWorker\nexport const ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PWA_DISABLE_SERVICE_WORKER = undefined;\n// build.pwa.name\nexport const ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PWA_NAME = undefined;\n// build.pwa.short_name\nexport const ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PWA_SHORT_NAME = undefined;\n// build.pwa.start_url\nexport const ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PWA_START_URL = undefined;\n// build.electron.showDevTools\nexport const ENV_NPM_LIB_AND_CLI_TOOL_BUILD_ELECTRON_SHOW_DEV_TOOLS = undefined;\n// build.ssr\nexport const ENV_NPM_LIB_AND_CLI_TOOL_BUILD_SSR = undefined;\n// build.websql\nexport const ENV_NPM_LIB_AND_CLI_TOOL_BUILD_WEBSQL = undefined;\n// build.prod\nexport const ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PROD = undefined;\n// build.overrideOutputPath\nexport const ENV_NPM_LIB_AND_CLI_TOOL_BUILD_OVERRIDE_OUTPUT_PATH = undefined;\n// build.baseHref\nexport const ENV_NPM_LIB_AND_CLI_TOOL_BUILD_BASE_HREF = undefined;\n// build.watch\nexport const ENV_NPM_LIB_AND_CLI_TOOL_BUILD_WATCH = undefined;\n// build.genOnlyClientCode\nexport const ENV_NPM_LIB_AND_CLI_TOOL_BUILD_GEN_ONLY_CLIENT_CODE = undefined;\n// loading.preAngularBootstrap.loader\nexport const ENV_NPM_LIB_AND_CLI_TOOL_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER = undefined;\n// release.cli.minify\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_MINIFY = undefined;\n// release.cli.includeNodeModules\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_INCLUDE_NODE_MODULES = undefined;\n// release.cli.uglify\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_UGLIFY = undefined;\n// release.cli.obscure\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_OBSCURE = undefined;\n// release.cli.compress\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_COMPRESS = undefined;\n// release.nodeBackendApp.minify\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_NODE_BACKEND_APP_MINIFY = undefined;\n// release.lib.removeDts\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_REMOVE_DTS = undefined;\n// release.lib.obscureFileByFile\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_OBSCURE_FILE_BY_FILE = undefined;\n// release.lib.uglifyFileByFile\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_UGLIFY_FILE_BY_FILE = undefined;\n// release.lib.includeSourceMaps\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_INCLUDE_SOURCE_MAPS = undefined;\n// release.lib.compress\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_COMPRESS = undefined;\n// release.lib.doNotIncludeLibFiles\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES = undefined;\n// release.resolvedNewVersion\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_RESOLVED_NEW_VERSION = undefined;\n// release.releaseVersionBumpType\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_RELEASE_VERSION_BUMP_TYPE = undefined;\n// release.envNumber\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_ENV_NUMBER = undefined;\n// release.installLocally\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_INSTALL_LOCALLY = undefined;\n// release.removeReleaseOutputAfterLocalInstall\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL = undefined;\n// release.releaseType\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_RELEASE_TYPE = undefined;\n// release.autoReleaseUsingConfig\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_AUTO_RELEASE_USING_CONFIG = undefined;\n// release.autoReleaseTaskName\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_AUTO_RELEASE_TASK_NAME = undefined;\n// release.taonInstanceIp\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_TAON_INSTANCE_IP = undefined;\n// release.skipNpmPublish\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_NPM_PUBLISH = undefined;\n// release.skipDeploy\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_DEPLOY = undefined;\n// release.skipTagGitPush\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_TAG_GIT_PUSH = undefined;\n// release.skipReleaseQuestion\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_RELEASE_QUESTION = undefined;\n// release.skipResolvingGitChanges\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_RESOLVING_GIT_CHANGES = undefined;\n// release.skipCodeCutting\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_CODE_CUTTING = undefined;\n// release.skipBuildingArtifacts\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_BUILDING_ARTIFACTS = undefined;\n// release.pushToAllOriginsWhenLocalReleaseBranch\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH = undefined;\n// release.useLocalReleaseBranch\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_USE_LOCAL_RELEASE_BRANCH = undefined;\n// copyToManager.beforeCopyHook\nexport const ENV_NPM_LIB_AND_CLI_TOOL_COPY_TO_MANAGER_BEFORE_COPY_HOOK = undefined;\n// copyToManager.copyToLocations\nexport const ENV_NPM_LIB_AND_CLI_TOOL_COPY_TO_MANAGER_COPY_TO_LOCATIONS = undefined;\n// copyToManager.copyToProjects\nexport const ENV_NPM_LIB_AND_CLI_TOOL_COPY_TO_MANAGER_COPY_TO_PROJECTS = undefined;\n// copyToManager.skip\nexport const ENV_NPM_LIB_AND_CLI_TOOL_COPY_TO_MANAGER_SKIP = undefined;\n// purpose\nexport const ENV_NPM_LIB_AND_CLI_TOOL_PURPOSE = undefined;\n// recursiveAction\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RECURSIVE_ACTION = undefined;\n// isCiProcess\nexport const ENV_NPM_LIB_AND_CLI_TOOL_IS_CI_PROCESS = undefined;\n// docker.additionalContainer\nexport const ENV_NPM_LIB_AND_CLI_TOOL_DOCKER_ADDITIONAL_CONTAINER = undefined;\n// docker.skipStartInOrder\nexport const ENV_NPM_LIB_AND_CLI_TOOL_DOCKER_SKIP_START_IN_ORDER = undefined;\n// docker.skipUsingMysqlDb\nexport const ENV_NPM_LIB_AND_CLI_TOOL_DOCKER_SKIP_USING_MYSQL_DB = undefined;\n// THIS FILE IS GENERATED - DO NOT MODIFY","// THIS FILE IS GENERATED - DO NOT MODIFY\n// loading.preAngularBootstrap.background\nexport const ENV_VSCODE_PLUGIN_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND = '#fdebed';\n// loading.preAngularBootstrap.loader.name\nexport const ENV_VSCODE_PLUGIN_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME = 'lds-default';\n// website.domain\nexport const ENV_VSCODE_PLUGIN_WEBSITE_DOMAIN = 'session.example.domain.com';\n// website.title\nexport const ENV_VSCODE_PLUGIN_WEBSITE_TITLE = 'Session';\n// website.useDomain\nexport const ENV_VSCODE_PLUGIN_WEBSITE_USE_DOMAIN = true;\n// release.targetArtifact\nexport const ENV_VSCODE_PLUGIN_RELEASE_TARGET_ARTIFACT = 'vscode-plugin';\n// release.envName\nexport const ENV_VSCODE_PLUGIN_RELEASE_ENV_NAME = '__';\n// container.only\nexport const ENV_VSCODE_PLUGIN_CONTAINER_ONLY = undefined;\n// container.end\nexport const ENV_VSCODE_PLUGIN_CONTAINER_END = undefined;\n// container.start\nexport const ENV_VSCODE_PLUGIN_CONTAINER_START = undefined;\n// container.skipReleased\nexport const ENV_VSCODE_PLUGIN_CONTAINER_SKIP_RELEASED = undefined;\n// container.skip\nexport const ENV_VSCODE_PLUGIN_CONTAINER_SKIP = undefined;\n// init.branding\nexport const ENV_VSCODE_PLUGIN_INIT_BRANDING = undefined;\n// init.struct\nexport const ENV_VSCODE_PLUGIN_INIT_STRUCT = undefined;\n// build.pwa.disableServiceWorker\nexport const ENV_VSCODE_PLUGIN_BUILD_PWA_DISABLE_SERVICE_WORKER = undefined;\n// build.pwa.name\nexport const ENV_VSCODE_PLUGIN_BUILD_PWA_NAME = undefined;\n// build.pwa.short_name\nexport const ENV_VSCODE_PLUGIN_BUILD_PWA_SHORT_NAME = undefined;\n// build.pwa.start_url\nexport const ENV_VSCODE_PLUGIN_BUILD_PWA_START_URL = undefined;\n// build.electron.showDevTools\nexport const ENV_VSCODE_PLUGIN_BUILD_ELECTRON_SHOW_DEV_TOOLS = undefined;\n// build.ssr\nexport const ENV_VSCODE_PLUGIN_BUILD_SSR = undefined;\n// build.websql\nexport const ENV_VSCODE_PLUGIN_BUILD_WEBSQL = undefined;\n// build.prod\nexport const ENV_VSCODE_PLUGIN_BUILD_PROD = undefined;\n// build.overrideOutputPath\nexport const ENV_VSCODE_PLUGIN_BUILD_OVERRIDE_OUTPUT_PATH = undefined;\n// build.baseHref\nexport const ENV_VSCODE_PLUGIN_BUILD_BASE_HREF = undefined;\n// build.watch\nexport const ENV_VSCODE_PLUGIN_BUILD_WATCH = undefined;\n// build.genOnlyClientCode\nexport const ENV_VSCODE_PLUGIN_BUILD_GEN_ONLY_CLIENT_CODE = undefined;\n// loading.preAngularBootstrap.loader\nexport const ENV_VSCODE_PLUGIN_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER = undefined;\n// release.cli.minify\nexport const ENV_VSCODE_PLUGIN_RELEASE_CLI_MINIFY = undefined;\n// release.cli.includeNodeModules\nexport const ENV_VSCODE_PLUGIN_RELEASE_CLI_INCLUDE_NODE_MODULES = undefined;\n// release.cli.uglify\nexport const ENV_VSCODE_PLUGIN_RELEASE_CLI_UGLIFY = undefined;\n// release.cli.obscure\nexport const ENV_VSCODE_PLUGIN_RELEASE_CLI_OBSCURE = undefined;\n// release.cli.compress\nexport const ENV_VSCODE_PLUGIN_RELEASE_CLI_COMPRESS = undefined;\n// release.nodeBackendApp.minify\nexport const ENV_VSCODE_PLUGIN_RELEASE_NODE_BACKEND_APP_MINIFY = undefined;\n// release.lib.removeDts\nexport const ENV_VSCODE_PLUGIN_RELEASE_LIB_REMOVE_DTS = undefined;\n// release.lib.obscureFileByFile\nexport const ENV_VSCODE_PLUGIN_RELEASE_LIB_OBSCURE_FILE_BY_FILE = undefined;\n// release.lib.uglifyFileByFile\nexport const ENV_VSCODE_PLUGIN_RELEASE_LIB_UGLIFY_FILE_BY_FILE = undefined;\n// release.lib.includeSourceMaps\nexport const ENV_VSCODE_PLUGIN_RELEASE_LIB_INCLUDE_SOURCE_MAPS = undefined;\n// release.lib.compress\nexport const ENV_VSCODE_PLUGIN_RELEASE_LIB_COMPRESS = undefined;\n// release.lib.doNotIncludeLibFiles\nexport const ENV_VSCODE_PLUGIN_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES = undefined;\n// release.resolvedNewVersion\nexport const ENV_VSCODE_PLUGIN_RELEASE_RESOLVED_NEW_VERSION = undefined;\n// release.releaseVersionBumpType\nexport const ENV_VSCODE_PLUGIN_RELEASE_RELEASE_VERSION_BUMP_TYPE = undefined;\n// release.envNumber\nexport const ENV_VSCODE_PLUGIN_RELEASE_ENV_NUMBER = undefined;\n// release.installLocally\nexport const ENV_VSCODE_PLUGIN_RELEASE_INSTALL_LOCALLY = undefined;\n// release.removeReleaseOutputAfterLocalInstall\nexport const ENV_VSCODE_PLUGIN_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL = undefined;\n// release.releaseType\nexport const ENV_VSCODE_PLUGIN_RELEASE_RELEASE_TYPE = undefined;\n// release.autoReleaseUsingConfig\nexport const ENV_VSCODE_PLUGIN_RELEASE_AUTO_RELEASE_USING_CONFIG = undefined;\n// release.autoReleaseTaskName\nexport const ENV_VSCODE_PLUGIN_RELEASE_AUTO_RELEASE_TASK_NAME = undefined;\n// release.taonInstanceIp\nexport const ENV_VSCODE_PLUGIN_RELEASE_TAON_INSTANCE_IP = undefined;\n// release.skipNpmPublish\nexport const ENV_VSCODE_PLUGIN_RELEASE_SKIP_NPM_PUBLISH = undefined;\n// release.skipDeploy\nexport const ENV_VSCODE_PLUGIN_RELEASE_SKIP_DEPLOY = undefined;\n// release.skipTagGitPush\nexport const ENV_VSCODE_PLUGIN_RELEASE_SKIP_TAG_GIT_PUSH = undefined;\n// release.skipReleaseQuestion\nexport const ENV_VSCODE_PLUGIN_RELEASE_SKIP_RELEASE_QUESTION = undefined;\n// release.skipResolvingGitChanges\nexport const ENV_VSCODE_PLUGIN_RELEASE_SKIP_RESOLVING_GIT_CHANGES = undefined;\n// release.skipCodeCutting\nexport const ENV_VSCODE_PLUGIN_RELEASE_SKIP_CODE_CUTTING = undefined;\n// release.skipBuildingArtifacts\nexport const ENV_VSCODE_PLUGIN_RELEASE_SKIP_BUILDING_ARTIFACTS = undefined;\n// release.pushToAllOriginsWhenLocalReleaseBranch\nexport const ENV_VSCODE_PLUGIN_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH = undefined;\n// release.useLocalReleaseBranch\nexport const ENV_VSCODE_PLUGIN_RELEASE_USE_LOCAL_RELEASE_BRANCH = undefined;\n// copyToManager.beforeCopyHook\nexport const ENV_VSCODE_PLUGIN_COPY_TO_MANAGER_BEFORE_COPY_HOOK = undefined;\n// copyToManager.copyToLocations\nexport const ENV_VSCODE_PLUGIN_COPY_TO_MANAGER_COPY_TO_LOCATIONS = undefined;\n// copyToManager.copyToProjects\nexport const ENV_VSCODE_PLUGIN_COPY_TO_MANAGER_COPY_TO_PROJECTS = undefined;\n// copyToManager.skip\nexport const ENV_VSCODE_PLUGIN_COPY_TO_MANAGER_SKIP = undefined;\n// purpose\nexport const ENV_VSCODE_PLUGIN_PURPOSE = undefined;\n// recursiveAction\nexport const ENV_VSCODE_PLUGIN_RECURSIVE_ACTION = undefined;\n// isCiProcess\nexport const ENV_VSCODE_PLUGIN_IS_CI_PROCESS = undefined;\n// docker.additionalContainer\nexport const ENV_VSCODE_PLUGIN_DOCKER_ADDITIONAL_CONTAINER = undefined;\n// docker.skipStartInOrder\nexport const ENV_VSCODE_PLUGIN_DOCKER_SKIP_START_IN_ORDER = undefined;\n// docker.skipUsingMysqlDb\nexport const ENV_VSCODE_PLUGIN_DOCKER_SKIP_USING_MYSQL_DB = undefined;\n// THIS FILE IS GENERATED - DO NOT MODIFY","// THIS FILE IS GENERATED - DO NOT MODIFY\n/**\n * Autogenerated by current cli tool\n */\nexport const BUILD_FRAMEWORK_CLI_NAME = 'tnp';\n/**\n * This value can be change in taon.jsonc (appId)\n */\nexport const APP_ID = 'com.domain.example.session';\n/**\n * Autogenerated by current cli tool\n */\nexport const BUILD_BASE_HREF = '';\n/**\n * This value can be change in taon.jsonc (overrideNpmName)\n */\nexport const PROJECT_NPM_NAME = '@taon-dev/session';\n/**\n * Taon version from you project taon.json\n */\nexport const CURRENT_PACKAGE_TAON_VERSION = 'v21';\n/**\n * Autogenerated by current cli tool. Use *tnp release* to bump version.\n */\nexport const CURRENT_PACKAGE_VERSION = '21.0.216';\n\n\n\n\n\n// THIS FILE IS GENERATED - DO NOT MODIFY\n ","export function myOrgProj() {\n\n}\n","//#region tnp-helpers cli template\n// import { Helpers, BaseCommandLineFeature } from 'tnp-helpers/src';\n// import { BaseProject, BaseStartConfig } from 'tnp-helpers/src'; // @backend\n\n// class $Version extends BaseCommandLineFeature<{}> {\n// public _() {\n// console.log(`Hello world from cli`);\n// this._exit();\n// }\n// }\n//#endregion\n\n/**\n *\n * @param argsv process.argsv\n * @param filename needed if you want ipc communicaiton\n */\nexport async function startCli(argsv: string[], filename: string): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n}\n\nexport default startCli;\n","//#region imports\nimport { Taon, TaonBaseProvider, TaonProvider } from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n//#endregion\n\n@TaonProvider({\n className: 'TaonSessionProvider',\n})\nexport class TaonSessionProvider extends TaonBaseProvider {\n ACCESS_TOKEN_SECRET = 'access-secret';\n\n REFRESH_TOKEN_SECRET = 'refresh-secret';\n\n ACCESS_TOKEN_EXPIRES = '15m';\n\n REFRESH_TOKEN_EXPIRES_SECONDS = 60 * 60 * 24 * 7; // 7 days\n}\n","//#region imports\n\nimport type express from 'express';\n/* */ \nimport { TaonBaseKvRepository, TaonRepository } from 'taon/websql';\n\nimport { TaonSessionProvider } from './taon-session.provider';\n\n//#endregion\n\n@TaonRepository({\n className: 'TaonSessionKvRepository',\n})\nexport class TaonSessionKvRepository extends TaonBaseKvRepository {\n taonSessionProvider = this.injectProvider(TaonSessionProvider);\n\n public createAccessToken(userId: string): string {\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n public createRefreshToken(userId: string): string {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n public setAuthCookies(\n res: express.Response,\n accessToken: string,\n refreshToken: string,\n ): void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n public clearAuthCookies(res: express.Response): void {\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n public getTokenFromRequest(req: express.Request): string | null {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n}\n","//#region imports\nimport {\n DateTimeColumn,\n String100Column,\n String45Column,\n String500Column,\n StringColumn,\n Taon,\n TaonBaseAbstractEntity,\n TaonEntity,\n} from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n\n//#endregion\n\n@TaonEntity({\n className: 'TaonSessionUser',\n createTable: true,\n})\nexport class TaonSessionUser extends TaonBaseAbstractEntity<TaonSessionUser> {\n //#region @websql\n @String45Column()\n //#endregion\n email?: string;\n\n //#region @websql\n @String500Column()\n //#endregion\n password?: string;\n}\n","//#region imports\nimport { TaonBaseRepository, TaonRepository } from 'taon/websql';\nimport { Raw } from 'taon-typeorm/websql';\n\nimport { TaonSessionUser } from './taon-session-user.entity';\n//#endregion\n\n@TaonRepository({\n className: 'TaonSessionUserRepository',\n})\nexport class TaonSessionUserRepository extends TaonBaseRepository<TaonSessionUser> {\n entityClassResolveFn: () => typeof TaonSessionUser = () => TaonSessionUser;\n}\n","//#region imports\n/* */ \nimport {\n Taon,\n TaonAdditionalMiddlewareMethodInfo,\n TaonBaseMiddleware,\n TaonMiddleware,\n TaonServerMiddlewareInterceptOptions,\n} from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n\nimport { TaonSessionKvRepository } from './taon-session-kv.repository';\nimport { TaonSessionProvider } from './taon-session.provider';\n//#endregion\n\n@TaonMiddleware({\n className: 'TaonSessionMiddleware',\n})\nexport class TaonSessionMiddleware extends TaonBaseMiddleware {\n taonSessionKvRepository = this.injectKvRepository(TaonSessionKvRepository);\n\n taonSessionProvider = this.injectProvider(TaonSessionProvider);\n\n interceptServerMethod(\n { req, res, next }: TaonServerMiddlewareInterceptOptions,\n {\n methodName,\n expressPath,\n httpRequestType,\n }: TaonAdditionalMiddlewareMethodInfo,\n ): Promise<void> | void {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n}\n","export namespace TaonSession {\n export const DEFAULT_PASSWORD = '1234';\n export const DEFAULT_EMAIL = 'test@test.com';\n export interface TaonLoginData {\n email?: string;\n password?: string;\n }\n}\n","//#region imports\n/* */ \nimport {\n Taon,\n ClassHelpers,\n TaonController,\n TaonBaseCrudController,\n Query,\n GET,\n TaonBaseController,\n Body,\n POST,\n} from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n\nimport { TaonSessionKvRepository } from './taon-session-kv.repository';\nimport { TaonSessionUser } from './taon-session-user.entity';\nimport { TaonSessionUserRepository } from './taon-session-user.repository';\nimport { TaonSessionMiddleware } from './taon-session.middleware';\nimport { TaonSession } from './taon-session.models';\nimport { TaonSessionProvider } from './taon-session.provider';\n//#endregion\n\n@TaonController({\n className: 'TaonSessionController',\n})\nexport class TaonSessionController extends TaonBaseController {\n taonSessionKvRepository = this.injectKvRepository(TaonSessionKvRepository);\n\n taonSessionProvider = this.injectProvider(TaonSessionProvider);\n\n taonSessionUserRepository = this.injectCustomRepo(TaonSessionUserRepository);\n\n //#region login\n @POST()\n login(@Body() data: TaonSession.TaonLoginData): Taon.Response<boolean> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region refresh\n @POST()\n refresh(): Taon.Response<boolean> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region logout\n @POST()\n logout(): Taon.Response<boolean> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region me\n @GET({\n middlewares: ({ parentMiddlewares }) => ({\n TaonSessionMiddleware,\n ...parentMiddlewares,\n }),\n })\n me(): Taon.Response<string> {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n}\n","//#region imports\nimport { Injectable } from '@angular/core';\nimport { NEVER, Observable, of } from 'rxjs';\nimport { catchError, map, tap } from 'rxjs/operators';\nimport { Taon, TaonBaseAngularService } from 'taon/websql';\n\nimport { TaonSessionController } from './taon-session.controller';\n//#endregion\n\n@Injectable()\nexport class TaonSessionApiService extends TaonBaseAngularService {\n private taonSessionController = this.injectController(TaonSessionController);\n\n //#region login\n\n login(email: string, password: string): Observable<boolean> {\n return this.taonSessionController.login({\n email,\n password,\n }).request!().observable.pipe(\n map(resp => {\n return !!resp.body.booleanValue;\n }),\n catchError(() => {\n return of(false);\n }),\n );\n }\n //#endregion\n\n //#region logout\n logout(): Observable<boolean> {\n return this.taonSessionController.logout().request!().observable.pipe(\n map(resp => {\n return !!resp.body.booleanValue;\n }),\n catchError(() => {\n return of(false);\n }),\n );\n }\n //#endregion\n\n //#region me\n me(): Observable<string> {\n return this.taonSessionController.me().request!().observable.pipe(\n map(resp => {\n const text = resp.body.text;\n return text;\n }),\n catchError(() => {\n return of(null);\n }),\n );\n }\n //#endregion\n\n //#region refresh\n refresh(): Observable<boolean> {\n return this.taonSessionController.refresh().request!().observable.pipe(\n map(resp => {\n return !!resp.body.booleanValue;\n }),\n catchError(() => {\n return of(false);\n }),\n );\n }\n //#endregion\n}\n","//#region imports\nimport { createContext, TaonBaseContext } from 'taon/websql';\n\nimport { TaonSessionKvRepository } from './taon-session-kv.repository';\nimport { TaonSessionUser } from './taon-session-user.entity';\nimport { TaonSessionUserRepository } from './taon-session-user.repository';\nimport { TaonSessionController } from './taon-session.controller';\nimport { TaonSessionMiddleware } from './taon-session.middleware';\nimport { TaonSessionProvider } from './taon-session.provider';\n//#endregion\n\nexport const TaonSessionContext = createContext(() => ({\n contextName: 'TaonSessionContext',\n abstract: true,\n contexts: { TaonBaseContext },\n entities: { TaonSessionUser },\n controllers: { TaonSessionController },\n repositories: { TaonSessionKvRepository, TaonSessionUserRepository },\n providers: { TaonSessionProvider },\n middlewares: { TaonSessionMiddleware },\n subscribers: {},\n}));\n","//#region imports\nimport { AsyncPipe, CommonModule, JsonPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { RouterOutlet } from '@angular/router';\nimport { BehaviorSubject, finalize, switchMap, tap } from 'rxjs';\n\nimport { TaonSessionApiService } from '../taon-session-api.service';\nimport { TaonSession } from '../taon-session.models';\n//#endregion\n\n@Component({\n selector: 'app-taon-session',\n templateUrl: './taon-session.component.html',\n styleUrls: ['./taon-session.component.scss'],\n providers: [TaonSessionApiService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AsyncPipe,\n RouterOutlet,\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n JsonPipe,\n ],\n})\nexport class TaonSessionComponent {\n taonSessionApiService = inject(TaonSessionApiService);\n\n refreshSrc = new BehaviorSubject(void 0);\n\n email = TaonSession.DEFAULT_EMAIL;\n\n password = TaonSession.DEFAULT_PASSWORD;\n\n userId: string;\n\n userId$ = this.refreshSrc.asObservable().pipe(\n switchMap(() => this.taonSessionApiService.me()),\n tap(userId => (this.userId = userId)),\n );\n\n loading = false;\n\n reloadMe(): void {\n this.refreshSrc.next(void 0);\n }\n\n login(): void {\n this.loading = true;\n this.taonSessionApiService\n .login(this.email, this.password)\n .pipe(\n finalize(() => {\n this.refreshSrc.next(void 0);\n this.loading = false;\n }),\n )\n .subscribe();\n }\n\n logout(): void {\n this.loading = true;\n this.taonSessionApiService\n .logout()\n .pipe(\n finalize(() => {\n this.refreshSrc.next(void 0);\n this.loading = false;\n }),\n )\n .subscribe();\n }\n}\n","<h2>Auth Demo</h2>\n\n<ng-container *ngIf=\"userId$ | async; else notLoggedIn\">\n Logged in as userId: {{ userId ? userId : '- wrong id -' }}\n</ng-container>\n<ng-template #notLoggedIn> Not logged in </ng-template>\n\n<div>\n <ng-container *ngIf=\"!userId\">\n <input\n [(ngModel)]=\"email\"\n placeholder=\"email\" />\n <br />\n <input\n [(ngModel)]=\"password\"\n type=\"password\"\n placeholder=\"password\" />\n </ng-container>\n\n <br /><br />\n\n <button\n (click)=\"login()\"\n *ngIf=\"!userId\">\n Login\n </button>\n <button (click)=\"reloadMe()\">Reload /me</button>\n <button\n (click)=\"logout()\"\n *ngIf=\"userId\">\n Logout\n </button>\n</div>\n","// @ts-nocheck\n// This file is auto-generated during init process. Do not modify.\n// This disable this auto generate file.\n// set property \"shouldGenerateAutogenIndexFile: false\" \n// in taon.jsonc of your project. \nexport * from './build-info._auto-generated_'; \nexport * from './my-organization-proj'; \nexport * from './start-cli'; \nexport * from './taon-session/taon-session-api.service'; // @browser\nexport * from './taon-session/taon-session-kv.repository'; \nexport * from './taon-session/taon-session-user.entity'; \nexport * from './taon-session/taon-session-user.repository'; \nexport * from './taon-session/taon-session.abstract.context'; \nexport * from './taon-session/taon-session.controller'; \nexport * from './taon-session/taon-session.middleware'; \nexport * from './taon-session/taon-session.models'; \nexport * from './taon-session/taon-session.provider'; \nexport * from './taon-session/taon-session.utils'; \nexport * from './taon-session/taon-session/taon-session.component'; // @browser","export * from './migrations';\nexport * from './env';\nexport * from './index._auto-generated_';\n/* */ \n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-websql.mjs","sources":["../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session-user/taon-session-user.models.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session.entity.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session-user/taon-session-user-identity.entity.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-permission/taon-permission.entity.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-role/taon-role-permission.entity.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-role/taon-role.entity.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session-user/taon-session-user-role.entity.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session-user/taon-session-user.entity.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session-user/taon-session-user-group.entity.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-group/taon-group.entity.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-group/taon-group-role.entity.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-group/taon-group-role.repository.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-role/taon-role-permission.repository.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/migrations/1790328479283_initial.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/migrations/migrations_index._auto-generated_.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/migrations/index.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/env/env.angular-node-app.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/env/env.docs-webapp.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/env/env.electron-app.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/env/env.mobile-app.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/env/env.npm-lib-and-cli-tool.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/env/env.vscode-plugin.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/build-info._auto-generated_.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/my-organization-proj.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-group/taon-group.repository.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-permission/taon-permission.repository.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-role/taon-role.repository.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session.provider.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session.kv.repository.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session.repository.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session-user/taon-session-user.repository.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-auth-context/taon-auth-context.entity.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-auth-context/taon-auth-context.repository.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-profile/taon-profile.controller.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-profile/taon-profile.models.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-profile/taon-profile.api.service.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-profile/taon-profile-picture/taon-profile-picture.component.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-profile/taon-profile-picture/taon-profile-picture.component.html","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session-user/taon-session-user.controller.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session-user/taon-session-user-api.service.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session-user/taon-session-user-group.repository.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session-user/taon-session-user-identity.repository.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session-user/taon-session-user.middleware.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session-user/taon-session-user.provider.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session-user/taon-session-user.subscriber.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session-user/taon-session-user.abstract.context.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session-user/taon-session-user.constants.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session-user/taon-session-user.utils.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session.middleware.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session.utils.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session.controller.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session.api.service.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session.config.service.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session.models.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session.state.service.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session.validators.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session/social-buttons/google-login-register-button.component.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session/social-buttons/google-login-register-button.component.html","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session/taon-session-profile/taon-session-profile.component.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session/taon-session-profile/taon-session-profile.component.html","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session/taon-session.component.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session/taon-session.component.html","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session-backoffice/taon-backoffice-navigation.service.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session-backoffice/taon-session-backoffice.controller.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session-backoffice/taon-session-backoffice.api.service.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session-backoffice/taon-session-details.component.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session-backoffice/taon-session-details.component.html","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session-backoffice/taon-session-backoffice.component.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session-backoffice/taon-session-backoffice.component.html","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-group/taon-group.controller.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-group/taon-group-api.service.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-role/taon-role.controller.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-role/taon-role-api.service.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-permission/taon-permission.controller.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-permission/taon-permission-api.service.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session-backoffice/taon-backoffice-details.resolver.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session-backoffice/taon-session-backoffice.routes.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session-button/taon-session-button.component.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session-button/taon-session-button.component.html","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-auth-context/taon-auth-context.abstract.context.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-group/taon-group.middleware.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-group/taon-group.provider.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-group/taon-group.abstract.context.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-permission/taon-permission.middleware.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-permission/taon-permission.provider.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-permission/taon-permission.subscriber.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-permission/taon-permission.abstract.context.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-role/taon-role.provider.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-role/taon-role.abstract.context.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-profile/taon-profile.constants.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-profile/taon-profile.entity.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-profile/taon-profile.provider.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-profile/taon-profile.abstract.context.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session.abstract.context.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/start-cli.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-audit-events/taon-audit-events.entity.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-audit-events/taon-audit-events.repository.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-audit-events/taon-audit-events.controller.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-audit-events/taon-audit-events-api.service.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-audit-events/taon-audit-events.provider.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-audit-events/taon-audit-events.middleware.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-audit-events/taon-audit-events.subscriber.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-audit-events/taon-audit-events.abstract.context.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-audit-events/taon-audit-events.constants.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-audit-events/taon-audit-events.models.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-audit-events/taon-audit-events.utils.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-authorization-backoffice/taon-authorization-backoffice.component.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-authorization-backoffice/taon-authorization-backoffice.component.html","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-authorization-backoffice/taon-authorization-backoffice.routes.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-group/taon-group.constants.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-notification/taon-notification-recipient.entity.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-notification/taon-notification.entity.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-notification/taon-notification.repository.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-notification/taon-notification.controller.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-notification/taon-notification-api.service.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-notification/taon-notification.middleware.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-notification/taon-notification.provider.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-notification/taon-notification.subscriber.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-notification/taon-notification.abstract.context.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-notification/taon-notification.constants.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-notification/taon-notification.models.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-notification/taon-notification.utils.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-permission/taon-permission.constants.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-permission/taon-permission.models.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-permission/taon-permission.utils.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-role/taon-role.constants.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-role/taon-role.models.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-role/taon-role-chooser/taon-role-chooser.component.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-role/taon-role-chooser/taon-role-chooser.component.html","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-group/taon-group-backoffice/taon-group-details.component.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-group/taon-group-backoffice/taon-group-details.component.html","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-group/taon-group-backoffice/taon-group-backoffice.component.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-group/taon-group-backoffice/taon-group-backoffice.component.html","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-group/taon-group-backoffice/taon-group-backoffice.routes.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-group/taon-group-chooser/taon-group-chooser.component.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-group/taon-group-chooser/taon-group-chooser.component.html","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-permission/taon-permission-view-edit/taon-permission-view-edit.component.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-permission/taon-permission-view-edit/taon-permission-view-edit.component.html","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-permission/taon-permission-backoffice/taon-permission-details.component.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-permission/taon-permission-backoffice/taon-permission-backoffice.component.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-permission/taon-permission-backoffice/taon-permission-backoffice.component.html","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-permission/taon-permission-backoffice/taon-permission-backoffice.routes.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-permission/taon-permission-chooser/taon-permission-chooser.component.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-permission/taon-permission-chooser/taon-permission-chooser.component.html","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-role/taon-role-backoffice/taon-role-details.component.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-role/taon-role-backoffice/taon-role-details.component.html","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-role/taon-role-backoffice/taon-role-backoffice.component.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-role/taon-role-backoffice/taon-role-backoffice.component.html","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-role/taon-role-backoffice/taon-role-backoffice.routes.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-profile/taon-profile.config.service.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-profile/taon-profile.kv.repository.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session-user/taon-session-backoffice-users/taon-session-user-details.component.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session-user/taon-session-backoffice-users/taon-session-user-details.component.html","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-session-backoffice/taon-backoffice-details-page.component.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session-user/taon-session-backoffice-users/taon-session-backoffice-users.component.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session-user/taon-session-backoffice-users/taon-session-backoffice-users.component.html","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session-user/taon-session-backoffice-users/taon-session-backoffice-users.routes.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/taon-session/taon-profile/taon-profile-picture/taon-profile-picture.routes.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/index._auto-generated_.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/lib/index.ts","../../../tmp-libs-for-dist-websql/session/projects/session/src/session-websql.ts"],"sourcesContent":["export enum TaonSessionUserState {\n Active = 'active',\n Inactive = 'inactive',\n}\n\nexport enum TaonSessionIdentityProvider {\n PASSWORD = 'PASSWORD',\n\n GOOGLE = 'GOOGLE',\n MICROSOFT = 'MICROSOFT',\n APPLE = 'APPLE',\n FACEBOOK = 'FACEBOOK',\n GITHUB = 'GITHUB',\n}\n","//#region imports\nimport {\n Column,\n CreateDateColumn,\n DateTimeColumn,\n Index,\n JoinColumn,\n ManyToOne,\n StringColumn,\n Taon,\n TaonBaseAbstractEntity,\n TaonEntity,\n} from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n\nimport { TaonSessionUserEntity } from '../taon-session-user/taon-session-user.entity';\nimport { TaonSessionIdentityProvider } from '../taon-session-user/taon-session-user.models';\n\n//#endregion\n\n@TaonEntity({\n className: 'TaonSessionEntity',\n createTable: true,\n})\nexport class TaonSessionEntity extends TaonBaseAbstractEntity<TaonSessionEntity> {\n //#region @websql\n @Column({ type: 'int' })\n //#endregion\n userId!: number;\n\n //#region @websql\n @Column({ type: 'int', nullable: true })\n //#endregion\n identityId?: number;\n\n //#region @websql\n @Column({ type: 'varchar', length: 50, nullable: true })\n //#endregion\n authenticationProvider?: TaonSessionIdentityProvider;\n\n //#region @websql\n @ManyToOne(() => TaonSessionUserEntity, user => user.sessions, {\n onDelete: 'CASCADE',\n })\n //#endregion\n\n //#region @websql\n @JoinColumn({ name: 'userId' })\n //#endregion\n user!: TaonSessionUserEntity;\n\n /**\n * Store HASH of session token, not raw token.\n */\n\n //#region @websql\n @Index({ unique: true })\n //#endregion\n\n //#region @websql\n @Column({ nullable: true, type: 'varchar' })\n //#endregion\n tokenHash!: string;\n\n //#region @websql\n @Column({ nullable: true, type: 'varchar', length: 4096 })\n //#endregion\n userAgent?: string;\n\n //#region @websql\n @Column({ nullable: true, type: 'varchar' })\n //#endregion\n ip?: string;\n\n //#region @websql\n @Column({ nullable: true, type: 'varchar' })\n //#endregion\n deviceName?: string;\n\n //#region @websql\n @Column({ type: 'datetime', nullable: true })\n //#endregion\n lastActivityAt?: Date;\n\n //#region @websql\n @Column({ nullable: true, type: 'datetime' })\n //#endregion\n expiresAt!: Date;\n\n //#region @websql\n @Column({ type: 'datetime', nullable: true })\n //#endregion\n revokedAt?: Date;\n\n //#region @websql\n @Column({ nullable: true, type: 'varchar' })\n //#endregion\n revokeReason?: string;\n\n //#region @websql\n @CreateDateColumn({ nullable: true })\n //#endregion\n createdAt!: Date;\n}\n","import {\n BooleanColumn,\n Column,\n CreateDateColumn,\n Index,\n JoinColumn,\n ManyToOne,\n TaonBaseAbstractEntity,\n TaonEntity,\n UpdateDateColumn,\n} from 'taon/websql';\n\nimport { TaonSessionUserEntity } from '../taon-session-user/taon-session-user.entity';\n\nimport { TaonSessionIdentityProvider } from './taon-session-user.models';\n\n@TaonEntity({\n className: 'TaonSessionUserIdentityEntity',\n createTable: true,\n})\n//#region @websql\n@Index(['provider', 'providerUserId'], { unique: true })\n//#endregion\nexport class TaonSessionUserIdentityEntity extends TaonBaseAbstractEntity<TaonSessionUserIdentityEntity> {\n //#region @websql\n @Column({ type: 'int' })\n //#endregion\n userId!: number;\n\n //#region @websql\n @ManyToOne(() => TaonSessionUserEntity, user => user.identities, {\n onDelete: 'CASCADE',\n })\n //#endregion\n\n //#region @websql\n @JoinColumn({ name: 'userId' })\n //#endregion\n user!: TaonSessionUserEntity;\n\n /**\n * PASSWORD / GOOGLE / MICROSOFT / APPLE / FACEBOOK\n */\n //#region @websql\n @Column({ type: 'varchar', length: 50 })\n //#endregion\n provider!: TaonSessionIdentityProvider;\n\n /**\n * PASSWORD:\n * normalized email\n *\n * GOOGLE:\n * Google's stable `sub`, NOT email\n *\n * Other OAuth providers:\n * stable provider-specific account id\n */\n //#region @websql\n @Column({ type: 'varchar', length: 500 })\n //#endregion\n providerUserId!: string;\n\n /**\n * Convenience/contact email reported by this identity.\n *\n * Do NOT use this as the primary OAuth identity key.\n */\n //#region @websql\n @Column({ nullable: true, type: 'varchar', length: 500 })\n //#endregion\n email?: string;\n\n /**\n * Only PASSWORD identities have this.\n *\n * Never store plaintext here.\n */\n //#region @websql\n @Column({ nullable: true, type: 'varchar', length: 500 })\n //#endregion\n passwordHash?: string;\n\n //#region @websql\n @BooleanColumn(false)\n //#endregion\n isEmailVerified!: boolean;\n\n //#region @websql\n @CreateDateColumn()\n //#endregion\n createdAt!: Date;\n\n //#region @websql\n @UpdateDateColumn()\n //#endregion\n updatedAt!: Date;\n}\n","//#region imports\nimport { TaonRolePermissionEntity } from '../taon-role/taon-role-permission.entity';\nimport {\n Column,\n CustomColumn,\n Index,\n OneToMany,\n Taon,\n TaonBaseAbstractEntity,\n TaonEntity,\n} from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n\nimport { TaonPermissionDefaultsValues } from './taon-permission.constants';\n//#endregion\n\n@TaonEntity({\n className: 'TaonPermissionEntity',\n createTable: true,\n})\nexport class TaonPermissionEntity extends TaonBaseAbstractEntity<TaonPermissionEntity> {\n /**\n * Examples:\n *\n * user.read\n * user.write\n * project.deploy\n * billing.invoice.read\n */\n\n //#region @websql\n @Index({ unique: true })\n //#endregion\n\n //#region @websql\n @Column({ type: 'varchar' })\n //#endregion\n name!: string;\n\n //#region @websql\n @Column({ type: 'varchar' })\n //#endregion\n code!: string;\n\n //#region @websql\n @Column({ nullable: true, type: 'varchar' })\n //#endregion\n description?: string;\n\n //#region @websql\n @OneToMany(() => TaonRolePermissionEntity, x => x.permission)\n //#endregion\n rolePermissions!: TaonRolePermissionEntity[];\n}\n","//#region imports\nimport { TaonRoleEntity } from '../taon-role/taon-role.entity';\nimport { TaonPermissionEntity } from '../taon-permission/taon-permission.entity';\nimport {\n Column,\n DateTimeColumn,\n JoinColumn,\n ManyToOne,\n StringColumn,\n Taon,\n TaonBaseAbstractEntity,\n TaonEntity,\n} from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n\n//#endregion\n\n@TaonEntity({\n className: 'TaonRolePermissionEntity',\n createTable: true,\n})\nexport class TaonRolePermissionEntity extends TaonBaseAbstractEntity<TaonRolePermissionEntity> {\n //#region @websql\n @Column({ type: 'int' })\n //#endregion\n roleId!: number;\n\n //#region @websql\n @Column({ type: 'int' })\n //#endregion\n permissionId!: number;\n\n //#region @websql\n @ManyToOne(() => TaonRoleEntity, role => role.rolePermissions, {\n onDelete: 'CASCADE',\n })\n //#endregion\n\n //#region @websql\n @JoinColumn({ name: 'roleId' })\n //#endregion\n role!: TaonRoleEntity;\n\n //#region @websql\n @ManyToOne(\n () => TaonPermissionEntity,\n permission => permission.rolePermissions,\n {\n onDelete: 'CASCADE',\n },\n )\n //#endregion\n\n //#region @websql\n @JoinColumn({ name: 'permissionId' })\n //#endregion\n permission!: TaonPermissionEntity;\n}\n","//#region imports\nimport { TaonSessionUserRoleEntity } from '../taon-session-user/taon-session-user-role.entity';\nimport { TaonRolePermissionEntity } from '../taon-role/taon-role-permission.entity';\nimport { TaonGroupRoleEntity } from '../taon-group/taon-group-role.entity';\nimport {\n Column,\n CustomColumn,\n Index,\n OneToMany,\n Taon,\n TaonBaseAbstractEntity,\n TaonEntity,\n} from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n\nimport { TaonRoleDefaultsValues } from './taon-role.constants';\n//#endregion\n\n@TaonEntity({\n className: 'TaonRoleEntity',\n createTable: true,\n})\nexport class TaonRoleEntity extends TaonBaseAbstractEntity<TaonRoleEntity> {\n /**\n * Example:\n * admin\n * editor\n * billing-manager\n */\n\n //#region @websql\n @Index({ unique: true })\n //#endregion\n\n //#region @websql\n @Column({ type: 'varchar' })\n //#endregion\n name!: string;\n\n //#region @websql\n @Column({ type: 'varchar' })\n //#endregion\n code!: string;\n\n //#region @websql\n @Column({ nullable: true, type: 'varchar' })\n //#endregion\n description?: string;\n\n //#region @websql\n @OneToMany(() => TaonSessionUserRoleEntity, x => x.role)\n //#endregion\n userRoles!: TaonSessionUserRoleEntity[];\n\n //#region @websql\n @OneToMany(() => TaonGroupRoleEntity, x => x.role)\n //#endregion\n groupRoles!: TaonGroupRoleEntity[];\n\n //#region @websql\n @OneToMany(() => TaonRolePermissionEntity, x => x.role)\n //#endregion\n rolePermissions!: TaonRolePermissionEntity[];\n}\n","//#region imports\nimport { TaonSessionUserEntity } from '../taon-session-user/taon-session-user.entity';\nimport { TaonRoleEntity } from '../taon-role/taon-role.entity';\nimport {\n Column,\n CreateDateColumn,\n CustomColumn,\n JoinColumn,\n ManyToOne,\n String45Column,\n String500Column,\n Taon,\n TaonBaseAbstractEntity,\n TaonEntity,\n} from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n\n//#endregion\n\n@TaonEntity({\n className: 'TaonSessionUserRoleEntity',\n createTable: true,\n})\nexport class TaonSessionUserRoleEntity extends TaonBaseAbstractEntity<TaonSessionUserRoleEntity> {\n //#region @websql\n @Column({ type: 'int' })\n //#endregion\n userId!: number;\n\n //#region @websql\n @Column({ type: 'int' })\n //#endregion\n roleId!: number;\n\n //#region @websql\n @ManyToOne(() => TaonSessionUserEntity, user => user.userRoles, {\n onDelete: 'CASCADE',\n })\n //#endregion\n\n //#region @websql\n @JoinColumn({ name: 'userId' })\n //#endregion\n user!: TaonSessionUserEntity;\n\n //#region @websql\n @ManyToOne(() => TaonRoleEntity, role => role.userRoles, {\n onDelete: 'CASCADE',\n })\n //#endregion\n\n //#region @websql\n @JoinColumn({ name: 'roleId' })\n //#endregion\n role!: TaonRoleEntity;\n\n //#region @websql\n @CreateDateColumn()\n //#endregion\n createdAt!: Date;\n}\n","//#region imports\nimport {\n BooleanColumn,\n Column,\n CreateDateColumn,\n CustomColumn,\n Index,\n OneToMany,\n String45Column,\n String500Column,\n Taon,\n TaonBaseAbstractEntity,\n TaonEntity,\n UpdateDateColumn,\n} from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n\nimport { TaonSessionEntity } from '../taon-session/taon-session.entity';\nimport { TaonSessionUserGroupEntity } from '../taon-session-user/taon-session-user-group.entity';\nimport { TaonSessionUserIdentityEntity } from '../taon-session-user/taon-session-user-identity.entity';\nimport { TaonSessionUserRoleEntity } from '../taon-session-user/taon-session-user-role.entity';\n\n//#endregion\n\n@TaonEntity<TaonSessionUserEntity>({\n className: 'TaonSessionUserEntity',\n createTable: true,\n defaultModelMapping: () => ({\n '': TaonSessionUserEntity,\n identities: [TaonSessionUserIdentityEntity],\n }),\n})\nexport class TaonSessionUserEntity extends TaonBaseAbstractEntity<TaonSessionUserEntity> {\n //#region @websql\n @Index({ unique: true })\n //#endregion\n\n //#region @websql\n @Column({ nullable: true, type: 'varchar' })\n //#endregion\n username?: string;\n\n //#region @websql\n @BooleanColumn(true)\n //#endregion\n isActive!: boolean;\n\n //#region @websql\n @CreateDateColumn()\n //#endregion\n createdAt!: Date;\n\n //#region @websql\n @UpdateDateColumn()\n //#endregion\n updatedAt!: Date;\n\n //#region @websql\n @OneToMany(() => TaonSessionEntity, session => session.user)\n //#endregion\n sessions!: TaonSessionEntity[];\n\n //#region @websql\n @OneToMany(() => TaonSessionUserIdentityEntity, identity => identity.user)\n //#endregion\n identities!: TaonSessionUserIdentityEntity[];\n\n //#region @websql\n @OneToMany(() => TaonSessionUserGroupEntity, x => x.user)\n //#endregion\n userGroups!: TaonSessionUserGroupEntity[];\n\n //#region @websql\n @OneToMany(() => TaonSessionUserRoleEntity, x => x.user)\n //#endregion\n userRoles!: TaonSessionUserRoleEntity[];\n}\n","//#region imports\nimport { TaonSessionUserEntity } from '../taon-session-user/taon-session-user.entity';\nimport { TaonGroupEntity } from '../taon-group/taon-group.entity';\nimport {\n Column,\n CreateDateColumn,\n DateTimeColumn,\n JoinColumn,\n ManyToOne,\n StringColumn,\n Taon,\n TaonBaseAbstractEntity,\n TaonEntity,\n} from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n\n//#endregion\n\n@TaonEntity({\n className: 'TaonSessionUserGroupEntity',\n createTable: true,\n})\nexport class TaonSessionUserGroupEntity extends TaonBaseAbstractEntity<TaonSessionUserGroupEntity> {\n //#region @websql\n @Column({ type: 'int' })\n //#endregion\n userId!: number;\n\n //#region @websql\n @Column({ type: 'int' })\n //#endregion\n groupId!: number;\n\n //#region @websql\n @ManyToOne(() => TaonSessionUserEntity, user => user.userGroups, {\n onDelete: 'CASCADE',\n })\n //#endregion\n\n //#region @websql\n @JoinColumn({ name: 'userId' })\n //#endregion\n user!: TaonSessionUserEntity;\n\n //#region @websql\n @ManyToOne(() => TaonGroupEntity, group => group.userGroups, {\n onDelete: 'CASCADE',\n })\n //#endregion\n\n //#region @websql\n @JoinColumn({ name: 'groupId' })\n //#endregion\n group!: TaonGroupEntity;\n\n //#region @websql\n @CreateDateColumn()\n //#endregion\n createdAt!: Date;\n}\n","//#region imports\nimport {\n Column,\n CustomColumn,\n Index,\n OneToMany,\n Taon,\n TaonBaseAbstractEntity,\n TaonEntity,\n} from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n\nimport { TaonGroupRoleEntity } from '../taon-group/taon-group-role.entity';\nimport { TaonSessionUserGroupEntity } from '../taon-session-user/taon-session-user-group.entity';\n\nimport { TaonGroupDefaultsValues } from './taon-group.constants';\n//#endregion\n\n@TaonEntity({\n className: 'TaonGroupEntity',\n createTable: true,\n})\nexport class TaonGroupEntity extends TaonBaseAbstractEntity<TaonGroupEntity> {\n //#region @websql\n @Index({ unique: true })\n //#endregion\n\n //#region @websql\n @Column({ type: 'varchar' })\n //#endregion\n name!: string;\n\n //#region @websql\n @Column({ type: 'varchar' })\n //#endregion\n code!: string;\n\n //#region @websql\n @Column({ type: 'varchar', nullable: true })\n //#endregion\n description?: string;\n\n //#region @websql\n @OneToMany(() => TaonSessionUserGroupEntity, x => x.group)\n //#endregion\n userGroups!: TaonSessionUserGroupEntity[];\n\n //#region @websql\n @OneToMany(() => TaonGroupRoleEntity, x => x.group)\n //#endregion\n groupRoles!: TaonGroupRoleEntity[];\n}\n","//#region imports\nimport {\n Column,\n DateTimeColumn,\n JoinColumn,\n ManyToOne,\n StringColumn,\n Taon,\n TaonBaseAbstractEntity,\n TaonEntity,\n} from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n\nimport { TaonGroupEntity } from '../taon-group/taon-group.entity';\nimport { TaonRoleEntity } from '../taon-role/taon-role.entity';\n\n//#endregion\n\n@TaonEntity({\n className: 'TaonGroupRoleEntity',\n createTable: true,\n})\nexport class TaonGroupRoleEntity extends TaonBaseAbstractEntity<TaonGroupRoleEntity> {\n //#region @websql\n @Column({ type: 'int' })\n //#endregion\n groupId!: number;\n\n //#region @websql\n @Column({ type: 'int' })\n //#endregion\n roleId!: number;\n\n //#region @websql\n @ManyToOne(() => TaonGroupEntity, group => group.groupRoles, {\n onDelete: 'CASCADE',\n })\n //#endregion\n\n //#region @websql\n @JoinColumn({ name: 'groupId' })\n //#endregion\n group!: TaonGroupEntity;\n\n //#region @websql\n @ManyToOne(() => TaonRoleEntity, role => role.groupRoles, {\n onDelete: 'CASCADE',\n })\n //#endregion\n\n //#region @websql\n @JoinColumn({ name: 'roleId' })\n //#endregion\n role!: TaonRoleEntity;\n}\n","//#region imports\nimport { TaonBaseRepository, TaonRepository } from 'taon/websql';\nimport { Raw } from 'taon-typeorm/websql';\n\nimport { TaonRoleEntity } from '../taon-role/taon-role.entity';\n\nimport { TaonGroupRoleEntity } from './taon-group-role.entity';\n//#endregion\n\n@TaonRepository({\n className: 'TaonGroupRoleRepository',\n})\nexport class TaonGroupRoleRepository extends TaonBaseRepository<TaonGroupRoleEntity> {\n entityClassResolveFn: () => typeof TaonGroupRoleEntity = () =>\n TaonGroupRoleEntity;\n\n /**\n * TODO remove this demo example method\n */\n //#region API / count entites with even id\n async countEntitesWithEvenId(): Promise<number> {\n //#region @websqlFunc\n const result = await this.count({\n where: {\n id: Raw(alias => `${alias} % 2 = 0`),\n },\n });\n return result;\n //#endregion\n }\n //#endregion\n\n //#region API / get roles for group id\n async getRolesForGroupId(groupId: number): Promise<TaonRoleEntity[]> {\n //#region @websqlFunc\n\n const groupRoles = await this.find({\n where: {\n groupId,\n },\n relations: {\n role: true,\n } as any,\n });\n\n return groupRoles.map(groupRole => groupRole.role).filter(Boolean);\n\n //#endregion\n }\n //#endregion\n\n //#region API / assign role to group\n async assignRoleToGroup(\n groupId: number,\n roleId: number,\n ): Promise<TaonGroupRoleEntity> {\n //#region @websqlFunc\n\n const existing = await this.findOne({\n where: {\n groupId,\n roleId,\n },\n });\n\n if (existing) {\n return existing;\n }\n\n const groupRole = new TaonGroupRoleEntity().clone({\n groupId,\n roleId,\n });\n\n return await this.save(groupRole);\n\n //#endregion\n }\n //#endregion\n\n //#region API / unassign role from group\n async unassignRoleFromGroup(groupId: number, roleId: number): Promise<void> {\n //#region @websqlFunc\n\n const existing = await this.findOne({\n where: {\n groupId,\n roleId,\n },\n });\n\n if (!existing) {\n return;\n }\n\n await this.deleteById(existing.id);\n\n //#endregion\n }\n //#endregion\n}\n","//#region imports\nimport { TaonBaseRepository, TaonRepository } from 'taon/websql';\nimport { Raw } from 'taon-typeorm/websql';\n\nimport { TaonPermissionEntity } from '../taon-permission/taon-permission.entity';\n\nimport { TaonRolePermissionEntity } from './taon-role-permission.entity';\n//#endregion\n\n@TaonRepository({\n className: 'TaonRolePermissionRepository',\n})\nexport class TaonRolePermissionRepository extends TaonBaseRepository<TaonRolePermissionEntity> {\n entityClassResolveFn: () => typeof TaonRolePermissionEntity = () => TaonRolePermissionEntity;\n\n /**\n * TODO remove this demo example method\n */\n async countEntitesWithEvenId(): Promise<number> {\n //#region @websqlFunc\n const result = await this.count({\n where: {\n id: Raw(alias => `${alias} % 2 = 0`),\n },\n });\n return result;\n //#endregion\n }\n\n async getPermissionsForRoleId(\n roleId: number,\n ): Promise<TaonPermissionEntity[]> {\n //#region @websqlFunc\n\n const rolePermissions = await this.find({\n where: {\n roleId,\n },\n relations: {\n permission: true,\n } as any,\n });\n\n return rolePermissions\n .map(rolePermission => rolePermission.permission)\n .filter(Boolean);\n\n //#endregion\n }\n\n async assignPermissionToRole(\n roleId: number,\n permissionId: number,\n ): Promise<TaonRolePermissionEntity> {\n //#region @websqlFunc\n\n const existing = await this.findOne({\n where: {\n roleId,\n permissionId,\n },\n });\n\n if (existing) {\n return existing;\n }\n\n const rolePermission = new TaonRolePermissionEntity().clone({\n roleId,\n permissionId,\n });\n\n return await this.save(rolePermission);\n\n //#endregion\n }\n\n async unassignPermissionFromRole(\n roleId: number,\n permissionId: number,\n ): Promise<void> {\n //#region @websqlFunc\n\n const existing = await this.findOne({\n where: {\n roleId,\n permissionId,\n },\n });\n\n if (!existing) {\n return;\n }\n\n await this.deleteById(existing.id);\n\n //#endregion\n }\n}\n","import { TaonGroupEntity, TaonGroupRepository } from '../index';\nimport {\n TaonPermissionEntity,\n TaonPermissionRepository,\n} from '../index';\nimport { TaonRoleRepository } from '../index';\nimport { Taon, TaonBaseMigration, TaonMigration } from 'taon/websql';\nimport { QueryRunner } from 'taon-typeorm/websql';\n\nimport { TaonGroupRoleRepository } from '../taon-group/taon-group-role.repository';\nimport { TaonRolePermissionRepository } from '../taon-role/taon-role-permission.repository';\nimport { TaonRoleEntity } from '../taon-role/taon-role.entity';\n\n//#region Migration class for context \"SessionContext\"\n@TaonMigration({\n className: 'SessionContext_1790328479283_initial',\n})\nexport class SessionContext_1790328479283_initial extends TaonBaseMigration {\n groupRepo = this.injectCustomRepo(TaonGroupRepository);\n\n roleRepo = this.injectCustomRepo(TaonRoleRepository);\n\n permissionRepo = this.injectCustomRepo(TaonPermissionRepository);\n\n groupRoleRepo = this.injectCustomRepo(TaonGroupRoleRepository);\n\n rolePermissionRepo = this.injectCustomRepo(TaonRolePermissionRepository);\n\n //#region up\n async up(queryRunner: QueryRunner): Promise<void> {\n //#region @websqlFunc\n await queryRunner.startTransaction();\n\n try {\n //#region permissions\n\n const watchP1 = await this.getOrCreatePermission(\n 'course.bachata.p1.watch',\n 'Watch Bachata P1',\n );\n\n const watchP2 = await this.getOrCreatePermission(\n 'course.bachata.p2.watch',\n 'Watch Bachata P2',\n );\n\n const watchP3 = await this.getOrCreatePermission(\n 'course.bachata.p3.watch',\n 'Watch Bachata P3',\n );\n\n const editVideos = await this.getOrCreatePermission(\n 'video.edit',\n 'Edit videos',\n );\n\n const editPosts = await this.getOrCreatePermission(\n 'post.edit',\n 'Edit posts',\n );\n\n //#region fake permissions\n\n const fakeUserView = await this.getOrCreatePermission(\n 'fake.user.view',\n '[FAKE] View users',\n );\n\n const fakeUserCreate = await this.getOrCreatePermission(\n 'fake.user.create',\n '[FAKE] Create users',\n );\n\n const fakeUserEdit = await this.getOrCreatePermission(\n 'fake.user.edit',\n '[FAKE] Edit users',\n );\n\n const fakeUserDelete = await this.getOrCreatePermission(\n 'fake.user.delete',\n '[FAKE] Delete users',\n );\n\n const fakeArticleView = await this.getOrCreatePermission(\n 'fake.article.view',\n '[FAKE] View articles',\n );\n\n const fakeArticleCreate = await this.getOrCreatePermission(\n 'fake.article.create',\n '[FAKE] Create articles',\n );\n\n const fakeArticleEdit = await this.getOrCreatePermission(\n 'fake.article.edit',\n '[FAKE] Edit articles',\n );\n\n const fakeArticlePublish = await this.getOrCreatePermission(\n 'fake.article.publish',\n '[FAKE] Publish articles',\n );\n\n const fakeArticleDelete = await this.getOrCreatePermission(\n 'fake.article.delete',\n '[FAKE] Delete articles',\n );\n\n const fakeOrderView = await this.getOrCreatePermission(\n 'fake.order.view',\n '[FAKE] View orders',\n );\n\n const fakeOrderEdit = await this.getOrCreatePermission(\n 'fake.order.edit',\n '[FAKE] Edit orders',\n );\n\n const fakeOrderRefund = await this.getOrCreatePermission(\n 'fake.order.refund',\n '[FAKE] Refund orders',\n );\n\n const fakeAnalyticsView = await this.getOrCreatePermission(\n 'fake.analytics.view',\n '[FAKE] View analytics',\n );\n\n const fakeSettingsView = await this.getOrCreatePermission(\n 'fake.settings.view',\n '[FAKE] View settings',\n );\n\n const fakeSettingsEdit = await this.getOrCreatePermission(\n 'fake.settings.edit',\n '[FAKE] Edit settings',\n );\n\n //#endregion\n\n //#endregion\n\n //#region roles\n\n const p1Role = await this.getOrCreateRole(\n 'bachata-p1-access',\n 'Bachata P1 access',\n );\n\n const p2Role = await this.getOrCreateRole(\n 'bachata-p2-access',\n 'Bachata P2 access',\n );\n\n const p3Role = await this.getOrCreateRole(\n 'bachata-p3-access',\n 'Bachata P3 access',\n );\n\n const contentEditorRole = await this.getOrCreateRole(\n 'content-editor',\n 'Content editor',\n );\n\n const adminRole = await this.getOrCreateRole('admin', 'Administrator');\n\n //#region fake roles\n\n const fakeViewerRole = await this.getOrCreateRole(\n 'fake-viewer',\n '[FAKE] Viewer',\n );\n\n const fakeAuthorRole = await this.getOrCreateRole(\n 'fake-author',\n '[FAKE] Author',\n );\n\n const fakeEditorRole = await this.getOrCreateRole(\n 'fake-editor',\n '[FAKE] Editor',\n );\n\n const fakePublisherRole = await this.getOrCreateRole(\n 'fake-publisher',\n '[FAKE] Publisher',\n );\n\n const fakeUserManagerRole = await this.getOrCreateRole(\n 'fake-user-manager',\n '[FAKE] User manager',\n );\n\n const fakeOrderManagerRole = await this.getOrCreateRole(\n 'fake-order-manager',\n '[FAKE] Order manager',\n );\n\n const fakeAnalyticsRole = await this.getOrCreateRole(\n 'fake-analytics',\n '[FAKE] Analytics access',\n );\n\n const fakeSystemManagerRole = await this.getOrCreateRole(\n 'fake-system-manager',\n '[FAKE] System manager',\n );\n\n //#endregion\n\n //#endregion\n\n //#region role -> permission\n\n await this.assignPermission(p1Role, watchP1);\n await this.assignPermission(p2Role, watchP2);\n await this.assignPermission(p3Role, watchP3);\n\n await this.assignPermission(contentEditorRole, editVideos);\n await this.assignPermission(contentEditorRole, editPosts);\n\n // Admin can explicitly inherit everything for now.\n await this.assignPermission(adminRole, watchP1);\n await this.assignPermission(adminRole, watchP2);\n await this.assignPermission(adminRole, watchP3);\n await this.assignPermission(adminRole, editVideos);\n await this.assignPermission(adminRole, editPosts);\n\n //#region fake role -> permission\n\n // Viewer\n await this.assignPermission(fakeViewerRole, fakeArticleView);\n\n // Author\n await this.assignPermission(fakeAuthorRole, fakeArticleView);\n await this.assignPermission(fakeAuthorRole, fakeArticleCreate);\n await this.assignPermission(fakeAuthorRole, fakeArticleEdit);\n\n // Editor\n await this.assignPermission(fakeEditorRole, fakeArticleView);\n await this.assignPermission(fakeEditorRole, fakeArticleCreate);\n await this.assignPermission(fakeEditorRole, fakeArticleEdit);\n await this.assignPermission(fakeEditorRole, fakeArticleDelete);\n\n // Publisher\n await this.assignPermission(fakePublisherRole, fakeArticleView);\n await this.assignPermission(fakePublisherRole, fakeArticleEdit);\n await this.assignPermission(fakePublisherRole, fakeArticlePublish);\n\n // User manager\n await this.assignPermission(fakeUserManagerRole, fakeUserView);\n await this.assignPermission(fakeUserManagerRole, fakeUserCreate);\n await this.assignPermission(fakeUserManagerRole, fakeUserEdit);\n await this.assignPermission(fakeUserManagerRole, fakeUserDelete);\n\n // Order manager\n await this.assignPermission(fakeOrderManagerRole, fakeOrderView);\n await this.assignPermission(fakeOrderManagerRole, fakeOrderEdit);\n await this.assignPermission(fakeOrderManagerRole, fakeOrderRefund);\n\n // Analytics\n await this.assignPermission(fakeAnalyticsRole, fakeAnalyticsView);\n\n // System manager\n await this.assignPermission(fakeSystemManagerRole, fakeUserView);\n await this.assignPermission(fakeSystemManagerRole, fakeAnalyticsView);\n await this.assignPermission(fakeSystemManagerRole, fakeSettingsView);\n await this.assignPermission(fakeSystemManagerRole, fakeSettingsEdit);\n\n //#endregion\n\n //#endregion\n\n //#region groups\n\n const administrators = await this.getOrCreateGroup(\n 'administrators',\n 'Administrators',\n );\n\n const allProgramAccess = await this.getOrCreateGroup(\n 'all-program-access',\n 'Users with access to all programs',\n );\n\n //#region fake groups\n\n const fakeGuests = await this.getOrCreateGroup(\n 'fake-guests',\n '[FAKE] Guests',\n );\n\n const fakeContentTeam = await this.getOrCreateGroup(\n 'fake-content-team',\n '[FAKE] Content team',\n );\n\n const fakeMarketingTeam = await this.getOrCreateGroup(\n 'fake-marketing-team',\n '[FAKE] Marketing team',\n );\n\n const fakeCustomerSupport = await this.getOrCreateGroup(\n 'fake-customer-support',\n '[FAKE] Customer support',\n );\n\n const fakeManagement = await this.getOrCreateGroup(\n 'fake-management',\n '[FAKE] Management',\n );\n\n const fakeDevelopers = await this.getOrCreateGroup(\n 'fake-developers',\n '[FAKE] Developers',\n );\n\n const fakeSuperUsers = await this.getOrCreateGroup(\n 'fake-super-users',\n '[FAKE] Super users',\n );\n\n //#endregion\n\n //#endregion\n\n //#region group -> role\n\n await this.assignRole(administrators, adminRole);\n\n await this.assignRole(allProgramAccess, p1Role);\n await this.assignRole(allProgramAccess, p2Role);\n await this.assignRole(allProgramAccess, p3Role);\n\n //#region fake group -> role\n\n // Guests can only view content.\n await this.assignRole(fakeGuests, fakeViewerRole);\n\n // Content team can author and edit.\n await this.assignRole(fakeContentTeam, fakeAuthorRole);\n await this.assignRole(fakeContentTeam, fakeEditorRole);\n\n // Marketing can create/publish content and see analytics.\n await this.assignRole(fakeMarketingTeam, fakeAuthorRole);\n await this.assignRole(fakeMarketingTeam, fakePublisherRole);\n await this.assignRole(fakeMarketingTeam, fakeAnalyticsRole);\n\n // Customer support needs users + orders.\n await this.assignRole(fakeCustomerSupport, fakeUserManagerRole);\n await this.assignRole(fakeCustomerSupport, fakeOrderManagerRole);\n\n // Management gets analytics and order access.\n await this.assignRole(fakeManagement, fakeAnalyticsRole);\n await this.assignRole(fakeManagement, fakeOrderManagerRole);\n\n // Developers get content + system management.\n await this.assignRole(fakeDevelopers, fakeEditorRole);\n await this.assignRole(fakeDevelopers, fakeSystemManagerRole);\n\n // Intentionally large group for testing the UI.\n await this.assignRole(fakeSuperUsers, fakeViewerRole);\n await this.assignRole(fakeSuperUsers, fakeAuthorRole);\n await this.assignRole(fakeSuperUsers, fakeEditorRole);\n await this.assignRole(fakeSuperUsers, fakePublisherRole);\n await this.assignRole(fakeSuperUsers, fakeUserManagerRole);\n await this.assignRole(fakeSuperUsers, fakeOrderManagerRole);\n await this.assignRole(fakeSuperUsers, fakeAnalyticsRole);\n await this.assignRole(fakeSuperUsers, fakeSystemManagerRole);\n\n //#endregion\n\n //#endregion\n\n await queryRunner.commitTransaction();\n } catch (error) {\n await queryRunner.rollbackTransaction();\n throw error;\n }\n //#endregion\n }\n //#endregion\n\n //#region helpers\n //#region @websql\n private async getOrCreatePermission(\n code: string,\n name: string,\n ): Promise<TaonPermissionEntity> {\n let entity = await this.permissionRepo.findOne({\n where: { code },\n });\n\n if (!entity) {\n entity = this.permissionRepo.create({\n code,\n name,\n });\n\n entity = await this.permissionRepo.save(entity);\n }\n\n return entity;\n }\n\n private async getOrCreateRole(\n code: string,\n name: string,\n ): Promise<TaonRoleEntity> {\n let entity = await this.roleRepo.findOne({\n where: { code },\n });\n\n if (!entity) {\n entity = this.roleRepo.create({\n code,\n name,\n });\n\n entity = await this.roleRepo.save(entity);\n }\n\n return entity;\n }\n\n private async getOrCreateGroup(\n code: string,\n name: string,\n ): Promise<TaonGroupEntity> {\n let entity = await this.groupRepo.findOne({\n where: { code },\n });\n\n if (!entity) {\n entity = this.groupRepo.create({\n code,\n name,\n });\n\n entity = await this.groupRepo.save(entity);\n }\n\n return entity;\n }\n\n private async assignPermission(\n role: TaonRoleEntity,\n permission: TaonPermissionEntity,\n ): Promise<void> {\n const exists = await this.rolePermissionRepo.exists({\n where: {\n roleId: role.id as any,\n permissionId: permission.id as any,\n },\n });\n\n if (!exists) {\n await this.rolePermissionRepo.save(\n this.rolePermissionRepo.create({\n roleId: role.id as any,\n permissionId: permission.id as any,\n }),\n );\n }\n }\n\n private async assignRole(\n group: TaonGroupEntity,\n role: TaonRoleEntity,\n ): Promise<void> {\n const exists = await this.groupRoleRepo.exists({\n where: {\n groupId: group.id as any,\n roleId: role.id as any,\n },\n });\n\n if (!exists) {\n await this.groupRoleRepo.save(\n this.groupRoleRepo.create({\n groupId: group.id as any,\n roleId: role.id as any,\n }),\n );\n }\n }\n\n //#endregion\n //#endregion\n\n //#region down\n async down(queryRunner: QueryRunner): Promise<void> {\n // I'd normally remove by stable `code`,\n // NOT clearDatabase().\n }\n //#endregion\n}\n//#endregion\n","// THIS FILE IS GENERATED - DO NOT MODIFY\nimport { SessionContext_1790328479283_initial } from './1790328479283_initial';\n// THIS FILE IS GENERATED - DO NOT MODIFY\nexport const MIGRATIONS_CLASSES_FOR_SessionContext = {\n /* 25-09-2026 11:27:59 */ SessionContext_1790328479283_initial,\n};\n// THIS FILE IS GENERATED - DO NOT MODIFY\n","//@ts-nocheck\nexport * from './migrations_index._auto-generated_';\n","// THIS FILE IS GENERATED - DO NOT MODIFY\nimport { decodeEnv } from 'tnp-core/websql';\n// config.superUsers\nexport const ENV_ANGULAR_NODE_APP_CONFIG_SUPER_USERS = (): Promise<string> => decodeEnv(\"dariusz@taon.dev\");\n// config.googleSecret\nexport const ENV_ANGULAR_NODE_APP_CONFIG_GOOGLE_SECRET = (): Promise<string> => decodeEnv(\"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\");\n// config.googleClientId\nexport const ENV_ANGULAR_NODE_APP_CONFIG_GOOGLE_CLIENT_ID = '289576612173-2mh31b67pmq2qdes5jedno9tr1m542es.apps.googleusercontent.com';\n// loading.preAngularBootstrap.background\nexport const ENV_ANGULAR_NODE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND = '#fdebed';\n// loading.preAngularBootstrap.loader.name\nexport const ENV_ANGULAR_NODE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME = 'lds-default';\n// website.domain\nexport const ENV_ANGULAR_NODE_APP_WEBSITE_DOMAIN = 'session.example.domain.com';\n// website.title\nexport const ENV_ANGULAR_NODE_APP_WEBSITE_TITLE = 'Session';\n// website.useDomain\nexport const ENV_ANGULAR_NODE_APP_WEBSITE_USE_DOMAIN = true;\n// release.targetArtifact\nexport const ENV_ANGULAR_NODE_APP_RELEASE_TARGET_ARTIFACT = 'angular-node-app';\n// release.envName\nexport const ENV_ANGULAR_NODE_APP_RELEASE_ENV_NAME = '__';\n// finishCallback\nexport const ENV_ANGULAR_NODE_APP_FINISH_CALLBACK = (): Promise<string> => decodeEnv({ });\n// container.only\nexport const ENV_ANGULAR_NODE_APP_CONTAINER_ONLY = undefined;\n// container.end\nexport const ENV_ANGULAR_NODE_APP_CONTAINER_END = undefined;\n// container.start\nexport const ENV_ANGULAR_NODE_APP_CONTAINER_START = undefined;\n// container.skipReleased\nexport const ENV_ANGULAR_NODE_APP_CONTAINER_SKIP_RELEASED = undefined;\n// container.skip\nexport const ENV_ANGULAR_NODE_APP_CONTAINER_SKIP = undefined;\n// init.branding\nexport const ENV_ANGULAR_NODE_APP_INIT_BRANDING = undefined;\n// init.struct\nexport const ENV_ANGULAR_NODE_APP_INIT_STRUCT = undefined;\n// build.pwa.disableServiceWorker\nexport const ENV_ANGULAR_NODE_APP_BUILD_PWA_DISABLE_SERVICE_WORKER = undefined;\n// build.pwa.name\nexport const ENV_ANGULAR_NODE_APP_BUILD_PWA_NAME = undefined;\n// build.pwa.short_name\nexport const ENV_ANGULAR_NODE_APP_BUILD_PWA_SHORT_NAME = undefined;\n// build.pwa.start_url\nexport const ENV_ANGULAR_NODE_APP_BUILD_PWA_START_URL = undefined;\n// build.electron.showDevTools\nexport const ENV_ANGULAR_NODE_APP_BUILD_ELECTRON_SHOW_DEV_TOOLS = undefined;\n// build.ssr\nexport const ENV_ANGULAR_NODE_APP_BUILD_SSR = undefined;\n// build.websql\nexport const ENV_ANGULAR_NODE_APP_BUILD_WEBSQL = undefined;\n// build.prod\nexport const ENV_ANGULAR_NODE_APP_BUILD_PROD = undefined;\n// build.overrideOutputPath\nexport const ENV_ANGULAR_NODE_APP_BUILD_OVERRIDE_OUTPUT_PATH = undefined;\n// build.baseHref\nexport const ENV_ANGULAR_NODE_APP_BUILD_BASE_HREF = undefined;\n// build.watch\nexport const ENV_ANGULAR_NODE_APP_BUILD_WATCH = undefined;\n// build.genOnlyClientCode\nexport const ENV_ANGULAR_NODE_APP_BUILD_GEN_ONLY_CLIENT_CODE = undefined;\n// loading.preAngularBootstrap.loader\nexport const ENV_ANGULAR_NODE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER = undefined;\n// release.cli.minify\nexport const ENV_ANGULAR_NODE_APP_RELEASE_CLI_MINIFY = undefined;\n// release.cli.includeNodeModules\nexport const ENV_ANGULAR_NODE_APP_RELEASE_CLI_INCLUDE_NODE_MODULES = undefined;\n// release.cli.uglify\nexport const ENV_ANGULAR_NODE_APP_RELEASE_CLI_UGLIFY = undefined;\n// release.cli.obscure\nexport const ENV_ANGULAR_NODE_APP_RELEASE_CLI_OBSCURE = undefined;\n// release.cli.compress\nexport const ENV_ANGULAR_NODE_APP_RELEASE_CLI_COMPRESS = undefined;\n// release.nodeBackendApp.minify\nexport const ENV_ANGULAR_NODE_APP_RELEASE_NODE_BACKEND_APP_MINIFY = undefined;\n// release.lib.removeDts\nexport const ENV_ANGULAR_NODE_APP_RELEASE_LIB_REMOVE_DTS = undefined;\n// release.lib.obscureFileByFile\nexport const ENV_ANGULAR_NODE_APP_RELEASE_LIB_OBSCURE_FILE_BY_FILE = undefined;\n// release.lib.uglifyFileByFile\nexport const ENV_ANGULAR_NODE_APP_RELEASE_LIB_UGLIFY_FILE_BY_FILE = undefined;\n// release.lib.includeSourceMaps\nexport const ENV_ANGULAR_NODE_APP_RELEASE_LIB_INCLUDE_SOURCE_MAPS = undefined;\n// release.lib.compress\nexport const ENV_ANGULAR_NODE_APP_RELEASE_LIB_COMPRESS = undefined;\n// release.lib.doNotIncludeLibFiles\nexport const ENV_ANGULAR_NODE_APP_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES = undefined;\n// release.resolvedNewVersion\nexport const ENV_ANGULAR_NODE_APP_RELEASE_RESOLVED_NEW_VERSION = undefined;\n// release.releaseVersionBumpType\nexport const ENV_ANGULAR_NODE_APP_RELEASE_RELEASE_VERSION_BUMP_TYPE = undefined;\n// release.envNumber\nexport const ENV_ANGULAR_NODE_APP_RELEASE_ENV_NUMBER = undefined;\n// release.installLocally\nexport const ENV_ANGULAR_NODE_APP_RELEASE_INSTALL_LOCALLY = undefined;\n// release.removeReleaseOutputAfterLocalInstall\nexport const ENV_ANGULAR_NODE_APP_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL = undefined;\n// release.releaseType\nexport const ENV_ANGULAR_NODE_APP_RELEASE_RELEASE_TYPE = undefined;\n// release.autoReleaseUsingConfig\nexport const ENV_ANGULAR_NODE_APP_RELEASE_AUTO_RELEASE_USING_CONFIG = undefined;\n// release.autoReleaseTaskName\nexport const ENV_ANGULAR_NODE_APP_RELEASE_AUTO_RELEASE_TASK_NAME = undefined;\n// release.taonInstanceIp\nexport const ENV_ANGULAR_NODE_APP_RELEASE_TAON_INSTANCE_IP = undefined;\n// release.skipNpmPublish\nexport const ENV_ANGULAR_NODE_APP_RELEASE_SKIP_NPM_PUBLISH = undefined;\n// release.skipDeploy\nexport const ENV_ANGULAR_NODE_APP_RELEASE_SKIP_DEPLOY = undefined;\n// release.skipTagGitPush\nexport const ENV_ANGULAR_NODE_APP_RELEASE_SKIP_TAG_GIT_PUSH = undefined;\n// release.skipReleaseQuestion\nexport const ENV_ANGULAR_NODE_APP_RELEASE_SKIP_RELEASE_QUESTION = undefined;\n// release.skipResolvingGitChanges\nexport const ENV_ANGULAR_NODE_APP_RELEASE_SKIP_RESOLVING_GIT_CHANGES = undefined;\n// release.skipCodeCutting\nexport const ENV_ANGULAR_NODE_APP_RELEASE_SKIP_CODE_CUTTING = undefined;\n// release.skipBuildingArtifacts\nexport const ENV_ANGULAR_NODE_APP_RELEASE_SKIP_BUILDING_ARTIFACTS = undefined;\n// release.pushToAllOriginsWhenLocalReleaseBranch\nexport const ENV_ANGULAR_NODE_APP_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH = undefined;\n// release.useLocalReleaseBranch\nexport const ENV_ANGULAR_NODE_APP_RELEASE_USE_LOCAL_RELEASE_BRANCH = undefined;\n// copyToManager.beforeCopyHook\nexport const ENV_ANGULAR_NODE_APP_COPY_TO_MANAGER_BEFORE_COPY_HOOK = undefined;\n// copyToManager.copyToLocations\nexport const ENV_ANGULAR_NODE_APP_COPY_TO_MANAGER_COPY_TO_LOCATIONS = undefined;\n// copyToManager.copyToProjects\nexport const ENV_ANGULAR_NODE_APP_COPY_TO_MANAGER_COPY_TO_PROJECTS = undefined;\n// copyToManager.skip\nexport const ENV_ANGULAR_NODE_APP_COPY_TO_MANAGER_SKIP = undefined;\n// purpose\nexport const ENV_ANGULAR_NODE_APP_PURPOSE = undefined;\n// recursiveAction\nexport const ENV_ANGULAR_NODE_APP_RECURSIVE_ACTION = undefined;\n// isCiProcess\nexport const ENV_ANGULAR_NODE_APP_IS_CI_PROCESS = undefined;\n// docker.additionalContainer\nexport const ENV_ANGULAR_NODE_APP_DOCKER_ADDITIONAL_CONTAINER = undefined;\n// docker.skipStartInOrder\nexport const ENV_ANGULAR_NODE_APP_DOCKER_SKIP_START_IN_ORDER = undefined;\n// docker.skipUsingMysqlDb\nexport const ENV_ANGULAR_NODE_APP_DOCKER_SKIP_USING_MYSQL_DB = undefined;\n// THIS FILE IS GENERATED - DO NOT MODIFY","// THIS FILE IS GENERATED - DO NOT MODIFY\nimport { decodeEnv } from 'tnp-core/websql';\n// config.superUsers\nexport const ENV_DOCS_WEBAPP_CONFIG_SUPER_USERS = (): Promise<string> => decodeEnv(\"dariusz@taon.dev\");\n// config.googleSecret\nexport const ENV_DOCS_WEBAPP_CONFIG_GOOGLE_SECRET = (): Promise<string> => decodeEnv(\"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\");\n// config.googleClientId\nexport const ENV_DOCS_WEBAPP_CONFIG_GOOGLE_CLIENT_ID = '289576612173-2mh31b67pmq2qdes5jedno9tr1m542es.apps.googleusercontent.com';\n// loading.preAngularBootstrap.background\nexport const ENV_DOCS_WEBAPP_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND = '#fdebed';\n// loading.preAngularBootstrap.loader.name\nexport const ENV_DOCS_WEBAPP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME = 'lds-default';\n// website.domain\nexport const ENV_DOCS_WEBAPP_WEBSITE_DOMAIN = 'session.example.domain.com';\n// website.title\nexport const ENV_DOCS_WEBAPP_WEBSITE_TITLE = 'Session';\n// website.useDomain\nexport const ENV_DOCS_WEBAPP_WEBSITE_USE_DOMAIN = true;\n// release.targetArtifact\nexport const ENV_DOCS_WEBAPP_RELEASE_TARGET_ARTIFACT = 'docs-webapp';\n// release.envName\nexport const ENV_DOCS_WEBAPP_RELEASE_ENV_NAME = '__';\n// finishCallback\nexport const ENV_DOCS_WEBAPP_FINISH_CALLBACK = (): Promise<string> => decodeEnv({ });\n// container.only\nexport const ENV_DOCS_WEBAPP_CONTAINER_ONLY = undefined;\n// container.end\nexport const ENV_DOCS_WEBAPP_CONTAINER_END = undefined;\n// container.start\nexport const ENV_DOCS_WEBAPP_CONTAINER_START = undefined;\n// container.skipReleased\nexport const ENV_DOCS_WEBAPP_CONTAINER_SKIP_RELEASED = undefined;\n// container.skip\nexport const ENV_DOCS_WEBAPP_CONTAINER_SKIP = undefined;\n// init.branding\nexport const ENV_DOCS_WEBAPP_INIT_BRANDING = undefined;\n// init.struct\nexport const ENV_DOCS_WEBAPP_INIT_STRUCT = undefined;\n// build.pwa.disableServiceWorker\nexport const ENV_DOCS_WEBAPP_BUILD_PWA_DISABLE_SERVICE_WORKER = undefined;\n// build.pwa.name\nexport const ENV_DOCS_WEBAPP_BUILD_PWA_NAME = undefined;\n// build.pwa.short_name\nexport const ENV_DOCS_WEBAPP_BUILD_PWA_SHORT_NAME = undefined;\n// build.pwa.start_url\nexport const ENV_DOCS_WEBAPP_BUILD_PWA_START_URL = undefined;\n// build.electron.showDevTools\nexport const ENV_DOCS_WEBAPP_BUILD_ELECTRON_SHOW_DEV_TOOLS = undefined;\n// build.ssr\nexport const ENV_DOCS_WEBAPP_BUILD_SSR = undefined;\n// build.websql\nexport const ENV_DOCS_WEBAPP_BUILD_WEBSQL = undefined;\n// build.prod\nexport const ENV_DOCS_WEBAPP_BUILD_PROD = undefined;\n// build.overrideOutputPath\nexport const ENV_DOCS_WEBAPP_BUILD_OVERRIDE_OUTPUT_PATH = undefined;\n// build.baseHref\nexport const ENV_DOCS_WEBAPP_BUILD_BASE_HREF = undefined;\n// build.watch\nexport const ENV_DOCS_WEBAPP_BUILD_WATCH = undefined;\n// build.genOnlyClientCode\nexport const ENV_DOCS_WEBAPP_BUILD_GEN_ONLY_CLIENT_CODE = undefined;\n// loading.preAngularBootstrap.loader\nexport const ENV_DOCS_WEBAPP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER = undefined;\n// release.cli.minify\nexport const ENV_DOCS_WEBAPP_RELEASE_CLI_MINIFY = undefined;\n// release.cli.includeNodeModules\nexport const ENV_DOCS_WEBAPP_RELEASE_CLI_INCLUDE_NODE_MODULES = undefined;\n// release.cli.uglify\nexport const ENV_DOCS_WEBAPP_RELEASE_CLI_UGLIFY = undefined;\n// release.cli.obscure\nexport const ENV_DOCS_WEBAPP_RELEASE_CLI_OBSCURE = undefined;\n// release.cli.compress\nexport const ENV_DOCS_WEBAPP_RELEASE_CLI_COMPRESS = undefined;\n// release.nodeBackendApp.minify\nexport const ENV_DOCS_WEBAPP_RELEASE_NODE_BACKEND_APP_MINIFY = undefined;\n// release.lib.removeDts\nexport const ENV_DOCS_WEBAPP_RELEASE_LIB_REMOVE_DTS = undefined;\n// release.lib.obscureFileByFile\nexport const ENV_DOCS_WEBAPP_RELEASE_LIB_OBSCURE_FILE_BY_FILE = undefined;\n// release.lib.uglifyFileByFile\nexport const ENV_DOCS_WEBAPP_RELEASE_LIB_UGLIFY_FILE_BY_FILE = undefined;\n// release.lib.includeSourceMaps\nexport const ENV_DOCS_WEBAPP_RELEASE_LIB_INCLUDE_SOURCE_MAPS = undefined;\n// release.lib.compress\nexport const ENV_DOCS_WEBAPP_RELEASE_LIB_COMPRESS = undefined;\n// release.lib.doNotIncludeLibFiles\nexport const ENV_DOCS_WEBAPP_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES = undefined;\n// release.resolvedNewVersion\nexport const ENV_DOCS_WEBAPP_RELEASE_RESOLVED_NEW_VERSION = undefined;\n// release.releaseVersionBumpType\nexport const ENV_DOCS_WEBAPP_RELEASE_RELEASE_VERSION_BUMP_TYPE = undefined;\n// release.envNumber\nexport const ENV_DOCS_WEBAPP_RELEASE_ENV_NUMBER = undefined;\n// release.installLocally\nexport const ENV_DOCS_WEBAPP_RELEASE_INSTALL_LOCALLY = undefined;\n// release.removeReleaseOutputAfterLocalInstall\nexport const ENV_DOCS_WEBAPP_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL = undefined;\n// release.releaseType\nexport const ENV_DOCS_WEBAPP_RELEASE_RELEASE_TYPE = undefined;\n// release.autoReleaseUsingConfig\nexport const ENV_DOCS_WEBAPP_RELEASE_AUTO_RELEASE_USING_CONFIG = undefined;\n// release.autoReleaseTaskName\nexport const ENV_DOCS_WEBAPP_RELEASE_AUTO_RELEASE_TASK_NAME = undefined;\n// release.taonInstanceIp\nexport const ENV_DOCS_WEBAPP_RELEASE_TAON_INSTANCE_IP = undefined;\n// release.skipNpmPublish\nexport const ENV_DOCS_WEBAPP_RELEASE_SKIP_NPM_PUBLISH = undefined;\n// release.skipDeploy\nexport const ENV_DOCS_WEBAPP_RELEASE_SKIP_DEPLOY = undefined;\n// release.skipTagGitPush\nexport const ENV_DOCS_WEBAPP_RELEASE_SKIP_TAG_GIT_PUSH = undefined;\n// release.skipReleaseQuestion\nexport const ENV_DOCS_WEBAPP_RELEASE_SKIP_RELEASE_QUESTION = undefined;\n// release.skipResolvingGitChanges\nexport const ENV_DOCS_WEBAPP_RELEASE_SKIP_RESOLVING_GIT_CHANGES = undefined;\n// release.skipCodeCutting\nexport const ENV_DOCS_WEBAPP_RELEASE_SKIP_CODE_CUTTING = undefined;\n// release.skipBuildingArtifacts\nexport const ENV_DOCS_WEBAPP_RELEASE_SKIP_BUILDING_ARTIFACTS = undefined;\n// release.pushToAllOriginsWhenLocalReleaseBranch\nexport const ENV_DOCS_WEBAPP_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH = undefined;\n// release.useLocalReleaseBranch\nexport const ENV_DOCS_WEBAPP_RELEASE_USE_LOCAL_RELEASE_BRANCH = undefined;\n// copyToManager.beforeCopyHook\nexport const ENV_DOCS_WEBAPP_COPY_TO_MANAGER_BEFORE_COPY_HOOK = undefined;\n// copyToManager.copyToLocations\nexport const ENV_DOCS_WEBAPP_COPY_TO_MANAGER_COPY_TO_LOCATIONS = undefined;\n// copyToManager.copyToProjects\nexport const ENV_DOCS_WEBAPP_COPY_TO_MANAGER_COPY_TO_PROJECTS = undefined;\n// copyToManager.skip\nexport const ENV_DOCS_WEBAPP_COPY_TO_MANAGER_SKIP = undefined;\n// purpose\nexport const ENV_DOCS_WEBAPP_PURPOSE = undefined;\n// recursiveAction\nexport const ENV_DOCS_WEBAPP_RECURSIVE_ACTION = undefined;\n// isCiProcess\nexport const ENV_DOCS_WEBAPP_IS_CI_PROCESS = undefined;\n// docker.additionalContainer\nexport const ENV_DOCS_WEBAPP_DOCKER_ADDITIONAL_CONTAINER = undefined;\n// docker.skipStartInOrder\nexport const ENV_DOCS_WEBAPP_DOCKER_SKIP_START_IN_ORDER = undefined;\n// docker.skipUsingMysqlDb\nexport const ENV_DOCS_WEBAPP_DOCKER_SKIP_USING_MYSQL_DB = undefined;\n// THIS FILE IS GENERATED - DO NOT MODIFY","// THIS FILE IS GENERATED - DO NOT MODIFY\nimport { decodeEnv } from 'tnp-core/websql';\n// config.superUsers\nexport const ENV_ELECTRON_APP_CONFIG_SUPER_USERS = (): Promise<string> => decodeEnv(\"dariusz@taon.dev\");\n// config.googleSecret\nexport const ENV_ELECTRON_APP_CONFIG_GOOGLE_SECRET = (): Promise<string> => decodeEnv(\"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\");\n// config.googleClientId\nexport const ENV_ELECTRON_APP_CONFIG_GOOGLE_CLIENT_ID = '289576612173-2mh31b67pmq2qdes5jedno9tr1m542es.apps.googleusercontent.com';\n// build.ssr\nexport const ENV_ELECTRON_APP_BUILD_SSR = false;\n// loading.preAngularBootstrap.background\nexport const ENV_ELECTRON_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND = '#fdebed';\n// loading.preAngularBootstrap.loader.name\nexport const ENV_ELECTRON_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME = 'lds-default';\n// website.domain\nexport const ENV_ELECTRON_APP_WEBSITE_DOMAIN = 'session.example.domain.com';\n// website.title\nexport const ENV_ELECTRON_APP_WEBSITE_TITLE = 'Session';\n// website.useDomain\nexport const ENV_ELECTRON_APP_WEBSITE_USE_DOMAIN = true;\n// release.targetArtifact\nexport const ENV_ELECTRON_APP_RELEASE_TARGET_ARTIFACT = 'electron-app';\n// release.envName\nexport const ENV_ELECTRON_APP_RELEASE_ENV_NAME = '__';\n// finishCallback\nexport const ENV_ELECTRON_APP_FINISH_CALLBACK = (): Promise<string> => decodeEnv({ });\n// container.only\nexport const ENV_ELECTRON_APP_CONTAINER_ONLY = undefined;\n// container.end\nexport const ENV_ELECTRON_APP_CONTAINER_END = undefined;\n// container.start\nexport const ENV_ELECTRON_APP_CONTAINER_START = undefined;\n// container.skipReleased\nexport const ENV_ELECTRON_APP_CONTAINER_SKIP_RELEASED = undefined;\n// container.skip\nexport const ENV_ELECTRON_APP_CONTAINER_SKIP = undefined;\n// init.branding\nexport const ENV_ELECTRON_APP_INIT_BRANDING = undefined;\n// init.struct\nexport const ENV_ELECTRON_APP_INIT_STRUCT = undefined;\n// build.pwa.disableServiceWorker\nexport const ENV_ELECTRON_APP_BUILD_PWA_DISABLE_SERVICE_WORKER = undefined;\n// build.pwa.name\nexport const ENV_ELECTRON_APP_BUILD_PWA_NAME = undefined;\n// build.pwa.short_name\nexport const ENV_ELECTRON_APP_BUILD_PWA_SHORT_NAME = undefined;\n// build.pwa.start_url\nexport const ENV_ELECTRON_APP_BUILD_PWA_START_URL = undefined;\n// build.electron.showDevTools\nexport const ENV_ELECTRON_APP_BUILD_ELECTRON_SHOW_DEV_TOOLS = undefined;\n// build.websql\nexport const ENV_ELECTRON_APP_BUILD_WEBSQL = undefined;\n// build.prod\nexport const ENV_ELECTRON_APP_BUILD_PROD = undefined;\n// build.overrideOutputPath\nexport const ENV_ELECTRON_APP_BUILD_OVERRIDE_OUTPUT_PATH = undefined;\n// build.baseHref\nexport const ENV_ELECTRON_APP_BUILD_BASE_HREF = undefined;\n// build.watch\nexport const ENV_ELECTRON_APP_BUILD_WATCH = undefined;\n// build.genOnlyClientCode\nexport const ENV_ELECTRON_APP_BUILD_GEN_ONLY_CLIENT_CODE = undefined;\n// loading.preAngularBootstrap.loader\nexport const ENV_ELECTRON_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER = undefined;\n// release.cli.minify\nexport const ENV_ELECTRON_APP_RELEASE_CLI_MINIFY = undefined;\n// release.cli.includeNodeModules\nexport const ENV_ELECTRON_APP_RELEASE_CLI_INCLUDE_NODE_MODULES = undefined;\n// release.cli.uglify\nexport const ENV_ELECTRON_APP_RELEASE_CLI_UGLIFY = undefined;\n// release.cli.obscure\nexport const ENV_ELECTRON_APP_RELEASE_CLI_OBSCURE = undefined;\n// release.cli.compress\nexport const ENV_ELECTRON_APP_RELEASE_CLI_COMPRESS = undefined;\n// release.nodeBackendApp.minify\nexport const ENV_ELECTRON_APP_RELEASE_NODE_BACKEND_APP_MINIFY = undefined;\n// release.lib.removeDts\nexport const ENV_ELECTRON_APP_RELEASE_LIB_REMOVE_DTS = undefined;\n// release.lib.obscureFileByFile\nexport const ENV_ELECTRON_APP_RELEASE_LIB_OBSCURE_FILE_BY_FILE = undefined;\n// release.lib.uglifyFileByFile\nexport const ENV_ELECTRON_APP_RELEASE_LIB_UGLIFY_FILE_BY_FILE = undefined;\n// release.lib.includeSourceMaps\nexport const ENV_ELECTRON_APP_RELEASE_LIB_INCLUDE_SOURCE_MAPS = undefined;\n// release.lib.compress\nexport const ENV_ELECTRON_APP_RELEASE_LIB_COMPRESS = undefined;\n// release.lib.doNotIncludeLibFiles\nexport const ENV_ELECTRON_APP_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES = undefined;\n// release.resolvedNewVersion\nexport const ENV_ELECTRON_APP_RELEASE_RESOLVED_NEW_VERSION = undefined;\n// release.releaseVersionBumpType\nexport const ENV_ELECTRON_APP_RELEASE_RELEASE_VERSION_BUMP_TYPE = undefined;\n// release.envNumber\nexport const ENV_ELECTRON_APP_RELEASE_ENV_NUMBER = undefined;\n// release.installLocally\nexport const ENV_ELECTRON_APP_RELEASE_INSTALL_LOCALLY = undefined;\n// release.removeReleaseOutputAfterLocalInstall\nexport const ENV_ELECTRON_APP_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL = undefined;\n// release.releaseType\nexport const ENV_ELECTRON_APP_RELEASE_RELEASE_TYPE = undefined;\n// release.autoReleaseUsingConfig\nexport const ENV_ELECTRON_APP_RELEASE_AUTO_RELEASE_USING_CONFIG = undefined;\n// release.autoReleaseTaskName\nexport const ENV_ELECTRON_APP_RELEASE_AUTO_RELEASE_TASK_NAME = undefined;\n// release.taonInstanceIp\nexport const ENV_ELECTRON_APP_RELEASE_TAON_INSTANCE_IP = undefined;\n// release.skipNpmPublish\nexport const ENV_ELECTRON_APP_RELEASE_SKIP_NPM_PUBLISH = undefined;\n// release.skipDeploy\nexport const ENV_ELECTRON_APP_RELEASE_SKIP_DEPLOY = undefined;\n// release.skipTagGitPush\nexport const ENV_ELECTRON_APP_RELEASE_SKIP_TAG_GIT_PUSH = undefined;\n// release.skipReleaseQuestion\nexport const ENV_ELECTRON_APP_RELEASE_SKIP_RELEASE_QUESTION = undefined;\n// release.skipResolvingGitChanges\nexport const ENV_ELECTRON_APP_RELEASE_SKIP_RESOLVING_GIT_CHANGES = undefined;\n// release.skipCodeCutting\nexport const ENV_ELECTRON_APP_RELEASE_SKIP_CODE_CUTTING = undefined;\n// release.skipBuildingArtifacts\nexport const ENV_ELECTRON_APP_RELEASE_SKIP_BUILDING_ARTIFACTS = undefined;\n// release.pushToAllOriginsWhenLocalReleaseBranch\nexport const ENV_ELECTRON_APP_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH = undefined;\n// release.useLocalReleaseBranch\nexport const ENV_ELECTRON_APP_RELEASE_USE_LOCAL_RELEASE_BRANCH = undefined;\n// copyToManager.beforeCopyHook\nexport const ENV_ELECTRON_APP_COPY_TO_MANAGER_BEFORE_COPY_HOOK = undefined;\n// copyToManager.copyToLocations\nexport const ENV_ELECTRON_APP_COPY_TO_MANAGER_COPY_TO_LOCATIONS = undefined;\n// copyToManager.copyToProjects\nexport const ENV_ELECTRON_APP_COPY_TO_MANAGER_COPY_TO_PROJECTS = undefined;\n// copyToManager.skip\nexport const ENV_ELECTRON_APP_COPY_TO_MANAGER_SKIP = undefined;\n// purpose\nexport const ENV_ELECTRON_APP_PURPOSE = undefined;\n// recursiveAction\nexport const ENV_ELECTRON_APP_RECURSIVE_ACTION = undefined;\n// isCiProcess\nexport const ENV_ELECTRON_APP_IS_CI_PROCESS = undefined;\n// docker.additionalContainer\nexport const ENV_ELECTRON_APP_DOCKER_ADDITIONAL_CONTAINER = undefined;\n// docker.skipStartInOrder\nexport const ENV_ELECTRON_APP_DOCKER_SKIP_START_IN_ORDER = undefined;\n// docker.skipUsingMysqlDb\nexport const ENV_ELECTRON_APP_DOCKER_SKIP_USING_MYSQL_DB = undefined;\n// THIS FILE IS GENERATED - DO NOT MODIFY","// THIS FILE IS GENERATED - DO NOT MODIFY\nimport { decodeEnv } from 'tnp-core/websql';\n// config.superUsers\nexport const ENV_MOBILE_APP_CONFIG_SUPER_USERS = (): Promise<string> => decodeEnv(\"dariusz@taon.dev\");\n// config.googleSecret\nexport const ENV_MOBILE_APP_CONFIG_GOOGLE_SECRET = (): Promise<string> => decodeEnv(\"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\");\n// config.googleClientId\nexport const ENV_MOBILE_APP_CONFIG_GOOGLE_CLIENT_ID = '289576612173-2mh31b67pmq2qdes5jedno9tr1m542es.apps.googleusercontent.com';\n// loading.preAngularBootstrap.background\nexport const ENV_MOBILE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND = '#fdebed';\n// loading.preAngularBootstrap.loader.name\nexport const ENV_MOBILE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME = 'lds-default';\n// website.domain\nexport const ENV_MOBILE_APP_WEBSITE_DOMAIN = 'session.example.domain.com';\n// website.title\nexport const ENV_MOBILE_APP_WEBSITE_TITLE = 'Session';\n// website.useDomain\nexport const ENV_MOBILE_APP_WEBSITE_USE_DOMAIN = true;\n// release.targetArtifact\nexport const ENV_MOBILE_APP_RELEASE_TARGET_ARTIFACT = 'mobile-app';\n// release.envName\nexport const ENV_MOBILE_APP_RELEASE_ENV_NAME = '__';\n// finishCallback\nexport const ENV_MOBILE_APP_FINISH_CALLBACK = (): Promise<string> => decodeEnv({ });\n// container.only\nexport const ENV_MOBILE_APP_CONTAINER_ONLY = undefined;\n// container.end\nexport const ENV_MOBILE_APP_CONTAINER_END = undefined;\n// container.start\nexport const ENV_MOBILE_APP_CONTAINER_START = undefined;\n// container.skipReleased\nexport const ENV_MOBILE_APP_CONTAINER_SKIP_RELEASED = undefined;\n// container.skip\nexport const ENV_MOBILE_APP_CONTAINER_SKIP = undefined;\n// init.branding\nexport const ENV_MOBILE_APP_INIT_BRANDING = undefined;\n// init.struct\nexport const ENV_MOBILE_APP_INIT_STRUCT = undefined;\n// build.pwa.disableServiceWorker\nexport const ENV_MOBILE_APP_BUILD_PWA_DISABLE_SERVICE_WORKER = undefined;\n// build.pwa.name\nexport const ENV_MOBILE_APP_BUILD_PWA_NAME = undefined;\n// build.pwa.short_name\nexport const ENV_MOBILE_APP_BUILD_PWA_SHORT_NAME = undefined;\n// build.pwa.start_url\nexport const ENV_MOBILE_APP_BUILD_PWA_START_URL = undefined;\n// build.electron.showDevTools\nexport const ENV_MOBILE_APP_BUILD_ELECTRON_SHOW_DEV_TOOLS = undefined;\n// build.ssr\nexport const ENV_MOBILE_APP_BUILD_SSR = undefined;\n// build.websql\nexport const ENV_MOBILE_APP_BUILD_WEBSQL = undefined;\n// build.prod\nexport const ENV_MOBILE_APP_BUILD_PROD = undefined;\n// build.overrideOutputPath\nexport const ENV_MOBILE_APP_BUILD_OVERRIDE_OUTPUT_PATH = undefined;\n// build.baseHref\nexport const ENV_MOBILE_APP_BUILD_BASE_HREF = undefined;\n// build.watch\nexport const ENV_MOBILE_APP_BUILD_WATCH = undefined;\n// build.genOnlyClientCode\nexport const ENV_MOBILE_APP_BUILD_GEN_ONLY_CLIENT_CODE = undefined;\n// loading.preAngularBootstrap.loader\nexport const ENV_MOBILE_APP_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER = undefined;\n// release.cli.minify\nexport const ENV_MOBILE_APP_RELEASE_CLI_MINIFY = undefined;\n// release.cli.includeNodeModules\nexport const ENV_MOBILE_APP_RELEASE_CLI_INCLUDE_NODE_MODULES = undefined;\n// release.cli.uglify\nexport const ENV_MOBILE_APP_RELEASE_CLI_UGLIFY = undefined;\n// release.cli.obscure\nexport const ENV_MOBILE_APP_RELEASE_CLI_OBSCURE = undefined;\n// release.cli.compress\nexport const ENV_MOBILE_APP_RELEASE_CLI_COMPRESS = undefined;\n// release.nodeBackendApp.minify\nexport const ENV_MOBILE_APP_RELEASE_NODE_BACKEND_APP_MINIFY = undefined;\n// release.lib.removeDts\nexport const ENV_MOBILE_APP_RELEASE_LIB_REMOVE_DTS = undefined;\n// release.lib.obscureFileByFile\nexport const ENV_MOBILE_APP_RELEASE_LIB_OBSCURE_FILE_BY_FILE = undefined;\n// release.lib.uglifyFileByFile\nexport const ENV_MOBILE_APP_RELEASE_LIB_UGLIFY_FILE_BY_FILE = undefined;\n// release.lib.includeSourceMaps\nexport const ENV_MOBILE_APP_RELEASE_LIB_INCLUDE_SOURCE_MAPS = undefined;\n// release.lib.compress\nexport const ENV_MOBILE_APP_RELEASE_LIB_COMPRESS = undefined;\n// release.lib.doNotIncludeLibFiles\nexport const ENV_MOBILE_APP_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES = undefined;\n// release.resolvedNewVersion\nexport const ENV_MOBILE_APP_RELEASE_RESOLVED_NEW_VERSION = undefined;\n// release.releaseVersionBumpType\nexport const ENV_MOBILE_APP_RELEASE_RELEASE_VERSION_BUMP_TYPE = undefined;\n// release.envNumber\nexport const ENV_MOBILE_APP_RELEASE_ENV_NUMBER = undefined;\n// release.installLocally\nexport const ENV_MOBILE_APP_RELEASE_INSTALL_LOCALLY = undefined;\n// release.removeReleaseOutputAfterLocalInstall\nexport const ENV_MOBILE_APP_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL = undefined;\n// release.releaseType\nexport const ENV_MOBILE_APP_RELEASE_RELEASE_TYPE = undefined;\n// release.autoReleaseUsingConfig\nexport const ENV_MOBILE_APP_RELEASE_AUTO_RELEASE_USING_CONFIG = undefined;\n// release.autoReleaseTaskName\nexport const ENV_MOBILE_APP_RELEASE_AUTO_RELEASE_TASK_NAME = undefined;\n// release.taonInstanceIp\nexport const ENV_MOBILE_APP_RELEASE_TAON_INSTANCE_IP = undefined;\n// release.skipNpmPublish\nexport const ENV_MOBILE_APP_RELEASE_SKIP_NPM_PUBLISH = undefined;\n// release.skipDeploy\nexport const ENV_MOBILE_APP_RELEASE_SKIP_DEPLOY = undefined;\n// release.skipTagGitPush\nexport const ENV_MOBILE_APP_RELEASE_SKIP_TAG_GIT_PUSH = undefined;\n// release.skipReleaseQuestion\nexport const ENV_MOBILE_APP_RELEASE_SKIP_RELEASE_QUESTION = undefined;\n// release.skipResolvingGitChanges\nexport const ENV_MOBILE_APP_RELEASE_SKIP_RESOLVING_GIT_CHANGES = undefined;\n// release.skipCodeCutting\nexport const ENV_MOBILE_APP_RELEASE_SKIP_CODE_CUTTING = undefined;\n// release.skipBuildingArtifacts\nexport const ENV_MOBILE_APP_RELEASE_SKIP_BUILDING_ARTIFACTS = undefined;\n// release.pushToAllOriginsWhenLocalReleaseBranch\nexport const ENV_MOBILE_APP_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH = undefined;\n// release.useLocalReleaseBranch\nexport const ENV_MOBILE_APP_RELEASE_USE_LOCAL_RELEASE_BRANCH = undefined;\n// copyToManager.beforeCopyHook\nexport const ENV_MOBILE_APP_COPY_TO_MANAGER_BEFORE_COPY_HOOK = undefined;\n// copyToManager.copyToLocations\nexport const ENV_MOBILE_APP_COPY_TO_MANAGER_COPY_TO_LOCATIONS = undefined;\n// copyToManager.copyToProjects\nexport const ENV_MOBILE_APP_COPY_TO_MANAGER_COPY_TO_PROJECTS = undefined;\n// copyToManager.skip\nexport const ENV_MOBILE_APP_COPY_TO_MANAGER_SKIP = undefined;\n// purpose\nexport const ENV_MOBILE_APP_PURPOSE = undefined;\n// recursiveAction\nexport const ENV_MOBILE_APP_RECURSIVE_ACTION = undefined;\n// isCiProcess\nexport const ENV_MOBILE_APP_IS_CI_PROCESS = undefined;\n// docker.additionalContainer\nexport const ENV_MOBILE_APP_DOCKER_ADDITIONAL_CONTAINER = undefined;\n// docker.skipStartInOrder\nexport const ENV_MOBILE_APP_DOCKER_SKIP_START_IN_ORDER = undefined;\n// docker.skipUsingMysqlDb\nexport const ENV_MOBILE_APP_DOCKER_SKIP_USING_MYSQL_DB = undefined;\n// THIS FILE IS GENERATED - DO NOT MODIFY","// THIS FILE IS GENERATED - DO NOT MODIFY\nimport { decodeEnv } from 'tnp-core/websql';\n// config.superUsers\nexport const ENV_NPM_LIB_AND_CLI_TOOL_CONFIG_SUPER_USERS = (): Promise<string> => decodeEnv(\"dariusz@taon.dev\");\n// config.googleSecret\nexport const ENV_NPM_LIB_AND_CLI_TOOL_CONFIG_GOOGLE_SECRET = (): Promise<string> => decodeEnv(\"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\");\n// config.googleClientId\nexport const ENV_NPM_LIB_AND_CLI_TOOL_CONFIG_GOOGLE_CLIENT_ID = '289576612173-2mh31b67pmq2qdes5jedno9tr1m542es.apps.googleusercontent.com';\n// loading.preAngularBootstrap.background\nexport const ENV_NPM_LIB_AND_CLI_TOOL_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND = '#fdebed';\n// loading.preAngularBootstrap.loader.name\nexport const ENV_NPM_LIB_AND_CLI_TOOL_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME = 'lds-default';\n// website.domain\nexport const ENV_NPM_LIB_AND_CLI_TOOL_WEBSITE_DOMAIN = 'session.example.domain.com';\n// website.title\nexport const ENV_NPM_LIB_AND_CLI_TOOL_WEBSITE_TITLE = 'Session';\n// website.useDomain\nexport const ENV_NPM_LIB_AND_CLI_TOOL_WEBSITE_USE_DOMAIN = true;\n// release.targetArtifact\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_TARGET_ARTIFACT = 'npm-lib-and-cli-tool';\n// release.envName\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_ENV_NAME = '__';\n// finishCallback\nexport const ENV_NPM_LIB_AND_CLI_TOOL_FINISH_CALLBACK = (): Promise<string> => decodeEnv({ });\n// container.only\nexport const ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_ONLY = undefined;\n// container.end\nexport const ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_END = undefined;\n// container.start\nexport const ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_START = undefined;\n// container.skipReleased\nexport const ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_SKIP_RELEASED = undefined;\n// container.skip\nexport const ENV_NPM_LIB_AND_CLI_TOOL_CONTAINER_SKIP = undefined;\n// init.branding\nexport const ENV_NPM_LIB_AND_CLI_TOOL_INIT_BRANDING = undefined;\n// init.struct\nexport const ENV_NPM_LIB_AND_CLI_TOOL_INIT_STRUCT = undefined;\n// build.pwa.disableServiceWorker\nexport const ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PWA_DISABLE_SERVICE_WORKER = undefined;\n// build.pwa.name\nexport const ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PWA_NAME = undefined;\n// build.pwa.short_name\nexport const ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PWA_SHORT_NAME = undefined;\n// build.pwa.start_url\nexport const ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PWA_START_URL = undefined;\n// build.electron.showDevTools\nexport const ENV_NPM_LIB_AND_CLI_TOOL_BUILD_ELECTRON_SHOW_DEV_TOOLS = undefined;\n// build.ssr\nexport const ENV_NPM_LIB_AND_CLI_TOOL_BUILD_SSR = undefined;\n// build.websql\nexport const ENV_NPM_LIB_AND_CLI_TOOL_BUILD_WEBSQL = undefined;\n// build.prod\nexport const ENV_NPM_LIB_AND_CLI_TOOL_BUILD_PROD = undefined;\n// build.overrideOutputPath\nexport const ENV_NPM_LIB_AND_CLI_TOOL_BUILD_OVERRIDE_OUTPUT_PATH = undefined;\n// build.baseHref\nexport const ENV_NPM_LIB_AND_CLI_TOOL_BUILD_BASE_HREF = undefined;\n// build.watch\nexport const ENV_NPM_LIB_AND_CLI_TOOL_BUILD_WATCH = undefined;\n// build.genOnlyClientCode\nexport const ENV_NPM_LIB_AND_CLI_TOOL_BUILD_GEN_ONLY_CLIENT_CODE = undefined;\n// loading.preAngularBootstrap.loader\nexport const ENV_NPM_LIB_AND_CLI_TOOL_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER = undefined;\n// release.cli.minify\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_MINIFY = undefined;\n// release.cli.includeNodeModules\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_INCLUDE_NODE_MODULES = undefined;\n// release.cli.uglify\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_UGLIFY = undefined;\n// release.cli.obscure\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_OBSCURE = undefined;\n// release.cli.compress\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_CLI_COMPRESS = undefined;\n// release.nodeBackendApp.minify\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_NODE_BACKEND_APP_MINIFY = undefined;\n// release.lib.removeDts\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_REMOVE_DTS = undefined;\n// release.lib.obscureFileByFile\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_OBSCURE_FILE_BY_FILE = undefined;\n// release.lib.uglifyFileByFile\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_UGLIFY_FILE_BY_FILE = undefined;\n// release.lib.includeSourceMaps\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_INCLUDE_SOURCE_MAPS = undefined;\n// release.lib.compress\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_COMPRESS = undefined;\n// release.lib.doNotIncludeLibFiles\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES = undefined;\n// release.resolvedNewVersion\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_RESOLVED_NEW_VERSION = undefined;\n// release.releaseVersionBumpType\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_RELEASE_VERSION_BUMP_TYPE = undefined;\n// release.envNumber\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_ENV_NUMBER = undefined;\n// release.installLocally\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_INSTALL_LOCALLY = undefined;\n// release.removeReleaseOutputAfterLocalInstall\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL = undefined;\n// release.releaseType\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_RELEASE_TYPE = undefined;\n// release.autoReleaseUsingConfig\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_AUTO_RELEASE_USING_CONFIG = undefined;\n// release.autoReleaseTaskName\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_AUTO_RELEASE_TASK_NAME = undefined;\n// release.taonInstanceIp\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_TAON_INSTANCE_IP = undefined;\n// release.skipNpmPublish\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_NPM_PUBLISH = undefined;\n// release.skipDeploy\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_DEPLOY = undefined;\n// release.skipTagGitPush\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_TAG_GIT_PUSH = undefined;\n// release.skipReleaseQuestion\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_RELEASE_QUESTION = undefined;\n// release.skipResolvingGitChanges\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_RESOLVING_GIT_CHANGES = undefined;\n// release.skipCodeCutting\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_CODE_CUTTING = undefined;\n// release.skipBuildingArtifacts\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_SKIP_BUILDING_ARTIFACTS = undefined;\n// release.pushToAllOriginsWhenLocalReleaseBranch\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH = undefined;\n// release.useLocalReleaseBranch\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RELEASE_USE_LOCAL_RELEASE_BRANCH = undefined;\n// copyToManager.beforeCopyHook\nexport const ENV_NPM_LIB_AND_CLI_TOOL_COPY_TO_MANAGER_BEFORE_COPY_HOOK = undefined;\n// copyToManager.copyToLocations\nexport const ENV_NPM_LIB_AND_CLI_TOOL_COPY_TO_MANAGER_COPY_TO_LOCATIONS = undefined;\n// copyToManager.copyToProjects\nexport const ENV_NPM_LIB_AND_CLI_TOOL_COPY_TO_MANAGER_COPY_TO_PROJECTS = undefined;\n// copyToManager.skip\nexport const ENV_NPM_LIB_AND_CLI_TOOL_COPY_TO_MANAGER_SKIP = undefined;\n// purpose\nexport const ENV_NPM_LIB_AND_CLI_TOOL_PURPOSE = undefined;\n// recursiveAction\nexport const ENV_NPM_LIB_AND_CLI_TOOL_RECURSIVE_ACTION = undefined;\n// isCiProcess\nexport const ENV_NPM_LIB_AND_CLI_TOOL_IS_CI_PROCESS = undefined;\n// docker.additionalContainer\nexport const ENV_NPM_LIB_AND_CLI_TOOL_DOCKER_ADDITIONAL_CONTAINER = undefined;\n// docker.skipStartInOrder\nexport const ENV_NPM_LIB_AND_CLI_TOOL_DOCKER_SKIP_START_IN_ORDER = undefined;\n// docker.skipUsingMysqlDb\nexport const ENV_NPM_LIB_AND_CLI_TOOL_DOCKER_SKIP_USING_MYSQL_DB = undefined;\n// THIS FILE IS GENERATED - DO NOT MODIFY","// THIS FILE IS GENERATED - DO NOT MODIFY\nimport { decodeEnv } from 'tnp-core/websql';\n// config.superUsers\nexport const ENV_VSCODE_PLUGIN_CONFIG_SUPER_USERS = (): Promise<string> => decodeEnv(\"dariusz@taon.dev\");\n// config.googleSecret\nexport const ENV_VSCODE_PLUGIN_CONFIG_GOOGLE_SECRET = (): Promise<string> => decodeEnv(\"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\");\n// config.googleClientId\nexport const ENV_VSCODE_PLUGIN_CONFIG_GOOGLE_CLIENT_ID = '289576612173-2mh31b67pmq2qdes5jedno9tr1m542es.apps.googleusercontent.com';\n// loading.preAngularBootstrap.background\nexport const ENV_VSCODE_PLUGIN_LOADING_PRE_ANGULAR_BOOTSTRAP_BACKGROUND = '#fdebed';\n// loading.preAngularBootstrap.loader.name\nexport const ENV_VSCODE_PLUGIN_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER_NAME = 'lds-default';\n// website.domain\nexport const ENV_VSCODE_PLUGIN_WEBSITE_DOMAIN = 'session.example.domain.com';\n// website.title\nexport const ENV_VSCODE_PLUGIN_WEBSITE_TITLE = 'Session';\n// website.useDomain\nexport const ENV_VSCODE_PLUGIN_WEBSITE_USE_DOMAIN = true;\n// release.targetArtifact\nexport const ENV_VSCODE_PLUGIN_RELEASE_TARGET_ARTIFACT = 'vscode-plugin';\n// release.envName\nexport const ENV_VSCODE_PLUGIN_RELEASE_ENV_NAME = '__';\n// finishCallback\nexport const ENV_VSCODE_PLUGIN_FINISH_CALLBACK = (): Promise<string> => decodeEnv({ });\n// container.only\nexport const ENV_VSCODE_PLUGIN_CONTAINER_ONLY = undefined;\n// container.end\nexport const ENV_VSCODE_PLUGIN_CONTAINER_END = undefined;\n// container.start\nexport const ENV_VSCODE_PLUGIN_CONTAINER_START = undefined;\n// container.skipReleased\nexport const ENV_VSCODE_PLUGIN_CONTAINER_SKIP_RELEASED = undefined;\n// container.skip\nexport const ENV_VSCODE_PLUGIN_CONTAINER_SKIP = undefined;\n// init.branding\nexport const ENV_VSCODE_PLUGIN_INIT_BRANDING = undefined;\n// init.struct\nexport const ENV_VSCODE_PLUGIN_INIT_STRUCT = undefined;\n// build.pwa.disableServiceWorker\nexport const ENV_VSCODE_PLUGIN_BUILD_PWA_DISABLE_SERVICE_WORKER = undefined;\n// build.pwa.name\nexport const ENV_VSCODE_PLUGIN_BUILD_PWA_NAME = undefined;\n// build.pwa.short_name\nexport const ENV_VSCODE_PLUGIN_BUILD_PWA_SHORT_NAME = undefined;\n// build.pwa.start_url\nexport const ENV_VSCODE_PLUGIN_BUILD_PWA_START_URL = undefined;\n// build.electron.showDevTools\nexport const ENV_VSCODE_PLUGIN_BUILD_ELECTRON_SHOW_DEV_TOOLS = undefined;\n// build.ssr\nexport const ENV_VSCODE_PLUGIN_BUILD_SSR = undefined;\n// build.websql\nexport const ENV_VSCODE_PLUGIN_BUILD_WEBSQL = undefined;\n// build.prod\nexport const ENV_VSCODE_PLUGIN_BUILD_PROD = undefined;\n// build.overrideOutputPath\nexport const ENV_VSCODE_PLUGIN_BUILD_OVERRIDE_OUTPUT_PATH = undefined;\n// build.baseHref\nexport const ENV_VSCODE_PLUGIN_BUILD_BASE_HREF = undefined;\n// build.watch\nexport const ENV_VSCODE_PLUGIN_BUILD_WATCH = undefined;\n// build.genOnlyClientCode\nexport const ENV_VSCODE_PLUGIN_BUILD_GEN_ONLY_CLIENT_CODE = undefined;\n// loading.preAngularBootstrap.loader\nexport const ENV_VSCODE_PLUGIN_LOADING_PRE_ANGULAR_BOOTSTRAP_LOADER = undefined;\n// release.cli.minify\nexport const ENV_VSCODE_PLUGIN_RELEASE_CLI_MINIFY = undefined;\n// release.cli.includeNodeModules\nexport const ENV_VSCODE_PLUGIN_RELEASE_CLI_INCLUDE_NODE_MODULES = undefined;\n// release.cli.uglify\nexport const ENV_VSCODE_PLUGIN_RELEASE_CLI_UGLIFY = undefined;\n// release.cli.obscure\nexport const ENV_VSCODE_PLUGIN_RELEASE_CLI_OBSCURE = undefined;\n// release.cli.compress\nexport const ENV_VSCODE_PLUGIN_RELEASE_CLI_COMPRESS = undefined;\n// release.nodeBackendApp.minify\nexport const ENV_VSCODE_PLUGIN_RELEASE_NODE_BACKEND_APP_MINIFY = undefined;\n// release.lib.removeDts\nexport const ENV_VSCODE_PLUGIN_RELEASE_LIB_REMOVE_DTS = undefined;\n// release.lib.obscureFileByFile\nexport const ENV_VSCODE_PLUGIN_RELEASE_LIB_OBSCURE_FILE_BY_FILE = undefined;\n// release.lib.uglifyFileByFile\nexport const ENV_VSCODE_PLUGIN_RELEASE_LIB_UGLIFY_FILE_BY_FILE = undefined;\n// release.lib.includeSourceMaps\nexport const ENV_VSCODE_PLUGIN_RELEASE_LIB_INCLUDE_SOURCE_MAPS = undefined;\n// release.lib.compress\nexport const ENV_VSCODE_PLUGIN_RELEASE_LIB_COMPRESS = undefined;\n// release.lib.doNotIncludeLibFiles\nexport const ENV_VSCODE_PLUGIN_RELEASE_LIB_DO_NOT_INCLUDE_LIB_FILES = undefined;\n// release.resolvedNewVersion\nexport const ENV_VSCODE_PLUGIN_RELEASE_RESOLVED_NEW_VERSION = undefined;\n// release.releaseVersionBumpType\nexport const ENV_VSCODE_PLUGIN_RELEASE_RELEASE_VERSION_BUMP_TYPE = undefined;\n// release.envNumber\nexport const ENV_VSCODE_PLUGIN_RELEASE_ENV_NUMBER = undefined;\n// release.installLocally\nexport const ENV_VSCODE_PLUGIN_RELEASE_INSTALL_LOCALLY = undefined;\n// release.removeReleaseOutputAfterLocalInstall\nexport const ENV_VSCODE_PLUGIN_RELEASE_REMOVE_RELEASE_OUTPUT_AFTER_LOCAL_INSTALL = undefined;\n// release.releaseType\nexport const ENV_VSCODE_PLUGIN_RELEASE_RELEASE_TYPE = undefined;\n// release.autoReleaseUsingConfig\nexport const ENV_VSCODE_PLUGIN_RELEASE_AUTO_RELEASE_USING_CONFIG = undefined;\n// release.autoReleaseTaskName\nexport const ENV_VSCODE_PLUGIN_RELEASE_AUTO_RELEASE_TASK_NAME = undefined;\n// release.taonInstanceIp\nexport const ENV_VSCODE_PLUGIN_RELEASE_TAON_INSTANCE_IP = undefined;\n// release.skipNpmPublish\nexport const ENV_VSCODE_PLUGIN_RELEASE_SKIP_NPM_PUBLISH = undefined;\n// release.skipDeploy\nexport const ENV_VSCODE_PLUGIN_RELEASE_SKIP_DEPLOY = undefined;\n// release.skipTagGitPush\nexport const ENV_VSCODE_PLUGIN_RELEASE_SKIP_TAG_GIT_PUSH = undefined;\n// release.skipReleaseQuestion\nexport const ENV_VSCODE_PLUGIN_RELEASE_SKIP_RELEASE_QUESTION = undefined;\n// release.skipResolvingGitChanges\nexport const ENV_VSCODE_PLUGIN_RELEASE_SKIP_RESOLVING_GIT_CHANGES = undefined;\n// release.skipCodeCutting\nexport const ENV_VSCODE_PLUGIN_RELEASE_SKIP_CODE_CUTTING = undefined;\n// release.skipBuildingArtifacts\nexport const ENV_VSCODE_PLUGIN_RELEASE_SKIP_BUILDING_ARTIFACTS = undefined;\n// release.pushToAllOriginsWhenLocalReleaseBranch\nexport const ENV_VSCODE_PLUGIN_RELEASE_PUSH_TO_ALL_ORIGINS_WHEN_LOCAL_RELEASE_BRANCH = undefined;\n// release.useLocalReleaseBranch\nexport const ENV_VSCODE_PLUGIN_RELEASE_USE_LOCAL_RELEASE_BRANCH = undefined;\n// copyToManager.beforeCopyHook\nexport const ENV_VSCODE_PLUGIN_COPY_TO_MANAGER_BEFORE_COPY_HOOK = undefined;\n// copyToManager.copyToLocations\nexport const ENV_VSCODE_PLUGIN_COPY_TO_MANAGER_COPY_TO_LOCATIONS = undefined;\n// copyToManager.copyToProjects\nexport const ENV_VSCODE_PLUGIN_COPY_TO_MANAGER_COPY_TO_PROJECTS = undefined;\n// copyToManager.skip\nexport const ENV_VSCODE_PLUGIN_COPY_TO_MANAGER_SKIP = undefined;\n// purpose\nexport const ENV_VSCODE_PLUGIN_PURPOSE = undefined;\n// recursiveAction\nexport const ENV_VSCODE_PLUGIN_RECURSIVE_ACTION = undefined;\n// isCiProcess\nexport const ENV_VSCODE_PLUGIN_IS_CI_PROCESS = undefined;\n// docker.additionalContainer\nexport const ENV_VSCODE_PLUGIN_DOCKER_ADDITIONAL_CONTAINER = undefined;\n// docker.skipStartInOrder\nexport const ENV_VSCODE_PLUGIN_DOCKER_SKIP_START_IN_ORDER = undefined;\n// docker.skipUsingMysqlDb\nexport const ENV_VSCODE_PLUGIN_DOCKER_SKIP_USING_MYSQL_DB = undefined;\n// THIS FILE IS GENERATED - DO NOT MODIFY","// THIS FILE IS GENERATED - DO NOT MODIFY\n/**\n * Autogenerated by current cli tool\n */\nexport const BUILD_FRAMEWORK_CLI_NAME = 'tnp';\n/**\n * This value can be change in taon.jsonc (appId)\n */\nexport const APP_ID = 'com.domain.example.session';\n/**\n * Autogenerated by current cli tool\n */\nexport const BUILD_BASE_HREF = '';\n/**\n * This value can be change in taon.jsonc (overrideNpmName)\n */\nexport const PROJECT_NPM_NAME = '@taon-dev/session';\n/**\n * Taon version from you project taon.json\n */\nexport const CURRENT_PACKAGE_TAON_VERSION = 'v21';\n/**\n * Autogenerated by current cli tool. Use *tnp release* to bump version.\n */\nexport const CURRENT_PACKAGE_VERSION = '21.0.240';\n\nexport namespace TAON_CLOUDFLARE_WORKERS_URLS {\n\texport const CwCustomSeoni4B382 = 'https://cw-custom-seoni-4b382.darekf77.workers.dev';\n}\n\n// THIS FILE IS GENERATED - DO NOT MODIFY\n ","export function myOrgProj() {\n\n}\n","//#region imports\nimport { TaonBaseRepository, TaonRepository } from 'taon/websql';\n\nimport { TaonGroupEntity } from './taon-group.entity';\n//#endregion\n\n@TaonRepository({\n className: 'TaonGroupRepository',\n})\nexport class TaonGroupRepository extends TaonBaseRepository<TaonGroupEntity> {\n entityClassResolveFn: () => typeof TaonGroupEntity = () => TaonGroupEntity;\n\n //#region API / get groups for user id\n async getGroupsForUserId(\n userId: number | string,\n ): Promise<TaonGroupEntity[]> {\n //#region @websqlFunc\n\n return await this.find({\n where: {\n userGroups: {\n userId: Number(userId),\n },\n },\n relations: {\n groupRoles: {\n role: true,\n },\n },\n });\n\n //#endregion\n }\n //#endregion\n}\n","//#region imports\nimport { TaonBaseRepository, TaonRepository } from 'taon/websql';\nimport { Raw } from 'taon-typeorm/websql';\n\nimport { TaonPermissionEntity } from './taon-permission.entity';\n//#endregion\n\n@TaonRepository({\n className: 'TaonPermissionRepository',\n})\nexport class TaonPermissionRepository extends TaonBaseRepository<TaonPermissionEntity> {\n entityClassResolveFn: () => typeof TaonPermissionEntity = () =>\n TaonPermissionEntity;\n\n //#region methods / get permissions for user id\n async getPermissionsForUserId(\n userId: number | string,\n ): Promise<TaonPermissionEntity[]> {\n // TODO\n return [];\n }\n //#endregion\n\n //#region methods / update description\n async updateDescription(\n permissionId: number,\n description: string,\n ): Promise<TaonPermissionEntity> {\n //#region @websqlFunc\n\n const permission = await this.findOne({\n where: {\n id: permissionId as any,\n },\n });\n\n if (!permission) {\n return null;\n }\n\n permission.description = description;\n\n return await this.save(permission);\n\n //#endregion\n }\n //#endregion\n}\n","//#region imports\nimport { TaonBaseRepository, TaonRepository } from 'taon/websql';\nimport { Raw } from 'taon-typeorm/websql';\n\nimport { TaonRoleEntity } from './taon-role.entity';\n//#endregion\n\n@TaonRepository({\n className: 'TaonRoleRepository',\n})\nexport class TaonRoleRepository extends TaonBaseRepository<TaonRoleEntity> {\n entityClassResolveFn: () => typeof TaonRoleEntity = () => TaonRoleEntity;\n\n async getRolesForUserId(userId: number | string): Promise<TaonRoleEntity[]> {\n // TODO\n return [];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { TaonBaseClass, TaonBaseProvider, TaonProvider } from 'taon/websql';\nimport { CoreModels, GlobalStorage, UtilsOs, _ } from 'tnp-core/websql';\n\n//#region config classes\n\n//#region config classes / cookies\nconst isProduction =\n !GlobalStorage.get('TAON_LOCAL_DEV') &&\n (UtilsOs.isRunningInDocker() || UtilsOs.isRunningInCloudflareWorker());\n\nexport class TaonSessionCookiesConfig extends TaonBaseClass {\n declare public ACCESS_TOKEN_SECRET: string;\n\n declare public REFRESH_TOKEN_SECRET: string;\n\n declare public ACCESS_TOKEN_EXPIRES: string;\n\n declare public REFRESH_TOKEN_EXPIRES_SECONDS: number;\n\n declare public accessTokenCookieName: string;\n\n declare public refreshTokenCookieName: string;\n\n declare public sameSite: 'lax' | 'strict' | 'none';\n\n declare public secure: boolean;\n\n declare public httpOnly: boolean;\n\n constructor() {\n super();\n/* */\n/* */\n/* */\n \n this.ACCESS_TOKEN_EXPIRES = '15m';\n this.REFRESH_TOKEN_EXPIRES_SECONDS = 60 * 60 * 24 * 7;\n this.accessTokenCookieName = 'taon_access_token';\n this.refreshTokenCookieName = 'taon_refresh_token';\n this.sameSite = 'lax';\n\n this.secure = isProduction;\n\n this.httpOnly = true;\n }\n}\n//#endregion\n\n//#region config classes / social login config\nexport class TaonSessionSocialLoginConfig extends TaonBaseClass {\n declare public google: {\n enabled?: boolean;\n googleClientId?: string;\n googleSecret?: string;\n };\n\n declare public facebook: {\n enabled?: boolean;\n facebookClientId?: string;\n };\n\n declare public microsoft: {\n enabled?: boolean;\n microsoftClientId?: string;\n };\n\n declare public apple: {\n enabled?: boolean;\n appleClientId?: string;\n };\n\n declare public github: {\n enabled?: boolean;\n githubClientId?: string;\n };\n\n constructor() {\n super();\n this.google = {\n enabled: false,\n };\n this.facebook = {\n enabled: false,\n };\n this.microsoft = {\n enabled: false,\n };\n this.apple = {\n enabled: false,\n };\n }\n\n public get isAnySocialLoginEnabled(): boolean {\n return !!(\n this.google.enabled ||\n this.microsoft.enabled ||\n this.facebook.enabled ||\n this.apple.enabled\n );\n }\n}\n//#endregion\n\n//#region config classes / password requirements\nexport class TaonSessionPasswordRequirementsConfig {\n declare public minLength: number;\n\n declare public maxLength: number;\n\n declare public requireLowercase: boolean;\n\n declare public requireUppercase: boolean;\n\n declare public requireNumber: boolean;\n\n declare public requireSpecialCharacter: boolean;\n\n declare public specialCharacters: string;\n\n constructor() {\n this.minLength = 8;\n this.maxLength = 128;\n\n this.requireLowercase = false;\n this.requireUppercase = false;\n this.requireNumber = false;\n this.requireSpecialCharacter = false;\n\n this.specialCharacters = '!@#$%^&*';\n }\n}\n//#endregion\n\n//#region config classes / registration requirements\nexport class TaonSessionRegistrationConfig {\n /**\n * ⌛ TODO in progress\n */\n declare public enabled: boolean;\n\n /**\n * ⌛ TODO in progress\n */\n declare public requireEmailConfirmation: boolean;\n\n /**\n * ⌛ TODO in progress\n * Registration allowed only when user has\n * invitation code / registration password.\n */\n declare public requireRegistrationPassword: boolean;\n\n /**\n * ⌛ TODO in progress\n */\n declare public allowDuplicateEmail: boolean;\n\n constructor() {\n this.enabled = true;\n this.requireEmailConfirmation = false;\n this.requireRegistrationPassword = true;\n this.allowDuplicateEmail = false;\n }\n}\n//#endregion\n\n//#region config classes / login config\nexport class TaonSessionLoginConfig extends TaonBaseClass {\n declare public diableLoginByEmail: boolean;\n\n declare public defaultEmail?: string;\n\n declare public defaultPassword?: string;\n\n declare public linkToDashboard: string;\n\n declare public displayDashboardButton: boolean;\n\n /**\n * TODO\n * Whether FE may check whether email exists\n * before showing password/register screen.\n */\n // declare public exposeEmailExistence: boolean;\n\n /**\n * TODO\n */\n // declare public rememberMe: boolean;\n\n constructor() {\n super();\n this.diableLoginByEmail = false;\n this.linkToDashboard = '/';\n this.displayDashboardButton = true;\n // this.exposeEmailExistence = true;\n // this.rememberMe = true;\n if (isProduction) {\n delete this.defaultEmail;\n delete this.defaultPassword;\n }\n }\n}\n//#endregion\n\n//#region config classes / check if human config\nexport class TaonSessionCheckIfHumanConfig {\n declare public duringLoginRegisterEmail: boolean;\n\n declare public duringRegistrationPassword: boolean;\n\n declare public duringLoginPassword: boolean;\n\n declare public duringPasswordReset: boolean;\n\n constructor() {\n this.duringLoginRegisterEmail = false;\n this.duringRegistrationPassword = false;\n this.duringLoginPassword = false;\n\n this.duringPasswordReset = false;\n }\n}\n//#endregion\n\n//#region config classes / sessions\nexport class TaonSessionSessionsConfig {\n /**\n * Multiple devices / browsers may stay logged in.\n */\n declare public allowMultipleSessions: boolean;\n\n /**\n * 0 = unlimited\n */\n declare public maxSessionsPerUser: number;\n\n /**\n * Update last activity timestamp.\n */\n declare public trackActivity: boolean;\n\n /**\n * Optional idle timeout.\n * 0 = disabled\n */\n declare public idleTimeoutSeconds: number;\n\n constructor() {\n this.allowMultipleSessions = true;\n this.maxSessionsPerUser = 0;\n this.trackActivity = true;\n this.idleTimeoutSeconds = 0;\n }\n}\n//#endregion\n\n//#region config classes / password recovery config\nexport class TaonSessionPasswordRecoveryConfig {\n declare public enabled: boolean;\n\n declare public tokenExpiresSeconds: number;\n\n declare public invalidateExistingSessionsAfterReset: boolean;\n\n constructor() {\n this.enabled = true;\n this.tokenExpiresSeconds = 60 * 60; // 1h\n this.invalidateExistingSessionsAfterReset = true;\n }\n}\n//#endregion\n\n//#region config classes / email confirmation config\nexport class TaonSessionEmailConfirmationConfig {\n declare public enabled: boolean;\n\n declare public tokenExpiresSeconds: number;\n\n declare public allowResend: boolean;\n\n declare public resendCooldownSeconds: number;\n\n constructor() {\n this.enabled = true;\n this.tokenExpiresSeconds = 60 * 60 * 24; // 24h\n this.allowResend = true;\n this.resendCooldownSeconds = 60;\n }\n}\n//#endregion\n\n//#region config classes / security config\nexport class TaonSessionSecurityConfig {\n /**\n * Logout all sessions after password change.\n */\n declare public invalidateSessionsAfterPasswordChange: boolean;\n\n /**\n * Rotate refresh token after successful refresh.\n */\n declare public rotateRefreshTokens: boolean;\n\n /**\n * Detect reuse of already rotated refresh tokens.\n */\n declare public detectRefreshTokenReuse: boolean;\n\n constructor() {\n this.invalidateSessionsAfterPasswordChange = true;\n this.rotateRefreshTokens = true;\n this.detectRefreshTokenReuse = true;\n }\n}\n//#endregion\n\n//#region config classes / rate limit config\nexport class TaonSessionRateLimitConfig {\n declare public maxAttempts: number;\n\n declare public windowSeconds: number;\n\n constructor(maxAttempts: number, windowSeconds: number) {\n this.maxAttempts = maxAttempts;\n this.windowSeconds = windowSeconds;\n }\n}\n//#endregion\n\n//#region config classes / rate limits config\nexport class TaonSessionRateLimitsConfig {\n declare public loginAttempts: TaonSessionRateLimitConfig;\n\n declare public passwordReset: TaonSessionRateLimitConfig;\n\n declare public emailConfirmationResend: TaonSessionRateLimitConfig;\n\n constructor() {\n this.loginAttempts = new TaonSessionRateLimitConfig(10, 60);\n\n this.passwordReset = new TaonSessionRateLimitConfig(5, 60 * 60);\n\n this.emailConfirmationResend = new TaonSessionRateLimitConfig(5, 60 * 60);\n }\n}\n//#endregion\n\n//#endregion\n\nexport type TaonSessionConfig = Omit<\n CoreModels.DeepPartial<TaonSessionProvider>,\n | 'ctx'\n | '_'\n | 'getOriginalPrototype'\n | 'getOriginalConstructor'\n | '__endpoint_context__'\n>;\n\n@TaonProvider({\n className: 'TaonSessionProvider',\n})\nexport class TaonSessionProvider extends TaonBaseProvider {\n /**\n * Production means here - it runs on real server\n */\n isProduction = isProduction;\n\n superUsersEmails: string[] = [];\n\n /**\n * Resolve social accounts by verified email as well as provider identity.\n */\n linkSocialAccountEmail = false;\n\n cookies = new TaonSessionCookiesConfig();\n\n login = new TaonSessionLoginConfig();\n\n socialLogin = new TaonSessionSocialLoginConfig();\n\n // passwordRequirements = new TaonSessionPasswordRequirementsConfig();\n\n // registration = new TaonSessionRegistrationConfig();\n\n // checkIfHuman = new TaonSessionCheckIfHumanConfig();\n\n // socialLogin = new TaonSessionSocialLoginConfig();\n\n // sessions = new TaonSessionSessionsConfig();\n\n // passwordRecovery = new TaonSessionPasswordRecoveryConfig();\n\n // emailConfirmation = new TaonSessionEmailConfirmationConfig();\n\n // security = new TaonSessionSecurityConfig();\n\n // rateLimits = new TaonSessionRateLimitsConfig();\n\n async _() {\n // TODO @UNCOMMENT disabled login by email when not on localhost\n const originUrl = this.ctx.frontendHostUri;\n const isLocalhost =\n originUrl.hostname === 'localhost' ||\n originUrl.hostname === '127.0.0.1' ||\n originUrl.hostname === '[::1]';\n if (!isLocalhost) {\n this.login.diableLoginByEmail = true;\n }\n }\n\n clone(): TaonSessionConfig {\n return {\n isProduction: this.isProduction,\n linkSocialAccountEmail: this.linkSocialAccountEmail,\n cookies: this.cookies.clone(),\n login: this.login.clone(),\n socialLogin: this.socialLogin.clone(),\n };\n }\n}\n","//#region imports\n\nimport type express from 'express';\nimport { TaonBaseKvRepository, TaonRepository } from 'taon/websql';\nimport { UtilsJwt } from 'tnp-core/websql';\n\nimport { TaonSessionProvider } from './taon-session.provider';\n\n//#endregion\n\n@TaonRepository({\n className: 'TaonSessionKvRepository',\n})\nexport class TaonSessionKvRepository extends TaonBaseKvRepository<\n Record<\n string,\n {\n userId: number;\n expiresAt: number;\n sessionId?: number;\n }\n >\n> {\n taonSessionProvider = this.injectProvider(TaonSessionProvider);\n\n //#region create access token\n public async createAccessToken(\n userId: number,\n sessionId?: number,\n ): Promise<string> {\n //#region @websqlFunc\n return await UtilsJwt.sign(\n { userId, sessionId },\n this.taonSessionProvider.cookies.ACCESS_TOKEN_SECRET,\n {\n expiresIn: this.taonSessionProvider.cookies.ACCESS_TOKEN_EXPIRES,\n },\n );\n //#endregion\n }\n //#endregion\n\n //#region create refresh token\n public async createRefreshToken(\n userId: number,\n sessionId?: number,\n ): Promise<string> {\n //#region @websqlFunc\n const rtId = crypto.randomUUID();\n\n const expiresAt =\n Date.now() +\n this.taonSessionProvider.cookies.REFRESH_TOKEN_EXPIRES_SECONDS * 1000;\n\n await this.set(rtId, { userId, expiresAt, sessionId });\n\n const token = await UtilsJwt.sign(\n { rtId },\n this.taonSessionProvider.cookies.REFRESH_TOKEN_SECRET,\n {\n expiresIn:\n this.taonSessionProvider.cookies.REFRESH_TOKEN_EXPIRES_SECONDS,\n },\n );\n\n return token;\n //#endregion\n }\n //#endregion\n\n //#region set auth cookies\n public setAuthCookies(\n res: express.Response,\n accessToken: string,\n refreshToken: string,\n ): void {\n //#region @websqlFunc\n res.cookie('accessToken', accessToken, {\n httpOnly: this.taonSessionProvider.cookies.httpOnly,\n secure: this.taonSessionProvider.cookies.secure, // set true in production (HTTPS)\n sameSite: 'lax',\n path: '/',\n maxAge: 1000 * 60 * 15,\n });\n\n res.cookie('refreshToken', refreshToken, {\n httpOnly: this.taonSessionProvider.cookies.httpOnly,\n secure: this.taonSessionProvider.cookies.secure,\n sameSite: 'strict',\n path: '/refresh',\n maxAge:\n 1000 * this.taonSessionProvider.cookies.REFRESH_TOKEN_EXPIRES_SECONDS,\n });\n //#endregion\n }\n //#endregion\n\n //#region clear auth cookies\n public clearAuthCookies(res: express.Response): void {\n //#region @websqlFunc\n res.cookie('accessToken', '', { maxAge: 0 });\n res.cookie('refreshToken', '', { maxAge: 0 });\n //#endregion\n }\n //#endregion\n\n //#region get token from request\n public getTokenFromRequest(req: express.Request): string | null {\n //#region @websqlFunc\n const cookieToken = req.cookies?.accessToken;\n\n const authHeader = req.headers['authorization'];\n const headerToken =\n authHeader && authHeader.startsWith('Bearer ')\n ? authHeader.slice(7)\n : null;\n\n return cookieToken || headerToken || null;\n //#endregion\n }\n //#endregion\n}\n","//#region imports\nimport {\n getStatusCode,\n getStatusText,\n HttpStatusEnum,\n Taon,\n TaonBaseRepository,\n TaonRepository,\n TaonServerMiddlewareInterceptOptions,\n} from 'taon/websql';\nimport { Raw } from 'taon-typeorm/websql';\n\nimport { TaonSessionEntity } from './taon-session.entity';\nimport { TaonSessionKvRepository } from './taon-session.kv.repository';\nimport { UtilsJwt } from 'tnp-core/websql';\nimport { TaonSessionProvider } from './taon-session.provider';\n//#endregion\n\n@TaonRepository({\n className: 'TaonSessionRepository',\n})\nexport class TaonSessionRepository extends TaonBaseRepository<TaonSessionEntity> {\n //#region fields & getters\n entityClassResolveFn: () => typeof TaonSessionEntity = () =>\n TaonSessionEntity;\n\n private readonly taonSessionKvRepository = this.injectKvRepository(\n TaonSessionKvRepository,\n );\n\n private readonly taonSessionProvider =\n this.injectProvider(TaonSessionProvider);\n //#endregion\n\n //#region create session entity\n async createSession(\n partialSessino: Partial<TaonSessionEntity>,\n ): Promise<TaonSessionEntity> {\n //#region @websqlFunc\n let session = new TaonSessionEntity().clone(partialSessino);\n session = await this.save(session);\n return session;\n //#endregion\n }\n //#endregion\n\n async requireActiveSession(\n sessionId: number,\n userId: number,\n ): Promise<TaonSessionEntity> {\n //#region @websqlFunc\n const session = await this.findOne({\n select: { id: true, userId: true, revokedAt: true, expiresAt: true },\n where: { id: sessionId, userId },\n });\n // console.log('requireActiveSession', {\n // sessionId,\n // userId,\n // });\n\n if (\n !session ||\n session.revokedAt ||\n !session.expiresAt ||\n new Date(session.expiresAt).getTime() <= Date.now()\n ) {\n Taon.error({\n context: 'requireActiveSession',\n message: getStatusText(HttpStatusEnum.INVALID_TOKEN),\n status: getStatusCode(HttpStatusEnum.INVALID_TOKEN),\n });\n }\n return session;\n //#endregion\n }\n\n async touchSession(\n sessionId: number,\n userId: number,\n refresh = false,\n ): Promise<void> {\n //#region @websqlFunc\n await this.requireActiveSession(sessionId, userId);\n await this.repo.update(\n { id: sessionId, userId },\n {\n lastActivityAt: new Date(),\n ...(refresh\n ? {\n expiresAt: new Date(\n Date.now() +\n this.taonSessionProvider.cookies\n .REFRESH_TOKEN_EXPIRES_SECONDS *\n 1000,\n ),\n }\n : {}),\n },\n );\n //#endregion\n }\n\n async revokeSession(sessionId: number, userId: number): Promise<void> {\n //#region @websqlFunc\n await this.repo.update(\n { id: sessionId, userId },\n {\n revokedAt: new Date(),\n revokeReason: 'logout',\n },\n );\n //#endregion\n }\n\n //#region get session by id\n async getSessionBy(userId: number | string): Promise<TaonSessionEntity> {\n // TODO not only id ?\n // let session = new TaonSessionEntity().clone(partialSessino);\n // session = await this.save(session);\n return null;\n }\n //#endregion\n\n //#region throw if not authroized\n async throwIfNotAuthenticated({\n req,\n res,\n next,\n }: Pick<TaonServerMiddlewareInterceptOptions, 'req' | 'res'> &\n Partial<\n Pick<TaonServerMiddlewareInterceptOptions, 'next'>\n >): Promise<void> {\n //#region @websqlFunc\n if (!next) {\n next = () => void 0;\n }\n const token = this.taonSessionKvRepository.getTokenFromRequest(req);\n\n if (!token) {\n Taon.error({\n message: getStatusText(HttpStatusEnum.NO_TOKEN),\n status: getStatusCode(HttpStatusEnum.NO_TOKEN),\n });\n return;\n }\n\n let payload: UtilsJwt.JwtPayload;\n try {\n payload = await UtilsJwt.verify(\n token,\n this.taonSessionProvider.cookies.ACCESS_TOKEN_SECRET,\n );\n } catch (err) {\n Taon.error({\n context: 'throwIfNotAuthenticated',\n message: getStatusText(HttpStatusEnum.INVALID_TOKEN),\n status: getStatusCode(HttpStatusEnum.INVALID_TOKEN),\n });\n return;\n }\n if (\n typeof payload.userId !== 'number' ||\n !Number.isSafeInteger(payload.userId) ||\n payload.userId <= 0\n ) {\n Taon.error({\n context: 'throwIfNotAuthenticated',\n message: getStatusText(HttpStatusEnum.INVALID_TOKEN),\n status: getStatusCode(HttpStatusEnum.INVALID_TOKEN),\n });\n return;\n }\n if (payload.sessionId !== undefined) {\n if (\n typeof payload.sessionId !== 'number' ||\n !Number.isSafeInteger(payload.sessionId) ||\n payload.sessionId <= 0\n ) {\n Taon.error({\n context: 'throwIfNotAuthenticated',\n message: getStatusText(HttpStatusEnum.INVALID_TOKEN),\n status: getStatusCode(HttpStatusEnum.INVALID_TOKEN),\n });\n return;\n }\n await this.touchSession(payload.sessionId, payload.userId);\n }\n Object.assign(req, { userId: payload.userId });\n next();\n //#endregion\n }\n //#endregion\n}\n","//#region imports\nimport { getStatusCode, HttpStatusEnum, Taon, TaonBaseRepository, TaonRepository } from 'taon/websql';\nimport { QueryFailedError } from 'taon-typeorm/websql';\nimport { Translation } from '@taon-dev/i18n/websql';\n\nimport { TaonSessionUserEntity } from './taon-session-user.entity';\n//#endregion\n\nconst t = Translation.for('src/lib/taon-session-user/taon-session-user.repository.ts', {} as any);\n\n@TaonRepository({\n className: 'TaonSessionUserRepository',\n})\nexport class TaonSessionUserRepository extends TaonBaseRepository<TaonSessionUserEntity> {\n entityClassResolveFn: () => typeof TaonSessionUserEntity = () =>\n TaonSessionUserEntity;\n\n async createUser(): Promise<TaonSessionUserEntity> {\n //#region @websqlFunc\n\n const user = new TaonSessionUserEntity();\n\n return await this.save(user);\n\n //#endregion\n }\n\n normalizeUsername(username: string): string {\n //#region @websqlFunc\n if (typeof username !== 'string' || !username.trim() || username.trim().length > 255) {\n Taon.error({\n context: 'normalizeUsername',\n status: getStatusCode(HttpStatusEnum.BAD_REQUEST),\n message: t.gettext('Username must contain between 1 and 255 characters.'),\n });\n }\n return username.trim();\n //#endregion\n }\n\n async isUsernameAvailable(username: string, userId: number): Promise<boolean> {\n //#region @websqlFunc\n const existing = await this.findOne({\n select: { id: true },\n where: { username: this.normalizeUsername(username) },\n });\n return !existing || existing.id === userId;\n //#endregion\n }\n\n async changeUsername(userId: number, username: string): Promise<void> {\n //#region @websqlFunc\n const normalizedUsername = this.normalizeUsername(username);\n if (!(await this.isUsernameAvailable(normalizedUsername, userId))) {\n Taon.error({\n context: 'changeUsername',\n status: getStatusCode(HttpStatusEnum.CONFLICT),\n message: t.gettext('This username is already taken.'),\n });\n }\n try {\n const result = await this.repo.update(userId, { username: normalizedUsername });\n if (!result.affected) {\n Taon.error({\n context: 'changeUsername',\n status: getStatusCode(HttpStatusEnum.NOT_FOUND),\n message: t.gettext('User not found.'),\n });\n }\n } catch (error) {\n if (error instanceof QueryFailedError &&\n !(await this.isUsernameAvailable(normalizedUsername, userId))) {\n Taon.error({\n context: 'changeUsername',\n status: getStatusCode(HttpStatusEnum.CONFLICT),\n message: t.gettext('This username is already taken.'),\n });\n }\n throw error;\n }\n //#endregion\n }\n\n async getUserById(\n userId: number | string,\n ): Promise<TaonSessionUserEntity | null> {\n //#region @websqlFunc\n\n const user = await this.findOne({\n where: {\n id: userId as any,\n },\n relations: {\n identities: true,\n },\n });\n\n for (const identity of user?.identities || []) {\n delete identity.passwordHash;\n }\n\n return user;\n //#endregion\n }\n}\n","//#region imports\nimport { TaonSessionUserEntity } from '../taon-session-user/taon-session-user.entity';\nimport { TaonSessionEntity } from '../taon-session/taon-session.entity';\nimport {\n CustomColumn,\n Taon,\n TaonBaseAbstractEntity,\n TaonBaseEntity,\n TaonEntity,\n} from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n\n//#endregion\n\nexport interface TaonAuthorizationSchema {\n group: string;\n role: string;\n permission: string;\n}\n\n@TaonEntity({\n className: 'TaonAuthContextEntity',\n createTable: false,\n})\nexport class TaonAuthContextEntity<\n AUTH extends TaonAuthorizationSchema = {\n group: string;\n role: string;\n permission: string;\n },\n> extends TaonBaseEntity<TaonAuthContextEntity> {\n user!: TaonSessionUserEntity;\n\n isSuperUser: boolean = false;\n\n isLocalhostBackend: boolean = false;\n\n session!: TaonSessionEntity;\n\n groups: AUTH['group'][] = [];\n\n roles: AUTH['role'][] = [];\n\n permissions: AUTH['permission'][] = [];\n\n hasPermission(permission: AUTH['permission']): boolean {\n if (this.isSuperUser) {\n return true;\n }\n return this.permissions.includes(permission);\n }\n\n hasRole(role: AUTH['role']): boolean {\n if (this.isSuperUser) {\n return true;\n }\n return this.roles.includes(role);\n }\n\n isInGroup(group: AUTH['group']): boolean {\n if (this.isSuperUser) {\n return true;\n }\n return this.groups.includes(group);\n }\n}\n","//#region imports\n\nimport { TaonRolePermissionRepository } from '../taon-role/taon-role-permission.repository';\nimport { TaonGroupRoleRepository } from '../taon-group/taon-group-role.repository';\n\nimport { TaonBaseCustomRepository, TaonRepository } from 'taon/websql';\n\nimport { TaonGroupRepository } from '../taon-group/taon-group.repository';\nimport { TaonPermissionRepository } from '../taon-permission/taon-permission.repository';\nimport { TaonRoleRepository } from '../taon-role/taon-role.repository';\nimport { TaonSessionProvider } from '../taon-session/taon-session.provider';\nimport { TaonSessionRepository } from '../taon-session/taon-session.repository';\nimport { TaonSessionUserRepository } from '../taon-session-user/taon-session-user.repository';\n\nimport {\n TaonAuthContextEntity,\n TaonAuthorizationSchema,\n} from './taon-auth-context.entity';\n\n//#endregion\n\n//#region models\n\ntype EnumLike<T extends string> = Record<string, T>;\n\ntype RelationSelection<T extends string> = '*' | T[];\n\ntype GroupAndRolesTree<GROUP extends string, ROLE extends string> = Partial<\n Record<GROUP, RelationSelection<ROLE>>\n>;\n\ntype RolesAndPermissionsTree<\n ROLE extends string,\n PERMISSION extends string,\n> = Partial<Record<ROLE, RelationSelection<PERMISSION>>>;\n\nexport interface PersistAuthorizationTreeOptions<\n GROUP extends string,\n ROLE extends string,\n PERMISSION extends string,\n> {\n enums: {\n groups: EnumLike<GROUP>;\n roles: EnumLike<ROLE>;\n permissions: EnumLike<PERMISSION>;\n };\n\n tree: {\n groupAndRoles?: GroupAndRolesTree<GROUP, ROLE>;\n\n rolesAndPermissions?: RolesAndPermissionsTree<ROLE, PERMISSION>;\n };\n}\n\n//#endregion\n\n@TaonRepository({\n className: 'TaonAuthContextRepository',\n})\nexport class TaonAuthContextRepository<\n AUTH extends TaonAuthorizationSchema,\n> extends TaonBaseCustomRepository {\n //#region fields & getters\n\n private readonly taonSessionUserRepository = this.injectCustomRepo(\n TaonSessionUserRepository,\n );\n\n private readonly taonSessionRepository = this.injectCustomRepo(\n TaonSessionRepository,\n );\n\n private readonly taonGroupRoleRepository = this.injectCustomRepo(\n TaonGroupRoleRepository,\n );\n\n private readonly taonRolePermissionRepository = this.injectCustomRepo(\n TaonRolePermissionRepository,\n );\n\n private readonly taonGroupRepository =\n this.injectCustomRepo(TaonGroupRepository);\n\n private readonly taonPermissionRepository = this.injectCustomRepo(\n TaonPermissionRepository,\n );\n\n private readonly taonSessionProvider =\n this.injectProvider(TaonSessionProvider);\n\n private readonly taonRoleRepository =\n this.injectCustomRepo(TaonRoleRepository);\n\n //#endregion\n\n //#region API / get context\n\n public async getContext(\n userId?: number | string,\n ): Promise<TaonAuthContextEntity<AUTH>> {\n //#region @websqlFunc\n\n const context = new TaonAuthContextEntity<AUTH>();\n\n context.user = !userId\n ? null\n : await this.taonSessionUserRepository.getUserById(userId);\n\n context.session = !userId\n ? null\n : await this.taonSessionRepository.getSessionBy(userId);\n\n context.groups = !userId\n ? []\n : (await this.taonGroupRepository.getGroupsForUserId(userId)).map(\n c => c.code as AUTH['group'],\n );\n\n context.roles = !userId\n ? []\n : (await this.taonRoleRepository.getRolesForUserId(userId)).map(\n c => c.code as AUTH['role'],\n );\n\n context.permissions = !userId\n ? []\n : (\n await this.taonPermissionRepository.getPermissionsForUserId(userId)\n ).map(c => c.code as AUTH['permission']);\n\n const userEmails = context.user?.identities?.map(c => c.email) || [];\n\n context.isSuperUser = this.taonSessionProvider.superUsersEmails.some(\n email => userEmails.includes(email),\n );\n\n context.isLocalhostBackend =\n this.ctx.frontendHostUri.host.includes('localhost:');\n\n return context;\n\n //#endregion\n }\n\n //#endregion\n\n //#region API / persist tree\n\n public async clearRolesGroupPermissions(): Promise<void> {\n //#region @websqlFunc\n\n // relations first because of foreign keys\n await this.taonRolePermissionRepository.clear();\n await this.taonGroupRoleRepository.clear();\n\n // entities\n await this.taonPermissionRepository.clear();\n await this.taonRoleRepository.clear();\n await this.taonGroupRepository.clear();\n\n //#endregion\n }\n\n //#region API / persist tree\n public async persistTree(\n options: PersistAuthorizationTreeOptions<\n AUTH['group'],\n AUTH['role'],\n AUTH['permission']\n >,\n ): Promise<void> {\n //#region @websqlFunc\n\n const { enums, tree } = options;\n\n const groups = Object.values(enums.groups) as AUTH['group'][];\n\n const roles = Object.values(enums.roles) as AUTH['role'][];\n\n const permissions = Object.values(\n enums.permissions,\n ) as AUTH['permission'][];\n\n //#region persist all entities\n\n const groupByCode = new Map<\n AUTH['group'],\n Awaited<ReturnType<typeof this.getOrCreateGroup>>\n >();\n\n const roleByCode = new Map<\n AUTH['role'],\n Awaited<ReturnType<typeof this.getOrCreateRole>>\n >();\n\n const permissionByCode = new Map<\n AUTH['permission'],\n Awaited<ReturnType<typeof this.getOrCreatePermission>>\n >();\n\n for (const [name, code] of Object.entries(enums.groups)) {\n groupByCode.set(code, await this.getOrCreateGroup(code, name));\n }\n\n for (const [name, code] of Object.entries(enums.roles)) {\n roleByCode.set(code, await this.getOrCreateRole(code, name));\n }\n\n for (const [name, code] of Object.entries(enums.permissions)) {\n permissionByCode.set(code, await this.getOrCreatePermission(code, name));\n }\n\n //#endregion\n\n //#region group -> roles\n\n const groupAndRoles = tree.groupAndRoles || {};\n\n for (const groupCode of groups) {\n const selection = groupAndRoles[groupCode as any];\n\n if (!selection) {\n continue;\n }\n\n const group = groupByCode.get(groupCode)!;\n\n const selectedRoles = selection === '*' ? roles : selection;\n\n for (const roleCode of selectedRoles) {\n const role = roleByCode.get(roleCode);\n\n if (!role) {\n throw new Error(`Role \"${roleCode}\" is not defined in roles enum.`);\n }\n\n await this.assignRole(group, role);\n }\n }\n\n //#endregion\n\n //#region role -> permissions\n\n const rolesAndPermissions = tree.rolesAndPermissions || {};\n\n for (const roleCode of roles) {\n const selection = rolesAndPermissions[roleCode as any];\n\n if (!selection) {\n continue;\n }\n\n const role = roleByCode.get(roleCode)!;\n\n const selectedPermissions = selection === '*' ? permissions : selection;\n\n for (const permissionCode of selectedPermissions) {\n const permission = permissionByCode.get(permissionCode);\n\n if (!permission) {\n throw new Error(\n `Permission \"${permissionCode}\" is not defined in permissions enum.`,\n );\n }\n\n await this.assignPermission(role, permission);\n }\n }\n\n //#endregion\n\n //#endregion\n }\n //#endregion\n\n //#endregion\n\n //#region methods / get or create group\n private async getOrCreateGroup(code: AUTH['group'], name: string) {\n //#region @websqlFunc\n\n let entity = await this.taonGroupRepository.findOne({\n where: {\n code,\n },\n });\n\n if (!entity) {\n entity = this.taonGroupRepository.create({\n code,\n name,\n });\n\n entity = await this.taonGroupRepository.save(entity);\n }\n\n return entity;\n\n //#endregion\n }\n //#endregion\n\n //#region methods / get or create role\n private async getOrCreateRole(code: AUTH['role'], name: string) {\n //#region @websqlFunc\n\n let entity = await this.taonRoleRepository.findOne({\n where: {\n code,\n },\n });\n\n if (!entity) {\n entity = this.taonRoleRepository.create({\n code,\n name,\n });\n\n entity = await this.taonRoleRepository.save(entity);\n }\n\n return entity;\n\n //#endregion\n }\n //#endregion\n\n //#region methods / get or create permission\n private async getOrCreatePermission(code: AUTH['permission'], name: string) {\n //#region @websqlFunc\n\n let entity = await this.taonPermissionRepository.findOne({\n where: {\n code,\n },\n });\n\n if (!entity) {\n entity = this.taonPermissionRepository.create({\n code,\n name,\n });\n\n entity = await this.taonPermissionRepository.save(entity);\n }\n\n return entity;\n\n //#endregion\n }\n //#endregion\n\n //#region assign role\n\n private async assignRole(\n group: Awaited<ReturnType<typeof this.getOrCreateGroup>>,\n role: Awaited<ReturnType<typeof this.getOrCreateRole>>,\n ): Promise<void> {\n //#region @websqlFunc\n\n const exists = await this.taonGroupRoleRepository.exists({\n where: {\n groupId: group.id as any,\n roleId: role.id as any,\n },\n });\n\n if (exists) {\n return;\n }\n\n await this.taonGroupRoleRepository.save(\n this.taonGroupRoleRepository.create({\n groupId: group.id as any,\n roleId: role.id as any,\n }),\n );\n\n //#endregion\n }\n\n //#endregion\n\n //#region assign permission\n\n private async assignPermission(\n role: Awaited<ReturnType<typeof this.getOrCreateRole>>,\n permission: Awaited<ReturnType<typeof this.getOrCreatePermission>>,\n ): Promise<void> {\n //#region @websqlFunc\n\n const exists = await this.taonRolePermissionRepository.exists({\n where: {\n roleId: role.id as any,\n permissionId: permission.id as any,\n },\n });\n\n if (exists) {\n return;\n }\n\n await this.taonRolePermissionRepository.save(\n this.taonRolePermissionRepository.create({\n roleId: role.id as any,\n permissionId: permission.id as any,\n }),\n );\n\n //#endregion\n }\n\n //#endregion\n}\n","//#region imports\nimport { Translation } from '@taon-dev/i18n/websql';\nimport {\n ExpressRequest,\n ExpressResponse,\n getStatusCode,\n HttpStatusEnum,\n Models,\n Taon,\n TaonStorageObject,\n TaonUploadedFile,\n} from 'taon/websql';\nimport { TaonController, TaonBaseStorageController } from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n\nimport { TaonAuthContextRepository } from '../../taon-auth-context/taon-auth-context.repository';\nimport { TaonSessionUserRepository } from '../../taon-session-user/taon-session-user.repository';\nimport { TaonSessionRepository } from '../taon-session.repository';\n\nimport { TaonProfileModels } from './taon-profile.models';\n//#endregion\n\nconst t = Translation.for('src/lib/taon-session/taon-profile/taon-profile.controller.ts', {} as any);\n\n@TaonController<TaonProfileController>({\n className: 'TaonProfileController',\n allowedMethods: ['exists', 'download', 'delete', 'uploadFormDataToServer'],\n})\nexport class TaonProfileController extends TaonBaseStorageController<\n TaonProfileModels.PictureQuery\n> {\n //#region storage hooks\n\n private readonly taonSessionRepository = this.injectCustomRepo(TaonSessionRepository);\n\n private readonly authRepository = this.injectCustomRepo(\n TaonAuthContextRepository,\n );\n\n private readonly userRepository = this.injectCustomRepo(\n TaonSessionUserRepository,\n );\n\n async beforeEachRequest({\n req,\n res,\n methodConfig,\n classConfig,\n }: Models.TaonCtrlBeforeEachRequestParams<TaonProfileController>): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n protected async handleUploadFiles(\n bodyFormDataFiles: TaonUploadedFile[],\n queryParams?: TaonProfileModels.PictureQuery,\n req?: ExpressRequest<any>,\n res?: ExpressResponse<any>,\n ): Promise<TaonStorageObject[]> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n async afterFileUploadHook(\n fileObject?: TaonStorageObject,\n queryParams?: TaonProfileModels.PictureQuery,\n ): Promise<void> {\n // Authentication / authorization / profile persistence can be added here.\n }\n\n buildStorageDownloadUrl(options: {\n req: any;\n key: string;\n private: boolean;\n token?: string;\n }): string {\n throw new Error('TODO');\n }\n\n async createStorageDownloadToken(options: {\n key: string;\n expiresAt: number;\n }): Promise<string> {\n throw new Error('TODO');\n }\n\n //#endregion\n}\n","export namespace TaonProfileModels {\n export const PROFILE_PICTURE_FILE_NAME = 'profile-picture';\n\n export interface PictureQuery {\n userId?: number;\n }\n\n export function pictureKey(userId?: number | string): string {\n return userId === undefined\n ? PROFILE_PICTURE_FILE_NAME\n : `${userId}__${PROFILE_PICTURE_FILE_NAME}`;\n }\n\n export const PROFILE_PICTURE_ACCEPT =\n 'image/png,image/jpeg,image/webp,image/gif';\n}\n","//#region imports\nimport { Injectable } from '@angular/core';\nimport { TaonBaseAngularService } from 'taon/websql';\n\nimport { TaonProfileController } from './taon-profile.controller';\nimport { TaonProfileModels } from './taon-profile.models';\n//#endregion\n\n@Injectable()\nexport class TaonProfileApiService extends TaonBaseAngularService {\n //#region controllers\n\n public readonly taonProfileController = this.injectController(\n TaonProfileController,\n );\n\n //#endregion\n\n //#region methods\n\n async hasProfilePicture(userId?: number | string): Promise<boolean> {\n const response = await this.taonProfileController\n .exists(TaonProfileModels.pictureKey(userId))\n .request();\n\n return response.body.json;\n }\n\n async getProfilePictureBlob(\n userId?: number | string,\n ): Promise<Blob | undefined> {\n if (!(await this.hasProfilePicture(userId))) {\n return undefined;\n }\n\n const response = await this.taonProfileController\n .download(TaonProfileModels.pictureKey(userId))\n .request();\n\n const blobFromPicture = await response.body.native.blob();\n // console.log({ blobFromPicture });\n return blobFromPicture;\n }\n\n async uploadProfilePicture(\n file: File,\n userId?: number | string,\n ): Promise<void> {\n const renamedFile = new File(\n [file],\n TaonProfileModels.PROFILE_PICTURE_FILE_NAME,\n {\n type: file.type,\n lastModified: file.lastModified,\n },\n );\n\n const formData = new FormData();\n\n formData.append('file', renamedFile);\n\n await this.taonProfileController\n .uploadFormDataToServer(\n formData,\n userId === undefined ? undefined : { userId: Number(userId) },\n )\n .request();\n }\n\n async deleteProfilePicture(userId?: number | string): Promise<void> {\n await this.taonProfileController\n .delete(TaonProfileModels.pictureKey(userId))\n .request();\n }\n\n //#endregion\n}\n","//#region imports\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnDestroy,\n OnInit,\n OnChanges,\n SimpleChanges,\n inject,\n signal,\n forwardRef,\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Translation } from '@taon-dev/i18n/websql';\nimport { Taon } from 'taon/websql';\n\nimport { TaonProfileApiService } from '../taon-profile.api.service';\nimport { TaonProfileModels } from '../taon-profile.models';\n//#endregion\n\nconst t = Translation.for('src/lib/taon-session/taon-profile/taon-profile-picture/taon-profile-picture.component.ts', {} as any);\n\n@Component({\n selector: 'taon-profile-picture',\n templateUrl: './taon-profile-picture.component.html',\n styleUrls: ['./taon-profile-picture.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatIconModule],\n providers: [forwardRef(() => TaonProfileApiService)],\n})\nexport class TaonProfilePictureComponent implements OnDestroy, OnInit, OnChanges {\n //#region inject\n\n @Input() hideButtons: boolean = false;\n\n @Input() userId?: number | string;\n\n @Input() readOnly = false;\n\n public readonly t = t.for(this);\n\n private readonly taonProfileApiService = inject(TaonProfileApiService);\n\n //#endregion\n\n //#region state\n\n readonly pictureUrl = signal<string | undefined>(undefined);\n\n readonly loading = signal(false);\n\n readonly uploading = signal(false);\n\n readonly accept = TaonProfileModels.PROFILE_PICTURE_ACCEPT;\n\n private objectUrl?: string;\n\n private destroyed = false;\n\n private loadVersion = 0;\n\n //#endregion\n\n //#region lifecycle\n\n ngOnInit(): void {\n void this.loadProfilePicture();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.userId && !changes.userId.firstChange) {\n void this.loadProfilePicture();\n }\n }\n\n //#endregion\n\n //#region methods\n\n async loadProfilePicture(): Promise<void> {\n this.loading.set(true);\n const version = ++this.loadVersion;\n this.clearPictureUrl();\n\n try {\n const blob = await this.taonProfileApiService.getProfilePictureBlob(\n this.userId,\n );\n\n if (!this.destroyed && version === this.loadVersion) {\n this.setPictureBlob(blob);\n }\n } finally {\n if (version === this.loadVersion) {\n this.loading.set(false);\n }\n }\n }\n\n async fileSelected(event: Event): Promise<void> {\n if (this.readOnly) {\n throw new Error('Profile picture is read-only');\n }\n const input = event.target as HTMLInputElement;\n\n const file = input.files?.[0];\n\n if (!file) {\n return;\n }\n\n this.uploading.set(true);\n\n try {\n await this.taonProfileApiService.uploadProfilePicture(file, this.userId);\n\n await this.loadProfilePicture();\n } finally {\n this.uploading.set(false);\n\n // Allows selecting the same file again.\n input.value = '';\n }\n }\n\n async removePicture(): Promise<void> {\n if (this.readOnly) {\n throw new Error('Profile picture is read-only');\n }\n this.uploading.set(true);\n const userId = this.userId;\n\n try {\n await this.taonProfileApiService.deleteProfilePicture(userId);\n\n if (!this.destroyed && userId === this.userId) {\n ++this.loadVersion;\n this.loading.set(false);\n this.clearPictureUrl();\n }\n } finally {\n this.uploading.set(false);\n }\n }\n\n private setPictureBlob(blob: Blob | undefined): void {\n this.clearPictureUrl();\n\n if (!blob) {\n return;\n }\n\n this.objectUrl = URL.createObjectURL(blob);\n\n this.pictureUrl.set(this.objectUrl);\n }\n\n private clearPictureUrl(): void {\n if (this.objectUrl) {\n URL.revokeObjectURL(this.objectUrl);\n\n this.objectUrl = undefined;\n }\n\n this.pictureUrl.set(undefined);\n }\n\n //#endregion\n\n //#region destroy\n\n ngOnDestroy(): void {\n this.destroyed = true;\n this.clearPictureUrl();\n }\n\n //#endregion\n}\n","<div class=\"profile-picture\">\n <label\n class=\"profile-picture__avatar\"\n [class.profile-picture__avatar--disabled]=\"uploading() || readOnly\">\n @if (pictureUrl()) {\n <img\n class=\"profile-picture__image\"\n [src]=\"pictureUrl()\"\n alt=\"Profile picture\" />\n } @else {\n <mat-icon class=\"profile-picture__placeholder\">account_circle</mat-icon>\n <!-- <svg\n class=\"profile-picture__placeholder\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\">\n <path\n d=\"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4Zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4Z\" />\n </svg> -->\n }\n\n @if (loading() || uploading()) {\n <div class=\"profile-picture__loading\">...</div>\n }\n\n <input\n class=\"profile-picture__input\"\n type=\"file\"\n [accept]=\"accept\"\n [disabled]=\"uploading() || readOnly\"\n (change)=\"fileSelected($event)\" />\n </label>\n\n @if (!hideButtons && !readOnly) {\n <div class=\"profile-picture__actions\">\n <label class=\"profile-picture__button\">\n {{\n pictureUrl()\n ? t.gettext('Change picture')\n : t.gettext('Upload picture')\n }}\n\n <input\n class=\"profile-picture__input\"\n type=\"file\"\n [accept]=\"accept\"\n [disabled]=\"uploading()\"\n (change)=\"fileSelected($event)\" />\n </label>\n\n @if (pictureUrl()) {\n <button\n class=\"profile-picture__button\"\n type=\"button\"\n [disabled]=\"uploading()\"\n (click)=\"removePicture()\">\n {{ t.gettext('Remove') }}\n </button>\n }\n </div>\n }\n</div>\n","//#region imports\nimport {\n Taon,\n ClassHelpers,\n TaonController,\n TaonBaseCrudController,\n Query,\n GET,\n Models,\n TaonPaginationQuery,\n} from 'taon/websql';\nimport { Entity } from 'taon-typeorm/websql';\nimport { _ } from 'tnp-core/websql';\n\nimport { TaonSessionRepository } from '../taon-session/taon-session.repository';\n\nimport { TaonSessionUserIdentityEntity } from './taon-session-user-identity.entity';\nimport { TaonSessionUserEntity } from './taon-session-user.entity';\nimport { TaonSessionUserRepository } from './taon-session-user.repository';\n//#endregion\n\n@TaonController<TaonSessionUserController>({\n className: 'TaonSessionUserController',\n allowedMethods: ['paginationQuery', 'getBy'],\n})\nexport class TaonSessionUserController extends TaonBaseCrudController<\n TaonSessionUserEntity,\n {},\n TaonSessionUserController\n> {\n entityClassResolveFn: () => typeof TaonSessionUserEntity = () =>\n TaonSessionUserEntity;\n\n private readonly taonSessionRepository = this.injectCustomRepo(\n TaonSessionRepository,\n );\n\n async beforeEachRequest({\n req,\n res,\n methodConfig,\n classConfig,\n }: Models.TaonCtrlBeforeEachRequestParams<TaonSessionUserController>): Promise<void> {\n if (['paginationQuery', 'getBy'].includes(methodConfig.methodName)) {\n await this.taonSessionRepository.throwIfNotAuthenticated({\n req,\n res,\n });\n }\n }\n\n @GET()\n getBy(\n @Query('id') id: number | string,\n ): Models.Http.Response<TaonSessionUserEntity> {\n //#region @websqlFunc\n return async () =>\n this.injectCustomRepo(TaonSessionUserRepository).getUserById(id);\n //#endregion\n }\n\n protected paginationQueryMethods(): (keyof TaonSessionUserController)[] {\n return ['customPaginationQuery'] as any;\n }\n\n @GET()\n paginationQuery(\n queryJson?: TaonPaginationQuery<any>,\n ): Models.Http.Response<TaonSessionUserEntity[]> {\n return async (req, res) => {\n queryJson.callQueryMethod = 'customPaginationQuery';\n const data = await super.paginationQuery(queryJson)(req, res);\n return data;\n };\n }\n\n protected async customPaginationQuery(\n query: TaonPaginationQuery<TaonSessionUserController>,\n ): Promise<[TaonSessionUserEntity[], number]> {\n //#region @websqlFunc\n const pageNumber = query.pageNumber ?? 1;\n const pageSize = query.pageSize ?? 10;\n\n const tags = {\n user: 'user',\n identity: 'identity',\n };\n\n const qb = this.db\n .createQueryBuilder(tags.user)\n .leftJoinAndSelect(\n `${tags.user}.${'identities' as keyof TaonSessionUserEntity}`,\n tags.identity,\n );\n\n //#region search\n\n if (query.search) {\n const search = `%${query.search.toLowerCase()}%`;\n\n qb.andWhere(\n `(\n LOWER(${tags.identity}.${'email' as keyof TaonSessionUserIdentityEntity}) LIKE :search\n OR LOWER(${tags.identity}.${'provider' as keyof TaonSessionUserIdentityEntity}) LIKE :search\n OR CAST(${tags.user}.${'id' as keyof TaonSessionUserEntity} AS TEXT) LIKE :search\n )`,\n { search },\n );\n }\n\n //#endregion\n\n //#region pagination\n\n qb.skip((pageNumber - 1) * pageSize);\n qb.take(pageSize);\n\n //#endregion\n\n const [users, total] = await qb.getManyAndCount();\n\n return [users, total];\n //#endregion\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Taon, TaonBaseAngularService } from 'taon/websql';\n\nimport { TaonSessionUserController } from './taon-session-user.controller';\nimport type { TaonSessionUserEntity } from './taon-session-user.entity';\n\n@Injectable()\nexport class TaonSessionUserApiService extends TaonBaseAngularService {\n public taonSessionUserController = this.injectController(\n TaonSessionUserController,\n );\n\n // public get allMyEntities$(): Observable<TaonSessionUser[]> {\n // return this.taonSessionUserController.getAll().request!().observable.pipe(\n // map(res => res.body?.json),\n // );\n // }\n\n // public helloWorld(user): Observable<string> {\n // return this.taonSessionUserController.helloWord(user).request!().observable.pipe(\n // map(res => res.responseText as string),\n // );\n // }\n}\n","//#region imports\nimport { TaonBaseRepository, TaonRepository } from 'taon/websql';\n\nimport { TaonSessionUserGroupEntity } from './taon-session-user-group.entity';\n//#endregion\n\n@TaonRepository({\n className: 'TaonSessionUserGroupRepository',\n})\nexport class TaonSessionUserGroupRepository extends TaonBaseRepository<TaonSessionUserGroupEntity> {\n entityClassResolveFn: () => typeof TaonSessionUserGroupEntity = () =>\n TaonSessionUserGroupEntity;\n\n async assignGroupToUser(\n userId: number,\n groupId: number,\n ): Promise<TaonSessionUserGroupEntity> {\n //#region @websqlFunc\n\n const existing = await this.findOne({\n where: {\n userId,\n groupId,\n },\n });\n\n if (existing) {\n return existing;\n }\n\n const userGroup = new TaonSessionUserGroupEntity().clone({\n userId,\n groupId,\n });\n\n return await this.save(userGroup);\n\n //#endregion\n }\n\n async unassignGroupFromUser(userId: number, groupId: number): Promise<void> {\n //#region @websqlFunc\n\n const existing = await this.findOne({\n where: {\n userId,\n groupId,\n },\n });\n\n if (!existing) {\n return;\n }\n\n await this.deleteById(existing.id);\n\n //#endregion\n }\n}\n","import { Translation } from '@taon-dev/i18n/websql';\nimport { getStatusCode, HttpStatusEnum, Taon, TaonBaseRepository, TaonRepository } from 'taon/websql';\nimport type { EntityManager } from 'taon-typeorm/websql';\nimport { UtilsPasswords } from 'tnp-helpers/websql';\n\nimport { TaonSessionProvider } from '../taon-session/taon-session.provider';\n\nimport { TaonSessionUserIdentityEntity } from './taon-session-user-identity.entity';\nimport { TaonSessionUserEntity } from './taon-session-user.entity';\nimport { TaonSessionIdentityProvider } from './taon-session-user.models';\nimport { TaonSessionUserRepository } from './taon-session-user.repository';\n\nconst t = Translation.for('src/lib/taon-session-user/taon-session-user-identity.repository.ts', {} as any);\n\n@TaonRepository({\n className: 'TaonSessionUserIdentityRepository',\n})\nexport class TaonSessionUserIdentityRepository extends TaonBaseRepository<TaonSessionUserIdentityEntity> {\n entityClassResolveFn: () => typeof TaonSessionUserIdentityEntity = () =>\n TaonSessionUserIdentityEntity;\n\n private readonly userRepository = this.injectCustomRepo(TaonSessionUserRepository);\n\n private readonly sessionProvider = this.injectProvider(TaonSessionProvider);\n\n normalizeEmail(email: string): string {\n //#region @websqlFunc\n if (typeof email !== 'string' || !email.trim() || email.trim().length > 500) {\n Taon.error({\n status: getStatusCode(HttpStatusEnum.BAD_REQUEST),\n message: t.gettext('A valid email address is required.'),\n });\n }\n return email.trim().toLowerCase();\n //#endregion\n }\n\n async findUserIdByEmail(\n email: string,\n manager: EntityManager = this.connection.manager,\n ): Promise<number | undefined> {\n //#region @websqlFunc\n const normalizedEmail = this.normalizeEmail(email);\n const identities = await manager.getRepository<TaonSessionUserIdentityEntity>(this.target).find({\n select: { userId: true },\n where: [\n { provider: TaonSessionIdentityProvider.PASSWORD, providerUserId: normalizedEmail },\n { email: normalizedEmail, isEmailVerified: true },\n ],\n });\n const userIds = [...new Set(identities.map(identity => identity.userId))];\n if (userIds.length > 1) {\n Taon.error({\n status: getStatusCode(HttpStatusEnum.CONFLICT),\n message: t.gettext('This email belongs to multiple accounts. Contact an administrator.'),\n });\n }\n return userIds[0];\n //#endregion\n }\n\n async resolveSocialIdentity(\n provider: TaonSessionIdentityProvider,\n providerUserId: string,\n email: string,\n isEmailVerified: boolean,\n ): Promise<TaonSessionUserIdentityEntity> {\n //#region @websqlFunc\n return this.connection.transaction('SERIALIZABLE', async manager => {\n const identities = manager.getRepository<TaonSessionUserIdentityEntity>(this.target);\n const existing = await identities.findOne({ where: { provider, providerUserId } });\n if (existing) {\n return existing;\n }\n const userId = this.sessionProvider.linkSocialAccountEmail === true && isEmailVerified === true\n ? await this.findUserIdByEmail(email, manager)\n : undefined;\n const users = manager.getRepository<TaonSessionUserEntity>(this.userRepository.target);\n const user = userId === undefined\n ? await users.save(new TaonSessionUserEntity())\n : await users.findOne({ where: { id: userId } });\n if (!user?.isActive) {\n Taon.error({\n context: 'resolveSocialIdentity',\n status: getStatusCode(HttpStatusEnum.INVALID_CREDENTIALS),\n message: t.gettext('User is not active'),\n });\n }\n return this.createSocialIdentity(\n user.id, provider, providerUserId, email, isEmailVerified, manager,\n );\n });\n //#endregion\n }\n\n async registerPasswordUser(email: string, password: string): Promise<TaonSessionUserEntity | null> {\n //#region @websqlFunc\n const normalizedEmail = this.normalizeEmail(email);\n if (typeof password !== 'string' || !password) {\n Taon.error({\n context: 'registerPasswordUser',\n status: getStatusCode(HttpStatusEnum.BAD_REQUEST),\n message: t.gettext('Password is required.'),\n });\n }\n const passwordHash = await UtilsPasswords.hashPassword(password);\n return this.connection.transaction('SERIALIZABLE', async manager => {\n const identities = manager.getRepository<TaonSessionUserIdentityEntity>(this.target);\n const existing = await identities.findOne({\n select: { id: true },\n where: { provider: TaonSessionIdentityProvider.PASSWORD, providerUserId: normalizedEmail },\n });\n if (existing) {\n return null;\n }\n if (this.sessionProvider.linkSocialAccountEmail === true &&\n await this.findUserIdByEmail(email, manager) !== undefined) {\n Taon.error({\n context: 'registerPasswordUser',\n status: getStatusCode(HttpStatusEnum.CONFLICT),\n message: t.gettext('Sign in with your existing provider, then connect email/password in your profile.'),\n });\n }\n const user = await manager.getRepository<TaonSessionUserEntity>(this.userRepository.target)\n .save(new TaonSessionUserEntity());\n await identities.save(this.passwordIdentity(user.id, normalizedEmail, passwordHash, false));\n return user;\n });\n //#endregion\n }\n\n async connectPasswordIdentity(\n userId: number,\n email: string,\n password: string,\n ): Promise<void> {\n //#region @websqlFunc\n const normalizedEmail = this.normalizeEmail(email);\n const passwordHash = await UtilsPasswords.hashPassword(password);\n await this.connection.transaction('SERIALIZABLE', async manager => {\n const identities = manager.getRepository<TaonSessionUserIdentityEntity>(this.target);\n const verifiedIdentity = await identities.findOne({\n select: { id: true },\n where: { userId, email: normalizedEmail, isEmailVerified: true },\n });\n if (!verifiedIdentity) {\n Taon.error({\n context: 'connectPasswordIdentity',\n status: getStatusCode(HttpStatusEnum.BAD_REQUEST),\n message: t.gettext('Use a verified email from a connected sign-in method.'),\n });\n }\n const emailUserId = await this.findUserIdByEmail(email, manager);\n const passwordIdentity = await identities.findOne({\n select: { id: true },\n where: { userId, provider: TaonSessionIdentityProvider.PASSWORD },\n });\n if (passwordIdentity || emailUserId !== userId) {\n Taon.error({\n context: 'connectPasswordIdentity',\n status: getStatusCode(HttpStatusEnum.CONFLICT),\n message: t.gettext('Email/password is already connected or this email belongs to another account.'),\n });\n }\n await identities.save(this.passwordIdentity(userId, normalizedEmail, passwordHash, true));\n });\n //#endregion\n }\n\n async createPasswordIdentity(\n userId: number,\n email: string,\n password: string,\n ): Promise<TaonSessionUserIdentityEntity> {\n //#region @websqlFunc\n\n const normalizedEmail = this.normalizeEmail(email);\n\n const identity = this.passwordIdentity(\n userId, normalizedEmail, await UtilsPasswords.hashPassword(password), false,\n );\n\n return await this.save(identity);\n\n //#endregion\n }\n\n private passwordIdentity(\n userId: number,\n normalizedEmail: string,\n passwordHash: string,\n isEmailVerified: boolean,\n ): TaonSessionUserIdentityEntity {\n //#region @websqlFunc\n return new TaonSessionUserIdentityEntity().clone({\n userId,\n provider: TaonSessionIdentityProvider.PASSWORD,\n providerUserId: normalizedEmail,\n email: normalizedEmail,\n passwordHash,\n isEmailVerified,\n });\n //#endregion\n }\n\n async findPasswordIdentity(\n email: string,\n ): Promise<TaonSessionUserIdentityEntity | null> {\n //#region @websqlFunc\n\n return await this.findOne({\n where: {\n provider: TaonSessionIdentityProvider.PASSWORD,\n providerUserId: this.normalizeEmail(email),\n },\n });\n\n //#endregion\n }\n\n async verifyPassword(\n email: string,\n password: string,\n ): Promise<TaonSessionUserIdentityEntity | null> {\n //#region @websqlFunc\n\n const identity = await this.findPasswordIdentity(email);\n\n if (!identity?.passwordHash) {\n return null;\n }\n\n const valid = await UtilsPasswords.verifyPassword(\n password,\n identity.passwordHash,\n );\n\n return valid ? identity : null;\n\n //#endregion\n }\n\n async findSocialIdentity(\n provider: TaonSessionIdentityProvider,\n providerUserId: string,\n ): Promise<TaonSessionUserIdentityEntity | null> {\n //#region @websqlFunc\n\n return await this.findOne({\n where: {\n provider,\n providerUserId,\n },\n });\n\n //#endregion\n }\n\n async createSocialIdentity(\n userId: number,\n provider: TaonSessionIdentityProvider,\n providerUserId: string,\n email?: string,\n isEmailVerified = false,\n manager: EntityManager = this.connection.manager,\n ): Promise<TaonSessionUserIdentityEntity> {\n //#region @websqlFunc\n\n const identity = new TaonSessionUserIdentityEntity().clone({\n userId,\n provider,\n providerUserId,\n email: email ? this.normalizeEmail(email) : undefined,\n isEmailVerified: isEmailVerified === true,\n });\n\n return await manager.getRepository<TaonSessionUserIdentityEntity>(this.target).save(identity);\n\n //#endregion\n }\n}\n","//#region imports\nimport { Taon, TaonBaseMiddleware, TaonMiddleware } from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n//#endregion\n\n@TaonMiddleware({\n className: 'TaonSessionUserMiddleware',\n})\nexport class TaonSessionUserMiddleware extends TaonBaseMiddleware {}","//#region imports\nimport { Taon, TaonBaseProvider, TaonProvider } from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n//#endregion\n\n@TaonProvider({\n className: 'TaonSessionUserProvider',\n})\nexport class TaonSessionUserProvider extends TaonBaseProvider {\n\n\n\n}","//#region imports\nimport { TaonBaseSubscriberForEntity, TaonSubscriber } from 'taon/websql';\n\nimport { TaonSessionUserEntity } from './taon-session-user.entity';\nimport { TaonSessionUserProvider } from './taon-session-user.provider';\n//#endregion\n\n@TaonSubscriber<TaonSessionUserSubscriber>({\n className: 'TaonSessionUserSubscriber',\n allowedEvents: ['afterUpdate'],\n})\nexport class TaonSessionUserSubscriber extends TaonBaseSubscriberForEntity {\n taonSessionUserProvider = this.injectProvider(TaonSessionUserProvider);\n\n listenTo(): typeof TaonSessionUserEntity {\n return TaonSessionUserEntity;\n }\n}\n","//#region imports\nimport { createContext, TaonBaseContext } from 'taon/websql';\n\nimport { TaonSessionUserGroupEntity } from './taon-session-user-group.entity';\nimport { TaonSessionUserGroupRepository } from './taon-session-user-group.repository';\nimport { TaonSessionUserIdentityEntity } from './taon-session-user-identity.entity';\nimport { TaonSessionUserIdentityRepository } from './taon-session-user-identity.repository';\nimport { TaonSessionUserRoleEntity } from './taon-session-user-role.entity';\nimport { TaonSessionUserController } from './taon-session-user.controller';\nimport { TaonSessionUserEntity } from './taon-session-user.entity';\nimport { TaonSessionUserMiddleware } from './taon-session-user.middleware';\nimport { TaonSessionUserProvider } from './taon-session-user.provider';\nimport { TaonSessionUserRepository } from './taon-session-user.repository';\nimport { TaonSessionUserSubscriber } from './taon-session-user.subscriber';\n//#endregion\n\nexport const TaonSessionUserContext = createContext(() => ({\n contextName: 'TaonSessionUserContext',\n abstract: true,\n contexts: { TaonBaseContext },\n entities: {\n TaonSessionUserEntity,\n TaonSessionUserGroupEntity,\n TaonSessionUserRoleEntity,\n TaonSessionUserIdentityEntity,\n },\n controllers: { TaonSessionUserController },\n repositories: {\n TaonSessionUserRepository,\n TaonSessionUserIdentityRepository,\n TaonSessionUserGroupRepository,\n },\n providers: { TaonSessionUserProvider },\n middlewares: { TaonSessionUserMiddleware },\n subscribers: { TaonSessionUserSubscriber },\n}));\n","import type { TaonSessionUserEntity } from './taon-session-user.entity';\n\nexport const TaonSessionUserDefaultsValues = {} as Partial<TaonSessionUserEntity>;\n","export namespace TaonSessionUserUtils {\n export function generateRandomUsername(): string {\n return `user${crypto.randomUUID().replace(/-/g, '').slice(0, 12)}`;\n }\n}\n","//#region imports\nimport {\n Taon,\n TaonAdditionalMiddlewareMethodInfo,\n TaonBaseMiddleware,\n TaonMiddleware,\n TaonServerMiddlewareInterceptOptions,\n} from 'taon/websql';\nimport { _, UtilsJwt } from 'tnp-core/websql';\n\nimport { TaonSessionKvRepository } from './taon-session.kv.repository';\nimport { TaonSessionProvider } from './taon-session.provider';\nimport { TaonSessionRepository } from './taon-session.repository';\n//#endregion\n\n@TaonMiddleware({\n className: 'TaonSessionMiddleware',\n})\nexport class TaonSessionMiddleware extends TaonBaseMiddleware {\n taonSessionRepository = this.injectCustomRepo(TaonSessionRepository);\n\n //#region intercept server method\n async interceptServerMethod(\n data: TaonServerMiddlewareInterceptOptions,\n ): Promise<void> {\n/* */\n/* */\n \n }\n //#endregion\n}\n","import { TaonServerMiddlewareInterceptOptions } from 'ng2-rest/websql';\n\nexport namespace TaonSessionUtils {\n export const getRequestMetadata = (\n req: TaonServerMiddlewareInterceptOptions['req'],\n ): { userAgent?: string; ip?: string; deviceName?: string } => {\n //#region @websqlFunc\n const header = req.headers?.['user-agent'];\n const userAgent = typeof header === 'string' ? header.slice(0, 4096) : undefined;\n // Express applies trust-proxy; the Worker adapter resolves the edge IP.\n const ip = req.ip || req.socket?.remoteAddress;\n const browsers = [\n ['Edg/', 'Edge'], ['OPR/', 'Opera'], ['Chrome/', 'Chrome'],\n ['Firefox/', 'Firefox'], ['Safari/', 'Safari'],\n ];\n const systems = [\n ['Android', 'Android'], ['iPhone|iPad', 'iOS'], ['Windows', 'Windows'],\n ['Macintosh', 'macOS'], ['Linux', 'Linux'],\n ];\n const browser = browsers.find(([pattern]) => userAgent?.includes(pattern))?.[1];\n const system = systems.find(([pattern]) => new RegExp(pattern).test(userAgent || ''))?.[1];\n return {\n userAgent,\n ip,\n deviceName: [browser, system].filter(Boolean).join(' / ') || undefined,\n };\n //#endregion\n };\n\n interface GoogleTokenResponse {\n access_token?: string;\n expires_in?: number;\n refresh_token?: string;\n scope?: string;\n token_type?: string;\n id_token?: string;\n error?: string;\n error_description?: string;\n }\n\n interface GoogleIdTokenPayload {\n iss: string;\n aud: string | string[];\n sub: string;\n email?: string;\n email_verified?: boolean;\n name?: string;\n picture?: string;\n exp: number;\n iat: number;\n }\n\n interface GoogleJwk extends JsonWebKey {\n kid?: string;\n alg?: string;\n }\n\n //#region verify google authorization code\n export async function verifyGoogleAuthorizationCode(\n GOOGLE_CLIENT_ID: string,\n GOOGLE_CLIENT_SECRET: string,\n code: string,\n ) {\n //#region @websqlFunc\n\n // ---------------------------------------------------------\n // 1. Exchange authorization code for tokens\n // ---------------------------------------------------------\n\n const tokenResponse = await fetch('https://oauth2.googleapis.com/token', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: new URLSearchParams({\n client_id: GOOGLE_CLIENT_ID,\n client_secret: GOOGLE_CLIENT_SECRET,\n code,\n grant_type: 'authorization_code',\n\n // Important:\n // must match what was used when obtaining the code.\n redirect_uri: 'postmessage',\n }),\n });\n\n const tokens = (await tokenResponse.json()) as GoogleTokenResponse;\n\n if (!tokenResponse.ok) {\n throw new Error(\n `Google token exchange failed: ${\n tokens.error_description || tokens.error || tokenResponse.statusText\n }`,\n );\n }\n\n if (!tokens.id_token) {\n throw new Error('Google did not return an ID token.');\n }\n\n // ---------------------------------------------------------\n // 2. Verify Google ID token\n // ---------------------------------------------------------\n\n const payload = await verifyGoogleIdToken(\n tokens.id_token,\n GOOGLE_CLIENT_ID,\n );\n\n // ---------------------------------------------------------\n // 3. Validate required identity data\n // ---------------------------------------------------------\n\n if (!payload.sub) {\n throw new Error('Google identity does not contain sub.');\n }\n\n if (!payload.email) {\n throw new Error('Google identity does not contain email.');\n }\n\n if (payload.email_verified !== true) {\n throw new Error('Google email is not verified.');\n }\n\n return {\n sub: payload.sub,\n email: payload.email,\n emailVerified: payload.email_verified,\n name: payload.name,\n picture: payload.picture,\n };\n\n //#endregion\n }\n //#endregion\n\n //#region verify google id token\n async function verifyGoogleIdToken(\n idToken: string,\n expectedAudience: string,\n ): Promise<GoogleIdTokenPayload> {\n const parts = idToken.split('.');\n\n if (parts.length !== 3) {\n throw new Error('Invalid Google ID token.');\n }\n\n const [encodedHeader, encodedPayload, encodedSignature] = parts;\n\n const header = JSON.parse(decodeBase64UrlToString(encodedHeader)) as {\n alg?: string;\n kid?: string;\n };\n\n if (header.alg !== 'RS256') {\n throw new Error(`Unsupported Google JWT algorithm: ${header.alg}`);\n }\n\n if (!header.kid) {\n throw new Error('Google ID token does not contain kid.');\n }\n\n // ---------------------------------------------------------\n // Google's public signing keys\n // ---------------------------------------------------------\n\n const jwksResponse = await fetch(\n 'https://www.googleapis.com/oauth2/v3/certs',\n );\n\n if (!jwksResponse.ok) {\n throw new Error('Unable to download Google signing keys.');\n }\n\n const jwks = (await jwksResponse.json()) as {\n keys: GoogleJwk[];\n };\n\n const jwk = jwks.keys.find(key => key.kid === header.kid);\n\n if (!jwk) {\n throw new Error('Google signing key not found.');\n }\n\n // ---------------------------------------------------------\n // Import RSA public key\n // ---------------------------------------------------------\n\n const publicKey = await crypto.subtle.importKey(\n 'jwk',\n jwk,\n {\n name: 'RSASSA-PKCS1-v1_5',\n hash: 'SHA-256',\n },\n false,\n ['verify'],\n );\n\n // ---------------------------------------------------------\n // Verify JWT signature\n // ---------------------------------------------------------\n\n const signedData = new TextEncoder().encode(\n `${encodedHeader}.${encodedPayload}`,\n );\n\n const signature = decodeBase64UrlToBytes(encodedSignature);\n\n const validSignature = await crypto.subtle.verify(\n 'RSASSA-PKCS1-v1_5',\n publicKey,\n // @ts-ignore\n signature,\n signedData,\n );\n\n if (!validSignature) {\n throw new Error('Invalid Google ID token signature.');\n }\n\n // ---------------------------------------------------------\n // Decode + validate claims\n // ---------------------------------------------------------\n\n const payload = JSON.parse(\n decodeBase64UrlToString(encodedPayload),\n ) as GoogleIdTokenPayload;\n\n if (\n payload.iss !== 'https://accounts.google.com' &&\n payload.iss !== 'accounts.google.com'\n ) {\n throw new Error(`Invalid Google token issuer: ${payload.iss}`);\n }\n\n const audiences = Array.isArray(payload.aud) ? payload.aud : [payload.aud];\n\n if (!audiences.includes(expectedAudience)) {\n throw new Error('Google ID token audience mismatch.');\n }\n\n const now = Math.floor(Date.now() / 1000);\n\n if (!payload.exp || payload.exp <= now) {\n throw new Error('Google ID token has expired.');\n }\n\n return payload;\n }\n //#endregion\n\n //#region base64 url\n function decodeBase64UrlToBytes(input: string): Uint8Array {\n let base64 = input.replace(/-/g, '+').replace(/_/g, '/');\n\n base64 += '='.repeat((4 - (base64.length % 4)) % 4);\n\n const binary = atob(base64);\n\n const result = new Uint8Array(binary.length);\n\n for (let i = 0; i < binary.length; i++) {\n result[i] = binary.charCodeAt(i);\n }\n\n return result;\n }\n\n function decodeBase64UrlToString(input: string): string {\n return new TextDecoder().decode(decodeBase64UrlToBytes(input));\n }\n //#endregion\n}\n","//#region imports\nimport { Translation } from '@taon-dev/i18n/websql';\nimport {\n TaonAuthContextEntity,\n TaonAuthContextRepository,\n} from '../index';\nimport {\n Taon,\n ClassHelpers,\n TaonController,\n TaonBaseCrudController,\n Query,\n GET,\n TaonBaseController,\n Body,\n POST,\n HttpStatusEnum,\n getStatusCode,\n getStatusText,\n} from 'taon/websql';\nimport { HttpStatusCodeMap } from 'taon/websql';\nimport { FindOneOptions, FindOptionsWhere } from 'taon-typeorm/websql';\nimport { _, UtilsJwt } from 'tnp-core/websql';\n\nimport {\n TaonSessionIdentityProvider,\n TaonSessionUserEntity,\n} from '../taon-session-user';\nimport { TaonSessionUserIdentityEntity } from '../taon-session-user/taon-session-user-identity.entity';\nimport { TaonSessionUserIdentityRepository } from '../taon-session-user/taon-session-user-identity.repository';\nimport { TaonSessionUserRepository } from '../taon-session-user/taon-session-user.repository';\n\nimport { TaonSessionEntity } from './taon-session.entity';\nimport { TaonSessionKvRepository } from './taon-session.kv.repository';\nimport { TaonSessionMiddleware } from './taon-session.middleware';\nimport { TaonLoginData } from './taon-session.models';\nimport { TaonSessionProvider } from './taon-session.provider';\nimport { TaonSessionRepository } from './taon-session.repository';\nimport { TaonSessionUtils } from './taon-session.utils';\n\n//#endregion\n\nconst t = Translation.for('src/lib/taon-session/taon-session.controller.ts', {} as any);\n\n@TaonController<TaonSessionController>({\n className: 'TaonSessionController',\n allowedMethods: [\n //#region allowed method\n 'createUser',\n 'userExists',\n 'getCurrentUserId',\n 'login',\n 'logout',\n 'refresh',\n 'context',\n 'emptyContext',\n 'connectIdentity',\n 'disconnectIdentity',\n 'usernameAvailable',\n 'changeUsername',\n //#endregion\n ],\n})\nexport class TaonSessionController extends TaonBaseController {\n //#region fields & getters\n private readonly taonSessionKvRepository = this.injectKvRepository(\n TaonSessionKvRepository,\n );\n\n private readonly taonSessionUserIdentityRepository = this.injectCustomRepo(\n TaonSessionUserIdentityRepository,\n );\n\n private readonly taonSessionProvider =\n this.injectProvider(TaonSessionProvider);\n\n private readonly taonSessionUserRepository = this.injectCustomRepo(\n TaonSessionUserRepository,\n );\n\n private readonly taonAuthContextRepository = this.injectCustomRepo(\n TaonAuthContextRepository,\n );\n\n private readonly taonSessionRepository = this.injectCustomRepo(\n TaonSessionRepository,\n );\n //#endregion\n\n //#region createUser\n @POST()\n createUser(\n @Body('email') email: string,\n @Body('password') password: string,\n ): Taon.Response<TaonSessionUserEntity | null> {\n //#region @websqlFunc\n return async (req, res) => {\n if (this.taonSessionProvider.login.diableLoginByEmail) {\n Taon.error({\n message: t.gettext('Login by email is disalbed'),\n status: getStatusCode(HttpStatusEnum.UNAUTHORIZED),\n });\n return null;\n }\n return this.taonSessionUserIdentityRepository.registerPasswordUser(\n email,\n password,\n );\n };\n //#endregion\n }\n //#endregion\n\n //#region userExists\n @POST()\n userExists(@Body('email') email: string): Taon.Response<boolean> {\n //#region @websqlFunc\n return async (req, res) => {\n if (this.taonSessionProvider.login.diableLoginByEmail) {\n Taon.error({\n message: t.gettext('Login by email is disalbed'),\n status: getStatusCode(HttpStatusEnum.UNAUTHORIZED),\n });\n return true;\n }\n const identity =\n await this.taonSessionUserIdentityRepository.findPasswordIdentity(\n email,\n );\n\n return (\n !!identity ||\n (this.taonSessionProvider.linkSocialAccountEmail === true &&\n (await this.taonSessionUserIdentityRepository.findUserIdByEmail(\n email,\n )) !== undefined)\n );\n };\n //#endregion\n }\n //#endregion\n\n //#region get google identity\n private async getGoogleIdentity(data: TaonLoginData): Promise<{\n identity?: TaonSessionUserIdentityEntity | null | undefined;\n error: boolean;\n googleData?: Awaited<\n ReturnType<typeof TaonSessionUtils.verifyGoogleAuthorizationCode>\n >;\n }> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region connect identity\n @POST({\n middlewares: ({ parentMiddlewares }) => ({\n TaonSessionMiddleware,\n ...parentMiddlewares,\n }),\n })\n connectIdentity(@Body() data: TaonLoginData): Taon.Response<boolean> {\n //#region @websqlFunc\n return async (req, res) => {\n const userId = Number((req as any)!.userId);\n const provider = data.googleCode\n ? TaonSessionIdentityProvider.GOOGLE\n : data.email && data.password\n ? TaonSessionIdentityProvider.PASSWORD\n : void 0;\n\n switch (provider) {\n case TaonSessionIdentityProvider.PASSWORD: {\n if (this.taonSessionProvider.login.diableLoginByEmail) {\n Taon.error({\n context: 'connectIdentity diableLoginByEmail',\n status: getStatusCode(HttpStatusEnum.UNAUTHORIZED),\n message: t.gettext('Login by email is disabled.'),\n });\n }\n if (\n typeof data.password !== 'string' ||\n data.password.length < 8 ||\n data.password.length > 128\n ) {\n Taon.error({\n context: 'connectIdentity data.password',\n status: getStatusCode(HttpStatusEnum.BAD_REQUEST),\n message: t.gettext(\n 'Password must contain between 8 and 128 characters.',\n ),\n });\n }\n await this.taonSessionUserIdentityRepository.connectPasswordIdentity(\n userId,\n data.email!,\n data.password!,\n );\n return true;\n }\n\n case TaonSessionIdentityProvider.GOOGLE: {\n const { identity, error, googleData } = await this.getGoogleIdentity({\n googleCode: data.googleCode,\n });\n\n if (error) {\n return false;\n }\n\n if (identity) {\n if (identity.userId === userId) {\n // Already connected to this user.\n return true;\n }\n\n Taon.error({\n status: getStatusCode(HttpStatusEnum.CONFLICT),\n message: t.gettext(\n 'This Google account is already connected to another user.',\n ),\n });\n\n return false;\n }\n\n await this.taonSessionUserIdentityRepository.createSocialIdentity(\n userId,\n TaonSessionIdentityProvider.GOOGLE,\n googleData!.sub,\n googleData!.email,\n googleData!.emailVerified,\n );\n\n return true;\n }\n\n default: {\n Taon.error({\n status: getStatusCode(HttpStatusEnum.BAD_REQUEST),\n message: t.gettext('Unsupported identity provider.'),\n });\n\n return false;\n }\n }\n };\n //#endregion\n }\n //#endregion\n\n //#region username available\n @POST({\n middlewares: ({ parentMiddlewares }) => ({\n TaonSessionMiddleware,\n ...parentMiddlewares,\n }),\n })\n usernameAvailable(\n @Body('username') username: string,\n ): Taon.Response<boolean> {\n //#region @websqlFunc\n return async req =>\n this.taonSessionUserRepository.isUsernameAvailable(\n username,\n Number('userId' in req ? req.userId : undefined),\n );\n //#endregion\n }\n //#endregion\n\n //#region change username\n @POST({\n middlewares: ({ parentMiddlewares }) => ({\n TaonSessionMiddleware,\n ...parentMiddlewares,\n }),\n })\n changeUsername(@Body('username') username: string): Taon.Response<boolean> {\n //#region @websqlFunc\n return async req => {\n await this.taonSessionUserRepository.changeUsername(\n Number('userId' in req ? req.userId : undefined),\n username,\n );\n return true;\n };\n //#endregion\n }\n //#endregion\n\n //#region disconnect identity\n @POST({\n middlewares: ({ parentMiddlewares }) => ({\n TaonSessionMiddleware,\n ...parentMiddlewares,\n }),\n })\n disconnectIdentity(\n @Body('provider') provider: TaonSessionIdentityProvider,\n ): Taon.Response<boolean> {\n //#region @websqlFunc\n return async (req, res) => {\n const userId = Number((req as any)!.userId);\n\n const identity = await this.taonSessionUserIdentityRepository.findOne({\n where: {\n userId,\n provider,\n },\n });\n\n if (!identity) {\n Taon.error({\n status: getStatusCode(HttpStatusEnum.NOT_FOUND),\n message: t.gettext('Identity not found.'),\n });\n\n return false;\n }\n\n const identities = await this.taonSessionUserIdentityRepository.find({\n where: {\n userId,\n },\n });\n\n if (identities.length <= 1) {\n Taon.error({\n status: getStatusCode(HttpStatusEnum.BAD_REQUEST),\n message: t.gettext('You cannot disconnect your only sign-in method.'),\n });\n\n return false;\n }\n\n await this.taonSessionUserIdentityRepository.remove(identity);\n\n return true;\n };\n //#endregion\n }\n //#endregion\n\n //#region login\n @POST()\n login(@Body() data: TaonLoginData): Taon.Response<boolean> {\n //#region @websqlFunc\n return async (req, res) => {\n let { email, password, googleCode } = data || {};\n\n const isSocialLogin = !!googleCode;\n\n let user: TaonSessionUserEntity | null = null;\n let loginIdentity: TaonSessionUserIdentityEntity;\n\n if (isSocialLogin) {\n //#region google login\n\n let { identity, error, googleData } =\n await this.getGoogleIdentity(data);\n\n if (error) {\n return false;\n }\n\n if (!identity) {\n identity =\n await this.taonSessionUserIdentityRepository.resolveSocialIdentity(\n TaonSessionIdentityProvider.GOOGLE,\n googleData!.sub,\n googleData!.email,\n googleData!.emailVerified,\n );\n }\n loginIdentity = identity;\n user = await this.taonSessionUserRepository.findOne({\n where: { id: identity.userId },\n });\n //#endregion\n } else {\n //#region password login\n\n if (this.taonSessionProvider.login.diableLoginByEmail) {\n Taon.error({\n status: getStatusCode(HttpStatusEnum.UNAUTHORIZED),\n message: t.gettext('Login by email is disabled.'),\n });\n }\n\n if (!email || !password) {\n Taon.error({\n status: getStatusCode(HttpStatusEnum.INVALID_CREDENTIALS),\n message: getStatusText(HttpStatusEnum.INVALID_CREDENTIALS),\n });\n\n return false;\n }\n\n const identity =\n await this.taonSessionUserIdentityRepository.verifyPassword(\n email,\n password,\n );\n\n if (!identity) {\n Taon.error({\n status: getStatusCode(HttpStatusEnum.INVALID_CREDENTIALS),\n message: getStatusText(HttpStatusEnum.INVALID_CREDENTIALS),\n });\n\n return false;\n }\n\n user = await this.taonSessionUserRepository.findOne({\n where: {\n id: identity.userId,\n },\n });\n loginIdentity = identity;\n\n //#endregion\n }\n\n //#region validate user\n\n if (!user || !user.isActive) {\n Taon.error({\n status: getStatusCode(HttpStatusEnum.INVALID_CREDENTIALS),\n message: t.gettext(`User is not active`),\n });\n\n return false;\n }\n\n //#endregion\n\n // await (async () => {\n // const session = new TaonSessionEntity();\n\n // session.userId = 1;\n // session.lastActivityAt = new Date();\n // session.expiresAt = new Date(Date.now() + 60_000);\n\n // console.log('BEFORE', {\n // lastActivityAt: session.lastActivityAt,\n // expiresAt: session.expiresAt,\n // });\n\n // const saved = await this.taonSessionRepository.save(session);\n\n // console.log('AFTER', {\n // lastActivityAt: saved.lastActivityAt,\n // expiresAt: saved.expiresAt,\n // });\n // })();\n\n //#region create session\n\n const sessionObjToSave = new TaonSessionEntity().clone({\n userId: user.id,\n identityId: loginIdentity.id,\n authenticationProvider: loginIdentity.provider,\n ...TaonSessionUtils.getRequestMetadata(req),\n lastActivityAt: new Date(),\n expiresAt: new Date(\n Date.now() +\n this.taonSessionProvider.cookies.REFRESH_TOKEN_EXPIRES_SECONDS *\n 1000,\n ),\n });\n\n const session =\n await this.taonSessionRepository.createSession(sessionObjToSave);\n\n // const loaded = await this.taonSessionRepository.findOne({\n // where: { id: session.id },\n // });\n\n // console.log('RELOADED SESSION', loaded);\n\n //#endregion\n\n //#region create auth tokens\n\n const accessToken = await this.taonSessionKvRepository.createAccessToken(\n user.id,\n session.id,\n );\n\n const refreshToken =\n await this.taonSessionKvRepository.createRefreshToken(\n user.id,\n session.id,\n );\n\n this.taonSessionKvRepository.setAuthCookies(\n res!,\n accessToken,\n refreshToken,\n );\n\n //#endregion\n\n return true;\n };\n //#endregion\n }\n //#endregion\n\n //#region refresh\n @POST()\n refresh(): Taon.Response<boolean> {\n //#region @websqlFunc\n return async (req, res) => {\n const token = req!.cookies?.refreshToken;\n\n if (!token) {\n Taon.error({\n status: 401,\n context: 'refresh',\n message: 'No refresh token',\n });\n return false;\n }\n\n let payload: UtilsJwt.JwtPayload;\n try {\n payload = await UtilsJwt.verify(\n token,\n this.taonSessionProvider.cookies.REFRESH_TOKEN_SECRET,\n );\n } catch {\n Taon.error({\n status: 401,\n context: 'refresh verification',\n message: 'Invalid refresh token',\n });\n return false;\n }\n if (typeof payload.rtId !== 'string' || !payload.rtId) {\n Taon.error({\n status: 401,\n context: 'refresh rotation',\n message: 'Invalid refresh token',\n });\n return false;\n }\n\n const session = await this.taonSessionKvRepository.get(payload.rtId);\n\n if (!session) {\n Taon.error({\n status: 401,\n message: 'Invalid refresh token',\n });\n return false;\n }\n\n if (session.expiresAt <= Date.now()) {\n await this.taonSessionKvRepository.delete(payload.rtId);\n Taon.error({\n status: 401,\n message: 'Expired refresh token',\n });\n return false;\n }\n\n if (session.sessionId !== undefined) {\n await this.taonSessionRepository.touchSession(\n session.sessionId,\n session.userId,\n true,\n );\n }\n\n // ROTATION (important)\n await this.taonSessionKvRepository.delete(payload.rtId);\n\n const newAccessToken =\n await this.taonSessionKvRepository.createAccessToken(\n session.userId,\n session.sessionId,\n );\n\n const newRefreshToken =\n await this.taonSessionKvRepository.createRefreshToken(\n session.userId,\n session.sessionId,\n );\n\n this.taonSessionKvRepository.setAuthCookies(\n res!,\n newAccessToken,\n newRefreshToken,\n );\n\n return true;\n };\n //#endregion\n }\n //#endregion\n\n //#region logout\n @POST()\n logout(): Taon.Response<boolean> {\n //#region @websqlFunc\n return async (req, res) => {\n const refreshToken = req!.cookies?.refreshToken;\n const token =\n refreshToken || this.taonSessionKvRepository.getTokenFromRequest(req);\n\n if (token) {\n let payload: UtilsJwt.JwtPayload;\n try {\n payload = await UtilsJwt.verify(\n token,\n refreshToken\n ? this.taonSessionProvider.cookies.REFRESH_TOKEN_SECRET\n : this.taonSessionProvider.cookies.ACCESS_TOKEN_SECRET,\n );\n } catch (error) {\n console.error(error);\n this.taonSessionKvRepository.clearAuthCookies(res!);\n Taon.error({\n status: 401,\n context: 'logout',\n message: getStatusText(HttpStatusEnum.INVALID_TOKEN),\n });\n return false;\n }\n if (refreshToken) {\n if (typeof payload.rtId !== 'string' || !payload.rtId) {\n Taon.error({\n status: 401,\n context: 'logout',\n message: 'Invalid refresh token',\n });\n return false;\n }\n const session = await this.taonSessionKvRepository.get(payload.rtId);\n if (session?.sessionId !== undefined) {\n await this.taonSessionRepository.revokeSession(\n session.sessionId,\n session.userId,\n );\n }\n await this.taonSessionKvRepository.delete(payload.rtId);\n } else if (\n typeof payload.sessionId === 'number' &&\n typeof payload.userId === 'number'\n ) {\n await this.taonSessionRepository.revokeSession(\n payload.sessionId,\n payload.userId,\n );\n }\n }\n\n this.taonSessionKvRepository.clearAuthCookies(res!);\n return true;\n };\n //#endregion\n }\n //#endregion\n\n //#region context\n @GET({\n middlewares: ({ parentMiddlewares }) => ({\n TaonSessionMiddleware,\n ...parentMiddlewares,\n }),\n })\n context(): Taon.Response<TaonAuthContextEntity> {\n //#region @websqlFunc\n return async (req, res) => {\n const userId = (req as any)!.userId;\n const context = await this.taonAuthContextRepository.getContext(userId);\n return context;\n };\n //#endregion\n }\n //#endregion\n\n //#region empty context\n @GET()\n emptyContext(): Taon.Response<TaonAuthContextEntity> {\n //#region @websqlFunc\n return async (req, res) => {\n const context = await this.taonAuthContextRepository.getContext();\n return context;\n };\n //#endregion\n }\n //#endregion\n\n //#region get current user id\n @GET({\n middlewares: ({ parentMiddlewares }) => ({\n TaonSessionMiddleware,\n ...parentMiddlewares,\n }),\n })\n getCurrentUserId(): Taon.Response<number> {\n //#region @websqlFunc\n return async (req, res) => {\n const userId = (req as any)!.userId;\n return Number(userId);\n };\n //#endregion\n }\n //#endregion\n}\n","//#region imports\nimport { Injectable } from '@angular/core';\nimport { NEVER, Observable, of } from 'rxjs';\nimport { catchError, map, share, tap } from 'rxjs/operators';\nimport { Taon, TaonBaseAngularService } from 'taon/websql';\n\nimport { TaonAuthContextEntity } from '../taon-auth-context/taon-auth-context.entity';\nimport { TaonSessionUserEntity } from '../taon-session-user/taon-session-user.entity';\nimport { TaonSessionIdentityProvider } from '../taon-session-user/taon-session-user.models';\n\nimport { TaonSessionController } from './taon-session.controller';\nimport { TaonLoginData } from './taon-session.models';\n//#endregion\n\n@Injectable()\nexport class TaonSessionApiService extends TaonBaseAngularService {\n private taonSessionController = this.injectController(TaonSessionController);\n\n usernameAvailable(username: string): Observable<boolean> {\n return this.taonSessionController.usernameAvailable(username)\n .request!().observable.pipe(map(resp => !!resp.body.booleanValue));\n }\n\n changeUsername(username: string): Observable<boolean> {\n return this.taonSessionController.changeUsername(username)\n .request!().observable.pipe(map(resp => !!resp.body.booleanValue));\n }\n\n connectPassword(email: string, password: string): Observable<boolean> {\n return this.taonSessionController.connectIdentity({ email, password })\n .request!().observable.pipe(map(resp => !!resp.body.booleanValue));\n }\n\n //#region login\n\n login(data: TaonLoginData): Observable<boolean> {\n return this.taonSessionController.login(data).request!().observable.pipe(\n map(resp => {\n return !!resp.body.booleanValue;\n }),\n catchError(() => {\n return of(false);\n }),\n );\n }\n //#endregion\n\n //#region logout\n logout(): Observable<boolean> {\n return this.taonSessionController.logout().request!().observable.pipe(\n map(resp => {\n return !!resp.body.booleanValue;\n }),\n catchError(() => {\n return of(false);\n }),\n );\n }\n //#endregion\n\n //#region connect idenitty\n connectIdentity(data: TaonLoginData): Observable<boolean> {\n return this.taonSessionController.connectIdentity(data)\n .request!().observable.pipe(\n map(resp => {\n return !!resp.body.booleanValue;\n }),\n catchError(() => {\n return of(false);\n }),\n );\n }\n //#endregion\n\n //#region disconnect idenitty\n disconnectIdentity(\n provider: TaonSessionIdentityProvider,\n ): Observable<boolean> {\n return this.taonSessionController.disconnectIdentity(provider)\n .request!().observable.pipe(\n map(resp => {\n return !!resp.body.booleanValue;\n }),\n catchError(() => {\n return of(false);\n }),\n );\n }\n //#endregion\n\n //#region me\n context(): Observable<TaonAuthContextEntity> {\n return this.taonSessionController.context().request!().observable.pipe(\n map(resp => {\n return resp.body.json;\n }),\n catchError(() => {\n return of(null);\n }),\n );\n }\n\n emptyContext(): Observable<TaonAuthContextEntity> {\n return this.taonSessionController.emptyContext().request!().observable.pipe(\n map(resp => {\n return resp.body.json;\n }),\n catchError(() => {\n return of(null);\n }),\n );\n }\n //#endregion\n\n //#region get current user id\n getCurrentUserId(): Observable<number> {\n return this.taonSessionController.getCurrentUserId()\n .request!().observable.pipe(\n map(resp => {\n const userId = resp.body.numericValue;\n return userId;\n }),\n catchError(() => {\n return of(null);\n }),\n share(),\n );\n }\n //#endregion\n\n //#region get current user id\n userExists(\n email: string,\n opt: {\n goToPreviouseState: () => void;\n },\n ): Observable<boolean> {\n return this.taonSessionController.userExists(email)\n .request!().observable.pipe(\n map(resp => {\n const userExists = resp.body.booleanValue;\n return userExists;\n }),\n catchError(() => {\n opt.goToPreviouseState();\n return NEVER;\n }),\n );\n }\n //#endregion\n\n //#region get current user id\n createUser(\n email: string,\n password: string,\n ): Observable<TaonSessionUserEntity | undefined> {\n return this.taonSessionController.createUser(email, password)\n .request!().observable.pipe(\n map(resp => {\n const userExists = resp.body.json;\n return userExists;\n }),\n catchError(() => {\n return of(null);\n }),\n );\n }\n //#endregion\n\n //#region refresh\n refresh(): Observable<boolean> {\n return this.taonSessionController.refresh().request!().observable.pipe(\n map(resp => {\n return !!resp.body.booleanValue;\n }),\n catchError(() => {\n return of(false);\n }),\n );\n }\n //#endregion\n}\n","//#region imports\nimport { Injectable } from '@angular/core';\nimport { NEVER, Observable, of } from 'rxjs';\nimport { catchError, map, tap } from 'rxjs/operators';\nimport { ClassHelpers, Taon, TaonBaseAngularService } from 'taon/websql';\n\nimport { TaonSessionUserEntity } from '../taon-session-user/taon-session-user.entity';\n\nimport { TaonSessionController } from './taon-session.controller';\nimport {\n TaonSessionConfig,\n TaonSessionProvider,\n} from './taon-session.provider';\n//#endregion\n\n@Injectable()\nexport class TaonSessionConfigService extends TaonBaseAngularService {\n private taonSessionProvider = this.injectProvider(TaonSessionProvider);\n\n clone(): TaonSessionConfig {\n const cloned = this.taonSessionProvider.clone();\n return cloned;\n }\n}\n","import { Translation } from '@taon-dev/i18n/websql';\nimport { Taon } from 'taon/websql';\n\nconst t = Translation.for('src/lib/taon-session/taon-session.models.ts', {} as any);\n\nexport interface TaonLoginData {\n email?: string;\n password?: string;\n googleCode?: string;\n}\n\nexport interface GoogleCodeResponse {\n code?: string;\n error?: string;\n error_description?: string;\n}\n\nexport enum TaonSessionState {\n LOADING_INITIAL_AUTH_INFO = 'LOADING_INITIAL_AUTH_INFO',\n LOGIN_OR_REGISTER = 'LOGIN_OR_REGISTER',\n ENTER_PASSWORD = 'ENTER_PASSWORD',\n ENTER_REGISTRATION_PASSWORDS = 'ENTER_REGISTRATION_PASSWORDS',\n LOADING_AUTH = 'LOADING_AUTH',\n LOADING_CHECK_USER_EMAIL_EXISTS = 'LOADING_CHECK_USER_EMAIL_EXISTS',\n LOADING_CREATING_USER = 'LOADING_CREATING_USER',\n LOADING_LOGOUT_INFO = 'LOADING_LOGOUT_INFO',\n TWO_FA_EMAIL = 'TWO_FA_EMAIL',\n TWO_FA_SMS = 'TWO_FA_SMS',\n TWO_FA_AUTHENTICATOR = 'TWO_FA_AUTHENTICATOR',\n LOGIN_SUCCESS = 'LOGIN_SUCCESS',\n PROFILE_INFO = 'PROFILE_INFO',\n PASSWORD_CHANGE = 'PASSWORD_CHANGE',\n AVATAR_CHANGE = 'AVATAR_CHANGE',\n}\n\nexport enum TaonLoginErrors {\n INVALID_PASSWORD = 'INVALID_PASSWORD',\n INVALID_SOCIAL_LOGIN = 'INVALID_SOCIAL_LOGIN',\n PASSWORDS_DO_NOT_MATCH = 'PASSWORDS_DO_NOT_MATCH',\n}\n\nexport const TaonErorsMap = new Map([\n [TaonLoginErrors.INVALID_PASSWORD, t.gettext('Invalid Password')],\n [\n TaonLoginErrors.INVALID_SOCIAL_LOGIN,\n t.gettext('Not able to login with social account'),\n ],\n [\n TaonLoginErrors.PASSWORDS_DO_NOT_MATCH,\n t.gettext('Passwords do not match each other'),\n ],\n]);\n","//#region imports\n\nimport { inject, Injectable } from '@angular/core'; // @browser\n\nimport {\n BehaviorSubject,\n catchError,\n combineLatest,\n finalize,\n map,\n NEVER,\n Observable,\n of,\n shareReplay,\n switchMap,\n take,\n tap,\n} from 'rxjs';\n\nimport { TaonBaseProvider, TaonProvider } from 'taon/websql';\nimport { signal } from 'tnp-core/websql';\nimport { TaonStateMachine } from 'tnp-core/websql';\n\nimport { TaonAuthContextEntity } from '../taon-auth-context/taon-auth-context.entity';\n\nimport type { TaonSessionComponent } from './taon-session/taon-session.component'; // @browser\nimport { TaonSessionApiService } from './taon-session.api.service'; // @browser\nimport {\n TaonErorsMap,\n TaonLoginErrors,\n TaonSessionState,\n} from './taon-session.models';\n\n//#endregion\n\n/* */\n/* */\n/* */\n/* */\n \n//#region @browser\n@Injectable()\n//#endregion\nexport class TaonSessionStateService extends TaonBaseProvider {\n //#region fields & getters\n\n //#region @browser\n protected readonly taonSessionApiService = inject(TaonSessionApiService);\n //#endregion\n\n /**\n * Refreshes session/authentication information.\n *\n * This causes getCurrentUserId() to be called again.\n */\n protected readonly refreshSrc = new BehaviorSubject<void>(void 0);\n\n /**\n * Refreshes authorization context without reloading\n * the current session/user.\n *\n * Useful when roles/groups/permissions change while\n * the currently authenticated user stays the same.\n */\n protected readonly contextRefreshSrc = new BehaviorSubject<void>(void 0);\n\n protected readonly userId = signal<number | undefined>(void 0);\n\n protected readonly currentSlide = signal(\n TaonSessionState.LOADING_INITIAL_AUTH_INFO,\n );\n\n private allowedStateMap = new Map<TaonSessionState, TaonSessionState[]>([\n [\n TaonSessionState.LOADING_INITIAL_AUTH_INFO,\n [TaonSessionState.LOGIN_OR_REGISTER, TaonSessionState.LOGIN_SUCCESS],\n ],\n [\n TaonSessionState.LOGIN_OR_REGISTER,\n [\n TaonSessionState.ENTER_PASSWORD,\n TaonSessionState.ENTER_REGISTRATION_PASSWORDS,\n TaonSessionState.LOADING_AUTH,\n TaonSessionState.LOADING_CHECK_USER_EMAIL_EXISTS,\n ],\n ],\n [\n TaonSessionState.LOADING_CHECK_USER_EMAIL_EXISTS,\n [\n TaonSessionState.ENTER_PASSWORD,\n TaonSessionState.ENTER_REGISTRATION_PASSWORDS,\n TaonSessionState.LOGIN_OR_REGISTER,\n ],\n ],\n [\n TaonSessionState.ENTER_REGISTRATION_PASSWORDS,\n [TaonSessionState.LOADING_AUTH, TaonSessionState.LOGIN_OR_REGISTER],\n ],\n [\n TaonSessionState.ENTER_PASSWORD,\n [\n TaonSessionState.LOGIN_OR_REGISTER,\n TaonSessionState.ENTER_PASSWORD,\n TaonSessionState.LOADING_AUTH,\n TaonSessionState.TWO_FA_AUTHENTICATOR,\n TaonSessionState.TWO_FA_EMAIL,\n TaonSessionState.TWO_FA_SMS,\n ],\n ],\n [\n TaonSessionState.LOADING_AUTH,\n [\n TaonSessionState.ENTER_PASSWORD,\n TaonSessionState.LOGIN_OR_REGISTER,\n TaonSessionState.LOGIN_SUCCESS,\n ],\n ],\n [\n TaonSessionState.LOGIN_SUCCESS,\n [\n TaonSessionState.LOADING_LOGOUT_INFO,\n TaonSessionState.ENTER_PASSWORD,\n TaonSessionState.PROFILE_INFO,\n ],\n ],\n [\n TaonSessionState.PROFILE_INFO,\n [\n TaonSessionState.LOGIN_SUCCESS,\n TaonSessionState.LOADING_LOGOUT_INFO,\n TaonSessionState.ENTER_PASSWORD,\n ],\n ],\n [\n TaonSessionState.LOADING_LOGOUT_INFO,\n [TaonSessionState.LOGIN_OR_REGISTER, TaonSessionState.LOGIN_SUCCESS],\n ],\n ]);\n\n public state = new TaonStateMachine<TaonSessionState>({\n defaultValue: this.currentSlide(),\n allowedStateMap: this.allowedStateMap,\n effect: (nextState, previousState, debugMode) => {\n this.currentSlide.set(nextState);\n },\n });\n\n /**\n * Current authenticated user.\n *\n * Shared because multiple consumers may depend on userId$,\n * isLoggedIn$ and context$ at the same time.\n *\n * One refresh => one getCurrentUserId() request.\n */\n protected readonly userId$ = this.refreshSrc.pipe(\n switchMap(() => {\n/* */\n/* */\n \n\n //#region @browser\n return this.taonSessionApiService.getCurrentUserId().pipe(\n catchError(() => {\n this.state.set(TaonSessionState.LOGIN_OR_REGISTER);\n return of(void 0);\n }),\n );\n //#endregion\n }),\n\n tap(userId => {\n this.userId.set(userId);\n\n if (userId) {\n this.state.set(TaonSessionState.LOGIN_SUCCESS);\n } else {\n this.state.set(TaonSessionState.LOGIN_OR_REGISTER);\n }\n }),\n\n shareReplay({\n bufferSize: 1,\n refCount: true,\n }),\n );\n\n /**\n * Projection of userId$.\n *\n * Does NOT cause another getCurrentUserId() call because\n * userId$ is shared.\n */\n public readonly isLoggedIn$ = this.userId$.pipe(map(userId => !!userId));\n\n //#region @browser\n\n /**\n * Current authorization context.\n *\n * Reloaded when:\n *\n * 1. session/user changes\n * 2. refreshContext() is explicitly called\n *\n * Multiple subscribers share the same context request.\n */\n public readonly context$: Observable<TaonAuthContextEntity> = combineLatest([\n this.userId$,\n this.contextRefreshSrc,\n ]).pipe(\n switchMap(([userId]) => {\n if (!userId) {\n return this.taonSessionApiService.emptyContext();\n }\n\n return this.taonSessionApiService.context();\n }),\n\n shareReplay({\n bufferSize: 1,\n refCount: true,\n }),\n );\n\n //#endregion\n\n //#endregion\n\n public executeActionForState(\n //#region @browser\n form: TaonSessionComponent['form'],\n //#endregion\n ): void {\n //#region @browser\n\n form.updateValueAndValidity();\n\n if (form.invalid) {\n return;\n }\n\n const googleCodeField = form.controls.googleCode;\n const isSocialLogin = googleCodeField.value!;\n\n //#region login action\n\n const loginAction = (): void => {\n const passwordField = form.controls.password;\n\n if (!isSocialLogin) {\n passwordField.markAsTouched();\n }\n\n this.state.set(TaonSessionState.LOADING_AUTH);\n\n this.taonSessionApiService\n .login({\n email: form.controls.email.value!,\n password: passwordField.value!,\n googleCode: googleCodeField.value!,\n })\n .pipe(\n take(1),\n\n tap(okLogin => {\n googleCodeField.reset();\n\n if (okLogin) {\n this.state.set(TaonSessionState.LOGIN_SUCCESS);\n\n if (!isSocialLogin) {\n passwordField.markAsUntouched();\n }\n } else {\n if (isSocialLogin) {\n this.state.set(TaonSessionState.LOGIN_OR_REGISTER);\n\n googleCodeField.setErrors({\n [TaonLoginErrors.INVALID_SOCIAL_LOGIN]: true,\n });\n } else {\n this.state.set(TaonSessionState.ENTER_PASSWORD);\n\n passwordField.setErrors({\n ...(passwordField.errors ?? {}),\n [TaonLoginErrors.INVALID_PASSWORD]: true,\n });\n\n passwordField.markAsTouched();\n }\n }\n }),\n\n finalize(() => {\n this.refresh();\n }),\n )\n .subscribe();\n };\n\n //#endregion\n\n switch (this.state.currentValue) {\n //#region LOGIN_OR_REGISTER\n\n case TaonSessionState.LOGIN_OR_REGISTER:\n if (isSocialLogin) {\n loginAction();\n } else {\n this.state.set(TaonSessionState.LOADING_CHECK_USER_EMAIL_EXISTS);\n\n this.taonSessionApiService\n .userExists(form.controls.email.value!, {\n goToPreviouseState: () => {\n this.state.set(TaonSessionState.LOGIN_OR_REGISTER);\n },\n })\n .pipe(\n take(1),\n\n tap(userExists => {\n if (userExists) {\n this.state.set(TaonSessionState.ENTER_PASSWORD);\n } else {\n this.state.set(TaonSessionState.ENTER_REGISTRATION_PASSWORDS);\n }\n }),\n\n catchError(err => {\n this.state.set(TaonSessionState.LOGIN_OR_REGISTER);\n return NEVER;\n }),\n )\n .subscribe();\n }\n\n return;\n\n //#endregion\n\n //#region ENTER_REGISTRATION_PASSWORDS\n\n case TaonSessionState.ENTER_REGISTRATION_PASSWORDS:\n this.state.set(TaonSessionState.LOADING_CREATING_USER);\n\n this.taonSessionApiService\n .createUser(form.controls.email.value!, form.controls.password.value!)\n .pipe(\n take(1),\n\n tap(user => {\n if (user) {\n loginAction();\n } else {\n this.state.set(TaonSessionState.ENTER_REGISTRATION_PASSWORDS);\n }\n }),\n\n catchError(err => {\n this.state.set(TaonSessionState.ENTER_REGISTRATION_PASSWORDS);\n\n return NEVER;\n }),\n )\n .subscribe();\n\n return;\n\n //#endregion\n\n //#region ENTER_PASSWORD\n\n case TaonSessionState.ENTER_PASSWORD:\n loginAction();\n return;\n\n //#endregion\n\n default:\n break;\n }\n\n //#endregion\n }\n\n public logout(successCallback?: () => void): void {\n this.state.set(TaonSessionState.LOADING_LOGOUT_INFO);\n\n //#region @browser\n\n this.taonSessionApiService\n .logout()\n .pipe(\n take(1),\n\n tap(logoutOk => {\n if (logoutOk) {\n this.state.set(TaonSessionState.LOGIN_OR_REGISTER);\n successCallback?.();\n } else {\n this.state.set(TaonSessionState.LOGIN_SUCCESS);\n }\n }),\n\n finalize(() => {\n this.refresh();\n }),\n )\n .subscribe();\n\n //#endregion\n }\n\n /**\n * Reload complete authentication/session state.\n *\n * This causes:\n *\n * getCurrentUserId()\n * -> userId$\n * -> isLoggedIn$\n * -> context$\n */\n public refresh(): void {\n this.refreshSrc.next(void 0);\n }\n\n /**\n * Reload authorization context only.\n *\n * Does NOT call getCurrentUserId().\n */\n public refreshContext(): void {\n this.contextRefreshSrc.next(void 0);\n }\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms'; // browser\n\nimport { TaonLoginErrors, TaonSessionState } from './taon-session.models';\n\nexport namespace TaonSessionValidator {\n //#region @browser\n export const passwordMatchValidator: ValidatorFn = (\n control: AbstractControl,\n ): ValidationErrors | null => {\n const password = control.get('password');\n const passwordRepeat = control.get('passwordRepeat');\n const state = control.get('state');\n if (state.value !== TaonSessionState.ENTER_REGISTRATION_PASSWORDS) {\n return null;\n }\n\n if (!password || !passwordRepeat) {\n return null;\n }\n\n return password.value === passwordRepeat.value\n ? null\n : { [TaonLoginErrors.PASSWORDS_DO_NOT_MATCH]: true };\n };\n //#endregion\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Output } from '@angular/core';\nimport { MatRippleModule } from '@angular/material/core'; // Optional: for Material ripple effect\nimport { Translation } from '@taon-dev/i18n/websql';\nimport { Taon } from 'taon/websql';\n\nconst t = Translation.for('src/lib/taon-session/taon-session/social-buttons/google-login-register-button.component.ts', {} as any);\n\n@Component({\n selector: 'google-login-register-button',\n standalone: true,\n imports: [CommonModule, MatRippleModule],\n templateUrl: './google-login-register-button.component.html',\n})\nexport class GoogleLoginRegisterButtonComponent {\n t = t.for(this);\n\n @Output() googleSignIn = new EventEmitter<void>();\n\n onClick() {\n this.googleSignIn.emit();\n }\n}\n","<button\n type=\"button\"\n matRipple\n (click)=\"onClick()\"\n class=\"flex w-full items-center justify-center gap-3 px-4 py-2.5 border border-slate-300 rounded-full font-medium text-slate-700 bg-white hover:bg-slate-50 hover:border-slate-400 active:bg-slate-100 shadow-sm transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 cursor-pointer\">\n <!-- Google SVG Logo -->\n <svg\n class=\"w-5 h-5\"\n viewBox=\"0 0 24 24\">\n <path\n fill=\"#4285F4\"\n d=\"M23.745 12.27c0-.7-.06-1.4-.19-2.07H12v4.51h6.6c-.29 1.52-1.14 2.82-2.4 3.68v3.05h3.88c2.27-2.09 3.66-5.17 3.66-9.17z\" />\n <path\n fill=\"#34A853\"\n d=\"M12 24c3.24 0 5.95-1.08 7.93-2.91l-3.88-3.05c-1.08.72-2.45 1.16-4.05 1.16-3.12 0-5.77-2.1-6.72-4.93H1.19v3.15C3.17 21.32 7.25 24 12 24z\" />\n <path\n fill=\"#FBBC05\"\n d=\"M5.28 14.27c-.25-.72-.38-1.49-.38-2.27s.13-1.55.38-2.27V6.58H1.19C.43 8.1 0 9.8 0 12s.43 3.9 1.19 5.42l4.09-3.15z\" />\n <path\n fill=\"#EA4335\"\n d=\"M12 4.75c1.77 0 3.35.61 4.6 1.8l3.42-3.42C17.95 1.19 15.24 0 12 0 7.25 0 3.17 2.68 1.19 6.58l4.09 3.15c.95-2.83 3.6-4.98 6.72-4.98z\" />\n </svg>\n <span class=\"text-sm font-semibold tracking-wide\">{{\n t.gettext('Sign in with Google')\n }}</span>\n </button>\n","//#region imports\nimport { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n inject,\n Input,\n Output,\n signal,\n} from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { RouterOutlet } from '@angular/router';\nimport { Translation } from '@taon-dev/i18n/websql';\nimport {\n TaonConfirmDialogComponent,\n TaonHorizontalWheelScrollDirective,\n} from '@taon-dev/ui/websql';\nimport { firstValueFrom, map, shareReplay } from 'rxjs';\nimport { Taon } from 'taon/websql';\n\nimport { GoogleCodeResponse, TaonSessionConfig } from '../../../index';\n// import { TaonProfilePictureComponent } from '../../../taon-session/taon-profile/taon-profile-picture/taon-profile-picture.component';\nimport { TaonSessionApiService } from '../../../taon-session/taon-session.api.service';\nimport { TaonSessionStateService } from '../../../taon-session/taon-session.state.service';\nimport { TaonSessionUserEntity } from '../../../taon-session-user/taon-session-user.entity';\nimport { TaonSessionIdentityProvider } from '../../../taon-session-user/taon-session-user.models';\n\n//#endregion\n\ndeclare const google: any;\n\nconst t = Translation.for('src/lib/taon-session/taon-session/taon-session-profile/taon-session-profile.component.ts', {} as any);\n\n@Component({\n selector: 'taon-session-profile',\n templateUrl: './taon-session-profile.component.html',\n styleUrls: ['./taon-session-profile.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AsyncPipe,\n RouterOutlet,\n MatButtonModule,\n MatButtonToggleModule,\n MatTabsModule,\n MatIconModule,\n MatDividerModule,\n MatInputModule,\n MatFormFieldModule,\n ReactiveFormsModule,\n TaonHorizontalWheelScrollDirective,\n // TaonProfilePictureComponent,\n ],\n})\nexport class TaonSessionProfileComponent {\n //#region fields & getters\n t = t.for(this);\n\n TaonSessionIdentityProvider = TaonSessionIdentityProvider;\n\n @Input()\n public config: TaonSessionConfig;\n\n protected readonly taonSessionApiService = inject(TaonSessionApiService);\n\n public readonly taonSessionStateService = inject(TaonSessionStateService);\n\n readonly context$ = this.taonSessionStateService.context$.pipe(\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n readonly usernameForm = new FormGroup({\n username: new FormControl('', { nonNullable: true, validators: [\n Validators.required, Validators.maxLength(255), Validators.pattern(/\\S/),\n ] }),\n });\n\n readonly passwordForm = new FormGroup({\n email: new FormControl('', { nonNullable: true, validators: [Validators.required, Validators.email] }),\n password: new FormControl('', { nonNullable: true, validators: [\n Validators.required, Validators.minLength(8), Validators.maxLength(128),\n ] }),\n passwordRepeat: new FormControl('', { nonNullable: true, validators: [Validators.required] }),\n });\n\n readonly savingUsername = signal(false);\n\n readonly usernameError = signal('');\n\n readonly usernameSaved = signal(false);\n\n readonly showPasswordForm = signal(false);\n\n readonly savingPassword = signal(false);\n\n readonly passwordError = signal('');\n\n get isVisibleGoogle(): boolean {\n return this.config?.socialLogin?.google?.enabled;\n }\n\n get isVisibleApple(): boolean {\n return this.config?.socialLogin?.apple?.enabled;\n }\n\n get isVisibleMicrosoft(): boolean {\n return this.config?.socialLogin?.microsoft?.enabled;\n }\n\n get isVisibleFacebook(): boolean {\n return this.config?.socialLogin?.facebook?.enabled;\n }\n\n get isVisibleGithub(): boolean {\n return this.config?.socialLogin?.github?.enabled;\n }\n\n /**\n * Email/password can be connected only when the user currently\n * has no PASSWORD identity.\n *\n * In practice this means an account created purely through\n * social authentication.\n */\n readonly canConnectEmail$ = this.context$.pipe(\n map(context => {\n const identities = context?.user?.identities || [];\n\n return !identities.some(\n identity => identity.provider === TaonSessionIdentityProvider.PASSWORD,\n );\n }),\n );\n\n readonly canConnectGoogle$ = this.context$.pipe(\n map(context => {\n const identities = context?.user?.identities || [];\n\n return !identities.some(\n identity => identity.provider === TaonSessionIdentityProvider.GOOGLE,\n );\n }),\n );\n\n readonly canConnectGithub$ = this.context$.pipe(\n map(context => {\n const identities = context?.user?.identities || [];\n\n return !identities.some(\n identity => identity.provider === TaonSessionIdentityProvider.GITHUB,\n );\n }),\n );\n\n readonly canConnectApple$ = this.context$.pipe(\n map(context => {\n const identities = context?.user?.identities || [];\n\n return !identities.some(\n identity => identity.provider === TaonSessionIdentityProvider.APPLE,\n );\n }),\n );\n\n readonly canConnectMicrosoft$ = this.context$.pipe(\n map(context => {\n const identities = context?.user?.identities || [];\n\n return !identities.some(\n identity => identity.provider === TaonSessionIdentityProvider.MICROSOFT,\n );\n }),\n );\n\n readonly canConnectFacebook$ = this.context$.pipe(\n map(context => {\n const identities = context?.user?.identities || [];\n\n return !identities.some(\n identity => identity.provider === TaonSessionIdentityProvider.FACEBOOK,\n );\n }),\n );\n\n @Output()\n readonly logout = new EventEmitter<void>();\n\n readonly dialog = inject(MatDialog);\n //#endregion\n\n onLogout(): void {\n this.logout.next();\n }\n\n //#region disconnect\n\n public disconnect(provider: TaonSessionIdentityProvider): void {\n const ref = this.dialog.open(TaonConfirmDialogComponent, {\n width: '376px',\n data: {\n title: this.t.gettext('Are you sure? '),\n message: this.t.gettext('Disconnecting provider [[ provider ]].', {\n provider,\n }),\n confirmText: this.t.gettext('OK'),\n cancelText: this.t.gettext('Cancel'),\n },\n });\n\n ref.afterClosed().subscribe(async confirmed => {\n if (!confirmed) return;\n\n this.taonSessionApiService\n .disconnectIdentity(provider)\n .subscribe(connectedToGoogle => {\n if (connectedToGoogle) {\n this.taonSessionStateService.refresh();\n }\n });\n });\n }\n //#endregion\n\n //#region connect email\n connectEmail(user?: TaonSessionUserEntity | null): void {\n const identity = user?.identities?.find(identity =>\n identity.isEmailVerified === true && !!identity.email,\n );\n if (!identity) {\n this.passwordError.set(this.t.gettext('Connect a sign-in method with a verified email first.'));\n return;\n }\n this.passwordForm.reset({ email: identity.email, password: '', passwordRepeat: '' });\n this.passwordError.set('');\n this.showPasswordForm.set(true);\n }\n //#endregion\n\n async savePassword(): Promise<void> {\n this.passwordForm.markAllAsTouched();\n this.passwordError.set('');\n if (this.passwordForm.invalid || this.savingPassword()) {\n return;\n }\n const { email, password, passwordRepeat } = this.passwordForm.getRawValue();\n if (password !== passwordRepeat) {\n this.passwordError.set(this.t.gettext('Passwords do not match each other'));\n return;\n }\n this.savingPassword.set(true);\n try {\n const connected = await firstValueFrom(this.taonSessionApiService.connectPassword(email, password));\n if (!connected) {\n this.passwordError.set(this.t.gettext('Unable to connect email/password.'));\n return;\n }\n this.passwordForm.reset();\n this.showPasswordForm.set(false);\n this.taonSessionStateService.refreshContext();\n } catch (error) {\n console.error('[connect-email]', error);\n this.passwordError.set(this.t.gettext('Unable to connect email/password. The email may already belong to another account.'));\n } finally {\n this.savingPassword.set(false);\n }\n }\n\n async saveUsername(): Promise<void> {\n this.usernameForm.markAllAsTouched();\n this.usernameError.set('');\n this.usernameSaved.set(false);\n if (this.usernameForm.invalid || this.savingUsername()) {\n return;\n }\n const username = this.usernameForm.controls.username.value.trim();\n this.savingUsername.set(true);\n try {\n const available = await firstValueFrom(this.taonSessionApiService.usernameAvailable(username));\n if (!available) {\n this.usernameError.set(this.t.gettext('This username is already taken.'));\n return;\n }\n const saved = await firstValueFrom(this.taonSessionApiService.changeUsername(username));\n if (!saved) {\n this.usernameError.set(this.t.gettext('Unable to update username.'));\n return;\n }\n this.usernameForm.reset();\n this.usernameSaved.set(true);\n this.taonSessionStateService.refreshContext();\n } catch (error) {\n console.error('[change-username]', error);\n this.usernameError.set(this.t.gettext('Unable to update username. It may already be taken.'));\n } finally {\n this.savingUsername.set(false);\n }\n }\n\n //#region connect google\n private googleCodeClient?: any;\n\n public connectGoogle(): void {\n if (!this.googleCodeClient) {\n this.initGoogleLogin();\n }\n\n this.googleCodeClient.requestCode();\n }\n\n private initGoogleLogin(): void {\n this.googleCodeClient = google.accounts.oauth2.initCodeClient({\n client_id: this.config.socialLogin.google.googleClientId,\n\n scope: 'openid email profile',\n\n ux_mode: 'popup',\n\n callback: async (response: GoogleCodeResponse) => {\n if (response.error) {\n console.error('[google-login]', response);\n return;\n }\n\n if (!response.code) {\n return;\n }\n\n await this.connectGoogleIdenitty(response.code);\n },\n\n error_callback: (error: any) => {\n console.error('[google-login-popup]', error);\n },\n });\n }\n\n private connectGoogleIdenitty(googleCode: string): void {\n this.taonSessionApiService\n .connectIdentity({\n googleCode,\n })\n .subscribe(connectedToGoogle => {\n if (connectedToGoogle) {\n this.taonSessionStateService.refresh();\n }\n });\n }\n //#endregion\n\n //#region connect apple\n connectApple(): void {\n // TODO replace with proper Apple authorization flow\n console.log('Connect Apple');\n }\n //#endregion\n\n //#region connect microsoft\n connectMicrosoft(): void {\n // TODO replace with proper Microsoft authorization flow\n console.log('Connect Microsoft');\n }\n //#endregion\n\n //#region connect facebook\n connectFacebook(): void {\n // TODO replace with proper Facebook authorization flow\n console.log('Connect Facebook');\n }\n //#endregion\n}\n","@let context = context$ | async;\n<mat-tab-group taonHorizontalWheelScroll>\n <!-- CONNECT IDENTITIES -->\n <mat-tab [label]=\"t.gettext('Connect')\">\n <div class=\"tab-content\">\n <h3>{{ t.gettext('Connect sign-in method') }}</h3>\n\n <p class=\"description\">\n {{\n t.gettext('Connect additional ways of signing in to your account.')\n }}\n </p>\n\n <mat-button-toggle-group\n class=\"identity-buttons\"\n [hideSingleSelectionIndicator]=\"true\">\n @if (canConnectEmail$ | async) {\n <mat-button-toggle\n [disabled]=\"config?.login?.diableLoginByEmail\"\n (click)=\"connectEmail(context?.user)\">\n <mat-icon>email</mat-icon>\n Email\n </mat-button-toggle>\n } @else {\n <mat-button-toggle\n (click)=\"disconnect(TaonSessionIdentityProvider.PASSWORD)\">\n <mat-icon>email</mat-icon>\n Disconnect Email\n </mat-button-toggle>\n }\n\n @if (canConnectGoogle$ | async) {\n <mat-button-toggle (click)=\"connectGoogle()\">\n <mat-icon>account_circle</mat-icon>\n Google\n </mat-button-toggle>\n } @else {\n <mat-button-toggle\n (click)=\"disconnect(TaonSessionIdentityProvider.GOOGLE)\">\n <mat-icon>close</mat-icon>\n Disconnect Google\n </mat-button-toggle>\n }\n\n <!-- TODO -->\n <!-- <mat-button-toggle\n [disabled]=\"true\"\n (click)=\"connectApple()\">\n <mat-icon>apple</mat-icon>\n Apple\n </mat-button-toggle>\n\n <mat-button-toggle\n [disabled]=\"true\"\n (click)=\"connectMicrosoft()\">\n <mat-icon>window</mat-icon>\n Microsoft\n </mat-button-toggle>\n\n <mat-button-toggle\n [disabled]=\"true\"\n (click)=\"connectFacebook()\">\n <mat-icon>public</mat-icon>\n Facebook\n </mat-button-toggle>\n\n <mat-button-toggle\n [disabled]=\"true\"\n (click)=\"connectGithub()\">\n <mat-icon>public</mat-icon>\n Github\n </mat-button-toggle> -->\n </mat-button-toggle-group>\n @if (showPasswordForm()) {\n <form [formGroup]=\"passwordForm\" (ngSubmit)=\"savePassword()\">\n <mat-form-field>\n <mat-label>{{ t.gettext('Verified email') }}</mat-label>\n <input matInput formControlName=\"email\" readonly />\n </mat-form-field>\n <mat-form-field>\n <mat-label>{{ t.gettext('Password') }}</mat-label>\n <input matInput type=\"password\" formControlName=\"password\" autocomplete=\"new-password\" />\n <mat-error>{{ t.gettext('Password must contain between 8 and 128 characters.') }}</mat-error>\n </mat-form-field>\n <mat-form-field>\n <mat-label>{{ t.gettext('Repeat password') }}</mat-label>\n <input matInput type=\"password\" formControlName=\"passwordRepeat\" autocomplete=\"new-password\" />\n </mat-form-field>\n <button mat-button type=\"submit\" [disabled]=\"savingPassword() || passwordForm.invalid\">\n {{ t.gettext('Save password') }}\n </button>\n </form>\n }\n @if (passwordError()) {\n <p role=\"alert\">{{ passwordError() }}</p>\n }\n </div>\n </mat-tab>\n\n <!-- CHANGE PICTURE -->\n <!-- <mat-tab label=\"Change Picture\">\n <div class=\"tab-content\">\n <taon-profile-picture />\n\n </div>\n </mat-tab> -->\n\n <!-- CHANGE PASSWORD -->\n <mat-tab label=\"Change Password\">\n <div class=\"tab-content\">\n <!-- TODO change password -->\n </div>\n </mat-tab>\n <mat-tab [label]=\"t.gettext('Change Username')\">\n <div class=\"tab-content\">\n <p>{{ t.gettext('Current username') }}: {{ context?.user?.username || '-' }}</p>\n <form [formGroup]=\"usernameForm\" (ngSubmit)=\"saveUsername()\">\n <mat-form-field>\n <mat-label>{{ t.gettext('New username') }}</mat-label>\n <input matInput formControlName=\"username\" autocomplete=\"username\" [readonly]=\"savingUsername()\"\n (input)=\"usernameError.set(''); usernameSaved.set(false)\" />\n <mat-error>{{ t.gettext('Username must contain between 1 and 255 characters.') }}</mat-error>\n </mat-form-field>\n <button mat-button type=\"submit\" [disabled]=\"savingUsername() || usernameForm.invalid\">\n {{ t.gettext('Save username') }}\n </button>\n </form>\n @if (usernameError()) {\n <p role=\"alert\">{{ usernameError() }}</p>\n }\n @if (usernameSaved()) {\n <p role=\"status\">{{ t.gettext('Username updated.') }}</p>\n }\n </div>\n </mat-tab>\n</mat-tab-group>\n\n<mat-divider></mat-divider>\n\n<div class=\"profile-actions\">\n <button\n mat-button\n (click)=\"onLogout()\">\n <mat-icon>logout</mat-icon>\n {{ t.gettext('Logout') }}\n </button>\n</div>\n","//#region imports\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { AsyncPipe, CommonModule, JsonPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n AfterViewInit,\n Input,\n ViewChild,\n OnInit,\n OnDestroy,\n ElementRef,\n forwardRef,\n} from '@angular/core';\nimport {\n ReactiveFormsModule,\n FormsModule,\n FormGroup,\n FormControl,\n Validators,\n} from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { RouterOutlet } from '@angular/router';\nimport { MtxLoaderModule } from '@ng-matero/extensions/loader';\nimport { Translation, TranslateDirective } from '@taon-dev/i18n/websql';\nimport { walk } from 'lodash-walk-object/websql';\nimport { Subscription, take } from 'rxjs';\nimport { Taon } from 'taon/websql';\nimport {\n TaonSlideContentContentChildComponent,\n TaonSlideContentComponent,\n} from 'taon-ui/websql';\nimport { _ } from 'tnp-core/websql';\n\nimport { TaonProfilePictureComponent } from '../taon-profile/taon-profile-picture';\nimport { TaonSessionApiService } from '../taon-session.api.service';\nimport { TaonSessionConfigService } from '../taon-session.config.service';\nimport {\n GoogleCodeResponse,\n TaonErorsMap,\n TaonLoginErrors,\n TaonSessionState,\n} from '../taon-session.models';\nimport {\n TaonSessionConfig,\n TaonSessionProvider,\n} from '../taon-session.provider';\nimport { TaonSessionStateService } from '../taon-session.state.service';\nimport { TaonSessionValidator } from '../taon-session.validators';\n\nimport { GoogleLoginRegisterButtonComponent } from './social-buttons/google-login-register-button.component';\nimport { TaonSessionProfileComponent } from './taon-session-profile/taon-session-profile.component';\n//#endregion\n\ndeclare const google: any;\n\nconst t = Translation.for('src/lib/taon-session/taon-session/taon-session.component.ts', {} as any);\n\n@Component({\n selector: 'taon-session',\n templateUrl: './taon-session.component.html',\n styleUrls: ['./taon-session.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n forwardRef(() => TaonSessionApiService),\n TaonSessionStateService,\n TaonSessionProvider,\n TaonSessionConfigService,\n ],\n imports: [\n //#region imports\n AsyncPipe,\n RouterOutlet,\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n JsonPipe,\n CommonModule,\n MatDialogModule,\n MatButtonModule,\n MatIconModule,\n MatDividerModule,\n MatInputModule,\n MatFormFieldModule,\n MatProgressSpinnerModule,\n MatProgressBarModule,\n MtxLoaderModule,\n ReactiveFormsModule,\n FormsModule,\n TranslateDirective,\n TaonSlideContentComponent,\n TaonSlideContentContentChildComponent,\n A11yModule,\n GoogleLoginRegisterButtonComponent,\n TaonSessionProfileComponent,\n TaonProfilePictureComponent,\n //#endregion\n ],\n})\nexport class TaonSessionComponent implements AfterViewInit, OnInit, OnDestroy {\n //#region fields & getters\n\n @Input()\n public config: TaonSessionConfig;\n\n @ViewChild('emailInput')\n private emailInput?: ElementRef<HTMLInputElement>;\n\n @ViewChild('passwordInput')\n private passwordInput?: ElementRef<HTMLInputElement>;\n\n @ViewChild('registrationPasswordInput')\n private registrationPasswordInput?: ElementRef<HTMLInputElement>;\n\n @ViewChild('slide')\n protected slide!: TaonSlideContentComponent;\n\n protected readonly t = t.for(this);\n\n protected readonly TaonSessionState = TaonSessionState;\n\n protected readonly TaonLoginErrors = TaonLoginErrors;\n\n protected readonly TaonErorsMap = TaonErorsMap;\n\n protected emailRegex = /^[a-zA-Z0-9._%+-]+@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,}$/;\n\n public taonSessionStateService: TaonSessionStateService = inject(\n TaonSessionStateService,\n );\n\n protected readonly taonSessionConfigService: TaonSessionConfigService =\n inject(TaonSessionConfigService);\n\n protected form = new FormGroup(\n {\n email: new FormControl('', []),\n password: new FormControl('', []),\n passwordRepeat: new FormControl('', []),\n googleCode: new FormControl('', []),\n state: new FormControl(\n this.taonSessionStateService.state.currentValue,\n [],\n ),\n },\n {\n validators: [TaonSessionValidator.passwordMatchValidator],\n },\n );\n\n protected readonly dialogRef = inject(MatDialogRef<TaonSessionComponent>, {\n optional: true,\n });\n\n isLoggedIn$ = this.taonSessionStateService.isLoggedIn$;\n\n context$ = this.taonSessionStateService.context$; // TODO @LAST\n\n protected sub = new Subscription();\n\n protected googleButtonLoaded = false;\n\n public whenAllowedAnimationMap = new Map<\n TaonSessionState,\n TaonSessionState[]\n >([\n [\n TaonSessionState.LOGIN_OR_REGISTER,\n [\n TaonSessionState.ENTER_PASSWORD,\n TaonSessionState.ENTER_REGISTRATION_PASSWORDS,\n TaonSessionState.LOADING_AUTH,\n ],\n ],\n [TaonSessionState.LOADING_AUTH, [TaonSessionState.LOGIN_SUCCESS]],\n ]);\n\n public get isInsideDialog(): boolean {\n return !!this.dialogRef;\n }\n\n get googleClientId(): string {\n return this.config.socialLogin.google.googleClientId;\n }\n\n get microsoftClientId(): string {\n return this.config.socialLogin.microsoft.microsoftClientId;\n }\n\n get isAnySocialLoginEnabled(): boolean {\n return this.config.socialLogin.isAnySocialLoginEnabled;\n }\n\n get diableLoginByEmail(): boolean {\n return this.config.login.diableLoginByEmail;\n }\n\n //#endregion\n\n //#region reload me\n public reloadMe(): void {\n this.taonSessionStateService.refresh();\n }\n //#endregion\n\n //#region execute action for state\n public executeActionForState(): void {\n this.taonSessionStateService.executeActionForState(this.form);\n }\n //#endregion\n\n //#region goto\n public goTo(action: TaonSessionState): void {\n this.taonSessionStateService.state.set(action);\n }\n //#endregion\n\n //#region logout\n public logout(): void {\n this.taonSessionStateService.logout(() => {\n this.close();\n });\n }\n //#endregion\n\n //#region close\n protected close(): void {\n if (this.isInsideDialog) {\n this.dialogRef.close();\n }\n }\n //#endregion\n\n //#region set focus main input\n private focusMainInput(state: TaonSessionState): void {\n switch (state) {\n case TaonSessionState.LOGIN_OR_REGISTER:\n if (!this.config.socialLogin.isAnySocialLoginEnabled) {\n this.emailInput?.nativeElement.focus();\n }\n break;\n\n case TaonSessionState.ENTER_PASSWORD:\n this.passwordInput?.nativeElement.focus();\n break;\n\n case TaonSessionState.ENTER_REGISTRATION_PASSWORDS:\n this.registrationPasswordInput?.nativeElement.focus();\n break;\n\n // later:\n // case TaonSessionState.TWO_FA_AUTHENTICATOR:\n // this.twoFaInput?.nativeElement.focus();\n // break;\n }\n }\n //#endregion\n\n //#region google login\n private googleCodeClient?: any;\n\n private initGoogleLogin(): void {\n this.googleCodeClient = google.accounts.oauth2.initCodeClient({\n client_id: this.config.socialLogin.google.googleClientId,\n\n scope: 'openid email profile',\n\n ux_mode: 'popup',\n\n callback: async (response: GoogleCodeResponse) => {\n if (response.error) {\n console.error('[google-login]', response);\n return;\n }\n\n if (!response.code) {\n return;\n }\n\n await this.loginWithGoogleCode(response.code);\n },\n\n error_callback: (error: any) => {\n console.error('[google-login-popup]', error);\n },\n });\n }\n\n public loginWithGoogle(): void {\n this.form.controls.googleCode.setErrors({});\n if (!this.googleCodeClient) {\n this.initGoogleLogin();\n }\n\n this.googleCodeClient.requestCode();\n }\n\n private async loginWithGoogleCode(code: string): Promise<void> {\n this.form.controls.googleCode.setValue(code);\n // this.taonSessionStateService.state.set(TaonSessionState.LOADING_AUTH);\n this.form.controls.email.reset();\n this.form.controls.email.setValidators([]);\n this.form.controls.email.setErrors({});\n this.form.controls.email.updateValueAndValidity();\n this.executeActionForState();\n }\n //#endregion\n\n //#region hooks\n\n //#region hooks / on init\n ngOnInit(): void {\n const config = this.taonSessionConfigService.clone();\n walk.Object(\n this.config || {},\n (value, lodashPath) => {\n _.set(config, lodashPath, value);\n },\n {\n walkGetters: false,\n },\n );\n this.config = config;\n\n this.isLoggedIn$.pipe(take(1)).subscribe();\n //Called after the constructor, initializing input properties, and the first call to ngOnChanges.\n //Add 'implements OnInit' to the class.\n if (!this.config.login.linkToDashboard) {\n throw `Please provide config input to taon-session (or taon-session-button) component`;\n }\n if (this.config.login.defaultEmail) {\n this.form.controls.email.setValue(this.config.login.defaultEmail);\n }\n\n this.resetPasswordScreen();\n }\n //#endregion\n\n //#region hooks / on destroy\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n //#endregion\n\n //#region hooks / after view init\n ngAfterViewInit(): void {\n this.sub.add(\n this.taonSessionStateService.state.currentState$.subscribe(\n ({ currentState, previousState }) => {\n if (\n currentState === TaonSessionState.LOGIN_SUCCESS &&\n this.isInsideDialog\n ) {\n this.close();\n }\n this.form.controls.state.setValue(currentState);\n if (currentState === TaonSessionState.LOGIN_OR_REGISTER) {\n this.form.controls.googleCode.setValue('');\n }\n this.updateValidatorsFor(currentState);\n // console.log({ newState });\n if (this.slide) {\n this.slide.goTo(currentState);\n setTimeout(() => {\n // console.log(`FOCUS: ${newState}`);\n this.focusMainInput(currentState);\n }, 500);\n }\n },\n ),\n );\n }\n //#endregion\n\n //#endregion\n\n //#region reset password field\n public resetPasswordScreen() {\n this.form.controls.password.reset();\n this.form.controls.password.setValue(\n this.config.login.defaultPassword || '',\n );\n this.form.controls.passwordRepeat.reset();\n this.form.controls.passwordRepeat.setValue(\n this.config.login.defaultPassword || '',\n );\n }\n //#endregion\n\n //#region update validators for\n private updateValidatorsFor(state: TaonSessionState): void {\n const { email, password, passwordRepeat } = this.form.controls;\n\n email.setValidators(\n state === TaonSessionState.LOGIN_OR_REGISTER &&\n !this.config?.login.diableLoginByEmail\n ? [Validators.required, Validators.pattern(this.emailRegex)]\n : [],\n );\n\n password.setValidators(\n state === TaonSessionState.ENTER_PASSWORD ||\n state === TaonSessionState.ENTER_REGISTRATION_PASSWORDS\n ? [Validators.required]\n : [],\n );\n\n passwordRepeat.setValidators(\n state === TaonSessionState.ENTER_REGISTRATION_PASSWORDS\n ? [Validators.required]\n : [],\n );\n\n if (!this.config?.login.diableLoginByEmail) {\n email.updateValueAndValidity();\n }\n\n password.updateValueAndValidity();\n passwordRepeat.updateValueAndValidity();\n }\n //#endregion\n}\n","<!-- #region close button -->\n<div\n class=\"absolute top-1 right-1 pointer z-1\"\n *ngIf=\"isInsideDialog\">\n <button\n mat-icon-button\n aria-label=\"Close dialog\"\n (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n</div>\n<!-- #endregion -->\n<!-- STATE: {{ state.currentValue }} <br /> -->\n<!-- ERRORS: {{ form.errors | json }} <br /> -->\n<!-- IS LOGGED IN: {{ isLoggedIn$ | async }}<br /> -->\n<!-- {{ context$ | async | json }} -->\n<!-- <button (click)=\"test()\" >test</button> -->\n<h1 class=\"flex items-center justify-center pt-10\">\n <taon-profile-picture [hideButtons]=\"!(isLoggedIn$ | async)\" />\n <!-- <mat-icon\n class=\"!w-[100px] !h-[100px] !text-[100px] !leading-[100px]\"\n fontIcon=\"account_circle\">\n </mat-icon> -->\n</h1>\n<taon-slide-content\n #slide\n [whenAllowedAnimationMap]=\"whenAllowedAnimationMap\">\n <taon-slide-content-child\n [assignToState]=\"TaonSessionState.LOADING_INITIAL_AUTH_INFO\">\n <!-- #region login success -->\n <div class=\"p-5\">\n <h4\n class=\"mb-3\"\n translate [translate-t]=\"t\">\n Loading authenticaiton info..\n </h4>\n\n <div class=\"w-full pt-3\">\n <!-- success stuff -->\n </div>\n </div>\n <!-- #endregion -->\n </taon-slide-content-child>\n\n <taon-slide-content-child\n [assignToState]=\"TaonSessionState.LOADING_CHECK_USER_EMAIL_EXISTS\">\n <!-- #region LOADING_CHECK_USER_EMAIL_EXISTS -->\n <div class=\"p-5\">\n <h4\n class=\"mb-3\"\n translate [translate-t]=\"t\">\n Loading...\n </h4>\n\n <div class=\"w-full pt-3\">\n <!-- success stuff -->\n </div>\n </div>\n <!-- #endregion -->\n </taon-slide-content-child>\n\n <taon-slide-content-child [assignToState]=\"TaonSessionState.LOADING_AUTH\">\n <!-- #region LOADING_AUTH -->\n <div class=\"p-5\">\n <h4\n class=\"mb-3\"\n translate [translate-t]=\"t\">\n Loading authentication info...\n </h4>\n\n <div class=\"w-full pt-3\">\n <!-- success stuff -->\n </div>\n </div>\n <!-- #endregion -->\n </taon-slide-content-child>\n\n <taon-slide-content-child\n [assignToState]=\"TaonSessionState.LOGIN_OR_REGISTER\">\n <!-- #region login or register -->\n <div class=\"p-5\">\n <h4\n class=\"mb-3\"\n translate [translate-t]=\"t\">\n Login or Register\n </h4>\n\n <div class=\"w-full pt-3\">\n <!-- #region normal email -->\n <form\n [formGroup]=\"form\"\n (ngSubmit)=\"executeActionForState()\"\n class=\"w-full\">\n <mat-form-field\n [ngClass]=\"{\n 'cursor-not-allowed pointer-events-none select-none':\n diableLoginByEmail,\n }\"\n appearance=\"outline\"\n class=\"w-full email-field\">\n <mat-label *ngIf=\"!diableLoginByEmail\">Email</mat-label>\n\n <input\n #emailInput\n matInput\n formControlName=\"email\"\n class=\"pl-1\"\n type=\"email\"\n [placeholder]=\"\n diableLoginByEmail ? t.gettext('Login by email (disabled)') : ''\n \" />\n\n <button\n mat-icon-button\n [disabled]=\"diableLoginByEmail\"\n matSuffix\n color=\"primary\">\n <mat-icon>mail</mat-icon>\n </button>\n <mat-error\n *ngIf=\"\n form.get('email')?.hasError('pattern') &&\n form.get('email')?.touched\n \"\n translate [translate-t]=\"t\" [translate-t]=\"t\">\n Please enter a valid email address\n </mat-error>\n\n <mat-error\n *ngIf=\"\n form.get('email')?.hasError('required') &&\n form.get('email')?.touched\n \">\n {{ t.gettext('Email is') }} <strong translate [translate-t]=\"t\">required</strong>\n </mat-error>\n </mat-form-field>\n </form>\n <!-- #endregion -->\n\n @if (isAnySocialLoginEnabled) {\n <div class=\"divider\">\n <span translate [translate-t]=\"t\">or</span>\n </div>\n }\n\n <!-- GOOGLE BUTTON -->\n @if (googleClientId) {\n <google-login-register-button\n (googleSignIn)=\"loginWithGoogle()\"></google-login-register-button>\n\n <mat-error\n *ngIf=\"\n form\n .get('googleCode')\n ?.hasError(TaonLoginErrors.INVALID_SOCIAL_LOGIN)\n \">\n {{ TaonErorsMap.get(TaonLoginErrors.INVALID_SOCIAL_LOGIN) }}\n </mat-error>\n }\n\n <!-- <div\n *ngIf=\"googleClientId\"\n #googleBtn\n class=\"google-container\">\n <span\n *ngIf=\"!googleButtonLoaded\"\n class=\"text-300 p-2\"\n translate\n >loading google button..</span\n >\n <mat-progress-bar\n *ngIf=\"!googleButtonLoaded\"\n mode=\"indeterminate\"\n class=\"auth-progress\" />\n </div> -->\n\n <!-- MICROSOFT BUTTON -->\n <div\n *ngIf=\"microsoftClientId\"\n #microsoftBtn\n class=\"microsoft-container\">\n <button\n mat-stroked-button\n color=\"primary\"\n class=\"w-full microsoft-btn\"\n (click)=\"loginWithMicrosoft()\">\n <mat-icon class=\"mr-2\">login</mat-icon>\n {{ t.gettext('Continue with Microsoft') }}\n </button>\n </div>\n </div>\n\n <br />\n\n <div class=\"flex justify-content-end\">\n <!-- <button mat-button>\n {{ t.gettext('Login') }}\n </button> -->\n\n <!-- <button\n *ngIf=\"isInsideDialog\"\n mat-button\n mat-dialog-close>\n {{ t.gettext('Cancel') }}\n </button> -->\n </div>\n </div>\n <!-- #endregion -->\n </taon-slide-content-child>\n\n <taon-slide-content-child [assignToState]=\"TaonSessionState.ENTER_PASSWORD\">\n <!-- #region password -->\n <div class=\"p-5\">\n <h4 class=\"mb-3 flex items-center\">\n <button\n (click)=\"\n resetPasswordScreen(); goTo(TaonSessionState.LOGIN_OR_REGISTER)\n \"\n mat-icon-button\n type=\"button\">\n <mat-icon>keyboard_arrow_left</mat-icon>\n </button>\n <span class=\"flex\">{{ t.gettext('Enter Password') }}</span>\n </h4>\n <div class=\"w-full pt-3\">\n <form\n [formGroup]=\"form\"\n (ngSubmit)=\"executeActionForState()\"\n class=\"w-full\">\n <mat-form-field\n appearance=\"outline\"\n class=\"w-full email-field\">\n <mat-label>Password</mat-label>\n\n <input\n #passwordInput\n matInput\n formControlName=\"password\"\n class=\"pl-1\"\n type=\"password\" />\n\n <button\n mat-icon-button\n matSuffix\n color=\"primary\">\n <mat-icon>lock</mat-icon>\n </button>\n <mat-error\n *ngIf=\"\n form\n .get('password')\n ?.hasError(TaonLoginErrors.INVALID_PASSWORD) &&\n form.get('password')?.touched\n \">\n {{ TaonErorsMap.get(TaonLoginErrors.INVALID_PASSWORD) }}\n </mat-error>\n\n <mat-error\n *ngIf=\"\n form.get('password')?.hasError('required') &&\n form.get('password')?.touched\n \">\n {{ t.gettext('Password is') }} <strong translate [translate-t]=\"t\">required</strong>\n </mat-error>\n </mat-form-field>\n </form>\n </div>\n </div>\n <!-- #endregion -->\n </taon-slide-content-child>\n\n <taon-slide-content-child\n [assignToState]=\"TaonSessionState.ENTER_REGISTRATION_PASSWORDS\">\n <!-- #region registration passwords -->\n <div class=\"p-5\">\n <h4 class=\"mb-3 flex items-center\">\n <button\n (click)=\"\n resetPasswordScreen(); goTo(TaonSessionState.LOGIN_OR_REGISTER)\n \"\n mat-icon-button\n type=\"button\">\n <mat-icon>keyboard_arrow_left</mat-icon>\n </button>\n <span class=\"flex\">{{ t.gettext('Enter Registration Password') }}</span>\n </h4>\n <div class=\"w-full pt-3\">\n <form\n [formGroup]=\"form\"\n (ngSubmit)=\"executeActionForState()\"\n class=\"w-full\">\n <mat-form-field\n appearance=\"outline\"\n class=\"w-full email-field\">\n <mat-label>Enter Password For New Account</mat-label>\n\n <input\n #registrationPasswordInput\n matInput\n formControlName=\"password\"\n class=\"pl-1\"\n type=\"password\" />\n\n <mat-error\n *ngIf=\"\n form\n .get('password')\n ?.hasError(TaonLoginErrors.INVALID_PASSWORD) &&\n form.get('password')?.touched\n \">\n {{ TaonErorsMap.get(TaonLoginErrors.INVALID_PASSWORD) }}\n </mat-error>\n\n <mat-error\n *ngIf=\"\n form.get('password')?.hasError('required') &&\n form.get('password')?.touched\n \">\n {{ t.gettext('Password is') }} <strong translate [translate-t]=\"t\">required</strong>\n </mat-error>\n </mat-form-field>\n\n <mat-form-field\n appearance=\"outline\"\n class=\"w-full email-field\">\n <mat-label>Repeat Password</mat-label>\n\n <input\n matInput\n formControlName=\"passwordRepeat\"\n class=\"pl-1\"\n type=\"password\" />\n\n <button\n mat-icon-button\n matSuffix\n color=\"primary\">\n <mat-icon>key_vertical</mat-icon>\n </button>\n <mat-error\n *ngIf=\"\n form\n .get('passwordRepeat')\n ?.hasError(TaonLoginErrors.INVALID_PASSWORD) &&\n form.get('passwordRepeat')?.touched\n \">\n {{ TaonErorsMap.get(TaonLoginErrors.INVALID_PASSWORD) }}\n </mat-error>\n\n <mat-error\n *ngIf=\"\n form.get('passwordRepeat')?.hasError('required') &&\n form.get('passwordRepeat')?.touched\n \">\n {{ t.gettext('Repeated Password is ') }}\n <strong translate [translate-t]=\"t\">required</strong>\n </mat-error>\n </mat-form-field>\n <mat-error\n *ngIf=\"\n form.get('passwordRepeat').valid &&\n form.get('password').valid &&\n form.hasError(TaonLoginErrors.PASSWORDS_DO_NOT_MATCH)\n \">\n {{ TaonErorsMap.get(TaonLoginErrors.PASSWORDS_DO_NOT_MATCH) }}\n </mat-error>\n </form>\n </div>\n </div>\n <!-- #endregion -->\n </taon-slide-content-child>\n\n <taon-slide-content-child [assignToState]=\"TaonSessionState.LOGIN_SUCCESS\">\n <!-- #region login success -->\n <div class=\"p-5\">\n <h4\n class=\"mb-3\"\n translate [translate-t]=\"t\">\n Login Successfully\n </h4>\n\n @if (!isInsideDialog) {\n <div class=\"w-full pt-3\">\n <!-- success stuff -->\n <button\n mat-button\n (click)=\"logout()\">\n Logout\n </button>\n </div>\n }\n </div>\n <!-- #endregion -->\n </taon-slide-content-child>\n\n <taon-slide-content-child [assignToState]=\"TaonSessionState.PROFILE_INFO\">\n <!-- #region profile info -->\n <div class=\"p-5\">\n <h4\n class=\"mb-3\"\n translate [translate-t]=\"t\">\n Welcome\n </h4>\n\n <div class=\"w-full pt-3\">\n <!-- success stuff -->\n\n <taon-session-profile\n [config]=\"config\"\n (logout)=\"logout()\" />\n <!-- context -->\n </div>\n </div>\n <!-- #endregion -->\n </taon-slide-content-child>\n</taon-slide-content>\n","//#region @browser\nimport { Injectable, inject } from '@angular/core';\nimport { ActivatedRoute, PRIMARY_OUTLET, Router, UrlTree } from '@angular/router';\n\nexport type TaonBackofficeEntity = 'user' | 'group' | 'role' | 'permission' | 'session';\n\n@Injectable()\nexport class TaonBackofficeNavigationService {\n private readonly router = inject(Router);\n\n private readonly route = inject(ActivatedRoute);\n\n detailsLink(entity: TaonBackofficeEntity, id: number | string): UrlTree {\n const ancestry = this.route.snapshot.pathFromRoot;\n const outletRoot = ancestry.find(route => route.outlet !== PRIMARY_OUTLET);\n if (!outletRoot) {\n throw new Error('Session backoffice details require an admin outlet');\n }\n //#endregion\n\n const scope = ancestry.find(route =>\n route.routeConfig?.children?.some(child => child.path === 'authorization'),\n );\n if (!scope) {\n throw new Error(\n 'Session backoffice authorization routes are not configured',\n );\n }\n\n const base = scope.pathFromRoot\n .slice(ancestry.indexOf(outletRoot))\n .flatMap(route => route.url.map(segment => segment.path));\n const userPath = scope.routeConfig.children.some(\n child => child.path === 'users',\n )\n ? ['users']\n : ['session', 'user'];\n const target =\n entity === 'user'\n ? userPath\n : entity === 'session'\n ? ['session']\n : ['authorization', `${entity}s`];\n const [first, ...rest] = [...base, ...target, String(id)];\n const currentOutlet =\n this.router.parseUrl(this.router.url).root.children[outletRoot.outlet];\n\n // Match the admin layout: replace only its outlet and retain its base matrix parameters.\n return this.router.createUrlTree([\n {\n outlets: {\n [outletRoot.outlet]: [\n first,\n { ...currentOutlet?.segments[0]?.parameters },\n ...rest,\n ],\n },\n },\n ]);\n }\n\n openDetails(entity: TaonBackofficeEntity, id: number | string): void {\n void this.router.navigateByUrl(this.detailsLink(entity, id));\n }\n}\n","import {\n GET,\n Query,\n Models,\n Taon,\n TaonBaseCrudController,\n TaonController,\n TaonPaginationQuery,\n getStatusCode,\n HttpStatusEnum,\n} from 'taon/websql';\nimport { Brackets } from 'taon-typeorm/websql';\nimport { Translation } from '@taon-dev/i18n/websql';\n\nimport { TaonAuthContextRepository } from '../../taon-auth-context/taon-auth-context.repository';\nimport { TaonSessionUserIdentityRepository } from '../../taon-session-user/taon-session-user-identity.repository';\nimport { TaonSessionUserRepository } from '../../taon-session-user/taon-session-user.repository';\nimport { TaonSessionEntity } from '../taon-session.entity';\nimport { TaonSessionRepository } from '../taon-session.repository';\n\nimport { TaonSessionBackofficeModels } from './taon-session-backoffice.models';\n\nconst t = Translation.for('src/lib/taon-session/taon-session-backoffice/taon-session-backoffice.controller.ts', {} as any);\n\n@TaonController({\n className: 'TaonSessionBackofficeController',\n allowedMethods: ['paginationQuery', 'getBy'],\n})\nexport class TaonSessionBackofficeController extends TaonBaseCrudController<\n TaonSessionBackofficeModels.SessionRow,\n {},\n TaonSessionBackofficeController\n> {\n entityClassResolveFn = () => TaonSessionEntity;\n\n private readonly taonSessionRepository = this.injectCustomRepo(\n TaonSessionRepository,\n );\n\n private readonly taonAuthContextRepository = this.injectCustomRepo(\n TaonAuthContextRepository,\n );\n\n private readonly taonSessionUserRepository = this.injectCustomRepo(\n TaonSessionUserRepository,\n );\n\n private readonly taonSessionUserIdentityRepository = this.injectCustomRepo(\n TaonSessionUserIdentityRepository,\n );\n\n async beforeEachRequest({\n req,\n res,\n }: Models.TaonCtrlBeforeEachRequestParams<TaonSessionBackofficeController>): Promise<void> {\n //#region @websqlFunc\n await this.taonSessionRepository.throwIfNotAuthenticated({ req, res });\n const userId = Number('userId' in req ? req.userId : undefined);\n if (!Number.isSafeInteger(userId) || userId <= 0) {\n Taon.error({\n status: getStatusCode(HttpStatusEnum.FORBIDDEN),\n message: t.gettext('Only super users can view sessions'),\n });\n }\n const context = await this.taonAuthContextRepository.getContext(userId);\n if (!context.isSuperUser) {\n Taon.error({\n status: getStatusCode(HttpStatusEnum.FORBIDDEN),\n message: t.gettext('Only super users can view sessions'),\n });\n }\n //#endregion\n }\n\n protected async defaultPaginationQuery(\n query: TaonPaginationQuery<TaonSessionBackofficeController>,\n ): Promise<[TaonSessionBackofficeModels.SessionRow[], number]> {\n //#region @websqlFunc\n const columns = ['userId', 'deviceName', 'ip'];\n const pageNumber = Math.max(1, Math.floor(Number(query.pageNumber) || 1));\n const pageSize = Math.min(\n 100,\n Math.max(1, Math.floor(Number(query.pageSize) || 10)),\n );\n const qb = this.db\n .createQueryBuilder('session')\n .select(['session.id', 'session.userId', 'session.deviceName', 'session.ip'])\n .where('session.revokedAt IS NULL')\n .andWhere('session.expiresAt > :now', { now: new Date() });\n\n if (query.search) {\n qb.andWhere(\n new Brackets(search => {\n columns.forEach((field, index) => {\n const sql = `CAST(session.${field} AS TEXT) LIKE :search`;\n const parameters = { search: `%${String(query.search)}%` };\n if (index === 0) {\n search.where(sql, parameters);\n } else {\n search.orWhere(sql, parameters);\n }\n });\n }),\n );\n }\n for (const field of columns) {\n const value = query.filters?.[field];\n if (value !== undefined && value !== null && value !== '') {\n qb.andWhere(`CAST(session.${field} AS TEXT) LIKE :filter_${field}`, {\n [`filter_${field}`]: `%${String(value)}%`,\n });\n }\n }\n const sort = query.sort;\n if (\n sort &&\n columns.includes(sort.field) &&\n (sort.direction === 'asc' || sort.direction === 'desc')\n ) {\n qb.orderBy(\n `session.${sort.field}`,\n sort.direction === 'desc' ? 'DESC' : 'ASC',\n ).addOrderBy('session.id', 'DESC');\n } else {\n qb.orderBy('session.id', 'DESC');\n }\n const [sessions, count] = await qb\n .skip((pageNumber - 1) * pageSize)\n .take(pageSize)\n .getManyAndCount();\n return [\n sessions.map(session => ({\n id: session.id,\n userId: session.userId,\n deviceName: session.deviceName,\n ip: session.ip,\n })),\n count,\n ];\n //#endregion\n }\n\n @GET()\n getBy(\n @Query('id') id: number | string,\n ): Taon.Response<TaonSessionBackofficeModels.SessionDetails> {\n //#region @websqlFunc\n return async () => {\n const sessionId = Number(id);\n if (!Number.isSafeInteger(sessionId) || sessionId <= 0) {\n Taon.error({\n status: getStatusCode(HttpStatusEnum.BAD_REQUEST),\n message: t.gettext('Invalid session ID'),\n });\n }\n const session = await this.taonSessionRepository.findOne({\n select: {\n id: true,\n userId: true,\n identityId: true,\n authenticationProvider: true,\n deviceName: true,\n ip: true,\n userAgent: true,\n createdAt: true,\n lastActivityAt: true,\n expiresAt: true,\n revokedAt: true,\n revokeReason: true,\n },\n where: { id: sessionId },\n });\n if (!session) {\n Taon.error({\n status: getStatusCode(HttpStatusEnum.NOT_FOUND),\n message: t.gettext('Session not found'),\n });\n }\n const user = await this.taonSessionUserRepository.findOne({\n select: { id: true, username: true },\n where: { id: session.userId },\n });\n const identity = session.identityId\n ? await this.taonSessionUserIdentityRepository.findOne({\n select: { id: true, email: true, provider: true },\n where: { id: session.identityId, userId: session.userId },\n })\n : null;\n return {\n id: session.id,\n userId: session.userId,\n identityId: session.identityId,\n authenticationProvider: session.authenticationProvider,\n deviceName: session.deviceName,\n ip: session.ip,\n userAgent: session.userAgent,\n createdAt: session.createdAt,\n lastActivityAt: session.lastActivityAt,\n expiresAt: session.expiresAt,\n revokedAt: session.revokedAt,\n revokeReason: session.revokeReason,\n user: user ? { id: user.id, username: user.username } : null,\n identity: identity\n ? { id: identity.id, email: identity.email, provider: identity.provider }\n : null,\n };\n };\n //#endregion\n }\n}\n","import { Injectable } from '@angular/core';\nimport { TaonBaseAngularService } from 'taon/websql';\n\nimport { TaonSessionBackofficeController } from './taon-session-backoffice.controller';\nimport { TaonSessionBackofficeModels } from './taon-session-backoffice.models';\n\n@Injectable()\nexport class TaonSessionBackofficeApiService extends TaonBaseAngularService {\n readonly taonSessionBackofficeController = this.injectController(\n TaonSessionBackofficeController,\n );\n\n async getSessionDetails(\n id: number,\n ): Promise<TaonSessionBackofficeModels.SessionDetails> {\n const response = await this.taonSessionBackofficeController\n .getBy(id)\n .request();\n return response.body.json;\n }\n}\n","import { DatePipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnChanges,\n inject,\n signal,\n} from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { Translation } from '@taon-dev/i18n/websql';\nimport { Taon } from 'taon/websql';\n\nimport { TaonBackofficeNavigationService } from './taon-backoffice-navigation.service';\nimport { TaonSessionBackofficeApiService } from './taon-session-backoffice.api.service';\nimport { TaonSessionBackofficeModels } from './taon-session-backoffice.models';\n\nconst t = Translation.for('src/lib/taon-session/taon-session-backoffice/taon-session-details.component.ts', {} as any);\n\n@Component({\n selector: 'taon-session-details',\n templateUrl: './taon-session-details.component.html',\n styleUrls: ['./taon-session-backoffice.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [DatePipe, RouterLink],\n providers: [\n TaonSessionBackofficeApiService,\n TaonBackofficeNavigationService,\n ],\n})\nexport class TaonSessionDetailsComponent implements OnChanges {\n readonly t = t.for(this);\n\n @Input({ required: true }) sessionId!: number;\n\n @Input() detail?: TaonSessionBackofficeModels.SessionDetails;\n\n readonly taonBackofficeNavigationService = inject(TaonBackofficeNavigationService);\n\n private readonly taonSessionBackofficeApiService = inject(TaonSessionBackofficeApiService);\n\n readonly session = signal<TaonSessionBackofficeModels.SessionDetails | null>(null);\n\n readonly loading = signal(false);\n\n readonly error = signal('');\n\n private requestId = 0;\n\n ngOnChanges(): void {\n const requestId = ++this.requestId;\n this.session.set(this.detail ?? null);\n this.error.set('');\n this.loading.set(!this.detail);\n if (!this.detail) {\n void this.loadDetails(requestId);\n }\n }\n\n private async loadDetails(requestId: number): Promise<void> {\n try {\n const detail = await this.taonSessionBackofficeApiService.getSessionDetails(\n Number(this.sessionId),\n );\n if (requestId === this.requestId) {\n this.session.set(detail);\n }\n } catch (error) {\n if (requestId === this.requestId) {\n console.error('[session-details]', error);\n this.error.set(this.t.gettext('Unable to load session details.'));\n }\n } finally {\n if (requestId === this.requestId) {\n this.loading.set(false);\n }\n }\n }\n}\n","@if (loading()) {\n <p role=\"status\">{{ t.gettext('Loading session details...') }}</p>\n}\n@if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n}\n@if (session(); as detail) {\n <dl class=\"grid grid-cols-[auto_1fr] gap-x-4 gap-y-2 p-4\">\n <dt>{{ t.gettext('Session ID') }}</dt>\n <dd>{{ detail.id }}</dd>\n <dt>{{ t.gettext('User ID') }}</dt>\n <dd>{{ detail.userId }}</dd>\n <dt>{{ t.gettext('Username') }}</dt>\n <dd>\n @if (detail.user; as user) {\n <a [routerLink]=\"taonBackofficeNavigationService.detailsLink('user', user.id)\">\n {{ user.username || 'User #' + user.id }}\n </a>\n } @else {\n {{ t.gettext('Unavailable') }}\n }\n </dd>\n <dt>{{ t.gettext('Email') }}</dt>\n <dd>{{ detail.identity?.email || t.gettext('Unavailable') }}</dd>\n <dt>{{ t.gettext('Provider') }}</dt>\n <dd>{{ detail.authenticationProvider || detail.identity?.provider || t.gettext('Unavailable') }}</dd>\n @if (detail.identityId) {\n <dt>{{ t.gettext('Identity ID') }}</dt>\n <dd>{{ detail.identityId }}</dd>\n }\n <dt>{{ t.gettext('Device') }}</dt>\n <dd>{{ detail.deviceName || t.gettext('Unknown') }}</dd>\n <dt>{{ t.gettext('IP') }}</dt>\n <dd>{{ detail.ip || t.gettext('Unknown') }}</dd>\n <dt>{{ t.gettext('User agent') }}</dt>\n <dd class=\"break-all\">{{ detail.userAgent || t.gettext('Unknown') }}</dd>\n <dt>{{ t.gettext('Logged in') }}</dt>\n <dd>{{ (detail.createdAt | date: 'medium') || t.gettext('Unknown') }}</dd>\n <dt>{{ t.gettext('Last activity') }}</dt>\n <dd>{{ (detail.lastActivityAt | date: 'medium') || t.gettext('Unknown') }}</dd>\n <dt>{{ t.gettext('Expires') }}</dt>\n <dd>{{ (detail.expiresAt | date: 'medium') || t.gettext('Unknown') }}</dd>\n <dt>{{ t.gettext('Revoked') }}</dt>\n <dd>{{ (detail.revokedAt | date: 'medium') || t.gettext('Not revoked') }}</dd>\n @if (detail.revokeReason) {\n <dt>{{ t.gettext('Revocation reason') }}</dt>\n <dd>{{ detail.revokeReason }}</dd>\n }\n </dl>\n}\n","//#region imports\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { MtxGridColumn } from '@ng-matero/extensions/grid';\nimport { TaonDatatableComponent } from '@taon-dev/ui/websql';\nimport { Translation } from '@taon-dev/i18n/websql';\nimport { Taon } from 'taon/websql';\n\nimport { TaonBackofficeNavigationService } from './taon-backoffice-navigation.service';\nimport { TaonSessionBackofficeApiService } from './taon-session-backoffice.api.service';\nimport { TaonSessionBackofficeModels } from './taon-session-backoffice.models';\nimport { TaonSessionDetailsComponent } from './taon-session-details.component';\n\n//#endregion\n\nconst t = Translation.for('src/lib/taon-session/taon-session-backoffice/taon-session-backoffice.component.ts', {} as any);\n\n@Component({\n selector: 'app-taon-session-backoffice',\n templateUrl: './taon-session-backoffice.component.html',\n styleUrls: ['./taon-session-backoffice.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TaonDatatableComponent, TaonSessionDetailsComponent],\n providers: [\n TaonSessionBackofficeApiService,\n TaonBackofficeNavigationService,\n ],\n})\nexport class TaonSessionBackofficeComponent {\n readonly t = t.for(this);\n\n readonly taonSessionBackofficeApiService = inject(TaonSessionBackofficeApiService);\n\n readonly taonBackofficeNavigationService = inject(TaonBackofficeNavigationService);\n\n public get crud() {\n return this.taonSessionBackofficeApiService.taonSessionBackofficeController;\n }\n\n readonly columns: MtxGridColumn[] = [\n { header: this.t.gettext('User ID'), field: 'userId', sortable: true, showExpand: true },\n { header: this.t.gettext('Device'), field: 'deviceName', sortable: true },\n { header: this.t.gettext('IP'), field: 'ip', sortable: true },\n {\n header: this.t.gettext('Actions'),\n field: 'actions',\n type: 'button',\n buttons: [\n {\n type: 'icon',\n icon: 'open_in_new',\n tooltip: this.t.gettext('Session details'),\n click: (session: TaonSessionBackofficeModels.SessionRow) =>\n this.taonBackofficeNavigationService.openDetails('session', session.id),\n },\n ],\n },\n ];\n}\n","<h2>{{ t.gettext('Active sessions') }}</h2>\n<taon-datatable\n [entityCrudController]=\"crud\"\n [columns]=\"columns\"\n [allowedColumns]=\"['userId', 'deviceName', 'ip']\"\n [hideAddButton]=\"true\"\n searchMode=\"advanced\"\n [expansionTemplate]=\"expansionTemplate\">\n</taon-datatable>\n<ng-template #expansionTemplate let-session>\n <taon-session-details [sessionId]=\"session.id\"></taon-session-details>\n</ng-template>\n","//#region imports\nimport {\n Taon,\n ClassHelpers,\n TaonController,\n TaonBaseCrudController,\n Query,\n GET,\n POST,\n DELETE,\n Body,\n Models,\n} from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n\nimport { TaonRoleEntity } from '../taon-role/taon-role.entity';\nimport { TaonSessionRepository } from '../taon-session/taon-session.repository';\nimport { TaonSessionUserGroupRepository } from '../taon-session-user/taon-session-user-group.repository';\nimport { TaonSessionUserController } from '../taon-session-user/taon-session-user.controller';\n\nimport { TaonGroupRoleRepository } from './taon-group-role.repository';\nimport { TaonGroupEntity } from './taon-group.entity';\nimport { TaonGroupRepository } from './taon-group.repository';\n//#endregion\n\n@TaonController({\n className: 'TaonGroupController',\n allowedMethods: [\n //#region allowed methods\n 'paginationQuery',\n 'getAll',\n 'getBy',\n 'getGroupsForUser',\n 'assignGroupToUser',\n 'unassignGroupFromUser',\n 'getRolesForGroup',\n 'assignRoleToGroup',\n 'unassignRoleFromGroup',\n //#endregion\n ],\n})\nexport class TaonGroupController extends TaonBaseCrudController<\n TaonGroupEntity,\n {},\n TaonGroupController\n> {\n entityClassResolveFn: () => typeof TaonGroupEntity = () => TaonGroupEntity;\n\n taonGroupRepository = this.injectCustomRepo(TaonGroupRepository);\n\n private readonly taonGroupRoleRepository = this.injectCustomRepo(\n TaonGroupRoleRepository,\n );\n\n private readonly taonSessionUserGroupRepository = this.injectCustomRepo(\n TaonSessionUserGroupRepository,\n );\n\n private readonly taonSessionRepository = this.injectCustomRepo(\n TaonSessionRepository,\n );\n\n //#region methods & getters / before each request\n protected async beforeEachRequest({\n req,\n res,\n methodConfig,\n }: Models.TaonCtrlBeforeEachRequestParams<TaonSessionUserController>): Promise<void> {\n await this.taonSessionRepository.throwIfNotAuthenticated({\n req,\n res,\n });\n }\n //#endregion\n\n //#region methods & getters / groups assigned to user\n @GET()\n getGroupsForUser(\n @Query('userId') userId: number,\n ): Taon.Response<TaonGroupEntity[]> {\n //#region @websqlFunc\n return async () => {\n return await this.taonGroupRepository.getGroupsForUserId(Number(userId));\n };\n //#endregion\n }\n //#endregion\n\n //#region methods & getters / assign group to user\n @POST()\n assignGroupToUser(\n @Body('userId') userId: number,\n @Body('groupId') groupId: number,\n ): Taon.Response<void> {\n //#region @websqlFunc\n return async () => {\n await this.taonSessionUserGroupRepository.assignGroupToUser(\n Number(userId),\n Number(groupId),\n );\n };\n //#endregion\n }\n //#endregion\n\n //#region methods & getters / unassign group from user\n @DELETE()\n unassignGroupFromUser(\n @Query('userId') userId: number,\n @Query('groupId') groupId: number,\n ): Taon.Response<void> {\n //#region @websqlFunc\n return async () => {\n await this.taonSessionUserGroupRepository.unassignGroupFromUser(\n Number(userId),\n Number(groupId),\n );\n };\n //#endregion\n }\n //#endregion\n\n //#region methods & getters / roles assigned to group\n @GET()\n getRolesForGroup(\n @Query('groupId') groupId: number,\n ): Taon.Response<TaonRoleEntity[]> {\n //#region @websqlFunc\n return async () => {\n return await this.taonGroupRoleRepository.getRolesForGroupId(\n Number(groupId),\n );\n };\n //#endregion\n }\n //#endregion\n\n //#region methods & getters / assign role to group\n @POST()\n assignRoleToGroup(\n @Body('groupId') groupId: number,\n @Body('roleId') roleId: number,\n ): Taon.Response<void> {\n //#region @websqlFunc\n return async () => {\n await this.taonGroupRoleRepository.assignRoleToGroup(\n Number(groupId),\n Number(roleId),\n );\n };\n //#endregion\n }\n //#endregion\n\n //#region methods & getters / unassign role from group\n @DELETE()\n unassignRoleFromGroup(\n @Query('groupId') groupId: number,\n @Query('roleId') roleId: number,\n ): Taon.Response<void> {\n //#region @websqlFunc\n return async () => {\n await this.taonGroupRoleRepository.unassignRoleFromGroup(\n Number(groupId),\n Number(roleId),\n );\n };\n //#endregion\n }\n //#endregion\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Taon, TaonBaseAngularService } from 'taon/websql';\n\nimport type { TaonRoleEntity } from '../taon-role/taon-role.entity';\n\nimport { TaonGroupController } from './taon-group.controller';\nimport type { TaonGroupEntity } from './taon-group.entity';\n\n@Injectable()\nexport class TaonGroupApiService extends TaonBaseAngularService {\n public taonGroupController = this.injectController(TaonGroupController);\n\n public get allMyEntities$(): Observable<TaonGroupEntity[]> {\n return this.taonGroupController.getAll().request!().observable.pipe(\n map(res => res.body?.json),\n );\n }\n\n //#region methods / all groups\n\n async getAllGroups(): Promise<TaonGroupEntity[]> {\n const response = await this.taonGroupController.getAll().request();\n\n return response.body?.json ?? [];\n }\n\n //#endregion\n\n //#region methods / user groups\n\n async getGroupsForUser(userId: number): Promise<TaonGroupEntity[]> {\n const response = await this.taonGroupController\n .getGroupsForUser(userId)\n .request();\n\n return response.body?.json ?? [];\n }\n\n async assignGroupToUser(userId: number, groupId: number): Promise<void> {\n await this.taonGroupController.assignGroupToUser(userId, groupId).request();\n }\n\n async unassignGroupFromUser(userId: number, groupId: number): Promise<void> {\n await this.taonGroupController\n .unassignGroupFromUser(userId, groupId)\n .request();\n }\n\n //#endregion\n\n //#region methods / group roles\n\n async getRolesForGroup(groupId: number): Promise<TaonRoleEntity[]> {\n const response = await this.taonGroupController\n .getRolesForGroup(groupId)\n .request();\n\n return response.body?.json ?? [];\n }\n\n async assignRoleToGroup(groupId: number, roleId: number): Promise<void> {\n await this.taonGroupController.assignRoleToGroup(groupId, roleId).request();\n }\n\n async unassignRoleFromGroup(groupId: number, roleId: number): Promise<void> {\n await this.taonGroupController\n .unassignRoleFromGroup(groupId, roleId)\n .request();\n }\n\n //#endregion\n}\n","//#region imports\nimport {\n Taon,\n ClassHelpers,\n TaonController,\n TaonBaseCrudController,\n Query,\n Models,\n GET,\n POST,\n DELETE,\n Body,\n} from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n\nimport { TaonPermissionEntity } from '../taon-permission/taon-permission.entity';\nimport { TaonSessionRepository } from '../taon-session/taon-session.repository';\nimport { TaonSessionUserController } from '../taon-session-user/taon-session-user.controller';\n\nimport { TaonRolePermissionRepository } from './taon-role-permission.repository';\nimport { TaonRoleEntity } from './taon-role.entity';\nimport { TaonRoleRepository } from './taon-role.repository';\n//#endregion\n\n@TaonController({\n className: 'TaonRoleController',\n allowedMethods: [\n //#region allowed methods\n 'paginationQuery',\n 'getAll',\n 'getBy',\n 'getPermissionsForRole',\n 'assignPermissionToRole',\n 'unassignPermissionFromRole',\n //#endregion\n ],\n})\nexport class TaonRoleController extends TaonBaseCrudController<TaonRoleEntity> {\n entityClassResolveFn: () => typeof TaonRoleEntity = () => TaonRoleEntity;\n\n taonRoleRepository = this.injectCustomRepo(TaonRoleRepository);\n\n private readonly taonRolePermissionRepository = this.injectCustomRepo(\n TaonRolePermissionRepository,\n );\n\n private readonly taonSessionRepository = this.injectCustomRepo(\n TaonSessionRepository,\n );\n\n async beforeEachRequest({\n req,\n res,\n methodConfig,\n }: Models.TaonCtrlBeforeEachRequestParams<TaonSessionUserController>): Promise<void> {\n await this.taonSessionRepository.throwIfNotAuthenticated({\n req,\n res,\n });\n }\n\n //#region methods & getters / permissions assigned to role\n @GET()\n getPermissionsForRole(\n @Query('roleId') roleId: number,\n ): Taon.Response<TaonPermissionEntity[]> {\n //#region @websqlFunc\n return async () => {\n return await this.taonRolePermissionRepository.getPermissionsForRoleId(\n Number(roleId),\n );\n };\n //#endregion\n }\n //#endregion\n\n //#region methods & getters / assign permission to role\n @POST()\n assignPermissionToRole(\n @Body('roleId') roleId: number,\n @Body('permissionId') permissionId: number,\n ): Taon.Response<void> {\n //#region @websqlFunc\n return async () => {\n await this.taonRolePermissionRepository.assignPermissionToRole(\n Number(roleId),\n Number(permissionId),\n );\n };\n //#endregion\n }\n //#endregion\n\n //#region methods & getters / unassign permission from role\n @DELETE()\n unassignPermissionFromRole(\n @Query('roleId') roleId: number,\n @Query('permissionId') permissionId: number,\n ): Taon.Response<void> {\n //#region @websqlFunc\n return async () => {\n await this.taonRolePermissionRepository.unassignPermissionFromRole(\n Number(roleId),\n Number(permissionId),\n );\n };\n //#endregion\n }\n //#endregion\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Taon, TaonBaseAngularService } from 'taon/websql';\n\nimport type { TaonPermissionEntity } from '../taon-permission/taon-permission.entity';\n\nimport type { TaonRoleEntity } from './taon-role.entity';\nimport { TaonRoleController } from './taon-role.controller';\n\n@Injectable()\nexport class TaonRoleApiService extends TaonBaseAngularService {\n public taonRoleController = this.injectController(TaonRoleController);\n\n public get allMyEntities$(): Observable<TaonRoleEntity[]> {\n return this.taonRoleController.getAll().request!().observable.pipe(\n map(res => res.body?.json),\n );\n }\n\n //#region methods / all roles\n\n async getAllRoles(): Promise<TaonRoleEntity[]> {\n const response = await this.taonRoleController.getAll().request();\n\n return response.body?.json ?? [];\n }\n\n //#endregion\n\n //#region methods / role permissions\n\n async getPermissionsForRole(roleId: number): Promise<TaonPermissionEntity[]> {\n const response = await this.taonRoleController\n .getPermissionsForRole(roleId)\n .request();\n\n return response.body?.json ?? [];\n }\n\n async assignPermissionToRole(\n roleId: number,\n permissionId: number,\n ): Promise<void> {\n await this.taonRoleController\n .assignPermissionToRole(roleId, permissionId)\n .request();\n }\n\n async unassignPermissionFromRole(\n roleId: number,\n permissionId: number,\n ): Promise<void> {\n await this.taonRoleController\n .unassignPermissionFromRole(roleId, permissionId)\n .request();\n }\n\n //#endregion\n}\n","//#region imports\nimport { TaonSessionUserController } from '../taon-session-user/taon-session-user.controller';\nimport { TaonSessionRepository } from '../taon-session/taon-session.repository';\nimport {\n Taon,\n ClassHelpers,\n TaonController,\n TaonBaseCrudController,\n Query,\n GET,\n PUT,\n Body,\n Models,\n} from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n\n\nimport { TaonPermissionEntity } from './taon-permission.entity';\nimport { TaonPermissionRepository } from './taon-permission.repository';\n//#endregion\n\n@TaonController({\n className: 'TaonPermissionController',\n allowedMethods: [\n //#region allowed methods\n 'paginationQuery',\n 'getAll',\n 'getBy',\n 'updateDescription',\n //#endregion\n ],\n})\nexport class TaonPermissionController extends TaonBaseCrudController<TaonPermissionEntity> {\n entityClassResolveFn: () => typeof TaonPermissionEntity = () =>\n TaonPermissionEntity;\n\n taonPermissionRepository = this.injectCustomRepo(TaonPermissionRepository);\n\n private readonly taonSessionRepository = this.injectCustomRepo(\n TaonSessionRepository,\n );\n\n async beforeEachRequest({\n req,\n res,\n methodConfig,\n }: Models.TaonCtrlBeforeEachRequestParams<TaonSessionUserController>): Promise<void> {\n await this.taonSessionRepository.throwIfNotAuthenticated({\n req,\n res,\n });\n }\n\n //#region methods & getters / update description\n @PUT()\n updateDescription(\n @Body('permissionId') permissionId: number,\n @Body('description') description: string,\n ): Taon.Response<TaonPermissionEntity> {\n //#region @websqlFunc\n return async () => {\n return await this.taonPermissionRepository.updateDescription(\n Number(permissionId),\n description,\n );\n };\n //#endregion\n }\n //#endregion\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Taon, TaonBaseAngularService } from 'taon/websql';\n\nimport type { TaonPermissionEntity } from './taon-permission.entity';\nimport { TaonPermissionController } from './taon-permission.controller';\n\n@Injectable()\nexport class TaonPermissionApiService extends TaonBaseAngularService {\n public taonPermissionController = this.injectController(\n TaonPermissionController,\n );\n\n public get allMyEntities$(): Observable<TaonPermissionEntity[]> {\n return this.taonPermissionController.getAll().request!().observable.pipe(\n map(res => res.body?.json),\n );\n }\n\n //#region methods / all permissions\n\n async getAllPermissions(): Promise<TaonPermissionEntity[]> {\n const response = await this.taonPermissionController.getAll().request();\n\n return response.body?.json ?? [];\n }\n\n //#endregion\n\n //#region methods / description\n\n async updateDescription(\n permissionId: number,\n description: string,\n ): Promise<TaonPermissionEntity> {\n const response = await this.taonPermissionController\n .updateDescription(permissionId, description)\n .request();\n\n return response.body?.json;\n }\n\n //#endregion\n}\n","//#region @browser\nimport { inject } from '@angular/core';\nimport { ResolveFn } from '@angular/router';\n\nimport { TaonGroupApiService } from '../../taon-group/taon-group-api.service';\nimport type { TaonGroupEntity } from '../../taon-group/taon-group.entity';\nimport { TaonRoleApiService } from '../../taon-role/taon-role-api.service';\nimport type { TaonRoleEntity } from '../../taon-role/taon-role.entity';\nimport { TaonPermissionApiService } from '../../taon-permission/taon-permission-api.service';\nimport type { TaonPermissionEntity } from '../../taon-permission/taon-permission.entity';\nimport { TaonSessionUserApiService } from '../../taon-session-user/taon-session-user-api.service';\nimport type { TaonSessionUserEntity } from '../../taon-session-user/taon-session-user.entity';\nimport { TaonSessionBackofficeApiService } from './taon-session-backoffice.api.service';\nimport type { TaonSessionBackofficeModels } from './taon-session-backoffice.models';\n\nexport type TaonBackofficeDetail =\n | { kind: 'user'; entity: TaonSessionUserEntity }\n | { kind: 'group'; entity: TaonGroupEntity }\n | { kind: 'role'; entity: TaonRoleEntity }\n | { kind: 'permission'; entity: TaonPermissionEntity }\n | { kind: 'session'; entity: TaonSessionBackofficeModels.SessionDetails };\n\nexport const taonBackofficeDetailsResolver: ResolveFn<\n TaonBackofficeDetail\n> = async route => {\n const id = Number(route.paramMap.get('id'));\n if (!Number.isSafeInteger(id) || id <= 0) {\n throw new Error('Invalid backoffice entity ID');\n }\n\n let detail: TaonBackofficeDetail;\n switch (route.data['kind']) {\n case 'session':\n detail = {\n kind: 'session',\n entity: await inject(TaonSessionBackofficeApiService).getSessionDetails(id),\n };\n break;\n case 'user':\n detail = {\n kind: 'user',\n entity: (await inject(TaonSessionUserApiService)\n .taonSessionUserController.getBy(id).request()).body.json,\n };\n break;\n case 'group':\n detail = {\n kind: 'group',\n entity: (await inject(TaonGroupApiService)\n .taonGroupController.getBy(id).request()).body.json,\n };\n break;\n case 'role':\n detail = {\n kind: 'role',\n entity: (await inject(TaonRoleApiService)\n .taonRoleController.getBy(id).request()).body.json,\n };\n break;\n case 'permission':\n detail = {\n kind: 'permission',\n entity: (await inject(TaonPermissionApiService)\n .taonPermissionController.getBy(id).request()).body.json,\n };\n break;\n default:\n throw new Error('Unknown backoffice entity');\n }\n if (!detail.entity) {\n throw new Error('Backoffice entity not found');\n }\n return detail;\n};\n\n//#endregion\n","//#region imports\nimport { Routes } from '@angular/router';\nimport { adminLazyRoute } from '@taon-dev/ui/websql';\nimport { taonBackofficeDetailsResolver } from './taon-backoffice-details.resolver';\nimport { TaonSessionBackofficeApiService } from './taon-session-backoffice.api.service';\n//#endregion\n\nexport const TaonSessionBackofficeRoutes: Routes = [\n {\n path: '',\n pathMatch: 'full',\n loadComponent: () =>\n import('./taon-session-backoffice.component').then(\n m => m.TaonSessionBackofficeComponent,\n ),\n },\n adminLazyRoute({\n path: 'user',\n menuItem: 'Users',\n icon: 'account_circle',\n expandable: true,\n loader: () =>\n import('../../taon-session-user/taon-session-backoffice-users/taon-session-backoffice-users.routes').then(\n m => m.TaonSessionBackofficeUsersRoutes,\n ),\n }),\n {\n path: ':id',\n data: { kind: 'session', hideInNavigation: true },\n providers: [TaonSessionBackofficeApiService],\n resolve: { detail: taonBackofficeDetailsResolver },\n loadComponent: () =>\n import('./taon-backoffice-details-page.component').then(\n m => m.TaonBackofficeDetailsPageComponent,\n ),\n },\n];\n\n/**\n * By default exporting TaonSessionBackofficeRoutes,\n * the command `taon generate:app:routes`\n * will automatically add them to the root routes in ./src/app.ts.\n */\n// export default TaonSessionBackofficeRoutes;\n","//#region imports\nimport { AsyncPipe, CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n inject,\n Input,\n OnInit,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Router, RouterOutlet } from '@angular/router';\nimport { walk } from 'lodash-walk-object/websql';\nimport { _ } from 'tnp-core/websql';\n\nimport { TaonSessionComponent } from '../taon-session/taon-session.component';\nimport { TaonSessionApiService } from '../taon-session.api.service';\nimport { TaonSessionConfigService } from '../taon-session.config.service';\nimport { TaonSessionState } from '../taon-session.models';\nimport { TaonSessionConfig } from '../taon-session.provider';\nimport { TaonSessionStateService } from '../taon-session.state.service';\n\n//#endregion\n\n@Component({\n selector: 'taon-session-button',\n templateUrl: './taon-session-button.component.html',\n styleUrls: ['./taon-session-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n forwardRef(() => TaonSessionApiService),\n TaonSessionStateService,\n TaonSessionConfigService,\n ],\n imports: [\n AsyncPipe,\n RouterOutlet,\n MatButtonModule,\n MatIconModule,\n CommonModule,\n ],\n})\nexport class TaonSessionButtonComponent implements OnInit {\n //#region fields & getters\n\n protected readonly taonSessionStateService = inject(TaonSessionStateService);\n\n protected readonly taonSessionConfigService = inject(\n TaonSessionConfigService,\n );\n\n @Input()\n config: TaonSessionConfig;\n\n private readonly dialog = inject(MatDialog);\n\n private readonly router = inject(Router);\n\n //#endregion\n\n constructor() {}\n\n //#region methods / open login dialog\n\n openLogin(): void {\n const instance = this.dialog.open(TaonSessionComponent, {\n width: '410px',\n data: null,\n autoFocus: true,\n });\n const classInstance = instance.componentInstance;\n classInstance.config = this.config;\n classInstance.taonSessionStateService = this.taonSessionStateService;\n }\n //#endregion\n\n //#region go to dashboard\n goDashboard(): void {\n if (this.config.login.linkToDashboard) {\n void this.router.navigateByUrl(this.config.login.linkToDashboard);\n }\n }\n //#endregion\n\n //#region logout\n profile(): void {\n const instance = this.dialog.open(TaonSessionComponent, {\n width: '410px',\n data: null,\n autoFocus: true,\n });\n const classInstance = instance.componentInstance;\n classInstance.config = this.config;\n classInstance.taonSessionStateService = this.taonSessionStateService;\n\n this.taonSessionStateService.state.set(TaonSessionState.PROFILE_INFO);\n }\n //#endregion\n\n //#region hooks / ngOnInit\n ngOnInit(): void {\n const config = this.taonSessionConfigService.clone();\n walk.Object(\n this.config || {},\n (value, lodashPath) => {\n _.set(config, lodashPath, value);\n },\n {\n walkGetters: false,\n },\n );\n this.config = config;\n\n if (\n this.config.socialLogin.microsoft.enabled &&\n !this.config.socialLogin.microsoft.microsoftClientId\n ) {\n console.warn(\n '[taon-session-button] Microsoft client id missing [microsoftClientId]',\n );\n }\n if (\n this.config.socialLogin.google.enabled &&\n !this.config.socialLogin.google.googleClientId\n ) {\n console.warn(\n '[taon-session-button] Google client id missing [googleClientId]',\n );\n }\n //Called after the constructor, initializing input properties, and the first call to ngOnChanges.\n //Add 'implements OnInit' to the class.\n // console.log('this.displayDashboardButton', this.displayDashboardButton);\n this.config.login.displayDashboardButton = _.isBoolean(\n this.config.login.displayDashboardButton,\n )\n ? this.config.login.displayDashboardButton\n : true;\n }\n //#endregion\n}\n","<div class=\"flex align-items-center gap-2\">\n <ng-container\n *ngIf=\"\n (taonSessionStateService.isLoggedIn$ | async) === false;\n else loggedIn\n \">\n <button\n mat-button\n (click)=\"openLogin()\">\n Login\n </button>\n </ng-container>\n\n <ng-template #loggedIn>\n <button\n *ngIf=\"displayDashboardButton\"\n mat-button\n color=\"primary\"\n class=\"auth-btn\"\n (click)=\"goDashboard()\">\n <mat-icon>dashboard</mat-icon>\n Dashboard\n </button>\n\n <button\n mat-button\n class=\"ml-2\"\n (click)=\"profile()\">\n Welcome user: {{ taonSessionStateService.userId() }}\n </button>\n </ng-template>\n</div>\n","//#region imports\nimport { createContext, TaonBaseContext } from 'taon/websql';\n\nimport { TaonAuthContextEntity } from './taon-auth-context.entity';\nimport { TaonAuthContextRepository } from './taon-auth-context.repository';\n//#endregion\n\nexport const TaonAuthContextContext = createContext(() => ({\n contextName: 'TaonAuthContextContext',\n abstract: true,\n contexts: { TaonBaseContext },\n entities: { TaonAuthContextEntity },\n repositories: { TaonAuthContextRepository },\n}));\n","//#region imports\nimport { Taon, TaonBaseMiddleware, TaonMiddleware } from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n//#endregion\n\n@TaonMiddleware({\n className: 'TaonGroupMiddleware',\n})\nexport class TaonGroupMiddleware extends TaonBaseMiddleware {}","//#region imports\nimport { Taon, TaonBaseProvider, TaonProvider } from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n//#endregion\n\n@TaonProvider({\n className: 'TaonGroupProvider',\n})\nexport class TaonGroupProvider extends TaonBaseProvider {\n\n\n\n}","//#region imports\nimport { createContext, TaonBaseContext } from 'taon/websql';\n\nimport { TaonGroupRoleEntity } from './taon-group-role.entity';\nimport { TaonGroupRoleRepository } from './taon-group-role.repository';\nimport { TaonGroupController } from './taon-group.controller';\nimport { TaonGroupEntity } from './taon-group.entity';\nimport { TaonGroupMiddleware } from './taon-group.middleware';\nimport { TaonGroupProvider } from './taon-group.provider';\nimport { TaonGroupRepository } from './taon-group.repository';\n//#endregion\n\nexport const TaonGroupContext = createContext(() => ({\n contextName: 'TaonGroupContext',\n abstract: true,\n contexts: { TaonBaseContext },\n entities: {\n TaonGroupEntity: TaonGroupEntity,\n TaonGroupRoleEntity: TaonGroupRoleEntity,\n },\n controllers: { TaonGroupController },\n repositories: { TaonGroupRepository, TaonGroupRoleRepository },\n providers: { TaonGroupProvider },\n middlewares: { TaonGroupMiddleware },\n}));\n","//#region imports\nimport { Taon, TaonBaseMiddleware, TaonMiddleware } from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n//#endregion\n\n@TaonMiddleware({\n className: 'TaonPermissionMiddleware',\n})\nexport class TaonPermissionMiddleware extends TaonBaseMiddleware {}","//#region imports\nimport { Taon, TaonBaseProvider, TaonProvider } from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n//#endregion\n\n@TaonProvider({\n className: 'TaonPermissionProvider',\n})\nexport class TaonPermissionProvider extends TaonBaseProvider {\n\n\n\n}","//#region imports\nimport { TaonBaseSubscriberForEntity, TaonSubscriber } from 'taon/websql';\nimport { TaonPermissionEntity } from './taon-permission.entity';\nimport { TaonPermissionProvider } from './taon-permission.provider';\n//#endregion\n\n@TaonSubscriber<TaonPermissionSubscriber>({\n className: 'TaonPermissionSubscriber',\n // allowedEvents: ['afterUpdate'],\n})\nexport class TaonPermissionSubscriber extends TaonBaseSubscriberForEntity {\n taonPermissionProvider = this.injectProvider(TaonPermissionProvider);\n listenTo(): typeof TaonPermissionEntity {\n return TaonPermissionEntity;\n }\n}\n","//#region imports\nimport { createContext, TaonBaseContext } from 'taon/websql';\n\nimport { TaonPermissionController } from './taon-permission.controller';\nimport { TaonPermissionEntity } from './taon-permission.entity';\nimport { TaonPermissionMiddleware } from './taon-permission.middleware';\nimport { TaonPermissionProvider } from './taon-permission.provider';\nimport { TaonPermissionRepository } from './taon-permission.repository';\nimport { TaonPermissionSubscriber } from './taon-permission.subscriber';\n//#endregion\n\nexport const TaonPermissionContext = createContext(() => ({\n contextName: 'TaonPermissionContext',\n abstract: true,\n contexts: { TaonBaseContext },\n entities: { TaonPermissionEntity },\n controllers: { TaonPermissionController },\n repositories: { TaonPermissionRepository },\n providers: { TaonPermissionProvider },\n middlewares: { TaonPermissionMiddleware },\n subscribers: { TaonPermissionSubscriber },\n}));\n","//#region imports\nimport { Taon, TaonBaseProvider, TaonProvider } from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n//#endregion\n\n@TaonProvider({\n className: 'TaonRoleProvider',\n})\nexport class TaonRoleProvider extends TaonBaseProvider {\n\n\n\n}","//#region imports\nimport { TaonRolePermissionRepository } from '../taon-role/taon-role-permission.repository';\nimport { createContext, TaonBaseContext } from 'taon/websql';\n\n\nimport { TaonRolePermissionEntity } from './taon-role-permission.entity';\nimport { TaonRoleController } from './taon-role.controller';\nimport { TaonRoleEntity } from './taon-role.entity';\n// import { TaonRoleMiddleware } from './taon-role.middleware';/\nimport { TaonRoleProvider } from './taon-role.provider';\nimport { TaonRoleRepository } from './taon-role.repository';\n// import { TaonRoleSubscriber } from './taon-role.subscriber';\n//#endregion\n\nexport const TaonRoleContext = createContext(() => ({\n contextName: 'TaonRoleContext',\n abstract: true,\n contexts: { TaonBaseContext },\n entities: {\n TaonRoleEntity: TaonRoleEntity,\n TaonRolePermissionEntity: TaonRolePermissionEntity,\n },\n controllers: { TaonRoleController },\n repositories: { TaonRoleRepository, TaonRolePermissionRepository },\n providers: { TaonRoleProvider },\n // middlewares: { TaonRoleMiddleware },\n // subscribers: { TaonRoleSubscriber },\n}));\n","import type { TaonProfileEntity } from './taon-profile.entity';\nimport { Translation } from '@taon-dev/i18n/websql';\nimport { Taon } from 'taon/websql';\n\nconst t = Translation.for('src/lib/taon-session/taon-profile/taon-profile.constants.ts', {} as any);\n\nexport const TaonProfileDefaultsValues = {\n description: '',\n version: 0,\n id: void 0,\n} as Partial<TaonProfileEntity>;\n\nexport enum TaonProfileErrors {\n INVALID_PASSWORD_EXAMPLE_ERROR = 'INVALID_PASSWORD_EXAMPLE_ERROR',\n}\n\nexport const TaonProfileTranslationErorsMap = new Map([\n [TaonProfileErrors.INVALID_PASSWORD_EXAMPLE_ERROR, t.gettext('Invalid Password')],\n]);","//#region imports\nimport {\n CustomColumn,\n Column,\n Taon,\n TaonBaseAbstractEntity,\n TaonEntity,\n} from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n\nimport { TaonProfileDefaultsValues } from './taon-profile.constants';\n//#endregion\n\n@TaonEntity<TaonProfileEntity>({\n className: 'TaonProfileEntity',\n createTable: false,\n // defaultModelMapping: () => ({\n // '': TaonProfileEntity,\n // nestedObjectField: ClassField,\n // nestedArrField: [ClassObjArrField],\n // }),\n})\nexport class TaonProfileEntity extends TaonBaseAbstractEntity<TaonProfileEntity> {\n //#region @websql\n @CustomColumn({\n type: 'varchar',\n length: 100,\n default: TaonProfileDefaultsValues.description,\n })\n //#endregion\n description?: string;\n}\n","//#region imports\nimport { Taon, TaonBaseClass, TaonBaseProvider, TaonProvider } from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n//#endregion\n\nexport class TaonTaonProfileConfig extends TaonBaseClass {\n declare name: string;\n}\n\n@TaonProvider({\n className: 'TaonProfileProvider',\n})\nexport class TaonProfileProvider extends TaonBaseProvider {\n enabledTaonProfileOption: boolean = true;\n\n config = new TaonTaonProfileConfig();\n\n clone() {\n return {\n enabledTaonProfileOption: this.enabledTaonProfileOption,\n config: this.config.clone(),\n };\n }\n}\n","//#region imports\nimport { createContext, TaonBaseContext } from 'taon/websql';\n\nimport { TaonProfileController } from './taon-profile.controller';\nimport { TaonProfileEntity } from './taon-profile.entity';\nimport { TaonProfileProvider } from './taon-profile.provider';\n// import { TaonProfileRepository } from './taon-profile.repository';\n// import { TaonProfileKvRepository } from './taon-profile.kv.repository';\n// import { TaonProfileMiddleware } from './taon-profile.middleware';\n// import { TaonProfileSubscriber } from './taon-profile.subscriber';\n//#endregion\n\nexport const TaonProfileAbstractContext = createContext(() => ({\n contextName: 'TaonProfileAbstractContext',\n abstract: true,\n contexts: { TaonBaseContext },\n entities: { TaonProfileEntity },\n controllers: { TaonProfileController },\n // repositories: {\n // // TaonProfileKvRepository\n // TaonProfileRepository,\n // },\n providers: { TaonProfileProvider },\n // middlewares: { TaonProfileMiddleware },\n // subscribers: { TaonProfileSubscriber },\n}));\n","//#region imports\nimport { TaonEmailsAbstractContext } from '@taon-dev/emails/websql';\nimport { createContext, TaonBaseContext } from 'taon/websql';\n\nimport { TaonAuditEventsContext, TaonNotificationContext } from '../index';\nimport { TaonAuthContextContext } from '../taon-auth-context/taon-auth-context.abstract.context';\nimport { TaonGroupContext } from '../taon-group/taon-group.abstract.context';\nimport { TaonPermissionContext } from '../taon-permission/taon-permission.abstract.context';\nimport { TaonRoleContext } from '../taon-role/taon-role.abstract.context';\nimport { TaonProfileAbstractContext } from '../taon-session/taon-profile/taon-profile.abstract.context';\nimport { TaonSessionRepository } from '../taon-session/taon-session.repository';\nimport { TaonSessionUserContext } from '../taon-session-user/taon-session-user.abstract.context';\n\nimport { TaonSessionBackofficeController } from './taon-session-backoffice/taon-session-backoffice.controller';\nimport { TaonSessionController } from './taon-session.controller';\nimport { TaonSessionEntity } from './taon-session.entity';\nimport { TaonSessionKvRepository } from './taon-session.kv.repository';\nimport { TaonSessionMiddleware } from './taon-session.middleware';\nimport { TaonSessionProvider } from './taon-session.provider';\nimport { TaonSessionStateService } from './taon-session.state.service';\n//#endregion\n\nexport const TaonSessionAbstractContext = createContext(() => ({\n contextName: 'TaonSessionAbstractContext',\n abstract: true,\n contexts: {\n TaonBaseContext,\n TaonEmailsAbstractContext,\n TaonSessionUserContext,\n TaonAuthContextContext,\n TaonGroupContext,\n TaonPermissionContext,\n TaonRoleContext,\n TaonNotificationContext,\n TaonAuditEventsContext,\n TaonProfileAbstractContext,\n },\n entities: { TaonSessionEntity: TaonSessionEntity },\n controllers: { TaonSessionController, TaonSessionBackofficeController },\n repositories: { TaonSessionKvRepository, TaonSessionRepository },\n providers: {\n TaonSessionProvider,\n /**\n * TODO somehow inject(TaonSessionApiService)\n * when creating manuall instace of TaonSessionStateService.\n * This state service could usefull on backend\n */\n // TaonSessionStateService,\n },\n logs: true,\n disabledRealtime: true,\n middlewares: { TaonSessionMiddleware },\n subscribers: {},\n}));\n","//#region imports\nimport { Taon } from 'taon/websql';\nimport { UtilsJson, UtilsOs, UtilsTerminal } from 'tnp-core/websql';\nimport { Helpers, BaseCommandLineFeature } from 'tnp-helpers/websql';\n/* */ \n\nimport { TaonSessionAbstractContext, TaonSessionController } from './taon-session';\n\nimport { DEFAULT_SESSION_EMAIL, DEFAULT_SESSION_PASSWORD } from './index';\n\n//#endregion\n\n//#region create taon context\nconst host = UtilsOs.isRunningInCloudflareWorker()\n ? ''\n : `http://localhost:${Number(\n Helpers.readFile('.taon/libs-apps-ports/HOST_BACKEND_PORT_1'),\n )}`;\n// console.log({ overrideRemoteHost });\n\nconst TaonSessionActiveCtx = UtilsOs.isRunningInCloudflareWorker()\n ? ({} as any)\n : !UtilsOs.isRunningInCliMode()\n ? ({} as ReturnType<typeof Taon.createContext>)\n : TaonSessionAbstractContext.cloneAsRemote({\n overrideRemoteHost: host,\n overrideContextName: 'SessionContext',\n });\n//#endregion\n\n//#region CLI / global scope\n/**\n * This class is for handling global arguments. *\n * Cli engine will parse: hello:world:from:global:arg to helloWorldFromGlobalArg\n * (lower case, camel case) .. so you don't need to worry about misspelling\n * arguments\n */\nclass $Global extends BaseCommandLineFeature<{}> {\n //#region initialize (before each method)\n protected async __initialize__() {\n/* */\n/* */\n/* */\n return (void 0);\n await super.__initialize__();\n }\n //#endregion\n\n //#region _\n /**\n * When you execute cli without arguments:`$ cli`\n */\n public _() {\n console.log(`Hello world from cli`);\n this._exit();\n }\n //#endregion\n\n //#region menu\n async menu() {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region ping\n /**\n * When you execute: `$ cli hello:world:from:global:arg`\n * (or `$ cli helloWorldFromGlobalArg`)\n */\n async ping() {\n const taonSessionController = await TaonSessionActiveCtx.getClassInstance(\n TaonSessionController,\n );\n\n try {\n const data = await taonSessionController.helloWorld().request!();\n console.log(data.body.text);\n } catch (error) {\n console.error(error);\n }\n\n this._exit();\n }\n //#endregion\n}\n//#endregion\n\n//#region CLI / Version Scope\n/**\n *\n */\nclass $Version extends BaseCommandLineFeature<{\n anyCLIparamsHere: string;\n}> {\n /**\n * When you execute: `$ cli version`\n */\n public _() {\n console.log(`Hello world from version argument`);\n this._exit();\n }\n\n /**\n * When you execute: `$ cli version:getFromPackageJson`\n */\n public getFromPackageJson() {\n const ver = UtilsJson.getValue(\n this.project.pathFor('package.json'),\n 'version',\n {\n defaultValue: '<not defined>',\n },\n );\n console.log(`Version from packageJson ${ver}`);\n this._exit(0);\n }\n}\n//#endregion\n\n//#region start cli\n/**\n *\n * @param argsv process.argsv\n * @param filename needed if you want ipc communicaiton\n */\nexport async function startCli(\n argsv: string[],\n filename: string,\n): Promise<void> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n}\n//#endregion\n\nexport default startCli;\n","//#region imports\nimport {\n Column,\n CreateDateColumn,\n CustomColumn,\n Index,\n Taon,\n TaonBaseAbstractEntity,\n TaonEntity,\n} from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n\nimport { TaonAuditEventsDefaultsValues } from './taon-audit-events.constants';\n//#endregion\n\n@TaonEntity({\n className: 'TaonAuditEventsEntity',\n createTable: true,\n})\nexport class TaonAuditEventsEntity extends TaonBaseAbstractEntity<TaonAuditEventsEntity> {\n //#region @websql\n @Index()\n //#endregion\n\n //#region @websql\n @Column({ type: 'varchar' })\n //#endregion\n type!: string;\n\n /**\n * Who performed the action.\n */\n\n //#region @websql\n @Column({ nullable: true, type: 'int' })\n //#endregion\n actorUserId?: number;\n\n /**\n * Who/what was affected.\n */\n\n //#region @websql\n @Column({ nullable: true, type: 'varchar' })\n //#endregion\n targetType?: string;\n\n //#region @websql\n @Column({ nullable: true, type: 'varchar' })\n //#endregion\n targetId?: string;\n\n //#region @websql\n @Column({ nullable: true, type: 'int' })\n //#endregion\n sessionId?: number;\n\n //#region @websql\n @Column({ nullable: true, type: 'varchar' })\n //#endregion\n ip?: string;\n\n //#region @websql\n @Column({ nullable: true, type: 'varchar' })\n //#endregion\n userAgent?: string;\n\n //#region @websql\n @Column({ type: 'simple-json', nullable: true })\n //#endregion\n data?: Record<string, any>;\n\n //#region @websql\n @CreateDateColumn()\n //#endregion\n createdAt!: Date;\n}\n","//#region imports\nimport { TaonBaseRepository, TaonRepository } from 'taon/websql';\nimport { Raw } from 'taon-typeorm/websql';\n\nimport { TaonAuditEventsEntity } from './taon-audit-events.entity';\n//#endregion\n\n@TaonRepository({\n className: 'TaonAuditEventsRepository',\n})\nexport class TaonAuditEventsRepository extends TaonBaseRepository<TaonAuditEventsEntity> {\n entityClassResolveFn: () => typeof TaonAuditEventsEntity = () => TaonAuditEventsEntity;\n\n /**\n * TODO remove this demo example method\n */\n async countEntitesWithEvenId(): Promise<number> {\n //#region @websqlFunc\n const result = await this.count({\n where: {\n id: Raw(alias => `${alias} % 2 = 0`),\n },\n });\n return result;\n //#endregion\n }\n}","//#region imports\nimport {\n Taon,\n ClassHelpers,\n TaonController,\n TaonBaseCrudController,\n Query,\n GET,\n} from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n\nimport { TaonAuditEventsEntity } from './taon-audit-events.entity';\nimport { TaonAuditEventsRepository } from './taon-audit-events.repository';\n//#endregion\n\n@TaonController<TaonAuditEventsController>({\n className: 'TaonAuditEventsController',\n allowedMethods: [],\n})\nexport class TaonAuditEventsController extends TaonBaseCrudController<TaonAuditEventsEntity> {\n entityClassResolveFn: () => typeof TaonAuditEventsEntity = () =>\n TaonAuditEventsEntity;\n\n taonAuditEventsRepository = this.injectCustomRepo(TaonAuditEventsRepository);\n\n //#region methods & getters / hello world\n /**\n * TODO remove this demo example method\n */\n @GET()\n helloWord(@Query('yourName') yourName: string): Taon.Response<string> {\n //#region @websqlFunc\n return async (req, res) => {\n const numOfEntities = await this.db.count();\n const numberOfEvenEntities =\n await this.taonAuditEventsRepository.countEntitesWithEvenId();\n return `Hello ${yourName || 'world'} from ${ClassHelpers.getName(TaonAuditEventsController)}\n controller.. ${numOfEntities} entites in db..\n ${numberOfEvenEntities} entites with even ids (2,4,6,8 etc.)\n `;\n };\n //#endregion\n }\n //#endregion\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Taon, TaonBaseAngularService } from 'taon/websql';\n\nimport { TaonAuditEventsController } from './taon-audit-events.controller';\nimport type { TaonAuditEventsEntity } from './taon-audit-events.entity';\n\n@Injectable()\nexport class TaonAuditEventsApiService extends TaonBaseAngularService {\n private taonAuditEventsController = this.injectController(TaonAuditEventsController);\n\n public get allMyEntities$(): Observable<TaonAuditEventsEntity[]> {\n return this.taonAuditEventsController.getAll().request!().observable.pipe(\n map(res => res.body?.json),\n );\n }\n\n public helloWorld(user:string): Observable<string> {\n return this.taonAuditEventsController.helloWord(user).request!().observable.pipe(\n map(res => res.responseText as string),\n );\n }\n}\n","//#region imports\nimport { Taon, TaonBaseProvider, TaonProvider } from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n//#endregion\n\n@TaonProvider({\n className: 'TaonAuditEventsProvider',\n})\nexport class TaonAuditEventsProvider extends TaonBaseProvider {\n\n\n\n}","//#region imports\nimport { Taon, TaonBaseMiddleware, TaonMiddleware } from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n//#endregion\n\n@TaonMiddleware({\n className: 'TaonAuditEventsMiddleware',\n})\nexport class TaonAuditEventsMiddleware extends TaonBaseMiddleware {}","//#region imports\nimport { TaonBaseSubscriberForEntity, TaonSubscriber } from 'taon/websql';\nimport { TaonAuditEventsEntity } from './taon-audit-events.entity';\nimport { TaonAuditEventsProvider } from './taon-audit-events.provider';\n//#endregion\n\n@TaonSubscriber<TaonAuditEventsSubscriber>({\n className: 'TaonAuditEventsSubscriber',\n // allowedEvents: ['afterUpdate'],\n})\nexport class TaonAuditEventsSubscriber extends TaonBaseSubscriberForEntity {\n taonAuditEventsProvider = this.injectProvider(TaonAuditEventsProvider);\n listenTo(): typeof TaonAuditEventsEntity {\n return TaonAuditEventsEntity;\n }\n}","//#region imports\nimport { createContext, TaonBaseContext } from 'taon/websql';\n\nimport { TaonAuditEventsEntity } from './taon-audit-events.entity';\nimport { TaonAuditEventsController } from './taon-audit-events.controller';\nimport { TaonAuditEventsRepository } from './taon-audit-events.repository';\nimport { TaonAuditEventsProvider } from './taon-audit-events.provider';\nimport { TaonAuditEventsMiddleware } from './taon-audit-events.middleware';\nimport { TaonAuditEventsSubscriber } from './taon-audit-events.subscriber';\n//#endregion\n\nexport const TaonAuditEventsContext = createContext(() => ({\n contextName: 'TaonAuditEventsContext',\n abstract: true,\n contexts: { TaonBaseContext },\n entities: { TaonAuditEventsEntity },\n controllers: { TaonAuditEventsController },\n repositories: { TaonAuditEventsRepository },\n providers: { TaonAuditEventsProvider },\n middlewares: { TaonAuditEventsMiddleware },\n subscribers: { TaonAuditEventsSubscriber },\n}));","import type { TaonAuditEventsEntity } from './taon-audit-events.entity';\n\nexport const TaonAuditEventsDefaultsValues = {\n description: '',\n version: 0,\n id: void 0,\n} as Partial<TaonAuditEventsEntity>;","export enum TaonAuditEventsState {\n Active = 'active',\n Inactive = 'inactive',\n}","import { TaonAuditEventsState } from './taon-audit-events.models';\n\nexport namespace TaonAuditEventsUtils {\n export function isActive(state: string): state is TaonAuditEventsState {\n return state === 'active';\n }\n}","//#region imports\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\n//#endregion\n\n@Component({\n selector: 'app-taon-authorization-backoffice',\n templateUrl: './taon-authorization-backoffice.component.html',\n styleUrls: ['./taon-authorization-backoffice.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, RouterOutlet],\n})\nexport class TaonAuthorizationBackofficeComponent {\n componentLoaded = false;\n\n onRouteActivate(component: any): void {\n this.componentLoaded = !!component;\n }\n\n onRouteDeactivate(component: any): void {\n this.componentLoaded = false;\n }\n}\n","@if (!componentLoaded) {\n <code>\n In authorization section you can manager Group, Roles and Persmission inside\n system.\n </code>\n}\n\n<router-outlet\n (activate)=\"onRouteActivate($event)\"\n (deactivate)=\"onRouteDeactivate($event)\"></router-outlet>\n","//#region imports\nimport { Routes } from '@angular/router';\nimport { adminLazyRoute } from '@taon-dev/ui/websql';\n//#endregion\n\nexport const TaonAuthorizationBackofficeRoutes: Routes = [\n {\n path: '',\n loadComponent: () =>\n import('./taon-authorization-backoffice.component').then(\n m => m.TaonAuthorizationBackofficeComponent,\n ),\n\n children: [\n adminLazyRoute({\n path: 'groups',\n menuItem: 'Groups',\n icon: 'groups',\n expandable: false,\n loader: () =>\n import('../taon-group/taon-group-backoffice/taon-group-backoffice.routes').then(\n m => m.TaonGroupBackofficeRoutes,\n ),\n }),\n adminLazyRoute({\n path: 'roles',\n menuItem: 'Roles',\n icon: 'recent_actors',\n expandable: false,\n loader: () =>\n import('../taon-role/taon-role-backoffice/taon-role-backoffice.routes').then(\n m => m.TaonRoleBackofficeRoutes,\n ),\n }),\n adminLazyRoute({\n path: 'permissions',\n menuItem: 'Permissions',\n icon: 'approval',\n expandable: false,\n loader: () =>\n import('../taon-permission/taon-permission-backoffice/taon-permission-backoffice.routes').then(\n m => m.TaonPermissionBackofficeRoutes,\n ),\n }),\n ],\n },\n];\n\n/**\n * By default exporting TaonAuthorizationBackofficeRoutes,\n * the command `taon generate:app:routes`\n * will automatically add them to the root routes in ./src/app.ts.\n */\n// export default TaonAuthorizationBackofficeRoutes;\n","import type { TaonGroupEntity } from './taon-group.entity';\n\nexport const TaonGroupDefaultsValues = {\n\n} as Partial<TaonGroupEntity>;\n","//#region imports\nimport { TaonSessionUserEntity } from '../taon-session-user/taon-session-user.entity';\nimport { TaonNotificationEntity } from '../taon-notification/taon-notification.entity';\nimport {\n Column,\n DateTimeColumn,\n ManyToOne,\n StringColumn,\n Taon,\n TaonBaseAbstractEntity,\n TaonEntity,\n} from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n\n//#endregion\n\n@TaonEntity({\n className: 'TaonNotificationRecipientEntity',\n createTable: true,\n})\nexport class TaonNotificationRecipientEntity extends TaonBaseAbstractEntity<TaonNotificationRecipientEntity> {\n //#region @websql\n @Column({\n type: 'int',\n })\n //#endregion\n notificationId!: number;\n\n //#region @websql\n @Column({ type: 'int' })\n //#endregion\n userId!: number;\n\n //#region @websql\n @ManyToOne(\n () => TaonNotificationEntity,\n notification => notification.recipients,\n {\n onDelete: 'CASCADE',\n },\n )\n //#endregion\n notification!: TaonNotificationEntity;\n\n //#region @websql\n @ManyToOne(() => TaonSessionUserEntity, {\n onDelete: 'CASCADE',\n })\n //#endregion\n user!: TaonSessionUserEntity;\n\n //#region @websql\n @Column({ type: 'datetime', nullable: true })\n //#endregion\n readAt?: Date;\n\n //#region @websql\n @Column({ type: 'datetime', nullable: true })\n //#endregion\n dismissedAt?: Date;\n\n //#region @websql\n @Column({ type: 'datetime', nullable: true })\n //#endregion\n deliveredAt?: Date;\n}\n","//#region imports\nimport { TaonSessionUserEntity } from '../taon-session-user/taon-session-user.entity';\nimport { TaonNotificationRecipientEntity } from '../taon-notification/taon-notification-recipient.entity';\nimport {\n Column,\n CreateDateColumn,\n CustomColumn,\n ManyToOne,\n OneToMany,\n Taon,\n TaonBaseAbstractEntity,\n TaonEntity,\n} from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n\nimport { TaonNotificationDefaultsValues } from './taon-notification.constants';\n//#endregion\n\n@TaonEntity({\n className: 'TaonNotificationEntity',\n createTable: true,\n})\nexport class TaonNotificationEntity extends TaonBaseAbstractEntity<TaonNotificationEntity> {\n /**\n * Stable machine-readable code.\n *\n * video.processing.finished\n * auth.session.revoked\n * payment.success\n */\n\n //#region @websql\n @Column({ type: 'varchar' })\n //#endregion\n type!: string;\n\n //#region @websql\n @Column({ type: 'varchar' })\n //#endregion\n title!: string;\n\n //#region @websql\n @Column({ type: 'text', nullable: true })\n //#endregion\n message?: string;\n\n /**\n * Optional route/action.\n *\n * /projects/123\n * /videos/abc\n */\n\n //#region @websql\n @Column({ type: 'varchar', nullable: true })\n //#endregion\n actionUrl?: string;\n\n /**\n * Arbitrary strongly-typed-by-your-code payload.\n */\n\n //#region @websql\n @Column({ type: 'simple-json', nullable: true })\n //#endregion\n data?: Record<string, any>;\n\n //#region @websql\n @Column({ nullable: true, type: 'int' })\n //#endregion\n createdByUserId?: number;\n\n //#region @websql\n @CreateDateColumn()\n //#endregion\n createdAt!: Date;\n\n //#region @websql\n @Column({ type: 'datetime', nullable: true })\n //#endregion\n expiresAt?: Date;\n\n //#region @websql\n @OneToMany(\n () => TaonNotificationRecipientEntity,\n recipient => recipient.notification,\n )\n //#endregion\n recipients!: TaonNotificationRecipientEntity[];\n}\n","//#region imports\nimport { TaonBaseRepository, TaonRepository } from 'taon/websql';\nimport { Raw } from 'taon-typeorm/websql';\n\nimport { TaonNotificationEntity } from './taon-notification.entity';\n//#endregion\n\n@TaonRepository({\n className: 'TaonNotificationRepository',\n})\nexport class TaonNotificationRepository extends TaonBaseRepository<TaonNotificationEntity> {\n entityClassResolveFn: () => typeof TaonNotificationEntity = () => TaonNotificationEntity;\n\n /**\n * TODO remove this demo example method\n */\n async countEntitesWithEvenId(): Promise<number> {\n //#region @websqlFunc\n const result = await this.count({\n where: {\n id: Raw(alias => `${alias} % 2 = 0`),\n },\n });\n return result;\n //#endregion\n }\n}","//#region imports\nimport {\n Taon,\n ClassHelpers,\n TaonController,\n TaonBaseCrudController,\n Query,\n GET,\n} from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n\nimport { TaonNotificationEntity } from './taon-notification.entity';\nimport { TaonNotificationRepository } from './taon-notification.repository';\n//#endregion\n\n@TaonController<TaonNotificationController>({\n className: 'TaonNotificationController',\n allowedMethods: [],\n})\nexport class TaonNotificationController extends TaonBaseCrudController<TaonNotificationEntity> {\n entityClassResolveFn: () => typeof TaonNotificationEntity = () =>\n TaonNotificationEntity;\n\n taonNotificationRepository = this.injectCustomRepo(\n TaonNotificationRepository,\n );\n\n //#region methods & getters / hello world\n /**\n * TODO remove this demo example method\n */\n @GET()\n helloWord(@Query('yourName') yourName: string): Taon.Response<string> {\n //#region @websqlFunc\n return async (req, res) => {\n const numOfEntities = await this.db.count();\n const numberOfEvenEntities =\n await this.taonNotificationRepository.countEntitesWithEvenId();\n return `Hello ${yourName || 'world'} from ${ClassHelpers.getName(TaonNotificationController)}\n controller.. ${numOfEntities} entites in db..\n ${numberOfEvenEntities} entites with even ids (2,4,6,8 etc.)\n `;\n };\n //#endregion\n }\n //#endregion\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Taon, TaonBaseAngularService } from 'taon/websql';\n\nimport type { TaonNotificationEntity } from './taon-notification.entity';\nimport { TaonNotificationController } from './taon-notification.controller';\n\n@Injectable()\nexport class TaonNotificationApiService extends TaonBaseAngularService {\n private taonNotificationController = this.injectController(TaonNotificationController);\n\n public get allMyEntities$(): Observable<TaonNotificationEntity[]> {\n return this.taonNotificationController.getAll().request!().observable.pipe(\n map(res => res.body?.json),\n );\n }\n\n public helloWorld(user:string): Observable<string> {\n return this.taonNotificationController.helloWord(user).request!().observable.pipe(\n map(res => res.responseText as string),\n );\n }\n}","//#region imports\nimport { Taon, TaonBaseMiddleware, TaonMiddleware } from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n//#endregion\n\n@TaonMiddleware({\n className: 'TaonNotificationMiddleware',\n})\nexport class TaonNotificationMiddleware extends TaonBaseMiddleware {}","//#region imports\nimport { Taon, TaonBaseProvider, TaonProvider } from 'taon/websql';\nimport { _ } from 'tnp-core/websql';\n//#endregion\n\n@TaonProvider({\n className: 'TaonNotificationProvider',\n})\nexport class TaonNotificationProvider extends TaonBaseProvider {\n\n\n\n}","//#region imports\nimport { TaonBaseSubscriberForEntity, TaonSubscriber } from 'taon/websql';\nimport { TaonNotificationEntity } from './taon-notification.entity';\nimport { TaonNotificationProvider } from './taon-notification.provider';\n//#endregion\n\n@TaonSubscriber<TaonNotificationSubscriber>({\n className: 'TaonNotificationSubscriber',\n // allowedEvents: ['afterUpdate'],\n})\nexport class TaonNotificationSubscriber extends TaonBaseSubscriberForEntity {\n taonNotificationProvider = this.injectProvider(TaonNotificationProvider);\n listenTo(): typeof TaonNotificationEntity {\n return TaonNotificationEntity;\n }\n}","//#region imports\nimport { createContext, TaonBaseContext } from 'taon/websql';\n\nimport { TaonNotificationRecipientEntity } from './taon-notification-recipient.entity';\nimport { TaonNotificationController } from './taon-notification.controller';\nimport { TaonNotificationEntity } from './taon-notification.entity';\nimport { TaonNotificationMiddleware } from './taon-notification.middleware';\nimport { TaonNotificationProvider } from './taon-notification.provider';\nimport { TaonNotificationRepository } from './taon-notification.repository';\nimport { TaonNotificationSubscriber } from './taon-notification.subscriber';\n//#endregion\n\nexport const TaonNotificationContext = createContext(() => ({\n contextName: 'TaonNotificationContext',\n abstract: true,\n contexts: { TaonBaseContext },\n entities: { TaonNotificationEntity, TaonNotificationRecipientEntity },\n controllers: { TaonNotificationController },\n repositories: { TaonNotificationRepository },\n providers: { TaonNotificationProvider },\n middlewares: { TaonNotificationMiddleware },\n subscribers: { TaonNotificationSubscriber },\n}));\n","import type { TaonNotificationEntity } from './taon-notification.entity';\n\nexport const TaonNotificationDefaultsValues = {\n description: '',\n version: 0,\n id: void 0,\n} as Partial<TaonNotificationEntity>;","export enum TaonNotificationState {\n Active = 'active',\n Inactive = 'inactive',\n}","import { TaonNotificationState } from './taon-notification.models';\n\nexport namespace TaonNotificationUtils {\n export function isActive(state: string): state is TaonNotificationState {\n return state === 'active';\n }\n}","import type { TaonPermissionEntity } from './taon-permission.entity';\n\nexport const TaonPermissionDefaultsValues = {\n description: '',\n version: 0,\n id: void 0,\n} as Partial<TaonPermissionEntity>;\n","export enum TaonPermissionState {\n Active = 'active',\n Inactive = 'inactive',\n}","import { TaonPermissionState } from './taon-permission.models';\n\nexport namespace TaonPermissionUtils {\n export function isActive(state: string): state is TaonPermissionState {\n return state === 'active';\n }\n}","import type { TaonRoleEntity } from './taon-role.entity';\n\nexport const TaonRoleDefaultsValues = {\n description: '',\n version: 0,\n id: void 0,\n} as Partial<TaonRoleEntity>;\n","export enum TaonRoleState {\n Active = 'active',\n Inactive = 'inactive',\n}","//#region imports\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n inject,\n signal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\n\nimport { TaonGroupApiService } from '../../taon-group/taon-group-api.service';\nimport { TaonRoleApiService } from '../taon-role-api.service';\nimport type { TaonRoleEntity } from '../taon-role.entity';\n//#endregion\n\n@Component({\n selector: 'taon-role-chooser',\n templateUrl: './taon-role-chooser.component.html',\n styleUrls: ['./taon-role-chooser.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n FormsModule,\n MatButtonModule,\n MatFormFieldModule,\n MatIconModule,\n MatSelectModule,\n ],\n providers: [TaonRoleApiService, TaonGroupApiService],\n})\nexport class TaonRoleChooserComponent {\n //#region inject\n\n private readonly taonRoleApiService = inject(TaonRoleApiService);\n\n private readonly taonGroupApiService = inject(TaonGroupApiService);\n\n //#endregion\n\n //#region inputs & outputs\n\n @Input({ required: true }) groupId!: number;\n\n @Input() excludedRoleIds: number[] = [];\n\n @Output() readonly assigned = new EventEmitter<number>();\n\n @Output() readonly cancelled = new EventEmitter<void>();\n\n //#endregion\n\n //#region state\n\n readonly roles = signal<TaonRoleEntity[]>([]);\n\n readonly loading = signal(false);\n\n readonly saving = signal(false);\n\n selectedRoleId?: number;\n\n //#endregion\n\n //#region constructor\n\n constructor() {\n void this.loadRoles();\n }\n\n //#endregion\n\n //#region getters\n\n get availableRoles(): TaonRoleEntity[] {\n return this.roles().filter(\n role => !this.excludedRoleIds.includes(role.id as number),\n );\n }\n\n //#endregion\n\n //#region methods\n\n async loadRoles(): Promise<void> {\n this.loading.set(true);\n\n try {\n this.roles.set(await this.taonRoleApiService.getAllRoles());\n } catch {\n this.roles.set([]);\n } finally {\n this.loading.set(false);\n }\n }\n\n async assign(): Promise<void> {\n const roleId = this.selectedRoleId;\n\n if (!roleId || !this.groupId) {\n return;\n }\n\n this.saving.set(true);\n\n try {\n await this.taonGroupApiService.assignRoleToGroup(this.groupId, roleId);\n\n this.selectedRoleId = undefined;\n\n this.assigned.emit(roleId);\n } finally {\n this.saving.set(false);\n }\n }\n\n cancel(): void {\n this.selectedRoleId = undefined;\n\n this.cancelled.emit();\n }\n\n //#endregion\n}\n","<div class=\"taon-role-chooser\">\n <mat-form-field\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n class=\"taon-role-chooser__field\">\n <mat-label> Role </mat-label>\n\n <mat-select\n [(ngModel)]=\"selectedRoleId\"\n [disabled]=\"loading() || saving()\">\n @for (role of availableRoles; track role.id) {\n <mat-option [value]=\"role.id\">\n {{ role.name }} ({{ role.code }})\n </mat-option>\n } @empty {\n <mat-option [disabled]=\"true\"> No roles available </mat-option>\n }\n </mat-select>\n </mat-form-field>\n\n <button\n mat-flat-button\n color=\"primary\"\n type=\"button\"\n [disabled]=\"!selectedRoleId || saving()\"\n (click)=\"assign()\">\n <mat-icon> add </mat-icon>\n\n Assign\n </button>\n\n <button\n mat-button\n type=\"button\"\n [disabled]=\"saving()\"\n (click)=\"cancel()\">\n Cancel\n </button>\n</div>\n","//#region imports\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnChanges,\n inject,\n signal,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RouterLink } from '@angular/router';\nimport { MtxGridColumn } from '@ng-matero/extensions/grid';\nimport { TaonDatatableComponent } from '@taon-dev/ui/websql';\n\nimport { TaonRoleChooserComponent } from '../../taon-role/taon-role-chooser/taon-role-chooser.component';\nimport { TaonBackofficeNavigationService } from '../../taon-session/taon-session-backoffice/taon-backoffice-navigation.service';\nimport { TaonGroupApiService } from '../taon-group-api.service';\nimport type { TaonGroupEntity } from '../taon-group.entity';\n\nimport { TaonGroupBackofficeModels } from './taon-group-backoffice.models';\n//#endregion\n\n@Component({\n selector: 'taon-group-details',\n templateUrl: './taon-group-details.component.html',\n styleUrls: ['./taon-group-backoffice.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n RouterLink,\n MatButtonModule,\n MatIconModule,\n TaonDatatableComponent,\n TaonRoleChooserComponent,\n ],\n providers: [TaonGroupApiService, TaonBackofficeNavigationService],\n})\nexport class TaonGroupDetailsComponent implements OnChanges {\n @Input({ required: true }) group!: TaonGroupEntity;\n\n readonly navigation = inject(TaonBackofficeNavigationService);\n\n ngOnChanges(): void {\n void this.loadRolesForGroup(Number(this.group.id));\n }\n //#region inject\n\n taonGroupApiService = inject(TaonGroupApiService);\n\n //#endregion\n\n //#region state\n\n readonly roleRowsByGroupId = signal<\n Record<number, TaonGroupBackofficeModels.AssignedRoleRow[]>\n >({});\n\n readonly roleChooserGroupId = signal<number | undefined>(undefined);\n\n /**\n * Stable reference, so that nested datatables do not reload on every\n * change detection cycle while roles are not loaded yet.\n */\n private readonly emptyRoleRows: TaonGroupBackofficeModels.AssignedRoleRow[] =\n [];\n\n private readonly emptyIds: number[] = [];\n\n private readonly assignedRoleIdsByGroupId = signal<Record<number, number[]>>(\n {},\n );\n\n //#endregion\n\n //#region columns\n\n roleColumns: MtxGridColumn[] = [\n {\n header: 'ID',\n field: 'roleId',\n },\n {\n header: 'Name',\n field: 'name',\n },\n {\n header: 'Code',\n field: 'code',\n },\n {\n header: 'Description',\n field: 'description',\n },\n {\n header: 'Actions',\n field: 'actions',\n type: 'button',\n buttons: [\n {\n type: 'icon',\n icon: 'open_in_new',\n tooltip: 'Role details',\n click: (row: TaonGroupBackofficeModels.AssignedRoleRow) =>\n this.navigation.openDetails('role', row.roleId),\n },\n {\n type: 'icon',\n icon: 'delete',\n color: 'warn',\n tooltip: 'Remove role from group',\n click: (row: TaonGroupBackofficeModels.AssignedRoleRow) =>\n void this.unassignRole(row),\n },\n ],\n },\n ];\n\n //#endregion\n\n //#region methods\n\n roleRowsFor(groupId: number): TaonGroupBackofficeModels.AssignedRoleRow[] {\n return this.roleRowsByGroupId()[groupId] ?? this.emptyRoleRows;\n }\n\n assignedRoleIds(groupId: number): number[] {\n return this.assignedRoleIdsByGroupId()[groupId] ?? this.emptyIds;\n }\n\n openRoleChooser(groupId: number): void {\n this.roleChooserGroupId.set(groupId);\n }\n\n closeRoleChooser(): void {\n this.roleChooserGroupId.set(undefined);\n }\n\n roleAssigned(groupId: number): void {\n this.closeRoleChooser();\n\n void this.loadRolesForGroup(groupId);\n }\n\n async loadRolesForGroup(groupId: number): Promise<void> {\n if (!groupId) {\n return;\n }\n\n const roles = await this.taonGroupApiService.getRolesForGroup(groupId);\n\n const rows = roles.map(role => ({\n groupId,\n roleId: role.id as number,\n name: role.name,\n code: role.code,\n description: role.description,\n }));\n\n this.roleRowsByGroupId.set({\n ...this.roleRowsByGroupId(),\n [groupId]: rows,\n });\n\n this.assignedRoleIdsByGroupId.set({\n ...this.assignedRoleIdsByGroupId(),\n [groupId]: rows.map(row => row.roleId),\n });\n }\n\n async unassignRole(\n row: TaonGroupBackofficeModels.AssignedRoleRow,\n ): Promise<void> {\n await this.taonGroupApiService.unassignRoleFromGroup(\n row.groupId,\n row.roleId,\n );\n\n await this.loadRolesForGroup(row.groupId);\n }\n\n //#endregion\n}\n","<a [routerLink]=\"navigation.detailsLink('group', group.id)\">Group details #{{ group.id }}</a>\n <div class=\"group-details__section\">\n <div class=\"group-details__section-header\">\n <h4 class=\"group-details__section-title\">Group roles</h4>\n\n @if (roleChooserGroupId() !== group.id) {\n <button\n mat-flat-button\n color=\"primary\"\n type=\"button\"\n (click)=\"openRoleChooser(group.id)\">\n <mat-icon> add_moderator </mat-icon>\n\n Assign role\n </button>\n }\n </div>\n\n @if (roleChooserGroupId() === group.id) {\n <taon-role-chooser\n [groupId]=\"group.id\"\n [excludedRoleIds]=\"assignedRoleIds(group.id)\"\n (assigned)=\"roleAssigned(group.id)\"\n (cancelled)=\"closeRoleChooser()\">\n </taon-role-chooser>\n }\n\n <taon-datatable\n [data]=\"roleRowsFor(group.id)\"\n [columns]=\"roleColumns\"\n [pageSize]=\"5\"\n [hideSearch]=\"true\"\n [hideAddButton]=\"true\"\n [showPaginator]=\"false\"\n searchMode=\"simple\">\n </taon-datatable>\n </div>\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { MtxGridColumn } from '@ng-matero/extensions/grid';\nimport { TaonDatatableComponent } from '@taon-dev/ui/websql';\n\nimport { TaonBackofficeNavigationService } from '../../taon-session/taon-session-backoffice/taon-backoffice-navigation.service';\nimport { TaonGroupApiService } from '../taon-group-api.service';\nimport type { TaonGroupEntity } from '../taon-group.entity';\n\nimport { TaonGroupDetailsComponent } from './taon-group-details.component';\n\n@Component({\n selector: 'app-taon-group-backoffice',\n templateUrl: './taon-group-backoffice.component.html',\n styleUrls: ['./taon-group-backoffice.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TaonDatatableComponent, TaonGroupDetailsComponent],\n providers: [TaonGroupApiService, TaonBackofficeNavigationService],\n})\nexport class TaonGroupBackofficeComponent {\n readonly taonGroupApiService = inject(TaonGroupApiService);\n\n readonly navigation = inject(TaonBackofficeNavigationService);\n\n public get crud() {\n return this.taonGroupApiService.taonGroupController;\n }\n\n readonly columns: MtxGridColumn[] = [\n { header: 'ID', field: 'id', sortable: true, showExpand: true },\n { header: 'Name', field: 'name', sortable: true },\n { header: 'Code', field: 'code', sortable: true },\n {\n header: 'Actions',\n field: 'actions',\n type: 'button',\n buttons: [\n {\n type: 'icon',\n icon: 'open_in_new',\n tooltip: 'Group details',\n click: (group: TaonGroupEntity) =>\n this.navigation.openDetails('group', group.id),\n },\n ],\n },\n ];\n\n add(): void {}\n}\n","<taon-datatable\n [entityCrudController]=\"crud\"\n [columns]=\"columns\"\n [allowedColumns]=\"['id', 'name', 'code']\"\n searchMode=\"advanced\"\n (addingItem)=\"add()\"\n [expansionTemplate]=\"expansionTemplate\">\n</taon-datatable>\n<ng-template #expansionTemplate let-group>\n <taon-group-details [group]=\"group\"></taon-group-details>\n</ng-template>\n","//#region imports\nimport { Routes } from '@angular/router';\n\nimport { taonBackofficeDetailsResolver } from '../../taon-session/taon-session-backoffice/taon-backoffice-details.resolver';\nimport { TaonGroupApiService } from '../taon-group-api.service';\n//#endregion\n\nexport const TaonGroupBackofficeRoutes: Routes = [\n {\n path: '',\n pathMatch: 'full',\n loadComponent: () =>\n import('./taon-group-backoffice.component').then(\n m => m.TaonGroupBackofficeComponent,\n ),\n },\n {\n path: ':id',\n data: { kind: 'group', hideInNavigation: true },\n providers: [TaonGroupApiService],\n resolve: { detail: taonBackofficeDetailsResolver },\n loadComponent: () =>\n import('../../taon-session/taon-session-backoffice/taon-backoffice-details-page.component').then(\n m => m.TaonBackofficeDetailsPageComponent,\n ),\n },\n];\n\n/**\n * By default exporting TaonGroupBackofficeRoutes,\n * the command `taon generate:app:routes`\n * will automatically add them to the root routes in ./src/app.ts.\n */\n// export default TaonGroupBackofficeRoutes;\n","//#region imports\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n inject,\n signal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\n\nimport { TaonGroupApiService } from '../taon-group-api.service';\nimport type { TaonGroupEntity } from '../taon-group.entity';\n//#endregion\n\n@Component({\n selector: 'taon-group-chooser',\n templateUrl: './taon-group-chooser.component.html',\n styleUrls: ['./taon-group-chooser.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n FormsModule,\n MatButtonModule,\n MatFormFieldModule,\n MatIconModule,\n MatSelectModule,\n ],\n providers: [TaonGroupApiService],\n})\nexport class TaonGroupChooserComponent {\n //#region inject\n\n private readonly taonGroupApiService = inject(TaonGroupApiService);\n\n //#endregion\n\n //#region inputs & outputs\n\n @Input({ required: true }) userId!: number;\n\n @Input() excludedGroupIds: number[] = [];\n\n @Output() readonly assigned = new EventEmitter<number>();\n\n @Output() readonly cancelled = new EventEmitter<void>();\n\n //#endregion\n\n //#region state\n\n readonly groups = signal<TaonGroupEntity[]>([]);\n\n readonly loading = signal(false);\n\n readonly saving = signal(false);\n\n selectedGroupId?: number;\n\n //#endregion\n\n //#region constructor\n\n constructor() {\n void this.loadGroups();\n }\n\n //#endregion\n\n //#region getters\n\n get availableGroups(): TaonGroupEntity[] {\n return this.groups().filter(\n group => !this.excludedGroupIds.includes(group.id as number),\n );\n }\n\n //#endregion\n\n //#region methods\n\n async loadGroups(): Promise<void> {\n this.loading.set(true);\n\n try {\n this.groups.set(await this.taonGroupApiService.getAllGroups());\n } catch {\n this.groups.set([]);\n } finally {\n this.loading.set(false);\n }\n }\n\n async assign(): Promise<void> {\n const groupId = this.selectedGroupId;\n\n if (!groupId || !this.userId) {\n return;\n }\n\n this.saving.set(true);\n\n try {\n await this.taonGroupApiService.assignGroupToUser(this.userId, groupId);\n\n this.selectedGroupId = undefined;\n\n this.assigned.emit(groupId);\n } finally {\n this.saving.set(false);\n }\n }\n\n cancel(): void {\n this.selectedGroupId = undefined;\n\n this.cancelled.emit();\n }\n\n //#endregion\n}\n","<div class=\"taon-group-chooser\">\n <mat-form-field\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n class=\"taon-group-chooser__field\">\n <mat-label> Group </mat-label>\n\n <mat-select\n [(ngModel)]=\"selectedGroupId\"\n [disabled]=\"loading() || saving()\">\n @for (group of availableGroups; track group.id) {\n <mat-option [value]=\"group.id\">\n {{ group.name }} ({{ group.code }})\n </mat-option>\n } @empty {\n <mat-option [disabled]=\"true\"> No groups available </mat-option>\n }\n </mat-select>\n </mat-form-field>\n\n <button\n mat-flat-button\n color=\"primary\"\n type=\"button\"\n [disabled]=\"!selectedGroupId || saving()\"\n (click)=\"assign()\">\n <mat-icon> add </mat-icon>\n\n Assign\n </button>\n\n <button\n mat-button\n type=\"button\"\n [disabled]=\"saving()\"\n (click)=\"cancel()\">\n Cancel\n </button>\n</div>\n","//#region imports\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n inject,\n signal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { TaonPermissionApiService } from '../taon-permission-api.service';\nimport type { TaonPermissionEntity } from '../taon-permission.entity';\n//#endregion\n\n@Component({\n selector: 'taon-permission-view-edit',\n templateUrl: './taon-permission-view-edit.component.html',\n styleUrls: ['./taon-permission-view-edit.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n FormsModule,\n MatButtonModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n ],\n providers: [TaonPermissionApiService],\n})\nexport class TaonPermissionViewEditComponent {\n //#region inject\n\n private readonly taonPermissionApiService = inject(TaonPermissionApiService);\n\n //#endregion\n\n //#region inputs & outputs\n\n @Input({ required: true })\n set permission(value: TaonPermissionEntity) {\n this._permission = value;\n\n this.description.set(value?.description ?? '');\n\n this.editMode.set(false);\n }\n\n get permission(): TaonPermissionEntity {\n return this._permission;\n }\n\n @Output() readonly descriptionChanged = new EventEmitter<string>();\n\n //#endregion\n\n //#region state\n\n private _permission!: TaonPermissionEntity;\n\n readonly description = signal('');\n\n readonly draftDescription = signal('');\n\n readonly editMode = signal(false);\n\n readonly saving = signal(false);\n\n //#endregion\n\n //#region methods\n\n edit(): void {\n this.draftDescription.set(this.description());\n\n this.editMode.set(true);\n }\n\n cancel(): void {\n this.draftDescription.set(this.description());\n\n this.editMode.set(false);\n }\n\n async save(): Promise<void> {\n if (!this.permission?.id) {\n return;\n }\n\n const newDescription = this.draftDescription();\n\n this.saving.set(true);\n\n try {\n await this.taonPermissionApiService.updateDescription(\n this.permission.id as number,\n newDescription,\n );\n\n this.permission.description = newDescription;\n\n this.description.set(newDescription);\n\n this.editMode.set(false);\n\n this.descriptionChanged.emit(newDescription);\n } finally {\n this.saving.set(false);\n }\n }\n\n //#endregion\n}\n","<div class=\"taon-permission-view-edit\">\n @if (editMode()) {\n <mat-form-field\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n class=\"taon-permission-view-edit__field\">\n <mat-label> Description </mat-label>\n\n <textarea\n matInput\n rows=\"4\"\n [ngModel]=\"draftDescription()\"\n (ngModelChange)=\"draftDescription.set($event)\"\n [disabled]=\"saving()\">\n </textarea>\n </mat-form-field>\n\n <div class=\"taon-permission-view-edit__actions\">\n <button\n mat-flat-button\n color=\"primary\"\n type=\"button\"\n [disabled]=\"saving()\"\n (click)=\"save()\">\n <mat-icon> save </mat-icon>\n\n Save\n </button>\n\n <button\n mat-button\n type=\"button\"\n [disabled]=\"saving()\"\n (click)=\"cancel()\">\n Cancel\n </button>\n </div>\n } @else {\n <div class=\"taon-permission-view-edit__description\">\n {{ description() || 'No description' }}\n </div>\n\n <div class=\"taon-permission-view-edit__actions\">\n <button\n mat-stroked-button\n type=\"button\"\n (click)=\"edit()\">\n <mat-icon> edit </mat-icon>\n\n Edit\n </button>\n </div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, Input, inject } from '@angular/core';\nimport { RouterLink } from '@angular/router';\n\nimport { TaonBackofficeNavigationService } from '../../taon-session/taon-session-backoffice/taon-backoffice-navigation.service';\nimport { TaonPermissionViewEditComponent } from '../taon-permission-view-edit/taon-permission-view-edit.component';\nimport type { TaonPermissionEntity } from '../taon-permission.entity';\n\n@Component({\n selector: 'taon-permission-details',\n template: `\n <a [routerLink]=\"navigation.detailsLink('permission', permission.id)\">Permission details #{{ permission.id }}</a>\n <div class=\"permission-details__section\">\n <h4 class=\"permission-details__section-title\">Description</h4>\n <taon-permission-view-edit [permission]=\"permission\"></taon-permission-view-edit>\n </div>\n `,\n styleUrls: ['./taon-permission-backoffice.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [RouterLink, TaonPermissionViewEditComponent],\n providers: [TaonBackofficeNavigationService],\n})\nexport class TaonPermissionDetailsComponent {\n @Input({ required: true }) permission!: TaonPermissionEntity;\n\n readonly navigation = inject(TaonBackofficeNavigationService);\n}\n","//#region imports\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { MtxGridColumn } from '@ng-matero/extensions/grid';\nimport { TaonDatatableComponent } from '@taon-dev/ui/websql';\n\nimport { TaonBackofficeNavigationService } from '../../taon-session/taon-session-backoffice/taon-backoffice-navigation.service';\nimport { TaonPermissionApiService } from '../taon-permission-api.service';\nimport type { TaonPermissionEntity } from '../taon-permission.entity';\n\nimport { TaonPermissionDetailsComponent } from './taon-permission-details.component';\n//#endregion\n\n@Component({\n selector: 'app-taon-permission-backoffice',\n templateUrl: './taon-permission-backoffice.component.html',\n styleUrls: ['./taon-permission-backoffice.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n TaonDatatableComponent,\n TaonPermissionDetailsComponent,\n ],\n providers: [TaonPermissionApiService, TaonBackofficeNavigationService],\n})\nexport class TaonPermissionBackofficeComponent {\n readonly navigation = inject(TaonBackofficeNavigationService);\n\n taonPermissionApiService = inject(TaonPermissionApiService);\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n public get crud() {\n return this.taonPermissionApiService.taonPermissionController;\n }\n\n columns: MtxGridColumn[] = [\n {\n header: 'ID',\n field: 'id',\n sortable: true,\n showExpand: true,\n },\n {\n header: 'Name',\n field: 'name',\n sortable: true,\n },\n {\n header: 'Code',\n field: 'code',\n sortable: true,\n },\n {\n header: 'Actions',\n field: 'actions',\n type: 'button',\n buttons: [\n {\n type: 'icon',\n icon: 'open_in_new',\n tooltip: 'Permission details',\n click: (permission: TaonPermissionEntity) =>\n this.navigation.openDetails('permission', permission.id),\n },\n ],\n },\n ];\n\n add(): void {}\n}\n","<taon-datatable\n [entityCrudController]=\"crud\"\n [columns]=\"columns\"\n [allowedColumns]=\"['id', 'name', 'code']\"\n searchMode=\"advanced\"\n (addingItem)=\"add()\"\n [expansionTemplate]=\"expansionTemplate\">\n</taon-datatable>\n\n<ng-template\n #expansionTemplate\n let-permission>\n <taon-permission-details [permission]=\"permission\"></taon-permission-details>\n</ng-template>\n","//#region imports\nimport { Routes } from '@angular/router';\n\nimport { taonBackofficeDetailsResolver } from '../../taon-session/taon-session-backoffice/taon-backoffice-details.resolver';\nimport { TaonPermissionApiService } from '../taon-permission-api.service';\n//#endregion\n\nexport const TaonPermissionBackofficeRoutes: Routes = [\n {\n path: '',\n pathMatch: 'full',\n loadComponent: () =>\n import('./taon-permission-backoffice.component').then(\n m => m.TaonPermissionBackofficeComponent,\n ),\n },\n {\n path: ':id',\n data: { kind: 'permission', hideInNavigation: true },\n providers: [TaonPermissionApiService],\n resolve: { detail: taonBackofficeDetailsResolver },\n loadComponent: () =>\n import('../../taon-session/taon-session-backoffice/taon-backoffice-details-page.component').then(\n m => m.TaonBackofficeDetailsPageComponent,\n ),\n },\n];\n\n/**\n * By default exporting TaonPermissionBackofficeRoutes,\n * the command `taon generate:app:routes`\n * will automatically add them to the root routes in ./src/app.ts.\n */\n// export default TaonPermissionBackofficeRoutes;\n","//#region imports\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n inject,\n signal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\n\nimport { TaonRoleApiService } from '../../taon-role/taon-role-api.service';\nimport { TaonPermissionApiService } from '../taon-permission-api.service';\nimport type { TaonPermissionEntity } from '../taon-permission.entity';\n//#endregion\n\n@Component({\n selector: 'taon-permission-chooser',\n templateUrl: './taon-permission-chooser.component.html',\n styleUrls: ['./taon-permission-chooser.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n FormsModule,\n MatButtonModule,\n MatFormFieldModule,\n MatIconModule,\n MatSelectModule,\n ],\n providers: [TaonPermissionApiService, TaonRoleApiService],\n})\nexport class TaonPermissionChooserComponent {\n //#region inject\n\n private readonly taonPermissionApiService = inject(TaonPermissionApiService);\n\n private readonly taonRoleApiService = inject(TaonRoleApiService);\n\n //#endregion\n\n //#region inputs & outputs\n\n @Input({ required: true }) roleId!: number;\n\n @Input() excludedPermissionIds: number[] = [];\n\n @Output() readonly assigned = new EventEmitter<number>();\n\n @Output() readonly cancelled = new EventEmitter<void>();\n\n //#endregion\n\n //#region state\n\n readonly permissions = signal<TaonPermissionEntity[]>([]);\n\n readonly loading = signal(false);\n\n readonly saving = signal(false);\n\n selectedPermissionId?: number;\n\n //#endregion\n\n //#region constructor\n\n constructor() {\n void this.loadPermissions();\n }\n\n //#endregion\n\n //#region getters\n\n get availablePermissions(): TaonPermissionEntity[] {\n return this.permissions().filter(\n permission =>\n !this.excludedPermissionIds.includes(permission.id as number),\n );\n }\n\n //#endregion\n\n //#region methods\n\n async loadPermissions(): Promise<void> {\n this.loading.set(true);\n\n try {\n this.permissions.set(\n await this.taonPermissionApiService.getAllPermissions(),\n );\n } catch {\n this.permissions.set([]);\n } finally {\n this.loading.set(false);\n }\n }\n\n async assign(): Promise<void> {\n const permissionId = this.selectedPermissionId;\n\n if (!permissionId || !this.roleId) {\n return;\n }\n\n this.saving.set(true);\n\n try {\n await this.taonRoleApiService.assignPermissionToRole(\n this.roleId,\n permissionId,\n );\n\n this.selectedPermissionId = undefined;\n\n this.assigned.emit(permissionId);\n } finally {\n this.saving.set(false);\n }\n }\n\n cancel(): void {\n this.selectedPermissionId = undefined;\n\n this.cancelled.emit();\n }\n\n //#endregion\n}\n","<div class=\"taon-permission-chooser\">\n <mat-form-field\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n class=\"taon-permission-chooser__field\">\n <mat-label> Permission </mat-label>\n\n <mat-select\n [(ngModel)]=\"selectedPermissionId\"\n [disabled]=\"loading() || saving()\">\n @for (permission of availablePermissions; track permission.id) {\n <mat-option [value]=\"permission.id\">\n {{ permission.name }} ({{ permission.code }})\n </mat-option>\n } @empty {\n <mat-option [disabled]=\"true\"> No permissions available </mat-option>\n }\n </mat-select>\n </mat-form-field>\n\n <button\n mat-flat-button\n color=\"primary\"\n type=\"button\"\n [disabled]=\"!selectedPermissionId || saving()\"\n (click)=\"assign()\">\n <mat-icon> add </mat-icon>\n\n Assign\n </button>\n\n <button\n mat-button\n type=\"button\"\n [disabled]=\"saving()\"\n (click)=\"cancel()\">\n Cancel\n </button>\n</div>\n","//#region imports\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnChanges,\n inject,\n signal,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RouterLink } from '@angular/router';\nimport { MtxGridColumn } from '@ng-matero/extensions/grid';\nimport { TaonDatatableComponent } from '@taon-dev/ui/websql';\n\nimport { TaonPermissionChooserComponent } from '../../taon-permission/taon-permission-chooser/taon-permission-chooser.component';\nimport { TaonBackofficeNavigationService } from '../../taon-session/taon-session-backoffice/taon-backoffice-navigation.service';\nimport { TaonRoleApiService } from '../taon-role-api.service';\nimport type { TaonRoleEntity } from '../taon-role.entity';\n\nimport { TaonRoleBackofficeModels } from './taon-role-backoffice.models';\n//#endregion\n\n@Component({\n selector: 'taon-role-details',\n templateUrl: './taon-role-details.component.html',\n styleUrls: ['./taon-role-backoffice.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n RouterLink,\n MatButtonModule,\n MatIconModule,\n TaonDatatableComponent,\n TaonPermissionChooserComponent,\n ],\n providers: [TaonRoleApiService, TaonBackofficeNavigationService],\n})\nexport class TaonRoleDetailsComponent implements OnChanges {\n @Input({ required: true }) role!: TaonRoleEntity;\n\n readonly navigation = inject(TaonBackofficeNavigationService);\n\n ngOnChanges(): void {\n void this.loadPermissionsForRole(Number(this.role.id));\n }\n //#region inject\n\n taonRoleApiService = inject(TaonRoleApiService);\n\n //#endregion\n\n //#region state\n\n readonly permissionRowsByRoleId = signal<\n Record<number, TaonRoleBackofficeModels.AssignedPermissionRow[]>\n >({});\n\n readonly permissionChooserRoleId = signal<number | undefined>(undefined);\n\n /**\n * Stable reference, so that nested datatables do not reload on every\n * change detection cycle while permissions are not loaded yet.\n */\n private readonly emptyPermissionRows: TaonRoleBackofficeModels.AssignedPermissionRow[] =\n [];\n\n private readonly emptyIds: number[] = [];\n\n private readonly assignedPermissionIdsByRoleId = signal<\n Record<number, number[]>\n >({});\n\n //#endregion\n\n //#region columns\n\n permissionColumns: MtxGridColumn[] = [\n {\n header: 'ID',\n field: 'permissionId',\n },\n {\n header: 'Name',\n field: 'name',\n },\n {\n header: 'Code',\n field: 'code',\n },\n {\n header: 'Description',\n field: 'description',\n },\n {\n header: 'Actions',\n field: 'actions',\n type: 'button',\n buttons: [\n {\n type: 'icon',\n icon: 'open_in_new',\n tooltip: 'Permission details',\n click: (row: TaonRoleBackofficeModels.AssignedPermissionRow) =>\n this.navigation.openDetails('permission', row.permissionId),\n },\n {\n type: 'icon',\n icon: 'delete',\n color: 'warn',\n tooltip: 'Remove permission from role',\n click: (row: TaonRoleBackofficeModels.AssignedPermissionRow) =>\n void this.unassignPermission(row),\n },\n ],\n },\n ];\n\n //#endregion\n\n //#region methods\n\n permissionRowsFor(\n roleId: number,\n ): TaonRoleBackofficeModels.AssignedPermissionRow[] {\n return this.permissionRowsByRoleId()[roleId] ?? this.emptyPermissionRows;\n }\n\n assignedPermissionIds(roleId: number): number[] {\n return this.assignedPermissionIdsByRoleId()[roleId] ?? this.emptyIds;\n }\n\n openPermissionChooser(roleId: number): void {\n this.permissionChooserRoleId.set(roleId);\n }\n\n closePermissionChooser(): void {\n this.permissionChooserRoleId.set(undefined);\n }\n\n permissionAssigned(roleId: number): void {\n this.closePermissionChooser();\n\n void this.loadPermissionsForRole(roleId);\n }\n\n async loadPermissionsForRole(roleId: number): Promise<void> {\n if (!roleId) {\n return;\n }\n\n const permissions =\n await this.taonRoleApiService.getPermissionsForRole(roleId);\n\n const rows = permissions.map(permission => ({\n roleId,\n permissionId: permission.id as number,\n name: permission.name,\n code: permission.code,\n description: permission.description,\n }));\n\n this.permissionRowsByRoleId.set({\n ...this.permissionRowsByRoleId(),\n [roleId]: rows,\n });\n\n this.assignedPermissionIdsByRoleId.set({\n ...this.assignedPermissionIdsByRoleId(),\n [roleId]: rows.map(row => row.permissionId),\n });\n }\n\n async unassignPermission(\n row: TaonRoleBackofficeModels.AssignedPermissionRow,\n ): Promise<void> {\n await this.taonRoleApiService.unassignPermissionFromRole(\n row.roleId,\n row.permissionId,\n );\n\n await this.loadPermissionsForRole(row.roleId);\n }\n\n //#endregion\n}\n","<a [routerLink]=\"navigation.detailsLink('role', role.id)\">Role details #{{ role.id }}</a>\n <div class=\"role-details__section\">\n <div class=\"role-details__section-header\">\n <h4 class=\"role-details__section-title\">Role permissions</h4>\n\n @if (permissionChooserRoleId() !== role.id) {\n <button\n mat-flat-button\n color=\"primary\"\n type=\"button\"\n (click)=\"openPermissionChooser(role.id)\">\n <mat-icon> add </mat-icon>\n\n Assign permission\n </button>\n }\n </div>\n\n @if (permissionChooserRoleId() === role.id) {\n <taon-permission-chooser\n [roleId]=\"role.id\"\n [excludedPermissionIds]=\"assignedPermissionIds(role.id)\"\n (assigned)=\"permissionAssigned(role.id)\"\n (cancelled)=\"closePermissionChooser()\">\n </taon-permission-chooser>\n }\n\n <taon-datatable\n [data]=\"permissionRowsFor(role.id)\"\n [columns]=\"permissionColumns\"\n [pageSize]=\"5\"\n [hideSearch]=\"true\"\n [hideAddButton]=\"true\"\n [showPaginator]=\"false\"\n searchMode=\"simple\">\n </taon-datatable>\n </div>\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { MtxGridColumn } from '@ng-matero/extensions/grid';\nimport { TaonDatatableComponent } from '@taon-dev/ui/websql';\n\nimport { TaonBackofficeNavigationService } from '../../taon-session/taon-session-backoffice/taon-backoffice-navigation.service';\nimport { TaonRoleApiService } from '../taon-role-api.service';\nimport type { TaonRoleEntity } from '../taon-role.entity';\n\nimport { TaonRoleDetailsComponent } from './taon-role-details.component';\n\n@Component({\n selector: 'app-taon-role-backoffice',\n templateUrl: './taon-role-backoffice.component.html',\n styleUrls: ['./taon-role-backoffice.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TaonDatatableComponent, TaonRoleDetailsComponent],\n providers: [TaonRoleApiService, TaonBackofficeNavigationService],\n})\nexport class TaonRoleBackofficeComponent {\n readonly taonRoleApiService = inject(TaonRoleApiService);\n\n readonly navigation = inject(TaonBackofficeNavigationService);\n\n public get crud() {\n return this.taonRoleApiService.taonRoleController;\n }\n\n readonly columns: MtxGridColumn[] = [\n { header: 'ID', field: 'id', sortable: true, showExpand: true },\n { header: 'Name', field: 'name', sortable: true },\n { header: 'Code', field: 'code', sortable: true },\n {\n header: 'Actions',\n field: 'actions',\n type: 'button',\n buttons: [\n {\n type: 'icon',\n icon: 'open_in_new',\n tooltip: 'Role details',\n click: (role: TaonRoleEntity) =>\n this.navigation.openDetails('role', role.id),\n },\n ],\n },\n ];\n\n add(): void {}\n}\n","<taon-datatable\n [entityCrudController]=\"crud\"\n [columns]=\"columns\"\n [allowedColumns]=\"['id', 'name', 'code']\"\n searchMode=\"advanced\"\n (addingItem)=\"add()\"\n [expansionTemplate]=\"expansionTemplate\">\n</taon-datatable>\n<ng-template #expansionTemplate let-role>\n <taon-role-details [role]=\"role\"></taon-role-details>\n</ng-template>\n","//#region imports\nimport { Routes } from '@angular/router';\nimport { TaonRoleApiService } from '../taon-role-api.service';\nimport { taonBackofficeDetailsResolver } from '../../taon-session/taon-session-backoffice/taon-backoffice-details.resolver';\n//#endregion\n\nexport const TaonRoleBackofficeRoutes: Routes = [\n {\n path: '',\n pathMatch: 'full',\n loadComponent: () =>\n import('./taon-role-backoffice.component').then(\n m => m.TaonRoleBackofficeComponent,\n ),\n },\n {\n path: ':id',\n data: { kind: 'role', hideInNavigation: true },\n providers: [TaonRoleApiService],\n resolve: { detail: taonBackofficeDetailsResolver },\n loadComponent: () =>\n import('../../taon-session/taon-session-backoffice/taon-backoffice-details-page.component').then(\n m => m.TaonBackofficeDetailsPageComponent,\n ),\n },\n];\n\n/**\n * By default exporting TaonRoleBackofficeRoutes,\n * the command `taon generate:app:routes`\n * will automatically add them to the root routes in ./src/app.ts.\n */\n// export default TaonRoleBackofficeRoutes;\n","//#region imports\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Taon, TaonBaseAngularService } from 'taon/websql';\n\nimport { TaonProfileProvider } from './taon-profile.provider';\n//#endregion\n\n@Injectable()\nexport class TaonProfileConfigService extends TaonBaseAngularService {\n private taonProfileProvider = this.injectProvider(TaonProfileProvider);\n\n clone(): Partial<TaonProfileProvider> {\n const cloned = this.taonProfileProvider.clone();\n return cloned;\n }\n}\n","//#region imports\nimport {\n TaonBaseRepository,\n TaonBaseKvRepository,\n TaonRepository,\n} from 'taon/websql';\n\nimport { TaonProfileEntity } from './taon-profile.entity';\n//#endregion\n\n@TaonRepository({\n className: 'TaonProfileKvRepository',\n})\nexport class TaonProfileKvRepository extends TaonBaseKvRepository<{\n usersToNotify: TaonProfileEntity[];\n}> {\n async notifyUsers(users: TaonProfileEntity[]) {\n this.set('usersToNotify', users);\n }\n}","//#region imports\nimport { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnChanges,\n forwardRef,\n inject,\n signal,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RouterLink } from '@angular/router';\nimport { MtxGridColumn } from '@ng-matero/extensions/grid';\nimport { TaonDatatableComponent } from '@taon-dev/ui/websql';\n\nimport { TaonGroupApiService } from '../../taon-group/taon-group-api.service';\nimport { TaonGroupChooserComponent } from '../../taon-group/taon-group-chooser/taon-group-chooser.component';\nimport type { TaonGroupEntity } from '../../taon-group/taon-group.entity';\nimport { TaonProfilePictureComponent } from '../../taon-session/taon-profile/taon-profile-picture/taon-profile-picture.component';\nimport { TaonBackofficeNavigationService } from '../../taon-session/taon-session-backoffice/taon-backoffice-navigation.service';\nimport { TaonSessionApiService } from '../../taon-session/taon-session.api.service';\nimport type { TaonSessionUserEntity } from '../taon-session-user.entity';\n\nimport { TaonSessionBackofficeUsersModels } from './taon-session-backoffice-users.models';\nimport { of } from 'rxjs';\n//#endregion\n\n@Component({\n selector: 'taon-session-user-details',\n templateUrl: './taon-session-user-details.component.html',\n styleUrls: ['./taon-session-backoffice-users.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AsyncPipe,\n RouterLink,\n MatButtonModule,\n MatIconModule,\n TaonDatatableComponent,\n TaonGroupChooserComponent,\n TaonProfilePictureComponent,\n ],\n providers: [\n TaonGroupApiService,\n TaonBackofficeNavigationService,\n forwardRef(() => TaonSessionApiService),\n ],\n})\nexport class TaonSessionUserDetailsComponent implements OnChanges {\n @Input({ required: true }) user!: TaonSessionUserEntity;\n\n readonly navigation = inject(TaonBackofficeNavigationService);\n\n readonly taonSessionApiService = inject(TaonSessionApiService);\n\n context$ = this.taonSessionApiService.context();\n\n ngOnChanges(): void {\n void this.loadGroupsForUser(Number(this.user.id));\n }\n //#region inject\n\n private readonly taonGroupApiService = inject(TaonGroupApiService);\n\n //#endregion\n\n //#region state\n\n readonly groupRowsByUserId = signal<\n Record<number, TaonSessionBackofficeUsersModels.AssignedGroupRow[]>\n >({});\n\n readonly groupChooserUserId = signal<number | undefined>(undefined);\n\n /**\n * Stable reference, so that nested datatables do not reload on every\n * change detection cycle while groups are not loaded yet.\n */\n private readonly emptyGroupRows: TaonSessionBackofficeUsersModels.AssignedGroupRow[] =\n [];\n\n private readonly emptyIds: number[] = [];\n\n private readonly assignedGroupIdsByUserId = signal<Record<number, number[]>>(\n {},\n );\n\n //#endregion\n\n //#region columns\n\n identityColumns: MtxGridColumn[] = [\n {\n header: 'Provider',\n field: 'provider',\n },\n {\n header: 'Email',\n field: 'email',\n },\n ];\n\n groupColumns: MtxGridColumn[] = [\n {\n header: 'ID',\n field: 'groupId',\n showExpand: true,\n },\n {\n header: 'Name',\n field: 'name',\n },\n {\n header: 'Code',\n field: 'code',\n },\n {\n header: 'Description',\n field: 'description',\n },\n {\n header: 'Actions',\n field: 'actions',\n type: 'button',\n buttons: [\n {\n type: 'icon',\n icon: 'open_in_new',\n tooltip: 'Group details',\n click: (row: TaonSessionBackofficeUsersModels.AssignedGroupRow) =>\n this.navigation.openDetails('group', row.groupId),\n },\n {\n type: 'icon',\n icon: 'delete',\n color: 'warn',\n tooltip: 'Remove group from user',\n click: (row: TaonSessionBackofficeUsersModels.AssignedGroupRow) =>\n void this.unassignGroup(row),\n },\n ],\n },\n ];\n\n //#endregion\n\n //#region methods\n\n groupRowsFor(\n userId: number,\n ): TaonSessionBackofficeUsersModels.AssignedGroupRow[] {\n return this.groupRowsByUserId()[userId] ?? this.emptyGroupRows;\n }\n\n assignedGroupIds(userId: number): number[] {\n return this.assignedGroupIdsByUserId()[userId] ?? this.emptyIds;\n }\n\n openGroupChooser(userId: number): void {\n this.groupChooserUserId.set(userId);\n }\n\n closeGroupChooser(): void {\n this.groupChooserUserId.set(undefined);\n }\n\n groupAssigned(userId: number): void {\n this.closeGroupChooser();\n\n void this.loadGroupsForUser(userId);\n }\n\n async loadGroupsForUser(userId: number): Promise<void> {\n if (!userId) {\n return;\n }\n\n const groups = await this.taonGroupApiService.getGroupsForUser(userId);\n\n const rows = groups.map(group => ({\n userId,\n groupId: group.id as number,\n name: group.name,\n code: group.code,\n description: group.description,\n roles: this.roleRowsFromGroup(group),\n }));\n\n this.groupRowsByUserId.set({\n ...this.groupRowsByUserId(),\n [userId]: rows,\n });\n\n this.assignedGroupIdsByUserId.set({\n ...this.assignedGroupIdsByUserId(),\n [userId]: rows.map(row => row.groupId),\n });\n }\n\n async unassignGroup(\n row: TaonSessionBackofficeUsersModels.AssignedGroupRow,\n ): Promise<void> {\n await this.taonGroupApiService.unassignGroupFromUser(\n row.userId,\n row.groupId,\n );\n\n await this.loadGroupsForUser(row.userId);\n }\n\n //#endregion\n\n //#region private methods\n\n private roleRowsFromGroup(\n group: TaonGroupEntity,\n ): TaonSessionBackofficeUsersModels.AssignedGroupRoleRow[] {\n const rolesById = new Map<\n number,\n TaonSessionBackofficeUsersModels.AssignedGroupRoleRow\n >();\n\n for (const groupRole of group.groupRoles ?? []) {\n const role = groupRole.role;\n if (role) {\n rolesById.set(Number(role.id), {\n roleId: Number(role.id),\n name: role.name,\n });\n }\n }\n\n return [...rolesById.values()];\n }\n\n //#endregion\n}\n","<a [routerLink]=\"navigation.detailsLink('user', user.id)\">User details #{{ user.id }}</a>\n <!-- profile -->\n <div class=\"user-details__profile\">\n <div class=\"user-details__profile-picture\">\n <taon-profile-picture\n [userId]=\"user.id\"\n [readOnly]=\"!(context$ | async)?.isSuperUser\">\n </taon-profile-picture>\n </div>\n\n <div class=\"user-details__profile-fields\">\n <div class=\"user-details__profile-field\">\n <span class=\"user-details__profile-label\"> First Name </span>\n\n <span class=\"user-details__profile-value\"> - </span>\n </div>\n\n <div class=\"user-details__profile-field\">\n <span class=\"user-details__profile-label\"> Surname </span>\n\n <span class=\"user-details__profile-value\"> - </span>\n </div>\n </div>\n </div>\n\n <!-- groups -->\n <div class=\"user-details__section\">\n <div class=\"user-details__section-header\">\n <h4 class=\"user-details__section-title\">User groups</h4>\n\n @if (groupChooserUserId() !== user.id) {\n <button\n mat-flat-button\n color=\"primary\"\n type=\"button\"\n (click)=\"openGroupChooser(user.id)\">\n <mat-icon> group_add </mat-icon>\n\n Assign group\n </button>\n }\n </div>\n\n @if (groupChooserUserId() === user.id) {\n <taon-group-chooser\n [userId]=\"user.id\"\n [excludedGroupIds]=\"assignedGroupIds(user.id)\"\n (assigned)=\"groupAssigned(user.id)\"\n (cancelled)=\"closeGroupChooser()\">\n </taon-group-chooser>\n }\n\n <taon-datatable\n [data]=\"groupRowsFor(user.id)\"\n [columns]=\"groupColumns\"\n [pageSize]=\"5\"\n [hideSearch]=\"true\"\n [hideAddButton]=\"true\"\n [showPaginator]=\"false\"\n searchMode=\"simple\"\n [expansionTemplate]=\"groupExpansionTemplate\">\n </taon-datatable>\n </div>\n\n <!-- providers -->\n <div class=\"user-details__section\">\n <h4 class=\"user-details__section-title\">Providers</h4>\n\n <taon-datatable\n [data]=\"user.identities\"\n [columns]=\"identityColumns\"\n [pageSize]=\"5\"\n [hideSearch]=\"true\"\n [hideAddButton]=\"true\"\n [showPaginator]=\"false\"\n searchMode=\"simple\">\n </taon-datatable>\n </div>\n\n\n<ng-template\n #groupExpansionTemplate\n let-group>\n <div class=\"user-details__group-roles\">\n <span class=\"user-details__section-title\"> Roles from groups </span>\n\n <ul class=\"user-details__role-list\">\n @for (role of group.roles; track role.roleId) {\n <li class=\"user-details__role-item\">\n <a [routerLink]=\"navigation.detailsLink('role', role.roleId)\">{{ role.name }}</a>\n </li>\n } @empty {\n <li class=\"user-details__role-item\">\n No roles available through this group\n </li>\n }\n </ul>\n </div>\n</ng-template>\n","import { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n inject,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { map } from 'rxjs';\n\nimport { TaonGroupDetailsComponent } from '../../taon-group/taon-group-backoffice/taon-group-details.component';\nimport { TaonPermissionDetailsComponent } from '../../taon-permission/taon-permission-backoffice/taon-permission-details.component';\nimport { TaonRoleDetailsComponent } from '../../taon-role/taon-role-backoffice/taon-role-details.component';\nimport { TaonSessionUserDetailsComponent } from '../../taon-session-user/taon-session-backoffice-users/taon-session-user-details.component';\n\nimport type { TaonBackofficeDetail } from './taon-backoffice-details.resolver';\nimport { TaonSessionDetailsComponent } from './taon-session-details.component';\n\n@Component({\n selector: 'taon-backoffice-details-page',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AsyncPipe,\n forwardRef(() => TaonSessionUserDetailsComponent),\n forwardRef(() => TaonGroupDetailsComponent),\n forwardRef(() => TaonRoleDetailsComponent),\n forwardRef(() => TaonPermissionDetailsComponent),\n forwardRef(() => TaonSessionDetailsComponent),\n ],\n template: `\n @if (detail$ | async; as detail) {\n @switch (detail.kind) {\n @case ('session') {\n <h2>Session #{{ detail.entity.id }}</h2>\n <taon-session-details\n [sessionId]=\"detail.entity.id\"\n [detail]=\"detail.entity\"></taon-session-details>\n }\n @case ('user') {\n <h2>User: {{ detail.entity.username }} (#{{ detail.entity.id }})</h2>\n <taon-session-user-details\n [user]=\"detail.entity\"></taon-session-user-details>\n }\n @case ('group') {\n <h2>Group: {{ detail.entity.name }} (#{{ detail.entity.id }})</h2>\n <taon-group-details [group]=\"detail.entity\"></taon-group-details>\n }\n @case ('role') {\n <h2>Role: {{ detail.entity.name }} (#{{ detail.entity.id }})</h2>\n <taon-role-details [role]=\"detail.entity\"></taon-role-details>\n }\n @case ('permission') {\n <h2>\n Permission: {{ detail.entity.name }} (#{{ detail.entity.id }})\n </h2>\n <taon-permission-details\n [permission]=\"detail.entity\"></taon-permission-details>\n }\n }\n }\n `,\n})\nexport class TaonBackofficeDetailsPageComponent {\n readonly detail$ = inject(ActivatedRoute).data.pipe(\n map(data => data['detail'] as TaonBackofficeDetail),\n );\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n inject,\n} from '@angular/core';\nimport { MtxGridColumn } from '@ng-matero/extensions/grid';\nimport { TaonDatatableComponent } from '@taon-dev/ui/websql';\n\nimport { TaonBackofficeNavigationService } from '../../taon-session/taon-session-backoffice/taon-backoffice-navigation.service';\nimport { TaonSessionUserApiService } from '../taon-session-user-api.service';\nimport type { TaonSessionUserEntity } from '../taon-session-user.entity';\n\nimport { TaonSessionUserDetailsComponent } from './taon-session-user-details.component';\n\n@Component({\n selector: 'app-taon-session-backoffice-users',\n templateUrl: './taon-session-backoffice-users.component.html',\n styleUrls: ['./taon-session-backoffice-users.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n TaonDatatableComponent,\n forwardRef(() => TaonSessionUserDetailsComponent),\n ],\n providers: [TaonSessionUserApiService, TaonBackofficeNavigationService],\n})\nexport class TaonSessionBackofficeUsersComponent {\n readonly userApiService = inject(TaonSessionUserApiService);\n\n readonly navigation = inject(TaonBackofficeNavigationService);\n\n public get crud() {\n return this.userApiService.taonSessionUserController;\n }\n\n readonly columns: MtxGridColumn[] = [\n { header: 'ID', field: 'id', sortable: true, showExpand: true },\n { header: 'Username', field: 'username', sortable: true },\n {\n header: 'Actions',\n field: 'actions',\n type: 'button',\n buttons: [\n {\n type: 'icon',\n icon: 'open_in_new',\n tooltip: 'User details',\n click: (user: TaonSessionUserEntity) =>\n this.navigation.openDetails('user', user.id),\n },\n ],\n },\n ];\n\n add(): void {}\n}\n","<taon-datatable\n [entityCrudController]=\"crud\"\n [columns]=\"columns\"\n [allowedColumns]=\"['id', 'username']\"\n searchMode=\"advanced\"\n (addingItem)=\"add()\"\n [expansionTemplate]=\"expansionTemplate\">\n</taon-datatable>\n<ng-template #expansionTemplate let-user>\n <taon-session-user-details [user]=\"user\"></taon-session-user-details>\n</ng-template>\n","//#region imports\nimport { Routes } from '@angular/router';\nimport { TaonSessionUserApiService } from '../taon-session-user-api.service';\nimport { taonBackofficeDetailsResolver } from '../../taon-session/taon-session-backoffice/taon-backoffice-details.resolver';\n//#endregion\n\nexport const TaonSessionBackofficeUsersRoutes: Routes = [\n {\n path: '',\n pathMatch: 'full',\n loadComponent: () =>\n import('./taon-session-backoffice-users.component').then(\n m => m.TaonSessionBackofficeUsersComponent,\n ),\n },\n {\n path: ':id',\n data: { kind: 'user', hideInNavigation: true },\n providers: [TaonSessionUserApiService],\n resolve: { detail: taonBackofficeDetailsResolver },\n loadComponent: () =>\n import('../../taon-session/taon-session-backoffice/taon-backoffice-details-page.component').then(\n m => m.TaonBackofficeDetailsPageComponent,\n ),\n },\n];\n\n/**\n * By default exporting TaonSessionBackofficeUsersRoutes,\n * the command `taon generate:app:routes`\n * will automatically add them to the root routes in ./src/app.ts.\n */\n// export default TaonSessionBackofficeUsersRoutes;\n","//#region imports\nimport { Routes } from '@angular/router';\nimport { adminLazyRoute } from '@taon-dev/ui/websql';\n//#endregion\n\nexport const TaonProfilePictureRoutes: Routes = [\n {\n path: '',\n loadComponent: () =>\n import('./taon-profile-picture.component').then(m => m.TaonProfilePictureComponent),\n\n children: [\n // adminLazyRoute({\n // path: 'dashboard',\n // menuItem: 'Dashboard',\n // icon: 'dashboard',\n // expandable: false,\n // loader: () =>\n // import('./anothermodule.routes').then(m => m.DashboardRoutes),\n // }),\n ],\n },\n];\n\n/**\n * By default exporting TaonProfilePictureRoutes,\n * the command `taon generate:app:routes`\n * will automatically add them to the root routes in ./src/app.ts.\n */\n// export default TaonProfilePictureRoutes;","// @ts-nocheck\n// This file is auto-generated during init process. Do not modify.\n// This disable this auto generate file.\n// set property \"shouldGenerateAutogenIndexFile: false\" \n// in taon.jsonc of your project. \nexport * from './build-info._auto-generated_'; \nexport * from './my-organization-proj'; \nexport * from './start-cli'; \nexport * from './taon-audit-events/taon-audit-events-api.service'; // @browser\nexport * from './taon-audit-events/taon-audit-events.abstract.context'; \nexport * from './taon-audit-events/taon-audit-events.constants'; \nexport * from './taon-audit-events/taon-audit-events.controller'; \nexport * from './taon-audit-events/taon-audit-events.entity'; \nexport * from './taon-audit-events/taon-audit-events.middleware'; \nexport * from './taon-audit-events/taon-audit-events.models'; \nexport * from './taon-audit-events/taon-audit-events.provider'; \nexport * from './taon-audit-events/taon-audit-events.repository'; \nexport * from './taon-audit-events/taon-audit-events.subscriber'; \nexport * from './taon-audit-events/taon-audit-events.utils'; \nexport * from './taon-auth-context/taon-auth-context.abstract.context'; \nexport * from './taon-auth-context/taon-auth-context.entity'; \nexport * from './taon-auth-context/taon-auth-context.repository'; \nexport * from './taon-authorization-backoffice/taon-authorization-backoffice.component'; // @browser\nexport * from './taon-authorization-backoffice/taon-authorization-backoffice.models'; \nexport * from './taon-authorization-backoffice/taon-authorization-backoffice.routes'; // @browser\nexport * from './taon-group/taon-group-api.service'; // @browser\nexport * from './taon-group/taon-group-role.entity'; \nexport * from './taon-group/taon-group-role.repository'; \nexport * from './taon-group/taon-group.abstract.context'; \nexport * from './taon-group/taon-group.constants'; \nexport * from './taon-group/taon-group.controller'; \nexport * from './taon-group/taon-group.entity'; \nexport * from './taon-group/taon-group.middleware'; \nexport * from './taon-group/taon-group.provider'; \nexport * from './taon-group/taon-group.repository'; \nexport * from './taon-notification/taon-notification-api.service'; // @browser\nexport * from './taon-notification/taon-notification-recipient.entity'; \nexport * from './taon-notification/taon-notification.abstract.context'; \nexport * from './taon-notification/taon-notification.constants'; \nexport * from './taon-notification/taon-notification.controller'; \nexport * from './taon-notification/taon-notification.entity'; \nexport * from './taon-notification/taon-notification.middleware'; \nexport * from './taon-notification/taon-notification.models'; \nexport * from './taon-notification/taon-notification.provider'; \nexport * from './taon-notification/taon-notification.repository'; \nexport * from './taon-notification/taon-notification.subscriber'; \nexport * from './taon-notification/taon-notification.utils'; \nexport * from './taon-permission/taon-permission-api.service'; // @browser\nexport * from './taon-permission/taon-permission.abstract.context'; \nexport * from './taon-permission/taon-permission.constants'; \nexport * from './taon-permission/taon-permission.controller'; \nexport * from './taon-permission/taon-permission.entity'; \nexport * from './taon-permission/taon-permission.middleware'; \nexport * from './taon-permission/taon-permission.models'; \nexport * from './taon-permission/taon-permission.provider'; \nexport * from './taon-permission/taon-permission.repository'; \nexport * from './taon-permission/taon-permission.subscriber'; \nexport * from './taon-permission/taon-permission.utils'; \nexport * from './taon-role/taon-role-api.service'; // @browser\nexport * from './taon-role/taon-role-permission.entity'; \nexport * from './taon-role/taon-role-permission.repository'; \nexport * from './taon-role/taon-role.abstract.context'; \nexport * from './taon-role/taon-role.constants'; \nexport * from './taon-role/taon-role.controller'; \nexport * from './taon-role/taon-role.entity'; \nexport * from './taon-role/taon-role.models'; \nexport * from './taon-role/taon-role.provider'; \nexport * from './taon-role/taon-role.repository'; \nexport * from './taon-session/taon-session.abstract.context'; \nexport * from './taon-session/taon-session.api.service'; // @browser\nexport * from './taon-session/taon-session.config.service'; // @browser\nexport * from './taon-session/taon-session.controller'; \nexport * from './taon-session/taon-session.entity'; \nexport * from './taon-session/taon-session.kv.repository'; \nexport * from './taon-session/taon-session.middleware'; \nexport * from './taon-session/taon-session.models'; \nexport * from './taon-session/taon-session.provider'; \nexport * from './taon-session/taon-session.repository'; \nexport * from './taon-session/taon-session.state.service'; // @browser\nexport * from './taon-session/taon-session.utils'; \nexport * from './taon-session/taon-session.validators'; \nexport * from './taon-session-user/taon-session-user-api.service'; // @browser\nexport * from './taon-session-user/taon-session-user-group.entity'; \nexport * from './taon-session-user/taon-session-user-group.repository'; \nexport * from './taon-session-user/taon-session-user-identity.entity'; \nexport * from './taon-session-user/taon-session-user-identity.repository'; \nexport * from './taon-session-user/taon-session-user-role.entity'; \nexport * from './taon-session-user/taon-session-user.abstract.context'; \nexport * from './taon-session-user/taon-session-user.constants'; \nexport * from './taon-session-user/taon-session-user.controller'; \nexport * from './taon-session-user/taon-session-user.entity'; \nexport * from './taon-session-user/taon-session-user.middleware'; \nexport * from './taon-session-user/taon-session-user.models'; \nexport * from './taon-session-user/taon-session-user.provider'; \nexport * from './taon-session-user/taon-session-user.repository'; \nexport * from './taon-session-user/taon-session-user.subscriber'; \nexport * from './taon-session-user/taon-session-user.utils'; \nexport * from './taon-group/taon-group-backoffice/taon-group-backoffice.component'; // @browser\nexport * from './taon-group/taon-group-backoffice/taon-group-backoffice.models'; \nexport * from './taon-group/taon-group-backoffice/taon-group-backoffice.routes'; // @browser\nexport * from './taon-group/taon-group-backoffice/taon-group-details.component'; // @browser\nexport * from './taon-group/taon-group-chooser/taon-group-chooser.component'; // @browser\nexport * from './taon-permission/taon-permission-backoffice/taon-permission-backoffice.component'; // @browser\nexport * from './taon-permission/taon-permission-backoffice/taon-permission-backoffice.models'; \nexport * from './taon-permission/taon-permission-backoffice/taon-permission-backoffice.routes'; // @browser\nexport * from './taon-permission/taon-permission-backoffice/taon-permission-details.component'; // @browser\nexport * from './taon-permission/taon-permission-chooser/taon-permission-chooser.component'; // @browser\nexport * from './taon-permission/taon-permission-view-edit/taon-permission-view-edit.component'; // @browser\nexport * from './taon-role/taon-role-backoffice/taon-role-backoffice.component'; // @browser\nexport * from './taon-role/taon-role-backoffice/taon-role-backoffice.models'; \nexport * from './taon-role/taon-role-backoffice/taon-role-backoffice.routes'; // @browser\nexport * from './taon-role/taon-role-backoffice/taon-role-details.component'; // @browser\nexport * from './taon-role/taon-role-chooser/taon-role-chooser.component'; // @browser\nexport * from './taon-session/taon-profile/taon-profile.abstract.context'; \nexport * from './taon-session/taon-profile/taon-profile.api.service'; // @browser\nexport * from './taon-session/taon-profile/taon-profile.config.service'; // @browser\nexport * from './taon-session/taon-profile/taon-profile.constants'; \nexport * from './taon-session/taon-profile/taon-profile.controller'; \nexport * from './taon-session/taon-profile/taon-profile.entity'; \nexport * from './taon-session/taon-profile/taon-profile.kv.repository'; \nexport * from './taon-session/taon-profile/taon-profile.models'; \nexport * from './taon-session/taon-profile/taon-profile.provider'; \nexport * from './taon-session/taon-session/taon-session.component'; // @browser\nexport * from './taon-session/taon-session-backoffice/taon-backoffice-details-page.component'; // @browser\nexport * from './taon-session/taon-session-backoffice/taon-backoffice-details.resolver'; // @browser\nexport * from './taon-session/taon-session-backoffice/taon-backoffice-navigation.service'; // @browser\nexport * from './taon-session/taon-session-backoffice/taon-session-backoffice.api.service'; // @browser\nexport * from './taon-session/taon-session-backoffice/taon-session-backoffice.component'; // @browser\nexport * from './taon-session/taon-session-backoffice/taon-session-backoffice.controller'; \nexport * from './taon-session/taon-session-backoffice/taon-session-backoffice.models'; \nexport * from './taon-session/taon-session-backoffice/taon-session-backoffice.routes'; // @browser\nexport * from './taon-session/taon-session-backoffice/taon-session-details.component'; // @browser\nexport * from './taon-session/taon-session-button/taon-session-button.component'; // @browser\nexport * from './taon-session-user/taon-session-backoffice-users/taon-session-backoffice-users.component'; // @browser\nexport * from './taon-session-user/taon-session-backoffice-users/taon-session-backoffice-users.models'; \nexport * from './taon-session-user/taon-session-backoffice-users/taon-session-backoffice-users.routes'; // @browser\nexport * from './taon-session-user/taon-session-backoffice-users/taon-session-user-details.component'; // @browser\nexport * from './taon-session/taon-profile/taon-profile-picture/taon-profile-picture.component'; // @browser\nexport * from './taon-session/taon-profile/taon-profile-picture/taon-profile-picture.models'; \nexport * from './taon-session/taon-profile/taon-profile-picture/taon-profile-picture.routes'; // @browser\nexport * from './taon-session/taon-session/social-buttons/google-login-register-button.component'; // @browser\nexport * from './taon-session/taon-session/taon-session-profile/taon-session-profile.component'; // @browser\nexport * from './taon-session/taon-session/taon-session-profile/taon-session-profile.models'; ","export * from './migrations';\nexport * from './env';\nexport * from './index._auto-generated_';\n/* */ \nexport default {};\n\nexport const DEFAULT_SESSION_PASSWORD = 'ddd';\n\nexport const DEFAULT_SESSION_EMAIL = 'test@test.com';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["t","i1","signal","catchError","map","i6","i7","i2","i3","i5"],"mappings":"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"}