emilsoftware-utilities 2.0.0-dev.23 → 2.0.0-dev.24

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 (297) hide show
  1. package/README.MD +182 -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 +8 -2
  6. package/dist/DailyFileTransport.js +9 -2
  7. package/dist/DailyFileTransport.js.map +1 -1
  8. package/dist/DatabaseUpdater.js +32 -27
  9. package/dist/DatabaseUpdater.js.map +1 -1
  10. package/dist/EmilsoftwareModule.js.map +1 -1
  11. package/dist/ExecutionTimeLogger.d.ts +2 -2
  12. package/dist/ExecutionTimeLogger.js +3 -2
  13. package/dist/ExecutionTimeLogger.js.map +1 -1
  14. package/dist/Logger.d.ts +22 -9
  15. package/dist/Logger.js +131 -54
  16. package/dist/Logger.js.map +1 -1
  17. package/dist/Orm.d.ts +26 -6
  18. package/dist/Orm.js +144 -40
  19. package/dist/Orm.js.map +1 -1
  20. package/dist/RoutesLoggerMiddleware.js.map +1 -1
  21. package/dist/Utilities.d.ts +12 -7
  22. package/dist/Utilities.js +57 -22
  23. package/dist/Utilities.js.map +1 -1
  24. package/dist/accessi-module/AccessiModule.d.ts +9 -0
  25. package/dist/accessi-module/AccessiModule.js +12 -4
  26. package/dist/accessi-module/AccessiModule.js.map +1 -1
  27. package/dist/accessi-module/Console/console.css +529 -281
  28. package/dist/accessi-module/Console/console.js +2081 -85
  29. package/dist/accessi-module/Console/console.js.map +1 -1
  30. package/dist/accessi-module/Console/generated/accessiApi.d.ts +167 -1
  31. package/dist/accessi-module/Console/generated/accessiApi.js +156 -2
  32. package/dist/accessi-module/Console/generated/accessiApi.js.map +1 -1
  33. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.d.ts +20 -8
  34. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.js.map +1 -1
  35. package/dist/accessi-module/Console/generated/model/abilitazioneMenuIcona.d.ts +12 -0
  36. package/dist/accessi-module/Console/generated/model/abilitazioneMenuIcona.js +9 -0
  37. package/dist/accessi-module/Console/generated/model/abilitazioneMenuIcona.js.map +1 -0
  38. package/dist/accessi-module/Console/generated/model/abilitazioneMenuNote.d.ts +12 -0
  39. package/dist/accessi-module/Console/generated/model/abilitazioneMenuNote.js +9 -0
  40. package/dist/accessi-module/Console/generated/model/abilitazioneMenuNote.js.map +1 -0
  41. package/dist/accessi-module/Console/generated/model/abilitazioneMenuPagina.d.ts +12 -0
  42. package/dist/accessi-module/Console/generated/model/abilitazioneMenuPagina.js +9 -0
  43. package/dist/accessi-module/Console/generated/model/abilitazioneMenuPagina.js.map +1 -0
  44. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipo.d.ts +12 -0
  45. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipo.js +9 -0
  46. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipo.js.map +1 -0
  47. package/dist/accessi-module/Console/generated/model/createFilterTypeRequest.d.ts +23 -0
  48. package/dist/accessi-module/Console/generated/model/createFilterTypeRequest.js +3 -0
  49. package/dist/accessi-module/Console/generated/model/createFilterTypeRequest.js.map +1 -0
  50. package/dist/accessi-module/Console/generated/model/createFilterTypeRequestFlgEnabled.d.ts +14 -0
  51. package/dist/accessi-module/Console/generated/model/createFilterTypeRequestFlgEnabled.js +15 -0
  52. package/dist/accessi-module/Console/generated/model/createFilterTypeRequestFlgEnabled.js.map +1 -0
  53. package/dist/accessi-module/Console/generated/model/createMenuGroupRequest.d.ts +27 -0
  54. package/dist/accessi-module/Console/generated/model/createMenuGroupRequest.js +9 -0
  55. package/dist/accessi-module/Console/generated/model/createMenuGroupRequest.js.map +1 -0
  56. package/dist/accessi-module/Console/generated/model/createMenuRequest.d.ts +52 -0
  57. package/dist/accessi-module/Console/generated/model/createMenuRequest.js +9 -0
  58. package/dist/accessi-module/Console/generated/model/createMenuRequest.js.map +1 -0
  59. package/dist/accessi-module/Console/generated/model/createMenuTypeRequest.d.ts +18 -0
  60. package/dist/accessi-module/Console/generated/model/createMenuTypeRequest.js +9 -0
  61. package/dist/accessi-module/Console/generated/model/createMenuTypeRequest.js.map +1 -0
  62. package/dist/accessi-module/Console/generated/model/createServiceTokenRequest.d.ts +16 -0
  63. package/dist/accessi-module/Console/generated/model/createServiceTokenRequest.js +9 -0
  64. package/dist/accessi-module/Console/generated/model/createServiceTokenRequest.js.map +1 -0
  65. package/dist/accessi-module/Console/generated/model/createServiceTokenResponse.d.ts +14 -0
  66. package/dist/accessi-module/Console/generated/model/createServiceTokenResponse.js +3 -0
  67. package/dist/accessi-module/Console/generated/model/createServiceTokenResponse.js.map +1 -0
  68. package/dist/accessi-module/Console/generated/model/getMenuTypesResponse.d.ts +14 -0
  69. package/dist/accessi-module/Console/generated/model/getMenuTypesResponse.js +3 -0
  70. package/dist/accessi-module/Console/generated/model/getMenuTypesResponse.js.map +1 -0
  71. package/dist/accessi-module/Console/generated/model/getServiceTokensParams.d.ts +12 -0
  72. package/dist/accessi-module/Console/generated/model/getServiceTokensParams.js +9 -0
  73. package/dist/accessi-module/Console/generated/model/getServiceTokensParams.js.map +1 -0
  74. package/dist/accessi-module/Console/generated/model/getServiceTokensResponse.d.ts +14 -0
  75. package/dist/accessi-module/Console/generated/model/getServiceTokensResponse.js +3 -0
  76. package/dist/accessi-module/Console/generated/model/getServiceTokensResponse.js.map +1 -0
  77. package/dist/accessi-module/Console/generated/model/getUsersParams.d.ts +8 -0
  78. package/dist/accessi-module/Console/generated/model/getUsersParams.js.map +1 -1
  79. package/dist/accessi-module/Console/generated/model/index.d.ts +18 -0
  80. package/dist/accessi-module/Console/generated/model/index.js +18 -0
  81. package/dist/accessi-module/Console/generated/model/index.js.map +1 -1
  82. package/dist/accessi-module/Console/generated/model/issuedServiceTokenDto.d.ts +30 -0
  83. package/dist/accessi-module/Console/generated/model/issuedServiceTokenDto.js +9 -0
  84. package/dist/accessi-module/Console/generated/model/issuedServiceTokenDto.js.map +1 -0
  85. package/dist/accessi-module/Console/generated/model/menuTypeEntity.d.ts +12 -0
  86. package/dist/accessi-module/Console/generated/model/menuTypeEntity.js +9 -0
  87. package/dist/accessi-module/Console/generated/model/menuTypeEntity.js.map +1 -0
  88. package/dist/accessi-module/Console/generated/model/publicRegisterRequestCellulare.d.ts +13 -0
  89. package/dist/accessi-module/Console/generated/model/publicRegisterRequestCellulare.js +9 -0
  90. package/dist/accessi-module/Console/generated/model/publicRegisterRequestCellulare.js.map +1 -0
  91. package/dist/accessi-module/Console/generated/model/registerRequestCellulare.d.ts +13 -0
  92. package/dist/accessi-module/Console/generated/model/registerRequestCellulare.js +9 -0
  93. package/dist/accessi-module/Console/generated/model/registerRequestCellulare.js.map +1 -0
  94. package/dist/accessi-module/Console/generated/model/serviceTokenDto.d.ts +28 -0
  95. package/dist/accessi-module/Console/generated/model/serviceTokenDto.js +9 -0
  96. package/dist/accessi-module/Console/generated/model/serviceTokenDto.js.map +1 -0
  97. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequest.d.ts +21 -0
  98. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequest.js +3 -0
  99. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequest.js.map +1 -0
  100. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequestFlgEnabled.d.ts +14 -0
  101. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequestFlgEnabled.js +15 -0
  102. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequestFlgEnabled.js.map +1 -0
  103. package/dist/accessi-module/Console/generated/model/updateMenuGroupRequest.d.ts +22 -0
  104. package/dist/accessi-module/Console/generated/model/updateMenuGroupRequest.js +9 -0
  105. package/dist/accessi-module/Console/generated/model/updateMenuGroupRequest.js.map +1 -0
  106. package/dist/accessi-module/Console/generated/model/updateMenuRequest.d.ts +47 -0
  107. package/dist/accessi-module/Console/generated/model/updateMenuRequest.js +9 -0
  108. package/dist/accessi-module/Console/generated/model/updateMenuRequest.js.map +1 -0
  109. package/dist/accessi-module/Console/generated/model/updateMenuTypeRequest.d.ts +13 -0
  110. package/dist/accessi-module/Console/generated/model/updateMenuTypeRequest.js +9 -0
  111. package/dist/accessi-module/Console/generated/model/updateMenuTypeRequest.js.map +1 -0
  112. package/dist/accessi-module/Console/generated/model/userDtoAvatar.d.ts +13 -0
  113. package/dist/accessi-module/Console/generated/model/userDtoAvatar.js +9 -0
  114. package/dist/accessi-module/Console/generated/model/userDtoAvatar.js.map +1 -0
  115. package/dist/accessi-module/Console/generated/model/userDtoCellulare.d.ts +13 -0
  116. package/dist/accessi-module/Console/generated/model/userDtoCellulare.js +9 -0
  117. package/dist/accessi-module/Console/generated/model/userDtoCellulare.js.map +1 -0
  118. package/dist/accessi-module/Console/help.d.ts +13 -0
  119. package/dist/accessi-module/Console/help.js +348 -0
  120. package/dist/accessi-module/Console/help.js.map +1 -0
  121. package/dist/accessi-module/Console/index.html +89 -21
  122. package/dist/accessi-module/Console/openApiClient.d.ts +34 -0
  123. package/dist/accessi-module/Console/openApiClient.js +111 -0
  124. package/dist/accessi-module/Console/openApiClient.js.map +1 -0
  125. package/dist/accessi-module/Console/wiki.d.ts +52 -0
  126. package/dist/accessi-module/Console/wiki.js +689 -0
  127. package/dist/accessi-module/Console/wiki.js.map +1 -0
  128. package/dist/accessi-module/Controllers/AccessiConsoleController.d.ts +8 -1
  129. package/dist/accessi-module/Controllers/AccessiConsoleController.js +52 -15
  130. package/dist/accessi-module/Controllers/AccessiConsoleController.js.map +1 -1
  131. package/dist/accessi-module/Controllers/ConfiguratorController.d.ts +1 -3
  132. package/dist/accessi-module/Controllers/ConfiguratorController.js +6 -8
  133. package/dist/accessi-module/Controllers/ConfiguratorController.js.map +1 -1
  134. package/dist/accessi-module/Controllers/EmailController.d.ts +1 -1
  135. package/dist/accessi-module/Controllers/EmailController.js +1 -1
  136. package/dist/accessi-module/Controllers/EmailController.js.map +1 -1
  137. package/dist/accessi-module/Controllers/FiltriController.d.ts +5 -4
  138. package/dist/accessi-module/Controllers/FiltriController.js +92 -4
  139. package/dist/accessi-module/Controllers/FiltriController.js.map +1 -1
  140. package/dist/accessi-module/Controllers/PermissionController.d.ts +11 -0
  141. package/dist/accessi-module/Controllers/PermissionController.js +273 -8
  142. package/dist/accessi-module/Controllers/PermissionController.js.map +1 -1
  143. package/dist/accessi-module/Controllers/ServiceTokenController.d.ts +23 -0
  144. package/dist/accessi-module/Controllers/ServiceTokenController.js +176 -0
  145. package/dist/accessi-module/Controllers/ServiceTokenController.js.map +1 -0
  146. package/dist/accessi-module/Controllers/UserController.d.ts +2 -2
  147. package/dist/accessi-module/Controllers/UserController.js +25 -9
  148. package/dist/accessi-module/Controllers/UserController.js.map +1 -1
  149. package/dist/accessi-module/Dtos/Abilitazione.js.map +1 -1
  150. package/dist/accessi-module/Dtos/AbilitazioneMenu.js +16 -8
  151. package/dist/accessi-module/Dtos/AbilitazioneMenu.js.map +1 -1
  152. package/dist/accessi-module/Dtos/AssignPermissionsToUserRequest.js.map +1 -1
  153. package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js.map +1 -1
  154. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.js.map +1 -1
  155. package/dist/accessi-module/Dtos/BaseResponse.js.map +1 -1
  156. package/dist/accessi-module/Dtos/CatalogDtos.d.ts +66 -0
  157. package/dist/accessi-module/Dtos/CatalogDtos.js +336 -0
  158. package/dist/accessi-module/Dtos/CatalogDtos.js.map +1 -0
  159. package/dist/accessi-module/Dtos/ConfirmResetPasswordRequest.js.map +1 -1
  160. package/dist/accessi-module/Dtos/FiltriUtente.js.map +1 -1
  161. package/dist/accessi-module/Dtos/GetGroupsWithMenusResponse.js.map +1 -1
  162. package/dist/accessi-module/Dtos/GetMenusResponse.js +1 -1
  163. package/dist/accessi-module/Dtos/GetMenusResponse.js.map +1 -1
  164. package/dist/accessi-module/Dtos/GetRolesResponse.js.map +1 -1
  165. package/dist/accessi-module/Dtos/GetUserByTokenRequest.js.map +1 -1
  166. package/dist/accessi-module/Dtos/GetUserByTokenResponse.js.map +1 -1
  167. package/dist/accessi-module/Dtos/GetUsersResponse.d.ts +1 -1
  168. package/dist/accessi-module/Dtos/GetUsersResponse.js.map +1 -1
  169. package/dist/accessi-module/Dtos/LoginRequest.js.map +1 -1
  170. package/dist/accessi-module/Dtos/LoginResponse.d.ts +1 -1
  171. package/dist/accessi-module/Dtos/LoginResponse.js +1 -1
  172. package/dist/accessi-module/Dtos/LoginResponse.js.map +1 -1
  173. package/dist/accessi-module/Dtos/MenuItem.js +1 -0
  174. package/dist/accessi-module/Dtos/Permission.js.map +1 -1
  175. package/dist/accessi-module/Dtos/RegisterRequest.js +2 -1
  176. package/dist/accessi-module/Dtos/RegisterRequest.js.map +1 -1
  177. package/dist/accessi-module/Dtos/RegisterResponse.js.map +1 -1
  178. package/dist/accessi-module/Dtos/Role.js.map +1 -1
  179. package/dist/accessi-module/Dtos/RuoliMenu.js.map +1 -1
  180. package/dist/accessi-module/Dtos/SendResetPasswordEmailRequest.js.map +1 -1
  181. package/dist/accessi-module/Dtos/ServiceToken.d.ts +34 -0
  182. package/dist/accessi-module/Dtos/ServiceToken.js +128 -0
  183. package/dist/accessi-module/Dtos/ServiceToken.js.map +1 -0
  184. package/dist/accessi-module/Dtos/SetStatoRegistrazione.js.map +1 -1
  185. package/dist/accessi-module/Dtos/StatoRegistrazione.js.map +1 -1
  186. package/dist/accessi-module/Dtos/TipoAbilitazione.js.map +1 -1
  187. package/dist/accessi-module/Dtos/TipoFiltro.js.map +1 -1
  188. package/dist/accessi-module/Dtos/TokenResult.js.map +1 -1
  189. package/dist/accessi-module/Dtos/TwoFactorDtos.js.map +1 -1
  190. package/dist/accessi-module/Dtos/UpdateEnabledStatusRequest.js.map +1 -1
  191. package/dist/accessi-module/Dtos/UserDto.js +4 -2
  192. package/dist/accessi-module/Dtos/UserDto.js.map +1 -1
  193. package/dist/accessi-module/Dtos/UserGrantsDto.js.map +1 -1
  194. package/dist/accessi-module/Dtos/UserGrantsResponse.js.map +1 -1
  195. package/dist/accessi-module/Dtos/index.d.ts +2 -0
  196. package/dist/accessi-module/Dtos/index.js +2 -0
  197. package/dist/accessi-module/Dtos/index.js.map +1 -1
  198. package/dist/accessi-module/Services/AuthService/AuthService.d.ts +2 -2
  199. package/dist/accessi-module/Services/AuthService/AuthService.js +36 -36
  200. package/dist/accessi-module/Services/AuthService/AuthService.js.map +1 -1
  201. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.js.map +1 -1
  202. package/dist/accessi-module/Services/EmailService/EmailService.d.ts +2 -1
  203. package/dist/accessi-module/Services/EmailService/EmailService.js +20 -17
  204. package/dist/accessi-module/Services/EmailService/EmailService.js.map +1 -1
  205. package/dist/accessi-module/Services/FiltriService/FiltriService.d.ts +10 -3
  206. package/dist/accessi-module/Services/FiltriService/FiltriService.js +64 -6
  207. package/dist/accessi-module/Services/FiltriService/FiltriService.js.map +1 -1
  208. package/dist/accessi-module/Services/PermissionService/PermissionService.d.ts +44 -1
  209. package/dist/accessi-module/Services/PermissionService/PermissionService.js +508 -200
  210. package/dist/accessi-module/Services/PermissionService/PermissionService.js.map +1 -1
  211. package/dist/accessi-module/Services/ServiceTokenService/ServiceTokenService.d.ts +75 -0
  212. package/dist/accessi-module/Services/ServiceTokenService/ServiceTokenService.js +265 -0
  213. package/dist/accessi-module/Services/ServiceTokenService/ServiceTokenService.js.map +1 -0
  214. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.js +23 -27
  215. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.js.map +1 -1
  216. package/dist/accessi-module/Services/UserService/UserService.d.ts +10 -3
  217. package/dist/accessi-module/Services/UserService/UserService.js +241 -155
  218. package/dist/accessi-module/Services/UserService/UserService.js.map +1 -1
  219. package/dist/accessi-module/Views/reset-password.html +213 -213
  220. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.d.ts +8 -0
  221. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js +89 -55
  222. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js.map +1 -1
  223. package/dist/accessi-module/database-updates/accessiSchema.d.ts +1 -1
  224. package/dist/accessi-module/database-updates/accessiSchema.js +9 -1
  225. package/dist/accessi-module/database-updates/accessiSchema.js.map +1 -1
  226. package/dist/accessi-module/database-updates/optionalColumns.d.ts +2 -0
  227. package/dist/accessi-module/database-updates/optionalColumns.js +33 -1
  228. package/dist/accessi-module/database-updates/optionalColumns.js.map +1 -1
  229. package/dist/accessi-module/database-updates/runAccessiDbUpdate.js +7 -2
  230. package/dist/accessi-module/database-updates/runAccessiDbUpdate.js.map +1 -1
  231. package/dist/accessi-module/federated-auth/FederatedAuthController.d.ts +1 -0
  232. package/dist/accessi-module/federated-auth/FederatedAuthController.js +26 -0
  233. package/dist/accessi-module/federated-auth/FederatedAuthController.js.map +1 -1
  234. package/dist/accessi-module/federated-auth/FederatedAuthService.d.ts +6 -0
  235. package/dist/accessi-module/federated-auth/FederatedAuthService.js +28 -1
  236. package/dist/accessi-module/federated-auth/FederatedAuthService.js.map +1 -1
  237. package/dist/accessi-module/index.d.ts +4 -1
  238. package/dist/accessi-module/index.js +8 -2
  239. package/dist/accessi-module/index.js.map +1 -1
  240. package/dist/accessi-module/jwt/jwt.strategy.js +8 -5
  241. package/dist/accessi-module/jwt/jwt.strategy.js.map +1 -1
  242. package/dist/accessi-module/middleware/accessiRequirements.d.ts +1 -1
  243. package/dist/accessi-module/middleware/accessiRequirements.js.map +1 -1
  244. package/dist/accessi-module/middleware/authenticateGen.js +11 -7
  245. package/dist/accessi-module/middleware/authenticateGen.js.map +1 -1
  246. package/dist/accessi-module/security/accessControl.js +8 -3
  247. package/dist/accessi-module/security/accessControl.js.map +1 -1
  248. package/dist/accessi-module/security/authenticatedToken.d.ts +1 -1
  249. package/dist/accessi-module/security/authenticatedToken.js +2 -1
  250. package/dist/accessi-module/security/authenticatedToken.js.map +1 -1
  251. package/dist/accessi-module/security/passwordResetToken.d.ts +9 -3
  252. package/dist/accessi-module/security/passwordResetToken.js +9 -5
  253. package/dist/accessi-module/security/passwordResetToken.js.map +1 -1
  254. package/dist/accessi-module/security/publicAuthRateLimit.d.ts +1 -1
  255. package/dist/accessi-module/security/publicAuthRateLimit.js +28 -8
  256. package/dist/accessi-module/security/publicAuthRateLimit.js.map +1 -1
  257. package/dist/accessi-module/security/serviceTokenGuard.d.ts +25 -0
  258. package/dist/accessi-module/security/serviceTokenGuard.js +85 -0
  259. package/dist/accessi-module/security/serviceTokenGuard.js.map +1 -0
  260. package/dist/accessi-module/security/serviceTokenRateLimit.d.ts +8 -0
  261. package/dist/accessi-module/security/serviceTokenRateLimit.js +49 -0
  262. package/dist/accessi-module/security/serviceTokenRateLimit.js.map +1 -0
  263. package/dist/allegati-module/AllegatiModule.d.ts +11 -0
  264. package/dist/allegati-module/AllegatiModule.js +11 -1
  265. package/dist/allegati-module/AllegatiModule.js.map +1 -1
  266. package/dist/allegati-module/Controllers/AllegatiController.d.ts +2 -1
  267. package/dist/allegati-module/Controllers/AllegatiController.js +23 -15
  268. package/dist/allegati-module/Controllers/AllegatiController.js.map +1 -1
  269. package/dist/allegati-module/Dtos/AllegatoDto.js.map +1 -1
  270. package/dist/allegati-module/Dtos/BaseResponse.js.map +1 -1
  271. package/dist/allegati-module/Dtos/UploadSingleFileRequest.js.map +1 -1
  272. package/dist/allegati-module/Dtos/index.js.map +1 -1
  273. package/dist/allegati-module/Dtos/responses/DownloadAllegatoResponseDto.js.map +1 -1
  274. package/dist/allegati-module/Dtos/responses/GetListResponse.js.map +1 -1
  275. package/dist/allegati-module/Dtos/responses/UploadAllegatoResponseDto.js.map +1 -1
  276. package/dist/allegati-module/Services/AllegatiService/AllegatiService.d.ts +10 -3
  277. package/dist/allegati-module/Services/AllegatiService/AllegatiService.js +150 -101
  278. package/dist/allegati-module/Services/AllegatiService/AllegatiService.js.map +1 -1
  279. package/dist/allegati-module/index.js.map +1 -1
  280. package/dist/allegati-module/security/allegatiAuthorizationGuard.d.ts +14 -0
  281. package/dist/allegati-module/security/allegatiAuthorizationGuard.js +70 -0
  282. package/dist/allegati-module/security/allegatiAuthorizationGuard.js.map +1 -0
  283. package/dist/autobind.d.ts +10 -3
  284. package/dist/autobind.js +24 -9
  285. package/dist/autobind.js.map +1 -1
  286. package/dist/firebird-compat.d.ts +13 -0
  287. package/dist/firebird-compat.js +3 -2
  288. package/dist/firebird-compat.js.map +1 -1
  289. package/dist/index.js.map +1 -1
  290. package/dist/initEmilsoftwareModule.js.map +1 -1
  291. package/dist/scripts/generateAccessiWiki.d.ts +1 -0
  292. package/dist/scripts/generateAccessiWiki.js +131 -0
  293. package/dist/scripts/generateAccessiWiki.js.map +1 -0
  294. package/dist/swagger/SwaggerConfig.js +6 -3
  295. package/dist/swagger/SwaggerConfig.js.map +1 -1
  296. package/package.json +103 -92
  297. package/dist/emilsoftware-utilities-2.0.0-dev.23.tgz +0 -0
