emilsoftware-utilities 2.0.0-dev.22 → 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 (550) 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 +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.js.map +1 -1
  11. package/dist/ExecutionTimeLogger.d.ts +2 -2
  12. package/dist/ExecutionTimeLogger.js +5 -4
  13. package/dist/ExecutionTimeLogger.js.map +1 -1
  14. package/dist/Logger.d.ts +22 -11
  15. package/dist/Logger.js +132 -119
  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 +18 -8
  22. package/dist/Utilities.js +115 -35
  23. package/dist/Utilities.js.map +1 -1
  24. package/dist/accessi-module/AccessiModule.d.ts +69 -0
  25. package/dist/accessi-module/AccessiModule.js +29 -5
  26. package/dist/accessi-module/AccessiModule.js.map +1 -1
  27. package/dist/accessi-module/Console/accessiFetch.d.ts +7 -0
  28. package/dist/accessi-module/Console/accessiFetch.js +59 -0
  29. package/dist/accessi-module/Console/accessiFetch.js.map +1 -0
  30. package/dist/accessi-module/Console/console.css +618 -0
  31. package/dist/accessi-module/Console/console.d.ts +1 -0
  32. package/dist/accessi-module/Console/console.js +3101 -0
  33. package/dist/accessi-module/Console/console.js.map +1 -0
  34. package/dist/accessi-module/Console/generated/accessiApi.d.ts +542 -0
  35. package/dist/accessi-module/Console/generated/accessiApi.js +517 -0
  36. package/dist/accessi-module/Console/generated/accessiApi.js.map +1 -0
  37. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.d.ts +39 -0
  38. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.js +3 -0
  39. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.js.map +1 -0
  40. package/dist/accessi-module/Console/generated/model/abilitazioneMenuIcona.d.ts +12 -0
  41. package/dist/accessi-module/Console/generated/model/abilitazioneMenuIcona.js +9 -0
  42. package/dist/accessi-module/Console/generated/model/abilitazioneMenuIcona.js.map +1 -0
  43. package/dist/accessi-module/Console/generated/model/abilitazioneMenuNote.d.ts +12 -0
  44. package/dist/accessi-module/Console/generated/model/abilitazioneMenuNote.js +9 -0
  45. package/dist/accessi-module/Console/generated/model/abilitazioneMenuNote.js.map +1 -0
  46. package/dist/accessi-module/Console/generated/model/abilitazioneMenuPagina.d.ts +12 -0
  47. package/dist/accessi-module/Console/generated/model/abilitazioneMenuPagina.js +9 -0
  48. package/dist/accessi-module/Console/generated/model/abilitazioneMenuPagina.js.map +1 -0
  49. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipo.d.ts +12 -0
  50. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipo.js +9 -0
  51. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipo.js.map +1 -0
  52. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.d.ts +16 -0
  53. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.js +17 -0
  54. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.js.map +1 -0
  55. package/dist/accessi-module/Console/generated/model/actionResponse.d.ts +12 -0
  56. package/dist/accessi-module/Console/generated/model/actionResponse.js +9 -0
  57. package/dist/accessi-module/Console/generated/model/actionResponse.js.map +1 -0
  58. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.d.ts +11 -0
  59. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.js +3 -0
  60. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.js.map +1 -0
  61. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.d.ts +10 -0
  62. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.js +9 -0
  63. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.js.map +1 -0
  64. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.d.ts +10 -0
  65. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.js +3 -0
  66. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.js.map +1 -0
  67. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.d.ts +19 -0
  68. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.js +9 -0
  69. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.js.map +1 -0
  70. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.d.ts +14 -0
  71. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.js +9 -0
  72. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.js.map +1 -0
  73. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.d.ts +13 -0
  74. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.js +9 -0
  75. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.js.map +1 -0
  76. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.d.ts +13 -0
  77. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.js +9 -0
  78. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.js.map +1 -0
  79. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.d.ts +18 -0
  80. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.js +3 -0
  81. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.js.map +1 -0
  82. package/dist/accessi-module/Console/generated/model/createFilterTypeRequest.d.ts +23 -0
  83. package/dist/accessi-module/Console/generated/model/createFilterTypeRequest.js +3 -0
  84. package/dist/accessi-module/Console/generated/model/createFilterTypeRequest.js.map +1 -0
  85. package/dist/accessi-module/Console/generated/model/createFilterTypeRequestFlgEnabled.d.ts +14 -0
  86. package/dist/accessi-module/Console/generated/model/createFilterTypeRequestFlgEnabled.js +15 -0
  87. package/dist/accessi-module/Console/generated/model/createFilterTypeRequestFlgEnabled.js.map +1 -0
  88. package/dist/accessi-module/Console/generated/model/createMenuGroupRequest.d.ts +27 -0
  89. package/dist/accessi-module/Console/generated/model/createMenuGroupRequest.js +9 -0
  90. package/dist/accessi-module/Console/generated/model/createMenuGroupRequest.js.map +1 -0
  91. package/dist/accessi-module/Console/generated/model/createMenuRequest.d.ts +52 -0
  92. package/dist/accessi-module/Console/generated/model/createMenuRequest.js +9 -0
  93. package/dist/accessi-module/Console/generated/model/createMenuRequest.js.map +1 -0
  94. package/dist/accessi-module/Console/generated/model/createMenuTypeRequest.d.ts +18 -0
  95. package/dist/accessi-module/Console/generated/model/createMenuTypeRequest.js +9 -0
  96. package/dist/accessi-module/Console/generated/model/createMenuTypeRequest.js.map +1 -0
  97. package/dist/accessi-module/Console/generated/model/createServiceTokenRequest.d.ts +16 -0
  98. package/dist/accessi-module/Console/generated/model/createServiceTokenRequest.js +9 -0
  99. package/dist/accessi-module/Console/generated/model/createServiceTokenRequest.js.map +1 -0
  100. package/dist/accessi-module/Console/generated/model/createServiceTokenResponse.d.ts +14 -0
  101. package/dist/accessi-module/Console/generated/model/createServiceTokenResponse.js +3 -0
  102. package/dist/accessi-module/Console/generated/model/createServiceTokenResponse.js.map +1 -0
  103. package/dist/accessi-module/Console/generated/model/errorResponse.d.ts +18 -0
  104. package/dist/accessi-module/Console/generated/model/errorResponse.js +9 -0
  105. package/dist/accessi-module/Console/generated/model/errorResponse.js.map +1 -0
  106. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.d.ts +14 -0
  107. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.js +3 -0
  108. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.js.map +1 -0
  109. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.d.ts +14 -0
  110. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.js +3 -0
  111. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.js.map +1 -0
  112. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.d.ts +23 -0
  113. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.js +9 -0
  114. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.js.map +1 -0
  115. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.d.ts +14 -0
  116. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.js +3 -0
  117. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.js.map +1 -0
  118. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.d.ts +14 -0
  119. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.js +3 -0
  120. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.js.map +1 -0
  121. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.d.ts +13 -0
  122. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.js +9 -0
  123. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.js.map +1 -0
  124. package/dist/accessi-module/Console/generated/model/filtriUtente.d.ts +32 -0
  125. package/dist/accessi-module/Console/generated/model/filtriUtente.js +9 -0
  126. package/dist/accessi-module/Console/generated/model/filtriUtente.js.map +1 -0
  127. package/dist/accessi-module/Console/generated/model/getFiltriResponse.d.ts +14 -0
  128. package/dist/accessi-module/Console/generated/model/getFiltriResponse.js +3 -0
  129. package/dist/accessi-module/Console/generated/model/getFiltriResponse.js.map +1 -0
  130. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.d.ts +12 -0
  131. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.js +9 -0
  132. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.js.map +1 -0
  133. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.d.ts +14 -0
  134. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.js +3 -0
  135. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.js.map +1 -0
  136. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.d.ts +12 -0
  137. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.js +9 -0
  138. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.js.map +1 -0
  139. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.d.ts +14 -0
  140. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.js +3 -0
  141. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.js.map +1 -0
  142. package/dist/accessi-module/Console/generated/model/getMenuTypesResponse.d.ts +14 -0
  143. package/dist/accessi-module/Console/generated/model/getMenuTypesResponse.js +3 -0
  144. package/dist/accessi-module/Console/generated/model/getMenuTypesResponse.js.map +1 -0
  145. package/dist/accessi-module/Console/generated/model/getMenusResponse.d.ts +14 -0
  146. package/dist/accessi-module/Console/generated/model/getMenusResponse.js +3 -0
  147. package/dist/accessi-module/Console/generated/model/getMenusResponse.js.map +1 -0
  148. package/dist/accessi-module/Console/generated/model/getRolesResponse.d.ts +14 -0
  149. package/dist/accessi-module/Console/generated/model/getRolesResponse.js +3 -0
  150. package/dist/accessi-module/Console/generated/model/getRolesResponse.js.map +1 -0
  151. package/dist/accessi-module/Console/generated/model/getServiceTokensParams.d.ts +12 -0
  152. package/dist/accessi-module/Console/generated/model/getServiceTokensParams.js +9 -0
  153. package/dist/accessi-module/Console/generated/model/getServiceTokensParams.js.map +1 -0
  154. package/dist/accessi-module/Console/generated/model/getServiceTokensResponse.d.ts +14 -0
  155. package/dist/accessi-module/Console/generated/model/getServiceTokensResponse.js +3 -0
  156. package/dist/accessi-module/Console/generated/model/getServiceTokensResponse.js.map +1 -0
  157. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.d.ts +10 -0
  158. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.js +9 -0
  159. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.js.map +1 -0
  160. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.d.ts +14 -0
  161. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.js +3 -0
  162. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.js.map +1 -0
  163. package/dist/accessi-module/Console/generated/model/getUsersParams.d.ts +32 -0
  164. package/dist/accessi-module/Console/generated/model/getUsersParams.js +9 -0
  165. package/dist/accessi-module/Console/generated/model/getUsersParams.js.map +1 -0
  166. package/dist/accessi-module/Console/generated/model/getUsersResponse.d.ts +14 -0
  167. package/dist/accessi-module/Console/generated/model/getUsersResponse.js +3 -0
  168. package/dist/accessi-module/Console/generated/model/getUsersResponse.js.map +1 -0
  169. package/dist/accessi-module/Console/generated/model/getUsersResult.d.ts +17 -0
  170. package/dist/accessi-module/Console/generated/model/getUsersResult.js +3 -0
  171. package/dist/accessi-module/Console/generated/model/getUsersResult.js.map +1 -0
  172. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.d.ts +12 -0
  173. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.js +9 -0
  174. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.js.map +1 -0
  175. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.d.ts +19 -0
  176. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.js +3 -0
  177. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.js.map +1 -0
  178. package/dist/accessi-module/Console/generated/model/index.d.ts +93 -0
  179. package/dist/accessi-module/Console/generated/model/index.js +110 -0
  180. package/dist/accessi-module/Console/generated/model/index.js.map +1 -0
  181. package/dist/accessi-module/Console/generated/model/issuedServiceTokenDto.d.ts +30 -0
  182. package/dist/accessi-module/Console/generated/model/issuedServiceTokenDto.js +9 -0
  183. package/dist/accessi-module/Console/generated/model/issuedServiceTokenDto.js.map +1 -0
  184. package/dist/accessi-module/Console/generated/model/loginRequest.d.ts +12 -0
  185. package/dist/accessi-module/Console/generated/model/loginRequest.js +9 -0
  186. package/dist/accessi-module/Console/generated/model/loginRequest.js.map +1 -0
  187. package/dist/accessi-module/Console/generated/model/loginResponse.d.ts +14 -0
  188. package/dist/accessi-module/Console/generated/model/loginResponse.js +3 -0
  189. package/dist/accessi-module/Console/generated/model/loginResponse.js.map +1 -0
  190. package/dist/accessi-module/Console/generated/model/loginResult.d.ts +32 -0
  191. package/dist/accessi-module/Console/generated/model/loginResult.js +3 -0
  192. package/dist/accessi-module/Console/generated/model/loginResult.js.map +1 -0
  193. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.d.ts +12 -0
  194. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.js +9 -0
  195. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.js.map +1 -0
  196. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.d.ts +13 -0
  197. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.js +14 -0
  198. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.js.map +1 -0
  199. package/dist/accessi-module/Console/generated/model/menuEntity.d.ts +32 -0
  200. package/dist/accessi-module/Console/generated/model/menuEntity.js +9 -0
  201. package/dist/accessi-module/Console/generated/model/menuEntity.js.map +1 -0
  202. package/dist/accessi-module/Console/generated/model/menuTypeEntity.d.ts +12 -0
  203. package/dist/accessi-module/Console/generated/model/menuTypeEntity.js +9 -0
  204. package/dist/accessi-module/Console/generated/model/menuTypeEntity.js.map +1 -0
  205. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.d.ts +12 -0
  206. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.js +9 -0
  207. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.js.map +1 -0
  208. package/dist/accessi-module/Console/generated/model/permission.d.ts +12 -0
  209. package/dist/accessi-module/Console/generated/model/permission.js +9 -0
  210. package/dist/accessi-module/Console/generated/model/permission.js.map +1 -0
  211. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.d.ts +51 -0
  212. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.js +9 -0
  213. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.js.map +1 -0
  214. package/dist/accessi-module/Console/generated/model/publicRegisterRequestCellulare.d.ts +13 -0
  215. package/dist/accessi-module/Console/generated/model/publicRegisterRequestCellulare.js +9 -0
  216. package/dist/accessi-module/Console/generated/model/publicRegisterRequestCellulare.js.map +1 -0
  217. package/dist/accessi-module/Console/generated/model/registerRequest.d.ts +62 -0
  218. package/dist/accessi-module/Console/generated/model/registerRequest.js +3 -0
  219. package/dist/accessi-module/Console/generated/model/registerRequest.js.map +1 -0
  220. package/dist/accessi-module/Console/generated/model/registerRequestCellulare.d.ts +13 -0
  221. package/dist/accessi-module/Console/generated/model/registerRequestCellulare.js +9 -0
  222. package/dist/accessi-module/Console/generated/model/registerRequestCellulare.js.map +1 -0
  223. package/dist/accessi-module/Console/generated/model/registerResponse.d.ts +14 -0
  224. package/dist/accessi-module/Console/generated/model/registerResponse.js +3 -0
  225. package/dist/accessi-module/Console/generated/model/registerResponse.js.map +1 -0
  226. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.d.ts +13 -0
  227. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.js +9 -0
  228. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.js.map +1 -0
  229. package/dist/accessi-module/Console/generated/model/role.d.ts +15 -0
  230. package/dist/accessi-module/Console/generated/model/role.js +3 -0
  231. package/dist/accessi-module/Console/generated/model/role.js.map +1 -0
  232. package/dist/accessi-module/Console/generated/model/ruoliMenu.d.ts +15 -0
  233. package/dist/accessi-module/Console/generated/model/ruoliMenu.js +3 -0
  234. package/dist/accessi-module/Console/generated/model/ruoliMenu.js.map +1 -0
  235. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.d.ts +16 -0
  236. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.js +17 -0
  237. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.js.map +1 -0
  238. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.d.ts +12 -0
  239. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.js +9 -0
  240. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.js.map +1 -0
  241. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.d.ts +12 -0
  242. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.js +9 -0
  243. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.js.map +1 -0
  244. package/dist/accessi-module/Console/generated/model/serviceTokenDto.d.ts +28 -0
  245. package/dist/accessi-module/Console/generated/model/serviceTokenDto.js +9 -0
  246. package/dist/accessi-module/Console/generated/model/serviceTokenDto.js.map +1 -0
  247. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.d.ts +10 -0
  248. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.js +9 -0
  249. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.js.map +1 -0
  250. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.d.ts +13 -0
  251. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.js +3 -0
  252. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.js.map +1 -0
  253. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.d.ts +18 -0
  254. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.js +19 -0
  255. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.js.map +1 -0
  256. package/dist/accessi-module/Console/generated/model/status.d.ts +12 -0
  257. package/dist/accessi-module/Console/generated/model/status.js +9 -0
  258. package/dist/accessi-module/Console/generated/model/status.js.map +1 -0
  259. package/dist/accessi-module/Console/generated/model/tipoFiltro.d.ts +23 -0
  260. package/dist/accessi-module/Console/generated/model/tipoFiltro.js +3 -0
  261. package/dist/accessi-module/Console/generated/model/tipoFiltro.js.map +1 -0
  262. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.d.ts +14 -0
  263. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.js +15 -0
  264. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.js.map +1 -0
  265. package/dist/accessi-module/Console/generated/model/tokenResult.d.ts +15 -0
  266. package/dist/accessi-module/Console/generated/model/tokenResult.js +3 -0
  267. package/dist/accessi-module/Console/generated/model/tokenResult.js.map +1 -0
  268. package/dist/accessi-module/Console/generated/model/tokenResultType.d.ts +14 -0
  269. package/dist/accessi-module/Console/generated/model/tokenResultType.js +15 -0
  270. package/dist/accessi-module/Console/generated/model/tokenResultType.js.map +1 -0
  271. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.d.ts +18 -0
  272. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.js +3 -0
  273. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.js.map +1 -0
  274. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.d.ts +10 -0
  275. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.js +14 -0
  276. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.js.map +1 -0
  277. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.d.ts +13 -0
  278. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.js +14 -0
  279. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.js.map +1 -0
  280. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.d.ts +10 -0
  281. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.js +9 -0
  282. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.js.map +1 -0
  283. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.d.ts +11 -0
  284. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.js +9 -0
  285. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.js.map +1 -0
  286. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.d.ts +12 -0
  287. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.js +9 -0
  288. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.js.map +1 -0
  289. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequest.d.ts +21 -0
  290. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequest.js +3 -0
  291. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequest.js.map +1 -0
  292. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequestFlgEnabled.d.ts +14 -0
  293. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequestFlgEnabled.js +15 -0
  294. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequestFlgEnabled.js.map +1 -0
  295. package/dist/accessi-module/Console/generated/model/updateMenuGroupRequest.d.ts +22 -0
  296. package/dist/accessi-module/Console/generated/model/updateMenuGroupRequest.js +9 -0
  297. package/dist/accessi-module/Console/generated/model/updateMenuGroupRequest.js.map +1 -0
  298. package/dist/accessi-module/Console/generated/model/updateMenuRequest.d.ts +47 -0
  299. package/dist/accessi-module/Console/generated/model/updateMenuRequest.js +9 -0
  300. package/dist/accessi-module/Console/generated/model/updateMenuRequest.js.map +1 -0
  301. package/dist/accessi-module/Console/generated/model/updateMenuTypeRequest.d.ts +13 -0
  302. package/dist/accessi-module/Console/generated/model/updateMenuTypeRequest.js +9 -0
  303. package/dist/accessi-module/Console/generated/model/updateMenuTypeRequest.js.map +1 -0
  304. package/dist/accessi-module/Console/generated/model/userDto.d.ts +88 -0
  305. package/dist/accessi-module/Console/generated/model/userDto.js +3 -0
  306. package/dist/accessi-module/Console/generated/model/userDto.js.map +1 -0
  307. package/dist/accessi-module/Console/generated/model/userDtoAvatar.d.ts +13 -0
  308. package/dist/accessi-module/Console/generated/model/userDtoAvatar.js +9 -0
  309. package/dist/accessi-module/Console/generated/model/userDtoAvatar.js.map +1 -0
  310. package/dist/accessi-module/Console/generated/model/userDtoCellulare.d.ts +13 -0
  311. package/dist/accessi-module/Console/generated/model/userDtoCellulare.js +9 -0
  312. package/dist/accessi-module/Console/generated/model/userDtoCellulare.js.map +1 -0
  313. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.d.ts +18 -0
  314. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.js +19 -0
  315. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.js.map +1 -0
  316. package/dist/accessi-module/Console/generated/model/userGrantsDto.d.ts +16 -0
  317. package/dist/accessi-module/Console/generated/model/userGrantsDto.js +3 -0
  318. package/dist/accessi-module/Console/generated/model/userGrantsDto.js.map +1 -0
  319. package/dist/accessi-module/Console/generated/model/userGrantsResponse.d.ts +14 -0
  320. package/dist/accessi-module/Console/generated/model/userGrantsResponse.js +3 -0
  321. package/dist/accessi-module/Console/generated/model/userGrantsResponse.js.map +1 -0
  322. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.d.ts +18 -0
  323. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.js +9 -0
  324. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.js.map +1 -0
  325. package/dist/accessi-module/Console/help.d.ts +13 -0
  326. package/dist/accessi-module/Console/help.js +348 -0
  327. package/dist/accessi-module/Console/help.js.map +1 -0
  328. package/dist/accessi-module/Console/index.html +127 -0
  329. package/dist/accessi-module/Console/openApiClient.d.ts +34 -0
  330. package/dist/accessi-module/Console/openApiClient.js +111 -0
  331. package/dist/accessi-module/Console/openApiClient.js.map +1 -0
  332. package/dist/accessi-module/Console/wiki.d.ts +52 -0
  333. package/dist/accessi-module/Console/wiki.js +689 -0
  334. package/dist/accessi-module/Console/wiki.js.map +1 -0
  335. package/dist/accessi-module/Controllers/AccessiConsoleController.d.ts +18 -0
  336. package/dist/accessi-module/Controllers/AccessiConsoleController.js +111 -0
  337. package/dist/accessi-module/Controllers/AccessiConsoleController.js.map +1 -0
  338. package/dist/accessi-module/Controllers/AuthController.d.ts +4 -1
  339. package/dist/accessi-module/Controllers/AuthController.js +86 -47
  340. package/dist/accessi-module/Controllers/AuthController.js.map +1 -1
  341. package/dist/accessi-module/Controllers/ConfiguratorController.d.ts +1 -3
  342. package/dist/accessi-module/Controllers/ConfiguratorController.js +9 -9
  343. package/dist/accessi-module/Controllers/ConfiguratorController.js.map +1 -1
  344. package/dist/accessi-module/Controllers/EmailController.d.ts +2 -2
  345. package/dist/accessi-module/Controllers/EmailController.js +4 -2
  346. package/dist/accessi-module/Controllers/EmailController.js.map +1 -1
  347. package/dist/accessi-module/Controllers/FiltriController.d.ts +5 -4
  348. package/dist/accessi-module/Controllers/FiltriController.js +95 -5
  349. package/dist/accessi-module/Controllers/FiltriController.js.map +1 -1
  350. package/dist/accessi-module/Controllers/PermissionController.d.ts +12 -1
  351. package/dist/accessi-module/Controllers/PermissionController.js +282 -13
  352. package/dist/accessi-module/Controllers/PermissionController.js.map +1 -1
  353. package/dist/accessi-module/Controllers/ServiceTokenController.d.ts +23 -0
  354. package/dist/accessi-module/Controllers/ServiceTokenController.js +176 -0
  355. package/dist/accessi-module/Controllers/ServiceTokenController.js.map +1 -0
  356. package/dist/accessi-module/Controllers/UserController.d.ts +5 -3
  357. package/dist/accessi-module/Controllers/UserController.js +65 -11
  358. package/dist/accessi-module/Controllers/UserController.js.map +1 -1
  359. package/dist/accessi-module/Dtos/Abilitazione.js.map +1 -1
  360. package/dist/accessi-module/Dtos/AbilitazioneMenu.js +16 -8
  361. package/dist/accessi-module/Dtos/AbilitazioneMenu.js.map +1 -1
  362. package/dist/accessi-module/Dtos/AssignPermissionsToUserRequest.js.map +1 -1
  363. package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js +1 -1
  364. package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js.map +1 -1
  365. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.d.ts +3 -0
  366. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.js +18 -0
  367. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.js.map +1 -1
  368. package/dist/accessi-module/Dtos/BaseResponse.d.ts +2 -0
  369. package/dist/accessi-module/Dtos/BaseResponse.js +21 -2
  370. package/dist/accessi-module/Dtos/BaseResponse.js.map +1 -1
  371. package/dist/accessi-module/Dtos/CatalogDtos.d.ts +66 -0
  372. package/dist/accessi-module/Dtos/CatalogDtos.js +336 -0
  373. package/dist/accessi-module/Dtos/CatalogDtos.js.map +1 -0
  374. package/dist/accessi-module/Dtos/ConfirmResetPasswordRequest.js.map +1 -1
  375. package/dist/accessi-module/Dtos/FederatedIdentityDtos.d.ts +69 -0
  376. package/dist/accessi-module/Dtos/FederatedIdentityDtos.js +236 -0
  377. package/dist/accessi-module/Dtos/FederatedIdentityDtos.js.map +1 -0
  378. package/dist/accessi-module/Dtos/FiltriUtente.js +4 -1
  379. package/dist/accessi-module/Dtos/FiltriUtente.js.map +1 -1
  380. package/dist/accessi-module/Dtos/GetGroupsWithMenusResponse.js.map +1 -1
  381. package/dist/accessi-module/Dtos/GetMenusResponse.js +1 -1
  382. package/dist/accessi-module/Dtos/GetMenusResponse.js.map +1 -1
  383. package/dist/accessi-module/Dtos/GetRolesResponse.js.map +1 -1
  384. package/dist/accessi-module/Dtos/GetUserByTokenRequest.js.map +1 -1
  385. package/dist/accessi-module/Dtos/GetUserByTokenResponse.js.map +1 -1
  386. package/dist/accessi-module/Dtos/GetUsersResponse.d.ts +1 -1
  387. package/dist/accessi-module/Dtos/GetUsersResponse.js.map +1 -1
  388. package/dist/accessi-module/Dtos/LoginRequest.d.ts +1 -1
  389. package/dist/accessi-module/Dtos/LoginRequest.js +3 -2
  390. package/dist/accessi-module/Dtos/LoginRequest.js.map +1 -1
  391. package/dist/accessi-module/Dtos/LoginResponse.d.ts +6 -2
  392. package/dist/accessi-module/Dtos/LoginResponse.js +20 -7
  393. package/dist/accessi-module/Dtos/LoginResponse.js.map +1 -1
  394. package/dist/accessi-module/Dtos/MenuItem.js +1 -0
  395. package/dist/accessi-module/Dtos/Permission.d.ts +1 -0
  396. package/dist/accessi-module/Dtos/Permission.js +1 -0
  397. package/dist/accessi-module/Dtos/Permission.js.map +1 -1
  398. package/dist/accessi-module/Dtos/PublicRegisterRequest.d.ts +1 -1
  399. package/dist/accessi-module/Dtos/PublicRegisterRequest.js +1 -0
  400. package/dist/accessi-module/Dtos/PublicRegisterRequest.js.map +1 -1
  401. package/dist/accessi-module/Dtos/RegisterRequest.js +3 -1
  402. package/dist/accessi-module/Dtos/RegisterRequest.js.map +1 -1
  403. package/dist/accessi-module/Dtos/RegisterResponse.js.map +1 -1
  404. package/dist/accessi-module/Dtos/Role.d.ts +4 -0
  405. package/dist/accessi-module/Dtos/Role.js +4 -0
  406. package/dist/accessi-module/Dtos/Role.js.map +1 -1
  407. package/dist/accessi-module/Dtos/RuoliMenu.js.map +1 -1
  408. package/dist/accessi-module/Dtos/SendResetPasswordEmailRequest.js.map +1 -1
  409. package/dist/accessi-module/Dtos/ServiceToken.d.ts +34 -0
  410. package/dist/accessi-module/Dtos/ServiceToken.js +128 -0
  411. package/dist/accessi-module/Dtos/ServiceToken.js.map +1 -0
  412. package/dist/accessi-module/Dtos/SetStatoRegistrazione.js.map +1 -1
  413. package/dist/accessi-module/Dtos/StatoRegistrazione.js.map +1 -1
  414. package/dist/accessi-module/Dtos/TipoAbilitazione.d.ts +4 -0
  415. package/dist/accessi-module/Dtos/TipoAbilitazione.js +4 -0
  416. package/dist/accessi-module/Dtos/TipoAbilitazione.js.map +1 -1
  417. package/dist/accessi-module/Dtos/TipoFiltro.js.map +1 -1
  418. package/dist/accessi-module/Dtos/TokenResult.js.map +1 -1
  419. package/dist/accessi-module/Dtos/TwoFactorDtos.d.ts +13 -0
  420. package/dist/accessi-module/Dtos/TwoFactorDtos.js +60 -0
  421. package/dist/accessi-module/Dtos/TwoFactorDtos.js.map +1 -0
  422. package/dist/accessi-module/Dtos/UpdateEnabledStatusRequest.js.map +1 -1
  423. package/dist/accessi-module/Dtos/UserDto.d.ts +7 -0
  424. package/dist/accessi-module/Dtos/UserDto.js +26 -2
  425. package/dist/accessi-module/Dtos/UserDto.js.map +1 -1
  426. package/dist/accessi-module/Dtos/UserGrantsDto.js.map +1 -1
  427. package/dist/accessi-module/Dtos/UserGrantsResponse.js.map +1 -1
  428. package/dist/accessi-module/Dtos/index.d.ts +4 -0
  429. package/dist/accessi-module/Dtos/index.js +4 -0
  430. package/dist/accessi-module/Dtos/index.js.map +1 -1
  431. package/dist/accessi-module/Services/AuthService/AuthService.d.ts +40 -5
  432. package/dist/accessi-module/Services/AuthService/AuthService.js +192 -40
  433. package/dist/accessi-module/Services/AuthService/AuthService.js.map +1 -1
  434. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.d.ts +3 -1
  435. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.js +5 -1
  436. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.js.map +1 -1
  437. package/dist/accessi-module/Services/EmailService/EmailService.d.ts +9 -2
  438. package/dist/accessi-module/Services/EmailService/EmailService.js +43 -22
  439. package/dist/accessi-module/Services/EmailService/EmailService.js.map +1 -1
  440. package/dist/accessi-module/Services/FiltriService/FiltriService.d.ts +18 -3
  441. package/dist/accessi-module/Services/FiltriService/FiltriService.js +92 -9
  442. package/dist/accessi-module/Services/FiltriService/FiltriService.js.map +1 -1
  443. package/dist/accessi-module/Services/PermissionService/PermissionService.d.ts +73 -2
  444. package/dist/accessi-module/Services/PermissionService/PermissionService.js +537 -198
  445. package/dist/accessi-module/Services/PermissionService/PermissionService.js.map +1 -1
  446. package/dist/accessi-module/Services/ServiceTokenService/ServiceTokenService.d.ts +75 -0
  447. package/dist/accessi-module/Services/ServiceTokenService/ServiceTokenService.js +265 -0
  448. package/dist/accessi-module/Services/ServiceTokenService/ServiceTokenService.js.map +1 -0
  449. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.d.ts +27 -0
  450. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.js +175 -0
  451. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.js.map +1 -0
  452. package/dist/accessi-module/Services/UserService/UserService.d.ts +36 -5
  453. package/dist/accessi-module/Services/UserService/UserService.js +341 -161
  454. package/dist/accessi-module/Services/UserService/UserService.js.map +1 -1
  455. package/dist/accessi-module/Views/reset-password.html +213 -213
  456. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.d.ts +46 -10
  457. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js +399 -181
  458. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js.map +1 -1
  459. package/dist/accessi-module/database-updates/accessiSchema.d.ts +45 -0
  460. package/dist/accessi-module/database-updates/accessiSchema.js +87 -0
  461. package/dist/accessi-module/database-updates/accessiSchema.js.map +1 -0
  462. package/dist/accessi-module/database-updates/optionalColumns.d.ts +7 -0
  463. package/dist/accessi-module/database-updates/optionalColumns.js +58 -0
  464. package/dist/accessi-module/database-updates/optionalColumns.js.map +1 -0
  465. package/dist/accessi-module/database-updates/runAccessiDbUpdate.js +18 -8
  466. package/dist/accessi-module/database-updates/runAccessiDbUpdate.js.map +1 -1
  467. package/dist/accessi-module/federated-auth/FederatedAuthController.d.ts +24 -0
  468. package/dist/accessi-module/federated-auth/FederatedAuthController.js +333 -0
  469. package/dist/accessi-module/federated-auth/FederatedAuthController.js.map +1 -0
  470. package/dist/accessi-module/federated-auth/FederatedAuthService.d.ts +100 -0
  471. package/dist/accessi-module/federated-auth/FederatedAuthService.js +451 -0
  472. package/dist/accessi-module/federated-auth/FederatedAuthService.js.map +1 -0
  473. package/dist/accessi-module/federated-auth/FederatedAuthTypes.d.ts +53 -0
  474. package/dist/accessi-module/federated-auth/FederatedAuthTypes.js +3 -0
  475. package/dist/accessi-module/federated-auth/FederatedAuthTypes.js.map +1 -0
  476. package/dist/accessi-module/index.d.ts +17 -0
  477. package/dist/accessi-module/index.js +25 -11
  478. package/dist/accessi-module/index.js.map +1 -1
  479. package/dist/accessi-module/jwt/jwt.strategy.d.ts +1 -1
  480. package/dist/accessi-module/jwt/jwt.strategy.js +16 -7
  481. package/dist/accessi-module/jwt/jwt.strategy.js.map +1 -1
  482. package/dist/accessi-module/middleware/accessiRequirements.d.ts +23 -1
  483. package/dist/accessi-module/middleware/accessiRequirements.js +7 -0
  484. package/dist/accessi-module/middleware/accessiRequirements.js.map +1 -1
  485. package/dist/accessi-module/middleware/authenticateGen.d.ts +16 -1
  486. package/dist/accessi-module/middleware/authenticateGen.js +63 -25
  487. package/dist/accessi-module/middleware/authenticateGen.js.map +1 -1
  488. package/dist/accessi-module/security/AccessiHttpExceptionFilter.d.ts +12 -0
  489. package/dist/accessi-module/security/AccessiHttpExceptionFilter.js +74 -0
  490. package/dist/accessi-module/security/AccessiHttpExceptionFilter.js.map +1 -0
  491. package/dist/accessi-module/security/accessControl.d.ts +11 -0
  492. package/dist/accessi-module/security/accessControl.js +19 -4
  493. package/dist/accessi-module/security/accessControl.js.map +1 -1
  494. package/dist/accessi-module/security/accessiValidation.d.ts +9 -0
  495. package/dist/accessi-module/security/accessiValidation.js +41 -0
  496. package/dist/accessi-module/security/accessiValidation.js.map +1 -0
  497. package/dist/accessi-module/security/authenticatedToken.d.ts +15 -1
  498. package/dist/accessi-module/security/authenticatedToken.js +31 -4
  499. package/dist/accessi-module/security/authenticatedToken.js.map +1 -1
  500. package/dist/accessi-module/security/passwordResetToken.d.ts +13 -3
  501. package/dist/accessi-module/security/passwordResetToken.js +13 -5
  502. package/dist/accessi-module/security/passwordResetToken.js.map +1 -1
  503. package/dist/accessi-module/security/publicAuthRateLimit.d.ts +3 -3
  504. package/dist/accessi-module/security/publicAuthRateLimit.js +30 -8
  505. package/dist/accessi-module/security/publicAuthRateLimit.js.map +1 -1
  506. package/dist/accessi-module/security/serviceTokenGuard.d.ts +25 -0
  507. package/dist/accessi-module/security/serviceTokenGuard.js +85 -0
  508. package/dist/accessi-module/security/serviceTokenGuard.js.map +1 -0
  509. package/dist/accessi-module/security/serviceTokenRateLimit.d.ts +8 -0
  510. package/dist/accessi-module/security/serviceTokenRateLimit.js +49 -0
  511. package/dist/accessi-module/security/serviceTokenRateLimit.js.map +1 -0
  512. package/dist/allegati-module/AllegatiModule.d.ts +11 -0
  513. package/dist/allegati-module/AllegatiModule.js +11 -1
  514. package/dist/allegati-module/AllegatiModule.js.map +1 -1
  515. package/dist/allegati-module/Controllers/AllegatiController.d.ts +2 -1
  516. package/dist/allegati-module/Controllers/AllegatiController.js +23 -15
  517. package/dist/allegati-module/Controllers/AllegatiController.js.map +1 -1
  518. package/dist/allegati-module/Dtos/AllegatoDto.js.map +1 -1
  519. package/dist/allegati-module/Dtos/BaseResponse.js.map +1 -1
  520. package/dist/allegati-module/Dtos/UploadSingleFileRequest.js.map +1 -1
  521. package/dist/allegati-module/Dtos/index.js.map +1 -1
  522. package/dist/allegati-module/Dtos/responses/DownloadAllegatoResponseDto.js.map +1 -1
  523. package/dist/allegati-module/Dtos/responses/GetListResponse.js.map +1 -1
  524. package/dist/allegati-module/Dtos/responses/UploadAllegatoResponseDto.js.map +1 -1
  525. package/dist/allegati-module/Services/AllegatiService/AllegatiService.d.ts +10 -3
  526. package/dist/allegati-module/Services/AllegatiService/AllegatiService.js +150 -101
  527. package/dist/allegati-module/Services/AllegatiService/AllegatiService.js.map +1 -1
  528. package/dist/allegati-module/index.js.map +1 -1
  529. package/dist/allegati-module/security/allegatiAuthorizationGuard.d.ts +14 -0
  530. package/dist/allegati-module/security/allegatiAuthorizationGuard.js +70 -0
  531. package/dist/allegati-module/security/allegatiAuthorizationGuard.js.map +1 -0
  532. package/dist/autobind.d.ts +10 -3
  533. package/dist/autobind.js +24 -9
  534. package/dist/autobind.js.map +1 -1
  535. package/dist/firebird-compat.d.ts +13 -0
  536. package/dist/firebird-compat.js +3 -2
  537. package/dist/firebird-compat.js.map +1 -1
  538. package/dist/index.js.map +1 -1
  539. package/dist/initEmilsoftwareModule.js +7 -0
  540. package/dist/initEmilsoftwareModule.js.map +1 -1
  541. package/dist/scripts/generateAccessiOpenApi.d.ts +1 -0
  542. package/dist/scripts/generateAccessiOpenApi.js +57 -0
  543. package/dist/scripts/generateAccessiOpenApi.js.map +1 -0
  544. package/dist/scripts/generateAccessiWiki.d.ts +1 -0
  545. package/dist/scripts/generateAccessiWiki.js +131 -0
  546. package/dist/scripts/generateAccessiWiki.js.map +1 -0
  547. package/dist/swagger/SwaggerConfig.js +6 -3
  548. package/dist/swagger/SwaggerConfig.js.map +1 -1
  549. package/package.json +103 -83
  550. package/dist/emilsoftware-utilities-2.0.0-dev.22.tgz +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"Logger.js","sourceRoot":"","sources":["../src/Logger.ts"],"names":[],"mappings":"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","sourcesContent":["import winston from \"winston\";\nimport * as path from \"path\";\nimport { promises as fs } from \"fs\";\nimport { blue, red, magenta, green, cyan, yellow } from 'colorette';\n\nexport enum LogLevels {\n INFO = \"INFO\",\n ERROR = \"ERROR\",\n WARNING = \"WARNING\",\n DEBUG = \"DEBUG\",\n LOG = \"LOG\",\n DATABASE = \"DATABASE\",\n}\n\nexport class Logger {\n private readonly winstonLogger: winston.Logger;\n private readonly tag: string;\n private readonly logDirectory: string;\n private logFormat: winston.Logform.Format;\n\n constructor(\n tag: string,\n config?: {\n logDirectory?: string;\n customFormat?: winston.Logform.Format;\n transports?: winston.transport[];\n }\n ) {\n this.tag = tag || \"[UNTAGGED]\";\n this.logDirectory = config?.logDirectory || \"logs\";\n\n // Default log format\n this.logFormat =\n config?.customFormat ||\n winston.format.printf(({ timestamp, file, level, message, ...meta }) => {\n return JSON.stringify({\n timestamp: timestamp || new Date().toISOString(),\n tag: this.tag,\n file: this.replaceAll(file + \"\", \"\\\\\", \"/\"),\n level,\n message,\n ...meta,\n });\n });\n\n this.initializeDirectory();\n\n // Configure logger\n this.winstonLogger = winston.createLogger({\n format: winston.format.combine(winston.format.timestamp(), this.logFormat),\n transports: config?.transports || [\n new winston.transports.File({\n filename: path.join(this.logDirectory, this.getFileName() + \".json\"),\n }),\n ],\n levels: {\n error: 1,\n warning: 2,\n info: 3,\n http: 4,\n verbose: 5,\n debug: 6,\n silly: 7,\n database: 8,\n },\n });\n\n // Add colors for console logging\n winston.addColors({\n database: \"green\",\n error: \"red\",\n warning: \"yellow\",\n info: \"blue\",\n debug: \"magenta\",\n log: \"cyan\",\n });\n }\n\n private async initializeDirectory() {\n try {\n const exists = await fs.access(this.logDirectory).then(() => true).catch(() => false);\n if (!exists) {\n await fs.mkdir(this.logDirectory);\n }\n } catch (err) {\n console.error(\"Error initializing log directory:\", err);\n }\n }\n\n private getFileName(): string {\n const now = new Date();\n const dateString = now.toISOString().split(\"T\")[0]; // YYYY-MM-DD\n return dateString;\n }\n\n private replaceAll(string: string, match: string, replacer: string) {\n return string.split(match).join(replacer);\n }\n\n public execStart(prefix: string = \"\"): number {\n this.print(LogLevels.INFO, `${prefix} - Execution started`);\n return performance.now();\n }\n\n public execStop(prefix: string = \"\", startTime: number, error: boolean = false): void {\n const executionTime = performance.now() - startTime;\n const message = `${prefix} - Execution ended ${error ? \"due to an error\" : \"successfully\"\n }. Execution time: ${executionTime.toFixed(2)} ms`;\n this.print(error ? LogLevels.ERROR : LogLevels.INFO, message);\n }\n\n public info(...data: Object[]): void {\n this.print(LogLevels.INFO, ...data);\n }\n\n public dbLog(...data: Object[]): void {\n this.print(LogLevels.DATABASE, ...data);\n }\n\n public debug(...data: Object[]): void {\n this.print(LogLevels.DEBUG, ...data);\n }\n\n public warning(...data: Object[]): void {\n this.print(LogLevels.WARNING, ...data);\n }\n\n public log(...data: Object[]): void {\n this.print(LogLevels.LOG, ...data);\n }\n\n public error(...data: Object[]): void {\n this.print(LogLevels.ERROR, ...data);\n }\n\n private print(level: LogLevels, ...data: Object[]): void {\n const now: Date = new Date();\n const fileName = this.tag.split(\"\\\\\").pop() || this.tag;\n\n // Attach metadata to Winston logger\n this.winstonLogger.defaultMeta = {\n file: fileName,\n time: now,\n level,\n };\n\n const logEntry: winston.LogEntry = {\n level: level.toLowerCase(),\n message: [...data].join(\",\"),\n };\n\n // Log to console with colors\n switch (level) {\n case LogLevels.INFO:\n console.info(blue(`[INFO][${now}][${fileName}]`), logEntry.message);\n break;\n case LogLevels.ERROR:\n console.error(red(`[ERROR][${now}][${fileName}]`), logEntry.message);\n break;\n case LogLevels.DEBUG:\n console.debug(magenta(`[DEBUG][${now}][${fileName}]`), logEntry.message);\n break;\n case LogLevels.WARNING:\n console.debug(yellow(`[WARNING][${now}][${fileName}]`), logEntry.message);\n break;\n case LogLevels.LOG:\n console.log(cyan(`[LOG][${now}][${fileName}]`), logEntry.message);\n break;\n case LogLevels.DATABASE:\n console.log(green(`[DATABASE][${now}][${fileName}]`), logEntry.message);\n break;\n }\n\n // Log to file\n this.winstonLogger.log(logEntry);\n }\n\n public static createLogger(tag: string, config?: { logDirectory?: string }): Logger {\n return new Logger(tag, config);\n }\n}\n"]}
