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

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 (379) hide show
  1. package/dist/DailyFileTransport.d.ts +15 -0
  2. package/dist/DailyFileTransport.js +67 -0
  3. package/dist/DailyFileTransport.js.map +1 -0
  4. package/dist/DatabaseUpdater.js +0 -2
  5. package/dist/DatabaseUpdater.js.map +1 -1
  6. package/dist/ExecutionTimeLogger.js +2 -2
  7. package/dist/ExecutionTimeLogger.js.map +1 -1
  8. package/dist/Logger.d.ts +0 -2
  9. package/dist/Logger.js +6 -70
  10. package/dist/Logger.js.map +1 -1
  11. package/dist/Utilities.d.ts +8 -3
  12. package/dist/Utilities.js +61 -16
  13. package/dist/Utilities.js.map +1 -1
  14. package/dist/accessi-module/AccessiModule.d.ts +60 -0
  15. package/dist/accessi-module/AccessiModule.js +21 -5
  16. package/dist/accessi-module/AccessiModule.js.map +1 -1
  17. package/dist/accessi-module/Console/accessiFetch.d.ts +7 -0
  18. package/dist/accessi-module/Console/accessiFetch.js +59 -0
  19. package/dist/accessi-module/Console/accessiFetch.js.map +1 -0
  20. package/dist/accessi-module/Console/console.css +370 -0
  21. package/dist/accessi-module/Console/console.d.ts +1 -0
  22. package/dist/accessi-module/Console/console.js +1105 -0
  23. package/dist/accessi-module/Console/console.js.map +1 -0
  24. package/dist/accessi-module/Console/generated/accessiApi.d.ts +376 -0
  25. package/dist/accessi-module/Console/generated/accessiApi.js +363 -0
  26. package/dist/accessi-module/Console/generated/accessiApi.js.map +1 -0
  27. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.d.ts +27 -0
  28. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.js +3 -0
  29. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.js.map +1 -0
  30. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.d.ts +16 -0
  31. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.js +17 -0
  32. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.js.map +1 -0
  33. package/dist/accessi-module/Console/generated/model/actionResponse.d.ts +12 -0
  34. package/dist/accessi-module/Console/generated/model/actionResponse.js +9 -0
  35. package/dist/accessi-module/Console/generated/model/actionResponse.js.map +1 -0
  36. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.d.ts +11 -0
  37. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.js +3 -0
  38. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.js.map +1 -0
  39. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.d.ts +10 -0
  40. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.js +9 -0
  41. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.js.map +1 -0
  42. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.d.ts +10 -0
  43. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.js +3 -0
  44. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.js.map +1 -0
  45. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.d.ts +19 -0
  46. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.js +9 -0
  47. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.js.map +1 -0
  48. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.d.ts +14 -0
  49. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.js +9 -0
  50. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.js.map +1 -0
  51. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.d.ts +13 -0
  52. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.js +9 -0
  53. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.js.map +1 -0
  54. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.d.ts +13 -0
  55. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.js +9 -0
  56. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.js.map +1 -0
  57. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.d.ts +18 -0
  58. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.js +3 -0
  59. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.js.map +1 -0
  60. package/dist/accessi-module/Console/generated/model/errorResponse.d.ts +18 -0
  61. package/dist/accessi-module/Console/generated/model/errorResponse.js +9 -0
  62. package/dist/accessi-module/Console/generated/model/errorResponse.js.map +1 -0
  63. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.d.ts +14 -0
  64. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.js +3 -0
  65. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.js.map +1 -0
  66. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.d.ts +14 -0
  67. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.js +3 -0
  68. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.js.map +1 -0
  69. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.d.ts +23 -0
  70. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.js +9 -0
  71. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.js.map +1 -0
  72. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.d.ts +14 -0
  73. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.js +3 -0
  74. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.js.map +1 -0
  75. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.d.ts +14 -0
  76. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.js +3 -0
  77. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.js.map +1 -0
  78. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.d.ts +13 -0
  79. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.js +9 -0
  80. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.js.map +1 -0
  81. package/dist/accessi-module/Console/generated/model/filtriUtente.d.ts +32 -0
  82. package/dist/accessi-module/Console/generated/model/filtriUtente.js +9 -0
  83. package/dist/accessi-module/Console/generated/model/filtriUtente.js.map +1 -0
  84. package/dist/accessi-module/Console/generated/model/getFiltriResponse.d.ts +14 -0
  85. package/dist/accessi-module/Console/generated/model/getFiltriResponse.js +3 -0
  86. package/dist/accessi-module/Console/generated/model/getFiltriResponse.js.map +1 -0
  87. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.d.ts +12 -0
  88. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.js +9 -0
  89. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.js.map +1 -0
  90. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.d.ts +14 -0
  91. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.js +3 -0
  92. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.js.map +1 -0
  93. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.d.ts +12 -0
  94. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.js +9 -0
  95. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.js.map +1 -0
  96. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.d.ts +14 -0
  97. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.js +3 -0
  98. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.js.map +1 -0
  99. package/dist/accessi-module/Console/generated/model/getMenusResponse.d.ts +14 -0
  100. package/dist/accessi-module/Console/generated/model/getMenusResponse.js +3 -0
  101. package/dist/accessi-module/Console/generated/model/getMenusResponse.js.map +1 -0
  102. package/dist/accessi-module/Console/generated/model/getRolesResponse.d.ts +14 -0
  103. package/dist/accessi-module/Console/generated/model/getRolesResponse.js +3 -0
  104. package/dist/accessi-module/Console/generated/model/getRolesResponse.js.map +1 -0
  105. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.d.ts +10 -0
  106. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.js +9 -0
  107. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.js.map +1 -0
  108. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.d.ts +14 -0
  109. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.js +3 -0
  110. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.js.map +1 -0
  111. package/dist/accessi-module/Console/generated/model/getUsersParams.d.ts +24 -0
  112. package/dist/accessi-module/Console/generated/model/getUsersParams.js +9 -0
  113. package/dist/accessi-module/Console/generated/model/getUsersParams.js.map +1 -0
  114. package/dist/accessi-module/Console/generated/model/getUsersResponse.d.ts +14 -0
  115. package/dist/accessi-module/Console/generated/model/getUsersResponse.js +3 -0
  116. package/dist/accessi-module/Console/generated/model/getUsersResponse.js.map +1 -0
  117. package/dist/accessi-module/Console/generated/model/getUsersResult.d.ts +17 -0
  118. package/dist/accessi-module/Console/generated/model/getUsersResult.js +3 -0
  119. package/dist/accessi-module/Console/generated/model/getUsersResult.js.map +1 -0
  120. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.d.ts +12 -0
  121. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.js +9 -0
  122. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.js.map +1 -0
  123. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.d.ts +19 -0
  124. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.js +3 -0
  125. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.js.map +1 -0
  126. package/dist/accessi-module/Console/generated/model/index.d.ts +75 -0
  127. package/dist/accessi-module/Console/generated/model/index.js +92 -0
  128. package/dist/accessi-module/Console/generated/model/index.js.map +1 -0
  129. package/dist/accessi-module/Console/generated/model/loginRequest.d.ts +12 -0
  130. package/dist/accessi-module/Console/generated/model/loginRequest.js +9 -0
  131. package/dist/accessi-module/Console/generated/model/loginRequest.js.map +1 -0
  132. package/dist/accessi-module/Console/generated/model/loginResponse.d.ts +14 -0
  133. package/dist/accessi-module/Console/generated/model/loginResponse.js +3 -0
  134. package/dist/accessi-module/Console/generated/model/loginResponse.js.map +1 -0
  135. package/dist/accessi-module/Console/generated/model/loginResult.d.ts +32 -0
  136. package/dist/accessi-module/Console/generated/model/loginResult.js +3 -0
  137. package/dist/accessi-module/Console/generated/model/loginResult.js.map +1 -0
  138. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.d.ts +12 -0
  139. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.js +9 -0
  140. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.js.map +1 -0
  141. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.d.ts +13 -0
  142. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.js +14 -0
  143. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.js.map +1 -0
  144. package/dist/accessi-module/Console/generated/model/menuEntity.d.ts +32 -0
  145. package/dist/accessi-module/Console/generated/model/menuEntity.js +9 -0
  146. package/dist/accessi-module/Console/generated/model/menuEntity.js.map +1 -0
  147. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.d.ts +12 -0
  148. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.js +9 -0
  149. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.js.map +1 -0
  150. package/dist/accessi-module/Console/generated/model/permission.d.ts +12 -0
  151. package/dist/accessi-module/Console/generated/model/permission.js +9 -0
  152. package/dist/accessi-module/Console/generated/model/permission.js.map +1 -0
  153. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.d.ts +51 -0
  154. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.js +9 -0
  155. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.js.map +1 -0
  156. package/dist/accessi-module/Console/generated/model/registerRequest.d.ts +62 -0
  157. package/dist/accessi-module/Console/generated/model/registerRequest.js +3 -0
  158. package/dist/accessi-module/Console/generated/model/registerRequest.js.map +1 -0
  159. package/dist/accessi-module/Console/generated/model/registerResponse.d.ts +14 -0
  160. package/dist/accessi-module/Console/generated/model/registerResponse.js +3 -0
  161. package/dist/accessi-module/Console/generated/model/registerResponse.js.map +1 -0
  162. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.d.ts +13 -0
  163. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.js +9 -0
  164. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.js.map +1 -0
  165. package/dist/accessi-module/Console/generated/model/role.d.ts +15 -0
  166. package/dist/accessi-module/Console/generated/model/role.js +3 -0
  167. package/dist/accessi-module/Console/generated/model/role.js.map +1 -0
  168. package/dist/accessi-module/Console/generated/model/ruoliMenu.d.ts +15 -0
  169. package/dist/accessi-module/Console/generated/model/ruoliMenu.js +3 -0
  170. package/dist/accessi-module/Console/generated/model/ruoliMenu.js.map +1 -0
  171. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.d.ts +16 -0
  172. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.js +17 -0
  173. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.js.map +1 -0
  174. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.d.ts +12 -0
  175. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.js +9 -0
  176. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.js.map +1 -0
  177. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.d.ts +12 -0
  178. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.js +9 -0
  179. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.js.map +1 -0
  180. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.d.ts +10 -0
  181. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.js +9 -0
  182. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.js.map +1 -0
  183. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.d.ts +13 -0
  184. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.js +3 -0
  185. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.js.map +1 -0
  186. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.d.ts +18 -0
  187. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.js +19 -0
  188. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.js.map +1 -0
  189. package/dist/accessi-module/Console/generated/model/status.d.ts +12 -0
  190. package/dist/accessi-module/Console/generated/model/status.js +9 -0
  191. package/dist/accessi-module/Console/generated/model/status.js.map +1 -0
  192. package/dist/accessi-module/Console/generated/model/tipoFiltro.d.ts +23 -0
  193. package/dist/accessi-module/Console/generated/model/tipoFiltro.js +3 -0
  194. package/dist/accessi-module/Console/generated/model/tipoFiltro.js.map +1 -0
  195. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.d.ts +14 -0
  196. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.js +15 -0
  197. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.js.map +1 -0
  198. package/dist/accessi-module/Console/generated/model/tokenResult.d.ts +15 -0
  199. package/dist/accessi-module/Console/generated/model/tokenResult.js +3 -0
  200. package/dist/accessi-module/Console/generated/model/tokenResult.js.map +1 -0
  201. package/dist/accessi-module/Console/generated/model/tokenResultType.d.ts +14 -0
  202. package/dist/accessi-module/Console/generated/model/tokenResultType.js +15 -0
  203. package/dist/accessi-module/Console/generated/model/tokenResultType.js.map +1 -0
  204. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.d.ts +18 -0
  205. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.js +3 -0
  206. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.js.map +1 -0
  207. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.d.ts +10 -0
  208. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.js +14 -0
  209. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.js.map +1 -0
  210. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.d.ts +13 -0
  211. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.js +14 -0
  212. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.js.map +1 -0
  213. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.d.ts +10 -0
  214. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.js +9 -0
  215. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.js.map +1 -0
  216. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.d.ts +11 -0
  217. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.js +9 -0
  218. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.js.map +1 -0
  219. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.d.ts +12 -0
  220. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.js +9 -0
  221. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.js.map +1 -0
  222. package/dist/accessi-module/Console/generated/model/userDto.d.ts +88 -0
  223. package/dist/accessi-module/Console/generated/model/userDto.js +3 -0
  224. package/dist/accessi-module/Console/generated/model/userDto.js.map +1 -0
  225. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.d.ts +18 -0
  226. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.js +19 -0
  227. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.js.map +1 -0
  228. package/dist/accessi-module/Console/generated/model/userGrantsDto.d.ts +16 -0
  229. package/dist/accessi-module/Console/generated/model/userGrantsDto.js +3 -0
  230. package/dist/accessi-module/Console/generated/model/userGrantsDto.js.map +1 -0
  231. package/dist/accessi-module/Console/generated/model/userGrantsResponse.d.ts +14 -0
  232. package/dist/accessi-module/Console/generated/model/userGrantsResponse.js +3 -0
  233. package/dist/accessi-module/Console/generated/model/userGrantsResponse.js.map +1 -0
  234. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.d.ts +18 -0
  235. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.js +9 -0
  236. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.js.map +1 -0
  237. package/dist/accessi-module/Console/index.html +59 -0
  238. package/dist/accessi-module/Controllers/AccessiConsoleController.d.ts +11 -0
  239. package/dist/accessi-module/Controllers/AccessiConsoleController.js +74 -0
  240. package/dist/accessi-module/Controllers/AccessiConsoleController.js.map +1 -0
  241. package/dist/accessi-module/Controllers/AuthController.d.ts +4 -1
  242. package/dist/accessi-module/Controllers/AuthController.js +86 -47
  243. package/dist/accessi-module/Controllers/AuthController.js.map +1 -1
  244. package/dist/accessi-module/Controllers/ConfiguratorController.d.ts +1 -1
  245. package/dist/accessi-module/Controllers/ConfiguratorController.js +3 -1
  246. package/dist/accessi-module/Controllers/ConfiguratorController.js.map +1 -1
  247. package/dist/accessi-module/Controllers/EmailController.d.ts +1 -1
  248. package/dist/accessi-module/Controllers/EmailController.js +3 -1
  249. package/dist/accessi-module/Controllers/EmailController.js.map +1 -1
  250. package/dist/accessi-module/Controllers/FiltriController.d.ts +1 -1
  251. package/dist/accessi-module/Controllers/FiltriController.js +3 -1
  252. package/dist/accessi-module/Controllers/FiltriController.js.map +1 -1
  253. package/dist/accessi-module/Controllers/PermissionController.d.ts +1 -1
  254. package/dist/accessi-module/Controllers/PermissionController.js +9 -5
  255. package/dist/accessi-module/Controllers/PermissionController.js.map +1 -1
  256. package/dist/accessi-module/Controllers/UserController.d.ts +3 -1
  257. package/dist/accessi-module/Controllers/UserController.js +40 -2
  258. package/dist/accessi-module/Controllers/UserController.js.map +1 -1
  259. package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js +1 -1
  260. package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js.map +1 -1
  261. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.d.ts +3 -0
  262. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.js +18 -0
  263. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.js.map +1 -1
  264. package/dist/accessi-module/Dtos/BaseResponse.d.ts +2 -0
  265. package/dist/accessi-module/Dtos/BaseResponse.js +21 -2
  266. package/dist/accessi-module/Dtos/BaseResponse.js.map +1 -1
  267. package/dist/accessi-module/Dtos/FederatedIdentityDtos.d.ts +69 -0
  268. package/dist/accessi-module/Dtos/FederatedIdentityDtos.js +236 -0
  269. package/dist/accessi-module/Dtos/FederatedIdentityDtos.js.map +1 -0
  270. package/dist/accessi-module/Dtos/FiltriUtente.js +4 -1
  271. package/dist/accessi-module/Dtos/FiltriUtente.js.map +1 -1
  272. package/dist/accessi-module/Dtos/LoginRequest.d.ts +1 -1
  273. package/dist/accessi-module/Dtos/LoginRequest.js +3 -2
  274. package/dist/accessi-module/Dtos/LoginRequest.js.map +1 -1
  275. package/dist/accessi-module/Dtos/LoginResponse.d.ts +5 -1
  276. package/dist/accessi-module/Dtos/LoginResponse.js +19 -6
  277. package/dist/accessi-module/Dtos/LoginResponse.js.map +1 -1
  278. package/dist/accessi-module/Dtos/Permission.d.ts +1 -0
  279. package/dist/accessi-module/Dtos/Permission.js +1 -0
  280. package/dist/accessi-module/Dtos/Permission.js.map +1 -1
  281. package/dist/accessi-module/Dtos/PublicRegisterRequest.d.ts +1 -1
  282. package/dist/accessi-module/Dtos/PublicRegisterRequest.js +1 -0
  283. package/dist/accessi-module/Dtos/PublicRegisterRequest.js.map +1 -1
  284. package/dist/accessi-module/Dtos/RegisterRequest.js +1 -0
  285. package/dist/accessi-module/Dtos/RegisterRequest.js.map +1 -1
  286. package/dist/accessi-module/Dtos/Role.d.ts +4 -0
  287. package/dist/accessi-module/Dtos/Role.js +4 -0
  288. package/dist/accessi-module/Dtos/Role.js.map +1 -1
  289. package/dist/accessi-module/Dtos/TipoAbilitazione.d.ts +4 -0
  290. package/dist/accessi-module/Dtos/TipoAbilitazione.js +4 -0
  291. package/dist/accessi-module/Dtos/TipoAbilitazione.js.map +1 -1
  292. package/dist/accessi-module/Dtos/TwoFactorDtos.d.ts +13 -0
  293. package/dist/accessi-module/Dtos/TwoFactorDtos.js +60 -0
  294. package/dist/accessi-module/Dtos/TwoFactorDtos.js.map +1 -0
  295. package/dist/accessi-module/Dtos/UserDto.d.ts +7 -0
  296. package/dist/accessi-module/Dtos/UserDto.js +22 -0
  297. package/dist/accessi-module/Dtos/UserDto.js.map +1 -1
  298. package/dist/accessi-module/Dtos/index.d.ts +2 -0
  299. package/dist/accessi-module/Dtos/index.js +2 -0
  300. package/dist/accessi-module/Dtos/index.js.map +1 -1
  301. package/dist/accessi-module/Services/AuthService/AuthService.d.ts +39 -4
  302. package/dist/accessi-module/Services/AuthService/AuthService.js +184 -32
  303. package/dist/accessi-module/Services/AuthService/AuthService.js.map +1 -1
  304. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.d.ts +3 -1
  305. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.js +5 -1
  306. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.js.map +1 -1
  307. package/dist/accessi-module/Services/EmailService/EmailService.d.ts +7 -1
  308. package/dist/accessi-module/Services/EmailService/EmailService.js +23 -5
  309. package/dist/accessi-module/Services/EmailService/EmailService.js.map +1 -1
  310. package/dist/accessi-module/Services/FiltriService/FiltriService.d.ts +9 -1
  311. package/dist/accessi-module/Services/FiltriService/FiltriService.js +29 -4
  312. package/dist/accessi-module/Services/FiltriService/FiltriService.js.map +1 -1
  313. package/dist/accessi-module/Services/PermissionService/PermissionService.d.ts +29 -1
  314. package/dist/accessi-module/Services/PermissionService/PermissionService.js +38 -7
  315. package/dist/accessi-module/Services/PermissionService/PermissionService.js.map +1 -1
  316. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.d.ts +27 -0
  317. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.js +179 -0
  318. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.js.map +1 -0
  319. package/dist/accessi-module/Services/UserService/UserService.d.ts +26 -2
  320. package/dist/accessi-module/Services/UserService/UserService.js +124 -30
  321. package/dist/accessi-module/Services/UserService/UserService.js.map +1 -1
  322. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.d.ts +38 -10
  323. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js +368 -184
  324. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js.map +1 -1
  325. package/dist/accessi-module/database-updates/accessiSchema.d.ts +45 -0
  326. package/dist/accessi-module/database-updates/accessiSchema.js +79 -0
  327. package/dist/accessi-module/database-updates/accessiSchema.js.map +1 -0
  328. package/dist/accessi-module/database-updates/optionalColumns.d.ts +5 -0
  329. package/dist/accessi-module/database-updates/optionalColumns.js +26 -0
  330. package/dist/accessi-module/database-updates/optionalColumns.js.map +1 -0
  331. package/dist/accessi-module/database-updates/runAccessiDbUpdate.js +11 -6
  332. package/dist/accessi-module/database-updates/runAccessiDbUpdate.js.map +1 -1
  333. package/dist/accessi-module/federated-auth/FederatedAuthController.d.ts +23 -0
  334. package/dist/accessi-module/federated-auth/FederatedAuthController.js +307 -0
  335. package/dist/accessi-module/federated-auth/FederatedAuthController.js.map +1 -0
  336. package/dist/accessi-module/federated-auth/FederatedAuthService.d.ts +94 -0
  337. package/dist/accessi-module/federated-auth/FederatedAuthService.js +424 -0
  338. package/dist/accessi-module/federated-auth/FederatedAuthService.js.map +1 -0
  339. package/dist/accessi-module/federated-auth/FederatedAuthTypes.d.ts +53 -0
  340. package/dist/accessi-module/federated-auth/FederatedAuthTypes.js +3 -0
  341. package/dist/accessi-module/federated-auth/FederatedAuthTypes.js.map +1 -0
  342. package/dist/accessi-module/index.d.ts +14 -0
  343. package/dist/accessi-module/index.js +18 -10
  344. package/dist/accessi-module/index.js.map +1 -1
  345. package/dist/accessi-module/jwt/jwt.strategy.d.ts +1 -1
  346. package/dist/accessi-module/jwt/jwt.strategy.js +10 -4
  347. package/dist/accessi-module/jwt/jwt.strategy.js.map +1 -1
  348. package/dist/accessi-module/middleware/accessiRequirements.d.ts +22 -0
  349. package/dist/accessi-module/middleware/accessiRequirements.js +7 -0
  350. package/dist/accessi-module/middleware/accessiRequirements.js.map +1 -1
  351. package/dist/accessi-module/middleware/authenticateGen.d.ts +16 -1
  352. package/dist/accessi-module/middleware/authenticateGen.js +54 -20
  353. package/dist/accessi-module/middleware/authenticateGen.js.map +1 -1
  354. package/dist/accessi-module/security/AccessiHttpExceptionFilter.d.ts +12 -0
  355. package/dist/accessi-module/security/AccessiHttpExceptionFilter.js +74 -0
  356. package/dist/accessi-module/security/AccessiHttpExceptionFilter.js.map +1 -0
  357. package/dist/accessi-module/security/accessControl.d.ts +11 -0
  358. package/dist/accessi-module/security/accessControl.js +11 -1
  359. package/dist/accessi-module/security/accessControl.js.map +1 -1
  360. package/dist/accessi-module/security/accessiValidation.d.ts +9 -0
  361. package/dist/accessi-module/security/accessiValidation.js +41 -0
  362. package/dist/accessi-module/security/accessiValidation.js.map +1 -0
  363. package/dist/accessi-module/security/authenticatedToken.d.ts +14 -0
  364. package/dist/accessi-module/security/authenticatedToken.js +30 -4
  365. package/dist/accessi-module/security/authenticatedToken.js.map +1 -1
  366. package/dist/accessi-module/security/passwordResetToken.d.ts +5 -1
  367. package/dist/accessi-module/security/passwordResetToken.js +5 -1
  368. package/dist/accessi-module/security/passwordResetToken.js.map +1 -1
  369. package/dist/accessi-module/security/publicAuthRateLimit.d.ts +2 -2
  370. package/dist/accessi-module/security/publicAuthRateLimit.js +2 -0
  371. package/dist/accessi-module/security/publicAuthRateLimit.js.map +1 -1
  372. package/dist/emilsoftware-utilities-2.0.0-dev.23.tgz +0 -0
  373. package/dist/initEmilsoftwareModule.js +7 -0
  374. package/dist/initEmilsoftwareModule.js.map +1 -1
  375. package/dist/scripts/generateAccessiOpenApi.d.ts +1 -0
  376. package/dist/scripts/generateAccessiOpenApi.js +57 -0
  377. package/dist/scripts/generateAccessiOpenApi.js.map +1 -0
  378. package/package.json +13 -4
  379. package/dist/emilsoftware-utilities-2.0.0-dev.21.tgz +0 -0
