emilsoftware-utilities 2.0.0-dev.8 → 2.0.0-dev.81

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 (920) hide show
  1. package/README.MD +323 -38
  2. package/dist/ContractGenerator.d.ts +4 -3
  3. package/dist/ContractGenerator.js +15 -5
  4. package/dist/ContractGenerator.js.map +1 -1
  5. package/dist/DailyFileTransport.d.ts +21 -0
  6. package/dist/DailyFileTransport.js +74 -0
  7. package/dist/DailyFileTransport.js.map +1 -0
  8. package/dist/DatabaseUpdater.js +32 -29
  9. package/dist/DatabaseUpdater.js.map +1 -1
  10. package/dist/EmilsoftwareModule.d.ts +15 -1
  11. package/dist/EmilsoftwareModule.js +1 -1
  12. package/dist/EmilsoftwareModule.js.map +1 -1
  13. package/dist/ExecutionTimeLogger.d.ts +2 -2
  14. package/dist/ExecutionTimeLogger.js +5 -4
  15. package/dist/ExecutionTimeLogger.js.map +1 -1
  16. package/dist/Logger.d.ts +22 -11
  17. package/dist/Logger.js +132 -119
  18. package/dist/Logger.js.map +1 -1
  19. package/dist/Orm.d.ts +32 -6
  20. package/dist/Orm.js +148 -38
  21. package/dist/Orm.js.map +1 -1
  22. package/dist/RoutesLoggerMiddleware.js.map +1 -1
  23. package/dist/Utilities.d.ts +18 -8
  24. package/dist/Utilities.js +143 -37
  25. package/dist/Utilities.js.map +1 -1
  26. package/dist/accessi/client/admin/index.d.ts +18 -0
  27. package/dist/accessi/client/admin/index.js +58 -0
  28. package/dist/accessi/client/admin/index.js.map +1 -0
  29. package/dist/accessi/client/createAccessiClient.d.ts +21 -0
  30. package/dist/accessi/client/createAccessiClient.js +31 -0
  31. package/dist/accessi/client/createAccessiClient.js.map +1 -0
  32. package/dist/accessi/client/generated/admin.d.ts +621 -0
  33. package/dist/accessi/client/generated/admin.js +591 -0
  34. package/dist/accessi/client/generated/admin.js.map +1 -0
  35. package/dist/accessi/client/generated/public.d.ts +121 -0
  36. package/dist/accessi/client/generated/public.js +119 -0
  37. package/dist/accessi/client/generated/public.js.map +1 -0
  38. package/dist/accessi/client/generated/service.d.ts +53 -0
  39. package/dist/accessi/client/generated/service.js +63 -0
  40. package/dist/accessi/client/generated/service.js.map +1 -0
  41. package/dist/accessi/client/index.d.ts +44 -0
  42. package/dist/accessi/client/index.js +99 -0
  43. package/dist/accessi/client/index.js.map +1 -0
  44. package/dist/accessi/client/public/index.d.ts +18 -0
  45. package/dist/accessi/client/public/index.js +58 -0
  46. package/dist/accessi/client/public/index.js.map +1 -0
  47. package/dist/accessi/client/service/index.d.ts +17 -0
  48. package/dist/accessi/client/service/index.js +57 -0
  49. package/dist/accessi/client/service/index.js.map +1 -0
  50. package/dist/accessi/console/index.d.ts +15 -0
  51. package/dist/accessi/console/index.js +25 -0
  52. package/dist/accessi/console/index.js.map +1 -0
  53. package/dist/accessi/contracts/dtos.d.ts +8 -0
  54. package/dist/accessi/contracts/dtos.js +25 -0
  55. package/dist/accessi/contracts/dtos.js.map +1 -0
  56. package/dist/accessi/contracts/index.d.ts +25 -0
  57. package/dist/accessi/contracts/index.js +28 -0
  58. package/dist/accessi/contracts/index.js.map +1 -0
  59. package/dist/accessi/openapi/index.d.ts +2 -0
  60. package/dist/accessi/openapi/index.js +19 -0
  61. package/dist/accessi/openapi/index.js.map +1 -0
  62. package/dist/accessi/resource-server/core.d.ts +6 -0
  63. package/dist/accessi/resource-server/core.js +23 -0
  64. package/dist/accessi/resource-server/core.js.map +1 -0
  65. package/dist/accessi/resource-server/errors.d.ts +10 -0
  66. package/dist/accessi/resource-server/errors.js +19 -0
  67. package/dist/accessi/resource-server/errors.js.map +1 -0
  68. package/dist/accessi/resource-server/express.d.ts +17 -0
  69. package/dist/accessi/resource-server/express.js +87 -0
  70. package/dist/accessi/resource-server/express.js.map +1 -0
  71. package/dist/accessi/resource-server/index.d.ts +3 -0
  72. package/dist/accessi/resource-server/index.js +20 -0
  73. package/dist/accessi/resource-server/index.js.map +1 -0
  74. package/dist/accessi/resource-server/introspection.d.ts +16 -0
  75. package/dist/accessi/resource-server/introspection.js +115 -0
  76. package/dist/accessi/resource-server/introspection.js.map +1 -0
  77. package/dist/accessi/resource-server/keys.d.ts +11 -0
  78. package/dist/accessi/resource-server/keys.js +22 -0
  79. package/dist/accessi/resource-server/keys.js.map +1 -0
  80. package/dist/accessi/resource-server/nest.d.ts +9 -0
  81. package/dist/accessi/resource-server/nest.js +75 -0
  82. package/dist/accessi/resource-server/nest.js.map +1 -0
  83. package/dist/accessi/resource-server/runtime.d.ts +27 -0
  84. package/dist/accessi/resource-server/runtime.js +179 -0
  85. package/dist/accessi/resource-server/runtime.js.map +1 -0
  86. package/dist/accessi/resource-server/token.d.ts +23 -0
  87. package/dist/accessi/resource-server/token.js +276 -0
  88. package/dist/accessi/resource-server/token.js.map +1 -0
  89. package/dist/accessi/resource-server/types.d.ts +114 -0
  90. package/dist/accessi/resource-server/types.js +3 -0
  91. package/dist/accessi/resource-server/types.js.map +1 -0
  92. package/dist/accessi/server/index.d.ts +13 -0
  93. package/dist/accessi/server/index.js +33 -0
  94. package/dist/accessi/server/index.js.map +1 -0
  95. package/dist/accessi/server/standalone.d.ts +39 -0
  96. package/dist/accessi/server/standalone.js +191 -0
  97. package/dist/accessi/server/standalone.js.map +1 -0
  98. package/dist/accessi/server/tenantStores.d.ts +74 -0
  99. package/dist/accessi/server/tenantStores.js +84 -0
  100. package/dist/accessi/server/tenantStores.js.map +1 -0
  101. package/dist/accessi/server/tenants.d.ts +186 -0
  102. package/dist/accessi/server/tenants.js +357 -0
  103. package/dist/accessi/server/tenants.js.map +1 -0
  104. package/dist/accessi/ui/index.d.ts +13 -0
  105. package/dist/accessi/ui/index.js +19 -0
  106. package/dist/accessi/ui/index.js.map +1 -0
  107. package/dist/accessi-module/AccessiModule.d.ts +225 -0
  108. package/dist/accessi-module/AccessiModule.js +49 -5
  109. package/dist/accessi-module/AccessiModule.js.map +1 -1
  110. package/dist/accessi-module/Console/accessiFetch.d.ts +59 -0
  111. package/dist/accessi-module/Console/accessiFetch.js +178 -0
  112. package/dist/accessi-module/Console/accessiFetch.js.map +1 -0
  113. package/dist/accessi-module/Console/console.css +774 -0
  114. package/dist/accessi-module/Console/console.d.ts +1 -0
  115. package/dist/accessi-module/Console/console.js +4173 -0
  116. package/dist/accessi-module/Console/console.js.map +1 -0
  117. package/dist/accessi-module/Console/generated/emilsoftware-utilities.d.ts +781 -0
  118. package/dist/accessi-module/Console/generated/emilsoftware-utilities.js +746 -0
  119. package/dist/accessi-module/Console/generated/emilsoftware-utilities.js.map +1 -0
  120. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.d.ts +39 -0
  121. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.js +3 -0
  122. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.js.map +1 -0
  123. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.d.ts +16 -0
  124. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.js +17 -0
  125. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.js.map +1 -0
  126. package/dist/accessi-module/Console/generated/model/accessiIntrospectionResultDto.d.ts +16 -0
  127. package/dist/accessi-module/Console/generated/model/accessiIntrospectionResultDto.js +3 -0
  128. package/dist/accessi-module/Console/generated/model/accessiIntrospectionResultDto.js.map +1 -0
  129. package/dist/accessi-module/Console/generated/model/actionResponse.d.ts +12 -0
  130. package/dist/accessi-module/Console/generated/model/actionResponse.js +9 -0
  131. package/dist/accessi-module/Console/generated/model/actionResponse.js.map +1 -0
  132. package/dist/accessi-module/Console/generated/model/adminBootstrapStatusResponse.d.ts +14 -0
  133. package/dist/accessi-module/Console/generated/model/adminBootstrapStatusResponse.js +3 -0
  134. package/dist/accessi-module/Console/generated/model/adminBootstrapStatusResponse.js.map +1 -0
  135. package/dist/accessi-module/Console/generated/model/adminBootstrapStatusResult.d.ts +10 -0
  136. package/dist/accessi-module/Console/generated/model/adminBootstrapStatusResult.js +9 -0
  137. package/dist/accessi-module/Console/generated/model/adminBootstrapStatusResult.js.map +1 -0
  138. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.d.ts +11 -0
  139. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.js +3 -0
  140. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.js.map +1 -0
  141. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.d.ts +10 -0
  142. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.js +9 -0
  143. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.js.map +1 -0
  144. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.d.ts +10 -0
  145. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.js +3 -0
  146. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.js.map +1 -0
  147. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.d.ts +19 -0
  148. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.js +9 -0
  149. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.js.map +1 -0
  150. package/dist/accessi-module/Console/generated/model/bootstrapAdminRequest.d.ts +17 -0
  151. package/dist/accessi-module/Console/generated/model/bootstrapAdminRequest.js +9 -0
  152. package/dist/accessi-module/Console/generated/model/bootstrapAdminRequest.js.map +1 -0
  153. package/dist/accessi-module/Console/generated/model/bootstrapAdminResponse.d.ts +14 -0
  154. package/dist/accessi-module/Console/generated/model/bootstrapAdminResponse.js +3 -0
  155. package/dist/accessi-module/Console/generated/model/bootstrapAdminResponse.js.map +1 -0
  156. package/dist/accessi-module/Console/generated/model/bootstrapAdminResultDto.d.ts +13 -0
  157. package/dist/accessi-module/Console/generated/model/bootstrapAdminResultDto.js +9 -0
  158. package/dist/accessi-module/Console/generated/model/bootstrapAdminResultDto.js.map +1 -0
  159. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.d.ts +14 -0
  160. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.js +9 -0
  161. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.js.map +1 -0
  162. package/dist/accessi-module/Console/generated/model/consoleEntryExchangeRequest.d.ts +10 -0
  163. package/dist/accessi-module/Console/generated/model/consoleEntryExchangeRequest.js +9 -0
  164. package/dist/accessi-module/Console/generated/model/consoleEntryExchangeRequest.js.map +1 -0
  165. package/dist/accessi-module/Console/generated/model/consoleEntrySessionResponse.d.ts +14 -0
  166. package/dist/accessi-module/Console/generated/model/consoleEntrySessionResponse.js +3 -0
  167. package/dist/accessi-module/Console/generated/model/consoleEntrySessionResponse.js.map +1 -0
  168. package/dist/accessi-module/Console/generated/model/consoleEntrySessionResult.d.ts +10 -0
  169. package/dist/accessi-module/Console/generated/model/consoleEntrySessionResult.js +3 -0
  170. package/dist/accessi-module/Console/generated/model/consoleEntrySessionResult.js.map +1 -0
  171. package/dist/accessi-module/Console/generated/model/consoleEntryTicketResponse.d.ts +14 -0
  172. package/dist/accessi-module/Console/generated/model/consoleEntryTicketResponse.js +3 -0
  173. package/dist/accessi-module/Console/generated/model/consoleEntryTicketResponse.js.map +1 -0
  174. package/dist/accessi-module/Console/generated/model/consoleEntryTicketResult.d.ts +12 -0
  175. package/dist/accessi-module/Console/generated/model/consoleEntryTicketResult.js +9 -0
  176. package/dist/accessi-module/Console/generated/model/consoleEntryTicketResult.js.map +1 -0
  177. package/dist/accessi-module/Console/generated/model/consoleEntryTokenResult.d.ts +12 -0
  178. package/dist/accessi-module/Console/generated/model/consoleEntryTokenResult.js +9 -0
  179. package/dist/accessi-module/Console/generated/model/consoleEntryTokenResult.js.map +1 -0
  180. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.d.ts +13 -0
  181. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.js +9 -0
  182. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.js.map +1 -0
  183. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.d.ts +13 -0
  184. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.js +9 -0
  185. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.js.map +1 -0
  186. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.d.ts +18 -0
  187. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.js +3 -0
  188. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.js.map +1 -0
  189. package/dist/accessi-module/Console/generated/model/createFilterTypeRequest.d.ts +23 -0
  190. package/dist/accessi-module/Console/generated/model/createFilterTypeRequest.js +3 -0
  191. package/dist/accessi-module/Console/generated/model/createFilterTypeRequest.js.map +1 -0
  192. package/dist/accessi-module/Console/generated/model/createFilterTypeRequestFlgEnabled.d.ts +14 -0
  193. package/dist/accessi-module/Console/generated/model/createFilterTypeRequestFlgEnabled.js +15 -0
  194. package/dist/accessi-module/Console/generated/model/createFilterTypeRequestFlgEnabled.js.map +1 -0
  195. package/dist/accessi-module/Console/generated/model/createMenuGroupRequest.d.ts +22 -0
  196. package/dist/accessi-module/Console/generated/model/createMenuGroupRequest.js +9 -0
  197. package/dist/accessi-module/Console/generated/model/createMenuGroupRequest.js.map +1 -0
  198. package/dist/accessi-module/Console/generated/model/createMenuRequest.d.ts +52 -0
  199. package/dist/accessi-module/Console/generated/model/createMenuRequest.js +9 -0
  200. package/dist/accessi-module/Console/generated/model/createMenuRequest.js.map +1 -0
  201. package/dist/accessi-module/Console/generated/model/createMenuTypeRequest.d.ts +18 -0
  202. package/dist/accessi-module/Console/generated/model/createMenuTypeRequest.js +9 -0
  203. package/dist/accessi-module/Console/generated/model/createMenuTypeRequest.js.map +1 -0
  204. package/dist/accessi-module/Console/generated/model/createScopeRequest.d.ts +18 -0
  205. package/dist/accessi-module/Console/generated/model/createScopeRequest.js +9 -0
  206. package/dist/accessi-module/Console/generated/model/createScopeRequest.js.map +1 -0
  207. package/dist/accessi-module/Console/generated/model/createServiceTokenRequest.d.ts +16 -0
  208. package/dist/accessi-module/Console/generated/model/createServiceTokenRequest.js +9 -0
  209. package/dist/accessi-module/Console/generated/model/createServiceTokenRequest.js.map +1 -0
  210. package/dist/accessi-module/Console/generated/model/createServiceTokenResponse.d.ts +14 -0
  211. package/dist/accessi-module/Console/generated/model/createServiceTokenResponse.js +3 -0
  212. package/dist/accessi-module/Console/generated/model/createServiceTokenResponse.js.map +1 -0
  213. package/dist/accessi-module/Console/generated/model/errorResponse.d.ts +18 -0
  214. package/dist/accessi-module/Console/generated/model/errorResponse.js +9 -0
  215. package/dist/accessi-module/Console/generated/model/errorResponse.js.map +1 -0
  216. package/dist/accessi-module/Console/generated/model/exchangeFederatedIdentityRequest.d.ts +12 -0
  217. package/dist/accessi-module/Console/generated/model/exchangeFederatedIdentityRequest.js +9 -0
  218. package/dist/accessi-module/Console/generated/model/exchangeFederatedIdentityRequest.js.map +1 -0
  219. package/dist/accessi-module/Console/generated/model/exportAuditOrder.d.ts +11 -0
  220. package/dist/accessi-module/Console/generated/model/exportAuditOrder.js +15 -0
  221. package/dist/accessi-module/Console/generated/model/exportAuditOrder.js.map +1 -0
  222. package/dist/accessi-module/Console/generated/model/exportAuditParams.d.ts +37 -0
  223. package/dist/accessi-module/Console/generated/model/exportAuditParams.js +3 -0
  224. package/dist/accessi-module/Console/generated/model/exportAuditParams.js.map +1 -0
  225. package/dist/accessi-module/Console/generated/model/federatedAuthenticationResultDto.d.ts +15 -0
  226. package/dist/accessi-module/Console/generated/model/federatedAuthenticationResultDto.js +3 -0
  227. package/dist/accessi-module/Console/generated/model/federatedAuthenticationResultDto.js.map +1 -0
  228. package/dist/accessi-module/Console/generated/model/federatedExchangeResponse.d.ts +14 -0
  229. package/dist/accessi-module/Console/generated/model/federatedExchangeResponse.js +3 -0
  230. package/dist/accessi-module/Console/generated/model/federatedExchangeResponse.js.map +1 -0
  231. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.d.ts +14 -0
  232. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.js +3 -0
  233. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.js.map +1 -0
  234. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.d.ts +14 -0
  235. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.js +3 -0
  236. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.js.map +1 -0
  237. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.d.ts +23 -0
  238. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.js +9 -0
  239. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.js.map +1 -0
  240. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.d.ts +14 -0
  241. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.js +3 -0
  242. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.js.map +1 -0
  243. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.d.ts +14 -0
  244. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.js +3 -0
  245. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.js.map +1 -0
  246. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.d.ts +13 -0
  247. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.js +9 -0
  248. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.js.map +1 -0
  249. package/dist/accessi-module/Console/generated/model/filtriUtente.d.ts +32 -0
  250. package/dist/accessi-module/Console/generated/model/filtriUtente.js +9 -0
  251. package/dist/accessi-module/Console/generated/model/filtriUtente.js.map +1 -0
  252. package/dist/accessi-module/Console/generated/model/getFiltriResponse.d.ts +14 -0
  253. package/dist/accessi-module/Console/generated/model/getFiltriResponse.js +3 -0
  254. package/dist/accessi-module/Console/generated/model/getFiltriResponse.js.map +1 -0
  255. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.d.ts +12 -0
  256. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.js +9 -0
  257. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.js.map +1 -0
  258. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.d.ts +14 -0
  259. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.js +3 -0
  260. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.js.map +1 -0
  261. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.d.ts +16 -0
  262. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.js +9 -0
  263. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.js.map +1 -0
  264. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.d.ts +14 -0
  265. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.js +3 -0
  266. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.js.map +1 -0
  267. package/dist/accessi-module/Console/generated/model/getMenuScopesResponse.d.ts +14 -0
  268. package/dist/accessi-module/Console/generated/model/getMenuScopesResponse.js +3 -0
  269. package/dist/accessi-module/Console/generated/model/getMenuScopesResponse.js.map +1 -0
  270. package/dist/accessi-module/Console/generated/model/getMenuTypesResponse.d.ts +14 -0
  271. package/dist/accessi-module/Console/generated/model/getMenuTypesResponse.js +3 -0
  272. package/dist/accessi-module/Console/generated/model/getMenuTypesResponse.js.map +1 -0
  273. package/dist/accessi-module/Console/generated/model/getMenusParams.d.ts +12 -0
  274. package/dist/accessi-module/Console/generated/model/getMenusParams.js +9 -0
  275. package/dist/accessi-module/Console/generated/model/getMenusParams.js.map +1 -0
  276. package/dist/accessi-module/Console/generated/model/getMenusResponse.d.ts +14 -0
  277. package/dist/accessi-module/Console/generated/model/getMenusResponse.js +3 -0
  278. package/dist/accessi-module/Console/generated/model/getMenusResponse.js.map +1 -0
  279. package/dist/accessi-module/Console/generated/model/getRolesResponse.d.ts +14 -0
  280. package/dist/accessi-module/Console/generated/model/getRolesResponse.js +3 -0
  281. package/dist/accessi-module/Console/generated/model/getRolesResponse.js.map +1 -0
  282. package/dist/accessi-module/Console/generated/model/getSchemaResponse.d.ts +14 -0
  283. package/dist/accessi-module/Console/generated/model/getSchemaResponse.js +3 -0
  284. package/dist/accessi-module/Console/generated/model/getSchemaResponse.js.map +1 -0
  285. package/dist/accessi-module/Console/generated/model/getScopesResponse.d.ts +14 -0
  286. package/dist/accessi-module/Console/generated/model/getScopesResponse.js +3 -0
  287. package/dist/accessi-module/Console/generated/model/getScopesResponse.js.map +1 -0
  288. package/dist/accessi-module/Console/generated/model/getServiceTokensParams.d.ts +12 -0
  289. package/dist/accessi-module/Console/generated/model/getServiceTokensParams.js +9 -0
  290. package/dist/accessi-module/Console/generated/model/getServiceTokensParams.js.map +1 -0
  291. package/dist/accessi-module/Console/generated/model/getServiceTokensResponse.d.ts +14 -0
  292. package/dist/accessi-module/Console/generated/model/getServiceTokensResponse.js +3 -0
  293. package/dist/accessi-module/Console/generated/model/getServiceTokensResponse.js.map +1 -0
  294. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.d.ts +10 -0
  295. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.js +9 -0
  296. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.js.map +1 -0
  297. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.d.ts +14 -0
  298. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.js +3 -0
  299. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.js.map +1 -0
  300. package/dist/accessi-module/Console/generated/model/getUserRolesAndGrantsParams.d.ts +12 -0
  301. package/dist/accessi-module/Console/generated/model/getUserRolesAndGrantsParams.js +9 -0
  302. package/dist/accessi-module/Console/generated/model/getUserRolesAndGrantsParams.js.map +1 -0
  303. package/dist/accessi-module/Console/generated/model/getUsersParams.d.ts +32 -0
  304. package/dist/accessi-module/Console/generated/model/getUsersParams.js +9 -0
  305. package/dist/accessi-module/Console/generated/model/getUsersParams.js.map +1 -0
  306. package/dist/accessi-module/Console/generated/model/getUsersResponse.d.ts +14 -0
  307. package/dist/accessi-module/Console/generated/model/getUsersResponse.js +3 -0
  308. package/dist/accessi-module/Console/generated/model/getUsersResponse.js.map +1 -0
  309. package/dist/accessi-module/Console/generated/model/getUsersResult.d.ts +17 -0
  310. package/dist/accessi-module/Console/generated/model/getUsersResult.js +3 -0
  311. package/dist/accessi-module/Console/generated/model/getUsersResult.js.map +1 -0
  312. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.d.ts +12 -0
  313. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.js +9 -0
  314. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.js.map +1 -0
  315. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.d.ts +19 -0
  316. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.js +3 -0
  317. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.js.map +1 -0
  318. package/dist/accessi-module/Console/generated/model/index.d.ts +134 -0
  319. package/dist/accessi-module/Console/generated/model/index.js +151 -0
  320. package/dist/accessi-module/Console/generated/model/index.js.map +1 -0
  321. package/dist/accessi-module/Console/generated/model/introspectAccessiTokenRequest.d.ts +10 -0
  322. package/dist/accessi-module/Console/generated/model/introspectAccessiTokenRequest.js +9 -0
  323. package/dist/accessi-module/Console/generated/model/introspectAccessiTokenRequest.js.map +1 -0
  324. package/dist/accessi-module/Console/generated/model/introspectAccessiTokenResponse.d.ts +14 -0
  325. package/dist/accessi-module/Console/generated/model/introspectAccessiTokenResponse.js +3 -0
  326. package/dist/accessi-module/Console/generated/model/introspectAccessiTokenResponse.js.map +1 -0
  327. package/dist/accessi-module/Console/generated/model/issuedServiceTokenDto.d.ts +30 -0
  328. package/dist/accessi-module/Console/generated/model/issuedServiceTokenDto.js +9 -0
  329. package/dist/accessi-module/Console/generated/model/issuedServiceTokenDto.js.map +1 -0
  330. package/dist/accessi-module/Console/generated/model/loginAsRequest.d.ts +10 -0
  331. package/dist/accessi-module/Console/generated/model/loginAsRequest.js +9 -0
  332. package/dist/accessi-module/Console/generated/model/loginAsRequest.js.map +1 -0
  333. package/dist/accessi-module/Console/generated/model/loginAsResponse.d.ts +14 -0
  334. package/dist/accessi-module/Console/generated/model/loginAsResponse.js +3 -0
  335. package/dist/accessi-module/Console/generated/model/loginAsResponse.js.map +1 -0
  336. package/dist/accessi-module/Console/generated/model/loginAsResult.d.ts +16 -0
  337. package/dist/accessi-module/Console/generated/model/loginAsResult.js +9 -0
  338. package/dist/accessi-module/Console/generated/model/loginAsResult.js.map +1 -0
  339. package/dist/accessi-module/Console/generated/model/loginRequest.d.ts +14 -0
  340. package/dist/accessi-module/Console/generated/model/loginRequest.js +9 -0
  341. package/dist/accessi-module/Console/generated/model/loginRequest.js.map +1 -0
  342. package/dist/accessi-module/Console/generated/model/loginResponse.d.ts +14 -0
  343. package/dist/accessi-module/Console/generated/model/loginResponse.js +3 -0
  344. package/dist/accessi-module/Console/generated/model/loginResponse.js.map +1 -0
  345. package/dist/accessi-module/Console/generated/model/loginResult.d.ts +34 -0
  346. package/dist/accessi-module/Console/generated/model/loginResult.js +3 -0
  347. package/dist/accessi-module/Console/generated/model/loginResult.js.map +1 -0
  348. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.d.ts +12 -0
  349. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.js +9 -0
  350. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.js.map +1 -0
  351. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.d.ts +13 -0
  352. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.js +14 -0
  353. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.js.map +1 -0
  354. package/dist/accessi-module/Console/generated/model/menuEntity.d.ts +32 -0
  355. package/dist/accessi-module/Console/generated/model/menuEntity.js +9 -0
  356. package/dist/accessi-module/Console/generated/model/menuEntity.js.map +1 -0
  357. package/dist/accessi-module/Console/generated/model/menuTypeEntity.d.ts +12 -0
  358. package/dist/accessi-module/Console/generated/model/menuTypeEntity.js +9 -0
  359. package/dist/accessi-module/Console/generated/model/menuTypeEntity.js.map +1 -0
  360. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.d.ts +12 -0
  361. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.js +9 -0
  362. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.js.map +1 -0
  363. package/dist/accessi-module/Console/generated/model/permission.d.ts +12 -0
  364. package/dist/accessi-module/Console/generated/model/permission.js +9 -0
  365. package/dist/accessi-module/Console/generated/model/permission.js.map +1 -0
  366. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.d.ts +51 -0
  367. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.js +9 -0
  368. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.js.map +1 -0
  369. package/dist/accessi-module/Console/generated/model/queryAuditOrder.d.ts +11 -0
  370. package/dist/accessi-module/Console/generated/model/queryAuditOrder.js +15 -0
  371. package/dist/accessi-module/Console/generated/model/queryAuditOrder.js.map +1 -0
  372. package/dist/accessi-module/Console/generated/model/queryAuditParams.d.ts +37 -0
  373. package/dist/accessi-module/Console/generated/model/queryAuditParams.js +3 -0
  374. package/dist/accessi-module/Console/generated/model/queryAuditParams.js.map +1 -0
  375. package/dist/accessi-module/Console/generated/model/refreshTokenRequest.d.ts +10 -0
  376. package/dist/accessi-module/Console/generated/model/refreshTokenRequest.js +9 -0
  377. package/dist/accessi-module/Console/generated/model/refreshTokenRequest.js.map +1 -0
  378. package/dist/accessi-module/Console/generated/model/refreshTokenResponse.d.ts +14 -0
  379. package/dist/accessi-module/Console/generated/model/refreshTokenResponse.js +3 -0
  380. package/dist/accessi-module/Console/generated/model/refreshTokenResponse.js.map +1 -0
  381. package/dist/accessi-module/Console/generated/model/refreshTokenResult.d.ts +13 -0
  382. package/dist/accessi-module/Console/generated/model/refreshTokenResult.js +3 -0
  383. package/dist/accessi-module/Console/generated/model/refreshTokenResult.js.map +1 -0
  384. package/dist/accessi-module/Console/generated/model/registerRequest.d.ts +62 -0
  385. package/dist/accessi-module/Console/generated/model/registerRequest.js +3 -0
  386. package/dist/accessi-module/Console/generated/model/registerRequest.js.map +1 -0
  387. package/dist/accessi-module/Console/generated/model/registerResponse.d.ts +14 -0
  388. package/dist/accessi-module/Console/generated/model/registerResponse.js +3 -0
  389. package/dist/accessi-module/Console/generated/model/registerResponse.js.map +1 -0
  390. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.d.ts +13 -0
  391. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.js +9 -0
  392. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.js.map +1 -0
  393. package/dist/accessi-module/Console/generated/model/revokeTokenRequest.d.ts +10 -0
  394. package/dist/accessi-module/Console/generated/model/revokeTokenRequest.js +9 -0
  395. package/dist/accessi-module/Console/generated/model/revokeTokenRequest.js.map +1 -0
  396. package/dist/accessi-module/Console/generated/model/role.d.ts +15 -0
  397. package/dist/accessi-module/Console/generated/model/role.js +3 -0
  398. package/dist/accessi-module/Console/generated/model/role.js.map +1 -0
  399. package/dist/accessi-module/Console/generated/model/ruoliMenu.d.ts +15 -0
  400. package/dist/accessi-module/Console/generated/model/ruoliMenu.js +3 -0
  401. package/dist/accessi-module/Console/generated/model/ruoliMenu.js.map +1 -0
  402. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.d.ts +16 -0
  403. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.js +17 -0
  404. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.js.map +1 -0
  405. package/dist/accessi-module/Console/generated/model/schemaDdlResult.d.ts +20 -0
  406. package/dist/accessi-module/Console/generated/model/schemaDdlResult.js +3 -0
  407. package/dist/accessi-module/Console/generated/model/schemaDdlResult.js.map +1 -0
  408. package/dist/accessi-module/Console/generated/model/schemaDdlSection.d.ts +12 -0
  409. package/dist/accessi-module/Console/generated/model/schemaDdlSection.js +9 -0
  410. package/dist/accessi-module/Console/generated/model/schemaDdlSection.js.map +1 -0
  411. package/dist/accessi-module/Console/generated/model/scopeEntity.d.ts +12 -0
  412. package/dist/accessi-module/Console/generated/model/scopeEntity.js +9 -0
  413. package/dist/accessi-module/Console/generated/model/scopeEntity.js.map +1 -0
  414. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.d.ts +12 -0
  415. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.js +9 -0
  416. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.js.map +1 -0
  417. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.d.ts +12 -0
  418. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.js +9 -0
  419. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.js.map +1 -0
  420. package/dist/accessi-module/Console/generated/model/serviceTokenDto.d.ts +28 -0
  421. package/dist/accessi-module/Console/generated/model/serviceTokenDto.js +9 -0
  422. package/dist/accessi-module/Console/generated/model/serviceTokenDto.js.map +1 -0
  423. package/dist/accessi-module/Console/generated/model/setMenuScopesRequest.d.ts +10 -0
  424. package/dist/accessi-module/Console/generated/model/setMenuScopesRequest.js +9 -0
  425. package/dist/accessi-module/Console/generated/model/setMenuScopesRequest.js.map +1 -0
  426. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.d.ts +10 -0
  427. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.js +9 -0
  428. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.js.map +1 -0
  429. package/dist/accessi-module/Console/generated/model/setScopeMenusRequest.d.ts +10 -0
  430. package/dist/accessi-module/Console/generated/model/setScopeMenusRequest.js +9 -0
  431. package/dist/accessi-module/Console/generated/model/setScopeMenusRequest.js.map +1 -0
  432. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.d.ts +13 -0
  433. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.js +3 -0
  434. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.js.map +1 -0
  435. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.d.ts +18 -0
  436. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.js +19 -0
  437. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.js.map +1 -0
  438. package/dist/accessi-module/Console/generated/model/setUserPasswordRequest.d.ts +14 -0
  439. package/dist/accessi-module/Console/generated/model/setUserPasswordRequest.js +9 -0
  440. package/dist/accessi-module/Console/generated/model/setUserPasswordRequest.js.map +1 -0
  441. package/dist/accessi-module/Console/generated/model/status.d.ts +12 -0
  442. package/dist/accessi-module/Console/generated/model/status.js +9 -0
  443. package/dist/accessi-module/Console/generated/model/status.js.map +1 -0
  444. package/dist/accessi-module/Console/generated/model/tipoFiltro.d.ts +23 -0
  445. package/dist/accessi-module/Console/generated/model/tipoFiltro.js +3 -0
  446. package/dist/accessi-module/Console/generated/model/tipoFiltro.js.map +1 -0
  447. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.d.ts +14 -0
  448. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.js +15 -0
  449. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.js.map +1 -0
  450. package/dist/accessi-module/Console/generated/model/tokenResult.d.ts +15 -0
  451. package/dist/accessi-module/Console/generated/model/tokenResult.js +3 -0
  452. package/dist/accessi-module/Console/generated/model/tokenResult.js.map +1 -0
  453. package/dist/accessi-module/Console/generated/model/tokenResultType.d.ts +14 -0
  454. package/dist/accessi-module/Console/generated/model/tokenResultType.js +15 -0
  455. package/dist/accessi-module/Console/generated/model/tokenResultType.js.map +1 -0
  456. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.d.ts +18 -0
  457. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.js +3 -0
  458. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.js.map +1 -0
  459. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.d.ts +10 -0
  460. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.js +14 -0
  461. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.js.map +1 -0
  462. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.d.ts +13 -0
  463. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.js +14 -0
  464. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.js.map +1 -0
  465. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.d.ts +10 -0
  466. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.js +9 -0
  467. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.js.map +1 -0
  468. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.d.ts +11 -0
  469. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.js +9 -0
  470. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.js.map +1 -0
  471. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.d.ts +12 -0
  472. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.js +9 -0
  473. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.js.map +1 -0
  474. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequest.d.ts +21 -0
  475. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequest.js +3 -0
  476. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequest.js.map +1 -0
  477. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequestFlgEnabled.d.ts +14 -0
  478. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequestFlgEnabled.js +15 -0
  479. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequestFlgEnabled.js.map +1 -0
  480. package/dist/accessi-module/Console/generated/model/updateMenuGroupRequest.d.ts +17 -0
  481. package/dist/accessi-module/Console/generated/model/updateMenuGroupRequest.js +9 -0
  482. package/dist/accessi-module/Console/generated/model/updateMenuGroupRequest.js.map +1 -0
  483. package/dist/accessi-module/Console/generated/model/updateMenuRequest.d.ts +47 -0
  484. package/dist/accessi-module/Console/generated/model/updateMenuRequest.js +9 -0
  485. package/dist/accessi-module/Console/generated/model/updateMenuRequest.js.map +1 -0
  486. package/dist/accessi-module/Console/generated/model/updateMenuTypeRequest.d.ts +13 -0
  487. package/dist/accessi-module/Console/generated/model/updateMenuTypeRequest.js +9 -0
  488. package/dist/accessi-module/Console/generated/model/updateMenuTypeRequest.js.map +1 -0
  489. package/dist/accessi-module/Console/generated/model/updateScopeRequest.d.ts +13 -0
  490. package/dist/accessi-module/Console/generated/model/updateScopeRequest.js +9 -0
  491. package/dist/accessi-module/Console/generated/model/updateScopeRequest.js.map +1 -0
  492. package/dist/accessi-module/Console/generated/model/userDto.d.ts +88 -0
  493. package/dist/accessi-module/Console/generated/model/userDto.js +3 -0
  494. package/dist/accessi-module/Console/generated/model/userDto.js.map +1 -0
  495. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.d.ts +18 -0
  496. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.js +19 -0
  497. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.js.map +1 -0
  498. package/dist/accessi-module/Console/generated/model/userGrantsDto.d.ts +16 -0
  499. package/dist/accessi-module/Console/generated/model/userGrantsDto.js +3 -0
  500. package/dist/accessi-module/Console/generated/model/userGrantsDto.js.map +1 -0
  501. package/dist/accessi-module/Console/generated/model/userGrantsResponse.d.ts +14 -0
  502. package/dist/accessi-module/Console/generated/model/userGrantsResponse.js +3 -0
  503. package/dist/accessi-module/Console/generated/model/userGrantsResponse.js.map +1 -0
  504. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.d.ts +20 -0
  505. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.js +9 -0
  506. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.js.map +1 -0
  507. package/dist/accessi-module/Console/help.d.ts +13 -0
  508. package/dist/accessi-module/Console/help.js +417 -0
  509. package/dist/accessi-module/Console/help.js.map +1 -0
  510. package/dist/accessi-module/Console/index.html +141 -0
  511. package/dist/accessi-module/Console/wiki.d.ts +52 -0
  512. package/dist/accessi-module/Console/wiki.js +867 -0
  513. package/dist/accessi-module/Console/wiki.js.map +1 -0
  514. package/dist/accessi-module/Controllers/AccessiAuditController.d.ts +16 -0
  515. package/dist/accessi-module/Controllers/AccessiAuditController.js +155 -0
  516. package/dist/accessi-module/Controllers/AccessiAuditController.js.map +1 -0
  517. package/dist/accessi-module/Controllers/AccessiConsoleController.d.ts +25 -0
  518. package/dist/accessi-module/Controllers/AccessiConsoleController.js +169 -0
  519. package/dist/accessi-module/Controllers/AccessiConsoleController.js.map +1 -0
  520. package/dist/accessi-module/Controllers/AccessiIntrospectionController.d.ts +17 -0
  521. package/dist/accessi-module/Controllers/AccessiIntrospectionController.js +102 -0
  522. package/dist/accessi-module/Controllers/AccessiIntrospectionController.js.map +1 -0
  523. package/dist/accessi-module/Controllers/AuthController.d.ts +16 -6
  524. package/dist/accessi-module/Controllers/AuthController.js +435 -85
  525. package/dist/accessi-module/Controllers/AuthController.js.map +1 -1
  526. package/dist/accessi-module/Controllers/ConfiguratorController.d.ts +1 -5
  527. package/dist/accessi-module/Controllers/ConfiguratorController.js +26 -44
  528. package/dist/accessi-module/Controllers/ConfiguratorController.js.map +1 -1
  529. package/dist/accessi-module/Controllers/ConsoleEntryController.d.ts +16 -0
  530. package/dist/accessi-module/Controllers/ConsoleEntryController.js +159 -0
  531. package/dist/accessi-module/Controllers/ConsoleEntryController.js.map +1 -0
  532. package/dist/accessi-module/Controllers/EmailController.d.ts +4 -6
  533. package/dist/accessi-module/Controllers/EmailController.js +13 -15
  534. package/dist/accessi-module/Controllers/EmailController.js.map +1 -1
  535. package/dist/accessi-module/Controllers/FiltriController.d.ts +12 -4
  536. package/dist/accessi-module/Controllers/FiltriController.js +153 -6
  537. package/dist/accessi-module/Controllers/FiltriController.js.map +1 -1
  538. package/dist/accessi-module/Controllers/PermissionController.d.ts +31 -5
  539. package/dist/accessi-module/Controllers/PermissionController.js +559 -66
  540. package/dist/accessi-module/Controllers/PermissionController.js.map +1 -1
  541. package/dist/accessi-module/Controllers/SchemaController.d.ts +9 -0
  542. package/dist/accessi-module/Controllers/SchemaController.js +79 -0
  543. package/dist/accessi-module/Controllers/SchemaController.js.map +1 -0
  544. package/dist/accessi-module/Controllers/ServiceTokenController.d.ts +23 -0
  545. package/dist/accessi-module/Controllers/ServiceTokenController.js +176 -0
  546. package/dist/accessi-module/Controllers/ServiceTokenController.js.map +1 -0
  547. package/dist/accessi-module/Controllers/UserController.d.ts +22 -5
  548. package/dist/accessi-module/Controllers/UserController.js +385 -33
  549. package/dist/accessi-module/Controllers/UserController.js.map +1 -1
  550. package/dist/accessi-module/Dtos/Abilitazione.js.map +1 -1
  551. package/dist/accessi-module/Dtos/AbilitazioneMenu.js +16 -8
  552. package/dist/accessi-module/Dtos/AbilitazioneMenu.js.map +1 -1
  553. package/dist/accessi-module/Dtos/AdminBootstrapDtos.d.ts +26 -0
  554. package/dist/accessi-module/Dtos/AdminBootstrapDtos.js +100 -0
  555. package/dist/accessi-module/Dtos/AdminBootstrapDtos.js.map +1 -0
  556. package/dist/accessi-module/Dtos/AssignPermissionsToUserRequest.js +0 -1
  557. package/dist/accessi-module/Dtos/AssignPermissionsToUserRequest.js.map +1 -1
  558. package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js +1 -2
  559. package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js.map +1 -1
  560. package/dist/accessi-module/Dtos/AuditDtos.d.ts +10 -0
  561. package/dist/accessi-module/Dtos/AuditDtos.js +68 -0
  562. package/dist/accessi-module/Dtos/AuditDtos.js.map +1 -0
  563. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.d.ts +13 -0
  564. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.js +70 -0
  565. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.js.map +1 -0
  566. package/dist/accessi-module/Dtos/BaseResponse.d.ts +22 -0
  567. package/dist/accessi-module/Dtos/BaseResponse.js +106 -1
  568. package/dist/accessi-module/Dtos/BaseResponse.js.map +1 -1
  569. package/dist/accessi-module/Dtos/CatalogDtos.d.ts +64 -0
  570. package/dist/accessi-module/Dtos/CatalogDtos.js +322 -0
  571. package/dist/accessi-module/Dtos/CatalogDtos.js.map +1 -0
  572. package/dist/accessi-module/Dtos/ConfirmResetPasswordRequest.d.ts +3 -0
  573. package/dist/accessi-module/Dtos/ConfirmResetPasswordRequest.js +31 -0
  574. package/dist/accessi-module/Dtos/ConfirmResetPasswordRequest.js.map +1 -0
  575. package/dist/accessi-module/Dtos/ConsoleEntryDtos.d.ts +24 -0
  576. package/dist/accessi-module/Dtos/ConsoleEntryDtos.js +77 -0
  577. package/dist/accessi-module/Dtos/ConsoleEntryDtos.js.map +1 -0
  578. package/dist/accessi-module/Dtos/FederatedExchangeDtos.d.ts +21 -0
  579. package/dist/accessi-module/Dtos/FederatedExchangeDtos.js +74 -0
  580. package/dist/accessi-module/Dtos/FederatedExchangeDtos.js.map +1 -0
  581. package/dist/accessi-module/Dtos/FederatedIdentityDtos.d.ts +69 -0
  582. package/dist/accessi-module/Dtos/FederatedIdentityDtos.js +236 -0
  583. package/dist/accessi-module/Dtos/FederatedIdentityDtos.js.map +1 -0
  584. package/dist/accessi-module/Dtos/FiltriUtente.js +5 -1
  585. package/dist/accessi-module/Dtos/FiltriUtente.js.map +1 -1
  586. package/dist/accessi-module/Dtos/GetGroupsWithMenusResponse.js.map +1 -1
  587. package/dist/accessi-module/Dtos/GetMenusResponse.js +1 -1
  588. package/dist/accessi-module/Dtos/GetMenusResponse.js.map +1 -1
  589. package/dist/accessi-module/Dtos/GetRolesResponse.js.map +1 -1
  590. package/dist/accessi-module/Dtos/GetUserByTokenRequest.d.ts +3 -0
  591. package/dist/accessi-module/Dtos/GetUserByTokenRequest.js +27 -0
  592. package/dist/accessi-module/Dtos/GetUserByTokenRequest.js.map +1 -0
  593. package/dist/accessi-module/Dtos/GetUserByTokenResponse.d.ts +5 -0
  594. package/dist/accessi-module/Dtos/GetUserByTokenResponse.js +27 -0
  595. package/dist/accessi-module/Dtos/GetUserByTokenResponse.js.map +1 -0
  596. package/dist/accessi-module/Dtos/GetUsersResponse.d.ts +1 -1
  597. package/dist/accessi-module/Dtos/GetUsersResponse.js.map +1 -1
  598. package/dist/accessi-module/Dtos/IntrospectionDtos.d.ts +16 -0
  599. package/dist/accessi-module/Dtos/IntrospectionDtos.js +59 -0
  600. package/dist/accessi-module/Dtos/IntrospectionDtos.js.map +1 -0
  601. package/dist/accessi-module/Dtos/LoginAsDtos.d.ts +15 -0
  602. package/dist/accessi-module/Dtos/LoginAsDtos.js +68 -0
  603. package/dist/accessi-module/Dtos/LoginAsDtos.js.map +1 -0
  604. package/dist/accessi-module/Dtos/LoginRequest.d.ts +3 -1
  605. package/dist/accessi-module/Dtos/LoginRequest.js +13 -2
  606. package/dist/accessi-module/Dtos/LoginRequest.js.map +1 -1
  607. package/dist/accessi-module/Dtos/LoginResponse.d.ts +7 -2
  608. package/dist/accessi-module/Dtos/LoginResponse.js +26 -7
  609. package/dist/accessi-module/Dtos/LoginResponse.js.map +1 -1
  610. package/dist/accessi-module/Dtos/MenuItem.js +1 -0
  611. package/dist/accessi-module/Dtos/Permission.d.ts +1 -0
  612. package/dist/accessi-module/Dtos/Permission.js +1 -0
  613. package/dist/accessi-module/Dtos/Permission.js.map +1 -1
  614. package/dist/accessi-module/Dtos/PublicRegisterRequest.d.ts +5 -0
  615. package/dist/accessi-module/Dtos/PublicRegisterRequest.js +15 -0
  616. package/dist/accessi-module/Dtos/PublicRegisterRequest.js.map +1 -0
  617. package/dist/accessi-module/Dtos/RefreshTokenDtos.d.ts +12 -0
  618. package/dist/accessi-module/Dtos/RefreshTokenDtos.js +53 -0
  619. package/dist/accessi-module/Dtos/RefreshTokenDtos.js.map +1 -0
  620. package/dist/accessi-module/Dtos/RegisterRequest.d.ts +2 -4
  621. package/dist/accessi-module/Dtos/RegisterRequest.js +17 -27
  622. package/dist/accessi-module/Dtos/RegisterRequest.js.map +1 -1
  623. package/dist/accessi-module/Dtos/RegisterResponse.d.ts +1 -1
  624. package/dist/accessi-module/Dtos/RegisterResponse.js +3 -3
  625. package/dist/accessi-module/Dtos/RegisterResponse.js.map +1 -1
  626. package/dist/accessi-module/Dtos/RevokeTokenRequest.d.ts +3 -0
  627. package/dist/accessi-module/Dtos/RevokeTokenRequest.js +27 -0
  628. package/dist/accessi-module/Dtos/RevokeTokenRequest.js.map +1 -0
  629. package/dist/accessi-module/Dtos/Role.d.ts +4 -0
  630. package/dist/accessi-module/Dtos/Role.js +4 -0
  631. package/dist/accessi-module/Dtos/Role.js.map +1 -1
  632. package/dist/accessi-module/Dtos/RuoliMenu.js.map +1 -1
  633. package/dist/accessi-module/Dtos/SchemaDtos.d.ts +19 -0
  634. package/dist/accessi-module/Dtos/SchemaDtos.js +84 -0
  635. package/dist/accessi-module/Dtos/SchemaDtos.js.map +1 -0
  636. package/dist/accessi-module/Dtos/ScopeDtos.d.ts +28 -0
  637. package/dist/accessi-module/Dtos/ScopeDtos.js +103 -0
  638. package/dist/accessi-module/Dtos/ScopeDtos.js.map +1 -0
  639. package/dist/accessi-module/Dtos/SendResetPasswordEmailRequest.d.ts +4 -0
  640. package/dist/accessi-module/Dtos/SendResetPasswordEmailRequest.js +36 -0
  641. package/dist/accessi-module/Dtos/SendResetPasswordEmailRequest.js.map +1 -0
  642. package/dist/accessi-module/Dtos/ServiceToken.d.ts +34 -0
  643. package/dist/accessi-module/Dtos/ServiceToken.js +128 -0
  644. package/dist/accessi-module/Dtos/ServiceToken.js.map +1 -0
  645. package/dist/accessi-module/Dtos/SetStatoRegistrazione.js.map +1 -1
  646. package/dist/accessi-module/Dtos/SetUserPasswordRequest.d.ts +4 -0
  647. package/dist/accessi-module/Dtos/SetUserPasswordRequest.js +32 -0
  648. package/dist/accessi-module/Dtos/SetUserPasswordRequest.js.map +1 -0
  649. package/dist/accessi-module/Dtos/StatoRegistrazione.js.map +1 -1
  650. package/dist/accessi-module/Dtos/TipoAbilitazione.d.ts +4 -0
  651. package/dist/accessi-module/Dtos/TipoAbilitazione.js +4 -0
  652. package/dist/accessi-module/Dtos/TipoAbilitazione.js.map +1 -1
  653. package/dist/accessi-module/Dtos/TipoFiltro.js.map +1 -1
  654. package/dist/accessi-module/Dtos/TokenResult.js.map +1 -1
  655. package/dist/accessi-module/Dtos/TwoFactorDtos.d.ts +14 -0
  656. package/dist/accessi-module/Dtos/TwoFactorDtos.js +71 -0
  657. package/dist/accessi-module/Dtos/TwoFactorDtos.js.map +1 -0
  658. package/dist/accessi-module/Dtos/UpdateEnabledStatusRequest.js.map +1 -1
  659. package/dist/accessi-module/Dtos/UserDto.d.ts +9 -4
  660. package/dist/accessi-module/Dtos/UserDto.js +37 -22
  661. package/dist/accessi-module/Dtos/UserDto.js.map +1 -1
  662. package/dist/accessi-module/Dtos/UserGrantsDto.js.map +1 -1
  663. package/dist/accessi-module/Dtos/UserGrantsResponse.d.ts +5 -0
  664. package/dist/accessi-module/Dtos/UserGrantsResponse.js +27 -0
  665. package/dist/accessi-module/Dtos/UserGrantsResponse.js.map +1 -0
  666. package/dist/accessi-module/Dtos/index.d.ts +20 -0
  667. package/dist/accessi-module/Dtos/index.js +20 -0
  668. package/dist/accessi-module/Dtos/index.js.map +1 -1
  669. package/dist/accessi-module/Services/AdminBootstrapService/AdminBootstrapService.d.ts +33 -0
  670. package/dist/accessi-module/Services/AdminBootstrapService/AdminBootstrapService.js +106 -0
  671. package/dist/accessi-module/Services/AdminBootstrapService/AdminBootstrapService.js.map +1 -0
  672. package/dist/accessi-module/Services/AuthService/AuthService.d.ts +108 -5
  673. package/dist/accessi-module/Services/AuthService/AuthService.js +458 -54
  674. package/dist/accessi-module/Services/AuthService/AuthService.js.map +1 -1
  675. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.d.ts +3 -1
  676. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.js +5 -1
  677. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.js.map +1 -1
  678. package/dist/accessi-module/Services/EmailService/EmailService.d.ts +9 -2
  679. package/dist/accessi-module/Services/EmailService/EmailService.js +47 -22
  680. package/dist/accessi-module/Services/EmailService/EmailService.js.map +1 -1
  681. package/dist/accessi-module/Services/FiltriService/FiltriService.d.ts +18 -3
  682. package/dist/accessi-module/Services/FiltriService/FiltriService.js +92 -16
  683. package/dist/accessi-module/Services/FiltriService/FiltriService.js.map +1 -1
  684. package/dist/accessi-module/Services/PermissionService/PermissionService.d.ts +107 -5
  685. package/dist/accessi-module/Services/PermissionService/PermissionService.js +788 -215
  686. package/dist/accessi-module/Services/PermissionService/PermissionService.js.map +1 -1
  687. package/dist/accessi-module/Services/SchemaExportService/SchemaExportService.d.ts +36 -0
  688. package/dist/accessi-module/Services/SchemaExportService/SchemaExportService.js +125 -0
  689. package/dist/accessi-module/Services/SchemaExportService/SchemaExportService.js.map +1 -0
  690. package/dist/accessi-module/Services/ServiceTokenService/ServiceTokenService.d.ts +75 -0
  691. package/dist/accessi-module/Services/ServiceTokenService/ServiceTokenService.js +265 -0
  692. package/dist/accessi-module/Services/ServiceTokenService/ServiceTokenService.js.map +1 -0
  693. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.d.ts +27 -0
  694. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.js +175 -0
  695. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.js.map +1 -0
  696. package/dist/accessi-module/Services/UserService/UserService.d.ts +73 -5
  697. package/dist/accessi-module/Services/UserService/UserService.js +578 -337
  698. package/dist/accessi-module/Services/UserService/UserService.js.map +1 -1
  699. package/dist/accessi-module/Views/reset-password.html +229 -213
  700. package/dist/accessi-module/accessiRuntime.d.ts +45 -0
  701. package/dist/accessi-module/accessiRuntime.js +39 -0
  702. package/dist/accessi-module/accessiRuntime.js.map +1 -0
  703. package/dist/accessi-module/database-updates/AccessiCatalogMigrator.d.ts +83 -0
  704. package/dist/accessi-module/database-updates/AccessiCatalogMigrator.js +360 -0
  705. package/dist/accessi-module/database-updates/AccessiCatalogMigrator.js.map +1 -0
  706. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.d.ts +58 -11
  707. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js +504 -210
  708. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js.map +1 -1
  709. package/dist/accessi-module/database-updates/accessiOptionsFromEnv.d.ts +17 -0
  710. package/dist/accessi-module/database-updates/accessiOptionsFromEnv.js +134 -0
  711. package/dist/accessi-module/database-updates/accessiOptionsFromEnv.js.map +1 -0
  712. package/dist/accessi-module/database-updates/accessiSchema.d.ts +67 -0
  713. package/dist/accessi-module/database-updates/accessiSchema.js +135 -0
  714. package/dist/accessi-module/database-updates/accessiSchema.js.map +1 -0
  715. package/dist/accessi-module/database-updates/menuScopeSeed.d.ts +15 -0
  716. package/dist/accessi-module/database-updates/menuScopeSeed.js +386 -0
  717. package/dist/accessi-module/database-updates/menuScopeSeed.js.map +1 -0
  718. package/dist/accessi-module/database-updates/menuScopeSeeder.d.ts +8 -0
  719. package/dist/accessi-module/database-updates/menuScopeSeeder.js +131 -0
  720. package/dist/accessi-module/database-updates/menuScopeSeeder.js.map +1 -0
  721. package/dist/accessi-module/database-updates/optionalColumns.d.ts +7 -0
  722. package/dist/accessi-module/database-updates/optionalColumns.js +58 -0
  723. package/dist/accessi-module/database-updates/optionalColumns.js.map +1 -0
  724. package/dist/accessi-module/database-updates/runAccessiCatalogMigrations.d.ts +1 -0
  725. package/dist/accessi-module/database-updates/runAccessiCatalogMigrations.js +69 -0
  726. package/dist/accessi-module/database-updates/runAccessiCatalogMigrations.js.map +1 -0
  727. package/dist/accessi-module/database-updates/runAccessiDbUpdate.js +18 -53
  728. package/dist/accessi-module/database-updates/runAccessiDbUpdate.js.map +1 -1
  729. package/dist/accessi-module/federated-auth/FederatedAuthController.d.ts +33 -0
  730. package/dist/accessi-module/federated-auth/FederatedAuthController.js +373 -0
  731. package/dist/accessi-module/federated-auth/FederatedAuthController.js.map +1 -0
  732. package/dist/accessi-module/federated-auth/FederatedAuthExchangeController.d.ts +15 -0
  733. package/dist/accessi-module/federated-auth/FederatedAuthExchangeController.js +85 -0
  734. package/dist/accessi-module/federated-auth/FederatedAuthExchangeController.js.map +1 -0
  735. package/dist/accessi-module/federated-auth/FederatedAuthService.d.ts +102 -0
  736. package/dist/accessi-module/federated-auth/FederatedAuthService.js +472 -0
  737. package/dist/accessi-module/federated-auth/FederatedAuthService.js.map +1 -0
  738. package/dist/accessi-module/federated-auth/FederatedAuthTypes.d.ts +53 -0
  739. package/dist/accessi-module/federated-auth/FederatedAuthTypes.js +3 -0
  740. package/dist/accessi-module/federated-auth/FederatedAuthTypes.js.map +1 -0
  741. package/dist/accessi-module/health/nest.d.ts +31 -0
  742. package/dist/accessi-module/health/nest.js +89 -0
  743. package/dist/accessi-module/health/nest.js.map +1 -0
  744. package/dist/accessi-module/health/readiness.d.ts +53 -0
  745. package/dist/accessi-module/health/readiness.js +110 -0
  746. package/dist/accessi-module/health/readiness.js.map +1 -0
  747. package/dist/accessi-module/index.d.ts +79 -1
  748. package/dist/accessi-module/index.js +224 -22
  749. package/dist/accessi-module/index.js.map +1 -1
  750. package/dist/accessi-module/jwt/jwt.strategy.d.ts +1 -1
  751. package/dist/accessi-module/jwt/jwt.strategy.js +21 -42
  752. package/dist/accessi-module/jwt/jwt.strategy.js.map +1 -1
  753. package/dist/accessi-module/middleware/accessiRequirements.d.ts +23 -1
  754. package/dist/accessi-module/middleware/accessiRequirements.js +7 -0
  755. package/dist/accessi-module/middleware/accessiRequirements.js.map +1 -1
  756. package/dist/accessi-module/middleware/authenticateGen.d.ts +16 -1
  757. package/dist/accessi-module/middleware/authenticateGen.js +68 -60
  758. package/dist/accessi-module/middleware/authenticateGen.js.map +1 -1
  759. package/dist/accessi-module/observability/metrics.d.ts +79 -0
  760. package/dist/accessi-module/observability/metrics.js +220 -0
  761. package/dist/accessi-module/observability/metrics.js.map +1 -0
  762. package/dist/accessi-module/observability/redisMetrics.d.ts +12 -0
  763. package/dist/accessi-module/observability/redisMetrics.js +44 -0
  764. package/dist/accessi-module/observability/redisMetrics.js.map +1 -0
  765. package/dist/accessi-module/security/AccessiHttpExceptionFilter.d.ts +12 -0
  766. package/dist/accessi-module/security/AccessiHttpExceptionFilter.js +77 -0
  767. package/dist/accessi-module/security/AccessiHttpExceptionFilter.js.map +1 -0
  768. package/dist/accessi-module/security/accessControl.d.ts +48 -2
  769. package/dist/accessi-module/security/accessControl.js +84 -8
  770. package/dist/accessi-module/security/accessControl.js.map +1 -1
  771. package/dist/accessi-module/security/accessTokenRevocation.d.ts +47 -0
  772. package/dist/accessi-module/security/accessTokenRevocation.js +148 -0
  773. package/dist/accessi-module/security/accessTokenRevocation.js.map +1 -0
  774. package/dist/accessi-module/security/accessiValidation.d.ts +9 -0
  775. package/dist/accessi-module/security/accessiValidation.js +41 -0
  776. package/dist/accessi-module/security/accessiValidation.js.map +1 -0
  777. package/dist/accessi-module/security/adminBootstrap.d.ts +8 -0
  778. package/dist/accessi-module/security/adminBootstrap.js +41 -0
  779. package/dist/accessi-module/security/adminBootstrap.js.map +1 -0
  780. package/dist/accessi-module/security/audit.d.ts +74 -0
  781. package/dist/accessi-module/security/audit.js +189 -0
  782. package/dist/accessi-module/security/audit.js.map +1 -0
  783. package/dist/accessi-module/security/auditSinks.d.ts +55 -0
  784. package/dist/accessi-module/security/auditSinks.js +228 -0
  785. package/dist/accessi-module/security/auditSinks.js.map +1 -0
  786. package/dist/accessi-module/security/authCookies.d.ts +104 -0
  787. package/dist/accessi-module/security/authCookies.js +240 -0
  788. package/dist/accessi-module/security/authCookies.js.map +1 -0
  789. package/dist/accessi-module/security/authenticatedToken.d.ts +23 -3
  790. package/dist/accessi-module/security/authenticatedToken.js +45 -5
  791. package/dist/accessi-module/security/authenticatedToken.js.map +1 -1
  792. package/dist/accessi-module/security/consoleEntry.d.ts +63 -0
  793. package/dist/accessi-module/security/consoleEntry.js +202 -0
  794. package/dist/accessi-module/security/consoleEntry.js.map +1 -0
  795. package/dist/accessi-module/security/edgeRateLimit.d.ts +33 -0
  796. package/dist/accessi-module/security/edgeRateLimit.js +84 -0
  797. package/dist/accessi-module/security/edgeRateLimit.js.map +1 -0
  798. package/dist/accessi-module/security/emailConfiguration.d.ts +20 -0
  799. package/dist/accessi-module/security/emailConfiguration.js +41 -0
  800. package/dist/accessi-module/security/emailConfiguration.js.map +1 -0
  801. package/dist/accessi-module/security/jwks.d.ts +33 -0
  802. package/dist/accessi-module/security/jwks.js +86 -0
  803. package/dist/accessi-module/security/jwks.js.map +1 -0
  804. package/dist/accessi-module/security/jwksBootstrap.d.ts +15 -0
  805. package/dist/accessi-module/security/jwksBootstrap.js +44 -0
  806. package/dist/accessi-module/security/jwksBootstrap.js.map +1 -0
  807. package/dist/accessi-module/security/jwtTokenOptions.d.ts +57 -0
  808. package/dist/accessi-module/security/jwtTokenOptions.js +173 -0
  809. package/dist/accessi-module/security/jwtTokenOptions.js.map +1 -0
  810. package/dist/accessi-module/security/loginAs.d.ts +8 -0
  811. package/dist/accessi-module/security/loginAs.js +45 -0
  812. package/dist/accessi-module/security/loginAs.js.map +1 -0
  813. package/dist/accessi-module/security/passwordPolicy.d.ts +21 -0
  814. package/dist/accessi-module/security/passwordPolicy.js +71 -0
  815. package/dist/accessi-module/security/passwordPolicy.js.map +1 -0
  816. package/dist/accessi-module/security/passwordResetToken.d.ts +13 -3
  817. package/dist/accessi-module/security/passwordResetToken.js +13 -5
  818. package/dist/accessi-module/security/passwordResetToken.js.map +1 -1
  819. package/dist/accessi-module/security/publicAuthRateLimit.d.ts +10 -8
  820. package/dist/accessi-module/security/publicAuthRateLimit.js +71 -60
  821. package/dist/accessi-module/security/publicAuthRateLimit.js.map +1 -1
  822. package/dist/accessi-module/security/rateLimitStore.d.ts +34 -0
  823. package/dist/accessi-module/security/rateLimitStore.js +147 -0
  824. package/dist/accessi-module/security/rateLimitStore.js.map +1 -0
  825. package/dist/accessi-module/security/refreshTokenRotation.d.ts +80 -0
  826. package/dist/accessi-module/security/refreshTokenRotation.js +206 -0
  827. package/dist/accessi-module/security/refreshTokenRotation.js.map +1 -0
  828. package/dist/accessi-module/security/securityHeaders.d.ts +89 -0
  829. package/dist/accessi-module/security/securityHeaders.js +155 -0
  830. package/dist/accessi-module/security/securityHeaders.js.map +1 -0
  831. package/dist/accessi-module/security/serviceTokenGuard.d.ts +27 -0
  832. package/dist/accessi-module/security/serviceTokenGuard.js +90 -0
  833. package/dist/accessi-module/security/serviceTokenGuard.js.map +1 -0
  834. package/dist/accessi-module/security/serviceTokenRateLimit.d.ts +9 -0
  835. package/dist/accessi-module/security/serviceTokenRateLimit.js +56 -0
  836. package/dist/accessi-module/security/serviceTokenRateLimit.js.map +1 -0
  837. package/dist/accessi-module/security/sessionRevocation.d.ts +67 -0
  838. package/dist/accessi-module/security/sessionRevocation.js +174 -0
  839. package/dist/accessi-module/security/sessionRevocation.js.map +1 -0
  840. package/dist/accessi-module/security/validateOptions.d.ts +19 -0
  841. package/dist/accessi-module/security/validateOptions.js +176 -0
  842. package/dist/accessi-module/security/validateOptions.js.map +1 -0
  843. package/dist/accessi-module/startupLog.d.ts +7 -0
  844. package/dist/accessi-module/startupLog.js +29 -0
  845. package/dist/accessi-module/startupLog.js.map +1 -0
  846. package/dist/allegati-module/AllegatiModule.d.ts +11 -0
  847. package/dist/allegati-module/AllegatiModule.js +11 -1
  848. package/dist/allegati-module/AllegatiModule.js.map +1 -1
  849. package/dist/allegati-module/Controllers/AllegatiController.d.ts +2 -1
  850. package/dist/allegati-module/Controllers/AllegatiController.js +23 -15
  851. package/dist/allegati-module/Controllers/AllegatiController.js.map +1 -1
  852. package/dist/allegati-module/Dtos/AllegatoDto.js.map +1 -1
  853. package/dist/allegati-module/Dtos/BaseResponse.js.map +1 -1
  854. package/dist/allegati-module/Dtos/UploadSingleFileRequest.js.map +1 -1
  855. package/dist/allegati-module/Dtos/index.js.map +1 -1
  856. package/dist/allegati-module/Dtos/responses/DownloadAllegatoResponseDto.js.map +1 -1
  857. package/dist/allegati-module/Dtos/responses/GetListResponse.js.map +1 -1
  858. package/dist/allegati-module/Dtos/responses/UploadAllegatoResponseDto.js.map +1 -1
  859. package/dist/allegati-module/Services/AllegatiService/AllegatiService.d.ts +10 -3
  860. package/dist/allegati-module/Services/AllegatiService/AllegatiService.js +150 -101
  861. package/dist/allegati-module/Services/AllegatiService/AllegatiService.js.map +1 -1
  862. package/dist/allegati-module/index.js +2 -2
  863. package/dist/allegati-module/index.js.map +1 -1
  864. package/dist/allegati-module/security/allegatiAuthorizationGuard.d.ts +14 -0
  865. package/dist/allegati-module/security/allegatiAuthorizationGuard.js +70 -0
  866. package/dist/allegati-module/security/allegatiAuthorizationGuard.js.map +1 -0
  867. package/dist/angular-components/aree-disponibili/aree-disponibili.js +1336 -0
  868. package/dist/angular-components/aree-disponibili/demo.html +232 -0
  869. package/dist/autobind.d.ts +10 -3
  870. package/dist/autobind.js +24 -9
  871. package/dist/autobind.js.map +1 -1
  872. package/dist/emilsoftware-utilities-2.0.0-dev.81.tgz +0 -0
  873. package/dist/firebird-compat.d.ts +41 -0
  874. package/dist/firebird-compat.js +54 -3
  875. package/dist/firebird-compat.js.map +1 -1
  876. package/dist/index.d.ts +11 -1
  877. package/dist/index.js +11 -1
  878. package/dist/index.js.map +1 -1
  879. package/dist/initEmilsoftwareModule.d.ts +11 -1
  880. package/dist/initEmilsoftwareModule.js +66 -14
  881. package/dist/initEmilsoftwareModule.js.map +1 -1
  882. package/dist/openapi/OpenApiConfig.d.ts +68 -0
  883. package/dist/openapi/OpenApiConfig.js +157 -0
  884. package/dist/openapi/OpenApiConfig.js.map +1 -0
  885. package/dist/openapi/OpenApiMerge.d.ts +15 -0
  886. package/dist/openapi/OpenApiMerge.js +119 -0
  887. package/dist/openapi/OpenApiMerge.js.map +1 -0
  888. package/dist/scripts/generateAccessiOpenApi.d.ts +1 -0
  889. package/dist/scripts/generateAccessiOpenApi.js +57 -0
  890. package/dist/scripts/generateAccessiOpenApi.js.map +1 -0
  891. package/dist/scripts/generateAccessiWiki.d.ts +1 -0
  892. package/dist/scripts/generateAccessiWiki.js +131 -0
  893. package/dist/scripts/generateAccessiWiki.js.map +1 -0
  894. package/dist/scripts/startAccessiService.d.ts +1 -0
  895. package/dist/scripts/startAccessiService.js +11 -0
  896. package/dist/scripts/startAccessiService.js.map +1 -0
  897. package/dist/scripts/startAccessiTenantService.d.ts +1 -0
  898. package/dist/scripts/startAccessiTenantService.js +35 -0
  899. package/dist/scripts/startAccessiTenantService.js.map +1 -0
  900. package/docs/accessi-openapi-baseline.json +4500 -0
  901. package/docs/accessi-openapi-breaking-allowlist.json +1 -0
  902. package/docs/accessi-openapi-fingerprint.json +192 -0
  903. package/docs/adr/0001-split-package.md +79 -0
  904. package/docs/adr/0002-multi-tenancy.md +182 -0
  905. package/docs/audit.md +136 -0
  906. package/docs/auth-cookies.md +123 -0
  907. package/docs/gateway-rate-limit.md +98 -0
  908. package/docs/import-migration.md +65 -0
  909. package/docs/jwt-key-rotation.md +143 -0
  910. package/docs/metrics.md +153 -0
  911. package/docs/multi-tenancy.md +329 -0
  912. package/docs/proxy-ip.md +99 -0
  913. package/docs/redis-load-testing.md +88 -0
  914. package/docs/security-headers.md +151 -0
  915. package/docs/standalone-service.md +201 -0
  916. package/integration-prompt.md +776 -0
  917. package/package.json +238 -83
  918. package/dist/swagger/SwaggerConfig.d.ts +0 -2
  919. package/dist/swagger/SwaggerConfig.js +0 -26
  920. package/dist/swagger/SwaggerConfig.js.map +0 -1