@@ -13,45 +13,113 @@
13
13
  <link rel="stylesheet" href="/api/accessi/console/assets/console.css">
14
14
  </head>
15
15
  <body>
16
- <div id="loading-overlay" hidden aria-live="polite" aria-busy="true">
16
+ <div id="loading-overlay" aria-live="polite" aria-busy="true">
17
17
  <div class="loading-panel" role="status">
18
18
  <span class="loading-spinner" aria-hidden="true"></span>
19
- <span><strong>Operazione in corso</strong><small>Attendere il completamento della richiesta.</small></span>
19
+ <span><strong>Caricamento</strong><small>Verifica della sessione in corso.</small></span>
20
20
  </div>
21
21
  </div>
22
22
  <main id="app">
23
- <section id="login" class="card" aria-labelledby="login-title">
23
+ <section id="login" class="card" aria-labelledby="login-title" hidden>
24
24
  <h1 id="login-title">Accessi Console</h1>
25
- <p>Gestione centralizzata di utenti, ruoli, grant e identità SSO.</p>
25
+ <p>Gestione di utenti, ruoli, grant e accessi.</p>
26
26
  <form id="login-form" method="post" action="" novalidate>
27
- <label>Email o utente<input name="email" required autocomplete="username"></label>
28
- <label id="password-field" hidden>Password<input name="password" type="password" autocomplete="current-password" disabled></label>
27
+ <label>Email o utente <button type="button" class="help-dot" data-help="login-email" aria-label="Aiuto: Email o utente">i</button><input name="email" required autocomplete="username"></label>
28
+ <label id="password-field" hidden>Password <button type="button" class="help-dot" data-help="login-password" aria-label="Aiuto: Password">i</button><input name="password" type="password" autocomplete="current-password" disabled></label>
29
29
  <button id="login-submit" type="submit">Continua</button>