1
+ {"version":3,"file":"Logger.js","sourceRoot":"","sources":["../src/Logger.ts"],"names":[],"mappings":"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","sourcesContent":["import winston from \"winston\";\nimport { DailyFileTransport } from './DailyFileTransport';\nimport { blue, red, magenta, green, cyan, yellow } from 'colorette';\n\nexport enum LogLevels {\n INFO = \"INFO\",\n ERROR = \"ERROR\",\n WARNING = \"WARNING\",\n DEBUG = \"DEBUG\",\n LOG = \"LOG\",\n DATABASE = \"DATABASE\",\n}\n\n/** Livelli winston usati dal logger (comprende `database` e `general`). */\nconst WIN_LEVELS = {\n error: 1,\n warning: 2,\n info: 3,\n general: 3,\n http: 4,\n verbose: 5,\n debug: 6,\n silly: 7,\n database: 8,\n};\n\n/** Chiavi i cui valori non devono mai finire nei log. */\nconst SENSITIVE_KEY_PATTERN = /(password|passwd|pwd|secret|token|authorization|apikey|api_key|cookie)/i;\nconst REDACTED = '[REDACTED]';\n\n/**\n * Serializza un valore per il log, redigendo i campi sensibili e risolvendo\n * `Error` e riferimenti circolari (che altrimenti diventano `[object Object]`).\n */\nfunction serializeLogValue(value: unknown, seen: WeakSet<object>): unknown {\n if (value instanceof Error) {\n return { name: value.name, message: value.message, stack: value.stack };\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => serializeLogValue(item, seen));\n }\n\n if (value && typeof value === 'object') {\n if (seen.has(value)) {\n return '[Circular]';\n }\n seen.add(value);\n\n const result: Record<string, unknown> = {};\n for (const [key, nested] of Object.entries(value as Record<string, unknown>)) {\n result[key] = SENSITIVE_KEY_PATTERN.test(key) ? REDACTED : serializeLogValue(nested, seen);\n }\n return result;\n }\n\n return value;\n}\n\n/** Costruisce il messaggio testuale del log a partire dagli argomenti. */\nfunction stringifyLogData(data: unknown[]): string {\n return data.map((value) => {\n if (typeof value === 'string') {\n return value;\n }\n if (value instanceof Error) {\n return value.stack ?? `${value.name}: ${value.message}`;\n }\n if (value === undefined) {\n return 'undefined';\n }\n if (value === null) {\n return 'null';\n }\n try {\n return JSON.stringify(serializeLogValue(value, new WeakSet()));\n } catch {\n return String(value);\n }\n }).join(', ');\n}\n\n/** Formato condiviso: JSON a una riga, con tag/file/level/messaggio. */\nfunction defaultFormat(): winston.Logform.Format {\n return winston.format.printf(({ timestamp, tag, file, level, message, ...meta }) => JSON.stringify({\n timestamp: timestamp || new Date().toISOString(),\n tag,\n file: String(file ?? '').split('\\\\').join('/'),\n level: level === 'general' ? 'log' : level,\n message,\n ...meta,\n }));\n}\n\n/**\n * Logger strutturato dell'applicazione.\n *\n * - I log finiscono su console (colorati) e su file JSON giornaliero.\n * - Le istanze con la stessa `logDirectory` condividono un unico logger winston\n * (un solo transport/timer), evitando di crearne uno per classe.\n * - I campi sensibili (password, token, secret, ...) sono redatti automaticamente.\n */\nexport class Logger {\n private readonly winstonLogger: winston.Logger;\n private readonly tag: string;\n private readonly logDirectory: string;\n private readonly maxLevel: number;\n\n /** Logger winston condivisi per directory, così da non moltiplicare transport e timer. */\n private static readonly sharedLoggers = new Map<string, winston.Logger>();\n private static colorsRegistered = false;\n\n constructor(\n tag: string,\n config?: {\n logDirectory?: string;\n customFormat?: winston.Logform.Format;\n transports?: winston.transport[];\n /** Livello minimo loggato: `error`..`database` (default `database`, ovvero tutto). Override con `LOG_LEVEL`. */\n level?: string;\n }\n ) {\n this.tag = tag || \"[UNTAGGED]\";\n this.logDirectory = config?.logDirectory || \"logs\";\n\n const configuredLevel = (config?.level ?? process.env.LOG_LEVEL ?? 'database').toLowerCase();\n this.maxLevel = WIN_LEVELS[configuredLevel as keyof typeof WIN_LEVELS] ?? WIN_LEVELS.database;\n\n const format = winston.format.combine(\n winston.format.timestamp(),\n config?.customFormat || defaultFormat(),\n );\n\n this.winstonLogger = config?.transports\n ? winston.createLogger({ level: 'database', format, transports: config.transports, levels: WIN_LEVELS })\n : Logger.resolveSharedLogger(this.logDirectory, format);\n\n if (!Logger.colorsRegistered) {\n winston.addColors({\n database: \"green\",\n error: \"red\",\n warning: \"yellow\",\n info: \"blue\",\n debug: \"magenta\",\n log: \"cyan\",\n });\n Logger.colorsRegistered = true;\n }\n }\n\n private static resolveSharedLogger(logDirectory: string, format: winston.Logform.Format): winston.Logger {\n const existing = Logger.sharedLoggers.get(logDirectory);\n if (existing) {\n return existing;\n }\n\n const logger = winston.createLogger({\n level: 'database',\n format,\n transports: [new DailyFileTransport(logDirectory)],\n levels: WIN_LEVELS,\n });\n Logger.sharedLoggers.set(logDirectory, logger);\n return logger;\n }\n\n public execStart(prefix: string = \"\"): number {\n this.print(LogLevels.INFO, `${prefix} - Execution started`);\n return performance.now();\n }\n\n public execStop(prefix: string = \"\", startTime: number, error: boolean = false): void {\n const executionTime = performance.now() - startTime;\n const message = `${prefix} - Execution ended ${error ? \"due to an error\" : \"successfully\"\n }. Execution time: ${executionTime.toFixed(2)} ms`;\n this.print(error ? LogLevels.ERROR : LogLevels.INFO, message);\n }\n\n public info(...data: unknown[]): void {\n this.print(LogLevels.INFO, ...data);\n }\n\n public dbLog(...data: unknown[]): void {\n this.print(LogLevels.DATABASE, ...data);\n }\n\n public debug(...data: unknown[]): void {\n this.print(LogLevels.DEBUG, ...data);\n }\n\n public warning(...data: unknown[]): void {\n this.print(LogLevels.WARNING, ...data);\n }\n\n public log(...data: unknown[]): void {\n this.print(LogLevels.LOG, ...data);\n }\n\n public error(...data: unknown[]): void {\n this.print(LogLevels.ERROR, ...data);\n }\n\n private print(level: LogLevels, ...data: unknown[]): void {\n const rank = level === LogLevels.LOG ? WIN_LEVELS.general : (WIN_LEVELS[level.toLowerCase() as keyof typeof WIN_LEVELS] ?? WIN_LEVELS.database);\n if (rank > this.maxLevel) {\n return;\n }\n\n const now: Date = new Date();\n const fileName = this.tag.split(\"\\\\\").pop() || this.tag;\n const message = stringifyLogData(data);\n\n // Console colorata (il livello file resta strutturato).\n switch (level) {\n case LogLevels.INFO:\n console.info(blue(`[INFO][${now}][${fileName}]`), message);\n break;\n case LogLevels.ERROR:\n console.error(red(`[ERROR][${now}][${fileName}]`), message);\n break;\n case LogLevels.DEBUG:\n console.debug(magenta(`[DEBUG][${now}][${fileName}]`), message);\n break;\n case LogLevels.WARNING:\n console.debug(yellow(`[WARNING][${now}][${fileName}]`), message);\n break;\n case LogLevels.LOG:\n console.log(cyan(`[LOG][${now}][${fileName}]`), message);\n break;\n case LogLevels.DATABASE:\n console.log(green(`[DATABASE][${now}][${fileName}]`), message);\n break;\n }\n\n this.winstonLogger.log({\n level: level === LogLevels.LOG ? 'general' : level.toLowerCase(),\n message,\n tag: this.tag,\n file: fileName,\n time: now,\n });\n }\n\n public static createLogger(tag: string, config?: { logDirectory?: string }): Logger {\n return new Logger(tag, config);\n }\n}\n"]}
package/dist/Orm.d.ts CHANGED
@@ -1,7 +1,19 @@
1
- import { Database, Options, Transaction } from "node-firebird";
1
+ import { Database, Options, QueryParams, Transaction } from "node-firebird";
2
2
  export declare class Orm {
3
3
  private static logger;
4
+ private static pools;
4
5
  static quote(value: string): string;
6
+ /** Dimensione pool: default 5 (pool attivo); `poolSize: 0` disabilita e torna all'attach per query. */
7
+ private static getPoolSize;
8
+ private static shouldLogQueryParameters;
9
+ private static formatQueryForLog;
10
+ private static buildPoolKey;
11
+ /**
12
+ * Chiude tutti i pool creati (opt-in `poolSize`). Utile a fine processo o nei test,
13
+ * perché i pool mantengono connessioni e timer attivi.
14
+ */
15
+ static closePools(): Promise<void>;
16
+ private static getPool;
5
17
  private static getTimeoutMs;
6
18
  private static createTimeoutError;
7
19
  private static detachQuietly;
@@ -9,16 +21,24 @@ export declare class Orm {
9
21
  private static normalizeResultValue;
10
22
  private static attachWithTimeout;
11
23
  static testConnection(options: Options): Promise<boolean>;
12
- static query(options: Options, query: string, parameters?: any[], logQuery?: boolean): Promise<any>;
13
- static execute(options: Options, query: string, parameters?: any, logQuery?: boolean): Promise<any>;
14
- static trimParam(param: any): string;
24
+ static query<T = Record<string, unknown>>(options: Options, query: string, parameters?: QueryParams, logQuery?: boolean): Promise<T[]>;
25
+ static execute<T = Record<string, unknown>>(options: Options, query: string, parameters?: QueryParams, logQuery?: boolean): Promise<T[]>;
26
+ static trimParam<T>(param: T): string | T;
15
27
  static connect(options: Options): Promise<Database>;
28
+ /**
29
+ * Runs `operation` inside a single Firebird transaction: commit on success,
30
+ * rollback on failure, detach in every case. Use it to make multi-statement
31
+ * writes atomic instead of relying on auto-commit per statement.
32
+ */
33
+ static withTransaction<T>(options: Options, operation: (transaction: Transaction) => Promise<T>): Promise<T>;
34
+ /** Esegue una query su una transazione esistente e ne restituisce il risultato. */
35
+ static transactionQuery<T = unknown>(transaction: Transaction, query: string, parameters?: QueryParams): Promise<T>;
16
36
  static startTransaction(db: Database): Promise<Transaction>;
17
37
  static commitTransaction(transaction: Transaction): Promise<string>;
18
38
  static rollbackTransaction(transaction: Transaction): Promise<string>;
19
39
  static executeMultiple(options: Options, queriesWithParams: {
20
40
  query: string;
21
- params: any[];
41
+ params: QueryParams;
22
42
  }[]): Promise<string>;
23
- static executeQueries(transaction: Transaction, queries: string[], params: any[]): Promise<any>;
43
+ static executeQueries(transaction: Transaction, queries: string[], params: QueryParams[]): Promise<unknown>;
24
44
  }
package/dist/Orm.js CHANGED
@@ -51,10 +51,73 @@ class Orm {
51
51
  static quote(value) {
52
52
  return "\"" + value + "\"";
53
53
  }
54
+ /** Dimensione pool: default 5 (pool attivo); `poolSize: 0` disabilita e torna all'attach per query. */
55
+ static getPoolSize(options) {
56
+ const raw = options.poolSize;
57
+ if (raw === 0) {
58
+ return 0;
59
+ }
60
+ const size = raw === undefined ? 5 : Number(raw);
61
+ return Number.isFinite(size) && size > 0 ? Math.trunc(size) : 0;
62
+ }
63
+ static shouldLogQueryParameters(options) {
64
+ return options.logQueryParameters === true;
65
+ }
66
+ static formatQueryForLog(query, parameters, includeValues) {
67
+ const parameterList = Array.isArray(parameters) ? parameters : Object.values(parameters !== null && parameters !== void 0 ? parameters : {});
68
+ if (includeValues) {
69
+ return Utilities_1.RestUtilities.printQueryWithParams(query, parameterList);
70
+ }
71
+ return `${query.replace(/\s+/g, " ").trim()} [params=${parameterList.length}]`;
72
+ }
73
+ static buildPoolKey(options, size) {
74
+ var _a, _b, _c, _d, _e, _f;
75
+ const normalized = (0, firebird_compat_1.normalizeFirebirdOptions)(options);
76
+ return [
77
+ size,
78
+ (_a = normalized.host) !== null && _a !== void 0 ? _a : "",
79
+ (_b = normalized.port) !== null && _b !== void 0 ? _b : "",
80
+ (_c = normalized.database) !== null && _c !== void 0 ? _c : "",
81
+ (_d = normalized.user) !== null && _d !== void 0 ? _d : "",
82
+ (_e = normalized.pluginName) !== null && _e !== void 0 ? _e : "",
83
+ String((_f = normalized.wireCrypt) !== null && _f !== void 0 ? _f : ""),
84
+ ].join("|");
85
+ }
86
+ /**
87
+ * Chiude tutti i pool creati (opt-in `poolSize`). Utile a fine processo o nei test,
88
+ * perché i pool mantengono connessioni e timer attivi.
89
+ */
90
+ static closePools() {
91
+ return __awaiter(this, void 0, void 0, function* () {
92
+ const pools = Array.from(this.pools.values());
93
+ this.pools.clear();
94
+ yield Promise.all(pools.map((pool) => new Promise((resolve) => {
95
+ try {
96
+ pool.destroy(() => resolve());
97
+ }
98
+ catch (_a) {
99
+ resolve();
100
+ }
101
+ })));
102
+ });
103
+ }
104
+ static getPool(options, size) {
105
+ const normalized = (0, firebird_compat_1.normalizeFirebirdOptions)(options);
106
+ const key = this.buildPoolKey(normalized, size);
107
+ let pool = this.pools.get(key);
108
+ if (!pool) {
109
+ this.logger.info(`Firebird pool created (max=${size}) using ${(0, firebird_compat_1.describeFirebirdCompatibilityOptions)(normalized)}`);
110
+ pool = Firebird.pool(size, normalized);
111
+ pool.on("error", (error) => {
112
+ this.logger.error(`Firebird pool error: ${error.message}`);
113
+ });
114
+ this.pools.set(key, pool);
115
+ }
116
+ return pool;
117
+ }
54
118
  static getTimeoutMs(options) {
55
119
  var _a;
56
- const normalizedOptions = (0, firebird_compat_1.normalizeFirebirdOptions)(options);
57
- const candidate = (_a = normalizedOptions.connectTimeout) !== null && _a !== void 0 ? _a : 15000;
120
+ const candidate = (_a = options.connectTimeout) !== null && _a !== void 0 ? _a : 15000;
58
121
  return Number.isFinite(candidate) && candidate > 0 ? Math.trunc(candidate) : 15000;
59
122
  }
60
123
  static createTimeoutError(stage, timeoutMs, options, query) {
@@ -79,8 +142,7 @@ class Orm {
79
142
  });
80
143
  }
81
144
  static shouldTrimStringResults(options) {
82
- const normalizedOptions = (0, firebird_compat_1.normalizeFirebirdOptions)(options);
83
- return normalizedOptions.trimStringResults !== false;
145
+ return options.trimStringResults !== false;
84
146
  }
85
147
  static normalizeResultValue(value, trimStringResults) {
86
148
  if (!trimStringResults || value === undefined || value === null) {
@@ -96,8 +158,9 @@ class Orm {
96
158
  return value;
97
159
  }
98
160
  if (typeof value === "object") {
99
- return Object.keys(value).reduce((normalized, key) => {
100
- normalized[key] = this.normalizeResultValue(value[key], trimStringResults);
161
+ const source = value;
162
+ return Object.keys(source).reduce((normalized, key) => {
163
+ normalized[key] = this.normalizeResultValue(source[key], trimStringResults);
101
164
  return normalized;
102
165
  }, {});
103
166
  }
@@ -107,6 +170,7 @@ class Orm {
107
170
  return new Promise((resolve, reject) => {
108
171
  const normalizedOptions = (0, firebird_compat_1.normalizeFirebirdOptions)(options);
109
172
  const timeoutMs = this.getTimeoutMs(normalizedOptions);
173
+ const poolSize = this.getPoolSize(options);
110
174
  let settled = false;
111
175
  const timeoutId = setTimeout(() => {
112
176
  if (settled) {
@@ -115,8 +179,7 @@ class Orm {
115
179
  settled = true;
116
180
  reject((0, firebird_compat_1.enhanceFirebirdError)(this.createTimeoutError("attach", timeoutMs, normalizedOptions), normalizedOptions, { stage: "attach" }));
117
181
  }, timeoutMs);
118
- this.logger.info(`Firebird attach using ${(0, firebird_compat_1.describeFirebirdCompatibilityOptions)(normalizedOptions)}`);
119
- Firebird.attach(normalizedOptions, (err, db) => __awaiter(this, void 0, void 0, function* () {
182
+ const handle = (err, db) => __awaiter(this, void 0, void 0, function* () {
120
183
  if (settled) {
121
184
  yield this.detachQuietly(db);
122
185
  return;
@@ -127,7 +190,23 @@ class Orm {
127
190
  return reject((0, firebird_compat_1.enhanceFirebirdError)(err, normalizedOptions, { stage: "attach" }));
128
191
  }
129
192
  return resolve(db);
130
- }));
193
+ });
194
+ try {
195
+ if (poolSize > 0) {
196
+ this.getPool(options, poolSize).get(handle);
197
+ return;
198
+ }
199
+ this.logger.info(`Firebird attach using ${(0, firebird_compat_1.describeFirebirdCompatibilityOptions)(normalizedOptions)}`);
200
+ Firebird.attach(normalizedOptions, handle);
201
+ }
202
+ catch (error) {
203
+ // Attach/get sincrono fallito: evita di lasciare il timer di timeout pendente.
204
+ if (!settled) {
205
+ settled = true;
206
+ clearTimeout(timeoutId);
207
+ reject((0, firebird_compat_1.enhanceFirebirdError)(error, normalizedOptions, { stage: "attach" }));
208
+ }
209
+ }
131
210
  });
132
211
  }
133
212
  static testConnection(options) {
@@ -151,7 +230,7 @@ class Orm {
151
230
  return __awaiter(this, arguments, void 0, function* (options, query, parameters = [], logQuery = true) {
152
231
  try {
153
232
  const normalizedOptions = (0, firebird_compat_1.normalizeFirebirdOptions)(options);
154
- const db = yield this.attachWithTimeout(normalizedOptions);
233
+ const db = yield this.attachWithTimeout(options);
155
234
  return yield new Promise((resolve, reject) => {
156
235
  const timeoutMs = this.getTimeoutMs(normalizedOptions);
157
236
  let settled = false;
@@ -164,7 +243,7 @@ class Orm {
164
243
  reject((0, firebird_compat_1.enhanceFirebirdError)(this.createTimeoutError("query", timeoutMs, normalizedOptions, query), normalizedOptions, { stage: "query", sql: query }));
165
244
  }), timeoutMs);
166
245
  if (logQuery) {
167
- this.logger.info(Utilities_1.RestUtilities.printQueryWithParams(query, parameters));
246
+ this.logger.info(this.formatQueryForLog(query, parameters, this.shouldLogQueryParameters(options)));
168
247
  }
169
248
  db.query(query, parameters, (error, result) => __awaiter(this, void 0, void 0, function* () {
170
249
  if (settled) {
@@ -192,7 +271,7 @@ class Orm {
192
271
  return __awaiter(this, arguments, void 0, function* (options, query, parameters = [], logQuery = true) {
193
272
  try {
194
273
  const normalizedOptions = (0, firebird_compat_1.normalizeFirebirdOptions)(options);
195
- const db = yield this.attachWithTimeout(normalizedOptions);
274
+ const db = yield this.attachWithTimeout(options);
196
275
  return yield new Promise((resolve, reject) => {
197
276
  const timeoutMs = this.getTimeoutMs(normalizedOptions);
198
277
  let settled = false;
@@ -205,7 +284,7 @@ class Orm {
205
284
  reject((0, firebird_compat_1.enhanceFirebirdError)(this.createTimeoutError("execute", timeoutMs, normalizedOptions, query), normalizedOptions, { stage: "execute", sql: query }));
206
285
  }), timeoutMs);
207
286
  if (logQuery) {
208
- this.logger.info(Utilities_1.RestUtilities.printQueryWithParams(query, parameters));
287
+ this.logger.info(this.formatQueryForLog(query, parameters, this.shouldLogQueryParameters(options)));
209
288
  }
210
289
  db.execute(query, parameters, (error, result) => __awaiter(this, void 0, void 0, function* () {
211
290
  if (settled) {
@@ -231,7 +310,7 @@ class Orm {
231
310
  }
232
311
  static trimParam(param) {
233
312
  if (typeof param === "string" || param instanceof String) {
234
- return param.trim();
313
+ return String(param).trim();
235
314
  }
236
315
  return param;
237
316
  }
@@ -240,6 +319,49 @@ class Orm {
240
319
  return this.attachWithTimeout(options);
241
320
  });
242
321
  }
322
+ /**
323
+ * Runs `operation` inside a single Firebird transaction: commit on success,
324
+ * rollback on failure, detach in every case. Use it to make multi-statement
325
+ * writes atomic instead of relying on auto-commit per statement.
326
+ */
327
+ static withTransaction(options, operation) {
328
+ return __awaiter(this, void 0, void 0, function* () {
329
+ const db = yield this.connect(options);
330
+ let transaction;
331
+ try {
332
+ transaction = yield this.startTransaction(db);
333
+ const result = yield operation(transaction);
334
+ yield this.commitTransaction(transaction);
335
+ return result;
336
+ }
337
+ catch (error) {
338
+ if (transaction) {
339
+ try {
340
+ yield this.rollbackTransaction(transaction);
341
+ }
342
+ catch (_a) {
343
+ // Se la rollback fallisce (connessione persa) l'errore originale resta quello rilevante.
344
+ }
345
+ }
346
+ throw error;
347
+ }
348
+ finally {
349
+ yield this.detachQuietly(db);
350
+ }
351
+ });
352
+ }
353
+ /** Esegue una query su una transazione esistente e ne restituisce il risultato. */
354
+ static transactionQuery(transaction, query, parameters = []) {
355
+ return new Promise((resolve, reject) => {
356
+ transaction.query(query, parameters, (error, result) => {
357
+ if (error) {
358
+ reject(error);
359
+ return;
360
+ }
361
+ resolve(result);
362
+ });
363
+ });
364
+ }
243
365
  static startTransaction(db) {
244
366
  return __awaiter(this, void 0, void 0, function* () {
245
367
  return new Promise((resolve, reject) => {
@@ -278,32 +400,12 @@ class Orm {
278
400
  }
279
401
  static executeMultiple(options, queriesWithParams) {
280
402
  return __awaiter(this, void 0, void 0, function* () {
281
- let db;
282
- let transaction;
283
- try {
284
- db = yield Orm.connect(options);
285
- transaction = yield Orm.startTransaction(db);
403
+ yield Orm.withTransaction(options, (transaction) => __awaiter(this, void 0, void 0, function* () {
286
404
  for (const qwp of queriesWithParams) {
287
- yield new Promise((resolve, reject) => {
288
- transaction.query(qwp.query, qwp.params, (err, result) => {
289
- if (err) {
290
- return reject(err);
291
- }
292
- return resolve(result);
293
- });
294
- });
405
+ yield Orm.transactionQuery(transaction, qwp.query, qwp.params);
295
406
  }
296
- yield Orm.commitTransaction(transaction);
297
- yield Orm.detachQuietly(db);
298
- return "OK";
299
- }
300
- catch (error) {
301
- if (transaction) {
302
- yield Orm.rollbackTransaction(transaction);
303
- }
304
- yield Orm.detachQuietly(db);
305
- throw error;
306
- }
407
+ }));
408
+ return "OK";
307
409
  });
308
410
  }
309
411
  static executeQueries(transaction, queries, params) {
@@ -311,7 +413,8 @@ class Orm {
311
413
  try {
312
414
  return yield queries.reduce((promiseChain, currentQuery, index) => {
313
415
  return promiseChain.then(() => new Promise((resolve, reject) => {
314
- transaction.query(currentQuery, params[index], (err, result) => {
416
+ var _a;
417
+ transaction.query(currentQuery, (_a = params[index]) !== null && _a !== void 0 ? _a : [], (err, result) => {
315
418
  if (err) {
316
419
  return reject(err);
317
420
  }
@@ -321,7 +424,7 @@ class Orm {
321
424
  }, Promise.resolve());
322
425
  }
323
426
  catch (error) {
324
- return yield new Promise((resolve, reject) => {
427
+ return yield new Promise((_resolve, reject) => {
325
428
  transaction.rollback((rollbackErr) => {
326
429
  if (rollbackErr) {
327
430
  return reject(rollbackErr);
@@ -335,4 +438,5 @@ class Orm {
335
438
  }
336
439
  exports.Orm = Orm;
337
440
  Orm.logger = new Logger_1.Logger(Orm.name);
441
+ Orm.pools = new Map();
338
442
  //# sourceMappingURL=Orm.js.map
package/dist/Orm.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Orm.js","sourceRoot":"","sources":["../src/Orm.ts"],"names":[],"mappings":"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","sourcesContent":["import * as Firebird from \"node-firebird\";\nimport { Database, Options, Transaction } from \"node-firebird\";\nimport { Logger } from \"./Logger\";\nimport { RestUtilities } from \"./Utilities\";\nimport {\n describeFirebirdCompatibilityOptions,\n enhanceFirebirdError,\n FirebirdOptions,\n normalizeFirebirdOptions,\n} from \"./firebird-compat\";\n\nexport class Orm {\n private static logger: Logger = new Logger(Orm.name);\n\n public static quote(value: string): string {\n return \"\\\"\" + value + \"\\\"\";\n }\n\n private static getTimeoutMs(options: Options): number {\n const normalizedOptions = normalizeFirebirdOptions(options);\n const candidate = normalizedOptions.connectTimeout ?? 15000;\n return Number.isFinite(candidate) && candidate > 0 ? Math.trunc(candidate) : 15000;\n }\n\n private static createTimeoutError(stage: string, timeoutMs: number, options: Options, query?: string): Error {\n const target = `${options.host ?? \"?\"}:${options.port ?? \"?\"} -> ${options.database ?? \"?\"}`;\n const suffix = query ? ` | sql=${query.replace(/\\s+/g, \" \").trim()}` : \"\";\n return new Error(`Timeout during Firebird ${stage} after ${timeoutMs} ms on ${target}${suffix}`);\n }\n\n private static async detachQuietly(db: Database | undefined): Promise<void> {\n if (!db) {\n return;\n }\n\n await new Promise<void>((resolve) => {\n try {\n db.detach(() => resolve());\n } catch {\n resolve();\n }\n });\n }\n\n private static shouldTrimStringResults(options: Options): boolean {\n const normalizedOptions = normalizeFirebirdOptions(options);\n return normalizedOptions.trimStringResults !== false;\n }\n\n private static normalizeResultValue(value: any, trimStringResults: boolean): any {\n if (!trimStringResults || value === undefined || value === null) {\n return value;\n }\n\n if (typeof value === \"string\" || value instanceof String) {\n return String(value).trimEnd();\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => this.normalizeResultValue(item, trimStringResults));\n }\n\n if (value instanceof Date || Buffer.isBuffer(value)) {\n return value;\n }\n\n if (typeof value === \"object\") {\n return Object.keys(value).reduce((normalized: Record<string, any>, key: string) => {\n normalized[key] = this.normalizeResultValue(value[key], trimStringResults);\n return normalized;\n }, {});\n }\n\n return value;\n }\n\n private static attachWithTimeout(options: Options): Promise<Database> {\n return new Promise((resolve, reject): void => {\n const normalizedOptions = normalizeFirebirdOptions(options);\n const timeoutMs = this.getTimeoutMs(normalizedOptions);\n let settled = false;\n const timeoutId = setTimeout(() => {\n if (settled) {\n return;\n }\n\n settled = true;\n reject(\n enhanceFirebirdError(\n this.createTimeoutError(\"attach\", timeoutMs, normalizedOptions),\n normalizedOptions,\n { stage: \"attach\" },\n ),\n );\n }, timeoutMs);\n\n this.logger.info(`Firebird attach using ${describeFirebirdCompatibilityOptions(normalizedOptions)}`);\n\n Firebird.attach(normalizedOptions, async (err: any, db: Database): Promise<void> => {\n if (settled) {\n await this.detachQuietly(db);\n return;\n }\n\n settled = true;\n clearTimeout(timeoutId);\n\n if (err) {\n return reject(enhanceFirebirdError(err, normalizedOptions, { stage: \"attach\" }));\n }\n\n return resolve(db);\n });\n });\n }\n\n public static async testConnection(options: Options): Promise<boolean> {\n return new Promise((resolve): void => {\n this.attachWithTimeout(options)\n .then(async (db: Database): Promise<void> => {\n this.logger.info(\"DATABASE connesso.\");\n await this.detachQuietly(db);\n resolve(true);\n })\n .catch((err: Error): void => {\n this.logger.error(\"La connessione con il DATABASE non e andata a buon fine.\");\n this.logger.error(err);\n resolve(false);\n });\n });\n }\n\n public static async query(options: Options, query: string, parameters: any[] = [], logQuery = true): Promise<any> {\n try {\n const normalizedOptions = normalizeFirebirdOptions(options);\n const db = await this.attachWithTimeout(normalizedOptions);\n\n return await new Promise((resolve, reject): void => {\n const timeoutMs = this.getTimeoutMs(normalizedOptions);\n let settled = false;\n const timeoutId = setTimeout(async () => {\n if (settled) {\n return;\n }\n\n settled = true;\n await this.detachQuietly(db);\n reject(\n enhanceFirebirdError(\n this.createTimeoutError(\"query\", timeoutMs, normalizedOptions, query),\n normalizedOptions,\n { stage: \"query\", sql: query },\n ),\n );\n }, timeoutMs);\n\n if (logQuery) {\n this.logger.info(RestUtilities.printQueryWithParams(query, parameters));\n }\n\n db.query(query, parameters, async (error: any, result: any) => {\n if (settled) {\n await this.detachQuietly(db);\n return;\n }\n\n settled = true;\n clearTimeout(timeoutId);\n await this.detachQuietly(db);\n\n if (error) {\n return reject(enhanceFirebirdError(error, normalizedOptions, { stage: \"query\", sql: query }));\n }\n\n return resolve(this.normalizeResultValue(result, this.shouldTrimStringResults(normalizedOptions)));\n });\n });\n } catch (error) {\n const normalizedError = enhanceFirebirdError(error, options, { stage: \"query\", sql: query });\n this.logger.error(normalizedError);\n throw normalizedError;\n }\n }\n\n public static async execute(options: Options, query: string, parameters: any = [], logQuery = true): Promise<any> {\n try {\n const normalizedOptions = normalizeFirebirdOptions(options);\n const db = await this.attachWithTimeout(normalizedOptions);\n\n return await new Promise((resolve, reject): void => {\n const timeoutMs = this.getTimeoutMs(normalizedOptions);\n let settled = false;\n const timeoutId = setTimeout(async () => {\n if (settled) {\n return;\n }\n\n settled = true;\n await this.detachQuietly(db);\n reject(\n enhanceFirebirdError(\n this.createTimeoutError(\"execute\", timeoutMs, normalizedOptions, query),\n normalizedOptions,\n { stage: \"execute\", sql: query },\n ),\n );\n }, timeoutMs);\n\n if (logQuery) {\n this.logger.info(RestUtilities.printQueryWithParams(query, parameters));\n }\n\n db.execute(query, parameters, async (error: any, result: any) => {\n if (settled) {\n await this.detachQuietly(db);\n return;\n }\n\n settled = true;\n clearTimeout(timeoutId);\n await this.detachQuietly(db);\n\n if (error) {\n return reject(enhanceFirebirdError(error, normalizedOptions, { stage: \"execute\", sql: query }));\n }\n\n return resolve(this.normalizeResultValue(result, this.shouldTrimStringResults(normalizedOptions)));\n });\n });\n } catch (error) {\n const normalizedError = enhanceFirebirdError(error, options, { stage: \"execute\", sql: query });\n this.logger.error(normalizedError);\n throw normalizedError;\n }\n }\n\n public static trimParam(param: any): string {\n if (typeof param === \"string\" || param instanceof String) {\n return param.trim();\n }\n return param;\n }\n\n public static async connect(options: Options): Promise<Database> {\n return this.attachWithTimeout(options);\n }\n\n public static async startTransaction(db: Database): Promise<Transaction> {\n return new Promise((resolve, reject): void => {\n db.transaction(Firebird.ISOLATION_READ_COMMITTED, function (err: any, transaction: Transaction): void {\n if (err) {\n return reject(err);\n }\n\n return resolve(transaction);\n });\n });\n }\n\n public static async commitTransaction(transaction: Transaction): Promise<string> {\n return new Promise((resolve, reject): void => {\n transaction.commit((err: any): void => {\n if (err) {\n return reject(err);\n }\n\n return resolve(\"Transaction committed successfully.\");\n });\n });\n }\n\n public static async rollbackTransaction(transaction: Transaction): Promise<string> {\n return new Promise((resolve, reject): void => {\n transaction.rollback((err: any): void => {\n if (err) {\n return reject(err);\n }\n\n return resolve(\"Transaction rolled back successfully.\");\n });\n });\n }\n\n public static async executeMultiple(options: Options, queriesWithParams: { query: string, params: any[] }[]): Promise<string> {\n let db: Database | undefined;\n let transaction: Transaction | undefined;\n\n try {\n db = await Orm.connect(options);\n transaction = await Orm.startTransaction(db);\n\n for (const qwp of queriesWithParams) {\n await new Promise((resolve, reject) => {\n transaction!.query(qwp.query, qwp.params, (err: any, result: any): void => {\n if (err) {\n return reject(err);\n }\n\n return resolve(result);\n });\n });\n }\n\n await Orm.commitTransaction(transaction);\n await Orm.detachQuietly(db);\n return \"OK\";\n } catch (error) {\n if (transaction) {\n await Orm.rollbackTransaction(transaction);\n }\n\n await Orm.detachQuietly(db);\n throw error;\n }\n }\n\n public static async executeQueries(transaction: Transaction, queries: string[], params: any[]): Promise<any> {\n try {\n return await queries.reduce((promiseChain: Promise<any>, currentQuery: string, index: number) => {\n return promiseChain.then(() => new Promise((resolve, reject) => {\n transaction.query(currentQuery, params[index], (err: any, result: any): void => {\n if (err) {\n return reject(err);\n }\n\n return resolve(result);\n });\n }));\n }, Promise.resolve());\n } catch (error) {\n return await new Promise((resolve, reject) => {\n transaction.rollback((rollbackErr: any): void => {\n if (rollbackErr) {\n return reject(rollbackErr);\n }\n\n return reject(error);\n });\n });\n }\n }\n}\n"]}
1
+ {"version":3,"file":"Orm.js","sourceRoot":"","sources":["../src/Orm.ts"],"names":[],"mappings":"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","sourcesContent":["import * as Firebird from \"node-firebird\";\r\nimport { ConnectionPool, Database, Options, QueryParams, Transaction } from \"node-firebird\";\r\nimport { Logger } from \"./Logger\";\r\nimport { RestUtilities } from \"./Utilities\";\r\nimport {\r\n describeFirebirdCompatibilityOptions,\r\n enhanceFirebirdError,\r\n FirebirdOptions,\r\n normalizeFirebirdOptions,\r\n} from \"./firebird-compat\";\r\n\r\nexport class Orm {\r\n private static logger: Logger = new Logger(Orm.name);\r\n private static pools: Map<string, ConnectionPool> = new Map();\r\n\r\n public static quote(value: string): string {\r\n return \"\\\"\" + value + \"\\\"\";\r\n }\r\n\r\n /** Dimensione pool: default 5 (pool attivo); `poolSize: 0` disabilita e torna all'attach per query. */\r\n private static getPoolSize(options: Options): number {\r\n const raw = (options as FirebirdOptions).poolSize;\r\n if (raw === 0) {\r\n return 0;\r\n }\r\n const size = raw === undefined ? 5 : Number(raw);\r\n return Number.isFinite(size) && size > 0 ? Math.trunc(size) : 0;\r\n }\r\n\r\n private static shouldLogQueryParameters(options: Options): boolean {\r\n return (options as FirebirdOptions).logQueryParameters === true;\r\n }\r\n\r\n private static formatQueryForLog(query: string, parameters: QueryParams, includeValues: boolean): string {\r\n const parameterList = Array.isArray(parameters) ? parameters : Object.values(parameters ?? {});\r\n if (includeValues) {\r\n return RestUtilities.printQueryWithParams(query, parameterList);\r\n }\r\n return `${query.replace(/\\s+/g, \" \").trim()} [params=${parameterList.length}]`;\r\n }\r\n\r\n private static buildPoolKey(options: Options, size: number): string {\r\n const normalized = normalizeFirebirdOptions(options);\r\n return [\r\n size,\r\n normalized.host ?? \"\",\r\n normalized.port ?? \"\",\r\n normalized.database ?? \"\",\r\n normalized.user ?? \"\",\r\n normalized.pluginName ?? \"\",\r\n String(normalized.wireCrypt ?? \"\"),\r\n ].join(\"|\");\r\n }\r\n\r\n /**\r\n * Chiude tutti i pool creati (opt-in `poolSize`). Utile a fine processo o nei test,\r\n * perché i pool mantengono connessioni e timer attivi.\r\n */\r\n public static async closePools(): Promise<void> {\r\n const pools = Array.from(this.pools.values());\r\n this.pools.clear();\r\n await Promise.all(pools.map((pool) => new Promise<void>((resolve) => {\r\n try {\r\n pool.destroy(() => resolve());\r\n } catch {\r\n resolve();\r\n }\r\n })));\r\n }\r\n\r\n private static getPool(options: Options, size: number): ConnectionPool {\r\n const normalized = normalizeFirebirdOptions(options);\r\n const key = this.buildPoolKey(normalized, size);\r\n let pool = this.pools.get(key);\r\n if (!pool) {\r\n this.logger.info(`Firebird pool created (max=${size}) using ${describeFirebirdCompatibilityOptions(normalized)}`);\r\n pool = Firebird.pool(size, normalized);\r\n pool.on(\"error\", (error: Error) => {\r\n this.logger.error(`Firebird pool error: ${error.message}`);\r\n });\r\n this.pools.set(key, pool);\r\n }\r\n return pool;\r\n }\r\n\r\n private static getTimeoutMs(options: Options): number {\r\n const candidate = (options as FirebirdOptions).connectTimeout ?? 15000;\r\n return Number.isFinite(candidate) && candidate > 0 ? Math.trunc(candidate) : 15000;\r\n }\r\n\r\n private static createTimeoutError(stage: string, timeoutMs: number, options: Options, query?: string): Error {\r\n const target = `${options.host ?? \"?\"}:${options.port ?? \"?\"} -> ${options.database ?? \"?\"}`;\r\n const suffix = query ? ` | sql=${query.replace(/\\s+/g, \" \").trim()}` : \"\";\r\n return new Error(`Timeout during Firebird ${stage} after ${timeoutMs} ms on ${target}${suffix}`);\r\n }\r\n\r\n private static async detachQuietly(db: Database | undefined): Promise<void> {\r\n if (!db) {\r\n return;\r\n }\r\n\r\n await new Promise<void>((resolve) => {\r\n try {\r\n db.detach(() => resolve());\r\n } catch {\r\n resolve();\r\n }\r\n });\r\n }\r\n\r\n private static shouldTrimStringResults(options: FirebirdOptions): boolean {\r\n return options.trimStringResults !== false;\r\n }\r\n\r\n private static normalizeResultValue(value: unknown, trimStringResults: boolean): unknown {\r\n if (!trimStringResults || value === undefined || value === null) {\r\n return value;\r\n }\r\n\r\n if (typeof value === \"string\" || value instanceof String) {\r\n return String(value).trimEnd();\r\n }\r\n\r\n if (Array.isArray(value)) {\r\n return value.map((item) => this.normalizeResultValue(item, trimStringResults));\r\n }\r\n\r\n if (value instanceof Date || Buffer.isBuffer(value)) {\r\n return value;\r\n }\r\n\r\n if (typeof value === \"object\") {\r\n const source = value as Record<string, unknown>;\r\n return Object.keys(source).reduce((normalized: Record<string, unknown>, key: string) => {\r\n normalized[key] = this.normalizeResultValue(source[key], trimStringResults);\r\n return normalized;\r\n }, {});\r\n }\r\n\r\n return value;\r\n }\r\n\r\n private static attachWithTimeout(options: Options): Promise<Database> {\r\n return new Promise((resolve, reject): void => {\r\n const normalizedOptions = normalizeFirebirdOptions(options);\r\n const timeoutMs = this.getTimeoutMs(normalizedOptions);\r\n const poolSize = this.getPoolSize(options);\r\n let settled = false;\r\n const timeoutId = setTimeout(() => {\r\n if (settled) {\r\n return;\r\n }\r\n\r\n settled = true;\r\n reject(\r\n enhanceFirebirdError(\r\n this.createTimeoutError(\"attach\", timeoutMs, normalizedOptions),\r\n normalizedOptions,\r\n { stage: \"attach\" },\r\n ),\r\n );\r\n }, timeoutMs);\r\n\r\n const handle = async (err: unknown, db: Database): Promise<void> => {\r\n if (settled) {\r\n await this.detachQuietly(db);\r\n return;\r\n }\r\n\r\n settled = true;\r\n clearTimeout(timeoutId);\r\n\r\n if (err) {\r\n return reject(enhanceFirebirdError(err, normalizedOptions, { stage: \"attach\" }));\r\n }\r\n\r\n return resolve(db);\r\n };\r\n\r\n try {\r\n if (poolSize > 0) {\r\n this.getPool(options, poolSize).get(handle);\r\n return;\r\n }\r\n\r\n this.logger.info(`Firebird attach using ${describeFirebirdCompatibilityOptions(normalizedOptions)}`);\r\n\r\n Firebird.attach(normalizedOptions, handle);\r\n } catch (error) {\r\n // Attach/get sincrono fallito: evita di lasciare il timer di timeout pendente.\r\n if (!settled) {\r\n settled = true;\r\n clearTimeout(timeoutId);\r\n reject(enhanceFirebirdError(error, normalizedOptions, { stage: \"attach\" }));\r\n }\r\n }\r\n });\r\n }\r\n\r\n public static async testConnection(options: Options): Promise<boolean> {\r\n return new Promise((resolve): void => {\r\n this.attachWithTimeout(options)\r\n .then(async (db: Database): Promise<void> => {\r\n this.logger.info(\"DATABASE connesso.\");\r\n await this.detachQuietly(db);\r\n resolve(true);\r\n })\r\n .catch((err: Error): void => {\r\n this.logger.error(\"La connessione con il DATABASE non e andata a buon fine.\");\r\n this.logger.error(err);\r\n resolve(false);\r\n });\r\n });\r\n }\r\n\r\n public static async query<T = Record<string, unknown>>(\r\n options: Options,\r\n query: string,\r\n parameters: QueryParams = [],\r\n logQuery = true,\r\n ): Promise<T[]> {\r\n try {\r\n const normalizedOptions = normalizeFirebirdOptions(options);\r\n const db = await this.attachWithTimeout(options);\r\n\r\n return await new Promise<T[]>((resolve, reject): void => {\r\n const timeoutMs = this.getTimeoutMs(normalizedOptions);\r\n let settled = false;\r\n const timeoutId = setTimeout(async () => {\r\n if (settled) {\r\n return;\r\n }\r\n\r\n settled = true;\r\n await this.detachQuietly(db);\r\n reject(\r\n enhanceFirebirdError(\r\n this.createTimeoutError(\"query\", timeoutMs, normalizedOptions, query),\r\n normalizedOptions,\r\n { stage: \"query\", sql: query },\r\n ),\r\n );\r\n }, timeoutMs);\r\n\r\n if (logQuery) {\r\n this.logger.info(this.formatQueryForLog(query, parameters, this.shouldLogQueryParameters(options)));\r\n }\r\n\r\n db.query<unknown>(query, parameters, async (error: unknown, result: unknown[]) => {\r\n if (settled) {\r\n await this.detachQuietly(db);\r\n return;\r\n }\r\n\r\n settled = true;\r\n clearTimeout(timeoutId);\r\n await this.detachQuietly(db);\r\n\r\n if (error) {\r\n return reject(enhanceFirebirdError(error, normalizedOptions, { stage: \"query\", sql: query }));\r\n }\r\n\r\n return resolve(this.normalizeResultValue(result, this.shouldTrimStringResults(normalizedOptions)) as T[]);\r\n });\r\n });\r\n } catch (error) {\r\n const normalizedError = enhanceFirebirdError(error, options, { stage: \"query\", sql: query });\r\n this.logger.error(normalizedError);\r\n throw normalizedError;\r\n }\r\n }\r\n\r\n public static async execute<T = Record<string, unknown>>(\r\n options: Options,\r\n query: string,\r\n parameters: QueryParams = [],\r\n logQuery = true,\r\n ): Promise<T[]> {\r\n try {\r\n const normalizedOptions = normalizeFirebirdOptions(options);\r\n const db = await this.attachWithTimeout(options);\r\n\r\n return await new Promise<T[]>((resolve, reject): void => {\r\n const timeoutMs = this.getTimeoutMs(normalizedOptions);\r\n let settled = false;\r\n const timeoutId = setTimeout(async () => {\r\n if (settled) {\r\n return;\r\n }\r\n\r\n settled = true;\r\n await this.detachQuietly(db);\r\n reject(\r\n enhanceFirebirdError(\r\n this.createTimeoutError(\"execute\", timeoutMs, normalizedOptions, query),\r\n normalizedOptions,\r\n { stage: \"execute\", sql: query },\r\n ),\r\n );\r\n }, timeoutMs);\r\n\r\n if (logQuery) {\r\n this.logger.info(this.formatQueryForLog(query, parameters, this.shouldLogQueryParameters(options)));\r\n }\r\n\r\n db.execute<unknown>(query, parameters, async (error: unknown, result: unknown[]) => {\r\n if (settled) {\r\n await this.detachQuietly(db);\r\n return;\r\n }\r\n\r\n settled = true;\r\n clearTimeout(timeoutId);\r\n await this.detachQuietly(db);\r\n\r\n if (error) {\r\n return reject(enhanceFirebirdError(error, normalizedOptions, { stage: \"execute\", sql: query }));\r\n }\r\n\r\n return resolve(this.normalizeResultValue(result, this.shouldTrimStringResults(normalizedOptions)) as T[]);\r\n });\r\n });\r\n } catch (error) {\r\n const normalizedError = enhanceFirebirdError(error, options, { stage: \"execute\", sql: query });\r\n this.logger.error(normalizedError);\r\n throw normalizedError;\r\n }\r\n }\r\n\r\n public static trimParam<T>(param: T): string | T {\r\n if (typeof param === \"string\" || param instanceof String) {\r\n return String(param).trim();\r\n }\r\n return param;\r\n }\r\n\r\n public static async connect(options: Options): Promise<Database> {\r\n return this.attachWithTimeout(options);\r\n }\r\n\r\n /**\r\n * Runs `operation` inside a single Firebird transaction: commit on success,\r\n * rollback on failure, detach in every case. Use it to make multi-statement\r\n * writes atomic instead of relying on auto-commit per statement.\r\n */\r\n public static async withTransaction<T>(\r\n options: Options,\r\n operation: (transaction: Transaction) => Promise<T>,\r\n ): Promise<T> {\r\n const db = await this.connect(options);\r\n let transaction: Transaction | undefined;\r\n\r\n try {\r\n transaction = await this.startTransaction(db);\r\n const result = await operation(transaction);\r\n await this.commitTransaction(transaction);\r\n return result;\r\n } catch (error) {\r\n if (transaction) {\r\n try {\r\n await this.rollbackTransaction(transaction);\r\n } catch {\r\n // Se la rollback fallisce (connessione persa) l'errore originale resta quello rilevante.\r\n }\r\n }\r\n throw error;\r\n } finally {\r\n await this.detachQuietly(db);\r\n }\r\n }\r\n\r\n /** Esegue una query su una transazione esistente e ne restituisce il risultato. */\r\n public static transactionQuery<T = unknown>(\r\n transaction: Transaction,\r\n query: string,\r\n parameters: QueryParams = [],\r\n ): Promise<T> {\r\n return new Promise<T>((resolve, reject): void => {\r\n transaction.query(query, parameters, (error: unknown, result: unknown[]): void => {\r\n if (error) {\r\n reject(error);\r\n return;\r\n }\r\n\r\n resolve(result as T);\r\n });\r\n });\r\n }\r\n\r\n public static async startTransaction(db: Database): Promise<Transaction> {\r\n return new Promise((resolve, reject): void => {\r\n db.transaction(Firebird.ISOLATION_READ_COMMITTED, function (err: unknown, transaction: Transaction): void {\r\n if (err) {\r\n return reject(err);\r\n }\r\n\r\n return resolve(transaction);\r\n });\r\n });\r\n }\r\n\r\n public static async commitTransaction(transaction: Transaction): Promise<string> {\r\n return new Promise((resolve, reject): void => {\r\n transaction.commit((err: unknown): void => {\r\n if (err) {\r\n return reject(err);\r\n }\r\n\r\n return resolve(\"Transaction committed successfully.\");\r\n });\r\n });\r\n }\r\n\r\n public static async rollbackTransaction(transaction: Transaction): Promise<string> {\r\n return new Promise((resolve, reject): void => {\r\n transaction.rollback((err: unknown): void => {\r\n if (err) {\r\n return reject(err);\r\n }\r\n\r\n return resolve(\"Transaction rolled back successfully.\");\r\n });\r\n });\r\n }\r\n\r\n public static async executeMultiple(options: Options, queriesWithParams: { query: string, params: QueryParams }[]): Promise<string> {\r\n await Orm.withTransaction(options, async (transaction) => {\r\n for (const qwp of queriesWithParams) {\r\n await Orm.transactionQuery(transaction, qwp.query, qwp.params);\r\n }\r\n });\r\n\r\n return \"OK\";\r\n }\r\n\r\n public static async executeQueries(transaction: Transaction, queries: string[], params: QueryParams[]): Promise<unknown> {\r\n try {\r\n return await queries.reduce((promiseChain: Promise<unknown>, currentQuery: string, index: number) => {\r\n return promiseChain.then(() => new Promise((resolve, reject) => {\r\n transaction.query(currentQuery, params[index] ?? [], (err: unknown, result: unknown[]): void => {\r\n if (err) {\r\n return reject(err);\r\n }\r\n\r\n return resolve(result);\r\n });\r\n }));\r\n }, Promise.resolve());\r\n } catch (error) {\r\n return await new Promise((_resolve, reject) => {\r\n transaction.rollback((rollbackErr: unknown): void => {\r\n if (rollbackErr) {\r\n return reject(rollbackErr);\r\n }\r\n\r\n return reject(error);\r\n });\r\n });\r\n }\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"RoutesLoggerMiddleware.js","sourceRoot":"","sources":["../src/RoutesLoggerMiddleware.ts"],"names":[],"mappings":";;;AAGA;;GAEG;AACH,MAAa,sBAAsB;IAG/B;;;OAGG;IACH,YAAY,MAAc;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED;;;;;OAKG;IACH,gBAAgB,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB;QAC5D,MAAM,KAAK,GAAS,IAAI,IAAI,EAAE,CAAC,CAAC,wCAAwC;QAExE,0EAA0E;QAC1E,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAS,EAAE;YACxB,MAAM,GAAG,GAAS,IAAI,IAAI,EAAE,CAAC,CAAC,sCAAsC;YACpE,MAAM,OAAO,GAAW,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,8CAA8C;YAEvG,gDAAgD;YAChD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,WAAW,KAAK,OAAO,KAAK,CAAC,CAAC;QAC3F,CAAC,CAAC,CAAC;QAEH,yDAAyD;QACzD,IAAI,EAAE,CAAC;IACX,CAAC;CACJ;AAhCD,wDAgCC","sourcesContent":["import { NextFunction, Request, Response } from \"express\";\nimport { Logger } from \".\";\n\n/**\n * Middleware class for logging the execution time of routes.\n */\nexport class RoutesLoggerMiddleware {\n private logger: Logger;\n\n /**\n * Initializes the logger instance to be used.\n * @param logger - The logger instance.\n */\n constructor(logger: Logger) {\n this.logger = logger;\n }\n\n /**\n * Middleware function to log the execution time of each route.\n * @param req - The incoming HTTP request.\n * @param res - The HTTP response.\n * @param next - The next middleware function in the chain.\n */\n logExecutionTime(req: Request, res: Response, next: NextFunction): void {\n const start: Date = new Date(); // Record the start time of the request.\n\n // Attach a listener to the response object to calculate the elapsed time.\n res.on(\"finish\", (): void => {\n const end: Date = new Date(); // Record the end time of the request.\n const elapsed: number = end.getTime() - start.getTime(); // Calculate the elapsed time in milliseconds.\n\n // Log the HTTP method, URL, and execution time.\n this.logger.info(`Execution time for ${req.method} ${req.originalUrl}: ${elapsed} ms`);\n });\n\n // Continue to the next middleware function in the chain.\n next();\n }\n}\n"]}
1
+ {"version":3,"file":"RoutesLoggerMiddleware.js","sourceRoot":"","sources":["../src/RoutesLoggerMiddleware.ts"],"names":[],"mappings":";;;AAGA;;GAEG;AACH,MAAa,sBAAsB;IAG/B;;;OAGG;IACH,YAAY,MAAc;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED;;;;;OAKG;IACH,gBAAgB,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB;QAC5D,MAAM,KAAK,GAAS,IAAI,IAAI,EAAE,CAAC,CAAC,wCAAwC;QAExE,0EAA0E;QAC1E,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAS,EAAE;YACxB,MAAM,GAAG,GAAS,IAAI,IAAI,EAAE,CAAC,CAAC,sCAAsC;YACpE,MAAM,OAAO,GAAW,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,8CAA8C;YAEvG,gDAAgD;YAChD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,WAAW,KAAK,OAAO,KAAK,CAAC,CAAC;QAC3F,CAAC,CAAC,CAAC;QAEH,yDAAyD;QACzD,IAAI,EAAE,CAAC;IACX,CAAC;CACJ;AAhCD,wDAgCC","sourcesContent":["import { NextFunction, Request, Response } from \"express\";\r\nimport { Logger } from \".\";\r\n\r\n/**\r\n * Middleware class for logging the execution time of routes.\r\n */\r\nexport class RoutesLoggerMiddleware {\r\n private logger: Logger;\r\n\r\n /**\r\n * Initializes the logger instance to be used.\r\n * @param logger - The logger instance.\r\n */\r\n constructor(logger: Logger) {\r\n this.logger = logger;\r\n }\r\n\r\n /**\r\n * Middleware function to log the execution time of each route.\r\n * @param req - The incoming HTTP request.\r\n * @param res - The HTTP response.\r\n * @param next - The next middleware function in the chain.\r\n */\r\n logExecutionTime(req: Request, res: Response, next: NextFunction): void {\r\n const start: Date = new Date(); // Record the start time of the request.\r\n\r\n // Attach a listener to the response object to calculate the elapsed time.\r\n res.on(\"finish\", (): void => {\r\n const end: Date = new Date(); // Record the end time of the request.\r\n const elapsed: number = end.getTime() - start.getTime(); // Calculate the elapsed time in milliseconds.\r\n\r\n // Log the HTTP method, URL, and execution time.\r\n this.logger.info(`Execution time for ${req.method} ${req.originalUrl}: ${elapsed} ms`);\r\n });\r\n\r\n // Continue to the next middleware function in the chain.\r\n next();\r\n }\r\n}\r\n"]}
@@ -50,9 +50,10 @@ export declare class RestUtilities {
50
50
  * Sends an OK message as a response.
51
51
  * @param res - Express Response object.
52
52
  * @param message - The success message.
53
+ * @param status - HTTP success status. Defaults to 200; pass 201 only after creating a resource.
53
54
  * @returns The Response object.
54
55
  */
55
- static sendOKMessage(res: Response, message: string): Response;
56
+ static sendOKMessage(res: Response, message: string, status?: number): Response;
56
57
  /**
57
58
  * Sends an error message as a response.
58
59
  * @param res - Express Response object.
@@ -61,7 +62,9 @@ export declare class RestUtilities {
61
62
  * @param status - HTTP status code (default: 500).
62
63
  * @returns The Response object.
63
64
  */
64
- static sendErrorMessage(res: Response, error: any, tag?: string, status?: number): Response;
65
+ static sendErrorMessage(res: Response, error: unknown, _tag?: string, status?: number): Response;
66
+ /** Riconosce errori di metadata Firebird che richiedono una migrazione. */
67
+ static isDatabaseSchemaError(error: unknown): boolean;
65
68
  static sendUnauthorized(res: Response): Response;
66
69
  static sendInvalidCredentials(res: Response): Response;
67
70
  static sendPasswordExpired(res: Response): Response;
@@ -69,27 +72,32 @@ export declare class RestUtilities {
69
72
  * Sends a base response with a payload.
70
73
  * @param res - Express Response object.
71
74
  * @param payload - The payload to include in the response.
75
+ * @param status - HTTP success status. Defaults to 200; pass 201 only after creating a resource.
72
76
  * @returns The Response object.
73
77
  */
74
- static sendBaseResponse(res: Response, payload: any): Response;
78
+ static sendBaseResponse(res: Response, payload: unknown, status?: number): Response;
75
79
  /**
76
80
  * Sends an execution message as a response.
77
81
  * @param res - Express Response object.
78
82
  * @param executionObject - The execution data.
79
83
  * @param title - The title of the response.
84
+ * @param status - HTTP success status. Defaults to 200.
80
85
  * @returns The Response object.
81
86
  */
82
- static sendExecMessage(res: Response, executionObject: any, title: string): Response;
87
+ static sendExecMessage(res: Response, executionObject: unknown, title: string, status?: number): Response;
83
88
  /**
84
- * Prints a SQL query with parameters replaced.
89
+ * Prints a SQL query with parameters replaced. Replacement is literal: values
90
+ * containing `?` or `$&` no longer corrupt the output as in the legacy
91
+ * `String.replace` implementation.
85
92
  * @param query - The SQL query.
86
93
  * @param params - The parameters to replace.
87
94
  * @returns The formatted query.
88
95
  */
89
- static printQueryWithParams(query: string, params: any[]): string;
90
- static convertKeysToCamelCase(obj: any): any;
96
+ static printQueryWithParams(query?: string, params?: unknown[]): string;
97
+ static convertKeysToCamelCase<T = Record<string, unknown>>(obj: unknown): T;
91
98
  }
92
99
  export declare class CryptUtilities {
100
+ private static readonly logger;
93
101
  /**
94
102
  * Cifra un testo in chiaro usando l'algoritmo AES-128 in modalità ECB.
95
103
  *
@@ -124,6 +132,8 @@ export declare class PasswordUtilities {
124
132
  static hashLegacyEncryptedPassword(legacyEncryptedPassword: string): string;
125
133
  static isPasswordHash(value: string): boolean;
126
134
  static isLegacyPasswordHash(value: string): boolean;
135
+ /** Confronto a tempo costante tra due stringhe (per dati legacy non hashati). */
136
+ static timingSafeStringEquals(value: string, candidate: string): boolean;
127
137
  static verifyPassword(plainPassword: string, storedPassword: string): boolean;
128
138
  static verifyLegacyEncryptedPassword(legacyEncryptedPassword: string, storedPassword: string): boolean;
129
139
  }
@@ -154,4 +164,4 @@ export declare class DatabaseUtilities {
154
164
  */
155
165
  static createOption(host: string, port: number, database: string, username?: string, password?: string): FirebirdOptions;
156
166
  }
157
- export declare function Deprecated(message: string): (target: any, key?: string, descriptor?: PropertyDescriptor) => void;
167
+ export declare function Deprecated(message: string): (target: object, key?: string, descriptor?: PropertyDescriptor) => void;