package/README.MD CHANGED
@@ -1,38 +1,323 @@
1
- Convenzioni per i Commit Message
2
-
3
- 1. feat:
4
- Descrizione: Nuova feature
5
- Esempio: feat: aggiunta endpoint per notifiche
6
- Trigger: MINOR release (es. 1.3.0 -> 1.4.0)
7
- Su dev: 1.4.0-dev.0
8
-
9
- 2. fix:
10
- Descrizione: Correzione di bug
11
- Esempio: fix: gestione errore null in login
12
- Trigger: PATCH release (es. 1.3.1)
13
- Su dev: 1.3.1-dev.0
14
-
15
- 3. BREAKING CHANGE:
16
- Descrizione: Cambiamento che rompe la compatibilità all'indietro
17
- Esempio:
18
- feat!: rimozione supporto legacy
19
- BREAKING CHANGE: cambia lo schema JWT
20
- Trigger: MAJOR release (es. 1.0.0 -> 2.0.0)
21
-
22
- 4. Altri tipi di commit
23
- Esempi: chore:, docs:, test:, refactor:
24
- Descrizione: Non triggerano una release di default, a meno che non siano configurati esplicitamente nel commit-analyzer.
25
- Esempio: chore: aggiorna dipendenze
26
-
27
- 5. Forzare una Release
28
- Descrizione: Utile in caso di merge o altre operazioni.
29
- Comandi:
30
- git commit --allow-empty -m "feat: trigger test release"
31
- Poi:
32
- git push origin dev
33
- Oppure:
34
- git push origin main
35
-
36
- ## Accessi
37
-
38
- La documentazione operativa del modulo accessi si trova in [src/accessi-module/README.md](src/accessi-module/README.md).
1
+ # Emilsoftware Utilities
2
+
3
+ Documentazione completa del modulo Accessi, generata da `src/accessi-module/Console/wiki.ts` (stessa fonte della Wiki nella console):
4
+
5
+ - **[WIKI.md](WIKI.md)** — guida completa con indice, esempi corretti e antipattern.
6
+ - **[WIKI.ai.md](WIKI.ai.md)** — versione compatta da fornire a un'IA che costruisce il backend.
7
+
8
+ Rigenera entrambi con `npm run generate:accessi-wiki` (incluso in `npm run build`).
9
+
10
+ ## Catalog migrations SQL
11
+
12
+ Per allineare menu, ruoli e cataloghi su più database, configura `catalogScripts` in `AccessiOptions`
13
+ (cartella con script `.sql` versionati nel backend) e usa le CLI:
14
+
15
+ ```bash
16
+ ACCESSI_CATALOG_FOLDER=./db/accessi-catalog npm run db:catalog:accessi
17
+ ACCESSI_CATALOG_FOLDER=./db/accessi-catalog npm run db:catalog:accessi:check
18
+ ```
19
+
20
+ Gli script sono applicati dopo la riconciliazione dello schema, una sola volta per database,
21
+ con tracking in `ACCESSI_CATALOG_SCRIPT` (nome + checksum). Dettagli nella Wiki, sezione
22
+ "Catalog migrations SQL".
23
+
24
+ ---
25
+
26
+ Convenzioni per i Commit Message
27
+
28
+ 1. feat:
29
+ Descrizione: Nuova feature
30
+ Esempio: feat: aggiunta endpoint per notifiche
31
+ Trigger: MINOR release (es. 1.3.0 -> 1.4.0)
32
+ Su dev: 1.4.0-dev.0
33
+
34
+ 2. fix:
35
+ Descrizione: Correzione di bug
36
+ Esempio: fix: gestione errore null in login
37
+ Trigger: PATCH release (es. 1.3.1)
38
+ Su dev: 1.3.1-dev.0
39
+
40
+ 3. BREAKING CHANGE:
41
+ Descrizione: Cambiamento che rompe la compatibilità all'indietro
42
+ Esempio:
43
+ feat!: rimozione supporto legacy
44
+ BREAKING CHANGE: cambia lo schema JWT
45
+ Trigger: MAJOR release (es. 1.0.0 -> 2.0.0)
46
+
47
+ 4. Altri tipi di commit
48
+ Esempi: chore:, docs:, test:, refactor:
49
+ Descrizione: Non triggerano una release di default, a meno che non siano configurati esplicitamente nel commit-analyzer.
50
+ Esempio: chore: aggiorna dipendenze
51
+
52
+ 5. Forzare una Release
53
+ Descrizione: Utile in caso di merge o altre operazioni.
54
+ Comandi:
55
+ git commit --allow-empty -m "feat: trigger test release"
56
+ Poi:
57
+ git push origin dev
58
+ Oppure:
59
+ git push origin main
60
+
61
+ ## Accessi
62
+
63
+ La documentazione operativa del modulo accessi si trova in [src/accessi-module/README.md](src/accessi-module/README.md).
64
+
65
+ ## Componenti Angular / Browser
66
+
67
+ Componenti UI frameworkless (Web Components) pubblicati in
68
+ `dist/angular-components/`. Non richiedono Angular, Ionic o React; supportano
69
+ temi light/dark e i token Bootstrap 5.3.
70
+
71
+ - [Catalogo componenti](src/angular-components/README.md)
72
+ - [`aree-disponibili`](src/angular-components/aree-disponibili/README.md)
73
+
74
+ ## Test e qualita
75
+
76
+ | Comando | Descrizione |
77
+ | --- | --- |
78
+ | `npm run typecheck` | Typecheck TypeScript in modalita `strict` (piu flag di igiene) |
79
+ | `npm run lint` | Lint dependency-free (no `any`, no `@ts-ignore`, no `console.*` fuori dal logger) |
80
+ | `npm test` | Typecheck + lint + test unitari |
81
+ | `npm run test:unit` | Solo test unitari (`node --test`) |
82
+ | `npm run test:coverage` | Test unitari con report e **soglie minime** di copertura |
83
+ | `npm run test:integration` | Integration test su Firebird reale (default: porta 3055) |
84
+ | `npm run test:integration:fb5` / `:fb3` / `:fb25` | Integration test su Firebird 5 / 3 / 2.5 |
85
+ | `npm run test:integration:redis` | Integration test degli store Redis (opt-in, salta senza `ACCESSI_TEST_REDIS_URL`) |
86
+ | `npm run test:accessi-console` | Test end-to-end della console (richiede un browser Chromium e la build) |
87
+
88
+ ### Integration test su Firebird reale
89
+
90
+ Avvia i database di test (Firebird 5 sulla 3055, Firebird 3 sulla 3056, Firebird 2.5 sulla 3057) e lancia la suite:
91
+
92
+ ```bash
93
+ docker compose -f docker-compose.test.yml up -d
94
+ npm run test:integration:fb5
95
+ npm run test:integration:fb3
96
+ npm run test:integration:fb25
97
+ docker compose -f docker-compose.test.yml down -v
98
+ ```
99
+
100
+ Firebird 2.5 usa l'immagine `jacobalberty/firebird:v2.5.9-ss` (l'immagine ufficiale non copre la 2.5) con `Legacy_Auth` e wire crypt disabilitato: lo script `test:integration:fb25` imposta da solo plugin e wireCrypt.
101
+
102
+ Il database viene creato dal test stesso (`attachOrCreate`) e lo schema costruito dal migrator
103
+ della libreria (`AccessiDatabaseUpdater`), quindi gli integration test validano anche migrazione e
104
+ compatibilita dello schema. Senza un Firebird raggiungibile i test vengono marcati come `skip`; con
105
+ `ACCESSI_TEST_REQUIRE_DB=1` falliscono invece di essere saltati (usato dalla CI).
106
+
107
+ Variabili: `ACCESSI_TEST_DB_HOST`, `ACCESSI_TEST_DB_PORT`, `ACCESSI_TEST_DB_DATABASE`,
108
+ `ACCESSI_TEST_DB_USER`, `ACCESSI_TEST_DB_PASSWORD`, `ACCESSI_TEST_DB_WIRE_CRYPT`,
109
+ `ACCESSI_TEST_DB_AUTH_PLUGIN`.
110
+
111
+ I container usano le porte host **3055** e **3056** per non entrare in conflitto con un Firebird
112
+ locale spesso in ascolto sulla 3050. Per cambiare porta/percorso, modifica i mapping in
113
+ `docker-compose.test.yml` e passa `ACCESSI_TEST_DB_PORT` / `ACCESSI_TEST_DB_DATABASE`.
114
+
115
+ La CI (`.github/workflows/ci.yml`) esegue typecheck, test con coverage e build, piu un job di
116
+ integration test in matrice su Firebird 5 e 3. Il workflow di release (`publish.yml`) esegue
117
+ typecheck e test prima di build e pubblicazione.
118
+
119
+ ### Packaging
120
+
121
+ Il pacchetto e pubblicato come **CommonJS** (build `tsc` in `dist/`) con export map esplicita per
122
+ ogni entry point; gli `import` ESM funzionano tramite interop Node. La scelta CJS e intenzionale:
123
+ il pacchetto gira in host Nest/Express e non esiste un bundle ESM separato da mantenere.
124
+
125
+ - `sideEffects` elenca solo i moduli con effetti collaterali (root barrel, `firebird-compat`,
126
+ bundle console), tutto il resto resta tree-shakable.
127
+ - `typesVersions` copre i TypeScript precedenti al campo `exports`.
128
+ - `npm run test:pack` crea il tarball con `npm pack`, lo installa in un progetto temporaneo e
129
+ verifica ogni subpath (`accessi/server`, `resource-server/*`, `client/*`, `contracts`, `openapi`,
130
+ `console`, `ui`), l'assenza di dipendenze server-side in `contracts` e l'interop ESM. La CI lo
131
+ esegue in un job dedicato dopo la build.
132
+
133
+ La decisione di mantenere un pacchetto singolo (con entry point per scope) e il piano per un
134
+ eventuale split futuro sono documentati nell'[ADR 0001](docs/adr/0001-split-package.md).
135
+
136
+ ### OpenAPI semantic diff
137
+
138
+ `docs/accessi-openapi-fingerprint.json` blocca la rimozione di operation e schema, ma non i cambi
139
+ di tipo o le nuove restrizioni. Il build esegue anche un diff semantico contro
140
+ `docs/accessi-openapi-baseline.json`:
141
+
142
+ ```bash
143
+ npm run check:accessi-openapi-diff # verifica (eseguita dal build e dalla CI)
144
+ npm run accessi:update-openapi-baseline # accetta il contratto corrente come nuova baseline
145
+ ```
146
+
147
+ Sono **breaking**: operation/parametri/risposte rimosse, cambi di tipo o formato, `required` aggiunto
148
+ in input o rimosso in output, valori enum rimossi, `security` cambiata e vincoli piu stretti
149
+ sull'input. Aggiungere campi opzionali (input o output) non e breaking.
150
+
151
+ Un breaking change intenzionale va dichiarato in
152
+ `docs/accessi-openapi-breaking-allowlist.json` con `id`, `reason` (obbligatoria) e, se esiste, `issue`:
153
+
154
+ ```json
155
+ [{ "id": "operation:legacyLogin:removed", "reason": "Rimosso nella major 3.0", "issue": "#123" }]
156
+ ```
157
+
158
+ La CI fallisce se un breaking change non e coperto, se un'eccezione non ha `reason` o se l'eccezione
159
+ e diventata obsoleta (il cambio non esiste piu).
160
+
161
+ ### Integration test su Redis reale
162
+
163
+ Gli store condivisi (rate limit, ticket console, revoca sessioni, revoca `jti`, rotazione refresh
164
+ token) hanno adapter Redis che nei test unitari girano su fake in memoria. La suite di integrazione
165
+ li verifica contro un Redis reale, inclusi i `consume` atomici in concorrenza e gli `healthCheck()`.
166
+
167
+ E' **opt-in**: senza la variabile `ACCESSI_TEST_REDIS_URL` i test vengono marcati come `skip`.
168
+
169
+ ```bash
170
+ docker run --rm -d --name accessi-test-redis -p 6380:6379 redis:7-alpine
171
+ npm run test:integration:redis
172
+ docker stop accessi-test-redis
173
+ ```
174
+
175
+ Su PowerShell:
176
+
177
+ ```powershell
178
+ $env:ACCESSI_TEST_REDIS_URL = 'redis://127.0.0.1:6380'
179
+ npm run test:integration:redis
180
+ ```
181
+
182
+ Variabili: `ACCESSI_TEST_REDIS_URL` (formato `redis://[:password@]host:port[/db]`) e
183
+ `ACCESSI_TEST_REQUIRE_REDIS=1` per fallire invece di saltare quando Redis non e raggiungibile
184
+ (usato dalla CI). I test usano chiavi con prefisso per processo e cancellano solo quelle, quindi
185
+ possono girare anche su un Redis condiviso. `docker-compose.test.yml` resta dedicato solo a
186
+ Firebird: la CI avvia Redis come service del job `Redis stores`.
187
+
188
+ ## Firebird: drop-in di `es-node-firebird`
189
+
190
+ La libreria **ri-esporta l'intera API di `node-firebird`** (`export * from "node-firebird"` piu il
191
+ namespace `Firebird`), quindi sostituisce il fork deprecato `es-node-firebird` senza modifiche al
192
+ codice applicativo: basta cambiare l'import.
193
+
194
+ ```ts
195
+ // prima
196
+ import * as Firebird from 'es-node-firebird';
197
+ // dopo
198
+ import { Firebird } from 'emilsoftware-utilities';
199
+ // oppure, con import nominati
200
+ import { attach, create, pool, ISOLATION_READ_COMMITTED } from 'emilsoftware-utilities';
201
+ ```
202
+
203
+ I comportamenti storici del fork sono riprodotti da un **layer di compatibilita esterno**
204
+ (`src/firebird-compat.ts`), senza toccare il driver ufficiale:
205
+
206
+ - **Date come UTC** (`utcDates`, default `true`): `DATE`/`TIME`/`TIMESTAMP` vengono reinterpretati
207
+ come UTC, come faceva il fork con `setUTCMilliseconds`. Con `utcDates: false` restano in ora locale.
208
+ - **Trim dei campi testo** (`trimStringResults`, default `true`): le stringhe vengono trimmate come
209
+ il fork (`.trim()`). Con `trimStringResults: false` restano intatte.
210
+ - **Compatibilita wire/auth** (`wireCrypt`, `pluginName`): normalizzazione dei valori e diagnostica
211
+ arricchita sugli errori di connessione.
212
+
213
+ Le opzioni si passano in `databaseOptions` (vedi `FirebirdOptions` in `src/firebird-compat.ts`).
214
+
215
+ ## Service token (macchina-a-macchina)
216
+
217
+ Credenziali di servizio per chiamate tecniche, **non legate a un utente** e senza login giornaliero.
218
+ Sostituiscono l'uso di un `secret` nel body: si inviano con `Authorization: Bearer <token>`.
219
+
220
+ - Formato: `st_<id>.<segreto>`. Il segreto e mostrato **una sola volta** alla creazione/rotazione.
221
+ - Storage: tabella `ACCESSI_SERVICE_TOKEN` (schema Accessi, migrazione automatica `1.7.0`). Il segreto e salvato solo come hash SHA-256 e confrontato a tempo costante.
222
+ - Metadati e audit: descrizione, scope, creazione/scadenza, ultimo utilizzo con **IP** (`lastUsedIp`), revoca con **autore** (`revokedBy`).
223
+ - Rate limit anti-abuso per IP sulla verifica (HTTP 429).
224
+ - API amministrative (solo superutente): `POST /api/accessi/service-token`, `GET /api/accessi/service-token` (`includeRevoked=true`), `DELETE /api/accessi/service-token/:tokenId`, `POST /api/accessi/service-token/:tokenId/rotate`.
225
+ - Console: sezione **Token di servizio** (crea, ruota, revoca; copia il token una sola volta).
226
+ - Utilizzo lato consumer: guard `ServiceTokenGuard` con `@RequireServiceTokenScopes('ia')`; il token verificato e disponibile con `getAccessiServiceToken(req)`.
227
+ - Opzione: `serviceTokens: { enabled?: boolean; defaultTtlDays?: number }` in `AccessiOptions`.
228
+
229
+ ```ts
230
+ import { Module } from '@nestjs/common';
231
+ import { ServiceTokenGuard, RequireServiceTokenScopes } from 'emilsoftware-utilities';
232
+
233
+ @UseGuards(ServiceTokenGuard)
234
+ @RequireServiceTokenScopes('ia')
235
+ @Controller('ia')
236
+ export class IaController {}
237
+ ```
238
+
239
+ ## Login as (impersonazione temporanea)
240
+
241
+ Superutenti e admin possono generare un accesso temporaneo a un utente per entrare in un'altra
242
+ applicazione senza conoscerne la password. Dalla console Accessi il pulsante **Login as** nella
243
+ lista utenti apre un pannello in cui inserire l'URL dell'applicazione e generare il link.
244
+
245
+ - Endpoint: `POST /api/accessi/user/login-as/:codiceUtente` con body `{ "url": "https://app.example.com/..." }`.
246
+ - Risposta: `Result.loginUrl` con `?loginAsToken=<jwt>`, `token`, `expiresInSeconds` e `expiresAt`.
247
+ - Il token ha la **stessa durata della sessione Accessi standard** (`jwtOptions.expiresIn`) ed e' un normale access token Accessi con `amr: ["login_as"]`, `loginAs: true` e `act` valorizzato con l'amministratore che lo ha generato.
248
+ - E' accettato da `get-user-by-token` e da `authorizeAccessi`, anche se l'utente target ha la 2FA attiva: l'attore ha gia' completato l'autenticazione amministrativa.
249
+ - Gerarchia **ADMIN > SUPER**: un admin puo' impersonare chiunque, un superutente non puo' impersonare un admin.
250
+ - L'URL viene composto con `buildLoginAsUrl` (esportata dalla libreria), che accetta solo URL assoluti `http`/`https` e conserva query e fragment esistenti.
251
+ - Accessi non consuma il token al posto dell'applicazione: da quel momento e' l'app di destinazione a leggere `loginAsToken`, validarlo e decidere cosa consentire. Il token e' una credenziale: non condividerlo e non registrarlo nei log.
252
+
253
+ ## Hardening e opzioni
254
+
255
+ - I log delle query **non includono i valori dei parametri** (segreti, credenziali, PII). Per riattivare esplicitamente i valori: `logQueryParameters: true` nelle `databaseOptions`.
256
+ - Pool di connessioni **attivo di default** (`poolSize` default `5`); `poolSize: 0` disabilita e torna a una connessione per query. Gli script di breve durata devono chiamare `await Orm.closePools()` prima di uscire.
257
+ - I JWT sono verificati con algoritmo fissato a `HS256` ed e obbligatoria una scadenza (`expiresIn`) valida. `TokenResult.expiresIn` e sempre riportato in secondi, anche con configurazioni come `24h`.
258
+ - **Chiavi JWT separate per scopo** (`access`, `reset`, `2fa`), derivate dal segreto configurato; il claim `typ: 'access'` e **obbligatorio** per gli access token.
259
+ - La backdoor mock `admin`/`demo` non e mai attiva quando `NODE_ENV=production`.
260
+ - Gli allegati sono **protetti di default**: senza `allegatiOptions.authorize` le richieste rispondono 403. Per la migrazione da versioni precedenti impostare `requireAuthorization: false` (sconsigliato in produzione).
261
+ - Upload allegati: limite di 1 file / 90 MB applicato da Multer e validazione dei magic byte oltre al mimetype dichiarato.
262
+ - **IP reali dietro proxy**: `http.trustProxy` deve corrispondere al numero di proxy davanti al servizio (default `false`). Rate limit e audit usano `req.ip`: un valore errato rende i bucket inefficaci o aggirabili via `X-Forwarded-For`. Guida per Nginx/Traefik/Cloudflare: [docs/proxy-ip.md](docs/proxy-ip.md).
263
+
264
+ ## Integrazione
265
+
266
+ | Scenario | API |
267
+ | --- | --- |
268
+ | Backend Express esistente | `await initializeAccessiModule(app, accessiOptions)` monta le rotte `/api/accessi` su un host Nest isolato |
269
+ | Applicazione NestJS | importa `AccessiModule.forRoot(accessiOptions)` (e/o `AllegatiModule.forRoot(allegatiOptions)`) |
270
+ | Accessi + Allegati insieme | `EmilsoftwareModule.forRoot({ accessiOptions, allegatiOptions })` |
271
+ | Health/readiness in host Nest | `createAccessiHealthModule({ accessiOptions })` espone `/health/live` e `/health/ready` con lo stesso contratto del servizio standalone |
272
+ | Client multi-istanza / multi-tenant | `createAccessiClient({ baseUrl, getToken })` isola base URL e token per istanza (concorrenza sicura); `configureAccessiClient` resta il default globale |
273
+ | Client per scope | `accessi/client/public` (frontend), `accessi/client/admin` (tool admin), `accessi/client/service` (backend fratelli): stesse tipi del client completo, nessuna operazione fuori scope |
274
+
275
+ Tutta la configurazione e riservata al backend: segreti JWT/SMTP/DB non devono mai raggiungere il browser.
276
+
277
+ ## Riferimento `AccessiOptions`
278
+
279
+ | Campo | Tipo | Note |
280
+ | --- | --- | --- |
281
+ | `databaseOptions` | `Options` | Connessione Firebird (`DatabaseUtilities.createOption`). Supporta `logQueryParameters`, `poolSize`, `wireCrypt`, `pluginName`, `utcDates`, `trimStringResults`. |
282
+ | `confirmationEmailUrl` / `confirmationEmailReturnUrl` | `string` | URL per le email di reset. |
283
+ | `customResetPage` / `confirmationEmailPrefix` | `string?` | Pagina di reset personalizzata. |
284
+ | `encryptionKey` | `string` | Solo compatibilita/migrazione password legacy cifrate. |
285
+ | `mockDemoUser` | `boolean` | Utenti fittizi `admin`/`demo`; **mai** attivi in produzione. |
286
+ | `passwordExpiration` / `passwordExpirationDays` | `boolean?` / `number?` | Scadenza password (default 90 giorni). |
287
+ | `legacyPasswordMigrationOnStartup` | `boolean?` | Migrazione password legacy al bootstrap (default `true`). |
288
+ | `autoUpdateDatabase` | `boolean?` | Riconcilia lo schema al bootstrap (default `true`); con `false` verifica in sola lettura. |
289
+ | `jwtOptions` | `{ secret: string; expiresIn: string }` | HS256 con scadenza obbligatoria. |
290
+ | `emailOptions` | `EmailOptions` | SMTP per reset e codici 2FA. |
291
+ | `publicAuthRateLimit` | `PublicAuthRateLimitOptions?` | Limiti degli endpoint pubblici (default attivi). |
292
+ | `publicRegistration` | `{ enabled?: boolean }?` | Registrazione pubblica opt-in. |
293
+ | `federatedAuthentication` | `{ enabled?; allowSelfRegistration? }?` | SSO provider-agnostico. |
294
+ | `extensionFieldsOptions` | `ExtensionFieldsOptions[]?` | Campi applicativi estesi. |
295
+ | `serviceTokens` | `{ enabled?: boolean; defaultTtlDays?: number }?` | Token macchina-a-macchina (default abilitati). |
296
+
297
+ ## Riferimento `AllegatiOptions`
298
+
299
+ | Campo | Tipo | Note |
300
+ | --- | --- | --- |
301
+ | `databaseOptions` | `Options` | Connessione Firebird. |
302
+ | `authorize` | `(req) => boolean \| Promise<boolean>?` | Controllo di autorizzazione applicato a ogni richiesta; `false` → 403. |
303
+ | `requireAuthorization` | `boolean?` | **Default `true`**: senza `authorize` le richieste sono rifiutate con 403 (secure by default). `false` ripristina il comportamento storico (endpoint aperti) durante la migrazione. |
304
+
305
+ ## Contratto risposte ed errori
306
+
307
+ - Successo generico: `RestUtilities.sendOKMessage` → `{ severity, status, statusCode, message }`.
308
+ - Payload: `RestUtilities.sendBaseResponse` → `{ Status: { errorCode, errorDescription }, Result, Message }`.
309
+ - Errore: `{ severity: 'error', status, statusCode, code, message, error, details? }`, con `code` stabile (es. `ACCESSI_UNAUTHORIZED`, `ACCESSI_INVALID_CREDENTIALS`, `PASSWORD_EXPIRED`, `ACCESSI_DATABASE_SCHEMA_OUTDATED`, `ACCESSI_SERVICE_TOKEN_RATE_LIMITED`). Lo status deriva dalla `HttpException` (validazione → 400); errori di schema DB → 503. SQL, stack e dati sensibili non vengono mai esposti.
310
+
311
+ ## Migrazioni e schema
312
+
313
+ - Lo schema Accessi e versionato in `accessiSchema.ts` (`ACCESSI_SCHEMA_VERSION`) e riconciliato in modo **idempotente e ripartibile** da `AccessiDatabaseUpdater` (nessun DDL distruttivo, FK/indici/trigger verificati, sequence avanzate solo in avanti).
314
+ - La versione viene aggiornata **solo dopo** `assertCompatible`; su errore la migrazione si puo rieseguire.
315
+ - Firebird non rende utilizzabili gli oggetti creati nella stessa transazione, quindi il DDL non e racchiuso in un'unica transazione: la robustezza e data da idempotenza + verifica finale.
316
+ - Con `autoUpdateDatabase: false` la libreria verifica lo schema in sola lettura e blocca l'avvio se incompatibile (`AccessiDatabaseUpdater.inspectSchema`).
317
+
318
+ ## Osservabilita
319
+
320
+ - `Logger` strutturato (console colorata + file JSON giornaliero), condiviso per directory.
321
+ - Livello minimo configurabile per istanza (`new Logger(tag, { level: 'info' })`) o globalmente con la variabile `LOG_LEVEL` (default `database` = tutto).
322
+ - Redazione automatica dei campi sensibili (`password`, `token`, `secret`, ...) e serializzazione degli `Error` con stack.
323
+ - I log delle query non contengono i valori dei parametri (salvo `logQueryParameters: true`).
@@ -1,3 +1,4 @@
1
+ import { Styles, UserOptions } from "jspdf-autotable";
1
2
  export interface IPartiContratto {
2
3
  fornitore: {
3
4
  denominazione: string;
@@ -25,8 +26,8 @@ export type DynamicElement = {
25
26
  config: {
26
27
  head: string[];
27
28
  body: string[][];
28
- options?: any;
29
- styles?: any;
29
+ options?: UserOptions;
30
+ styles?: Partial<Styles>;
30
31
  };
31
32
  };
32
33
  interface DocumentConfig {
@@ -100,7 +101,7 @@ export declare class DocumentGenerator {
100
101
  private curX;
101
102
  private curY;
102
103
  private configLoaded;
103
- constructor(configPath?: string);
104
+ constructor(configPath?: string | undefined);
104
105
  setConfig(config: DocumentConfig): void;
105
106
  private applyTemplate;
106
107
  private applyPartiPlaceholders;
@@ -43,7 +43,11 @@ class DocumentGenerator {
43
43
  return template.replace(/\$(\w+)\$/g, (match, key) => dynamicFields[key] !== undefined ? dynamicFields[key] : match);
44
44
  }
45
45
  applyPartiPlaceholders(text, parti) {
46
- return text.replace(/\$(fornitore|cliente):(\w+)\$/g, (match, party, field) => (parti[party] && parti[party][field]) ? parti[party][field] : match);
46
+ return text.replace(/\$(fornitore|cliente):(\w+)\$/g, (match, party, field) => {
47
+ const partyData = parti[party];
48
+ const value = partyData === null || partyData === void 0 ? void 0 : partyData[field];
49
+ return value !== null && value !== void 0 ? value : match;
50
+ });
47
51
  }
48
52
  loadConfig() {
49
53
  return __awaiter(this, void 0, void 0, function* () {
@@ -68,8 +72,9 @@ class DocumentGenerator {
68
72
  this.curY = margins.alto;
69
73
  }
70
74
  extractPlaceholder(text) {
75
+ var _a;
71
76
  const match = text.match(/^\$(\w+)\$$/);
72
- return match ? match[1] : null;
77
+ return match ? ((_a = match[1]) !== null && _a !== void 0 ? _a : null) : null;
73
78
  }
74
79
  installFont(fontPath, fontName) {
75
80
  return __awaiter(this, void 0, void 0, function* () {
@@ -108,8 +113,8 @@ class DocumentGenerator {
108
113
  });
109
114
  }
110
115
  // Writes a single line with inline bold processing.
111
- writeLineWithInlineBold(line_1, x_1, y_1, normalFont_1, fontSize_1, color_1, maxWidth_1) {
112
- return __awaiter(this, arguments, void 0, function* (line, x, y, normalFont, fontSize, color, maxWidth, lineSpacingFactor = 1.15) {
116
+ writeLineWithInlineBold(line_1, x_1, y_1, normalFont_1, fontSize_1, color_1, _maxWidth_1) {
117
+ return __awaiter(this, arguments, void 0, function* (line, x, y, normalFont, fontSize, color, _maxWidth, lineSpacingFactor = 1.15) {
113
118
  let currentX = x;
114
119
  // Split the line by bold segments. The regex keeps the markers.
115
120
  const segments = line.split(/(\*\*.*?\*\*)/);
@@ -310,7 +315,12 @@ class DocumentGenerator {
310
315
  this.curY += this.config.staccoriga;
311
316
  }
312
317
  const tipOutput = params.tipOutput || 'd';
313
- const fileName = `Documento_${params.parti.cliente.denominazione}.pdf`;
318
+ // Sanitizza il nome: evita path traversal e caratteri non validi nel filesystem.
319
+ const safeDenominazione = params.parti.cliente.denominazione
320
+ .replace(/[\\/:*?"<>|\u0000-\u001f]/g, '_')
321
+ .replace(/\.+$/, '')
322
+ .trim() || 'cliente';
323
+ const fileName = `Documento_${safeDenominazione}.pdf`;
314
324
  if (tipOutput === 'd') {
315
325
  const pdfBuffer = this.doc.output('arraybuffer');
316
326
  yield fs_1.promises.writeFile(fileName, Buffer.from(pdfBuffer));
@@ -1 +1 @@
1
- {"version":3,"file":"ContractGenerator.js","sourceRoot":"","sources":["../src/ContractGenerator.ts"],"names":[],"mappings":"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","sourcesContent":["import { jsPDF } from \"jspdf\";\r\nimport autotable from \"jspdf-autotable\";\r\nimport { promises as fs } from 'fs';\r\nimport path from 'path';\r\n\r\nexport interface IPartiContratto {\r\n fornitore: { denominazione: string; codiceFiscale: string; indirizzoCompleto: string; };\r\n cliente: { denominazione: string; codiceFiscale: string; indirizzoCompleto: string; };\r\n}\r\n\r\nexport interface DocumentParams {\r\n parti: IPartiContratto;\r\n tipOutput?: 'f' | 'd' | 'u';\r\n dynamicFields?: { [key: string]: string };\r\n dynamicElements?: { [placeholder: string]: DynamicElement };\r\n}\r\n\r\nexport type DynamicElement = {\r\n type: 'table';\r\n config: {\r\n head: string[];\r\n body: string[][];\r\n options?: any;\r\n styles?: any;\r\n };\r\n};\r\n\r\ninterface DocumentConfig {\r\n fontTitolo: { nome: string; dimensione: number; colore: string; installPath?: string; };\r\n fontSottotitolo: { nome: string; dimensione: number; colore: string; installPath?: string; };\r\n fontTesto: { nome: string; dimensione: number; colore: string; installPath?: string; };\r\n fontBold: { nome: string; dimensione: number; colore: string; installPath?: string; };\r\n margini: { sx: number; dx: number; alto: number; basso: number; };\r\n staccoriga: number;\r\n rientro: number;\r\n testi: {\r\n titolo: string;\r\n premessa: string;\r\n Punti: Array<{ titolo: string; Sottopunti: Array<{ titolo: string; contenuto: string; }>; }>;\r\n versione: string;\r\n };\r\n immagini: Array<{ path: string; posizione: [number, number]; dimensioni: [number, number]; coeffDim?: number; }>;\r\n box: { backgrund: string; raggio: number; };\r\n tableStyle?: { lineColor?: string; lineWidth?: number; font?: string; fontSize?: number; cellPadding?: number; fillColor?: string; };\r\n}\r\n\r\nasync function loadImageAsBase64(imagePath: string): Promise<string> {\r\n const absolutePath = path.resolve(imagePath);\r\n const buffer = await fs.readFile(absolutePath);\r\n const ext = path.extname(imagePath).slice(1).toLowerCase();\r\n const base64 = buffer.toString('base64');\r\n return `data:image/${ext};base64,${base64}`;\r\n}\r\n\r\nexport class DocumentGenerator {\r\n private config!: DocumentConfig;\r\n private doc!: jsPDF;\r\n private curX: number = 0;\r\n private curY: number = 0;\r\n private configLoaded: boolean = false;\r\n\r\n constructor(private configPath?: string) { }\r\n\r\n public setConfig(config: DocumentConfig) {\r\n this.config = config;\r\n this.configLoaded = true;\r\n }\r\n\r\n private applyTemplate(template: string, dynamicFields?: { [key: string]: string }): string {\r\n if (!dynamicFields) return template;\r\n return template.replace(/\\$(\\w+)\\$/g, (match, key) =>\r\n dynamicFields[key] !== undefined ? dynamicFields[key] : match\r\n );\r\n }\r\n\r\n private applyPartiPlaceholders(text: string, parti: IPartiContratto): string {\r\n return text.replace(/\\$(fornitore|cliente):(\\w+)\\$/g, (match, party, field) =>\r\n (parti[party] && (parti[party] as any)[field]) ? (parti[party] as any)[field] : match\r\n );\r\n }\r\n\r\n private async loadConfig(): Promise<void> {\r\n if (this.configLoaded) return;\r\n if (!this.configPath) throw new Error(\"No configuration provided.\");\r\n try {\r\n const data = await fs.readFile(this.configPath, 'utf8');\r\n this.config = JSON.parse(data) as DocumentConfig;\r\n this.configLoaded = true;\r\n } catch (error) {\r\n throw new Error(`Error reading configuration file: ${error}`);\r\n }\r\n }\r\n\r\n private initDoc(): void {\r\n this.doc = new jsPDF();\r\n const margins = this.config.margini;\r\n this.curX = margins.sx;\r\n this.curY = margins.alto;\r\n }\r\n\r\n private extractPlaceholder(text: string): string | null {\r\n const match = text.match(/^\\$(\\w+)\\$$/);\r\n return match ? match[1] : null;\r\n }\r\n\r\n private async installFont(fontPath: string, fontName: string): Promise<void> {\r\n const absolutePath = path.resolve(fontPath);\r\n const buffer = await fs.readFile(absolutePath);\r\n const base64Font = buffer.toString('base64');\r\n //console.log(`Installing font ${fontName} from ${absolutePath}`);\r\n this.doc.addFileToVFS(`${fontName}.ttf`, base64Font);\r\n this.doc.addFont(`${fontName}.ttf`, fontName, 'normal');\r\n this.doc.setFont(fontName);\r\n }\r\n\r\n // Writes wrapped text, handling inline bold segments.\r\n private async writeWrappedTextCore(\r\n fontName: string,\r\n fontSize: number,\r\n color: string,\r\n text: string,\r\n x: number,\r\n y: number,\r\n maxWidth: number,\r\n lineSpacingFactor: number = 1.15\r\n ): Promise<number> {\r\n this.doc.setFont(fontName);\r\n this.doc.setFontSize(fontSize);\r\n this.doc.setTextColor(color);\r\n const lines = this.doc.splitTextToSize(text, maxWidth);\r\n const lineHeight = (fontSize * lineSpacingFactor / 72) * 25.4;\r\n for (const line of lines) {\r\n if (y + lineHeight > (this.doc.internal.pageSize.getHeight() - this.config.margini.basso)) {\r\n this.doc.addPage();\r\n y = this.config.margini.alto;\r\n }\r\n // If the line contains inline bold markers, process them.\r\n if (line.includes(\"**\")) {\r\n y = await this.writeLineWithInlineBold(line, x, y, fontName, fontSize, color, maxWidth, lineSpacingFactor);\r\n } else {\r\n this.doc.text(line, x, y);\r\n y += lineHeight;\r\n }\r\n }\r\n return y;\r\n }\r\n\r\n // Writes a single line with inline bold processing.\r\n private async writeLineWithInlineBold(\r\n line: string,\r\n x: number,\r\n y: number,\r\n normalFont: string,\r\n fontSize: number,\r\n color: string,\r\n maxWidth: number,\r\n lineSpacingFactor: number = 1.15\r\n ): Promise<number> {\r\n let currentX = x;\r\n // Split the line by bold segments. The regex keeps the markers.\r\n const segments = line.split(/(\\*\\*.*?\\*\\*)/);\r\n const lineHeight = (fontSize * lineSpacingFactor / 72) * 25.4;\r\n for (const seg of segments) {\r\n let segText = seg;\r\n let useBold = false;\r\n if (seg.startsWith(\"**\") && seg.endsWith(\"**\")) {\r\n useBold = true;\r\n segText = seg.substring(2, seg.length - 2);\r\n }\r\n if (useBold) {\r\n this.doc.setFont(this.config.fontBold.nome);\r\n } else {\r\n this.doc.setFont(normalFont);\r\n }\r\n this.doc.setFontSize(fontSize);\r\n this.doc.setTextColor(color);\r\n const segWidth = this.doc.getTextWidth(segText);\r\n // Write segment\r\n this.doc.text(segText, currentX, y);\r\n currentX += segWidth;\r\n }\r\n return y + lineHeight;\r\n }\r\n\r\n private async writeWrappedTextWithFont(\r\n fontConf: { nome: string; dimensione: number; colore: string; installPath?: string },\r\n text: string,\r\n x: number,\r\n y: number,\r\n maxWidth: number,\r\n lineSpacingFactor: number = 1.15\r\n ): Promise<void> {\r\n const fontList = this.doc.getFontList();\r\n if (!fontList[fontConf.nome]) {\r\n if (fontConf.installPath) await this.installFont(fontConf.installPath, fontConf.nome);\r\n else throw new Error(\"Font not present and no installPath provided\");\r\n } else {\r\n this.doc.setFont(fontConf.nome);\r\n }\r\n this.curY = await this.writeWrappedTextCore(fontConf.nome, fontConf.dimensione, fontConf.colore, text, x, y, maxWidth, lineSpacingFactor);\r\n }\r\n\r\n public async writeBoxedText(\r\n text: string,\r\n fontConf: { nome: string; dimensione: number; colore: string; installPath?: string },\r\n padding: number = 5,\r\n borderRadius: number = 5,\r\n borderWidth: number = 1,\r\n boxColor?: string\r\n ): Promise<void> {\r\n const fontList = this.doc.getFontList();\r\n if (!fontList[fontConf.nome]) {\r\n if (fontConf.installPath) await this.installFont(fontConf.installPath, fontConf.nome);\r\n else throw new Error(\"Font not present and no installPath provided\");\r\n } else {\r\n this.doc.setFont(fontConf.nome);\r\n }\r\n this.doc.setFontSize(fontConf.dimensione);\r\n this.doc.setTextColor(fontConf.colore);\r\n const pageWidth = this.doc.internal.pageSize.getWidth();\r\n const maxTextWidth = pageWidth - this.config.margini.sx - this.config.margini.dx - 2 * padding;\r\n const lines = this.doc.splitTextToSize(text, maxTextWidth);\r\n const lineHeight = (fontConf.dimensione * 1.15 / 72) * 25.4;\r\n const textHeight = lines.length * lineHeight;\r\n const boxX = this.curX;\r\n const boxY = this.curY;\r\n const boxWidth = maxTextWidth + 2 * padding;\r\n const boxHeight = textHeight + 2 * padding;\r\n if (boxColor) {\r\n this.doc.setFillColor(boxColor);\r\n this.doc.roundedRect(boxX, boxY, boxWidth, boxHeight, borderRadius, borderRadius, \"F\");\r\n }\r\n this.doc.setLineWidth(borderWidth);\r\n this.doc.roundedRect(boxX, boxY, boxWidth, boxHeight, borderRadius, borderRadius);\r\n const textX = boxX + padding;\r\n let textY = boxY + padding + lineHeight;\r\n for (const line of lines) {\r\n if (line.includes(\"**\")) {\r\n textY = await this.writeLineWithInlineBold(line, textX, textY, fontConf.nome, fontConf.dimensione, fontConf.colore, maxTextWidth, 1.15);\r\n } else {\r\n this.doc.text(line, textX, textY);\r\n textY += lineHeight;\r\n }\r\n }\r\n this.curY = boxY + boxHeight + this.config.staccoriga;\r\n }\r\n\r\n\r\n // Checks if text is wrapped in '^' markers for boxed text.\r\n private isBoxedText(text: string): boolean {\r\n return text.startsWith('^') && text.endsWith('^');\r\n }\r\n\r\n // Removes '^' markers.\r\n private stripBoxMarkers(text: string): string {\r\n return text.substring(1, text.length - 1);\r\n }\r\n\r\n // Checks if text is entirely wrapped in '**' markers (not inline).\r\n // (This function is kept for backward compatibility.)\r\n private isBoldText(text: string): boolean {\r\n return text.startsWith('**') && text.endsWith('**');\r\n }\r\n\r\n // Removes '**' markers.\r\n private stripBoldMarkers(text: string): string {\r\n return text.substring(2, text.length - 2);\r\n }\r\n\r\n // Inserts images using the current cursor position.\r\n private async insertLogo(): Promise<void> {\r\n if (this.config.immagini && this.config.immagini.length > 0) {\r\n const startX = this.curX;\r\n for (const imgConf of this.config.immagini) {\r\n const format = imgConf.path.split('.').pop()?.toUpperCase() || 'PNG';\r\n const base64Image = await loadImageAsBase64(imgConf.path);\r\n const startY = this.curY;\r\n if (startY + imgConf.dimensioni[1] > (this.doc.internal.pageSize.getHeight() - this.config.margini.basso)) {\r\n this.doc.addPage();\r\n this.curY = this.config.margini.alto;\r\n }\r\n this.doc.addImage(base64Image, format, startX, this.curY, imgConf.dimensioni[0], imgConf.dimensioni[1]);\r\n //console.log(`Image inserted at X: ${startX}, Y: ${this.curY}`);\r\n this.curY = this.curY + imgConf.dimensioni[1] + this.config.staccoriga;\r\n }\r\n }\r\n }\r\n\r\n // Generates the PDF document by processing images, dynamic fields, tables, and text.\r\n // Supports inline bold formatting and boxed text.\r\n public async generateDocument(params: DocumentParams): Promise<string | ArrayBuffer> {\r\n await this.loadConfig();\r\n this.initDoc();\r\n await this.insertLogo();\r\n const dynamicFields = params.dynamicFields || {};\r\n const dynamicElements = params.dynamicElements || {};\r\n const pageWidth = this.doc.internal.pageSize.getWidth();\r\n const maxWidth = pageWidth - (this.config.margini.sx + this.config.margini.dx);\r\n let titolo = this.applyTemplate(this.config.testi.titolo, dynamicFields);\r\n titolo = this.applyPartiPlaceholders(titolo, params.parti);\r\n await this.writeWrappedTextWithFont(this.config.fontTitolo, titolo, this.curX, this.curY, maxWidth);\r\n this.curY += this.config.staccoriga;\r\n let premessa = this.applyTemplate(this.config.testi.premessa, dynamicFields);\r\n premessa = this.applyPartiPlaceholders(premessa, params.parti);\r\n await this.writeWrappedTextWithFont(this.config.fontTesto, premessa, this.curX, this.curY, maxWidth);\r\n this.curY += this.config.staccoriga;\r\n for (const punto of this.config.testi.Punti) {\r\n let puntoTitolo = this.applyTemplate(punto.titolo, dynamicFields);\r\n puntoTitolo = this.applyPartiPlaceholders(puntoTitolo, params.parti);\r\n await this.writeWrappedTextWithFont(this.config.fontTitolo, puntoTitolo, this.curX, this.curY, maxWidth);\r\n this.curY += this.config.staccoriga;\r\n for (const sub of punto.Sottopunti) {\r\n const placeholder = this.extractPlaceholder(sub.titolo);\r\n if (placeholder && dynamicElements[placeholder] && dynamicElements[placeholder].type === 'table' && dynamicElements[placeholder].config) {\r\n const tableConfig = dynamicElements[placeholder].config!;\r\n const defaultTableOptions = this.config.tableStyle || {};\r\n autotable(this.doc, {\r\n startY: this.curY,\r\n head: [tableConfig.head],\r\n body: tableConfig.body,\r\n ...defaultTableOptions,\r\n ...tableConfig.options,\r\n ...tableConfig.styles\r\n });\r\n this.curY = (this.doc as any).lastAutoTable.finalY + this.config.staccoriga;\r\n } else {\r\n if (sub.titolo) {\r\n let titleText = this.applyTemplate(sub.titolo, dynamicFields);\r\n titleText = this.applyPartiPlaceholders(titleText, params.parti);\r\n if (this.isBoxedText(titleText)) {\r\n const boxText = this.stripBoxMarkers(titleText);\r\n await this.writeBoxedText(boxText, this.config.fontSottotitolo);\r\n } else if (this.isBoldText(titleText)) {\r\n const boldText = this.stripBoldMarkers(titleText);\r\n\r\n await this.writeWrappedTextWithFont({ ...this.config.fontSottotitolo, nome: this.config.fontSottotitolo.nome },\r\n boldText, this.curX + this.config.rientro, this.curY, maxWidth - this.config.rientro);\r\n } else {\r\n await this.writeWrappedTextWithFont(this.config.fontSottotitolo, titleText, this.curX + this.config.rientro, this.curY, maxWidth - this.config.rientro);\r\n }\r\n this.curY += this.config.staccoriga;\r\n }\r\n }\r\n const contentPlaceholder = this.extractPlaceholder(sub.contenuto);\r\n if (contentPlaceholder && dynamicElements[contentPlaceholder] && dynamicElements[contentPlaceholder].type === 'table' && dynamicElements[contentPlaceholder].config) {\r\n const tableConfig = dynamicElements[contentPlaceholder].config!;\r\n const defaultTableOptions = this.config.tableStyle || {};\r\n autotable(this.doc, {\r\n startY: this.curY,\r\n head: [tableConfig.head],\r\n body: tableConfig.body,\r\n ...defaultTableOptions,\r\n ...tableConfig.options,\r\n ...tableConfig.styles\r\n });\r\n this.curY = (this.doc as any).lastAutoTable.finalY + this.config.staccoriga;\r\n } else if (sub.contenuto) {\r\n let contenuto = this.applyTemplate(sub.contenuto, dynamicFields);\r\n contenuto = this.applyPartiPlaceholders(contenuto, params.parti);\r\n if (this.isBoxedText(contenuto)) {\r\n const boxText = this.stripBoxMarkers(contenuto);\r\n await this.writeBoxedText(boxText, this.config.fontTesto);\r\n } else if (this.isBoldText(contenuto)) {\r\n const boldText = this.stripBoldMarkers(contenuto);\r\n await this.writeWrappedTextWithFont({ ...this.config.fontTesto, nome: this.config.fontTesto.nome },\r\n boldText, this.curX + this.config.rientro, this.curY, maxWidth - this.config.rientro);\r\n } else {\r\n await this.writeWrappedTextWithFont(this.config.fontTesto, contenuto, this.curX + this.config.rientro, this.curY, maxWidth - this.config.rientro);\r\n }\r\n this.curY += this.config.staccoriga;\r\n }\r\n }\r\n this.curY += this.config.staccoriga;\r\n }\r\n const tipOutput = params.tipOutput || 'd';\r\n const fileName = `Documento_${params.parti.cliente.denominazione}.pdf`;\r\n if (tipOutput === 'd') {\r\n const pdfBuffer = this.doc.output('arraybuffer');\r\n await fs.writeFile(fileName, Buffer.from(pdfBuffer));\r\n return fileName;\r\n } else if (tipOutput === 'u') {\r\n return this.doc.output('arraybuffer');\r\n } else {\r\n return this.doc.output('arraybuffer');\r\n }\r\n }\r\n}"]}
1
+ {"version":3,"file":"ContractGenerator.js","sourceRoot":"","sources":["../src/ContractGenerator.ts"],"names":[],"mappings":"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","sourcesContent":["import { jsPDF } from \"jspdf\";\nimport autotable, { Styles, UserOptions } from \"jspdf-autotable\";\nimport { promises as fs } from 'fs';\nimport path from 'path';\n\nexport interface IPartiContratto {\n fornitore: { denominazione: string; codiceFiscale: string; indirizzoCompleto: string; };\n cliente: { denominazione: string; codiceFiscale: string; indirizzoCompleto: string; };\n}\n\nexport interface DocumentParams {\n parti: IPartiContratto;\n tipOutput?: 'f' | 'd' | 'u';\n dynamicFields?: { [key: string]: string };\n dynamicElements?: { [placeholder: string]: DynamicElement };\n}\n\nexport type DynamicElement = {\n type: 'table';\n config: {\n head: string[];\n body: string[][];\n options?: UserOptions;\n styles?: Partial<Styles>;\n };\n};\n\ninterface DocumentConfig {\n fontTitolo: { nome: string; dimensione: number; colore: string; installPath?: string; };\n fontSottotitolo: { nome: string; dimensione: number; colore: string; installPath?: string; };\n fontTesto: { nome: string; dimensione: number; colore: string; installPath?: string; };\n fontBold: { nome: string; dimensione: number; colore: string; installPath?: string; };\n margini: { sx: number; dx: number; alto: number; basso: number; };\n staccoriga: number;\n rientro: number;\n testi: {\n titolo: string;\n premessa: string;\n Punti: Array<{ titolo: string; Sottopunti: Array<{ titolo: string; contenuto: string; }>; }>;\n versione: string;\n };\n immagini: Array<{ path: string; posizione: [number, number]; dimensioni: [number, number]; coeffDim?: number; }>;\n box: { backgrund: string; raggio: number; };\n tableStyle?: { lineColor?: string; lineWidth?: number; font?: string; fontSize?: number; cellPadding?: number; fillColor?: string; };\n}\n\nasync function loadImageAsBase64(imagePath: string): Promise<string> {\n const absolutePath = path.resolve(imagePath);\n const buffer = await fs.readFile(absolutePath);\n const ext = path.extname(imagePath).slice(1).toLowerCase();\n const base64 = buffer.toString('base64');\n return `data:image/${ext};base64,${base64}`;\n}\n\nexport class DocumentGenerator {\n private config!: DocumentConfig;\n private doc!: jsPDF;\n private curX: number = 0;\n private curY: number = 0;\n private configLoaded: boolean = false;\n\n constructor(private configPath?: string) { }\n\n public setConfig(config: DocumentConfig) {\n this.config = config;\n this.configLoaded = true;\n }\n\n private applyTemplate(template: string, dynamicFields?: { [key: string]: string }): string {\n if (!dynamicFields) return template;\n return template.replace(/\\$(\\w+)\\$/g, (match, key) =>\n dynamicFields[key] !== undefined ? dynamicFields[key] : match\n );\n }\n\n private applyPartiPlaceholders(text: string, parti: IPartiContratto): string {\n return text.replace(/\\$(fornitore|cliente):(\\w+)\\$/g, (match: string, party: string, field: string) => {\n const partyData = (parti as unknown as Record<string, Record<string, string> | undefined>)[party];\n const value = partyData?.[field];\n return value ?? match;\n });\n }\n\n private async loadConfig(): Promise<void> {\n if (this.configLoaded) return;\n if (!this.configPath) throw new Error(\"No configuration provided.\");\n try {\n const data = await fs.readFile(this.configPath, 'utf8');\n this.config = JSON.parse(data) as DocumentConfig;\n this.configLoaded = true;\n } catch (error) {\n throw new Error(`Error reading configuration file: ${error}`);\n }\n }\n\n private initDoc(): void {\n this.doc = new jsPDF();\n const margins = this.config.margini;\n this.curX = margins.sx;\n this.curY = margins.alto;\n }\n\n private extractPlaceholder(text: string): string | null {\n const match = text.match(/^\\$(\\w+)\\$$/);\n return match ? (match[1] ?? null) : null;\n }\n\n private async installFont(fontPath: string, fontName: string): Promise<void> {\n const absolutePath = path.resolve(fontPath);\n const buffer = await fs.readFile(absolutePath);\n const base64Font = buffer.toString('base64');\n //console.log(`Installing font ${fontName} from ${absolutePath}`);\n this.doc.addFileToVFS(`${fontName}.ttf`, base64Font);\n this.doc.addFont(`${fontName}.ttf`, fontName, 'normal');\n this.doc.setFont(fontName);\n }\n\n // Writes wrapped text, handling inline bold segments.\n private async writeWrappedTextCore(\n fontName: string,\n fontSize: number,\n color: string,\n text: string,\n x: number,\n y: number,\n maxWidth: number,\n lineSpacingFactor: number = 1.15\n ): Promise<number> {\n this.doc.setFont(fontName);\n this.doc.setFontSize(fontSize);\n this.doc.setTextColor(color);\n const lines = this.doc.splitTextToSize(text, maxWidth);\n const lineHeight = (fontSize * lineSpacingFactor / 72) * 25.4;\n for (const line of lines) {\n if (y + lineHeight > (this.doc.internal.pageSize.getHeight() - this.config.margini.basso)) {\n this.doc.addPage();\n y = this.config.margini.alto;\n }\n // If the line contains inline bold markers, process them.\n if (line.includes(\"**\")) {\n y = await this.writeLineWithInlineBold(line, x, y, fontName, fontSize, color, maxWidth, lineSpacingFactor);\n } else {\n this.doc.text(line, x, y);\n y += lineHeight;\n }\n }\n return y;\n }\n\n // Writes a single line with inline bold processing.\n private async writeLineWithInlineBold(\n line: string,\n x: number,\n y: number,\n normalFont: string,\n fontSize: number,\n color: string,\n _maxWidth: number,\n lineSpacingFactor: number = 1.15\n ): Promise<number> {\n let currentX = x;\n // Split the line by bold segments. The regex keeps the markers.\n const segments = line.split(/(\\*\\*.*?\\*\\*)/);\n const lineHeight = (fontSize * lineSpacingFactor / 72) * 25.4;\n for (const seg of segments) {\n let segText = seg;\n let useBold = false;\n if (seg.startsWith(\"**\") && seg.endsWith(\"**\")) {\n useBold = true;\n segText = seg.substring(2, seg.length - 2);\n }\n if (useBold) {\n this.doc.setFont(this.config.fontBold.nome);\n } else {\n this.doc.setFont(normalFont);\n }\n this.doc.setFontSize(fontSize);\n this.doc.setTextColor(color);\n const segWidth = this.doc.getTextWidth(segText);\n // Write segment\n this.doc.text(segText, currentX, y);\n currentX += segWidth;\n }\n return y + lineHeight;\n }\n\n private async writeWrappedTextWithFont(\n fontConf: { nome: string; dimensione: number; colore: string; installPath?: string },\n text: string,\n x: number,\n y: number,\n maxWidth: number,\n lineSpacingFactor: number = 1.15\n ): Promise<void> {\n const fontList = this.doc.getFontList();\n if (!fontList[fontConf.nome]) {\n if (fontConf.installPath) await this.installFont(fontConf.installPath, fontConf.nome);\n else throw new Error(\"Font not present and no installPath provided\");\n } else {\n this.doc.setFont(fontConf.nome);\n }\n this.curY = await this.writeWrappedTextCore(fontConf.nome, fontConf.dimensione, fontConf.colore, text, x, y, maxWidth, lineSpacingFactor);\n }\n\n public async writeBoxedText(\n text: string,\n fontConf: { nome: string; dimensione: number; colore: string; installPath?: string },\n padding: number = 5,\n borderRadius: number = 5,\n borderWidth: number = 1,\n boxColor?: string\n ): Promise<void> {\n const fontList = this.doc.getFontList();\n if (!fontList[fontConf.nome]) {\n if (fontConf.installPath) await this.installFont(fontConf.installPath, fontConf.nome);\n else throw new Error(\"Font not present and no installPath provided\");\n } else {\n this.doc.setFont(fontConf.nome);\n }\n this.doc.setFontSize(fontConf.dimensione);\n this.doc.setTextColor(fontConf.colore);\n const pageWidth = this.doc.internal.pageSize.getWidth();\n const maxTextWidth = pageWidth - this.config.margini.sx - this.config.margini.dx - 2 * padding;\n const lines = this.doc.splitTextToSize(text, maxTextWidth);\n const lineHeight = (fontConf.dimensione * 1.15 / 72) * 25.4;\n const textHeight = lines.length * lineHeight;\n const boxX = this.curX;\n const boxY = this.curY;\n const boxWidth = maxTextWidth + 2 * padding;\n const boxHeight = textHeight + 2 * padding;\n if (boxColor) {\n this.doc.setFillColor(boxColor);\n this.doc.roundedRect(boxX, boxY, boxWidth, boxHeight, borderRadius, borderRadius, \"F\");\n }\n this.doc.setLineWidth(borderWidth);\n this.doc.roundedRect(boxX, boxY, boxWidth, boxHeight, borderRadius, borderRadius);\n const textX = boxX + padding;\n let textY = boxY + padding + lineHeight;\n for (const line of lines) {\n if (line.includes(\"**\")) {\n textY = await this.writeLineWithInlineBold(line, textX, textY, fontConf.nome, fontConf.dimensione, fontConf.colore, maxTextWidth, 1.15);\n } else {\n this.doc.text(line, textX, textY);\n textY += lineHeight;\n }\n }\n this.curY = boxY + boxHeight + this.config.staccoriga;\n }\n\n\n // Checks if text is wrapped in '^' markers for boxed text.\n private isBoxedText(text: string): boolean {\n return text.startsWith('^') && text.endsWith('^');\n }\n\n // Removes '^' markers.\n private stripBoxMarkers(text: string): string {\n return text.substring(1, text.length - 1);\n }\n\n // Checks if text is entirely wrapped in '**' markers (not inline).\n // (This function is kept for backward compatibility.)\n private isBoldText(text: string): boolean {\n return text.startsWith('**') && text.endsWith('**');\n }\n\n // Removes '**' markers.\n private stripBoldMarkers(text: string): string {\n return text.substring(2, text.length - 2);\n }\n\n // Inserts images using the current cursor position.\n private async insertLogo(): Promise<void> {\n if (this.config.immagini && this.config.immagini.length > 0) {\n const startX = this.curX;\n for (const imgConf of this.config.immagini) {\n const format = imgConf.path.split('.').pop()?.toUpperCase() || 'PNG';\n const base64Image = await loadImageAsBase64(imgConf.path);\n const startY = this.curY;\n if (startY + imgConf.dimensioni[1] > (this.doc.internal.pageSize.getHeight() - this.config.margini.basso)) {\n this.doc.addPage();\n this.curY = this.config.margini.alto;\n }\n this.doc.addImage(base64Image, format, startX, this.curY, imgConf.dimensioni[0], imgConf.dimensioni[1]);\n //console.log(`Image inserted at X: ${startX}, Y: ${this.curY}`);\n this.curY = this.curY + imgConf.dimensioni[1] + this.config.staccoriga;\n }\n }\n }\n\n // Generates the PDF document by processing images, dynamic fields, tables, and text.\n // Supports inline bold formatting and boxed text.\n public async generateDocument(params: DocumentParams): Promise<string | ArrayBuffer> {\n await this.loadConfig();\n this.initDoc();\n await this.insertLogo();\n const dynamicFields = params.dynamicFields || {};\n const dynamicElements = params.dynamicElements || {};\n const pageWidth = this.doc.internal.pageSize.getWidth();\n const maxWidth = pageWidth - (this.config.margini.sx + this.config.margini.dx);\n let titolo = this.applyTemplate(this.config.testi.titolo, dynamicFields);\n titolo = this.applyPartiPlaceholders(titolo, params.parti);\n await this.writeWrappedTextWithFont(this.config.fontTitolo, titolo, this.curX, this.curY, maxWidth);\n this.curY += this.config.staccoriga;\n let premessa = this.applyTemplate(this.config.testi.premessa, dynamicFields);\n premessa = this.applyPartiPlaceholders(premessa, params.parti);\n await this.writeWrappedTextWithFont(this.config.fontTesto, premessa, this.curX, this.curY, maxWidth);\n this.curY += this.config.staccoriga;\n for (const punto of this.config.testi.Punti) {\n let puntoTitolo = this.applyTemplate(punto.titolo, dynamicFields);\n puntoTitolo = this.applyPartiPlaceholders(puntoTitolo, params.parti);\n await this.writeWrappedTextWithFont(this.config.fontTitolo, puntoTitolo, this.curX, this.curY, maxWidth);\n this.curY += this.config.staccoriga;\n for (const sub of punto.Sottopunti) {\n const placeholder = this.extractPlaceholder(sub.titolo);\n if (placeholder && dynamicElements[placeholder] && dynamicElements[placeholder].type === 'table' && dynamicElements[placeholder].config) {\n const tableConfig = dynamicElements[placeholder].config!;\n const defaultTableOptions = this.config.tableStyle || {};\n autotable(this.doc, {\n startY: this.curY,\n head: [tableConfig.head],\n body: tableConfig.body,\n ...defaultTableOptions,\n ...tableConfig.options,\n ...tableConfig.styles\n });\n this.curY = ((this.doc as unknown) as { lastAutoTable: { finalY: number } }).lastAutoTable.finalY + this.config.staccoriga;\n } else {\n if (sub.titolo) {\n let titleText = this.applyTemplate(sub.titolo, dynamicFields);\n titleText = this.applyPartiPlaceholders(titleText, params.parti);\n if (this.isBoxedText(titleText)) {\n const boxText = this.stripBoxMarkers(titleText);\n await this.writeBoxedText(boxText, this.config.fontSottotitolo);\n } else if (this.isBoldText(titleText)) {\n const boldText = this.stripBoldMarkers(titleText);\n\n await this.writeWrappedTextWithFont({ ...this.config.fontSottotitolo, nome: this.config.fontSottotitolo.nome },\n boldText, this.curX + this.config.rientro, this.curY, maxWidth - this.config.rientro);\n } else {\n await this.writeWrappedTextWithFont(this.config.fontSottotitolo, titleText, this.curX + this.config.rientro, this.curY, maxWidth - this.config.rientro);\n }\n this.curY += this.config.staccoriga;\n }\n }\n const contentPlaceholder = this.extractPlaceholder(sub.contenuto);\n if (contentPlaceholder && dynamicElements[contentPlaceholder] && dynamicElements[contentPlaceholder].type === 'table' && dynamicElements[contentPlaceholder].config) {\n const tableConfig = dynamicElements[contentPlaceholder].config!;\n const defaultTableOptions = this.config.tableStyle || {};\n autotable(this.doc, {\n startY: this.curY,\n head: [tableConfig.head],\n body: tableConfig.body,\n ...defaultTableOptions,\n ...tableConfig.options,\n ...tableConfig.styles\n });\n this.curY = ((this.doc as unknown) as { lastAutoTable: { finalY: number } }).lastAutoTable.finalY + this.config.staccoriga;\n } else if (sub.contenuto) {\n let contenuto = this.applyTemplate(sub.contenuto, dynamicFields);\n contenuto = this.applyPartiPlaceholders(contenuto, params.parti);\n if (this.isBoxedText(contenuto)) {\n const boxText = this.stripBoxMarkers(contenuto);\n await this.writeBoxedText(boxText, this.config.fontTesto);\n } else if (this.isBoldText(contenuto)) {\n const boldText = this.stripBoldMarkers(contenuto);\n await this.writeWrappedTextWithFont({ ...this.config.fontTesto, nome: this.config.fontTesto.nome },\n boldText, this.curX + this.config.rientro, this.curY, maxWidth - this.config.rientro);\n } else {\n await this.writeWrappedTextWithFont(this.config.fontTesto, contenuto, this.curX + this.config.rientro, this.curY, maxWidth - this.config.rientro);\n }\n this.curY += this.config.staccoriga;\n }\n }\n this.curY += this.config.staccoriga;\n }\n const tipOutput = params.tipOutput || 'd';\n // Sanitizza il nome: evita path traversal e caratteri non validi nel filesystem.\n const safeDenominazione = params.parti.cliente.denominazione\n .replace(/[\\\\/:*?\"<>|\\u0000-\\u001f]/g, '_')\n .replace(/\\.+$/, '')\n .trim() || 'cliente';\n const fileName = `Documento_${safeDenominazione}.pdf`;\n if (tipOutput === 'd') {\n const pdfBuffer = this.doc.output('arraybuffer');\n await fs.writeFile(fileName, Buffer.from(pdfBuffer));\n return fileName;\n } else if (tipOutput === 'u') {\n return this.doc.output('arraybuffer');\n } else {\n return this.doc.output('arraybuffer');\n }\n }\n}\n"]}
@@ -0,0 +1,21 @@
1
+ import Transport from 'winston-transport';
2
+ type LogInfo = {
3
+ time?: Date;
4
+ [key: string]: unknown;
5
+ [key: symbol]: unknown;
6
+ };
7
+ /** One append-only JSON-lines file per local calendar day, including idle days. */
8
+ export declare class DailyFileTransport extends Transport {
9
+ private readonly directory;
10
+ private timer?;
11
+ constructor(directory: string);
12
+ private filename;
13
+ private touchToday;
14
+ private scheduleMidnight;
15
+ log(info: LogInfo, callback: (error?: Error | null) => void): void;
16
+ close(): void;
17
+ logv(chunks: {
18
+ chunk: LogInfo;
19
+ }[], callback: (error?: Error | null) => void): void;
20
+ }
21
+ export {};