30
30
  </form>
31
31
  <form id="two-factor-form" hidden>
32
- <p>Inserisci il codice ricevuto via email per completare l'accesso.</p>
32
+ <p class="form-help">Inserisci il codice ricevuto via email.</p>
33
33
  <label>Codice di accesso<input name="code" inputmode="numeric" autocomplete="one-time-code" pattern="[0-9]{6}" minlength="6" maxlength="6" required></label>
34
34
  <p id="two-factor-status" class="form-help" role="status"></p>
35
35
  <button type="submit">Verifica e accedi</button>
36
36
  <button id="resend-code" type="button" class="secondary">Invia un nuovo codice</button>
37
37
  </form>
38
- <button id="restart-login" type="button" class="secondary" hidden>Ricomincia l'accesso</button>
38
+ <button id="restart-login" type="button" class="secondary" hidden>Ricomincia</button>
39
39
  <p id="login-error" class="error" role="alert"></p>
40
40
  </section>
41
+
41
42
  <section id="console" hidden>
42
- <header>
43
- <div><strong>Accessi Console</strong><small id="who"></small></div>
44
- <button id="logout" class="secondary" type="button">Esci</button>
45
- </header>
46
- <nav id="nav" aria-label="Sezioni console">
47
- <a data-view="users" href="./utenti">Utenti</a>
48
- <a data-view="roles" href="./ruoli-e-grant">Ruoli e grant</a>
49
- <a data-view="menus" href="./menu-e-gruppi">Menu e gruppi</a>
50
- <a data-view="filters" href="./filtri">Filtri</a>
51
- <a id="sso-navigation" data-view="sso" href="./sso" hidden>SSO</a>
52
- </nav>
53
- <div id="notice" role="status" aria-live="polite"></div>
54
- <section id="view" aria-live="polite"></section>
43
+ <aside class="sidebar">
44
+ <div class="brand">
45
+ <span class="brand-mark" aria-hidden="true">A</span>
46
+ <span class="brand-text"><strong>Accessi</strong><small id="who"></small></span>
47
+ </div>
48
+ <nav id="nav" aria-label="Sezioni console">
49
+ <ul class="nav-tree">
50
+ <li>
51
+ <a data-view="users" href="./utenti">
52
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/></svg>
53
+ <span>Utenti</span>
54
+ </a>
55
+ </li>
56
+ <li>
57
+ <a data-view="roles" href="./ruoli-e-grant">
58
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/><path d="M9 12l2 2 4-4"/></svg>
59
+ <span>Ruoli e grant</span>
60
+ </a>
61
+ </li>
62
+ <li>
63
+ <details data-nav-group="menus" open>
64
+ <summary>
65
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polygon points="12 2 2 7 12 12 22 7 12 2"/><polyline points="2 17 12 22 22 17"/><polyline points="2 12 12 17 22 12"/></svg>
66
+ <span>Menu e gruppi</span>
67
+ <svg class="nav-chevron" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="9 6 15 12 9 18"/></svg>
68
+ </summary>
69
+ <ul>
70
+ <li><a data-view="menuGroups" href="./menu-e-gruppi/gruppi">Gruppi</a></li>
71
+ <li><a data-view="menuItems" href="./menu-e-gruppi/menu">Menu</a></li>
72
+ <li><a data-view="menuTypes" href="./menu-e-gruppi/tipi-menu">Tipi menu</a></li>
73
+ </ul>
74
+ </details>
75
+ </li>
76
+ <li>
77
+ <details data-nav-group="filters" open>
78
+ <summary>
79
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polygon points="22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3"/></svg>
80
+ <span>Filtri</span>
81
+ <svg class="nav-chevron" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="9 6 15 12 9 18"/></svg>
82
+ </summary>
83
+ <ul>
84
+ <li><a data-view="filterUser" href="./filtri/utente">Filtri utente</a></li>
85
+ <li><a data-view="filterTypes" href="./filtri/tipi">Tipi filtro</a></li>
86
+ </ul>
87
+ </details>
88
+ </li>
89
+ <li>
90
+ <a data-view="tokens" href="./token-di-servizio">
91
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.778 7.778 5.5 5.5 0 0 1 7.777-7.777zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4"/></svg>
92
+ <span>Token di servizio</span>
93
+ </a>
94
+ </li>
95
+ <li>
96
+ <details id="sso-navigation" data-nav-group="sso" open hidden>
97
+ <summary>
98
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.07 0l3-3a5 5 0 0 0-7.07-7.07l-1.5 1.5"/><path d="M14 11a5 5 0 0 0-7.07 0l-3 3a5 5 0 0 0 7.07 7.07l1.5-1.5"/></svg>
99
+ <span>SSO</span>
100
+ <svg class="nav-chevron" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="9 6 15 12 9 18"/></svg>
101
+ </summary>
102
+ <ul>
103
+ <li><a data-view="ssoProviders" href="./sso/provider">Provider</a></li>
104
+ <li><a data-view="ssoUsers" href="./sso/utenti">Utenti e identità</a></li>
105
+ </ul>
106
+ </details>
107
+ </li>
108
+ <li>
109
+ <a data-view="wiki" href="./wiki">
110
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"/><path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"/></svg>
111
+ <span>Wiki</span>
112
+ </a>
113
+ </li>
114
+ </ul>
115
+ </nav>
116
+ <button id="logout" class="secondary sidebar-logout" type="button">Esci</button>
117
+ </aside>
118
+
119
+ <div class="content">
120
+ <div id="notice" role="status" aria-live="polite"></div>
121
+ <section id="view" aria-live="polite"></section>
122
+ </div>
55
123
  </section>