@@ -0,0 +1,15 @@
1
+ import Transport from 'winston-transport';
2
+ /** One append-only JSON-lines file per local calendar day, including idle days. */
3
+ export declare class DailyFileTransport extends Transport {
4
+ private readonly directory;
5
+ private timer?;
6
+ constructor(directory: string);
7
+ private filename;
8
+ private touchToday;
9
+ private scheduleMidnight;
10
+ log(info: any, callback: (error?: Error | null) => void): void;
11
+ close(): void;
12
+ logv(chunks: {
13
+ chunk: any;
14
+ }[], callback: (error?: Error | null) => void): void;
15
+ }
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DailyFileTransport = void 0;
7
+ const winston_transport_1 = __importDefault(require("winston-transport"));
8
+ const fs_1 = require("fs");
9
+ const path_1 = require("path");
10
+ /** One append-only JSON-lines file per local calendar day, including idle days. */
11
+ class DailyFileTransport extends winston_transport_1.default {
12
+ constructor(directory) {
13
+ super();
14
+ this.directory = directory;
15
+ (0, fs_1.mkdirSync)(directory, { recursive: true });
16
+ this.touchToday();
17
+ this.scheduleMidnight();
18
+ }
19
+ filename(date) {
20
+ const month = String(date.getMonth() + 1).padStart(2, '0');
21
+ const day = String(date.getDate()).padStart(2, '0');
22
+ return (0, path_1.join)(this.directory, `${date.getFullYear()}-${month}-${day}.json`);
23
+ }
24
+ touchToday() {
25
+ (0, fs_1.appendFileSync)(this.filename(new Date()), '', { flag: 'a' });
26
+ }
27
+ scheduleMidnight() {
28
+ const now = new Date();
29
+ const midnight = new Date(now.getFullYear(), now.getMonth(), now.getDate() + 1);
30
+ this.timer = setTimeout(() => {
31
+ try {
32
+ this.touchToday();
33
+ }
34
+ catch (error) {
35
+ this.emit('error', error);
36
+ }
37
+ finally {
38
+ this.scheduleMidnight();
39
+ }
40
+ }, Math.max(1, midnight.getTime() - now.getTime()));
41
+ this.timer.unref();
42
+ }
43
+ log(info, callback) {
44
+ // Capture the event's day even when the transport is draining a backlog.
45
+ const date = info.time instanceof Date ? info.time : new Date();
46
+ (0, fs_1.appendFile)(this.filename(date), `${info[Symbol.for('message')]}\n`, { flag: 'a' }, (error) => {
47
+ if (!error)
48
+ this.emit('logged', info);
49
+ callback(error);
50
+ });
51
+ }
52
+ close() {
53
+ if (this.timer)
54
+ clearTimeout(this.timer);
55
+ }
56
+ logv(chunks, callback) {
57
+ let index = 0;
58
+ const next = (error) => {
59
+ if (error || index === chunks.length)
60
+ return callback(error);
61
+ this.log(chunks[index++].chunk, next);
62
+ };
63
+ next();
64
+ }
65
+ }
66
+ exports.DailyFileTransport = DailyFileTransport;
67
+ //# sourceMappingURL=DailyFileTransport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DailyFileTransport.js","sourceRoot":"","sources":["../src/DailyFileTransport.ts"],"names":[],"mappings":"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","sourcesContent":["import Transport from 'winston-transport';\nimport { appendFile, appendFileSync, mkdirSync } from 'fs';\nimport { join } from 'path';\n\n/** One append-only JSON-lines file per local calendar day, including idle days. */\nexport class DailyFileTransport extends Transport {\n private timer?: NodeJS.Timeout;\n\n constructor(private readonly directory: string) {\n super();\n mkdirSync(directory, { recursive: true });\n this.touchToday();\n this.scheduleMidnight();\n }\n\n private filename(date: Date): string {\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n return join(this.directory, `${date.getFullYear()}-${month}-${day}.json`);\n }\n\n private touchToday(): void {\n appendFileSync(this.filename(new Date()), '', { flag: 'a' });\n }\n\n private scheduleMidnight(): void {\n const now = new Date();\n const midnight = new Date(now.getFullYear(), now.getMonth(), now.getDate() + 1);\n this.timer = setTimeout(() => {\n try {\n this.touchToday();\n } catch (error) {\n this.emit('error', error);\n } finally {\n this.scheduleMidnight();\n }\n }, Math.max(1, midnight.getTime() - now.getTime()));\n this.timer.unref();\n }\n\n log(info: any, callback: (error?: Error | null) => void): void {\n // Capture the event's day even when the transport is draining a backlog.\n const date = info.time instanceof Date ? info.time : new Date();\n appendFile(this.filename(date), `${info[Symbol.for('message')]}\\n`, { flag: 'a' }, (error) => {\n if (!error) this.emit('logged', info);\n callback(error);\n });\n }\n\n close(): void {\n if (this.timer) clearTimeout(this.timer);\n }\n\n logv(chunks: { chunk: any }[], callback: (error?: Error | null) => void): void {\n let index = 0;\n const next = (error?: Error | null) => {\n if (error || index === chunks.length) return callback(error);\n this.log(chunks[index++].chunk, next);\n };\n next();\n }\n}\n"]}
@@ -187,8 +187,6 @@ class DatabaseUpdater {
187
187
  );`;
188
188
  yield Orm_1.Orm.query(options, createTableQuery);
189
189
  yield Orm_1.Orm.query(options, "ALTER TABLE PARAMETRI ADD CONSTRAINT PK_PARAMETRI PRIMARY KEY (CODPAR);");
190
- yield Orm_1.Orm.query(options, "GRANT ALL ON PARAMETRI TO PUBLIC;");
191
- yield Orm_1.Orm.query(options, "GRANT SELECT ON PARAMETRI TO TABX;");
192
190
  }
193
191
  const versioneDb = yield this.getDatabaseVersion(options);
194
192
  if (versioneDb !== null && versioneDb !== undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"DatabaseUpdater.js","sourceRoot":"","sources":["../src/DatabaseUpdater.ts"],"names":[],"mappings":"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","sourcesContent":["import { Orm } from \"./Orm\";\nimport { Logger } from \"./Logger\";\nimport { Options } from \"node-firebird\";\n\nexport abstract class DatabaseUpdater {\n //#region Fields and Options\n protected static options: Options;\n protected static logger: Logger = new Logger(DatabaseUpdater.name);\n protected static readonly versionParameterKeys = [\"VersioneDB\", \"DBVERSION\"];\n //#endregion\n\n //#region Utility Methods\n /**\n * Checks if a table exists.\n * @param options Database connection options.\n * @param table Table name.\n * @returns True if the table exists, false otherwise.\n */\n protected static async tableExists(\n options: Options,\n table: string\n ): Promise<boolean> {\n\n try {\n const query = `\n SELECT 1\n FROM RDB$RELATIONS\n WHERE RDB$RELATION_NAME = ?\n AND COALESCE(RDB$SYSTEM_FLAG, 0) = 0`;\n const result = await Orm.query(options, query, [table.toUpperCase()]);\n return result.length > 0;\n } catch (error: any) {\n this.logger.error(`Error checking table ${table}:`, error);\n throw error;\n }\n }\n\n /**\n * Checks if a column exists in a specific table.\n * @param options Database connection options.\n * @param table Table name.\n * @param column Column name.\n * @returns True if the column exists, false otherwise.\n */\n protected static async columnExists(\n options: Options,\n table: string,\n column: string\n ): Promise<boolean> {\n\n try {\n const query = `\n SELECT 1 \n FROM RDB$RELATION_FIELDS \n WHERE RDB$RELATION_NAME = ? \n AND RDB$FIELD_NAME = ?`;\n const result = await Orm.query(options, query, [\n table.toUpperCase(),\n column.toUpperCase(),\n ]);\n return result.length > 0;\n } catch (error: any) {\n this.logger.error(`Error checking column ${column} on table ${table}:`, error);\n throw error;\n }\n }\n\n /**\n * Checks if a generator/sequence exists.\n * @param options Database connection options.\n * @param generator Generator name.\n * @returns True if the generator exists, false otherwise.\n */\n protected static async generatorExists(\n options: Options,\n generator: string\n ): Promise<boolean> {\n\n try {\n const query = `\n SELECT 1\n FROM RDB$GENERATORS\n WHERE RDB$GENERATOR_NAME = ?`;\n const result = await Orm.query(options, query, [generator.toUpperCase()]);\n return result.length > 0;\n } catch (error: any) {\n this.logger.error(`Error checking generator ${generator}:`, error);\n throw error;\n }\n }\n\n /**\n * Checks if a trigger exists.\n * @param options Database connection options.\n * @param trigger Trigger name.\n * @returns True if the trigger exists, false otherwise.\n */\n protected static async triggerExists(\n options: Options,\n trigger: string\n ): Promise<boolean> {\n\n try {\n const query = `\n SELECT 1\n FROM RDB$TRIGGERS\n WHERE RDB$TRIGGER_NAME = ?\n AND COALESCE(RDB$SYSTEM_FLAG, 0) = 0`;\n const result = await Orm.query(options, query, [trigger.toUpperCase()]);\n return result.length > 0;\n } catch (error: any) {\n this.logger.error(`Error checking trigger ${trigger}:`, error);\n throw error;\n }\n }\n\n /**\n * Retrieves the current database version from the PARAMETRI table.\n * @param options Database connection options.\n * @returns The current database version or null if not found.\n */\n protected static async getDatabaseVersion(options: Options): Promise<string | null> {\n\n try {\n if (!(await this.tableExists(options, \"PARAMETRI\"))) {\n return null;\n }\n\n const parameters = (await Orm.query(\n options,\n `SELECT CODPAR, DESPAR\n FROM PARAMETRI\n WHERE CODPAR IN (?, ?)\n ORDER BY CASE WHEN CODPAR = ? THEN 0 ELSE 1 END`,\n [\n this.versionParameterKeys[0],\n this.versionParameterKeys[1],\n this.versionParameterKeys[0],\n ]\n )) as any[];\n\n return parameters.length > 0 ? parameters[0].DESPAR : null;\n } catch (error: any) {\n this.logger.error(`Error getting database version:`, error);\n throw error;\n }\n }\n\n /**\n * Updates the database version in the PARAMETRI table.\n * @param options Database connection options.\n * @param version The new database version.\n */\n protected static async setDatabaseVersion(\n options: Options,\n version: string\n ): Promise<void> {\n\n try {\n if (!(await this.tableExists(options, \"PARAMETRI\"))) {\n await this.createParametersTable(options);\n }\n\n const existingRows = (await Orm.query(\n options,\n \"SELECT CODPAR FROM PARAMETRI WHERE CODPAR IN (?, ?)\",\n [this.versionParameterKeys[0], this.versionParameterKeys[1]]\n )) as any[];\n\n if (existingRows.length === 0) {\n await Orm.execute(\n options,\n \"INSERT INTO PARAMETRI (CODPAR, DESPAR, NOTE, GRUPPO) VALUES (?, ?, ?, ?)\",\n [this.versionParameterKeys[0], version, \"versione\", null]\n );\n return;\n }\n\n for (const row of existingRows) {\n await Orm.execute(options, \"UPDATE PARAMETRI SET DESPAR = ? WHERE CODPAR = ?\", [\n version,\n row.CODPAR?.trim?.() ?? row.CODPAR,\n ]);\n }\n } catch (error: any) {\n this.logger.error(`Error setting database version:`, error);\n throw error;\n }\n }\n //#endregion\n\n //#region Initialization Methods\n /**\n * Ensures the PARAMETRI table exists and initializes it if necessary.\n * @param options Database connection options.\n */\n protected static async createParametersTable(options: Options): Promise<void> {\n try {\n const tableAlreadyExists = await this.tableExists(options, \"PARAMETRI\");\n if (!tableAlreadyExists) {\n const createTableQuery = `\n CREATE TABLE PARAMETRI (\n CODPAR VARCHAR(15) NOT NULL,\n DESPAR VARCHAR(255),\n NOTE BLOB SUB_TYPE 1 SEGMENT SIZE 80,\n GRUPPO VARCHAR(20)\n );`;\n\n await Orm.query(options, createTableQuery);\n\n await Orm.query(\n options,\n \"ALTER TABLE PARAMETRI ADD CONSTRAINT PK_PARAMETRI PRIMARY KEY (CODPAR);\"\n );\n\n await Orm.query(options, \"GRANT ALL ON PARAMETRI TO PUBLIC;\");\n await Orm.query(options, \"GRANT SELECT ON PARAMETRI TO TABX;\");\n }\n\n const versioneDb = await this.getDatabaseVersion(options);\n if (versioneDb !== null && versioneDb !== undefined) {\n return;\n }\n\n await Orm.execute(\n options,\n \"INSERT INTO PARAMETRI (CODPAR, DESPAR, NOTE, GRUPPO) VALUES (?,?,?,?)\",\n [this.versionParameterKeys[0], \"0.0a\", \"versione\", null]\n );\n } catch (error: any) {\n this.logger.error(\"Error creating table PARAMETRI:\", error);\n throw error;\n }\n\n\n }\n //#endregion\n}\n"]}
1
+ {"version":3,"file":"DatabaseUpdater.js","sourceRoot":"","sources":["../src/DatabaseUpdater.ts"],"names":[],"mappings":"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","sourcesContent":["import { Orm } from \"./Orm\";\nimport { Logger } from \"./Logger\";\nimport { Options } from \"node-firebird\";\n\nexport abstract class DatabaseUpdater {\n //#region Fields and Options\n protected static options: Options;\n protected static logger: Logger = new Logger(DatabaseUpdater.name);\n protected static readonly versionParameterKeys = [\"VersioneDB\", \"DBVERSION\"];\n //#endregion\n\n //#region Utility Methods\n /**\n * Checks if a table exists.\n * @param options Database connection options.\n * @param table Table name.\n * @returns True if the table exists, false otherwise.\n */\n protected static async tableExists(\n options: Options,\n table: string\n ): Promise<boolean> {\n\n try {\n const query = `\n SELECT 1\n FROM RDB$RELATIONS\n WHERE RDB$RELATION_NAME = ?\n AND COALESCE(RDB$SYSTEM_FLAG, 0) = 0`;\n const result = await Orm.query(options, query, [table.toUpperCase()]);\n return result.length > 0;\n } catch (error: any) {\n this.logger.error(`Error checking table ${table}:`, error);\n throw error;\n }\n }\n\n /**\n * Checks if a column exists in a specific table.\n * @param options Database connection options.\n * @param table Table name.\n * @param column Column name.\n * @returns True if the column exists, false otherwise.\n */\n protected static async columnExists(\n options: Options,\n table: string,\n column: string\n ): Promise<boolean> {\n\n try {\n const query = `\n SELECT 1 \n FROM RDB$RELATION_FIELDS \n WHERE RDB$RELATION_NAME = ? \n AND RDB$FIELD_NAME = ?`;\n const result = await Orm.query(options, query, [\n table.toUpperCase(),\n column.toUpperCase(),\n ]);\n return result.length > 0;\n } catch (error: any) {\n this.logger.error(`Error checking column ${column} on table ${table}:`, error);\n throw error;\n }\n }\n\n /**\n * Checks if a generator/sequence exists.\n * @param options Database connection options.\n * @param generator Generator name.\n * @returns True if the generator exists, false otherwise.\n */\n protected static async generatorExists(\n options: Options,\n generator: string\n ): Promise<boolean> {\n\n try {\n const query = `\n SELECT 1\n FROM RDB$GENERATORS\n WHERE RDB$GENERATOR_NAME = ?`;\n const result = await Orm.query(options, query, [generator.toUpperCase()]);\n return result.length > 0;\n } catch (error: any) {\n this.logger.error(`Error checking generator ${generator}:`, error);\n throw error;\n }\n }\n\n /**\n * Checks if a trigger exists.\n * @param options Database connection options.\n * @param trigger Trigger name.\n * @returns True if the trigger exists, false otherwise.\n */\n protected static async triggerExists(\n options: Options,\n trigger: string\n ): Promise<boolean> {\n\n try {\n const query = `\n SELECT 1\n FROM RDB$TRIGGERS\n WHERE RDB$TRIGGER_NAME = ?\n AND COALESCE(RDB$SYSTEM_FLAG, 0) = 0`;\n const result = await Orm.query(options, query, [trigger.toUpperCase()]);\n return result.length > 0;\n } catch (error: any) {\n this.logger.error(`Error checking trigger ${trigger}:`, error);\n throw error;\n }\n }\n\n /**\n * Retrieves the current database version from the PARAMETRI table.\n * @param options Database connection options.\n * @returns The current database version or null if not found.\n */\n protected static async getDatabaseVersion(options: Options): Promise<string | null> {\n\n try {\n if (!(await this.tableExists(options, \"PARAMETRI\"))) {\n return null;\n }\n\n const parameters = (await Orm.query(\n options,\n `SELECT CODPAR, DESPAR\n FROM PARAMETRI\n WHERE CODPAR IN (?, ?)\n ORDER BY CASE WHEN CODPAR = ? THEN 0 ELSE 1 END`,\n [\n this.versionParameterKeys[0],\n this.versionParameterKeys[1],\n this.versionParameterKeys[0],\n ]\n )) as any[];\n\n return parameters.length > 0 ? parameters[0].DESPAR : null;\n } catch (error: any) {\n this.logger.error(`Error getting database version:`, error);\n throw error;\n }\n }\n\n /**\n * Updates the database version in the PARAMETRI table.\n * @param options Database connection options.\n * @param version The new database version.\n */\n protected static async setDatabaseVersion(\n options: Options,\n version: string\n ): Promise<void> {\n\n try {\n if (!(await this.tableExists(options, \"PARAMETRI\"))) {\n await this.createParametersTable(options);\n }\n\n const existingRows = (await Orm.query(\n options,\n \"SELECT CODPAR FROM PARAMETRI WHERE CODPAR IN (?, ?)\",\n [this.versionParameterKeys[0], this.versionParameterKeys[1]]\n )) as any[];\n\n if (existingRows.length === 0) {\n await Orm.execute(\n options,\n \"INSERT INTO PARAMETRI (CODPAR, DESPAR, NOTE, GRUPPO) VALUES (?, ?, ?, ?)\",\n [this.versionParameterKeys[0], version, \"versione\", null]\n );\n return;\n }\n\n for (const row of existingRows) {\n await Orm.execute(options, \"UPDATE PARAMETRI SET DESPAR = ? WHERE CODPAR = ?\", [\n version,\n row.CODPAR?.trim?.() ?? row.CODPAR,\n ]);\n }\n } catch (error: any) {\n this.logger.error(`Error setting database version:`, error);\n throw error;\n }\n }\n //#endregion\n\n //#region Initialization Methods\n /**\n * Ensures the PARAMETRI table exists and initializes it if necessary.\n * @param options Database connection options.\n */\n protected static async createParametersTable(options: Options): Promise<void> {\n try {\n const tableAlreadyExists = await this.tableExists(options, \"PARAMETRI\");\n if (!tableAlreadyExists) {\n const createTableQuery = `\n CREATE TABLE PARAMETRI (\n CODPAR VARCHAR(15) NOT NULL,\n DESPAR VARCHAR(255),\n NOTE BLOB SUB_TYPE 1 SEGMENT SIZE 80,\n GRUPPO VARCHAR(20)\n );`;\n\n await Orm.query(options, createTableQuery);\n\n await Orm.query(\n options,\n \"ALTER TABLE PARAMETRI ADD CONSTRAINT PK_PARAMETRI PRIMARY KEY (CODPAR);\"\n );\n }\n\n const versioneDb = await this.getDatabaseVersion(options);\n if (versioneDb !== null && versioneDb !== undefined) {\n return;\n }\n\n await Orm.execute(\n options,\n \"INSERT INTO PARAMETRI (CODPAR, DESPAR, NOTE, GRUPPO) VALUES (?,?,?,?)\",\n [this.versionParameterKeys[0], \"0.0a\", \"versione\", null]\n );\n } catch (error: any) {\n this.logger.error(\"Error creating table PARAMETRI:\", error);\n throw error;\n }\n\n\n }\n //#endregion\n}\n"]}
@@ -24,10 +24,10 @@ class ExecutionTimeLogger {
24
24
  if (typeof originalMethod !== "function") {
25
25
  throw new TypeError(`ExecutionTimeLogger can only be applied to methods, not: ${typeof originalMethod}`);
26
26
  }
27
+ const className = target.constructor.name;
28
+ const logger = new _1.Logger(className);
27
29
  descriptor.value = function (...args) {
28
30
  return __awaiter(this, void 0, void 0, function* () {
29
- const className = target.constructor.name; // Get the class name dynamically
30
- const logger = new _1.Logger(className); // Use the class name for logger
31
31
  const start = process.hrtime();
32
32
  logger.info(`[${className}] ${propertyKey} method execution started . . .`);
33
33
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"ExecutionTimeLogger.js","sourceRoot":"","sources":["../src/ExecutionTimeLogger.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yBAA4B;AAE5B,MAAa,mBAAmB;IAC5B;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,CAAC,MAAW,EAAE,WAAmB,EAAE,UAA8B;QACzE,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC;QAExC,IAAI,OAAO,cAAc,KAAK,UAAU,EAAE,CAAC;YACvC,MAAM,IAAI,SAAS,CAAC,4DAA4D,OAAO,cAAc,EAAE,CAAC,CAAC;QAC7G,CAAC;QAED,UAAU,CAAC,KAAK,GAAG,UAAgB,GAAG,IAAW;;gBAC7C,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,iCAAiC;gBAC5E,MAAM,MAAM,GAAG,IAAI,SAAM,CAAC,SAAS,CAAC,CAAC,CAAC,gCAAgC;gBACtE,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC/B,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,KAAK,WAAW,iCAAiC,CAAC,CAAC;gBAE5E,IAAI,CAAC;oBACD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;oBACtD,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAClC,MAAM,sBAAsB,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;oBAC5D,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,KAAK,WAAW,gBAAgB,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;oBAC5G,OAAO,MAAM,CAAC;gBAClB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,MAAM,CAAC,KAAK,CAAC,IAAI,SAAS,KAAK,WAAW,2BAA2B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;oBACtF,MAAM,KAAK,CAAC;gBAChB,CAAC;YACL,CAAC;SAAA,CAAC;QAEF,OAAO,UAAU,CAAC;IACtB,CAAC;CACJ;AAnCD,kDAmCC","sourcesContent":["import { Logger } from \"./\";\n\nexport class ExecutionTimeLogger {\n /**\n * Wraps a method to log its execution time and errors.\n * @param target The target object.\n * @param propertyKey The name of the method.\n * @param descriptor The property descriptor of the method.\n * @description use ExecutionTimeLogger.apply on any method\n */\n static apply(target: any, propertyKey: string, descriptor: PropertyDescriptor) {\n const originalMethod = descriptor.value;\n\n if (typeof originalMethod !== \"function\") {\n throw new TypeError(`ExecutionTimeLogger can only be applied to methods, not: ${typeof originalMethod}`);\n }\n\n descriptor.value = async function (...args: any[]) {\n const className = target.constructor.name; // Get the class name dynamically\n const logger = new Logger(className); // Use the class name for logger\n const start = process.hrtime();\n logger.info(`[${className}] ${propertyKey} method execution started . . .`);\n \n try {\n const result = await originalMethod.apply(this, args);\n const end = process.hrtime(start);\n const durationInMilliseconds = end[0] * 1000 + end[1] / 1e6;\n logger.info(`[${className}] ${propertyKey} method took ${durationInMilliseconds.toFixed(2)} ms to execute`);\n return result;\n } catch (error) {\n logger.error(`[${className}] ${propertyKey} method threw an error: ${error.message}`);\n throw error;\n }\n };\n\n return descriptor;\n }\n}\n"]}
1
+ {"version":3,"file":"ExecutionTimeLogger.js","sourceRoot":"","sources":["../src/ExecutionTimeLogger.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yBAA4B;AAE5B,MAAa,mBAAmB;IAC5B;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,CAAC,MAAW,EAAE,WAAmB,EAAE,UAA8B;QACzE,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC;QAExC,IAAI,OAAO,cAAc,KAAK,UAAU,EAAE,CAAC;YACvC,MAAM,IAAI,SAAS,CAAC,4DAA4D,OAAO,cAAc,EAAE,CAAC,CAAC;QAC7G,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAI,SAAM,CAAC,SAAS,CAAC,CAAC;QACrC,UAAU,CAAC,KAAK,GAAG,UAAgB,GAAG,IAAW;;gBAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC/B,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,KAAK,WAAW,iCAAiC,CAAC,CAAC;gBAE5E,IAAI,CAAC;oBACD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;oBACtD,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAClC,MAAM,sBAAsB,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;oBAC5D,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,KAAK,WAAW,gBAAgB,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;oBAC5G,OAAO,MAAM,CAAC;gBAClB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,MAAM,CAAC,KAAK,CAAC,IAAI,SAAS,KAAK,WAAW,2BAA2B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;oBACtF,MAAM,KAAK,CAAC;gBAChB,CAAC;YACL,CAAC;SAAA,CAAC;QAEF,OAAO,UAAU,CAAC;IACtB,CAAC;CACJ;AAnCD,kDAmCC","sourcesContent":["import { Logger } from \"./\";\n\nexport class ExecutionTimeLogger {\n /**\n * Wraps a method to log its execution time and errors.\n * @param target The target object.\n * @param propertyKey The name of the method.\n * @param descriptor The property descriptor of the method.\n * @description use ExecutionTimeLogger.apply on any method\n */\n static apply(target: any, propertyKey: string, descriptor: PropertyDescriptor) {\n const originalMethod = descriptor.value;\n\n if (typeof originalMethod !== \"function\") {\n throw new TypeError(`ExecutionTimeLogger can only be applied to methods, not: ${typeof originalMethod}`);\n }\n\n const className = target.constructor.name;\n const logger = new Logger(className);\n descriptor.value = async function (...args: any[]) {\n const start = process.hrtime();\n logger.info(`[${className}] ${propertyKey} method execution started . . .`);\n \n try {\n const result = await originalMethod.apply(this, args);\n const end = process.hrtime(start);\n const durationInMilliseconds = end[0] * 1000 + end[1] / 1e6;\n logger.info(`[${className}] ${propertyKey} method took ${durationInMilliseconds.toFixed(2)} ms to execute`);\n return result;\n } catch (error) {\n logger.error(`[${className}] ${propertyKey} method threw an error: ${error.message}`);\n throw error;\n }\n };\n\n return descriptor;\n }\n}\n"]}
package/dist/Logger.d.ts CHANGED
@@ -17,8 +17,6 @@ export declare class Logger {
17
17
  customFormat?: winston.Logform.Format;
18
18
  transports?: winston.transport[];
19
19
  });
20
- private initializeDirectory;
21
- private getFileName;
22
20
  private replaceAll;
23
21
  execStart(prefix?: string): number;
24
22
  execStop(prefix: string, startTime: number, error?: boolean): void;
package/dist/Logger.js CHANGED
@@ -1,46 +1,4 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
- return new (P || (P = Promise))(function (resolve, reject) {
38
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
- step((generator = generator.apply(thisArg, _arguments || [])).next());
42
- });
43
- };
44
2
  var __rest = (this && this.__rest) || function (s, e) {
45
3
  var t = {};
46
4
  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
@@ -58,8 +16,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
58
16
  Object.defineProperty(exports, "__esModule", { value: true });
59
17
  exports.Logger = exports.LogLevels = void 0;
60
18
  const winston_1 = __importDefault(require("winston"));
61
- const path = __importStar(require("path"));
62
- const fs_1 = require("fs");
19
+ const DailyFileTransport_1 = require("./DailyFileTransport");
63
20
  const colorette_1 = require("colorette");
64
21
  var LogLevels;
65
22
  (function (LogLevels) {
@@ -79,22 +36,20 @@ class Logger {
79
36
  (config === null || config === void 0 ? void 0 : config.customFormat) ||
80
37
  winston_1.default.format.printf((_a) => {
81
38
  var { timestamp, file, level, message } = _a, meta = __rest(_a, ["timestamp", "file", "level", "message"]);
82
- return JSON.stringify(Object.assign({ timestamp: timestamp || new Date().toISOString(), tag: this.tag, file: this.replaceAll(file + "", "\\", "/"), level,
83
- message }, meta));
39
+ return JSON.stringify(Object.assign({ timestamp: timestamp || new Date().toISOString(), tag: this.tag, file: this.replaceAll(file + "", "\\", "/"), level: level === 'general' ? 'log' : level, message }, meta));
84
40
  });
85
- this.initializeDirectory();
86
41
  // Configure logger
87
42
  this.winstonLogger = winston_1.default.createLogger({
43
+ level: 'database',
88
44
  format: winston_1.default.format.combine(winston_1.default.format.timestamp(), this.logFormat),
89
45
  transports: (config === null || config === void 0 ? void 0 : config.transports) || [
90
- new winston_1.default.transports.File({
91
- filename: path.join(this.logDirectory, this.getFileName() + ".json"),
92
- }),
46
+ new DailyFileTransport_1.DailyFileTransport(this.logDirectory),
93
47
  ],
94
48
  levels: {
95
49
  error: 1,
96
50
  warning: 2,
97
51
  info: 3,
52
+ general: 3,
98
53
  http: 4,
99
54
  verbose: 5,
100
55
  debug: 6,
@@ -112,24 +67,6 @@ class Logger {
112
67
  log: "cyan",
113
68
  });
114
69
  }
115
- initializeDirectory() {
116
- return __awaiter(this, void 0, void 0, function* () {
117
- try {
118
- const exists = yield fs_1.promises.access(this.logDirectory).then(() => true).catch(() => false);
119
- if (!exists) {
120
- yield fs_1.promises.mkdir(this.logDirectory);
121
- }
122
- }
123
- catch (err) {
124
- console.error("Error initializing log directory:", err);
125
- }
126
- });
127
- }
128
- getFileName() {
129
- const now = new Date();
130
- const dateString = now.toISOString().split("T")[0]; // YYYY-MM-DD
131
- return dateString;
132
- }
133
70
  replaceAll(string, match, replacer) {
134
71
  return string.split(match).join(replacer);
135
72
  }
@@ -167,10 +104,9 @@ class Logger {
167
104
  this.winstonLogger.defaultMeta = {
168
105
  file: fileName,
169
106
  time: now,
170
- level,
171
107
  };
172
108
  const logEntry = {
173
- level: level.toLowerCase(),
109
+ level: level === LogLevels.LOG ? 'general' : level.toLowerCase(),
174
110
  message: [...data].join(","),
175
111
  };
176
112
  // Log to console with colors
@@ -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\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: level === 'general' ? 'log' : level,\n message,\n ...meta,\n });\n });\n\n // Configure logger\n this.winstonLogger = winston.createLogger({\n level: 'database',\n format: winston.format.combine(winston.format.timestamp(), this.logFormat),\n transports: config?.transports || [\n new DailyFileTransport(this.logDirectory),\n ],\n 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\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 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 };\n\n const logEntry: winston.LogEntry = {\n level: level === LogLevels.LOG ? 'general' : 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"]}
@@ -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.
@@ -62,6 +63,8 @@ export declare class RestUtilities {
62
63
  * @returns The Response object.
63
64
  */
64
65
  static sendErrorMessage(res: Response, error: any, 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,17 +72,19 @@ 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: any, 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: any, title: string, status?: number): Response;
83
88
  /**
84
89
  * Prints a SQL query with parameters replaced.
85
90
  * @param query - The SQL query.
package/dist/Utilities.js CHANGED
@@ -97,12 +97,13 @@ class RestUtilities {
97
97
  * Sends an OK message as a response.
98
98
  * @param res - Express Response object.
99
99
  * @param message - The success message.
100
+ * @param status - HTTP success status. Defaults to 200; pass 201 only after creating a resource.
100
101
  * @returns The Response object.
101
102
  */
102
- static sendOKMessage(res, message) {
103
- return res.send({
103
+ static sendOKMessage(res, message, status = 200) {
104
+ return res.status(status).send({
104
105
  severity: "success",
105
- status: 200,
106
+ status,
106
107
  statusCode: StatusCode.Ok,
107
108
  message,
108
109
  });
@@ -116,33 +117,75 @@ class RestUtilities {
116
117
  * @returns The Response object.
117
118
  */
118
119
  static sendErrorMessage(res, error, tag = "[BASE ERROR]", status = 500) {
119
- return res.status(status).send({
120
- severity: "error",
121
- status,
122
- statusCode: StatusCode.Error,
123
- message: "An error occurred",
124
- error: `${tag}: ${error}`,
125
- });
120
+ const rawMessage = error instanceof Error ? error.message : String(error !== null && error !== void 0 ? error : "");
121
+ const exceptionResponse = error && typeof error.getResponse === "function"
122
+ ? error.getResponse()
123
+ : undefined;
124
+ const exceptionPayload = exceptionResponse && typeof exceptionResponse === "object"
125
+ ? exceptionResponse
126
+ : undefined;
127
+ const explicitCode = typeof (exceptionPayload === null || exceptionPayload === void 0 ? void 0 : exceptionPayload.code) === "string" ? exceptionPayload.code : undefined;
128
+ const explicitMessage = typeof (exceptionPayload === null || exceptionPayload === void 0 ? void 0 : exceptionPayload.message) === "string" ? exceptionPayload.message : undefined;
129
+ const explicitDetails = Array.isArray(exceptionPayload === null || exceptionPayload === void 0 ? void 0 : exceptionPayload.details)
130
+ ? exceptionPayload.details.filter((detail) => typeof detail === "string")
131
+ : undefined;
132
+ const schemaError = this.isDatabaseSchemaError(error);
133
+ const effectiveStatus = schemaError ? 503 : status;
134
+ const code = schemaError
135
+ ? "ACCESSI_DATABASE_SCHEMA_OUTDATED"
136
+ : explicitCode !== null && explicitCode !== void 0 ? explicitCode : (effectiveStatus >= 500
137
+ ? "ACCESSI_INTERNAL_ERROR"
138
+ : effectiveStatus === 401
139
+ ? "ACCESSI_UNAUTHORIZED"
140
+ : effectiveStatus === 403
141
+ ? "ACCESSI_FORBIDDEN"
142
+ : "ACCESSI_REQUEST_ERROR");
143
+ const message = schemaError
144
+ ? "Lo schema del database Accessi non e aggiornato. Eseguire la migrazione database e riprovare."
145
+ : explicitMessage !== null && explicitMessage !== void 0 ? explicitMessage : (effectiveStatus >= 500
146
+ ? "Errore interno del modulo Accessi."
147
+ : effectiveStatus === 401
148
+ ? "Autenticazione non valida o scaduta."
149
+ : effectiveStatus === 403
150
+ ? "Operazione non autorizzata."
151
+ : rawMessage || "Richiesta non valida.");
152
+ return res.status(effectiveStatus).send(Object.assign({ severity: "error", status: effectiveStatus, statusCode: StatusCode.Error, code,
153
+ message,
154
+ // Compatibilita: il campo storico resta presente, ma non espone SQL, stack o dati sensibili.
155
+ error: code }, ((explicitDetails === null || explicitDetails === void 0 ? void 0 : explicitDetails.length) ? { details: explicitDetails } : {})));
156
+ }
157
+ /** Riconosce errori di metadata Firebird che richiedono una migrazione. */
158
+ static isDatabaseSchemaError(error) {
159
+ const message = error instanceof Error ? error.message : String(error !== null && error !== void 0 ? error : "");
160
+ return /column unknown|table unknown|dynamic sql error|unsuccessful metadata update|invalid request blr/i.test(message);
126
161
  }
127
162
  static sendUnauthorized(res) {
128
163
  return res.status(401).send({
129
164
  severity: "error",
165
+ status: 401,
130
166
  statusCode: StatusCode.Error,
131
- message: "Non sei autorizzato",
167
+ code: "ACCESSI_UNAUTHORIZED",
168
+ error: "ACCESSI_UNAUTHORIZED",
169
+ message: "Autenticazione non valida o scaduta.",
132
170
  });
133
171
  }
134
172
  static sendInvalidCredentials(res) {
135
173
  return res.status(401).send({
136
174
  severity: "error",
175
+ status: 401,
137
176
  statusCode: StatusCode.Error,
138
- message: "Credenziali non valide"
177
+ code: "ACCESSI_INVALID_CREDENTIALS",
178
+ error: "ACCESSI_INVALID_CREDENTIALS",
179
+ message: "Credenziali non valide",
139
180
  });
140
181
  }
141
182
  static sendPasswordExpired(res) {
142
183
  return res.status(403).send({
143
184
  severity: "warning",
185
+ status: 403,
144
186
  statusCode: StatusCode.Warning,
145
187
  code: "PASSWORD_EXPIRED",
188
+ error: "PASSWORD_EXPIRED",
146
189
  message: "Password scaduta. E' necessario aggiornarla"
147
190
  });
148
191
  }
@@ -150,9 +193,10 @@ class RestUtilities {
150
193
  * Sends a base response with a payload.
151
194
  * @param res - Express Response object.
152
195
  * @param payload - The payload to include in the response.
196
+ * @param status - HTTP success status. Defaults to 200; pass 201 only after creating a resource.
153
197
  * @returns The Response object.
154
198
  */
155
- static sendBaseResponse(res, payload) {
199
+ static sendBaseResponse(res, payload, status = 200) {
156
200
  try {
157
201
  payload = JSON.parse(JSON.stringify(payload));
158
202
  const response = {
@@ -163,7 +207,7 @@ class RestUtilities {
163
207
  Result: payload,
164
208
  Message: "Dati recuperati con successo.",
165
209
  };
166
- return res.send(response);
210
+ return res.status(status).send(response);
167
211
  }
168
212
  catch (error) {
169
213
  return this.sendErrorMessage(res, `Error sending response: ${error}`, "[UTILITIES]", 500);
@@ -174,9 +218,10 @@ class RestUtilities {
174
218
  * @param res - Express Response object.
175
219
  * @param executionObject - The execution data.
176
220
  * @param title - The title of the response.
221
+ * @param status - HTTP success status. Defaults to 200.
177
222
  * @returns The Response object.
178
223
  */
179
- static sendExecMessage(res, executionObject, title) {
224
+ static sendExecMessage(res, executionObject, title, status = 200) {
180
225
  try {
181
226
  const response = {
182
227
  Status: {
@@ -188,7 +233,7 @@ class RestUtilities {
188
233
  data: executionObject,
189
234
  Title: title,
190
235
  };
191
- return res.send(response);
236
+ return res.status(status).send(response);
192
237
  }
193
238
  catch (error) {
194
239
  return this.sendErrorMessage(res, `Error sending execution message: ${error}`, title, 500);