56
124
  </main>
57
125
  <script type="module" src="/api/accessi/console/assets/console.js"></script>
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Client leggero della console amministrativa.
3
+ *
4
+ * Non contiene endpoint duplicati: al primo utilizzo legge la specifica OpenAPI
5
+ * esposta dalla stessa istanza Accessi e risolve ogni chiamata dal relativo
6
+ * operationId. Quando le API cambiano, Swagger resta quindi l'unica fonte di
7
+ * verita per metodo HTTP, URL e parametri.
8
+ */
9
+ export type AccessiConsoleOperation = 'login' | 'getUserByToken' | 'getUsers' | 'createManagedUser' | 'updateUtente' | 'deleteUser' | 'getRoles' | 'createRole' | 'updateRole' | 'assignRolesToUser' | 'assignPermissionsToUser' | 'getMenus' | 'getGroupsWithMenus' | 'getUserRolesAndGrants' | 'setMenuEnabled' | 'setGroupEnabled' | 'getTipiFiltro' | 'getFiltriUtente' | 'saveFiltriUtente' | 'getFederatedIdentities' | 'linkFederatedIdentity' | 'createFederatedUser' | 'updateFederatedIdentity' | 'disableFederatedIdentity' | 'setPasswordLoginPolicy';
10
+ export type AccessiConsoleRequest = {
11
+ path?: Record<string, string | number>;
12
+ query?: Record<string, string | number | boolean | undefined>;
13
+ body?: unknown;
14
+ };
15
+ /** Gestisce le chiamate HTTP della console secondo la specifica Swagger attiva. */
16
+ export declare class AccessiOpenApiClient {
17
+ private readonly apiBasePath;
18
+ private readonly swaggerPath;
19
+ private readonly getToken;
20
+ private readonly operations;
21
+ private documentPromise?;
22
+ constructor(apiBasePath: string, swaggerPath: string, getToken: () => string | null);
23
+ /** Carica la specifica una sola volta e indicizza le operationId disponibili. */
24
+ initialize(): Promise<void>;
25
+ /** Esegue un'operazione Swagger e restituisce direttamente il campo Result storico. */
26
+ request<T = unknown>(operationId: AccessiConsoleOperation, request?: AccessiConsoleRequest): Promise<T>;
27
+ private loadDocument;
28
+ /**
29
+ * Ponte di compatibilita per le viste preesistenti della console.
30
+ * La rotta passata non e usata per costruire la richiesta: viene soltanto
31
+ * confrontata con Swagger per individuare la operationId e i path parameter.
32
+ */
33
+ requestByLegacyUrl<T = unknown>(url: string, method?: string, body?: unknown): Promise<T>;
34
+ }
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AccessiOpenApiClient = void 0;
13
+ /** Gestisce le chiamate HTTP della console secondo la specifica Swagger attiva. */
14
+ class AccessiOpenApiClient {
15
+ constructor(apiBasePath = '/api/accessi', swaggerPath = '/api/accessi/swagger.json', getToken) {
16
+ this.apiBasePath = apiBasePath;
17
+ this.swaggerPath = swaggerPath;
18
+ this.getToken = getToken;
19
+ this.operations = new Map();
20
+ }
21
+ /** Carica la specifica una sola volta e indicizza le operationId disponibili. */
22
+ initialize() {
23
+ return __awaiter(this, void 0, void 0, function* () {
24
+ if (!this.documentPromise)
25
+ this.documentPromise = this.loadDocument();
26
+ return this.documentPromise;
27
+ });
28
+ }
29
+ /** Esegue un'operazione Swagger e restituisce direttamente il campo Result storico. */
30
+ request(operationId_1) {
31
+ return __awaiter(this, arguments, void 0, function* (operationId, request = {}) {
32
+ var _a, _b;
33
+ yield this.initialize();
34
+ const operation = this.operations.get(operationId);
35
+ if (!operation)
36
+ throw new Error(`L'operazione Swagger ${operationId} non e disponibile in questa istanza di Accessi.`);
37
+ const path = operation.path.replace(/\{([^}]+)\}/g, (_, name) => {
38
+ var _a;
39
+ const value = (_a = request.path) === null || _a === void 0 ? void 0 : _a[name];
40
+ if (value === undefined || value === null)
41
+ throw new Error(`Manca il parametro di percorso ${name} per ${operationId}.`);
42
+ return encodeURIComponent(String(value));
43
+ });
44
+ const query = new URLSearchParams();
45
+ for (const [name, value] of Object.entries((_a = request.query) !== null && _a !== void 0 ? _a : {})) {
46
+ if (value !== undefined && value !== null)
47
+ query.set(name, String(value));
48
+ }
49
+ const response = yield fetch(`${this.apiBasePath}${path}${query.size ? `?${query}` : ''}`, {
50
+ method: operation.method,
51
+ headers: Object.assign(Object.assign({}, (this.getToken() ? { Authorization: `Bearer ${this.getToken()}` } : {})), (request.body === undefined ? {} : { 'Content-Type': 'application/json' })),
52
+ body: request.body === undefined ? undefined : JSON.stringify(request.body),
53
+ });
54
+ const payload = yield response.json().catch(() => ({}));
55
+ if (!response.ok)
56
+ throw new Error(payload.message || payload.error || `Errore HTTP ${response.status}`);
57
+ return ((_b = payload.Result) !== null && _b !== void 0 ? _b : payload);
58
+ });
59
+ }
60
+ loadDocument() {
61
+ return __awaiter(this, void 0, void 0, function* () {
62
+ var _a;
63
+ const response = yield fetch(this.swaggerPath, { headers: { Accept: 'application/json' } });
64
+ if (!response.ok)
65
+ throw new Error('Impossibile caricare la specifica Swagger di Accessi.');
66
+ const document = (yield response.json());
67
+ for (const [path, pathItem] of Object.entries((_a = document.paths) !== null && _a !== void 0 ? _a : {})) {
68
+ for (const [method, definition] of Object.entries(pathItem)) {
69
+ if (definition === null || definition === void 0 ? void 0 : definition.operationId) {
70
+ this.operations.set(definition.operationId, {
71
+ operationId: definition.operationId,
72
+ method: method.toUpperCase(),
73
+ path,
74
+ });
75
+ }
76
+ }
77
+ }
78
+ });
79
+ }
80
+ /**
81
+ * Ponte di compatibilita per le viste preesistenti della console.
82
+ * La rotta passata non e usata per costruire la richiesta: viene soltanto
83
+ * confrontata con Swagger per individuare la operationId e i path parameter.
84
+ */
85
+ requestByLegacyUrl(url_1) {
86
+ return __awaiter(this, arguments, void 0, function* (url, method = 'GET', body) {
87
+ yield this.initialize();
88
+ const parsed = new URL(url, window.location.origin);
89
+ const relativePath = parsed.pathname.replace(this.apiBasePath, '');
90
+ const operation = [...this.operations.values()].find((candidate) => {
91
+ const expression = `^${candidate.path.replace(/\{[^}]+\}/g, '[^/]+')}$`;
92
+ return candidate.method === method.toUpperCase() && new RegExp(expression).test(relativePath);
93
+ });
94
+ if (!operation)
95
+ throw new Error(`Nessuna operation Swagger corrisponde a ${method} ${relativePath}.`);
96
+ const path = {};
97
+ const names = [...operation.path.matchAll(/\{([^}]+)\}/g)].map((match) => match[1]);
98
+ const values = relativePath.split('/').filter(Boolean);
99
+ const templates = operation.path.split('/').filter(Boolean);
100
+ templates.forEach((part, index) => {
101
+ const name = names.find((item) => part === `{${item}}`);
102
+ if (name)
103
+ path[name] = values[index];
104
+ });
105
+ const query = Object.fromEntries(parsed.searchParams.entries());
106
+ return this.request(operation.operationId, { path, query, body });
107
+ });
108
+ }
109
+ }
110
+ exports.AccessiOpenApiClient = AccessiOpenApiClient;
111
+ //# sourceMappingURL=openApiClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openApiClient.js","sourceRoot":"","sources":["../../../src/accessi-module/Console/openApiClient.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Client leggero della console amministrativa.\n *\n * Non contiene endpoint duplicati: al primo utilizzo legge la specifica OpenAPI\n * esposta dalla stessa istanza Accessi e risolve ogni chiamata dal relativo\n * operationId. Quando le API cambiano, Swagger resta quindi l'unica fonte di\n * verita per metodo HTTP, URL e parametri.\n */\nexport type AccessiConsoleOperation =\n | 'login'\n | 'getUserByToken'\n | 'getUsers'\n | 'createManagedUser'\n | 'updateUtente'\n | 'deleteUser'\n | 'getRoles'\n | 'createRole'\n | 'updateRole'\n | 'assignRolesToUser'\n | 'assignPermissionsToUser'\n | 'getMenus'\n | 'getGroupsWithMenus'\n | 'getUserRolesAndGrants'\n | 'setMenuEnabled'\n | 'setGroupEnabled'\n | 'getTipiFiltro'\n | 'getFiltriUtente'\n | 'saveFiltriUtente'\n | 'getFederatedIdentities'\n | 'linkFederatedIdentity'\n | 'createFederatedUser'\n | 'updateFederatedIdentity'\n | 'disableFederatedIdentity'\n | 'setPasswordLoginPolicy';\n\nexport type AccessiConsoleRequest = {\n path?: Record<string, string | number>;\n query?: Record<string, string | number | boolean | undefined>;\n body?: unknown;\n};\n\ntype OpenApiOperation = { operationId: AccessiConsoleOperation; method: string; path: string };\ntype OpenApiDocument = { paths?: Record<string, Record<string, { operationId?: string }>> };\n\n/** Gestisce le chiamate HTTP della console secondo la specifica Swagger attiva. */\nexport class AccessiOpenApiClient {\n private readonly operations = new Map<string, OpenApiOperation>();\n private documentPromise?: Promise<void>;\n\n constructor(\n private readonly apiBasePath = '/api/accessi',\n private readonly swaggerPath = '/api/accessi/swagger.json',\n private readonly getToken: () => string | null,\n ) {}\n\n /** Carica la specifica una sola volta e indicizza le operationId disponibili. */\n async initialize(): Promise<void> {\n if (!this.documentPromise) this.documentPromise = this.loadDocument();\n return this.documentPromise;\n }\n\n /** Esegue un'operazione Swagger e restituisce direttamente il campo Result storico. */\n async request<T = unknown>(operationId: AccessiConsoleOperation, request: AccessiConsoleRequest = {}): Promise<T> {\n await this.initialize();\n const operation = this.operations.get(operationId);\n if (!operation) throw new Error(`L'operazione Swagger ${operationId} non e disponibile in questa istanza di Accessi.`);\n\n const path = operation.path.replace(/\\{([^}]+)\\}/g, (_, name: string) => {\n const value = request.path?.[name];\n if (value === undefined || value === null) throw new Error(`Manca il parametro di percorso ${name} per ${operationId}.`);\n return encodeURIComponent(String(value));\n });\n const query = new URLSearchParams();\n for (const [name, value] of Object.entries(request.query ?? {})) {\n if (value !== undefined && value !== null) query.set(name, String(value));\n }\n\n const response = await fetch(`${this.apiBasePath}${path}${query.size ? `?${query}` : ''}`, {\n method: operation.method,\n headers: {\n ...(this.getToken() ? { Authorization: `Bearer ${this.getToken()}` } : {}),\n ...(request.body === undefined ? {} : { 'Content-Type': 'application/json' }),\n },\n body: request.body === undefined ? undefined : JSON.stringify(request.body),\n });\n const payload = await response.json().catch(() => ({}));\n if (!response.ok) throw new Error(payload.message || payload.error || `Errore HTTP ${response.status}`);\n return (payload.Result ?? payload) as T;\n }\n\n private async loadDocument(): Promise<void> {\n const response = await fetch(this.swaggerPath, { headers: { Accept: 'application/json' } });\n if (!response.ok) throw new Error('Impossibile caricare la specifica Swagger di Accessi.');\n const document = (await response.json()) as OpenApiDocument;\n for (const [path, pathItem] of Object.entries(document.paths ?? {})) {\n for (const [method, definition] of Object.entries(pathItem)) {\n if (definition?.operationId) {\n this.operations.set(definition.operationId, {\n operationId: definition.operationId as AccessiConsoleOperation,\n method: method.toUpperCase(),\n path,\n });\n }\n }\n }\n }\n\n /**\n * Ponte di compatibilita per le viste preesistenti della console.\n * La rotta passata non e usata per costruire la richiesta: viene soltanto\n * confrontata con Swagger per individuare la operationId e i path parameter.\n */\n async requestByLegacyUrl<T = unknown>(url: string, method = 'GET', body?: unknown): Promise<T> {\n await this.initialize();\n const parsed = new URL(url, window.location.origin);\n const relativePath = parsed.pathname.replace(this.apiBasePath, '');\n const operation = [...this.operations.values()].find((candidate) => {\n const expression = `^${candidate.path.replace(/\\{[^}]+\\}/g, '[^/]+')}$`;\n return candidate.method === method.toUpperCase() && new RegExp(expression).test(relativePath);\n });\n if (!operation) throw new Error(`Nessuna operation Swagger corrisponde a ${method} ${relativePath}.`);\n\n const path: Record<string, string> = {};\n const names = [...operation.path.matchAll(/\\{([^}]+)\\}/g)].map((match) => match[1]);\n const values = relativePath.split('/').filter(Boolean);\n const templates = operation.path.split('/').filter(Boolean);\n templates.forEach((part, index) => {\n const name = names.find((item) => part === `{${item}}`);\n if (name) path[name] = values[index];\n });\n const query = Object.fromEntries(parsed.searchParams.entries());\n return this.request<T>(operation.operationId, { path, query, body });\n }\n}\n"]}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Contenuto della Wiki della console Accessi.
3
+ *
4
+ * I contenuti sono dati strutturati (non HTML) così da poter essere resi in modo
5
+ * coerente dalla console e convertiti in un digest compatto per l'IA. Nessun
6
+ * segreto o dato specifico di un ambiente deve finire qui.
7
+ */
8
+ export type WikiTone = 'info' | 'ok' | 'warn' | 'danger';
9
+ export type WikiBlock = {
10
+ kind: 'p';
11
+ text: string;
12
+ } | {
13
+ kind: 'h';
14
+ text: string;
15
+ } | {
16
+ kind: 'list';
17
+ items: string[];
18
+ ordered?: boolean;
19
+ } | {
20
+ kind: 'code';
21
+ language: string;
22
+ title?: string;
23
+ code: string;
24
+ variant?: 'good' | 'bad';
25
+ } | {
26
+ kind: 'callout';
27
+ tone: WikiTone;
28
+ title?: string;
29
+ text: string;
30
+ } | {
31
+ kind: 'table';
32
+ head: string[];
33
+ rows: string[][];
34
+ };
35
+ export interface WikiSection {
36
+ id: string;
37
+ group: string;
38
+ title: string;
39
+ summary: string;
40
+ blocks: WikiBlock[];
41
+ }
42
+ export declare const WIKI_SECTIONS: WikiSection[];
43
+ /** Elenco ordinato dei gruppi per l'indice. */
44
+ export declare function wikiGroups(): Array<{
45
+ group: string;
46
+ sections: WikiSection[];
47
+ }>;
48
+ /**
49
+ * Digest compatto in Markdown per l'IA che costruisce il backend integratore.
50
+ * Deriva dagli stessi dati della wiki, quindi resta sincronizzato.
51
+ */
52
+ export declare function buildAiDigest(): string;