emilsoftware-utilities 2.0.0-dev.60 → 2.0.0-dev.62

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 (79) hide show
  1. package/dist/accessi-module/AccessiModule.d.ts +6 -0
  2. package/dist/accessi-module/AccessiModule.js.map +1 -1
  3. package/dist/accessi-module/Console/console.js +163 -4
  4. package/dist/accessi-module/Console/console.js.map +1 -1
  5. package/dist/accessi-module/Console/generated/accessiApi.d.ts +68 -5
  6. package/dist/accessi-module/Console/generated/accessiApi.js +84 -10
  7. package/dist/accessi-module/Console/generated/accessiApi.js.map +1 -1
  8. package/dist/accessi-module/Console/generated/model/createScopeRequest.d.ts +18 -0
  9. package/dist/accessi-module/Console/generated/model/createScopeRequest.js +9 -0
  10. package/dist/accessi-module/Console/generated/model/createScopeRequest.js.map +1 -0
  11. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.d.ts +4 -0
  12. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.js.map +1 -1
  13. package/dist/accessi-module/Console/generated/model/getMenuScopesResponse.d.ts +14 -0
  14. package/dist/accessi-module/Console/generated/model/getMenuScopesResponse.js +3 -0
  15. package/dist/accessi-module/Console/generated/model/getMenuScopesResponse.js.map +1 -0
  16. package/dist/accessi-module/Console/generated/model/getMenusParams.d.ts +12 -0
  17. package/dist/accessi-module/Console/generated/model/getMenusParams.js +9 -0
  18. package/dist/accessi-module/Console/generated/model/getMenusParams.js.map +1 -0
  19. package/dist/accessi-module/Console/generated/model/getScopesResponse.d.ts +14 -0
  20. package/dist/accessi-module/Console/generated/model/getScopesResponse.js +3 -0
  21. package/dist/accessi-module/Console/generated/model/getScopesResponse.js.map +1 -0
  22. package/dist/accessi-module/Console/generated/model/getUserRolesAndGrantsParams.d.ts +12 -0
  23. package/dist/accessi-module/Console/generated/model/getUserRolesAndGrantsParams.js +9 -0
  24. package/dist/accessi-module/Console/generated/model/getUserRolesAndGrantsParams.js.map +1 -0
  25. package/dist/accessi-module/Console/generated/model/index.d.ts +9 -0
  26. package/dist/accessi-module/Console/generated/model/index.js +9 -0
  27. package/dist/accessi-module/Console/generated/model/index.js.map +1 -1
  28. package/dist/accessi-module/Console/generated/model/loginRequest.d.ts +2 -0
  29. package/dist/accessi-module/Console/generated/model/loginRequest.js.map +1 -1
  30. package/dist/accessi-module/Console/generated/model/scopeEntity.d.ts +12 -0
  31. package/dist/accessi-module/Console/generated/model/scopeEntity.js +9 -0
  32. package/dist/accessi-module/Console/generated/model/scopeEntity.js.map +1 -0
  33. package/dist/accessi-module/Console/generated/model/setMenuScopesRequest.d.ts +10 -0
  34. package/dist/accessi-module/Console/generated/model/setMenuScopesRequest.js +9 -0
  35. package/dist/accessi-module/Console/generated/model/setMenuScopesRequest.js.map +1 -0
  36. package/dist/accessi-module/Console/generated/model/setScopeMenusRequest.d.ts +10 -0
  37. package/dist/accessi-module/Console/generated/model/setScopeMenusRequest.js +9 -0
  38. package/dist/accessi-module/Console/generated/model/setScopeMenusRequest.js.map +1 -0
  39. package/dist/accessi-module/Console/generated/model/updateScopeRequest.d.ts +13 -0
  40. package/dist/accessi-module/Console/generated/model/updateScopeRequest.js +9 -0
  41. package/dist/accessi-module/Console/generated/model/updateScopeRequest.js.map +1 -0
  42. package/dist/accessi-module/Console/index.html +1 -0
  43. package/dist/accessi-module/Controllers/PermissionController.d.ts +11 -3
  44. package/dist/accessi-module/Controllers/PermissionController.js +208 -12
  45. package/dist/accessi-module/Controllers/PermissionController.js.map +1 -1
  46. package/dist/accessi-module/Dtos/LoginRequest.d.ts +2 -0
  47. package/dist/accessi-module/Dtos/LoginRequest.js +10 -0
  48. package/dist/accessi-module/Dtos/LoginRequest.js.map +1 -1
  49. package/dist/accessi-module/Dtos/ScopeDtos.d.ts +28 -0
  50. package/dist/accessi-module/Dtos/ScopeDtos.js +103 -0
  51. package/dist/accessi-module/Dtos/ScopeDtos.js.map +1 -0
  52. package/dist/accessi-module/Dtos/index.d.ts +1 -0
  53. package/dist/accessi-module/Dtos/index.js +1 -0
  54. package/dist/accessi-module/Dtos/index.js.map +1 -1
  55. package/dist/accessi-module/Services/AuthService/AuthService.d.ts +1 -1
  56. package/dist/accessi-module/Services/AuthService/AuthService.js +3 -3
  57. package/dist/accessi-module/Services/AuthService/AuthService.js.map +1 -1
  58. package/dist/accessi-module/Services/PermissionService/PermissionService.d.ts +27 -4
  59. package/dist/accessi-module/Services/PermissionService/PermissionService.js +177 -24
  60. package/dist/accessi-module/Services/PermissionService/PermissionService.js.map +1 -1
  61. package/dist/accessi-module/Services/UserService/UserService.d.ts +1 -0
  62. package/dist/accessi-module/Services/UserService/UserService.js +1 -1
  63. package/dist/accessi-module/Services/UserService/UserService.js.map +1 -1
  64. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js +2 -0
  65. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js.map +1 -1
  66. package/dist/accessi-module/database-updates/accessiSchema.d.ts +1 -1
  67. package/dist/accessi-module/database-updates/accessiSchema.js +12 -1
  68. package/dist/accessi-module/database-updates/accessiSchema.js.map +1 -1
  69. package/dist/accessi-module/database-updates/menuScopeSeed.d.ts +15 -0
  70. package/dist/accessi-module/database-updates/menuScopeSeed.js +338 -0
  71. package/dist/accessi-module/database-updates/menuScopeSeed.js.map +1 -0
  72. package/dist/accessi-module/database-updates/menuScopeSeeder.d.ts +8 -0
  73. package/dist/accessi-module/database-updates/menuScopeSeeder.js +131 -0
  74. package/dist/accessi-module/database-updates/menuScopeSeeder.js.map +1 -0
  75. package/dist/accessi-module/database-updates/runAccessiDbUpdate.js +4 -1
  76. package/dist/accessi-module/database-updates/runAccessiDbUpdate.js.map +1 -1
  77. package/dist/emilsoftware-utilities-2.0.0-dev.62.tgz +0 -0
  78. package/package.json +3 -3
  79. package/dist/emilsoftware-utilities-2.0.0-dev.60.tgz +0 -0
@@ -0,0 +1,338 @@
1
+ "use strict";
2
+ /**
3
+ * Seed di sistema degli scope applicativi.
4
+ *
5
+ * Generato dai cataloghi menu delle app (`menus/menu-catalog.json`):
6
+ * un menu puo appartenere a piu scope. Non modificare a mano: rigenerare
7
+ * con lo script di workspace e incrementare MENU_SCOPE_SEED_VERSION.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.MENU_SCOPE_SEED = exports.SCOPE_SEED = exports.MENU_SCOPE_SEED_VERSION = void 0;
11
+ exports.MENU_SCOPE_SEED_VERSION = '2026-10-27.1';
12
+ exports.SCOPE_SEED = [
13
+ { code: 'CENTROCONTROLLO', name: 'CentroControllo' },
14
+ { code: 'ESGESTX', name: 'EsGestX' },
15
+ { code: 'MAGAZTINT', name: 'Magaz-Tint' },
16
+ { code: 'STAFFX', name: 'StaffX' },
17
+ { code: 'STERILIX', name: 'SteriliX' },
18
+ { code: 'STEX', name: 'SteX' },
19
+ { code: 'TINTEMIX', name: 'TintemiX' },
20
+ ];
21
+ /** menu -> scope applicativi */
22
+ exports.MENU_SCOPE_SEED = {
23
+ ABILAVANZABLOCCHI: ['STEX', 'TINTEMIX'],
24
+ ABILAVANZACLI: ['STEX', 'TINTEMIX'],
25
+ ABILAVANZASUPER: ['STEX', 'TINTEMIX'],
26
+ ABILRICPRODOTTI: ['STEX', 'TINTEMIX'],
27
+ ADMIN: ['ESGESTX'],
28
+ ADMIN_RUOLI: ['ESGESTX'],
29
+ ALLINEA_BOLLE: ['TINTEMIX'],
30
+ ALLINEA_SALDI: ['ESGESTX'],
31
+ ASSEGNA_FERIE: ['ESGESTX'],
32
+ AUTISTI: ['ESGESTX'],
33
+ AUTO_PREB_FISSI: ['TINTEMIX'],
34
+ BACKUP_TAB: ['ESGESTX'],
35
+ CARICO_LAVACONT: ['TINTEMIX'],
36
+ CARICO_SPORCO: ['TINTEMIX'],
37
+ CLIENTE: ['ESGESTX'],
38
+ CLIENTE_LAND_MOB: ['ESGESTX'],
39
+ CLIENTE_LANDING: ['ESGESTX'],
40
+ CLIENTE_MOBILE: ['ESGESTX'],
41
+ CLIENTE_TRASF: ['ESGESTX'],
42
+ CLIENTI_CONS: ['ESGESTX'],
43
+ CLIENTI_PASSAGGI: ['ESGESTX'],
44
+ COL_ARMADIO: ['ESGESTX', 'MAGAZTINT'],
45
+ COL_BADGE: ['ESGESTX', 'MAGAZTINT'],
46
+ COL_CODICEPERS: ['ESGESTX', 'MAGAZTINT'],
47
+ COL_DOTROTAZ: ['ESGESTX', 'MAGAZTINT'],
48
+ COL_MATRICOLA: ['ESGESTX', 'MAGAZTINT'],
49
+ COL_NUMLAV: ['ESGESTX', 'MAGAZTINT'],
50
+ COL_PCK_ULTLET: ['ESGESTX', 'MAGAZTINT'],
51
+ COL_PCKLIST: ['ESGESTX', 'MAGAZTINT'],
52
+ CONFIG_MENU: ['ESGESTX'],
53
+ CONFRONTO_ACC: ['ESGESTX'],
54
+ CONTABILITA: ['ESGESTX'],
55
+ CONTATTO: ['ESGESTX'],
56
+ CONTATTO_EDIT: ['ESGESTX'],
57
+ CONTEGGIB: ['ESGESTX'],
58
+ DASH_DOCUMENTI: ['ESGESTX'],
59
+ DASH_FB: ['MAGAZTINT'],
60
+ DASH_READER: ['MAGAZTINT'],
61
+ DASH_RFID: ['MAGAZTINT'],
62
+ DASH_RFID_MOB: ['MAGAZTINT'],
63
+ DASHBOARD: ['ESGESTX'],
64
+ DIGITAL_HUB: ['ESGESTX'],
65
+ DIPENDENTI: ['ESGESTX'],
66
+ ECLIENTI: ['ESGESTX'],
67
+ ECONTRATTI: ['ESGESTX'],
68
+ ETICHETTE: ['ESGESTX'],
69
+ EXPORT_GESCOM: ['ESGESTX'],
70
+ FATTURAZIONE: ['ESGESTX'],
71
+ FLUSSI_CASSA: ['ESGESTX'],
72
+ GDPR: ['ESGESTX'],
73
+ GEST_DOCUMENTI: ['ESGESTX'],
74
+ GP_ISTRUTTORI: ['ESGESTX'],
75
+ GP_MASCHERE: ['ESGESTX'],
76
+ GP_TABELLE: ['ESGESTX'],
77
+ IMP_BIKO: ['ESGESTX'],
78
+ IMP_DEPURATORE: ['ESGESTX'],
79
+ IMP_MOBICS: ['ESGESTX'],
80
+ IMPEGNI: ['ESGESTX'],
81
+ INBOX: ['ESGESTX'],
82
+ INDUM_ADDEBITI: ['ESGESTX'],
83
+ INDUM_CONSEGNA: ['ESGESTX'],
84
+ INV_CREANUOVO: ['ESGESTX', 'MAGAZTINT'],
85
+ INV_DATICONSEGNA: ['ESGESTX', 'MAGAZTINT'],
86
+ INV_EXPCSV: ['ESGESTX', 'MAGAZTINT'],
87
+ INV_NOTE: ['ESGESTX', 'MAGAZTINT'],
88
+ INV_NUMLAVRFID: ['ESGESTX', 'MAGAZTINT'],
89
+ INV_RFIDASSEGNATOIL: ['ESGESTX', 'MAGAZTINT'],
90
+ INV_SHOWANOMALIE: ['ESGESTX'],
91
+ INV_VALORECONV: ['ESGESTX', 'MAGAZTINT'],
92
+ INVENTARI_RF_D: ['MAGAZTINT'],
93
+ INVENTARI_RF_M: ['MAGAZTINT'],
94
+ INVENTARI_RF_R: ['MAGAZTINT'],
95
+ INVENTARI_RFID: ['MAGAZTINT'],
96
+ KIT: ['ESGESTX'],
97
+ KPI_PERSONALE: ['ESGESTX'],
98
+ LANDING: ['ESGESTX'],
99
+ LISTA_CLI_MOB: ['ESGESTX'],
100
+ LISTA_CLIENTI: ['ESGESTX'],
101
+ LISTA_CONTATTI: ['ESGESTX'],
102
+ LISTA_CPZ: ['ESGESTX'],
103
+ LISTA_PERSONALE: ['ESGESTX'],
104
+ LISTA_PRODUZ: ['TINTEMIX'],
105
+ LISTA_PROFILI: ['ESGESTX'],
106
+ LISTA_STIRO: ['TINTEMIX'],
107
+ LISTINI_MAPPA: ['ESGESTX'],
108
+ MACRO_REPARTI: ['ESGESTX'],
109
+ MAGAZZINI_TEST: ['ESGESTX'],
110
+ MAGAZZINO_PRO: ['ESGESTX'],
111
+ MNUALLINEASALDI: ['ESGESTX'],
112
+ MNUAVANZA: ['STEX', 'TINTEMIX'],
113
+ MNUBLOCCHI: ['STEX', 'TINTEMIX'],
114
+ MNUCONTA: ['ESGESTX'],
115
+ MNUCONTATTI: ['ESGESTX'],
116
+ MNUCONTEGGI: ['ESGESTX'],
117
+ MNUDASHAMM: ['ESGESTX', 'MAGAZTINT'],
118
+ MNUDASHDOC: ['ESGESTX', 'MAGAZTINT'],
119
+ MNUDASHNOMINALE: ['ESGESTX', 'MAGAZTINT'],
120
+ MNUDASHRFID: ['ESGESTX', 'MAGAZTINT'],
121
+ MNUDASHRFID_CHARDOT: ['ESGESTX', 'MAGAZTINT'],
122
+ MNUDASHRFID_DDT: ['ESGESTX', 'MAGAZTINT'],
123
+ MNUDASHRFID_DOTAZC: ['ESGESTX', 'MAGAZTINT'],
124
+ MNUDASHRFID_DOTAZR: ['ESGESTX', 'MAGAZTINT'],
125
+ MNUDASHRFID_GRAPHR: ['ESGESTX', 'MAGAZTINT'],
126
+ MNUDASHRFID_GRDDOTAZ: ['ESGESTX', 'MAGAZTINT'],
127
+ MNUDASHRFID_ISTORISP: ['ESGESTX', 'MAGAZTINT'],
128
+ MNUDASHRFID_TDOTAZ: ['ESGESTX', 'MAGAZTINT'],
129
+ MNUDASHRFID_TIMELINE: ['ESGESTX', 'MAGAZTINT'],
130
+ MNUDASHRFID_TLINES: ['ESGESTX', 'MAGAZTINT'],
131
+ MNUDASHRFID_TP: ['ESGESTX', 'MAGAZTINT'],
132
+ MNUDDT: ['ESGESTX', 'MAGAZTINT'],
133
+ MNUDDTEMERG: ['ESGESTX', 'MAGAZTINT'],
134
+ MNUDDTPUL: ['ESGESTX', 'MAGAZTINT'],
135
+ MNUDDTSPO: ['ESGESTX', 'MAGAZTINT'],
136
+ MNUDIGITALHUB: ['ESGESTX'],
137
+ MNUDIPENDENTI: ['ESGESTX', 'MAGAZTINT'],
138
+ MNUDOTSTRU: ['ESGESTX', 'MAGAZTINT'],
139
+ MNUELENCO: ['ESGESTX', 'MAGAZTINT'],
140
+ MNUELENCO_ARMADIO: ['ESGESTX'],
141
+ MNUELENCO_BADGE: ['ESGESTX'],
142
+ MNUELENCO_CODICE: ['ESGESTX'],
143
+ MNUELENCO_DOTROTAZ: ['ESGESTX'],
144
+ MNUELENCO_ECCED: ['ESGESTX'],
145
+ MNUELENCO_MATRICOLA: ['ESGESTX'],
146
+ MNUELENCO_NUMLAV: ['ESGESTX'],
147
+ MNUELENCO_PCK_ULTLET: ['ESGESTX'],
148
+ MNUELENCO_PCKLIST: ['ESGESTX'],
149
+ MNUELENCO_SELREP: ['ESGESTX'],
150
+ MNUELENCOCLIENTI: ['ESGESTX', 'MAGAZTINT'],
151
+ MNUELENCOFATTURE: ['ESGESTX'],
152
+ MNUHOME: ['ESGESTX'],
153
+ MNUIABOT: ['ESGESTX'],
154
+ MNUINVENTARI: ['ESGESTX', 'MAGAZTINT'],
155
+ MNUINVENTARIRFID: ['ESGESTX', 'MAGAZTINT'],
156
+ MNUJOURNAL: ['STEX', 'TINTEMIX'],
157
+ MNUKPIPERSONALE: ['ESGESTX'],
158
+ MNULAVACONTINUA: ['TINTEMIX'],
159
+ MNUMAIN: ['ESGESTX', 'STEX', 'TINTEMIX'],
160
+ MNUMONITORPROD: ['TINTEMIX'],
161
+ MNUMOVMAGMOVIMENTI: ['ESGESTX'],
162
+ MNUPIANA: ['ESGESTX', 'MAGAZTINT', 'TINTEMIX'],
163
+ MNUPIANI: ['STEX', 'TINTEMIX'],
164
+ MNUPLANNING: ['ESGESTX'],
165
+ MNUPREBOLLE: ['ESGESTX', 'MAGAZTINT', 'TINTEMIX'],
166
+ MNURICFOTO: ['STEX', 'TINTEMIX'],
167
+ MNURIEPDDTPUL: ['ESGESTX', 'MAGAZTINT'],
168
+ MNUSBLOCCHI: ['STEX', 'TINTEMIX'],
169
+ MNUSCHEDAPERS: ['ESGESTX', 'MAGAZTINT'],
170
+ MNUSITUASPO: ['ESGESTX', 'MAGAZTINT', 'TINTEMIX'],
171
+ MNUSTXALM: ['STERILIX'],
172
+ MNUSTXCAT: ['STERILIX'],
173
+ MNUSTXDASH: ['STERILIX'],
174
+ MNUSTXDCFG: ['STERILIX'],
175
+ MNUSTXDOC: ['STERILIX'],
176
+ MNUSTXIMPDET: ['STERILIX'],
177
+ MNUSTXIMPEDIT: ['STERILIX'],
178
+ MNUSTXIMPS: ['STERILIX'],
179
+ MNUSTXIMPSEL: ['STERILIX'],
180
+ MNUSTXLOTTI: ['STERILIX'],
181
+ MNUSTXMAC: ['STERILIX'],
182
+ MNUSTXMAIN: ['STERILIX'],
183
+ MNUSTXMQTT: ['STERILIX'],
184
+ MNUSTXPAR: ['STERILIX'],
185
+ MNUSTXRPT: ['STERILIX'],
186
+ MNUSTXSET: ['STERILIX'],
187
+ MNUSTXTEL: ['STERILIX'],
188
+ MNUSTXUSR: ['STERILIX'],
189
+ MNUSTXZONE: ['STERILIX'],
190
+ MNUUTENTI: ['ESGESTX', 'MAGAZTINT', 'STEX'],
191
+ MNUVASCATE: ['STEX', 'TINTEMIX'],
192
+ MOD_AUM_DOTAZ: ['TINTEMIX'],
193
+ MOD_CONF_ORD: ['TINTEMIX'],
194
+ MOD_FILTRI_MAG: ['ESGESTX'],
195
+ MOD_SEGNALAZ: ['ESGESTX'],
196
+ MOD_STAMPE: ['TINTEMIX'],
197
+ MOD_VERSIONI: ['ESGESTX'],
198
+ MONITOR_PRODUZ: ['TINTEMIX'],
199
+ MOP_STAT: ['MAGAZTINT'],
200
+ MOVIMENTI_DETT: ['ESGESTX'],
201
+ MOVIMENTI_ZCS: ['ESGESTX'],
202
+ NUOVA_SCHEDA_PERS: ['ESGESTX'],
203
+ PERSONALE_LANDING: ['ESGESTX'],
204
+ PIANO_FERIE: ['ESGESTX'],
205
+ PLANNING: ['ESGESTX'],
206
+ PLANNING_CONFIG: ['ESGESTX'],
207
+ PLANNING_CONSEGNE: ['ESGESTX'],
208
+ PLANNING_GEO: ['ESGESTX'],
209
+ PLANNING_OPTI: ['ESGESTX'],
210
+ PLANNING_SIMULA: ['ESGESTX'],
211
+ PREB_ETI_CONF: ['TINTEMIX'],
212
+ PREBOLLA: ['TINTEMIX'],
213
+ PREBOLLE: ['TINTEMIX'],
214
+ PREBOLLE_CONF: ['TINTEMIX'],
215
+ PREBOLLE_FORN: ['TINTEMIX'],
216
+ PROFILO: ['ESGESTX'],
217
+ PROFILO_MOBILE: ['ESGESTX'],
218
+ PROFILO_NEW: ['ESGESTX'],
219
+ PROSPETTO_MOP: ['MAGAZTINT'],
220
+ REGISTRA_ARTICOLO: ['ESGESTX'],
221
+ RENEWPWD: ['ESGESTX'],
222
+ REPARTI_DIP: ['ESGESTX'],
223
+ RESET_PASSWORD: ['ESGESTX'],
224
+ RFID_CONTA_PZ: ['MAGAZTINT'],
225
+ RFID_PASSAGGI: ['MAGAZTINT'],
226
+ RFID_STAT: ['MAGAZTINT'],
227
+ RICEV_ETI: ['ESGESTX'],
228
+ RICEV_MERCE: ['ESGESTX'],
229
+ RICH_CLIENTE: ['ESGESTX'],
230
+ RIEPILOG_AZIENDA: ['ESGESTX'],
231
+ SCADENZE_MAPPA: ['ESGESTX'],
232
+ SCAN_TODAY: ['TINTEMIX'],
233
+ SCHEDA_PERSONALE: ['ESGESTX'],
234
+ SEL_CLI_PREB: ['ESGESTX'],
235
+ SEL_MANSIONE: ['ESGESTX'],
236
+ SEL_REP_PIANA: ['ESGESTX'],
237
+ SEL_REPARTO: ['ESGESTX'],
238
+ SETTING: ['ESGESTX'],
239
+ SKILLS: ['ESGESTX'],
240
+ STAFFX_BUSTE_PAGA: ['STAFFX'],
241
+ STAFFX_CAPO_REPARTO: ['STAFFX'],
242
+ STAFFX_COM_AZIENDA: ['STAFFX'],
243
+ STAFFX_COM_GENERALI: ['STAFFX'],
244
+ STAFFX_COM_SICUREZZA: ['STAFFX'],
245
+ STAFFX_DOCUMENTI: ['STAFFX'],
246
+ STAFFX_FERIE: ['STAFFX'],
247
+ STAFFX_HOME: ['STAFFX'],
248
+ STAFFX_SEGNALAZIONI: ['STAFFX'],
249
+ STAT_FATTURE: ['ESGESTX'],
250
+ STAT_MOL_DETT: ['ESGESTX'],
251
+ STATISTICHE: ['ESGESTX'],
252
+ STATISTICHE_DDT: ['ESGESTX'],
253
+ STATISTICHE_MOL: ['ESGESTX'],
254
+ STEX_ARRIVI_CQ: ['STEX'],
255
+ STEX_DOCUMENTI_CQ: ['STEX'],
256
+ STEX_PARTITE_CQ: ['STEX'],
257
+ SUPERVISOR: ['ESGESTX'],
258
+ TAB_AGENTI: ['ESGESTX'],
259
+ TAB_ALLEST: ['ESGESTX'],
260
+ TAB_ASP_BENI: ['ESGESTX'],
261
+ TAB_AZIENDE: ['ESGESTX'],
262
+ TAB_BANCHE: ['ESGESTX'],
263
+ TAB_CAT_CLIENTI: ['ESGESTX'],
264
+ TAB_CAUS_MAG: ['ESGESTX'],
265
+ TAB_COD_IVA: ['ESGESTX'],
266
+ TAB_CONCORRENTI: ['ESGESTX'],
267
+ TAB_GRP_C_CLI: ['ESGESTX'],
268
+ TAB_GRP_MERCE: ['ESGESTX'],
269
+ TAB_MACCHINE: ['ESGESTX'],
270
+ TAB_MAGAZZINI: ['ESGESTX'],
271
+ TAB_MAN_MACCH: ['ESGESTX'],
272
+ TAB_MAN_PREDEF: ['ESGESTX'],
273
+ TAB_MEZZI: ['ESGESTX'],
274
+ TAB_NAZIONI: ['ESGESTX'],
275
+ TAB_PAGAMENTI: ['ESGESTX'],
276
+ TAB_PORTI: ['ESGESTX'],
277
+ TAB_PROMEMORIA: ['ESGESTX'],
278
+ TAB_RACCOLTE: ['ESGESTX'],
279
+ TAB_REP_CLIENTI: ['ESGESTX'],
280
+ TAB_REPARTI: ['ESGESTX'],
281
+ TAB_SPESE_ACC: ['ESGESTX'],
282
+ TAB_STAGIONI: ['ESGESTX'],
283
+ TAB_UNITA_MIS: ['ESGESTX'],
284
+ TAB_VAL_ENERG: ['ESGESTX'],
285
+ TAB_VALUTE: ['ESGESTX'],
286
+ TAB_VETTORI: ['ESGESTX'],
287
+ TAB_ZONE_GEO: ['ESGESTX'],
288
+ TUNNEL_STAT: ['MAGAZTINT'],
289
+ UHF_READER: ['MAGAZTINT'],
290
+ VERIFICA_RFID: ['MAGAZTINT'],
291
+ WACCENTRATORELED: ['ESGESTX'],
292
+ WAUTOFATTURE: ['ESGESTX'],
293
+ WCONSEGNECLIENTE: ['ESGESTX'],
294
+ WCONTAALTRO: ['ESGESTX', 'MAGAZTINT'],
295
+ WCONTABANCHE: ['ESGESTX', 'MAGAZTINT'],
296
+ WCONTACLIENTI: ['ESGESTX', 'MAGAZTINT'],
297
+ WCONTADOC: ['ESGESTX', 'MAGAZTINT'],
298
+ WCONTAFORN: ['ESGESTX', 'MAGAZTINT'],
299
+ WCREDITI: ['ESGESTX'],
300
+ WDASHPIANA: ['ESGESTX', 'MAGAZTINT'],
301
+ WDOTAZCLIENTE: ['ESGESTX'],
302
+ WESPANDINOTECLI: ['ESGESTX'],
303
+ WFATTURE: ['ESGESTX', 'MAGAZTINT'],
304
+ WFATTUREATTIVE: ['ESGESTX'],
305
+ WFATTUREPASSIVE: ['ESGESTX'],
306
+ WHIDE1ACONSEGNA: ['ESGESTX'],
307
+ WIDANAGRAM: ['ESGESTX', 'MAGAZTINT', 'STEX', 'TINTEMIX'],
308
+ WIDBLOCCHI: ['ESGESTX', 'MAGAZTINT', 'STEX', 'TINTEMIX'],
309
+ WIDPIANI: ['ESGESTX', 'MAGAZTINT', 'STEX', 'TINTEMIX'],
310
+ WIDRICFOTO: ['ESGESTX', 'MAGAZTINT', 'STEX', 'TINTEMIX'],
311
+ WIDSBLOCCHI: ['ESGESTX', 'MAGAZTINT', 'STEX', 'TINTEMIX'],
312
+ WIDUTENTI: ['ESGESTX', 'MAGAZTINT'],
313
+ WIDUTENTINEW: ['ESGESTX', 'MAGAZTINT', 'STEX'],
314
+ WIDVASCATE: ['ESGESTX', 'MAGAZTINT', 'STEX', 'TINTEMIX'],
315
+ WIDVERSIONI: ['ESGESTX', 'MAGAZTINT', 'STEX', 'TINTEMIX'],
316
+ WKPI: ['ESGESTX'],
317
+ WKPIANDAMENTO: ['ESGESTX'],
318
+ WKPIANOMALIA: ['ESGESTX'],
319
+ WKPIASSEGNAZIONI: ['ESGESTX'],
320
+ WKPICENSITO: ['ESGESTX'],
321
+ WKPICONSEGNERITIRO: ['ESGESTX'],
322
+ WKPICREDITI: ['ESGESTX'],
323
+ WKPIJOLLI: ['ESGESTX'],
324
+ WKPILITE: ['ESGESTX'],
325
+ WKPIMOVIMENTI: ['ESGESTX'],
326
+ WKPIOLTREGG: ['ESGESTX'],
327
+ WKPIPERSONALE: ['ESGESTX'],
328
+ WKPIREGISTROANOMALIE: ['ESGESTX'],
329
+ WKPIROTAZIONI: ['ESGESTX'],
330
+ WKPISALDO: ['ESGESTX'],
331
+ WKPIVARCO: ['ESGESTX'],
332
+ WPROSPETTOANN: ['ESGESTX', 'MAGAZTINT'],
333
+ WREGISTRAART: ['ESGESTX', 'MAGAZTINT'],
334
+ WSCADENZESBF: ['ESGESTX', 'MAGAZTINT'],
335
+ WSEGNALAZIONE: ['ESGESTX', 'MAGAZTINT'],
336
+ ZCS_MANUTENZ: ['ESGESTX'],
337
+ };
338
+ //# sourceMappingURL=menuScopeSeed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menuScopeSeed.js","sourceRoot":"","sources":["../../../src/accessi-module/database-updates/menuScopeSeed.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Seed di sistema degli scope applicativi.\n *\n * Generato dai cataloghi menu delle app (`menus/menu-catalog.json`):\n * un menu puo appartenere a piu scope. Non modificare a mano: rigenerare\n * con lo script di workspace e incrementare MENU_SCOPE_SEED_VERSION.\n */\n\nexport const MENU_SCOPE_SEED_VERSION = '2026-10-27.1';\n\nexport interface ScopeSeed {\n code: string;\n name: string;\n}\n\nexport const SCOPE_SEED: readonly ScopeSeed[] = [\n { code: 'CENTROCONTROLLO', name: 'CentroControllo' },\n { code: 'ESGESTX', name: 'EsGestX' },\n { code: 'MAGAZTINT', name: 'Magaz-Tint' },\n { code: 'STAFFX', name: 'StaffX' },\n { code: 'STERILIX', name: 'SteriliX' },\n { code: 'STEX', name: 'SteX' },\n { code: 'TINTEMIX', name: 'TintemiX' },\n];\n\n/** menu -> scope applicativi */\nexport const MENU_SCOPE_SEED: Readonly<Record<string, readonly string[]>> = {\n ABILAVANZABLOCCHI: ['STEX', 'TINTEMIX'],\n ABILAVANZACLI: ['STEX', 'TINTEMIX'],\n ABILAVANZASUPER: ['STEX', 'TINTEMIX'],\n ABILRICPRODOTTI: ['STEX', 'TINTEMIX'],\n ADMIN: ['ESGESTX'],\n ADMIN_RUOLI: ['ESGESTX'],\n ALLINEA_BOLLE: ['TINTEMIX'],\n ALLINEA_SALDI: ['ESGESTX'],\n ASSEGNA_FERIE: ['ESGESTX'],\n AUTISTI: ['ESGESTX'],\n AUTO_PREB_FISSI: ['TINTEMIX'],\n BACKUP_TAB: ['ESGESTX'],\n CARICO_LAVACONT: ['TINTEMIX'],\n CARICO_SPORCO: ['TINTEMIX'],\n CLIENTE: ['ESGESTX'],\n CLIENTE_LAND_MOB: ['ESGESTX'],\n CLIENTE_LANDING: ['ESGESTX'],\n CLIENTE_MOBILE: ['ESGESTX'],\n CLIENTE_TRASF: ['ESGESTX'],\n CLIENTI_CONS: ['ESGESTX'],\n CLIENTI_PASSAGGI: ['ESGESTX'],\n COL_ARMADIO: ['ESGESTX', 'MAGAZTINT'],\n COL_BADGE: ['ESGESTX', 'MAGAZTINT'],\n COL_CODICEPERS: ['ESGESTX', 'MAGAZTINT'],\n COL_DOTROTAZ: ['ESGESTX', 'MAGAZTINT'],\n COL_MATRICOLA: ['ESGESTX', 'MAGAZTINT'],\n COL_NUMLAV: ['ESGESTX', 'MAGAZTINT'],\n COL_PCK_ULTLET: ['ESGESTX', 'MAGAZTINT'],\n COL_PCKLIST: ['ESGESTX', 'MAGAZTINT'],\n CONFIG_MENU: ['ESGESTX'],\n CONFRONTO_ACC: ['ESGESTX'],\n CONTABILITA: ['ESGESTX'],\n CONTATTO: ['ESGESTX'],\n CONTATTO_EDIT: ['ESGESTX'],\n CONTEGGIB: ['ESGESTX'],\n DASH_DOCUMENTI: ['ESGESTX'],\n DASH_FB: ['MAGAZTINT'],\n DASH_READER: ['MAGAZTINT'],\n DASH_RFID: ['MAGAZTINT'],\n DASH_RFID_MOB: ['MAGAZTINT'],\n DASHBOARD: ['ESGESTX'],\n DIGITAL_HUB: ['ESGESTX'],\n DIPENDENTI: ['ESGESTX'],\n ECLIENTI: ['ESGESTX'],\n ECONTRATTI: ['ESGESTX'],\n ETICHETTE: ['ESGESTX'],\n EXPORT_GESCOM: ['ESGESTX'],\n FATTURAZIONE: ['ESGESTX'],\n FLUSSI_CASSA: ['ESGESTX'],\n GDPR: ['ESGESTX'],\n GEST_DOCUMENTI: ['ESGESTX'],\n GP_ISTRUTTORI: ['ESGESTX'],\n GP_MASCHERE: ['ESGESTX'],\n GP_TABELLE: ['ESGESTX'],\n IMP_BIKO: ['ESGESTX'],\n IMP_DEPURATORE: ['ESGESTX'],\n IMP_MOBICS: ['ESGESTX'],\n IMPEGNI: ['ESGESTX'],\n INBOX: ['ESGESTX'],\n INDUM_ADDEBITI: ['ESGESTX'],\n INDUM_CONSEGNA: ['ESGESTX'],\n INV_CREANUOVO: ['ESGESTX', 'MAGAZTINT'],\n INV_DATICONSEGNA: ['ESGESTX', 'MAGAZTINT'],\n INV_EXPCSV: ['ESGESTX', 'MAGAZTINT'],\n INV_NOTE: ['ESGESTX', 'MAGAZTINT'],\n INV_NUMLAVRFID: ['ESGESTX', 'MAGAZTINT'],\n INV_RFIDASSEGNATOIL: ['ESGESTX', 'MAGAZTINT'],\n INV_SHOWANOMALIE: ['ESGESTX'],\n INV_VALORECONV: ['ESGESTX', 'MAGAZTINT'],\n INVENTARI_RF_D: ['MAGAZTINT'],\n INVENTARI_RF_M: ['MAGAZTINT'],\n INVENTARI_RF_R: ['MAGAZTINT'],\n INVENTARI_RFID: ['MAGAZTINT'],\n KIT: ['ESGESTX'],\n KPI_PERSONALE: ['ESGESTX'],\n LANDING: ['ESGESTX'],\n LISTA_CLI_MOB: ['ESGESTX'],\n LISTA_CLIENTI: ['ESGESTX'],\n LISTA_CONTATTI: ['ESGESTX'],\n LISTA_CPZ: ['ESGESTX'],\n LISTA_PERSONALE: ['ESGESTX'],\n LISTA_PRODUZ: ['TINTEMIX'],\n LISTA_PROFILI: ['ESGESTX'],\n LISTA_STIRO: ['TINTEMIX'],\n LISTINI_MAPPA: ['ESGESTX'],\n MACRO_REPARTI: ['ESGESTX'],\n MAGAZZINI_TEST: ['ESGESTX'],\n MAGAZZINO_PRO: ['ESGESTX'],\n MNUALLINEASALDI: ['ESGESTX'],\n MNUAVANZA: ['STEX', 'TINTEMIX'],\n MNUBLOCCHI: ['STEX', 'TINTEMIX'],\n MNUCONTA: ['ESGESTX'],\n MNUCONTATTI: ['ESGESTX'],\n MNUCONTEGGI: ['ESGESTX'],\n MNUDASHAMM: ['ESGESTX', 'MAGAZTINT'],\n MNUDASHDOC: ['ESGESTX', 'MAGAZTINT'],\n MNUDASHNOMINALE: ['ESGESTX', 'MAGAZTINT'],\n MNUDASHRFID: ['ESGESTX', 'MAGAZTINT'],\n MNUDASHRFID_CHARDOT: ['ESGESTX', 'MAGAZTINT'],\n MNUDASHRFID_DDT: ['ESGESTX', 'MAGAZTINT'],\n MNUDASHRFID_DOTAZC: ['ESGESTX', 'MAGAZTINT'],\n MNUDASHRFID_DOTAZR: ['ESGESTX', 'MAGAZTINT'],\n MNUDASHRFID_GRAPHR: ['ESGESTX', 'MAGAZTINT'],\n MNUDASHRFID_GRDDOTAZ: ['ESGESTX', 'MAGAZTINT'],\n MNUDASHRFID_ISTORISP: ['ESGESTX', 'MAGAZTINT'],\n MNUDASHRFID_TDOTAZ: ['ESGESTX', 'MAGAZTINT'],\n MNUDASHRFID_TIMELINE: ['ESGESTX', 'MAGAZTINT'],\n MNUDASHRFID_TLINES: ['ESGESTX', 'MAGAZTINT'],\n MNUDASHRFID_TP: ['ESGESTX', 'MAGAZTINT'],\n MNUDDT: ['ESGESTX', 'MAGAZTINT'],\n MNUDDTEMERG: ['ESGESTX', 'MAGAZTINT'],\n MNUDDTPUL: ['ESGESTX', 'MAGAZTINT'],\n MNUDDTSPO: ['ESGESTX', 'MAGAZTINT'],\n MNUDIGITALHUB: ['ESGESTX'],\n MNUDIPENDENTI: ['ESGESTX', 'MAGAZTINT'],\n MNUDOTSTRU: ['ESGESTX', 'MAGAZTINT'],\n MNUELENCO: ['ESGESTX', 'MAGAZTINT'],\n MNUELENCO_ARMADIO: ['ESGESTX'],\n MNUELENCO_BADGE: ['ESGESTX'],\n MNUELENCO_CODICE: ['ESGESTX'],\n MNUELENCO_DOTROTAZ: ['ESGESTX'],\n MNUELENCO_ECCED: ['ESGESTX'],\n MNUELENCO_MATRICOLA: ['ESGESTX'],\n MNUELENCO_NUMLAV: ['ESGESTX'],\n MNUELENCO_PCK_ULTLET: ['ESGESTX'],\n MNUELENCO_PCKLIST: ['ESGESTX'],\n MNUELENCO_SELREP: ['ESGESTX'],\n MNUELENCOCLIENTI: ['ESGESTX', 'MAGAZTINT'],\n MNUELENCOFATTURE: ['ESGESTX'],\n MNUHOME: ['ESGESTX'],\n MNUIABOT: ['ESGESTX'],\n MNUINVENTARI: ['ESGESTX', 'MAGAZTINT'],\n MNUINVENTARIRFID: ['ESGESTX', 'MAGAZTINT'],\n MNUJOURNAL: ['STEX', 'TINTEMIX'],\n MNUKPIPERSONALE: ['ESGESTX'],\n MNULAVACONTINUA: ['TINTEMIX'],\n MNUMAIN: ['ESGESTX', 'STEX', 'TINTEMIX'],\n MNUMONITORPROD: ['TINTEMIX'],\n MNUMOVMAGMOVIMENTI: ['ESGESTX'],\n MNUPIANA: ['ESGESTX', 'MAGAZTINT', 'TINTEMIX'],\n MNUPIANI: ['STEX', 'TINTEMIX'],\n MNUPLANNING: ['ESGESTX'],\n MNUPREBOLLE: ['ESGESTX', 'MAGAZTINT', 'TINTEMIX'],\n MNURICFOTO: ['STEX', 'TINTEMIX'],\n MNURIEPDDTPUL: ['ESGESTX', 'MAGAZTINT'],\n MNUSBLOCCHI: ['STEX', 'TINTEMIX'],\n MNUSCHEDAPERS: ['ESGESTX', 'MAGAZTINT'],\n MNUSITUASPO: ['ESGESTX', 'MAGAZTINT', 'TINTEMIX'],\n MNUSTXALM: ['STERILIX'],\n MNUSTXCAT: ['STERILIX'],\n MNUSTXDASH: ['STERILIX'],\n MNUSTXDCFG: ['STERILIX'],\n MNUSTXDOC: ['STERILIX'],\n MNUSTXIMPDET: ['STERILIX'],\n MNUSTXIMPEDIT: ['STERILIX'],\n MNUSTXIMPS: ['STERILIX'],\n MNUSTXIMPSEL: ['STERILIX'],\n MNUSTXLOTTI: ['STERILIX'],\n MNUSTXMAC: ['STERILIX'],\n MNUSTXMAIN: ['STERILIX'],\n MNUSTXMQTT: ['STERILIX'],\n MNUSTXPAR: ['STERILIX'],\n MNUSTXRPT: ['STERILIX'],\n MNUSTXSET: ['STERILIX'],\n MNUSTXTEL: ['STERILIX'],\n MNUSTXUSR: ['STERILIX'],\n MNUSTXZONE: ['STERILIX'],\n MNUUTENTI: ['ESGESTX', 'MAGAZTINT', 'STEX'],\n MNUVASCATE: ['STEX', 'TINTEMIX'],\n MOD_AUM_DOTAZ: ['TINTEMIX'],\n MOD_CONF_ORD: ['TINTEMIX'],\n MOD_FILTRI_MAG: ['ESGESTX'],\n MOD_SEGNALAZ: ['ESGESTX'],\n MOD_STAMPE: ['TINTEMIX'],\n MOD_VERSIONI: ['ESGESTX'],\n MONITOR_PRODUZ: ['TINTEMIX'],\n MOP_STAT: ['MAGAZTINT'],\n MOVIMENTI_DETT: ['ESGESTX'],\n MOVIMENTI_ZCS: ['ESGESTX'],\n NUOVA_SCHEDA_PERS: ['ESGESTX'],\n PERSONALE_LANDING: ['ESGESTX'],\n PIANO_FERIE: ['ESGESTX'],\n PLANNING: ['ESGESTX'],\n PLANNING_CONFIG: ['ESGESTX'],\n PLANNING_CONSEGNE: ['ESGESTX'],\n PLANNING_GEO: ['ESGESTX'],\n PLANNING_OPTI: ['ESGESTX'],\n PLANNING_SIMULA: ['ESGESTX'],\n PREB_ETI_CONF: ['TINTEMIX'],\n PREBOLLA: ['TINTEMIX'],\n PREBOLLE: ['TINTEMIX'],\n PREBOLLE_CONF: ['TINTEMIX'],\n PREBOLLE_FORN: ['TINTEMIX'],\n PROFILO: ['ESGESTX'],\n PROFILO_MOBILE: ['ESGESTX'],\n PROFILO_NEW: ['ESGESTX'],\n PROSPETTO_MOP: ['MAGAZTINT'],\n REGISTRA_ARTICOLO: ['ESGESTX'],\n RENEWPWD: ['ESGESTX'],\n REPARTI_DIP: ['ESGESTX'],\n RESET_PASSWORD: ['ESGESTX'],\n RFID_CONTA_PZ: ['MAGAZTINT'],\n RFID_PASSAGGI: ['MAGAZTINT'],\n RFID_STAT: ['MAGAZTINT'],\n RICEV_ETI: ['ESGESTX'],\n RICEV_MERCE: ['ESGESTX'],\n RICH_CLIENTE: ['ESGESTX'],\n RIEPILOG_AZIENDA: ['ESGESTX'],\n SCADENZE_MAPPA: ['ESGESTX'],\n SCAN_TODAY: ['TINTEMIX'],\n SCHEDA_PERSONALE: ['ESGESTX'],\n SEL_CLI_PREB: ['ESGESTX'],\n SEL_MANSIONE: ['ESGESTX'],\n SEL_REP_PIANA: ['ESGESTX'],\n SEL_REPARTO: ['ESGESTX'],\n SETTING: ['ESGESTX'],\n SKILLS: ['ESGESTX'],\n STAFFX_BUSTE_PAGA: ['STAFFX'],\n STAFFX_CAPO_REPARTO: ['STAFFX'],\n STAFFX_COM_AZIENDA: ['STAFFX'],\n STAFFX_COM_GENERALI: ['STAFFX'],\n STAFFX_COM_SICUREZZA: ['STAFFX'],\n STAFFX_DOCUMENTI: ['STAFFX'],\n STAFFX_FERIE: ['STAFFX'],\n STAFFX_HOME: ['STAFFX'],\n STAFFX_SEGNALAZIONI: ['STAFFX'],\n STAT_FATTURE: ['ESGESTX'],\n STAT_MOL_DETT: ['ESGESTX'],\n STATISTICHE: ['ESGESTX'],\n STATISTICHE_DDT: ['ESGESTX'],\n STATISTICHE_MOL: ['ESGESTX'],\n STEX_ARRIVI_CQ: ['STEX'],\n STEX_DOCUMENTI_CQ: ['STEX'],\n STEX_PARTITE_CQ: ['STEX'],\n SUPERVISOR: ['ESGESTX'],\n TAB_AGENTI: ['ESGESTX'],\n TAB_ALLEST: ['ESGESTX'],\n TAB_ASP_BENI: ['ESGESTX'],\n TAB_AZIENDE: ['ESGESTX'],\n TAB_BANCHE: ['ESGESTX'],\n TAB_CAT_CLIENTI: ['ESGESTX'],\n TAB_CAUS_MAG: ['ESGESTX'],\n TAB_COD_IVA: ['ESGESTX'],\n TAB_CONCORRENTI: ['ESGESTX'],\n TAB_GRP_C_CLI: ['ESGESTX'],\n TAB_GRP_MERCE: ['ESGESTX'],\n TAB_MACCHINE: ['ESGESTX'],\n TAB_MAGAZZINI: ['ESGESTX'],\n TAB_MAN_MACCH: ['ESGESTX'],\n TAB_MAN_PREDEF: ['ESGESTX'],\n TAB_MEZZI: ['ESGESTX'],\n TAB_NAZIONI: ['ESGESTX'],\n TAB_PAGAMENTI: ['ESGESTX'],\n TAB_PORTI: ['ESGESTX'],\n TAB_PROMEMORIA: ['ESGESTX'],\n TAB_RACCOLTE: ['ESGESTX'],\n TAB_REP_CLIENTI: ['ESGESTX'],\n TAB_REPARTI: ['ESGESTX'],\n TAB_SPESE_ACC: ['ESGESTX'],\n TAB_STAGIONI: ['ESGESTX'],\n TAB_UNITA_MIS: ['ESGESTX'],\n TAB_VAL_ENERG: ['ESGESTX'],\n TAB_VALUTE: ['ESGESTX'],\n TAB_VETTORI: ['ESGESTX'],\n TAB_ZONE_GEO: ['ESGESTX'],\n TUNNEL_STAT: ['MAGAZTINT'],\n UHF_READER: ['MAGAZTINT'],\n VERIFICA_RFID: ['MAGAZTINT'],\n WACCENTRATORELED: ['ESGESTX'],\n WAUTOFATTURE: ['ESGESTX'],\n WCONSEGNECLIENTE: ['ESGESTX'],\n WCONTAALTRO: ['ESGESTX', 'MAGAZTINT'],\n WCONTABANCHE: ['ESGESTX', 'MAGAZTINT'],\n WCONTACLIENTI: ['ESGESTX', 'MAGAZTINT'],\n WCONTADOC: ['ESGESTX', 'MAGAZTINT'],\n WCONTAFORN: ['ESGESTX', 'MAGAZTINT'],\n WCREDITI: ['ESGESTX'],\n WDASHPIANA: ['ESGESTX', 'MAGAZTINT'],\n WDOTAZCLIENTE: ['ESGESTX'],\n WESPANDINOTECLI: ['ESGESTX'],\n WFATTURE: ['ESGESTX', 'MAGAZTINT'],\n WFATTUREATTIVE: ['ESGESTX'],\n WFATTUREPASSIVE: ['ESGESTX'],\n WHIDE1ACONSEGNA: ['ESGESTX'],\n WIDANAGRAM: ['ESGESTX', 'MAGAZTINT', 'STEX', 'TINTEMIX'],\n WIDBLOCCHI: ['ESGESTX', 'MAGAZTINT', 'STEX', 'TINTEMIX'],\n WIDPIANI: ['ESGESTX', 'MAGAZTINT', 'STEX', 'TINTEMIX'],\n WIDRICFOTO: ['ESGESTX', 'MAGAZTINT', 'STEX', 'TINTEMIX'],\n WIDSBLOCCHI: ['ESGESTX', 'MAGAZTINT', 'STEX', 'TINTEMIX'],\n WIDUTENTI: ['ESGESTX', 'MAGAZTINT'],\n WIDUTENTINEW: ['ESGESTX', 'MAGAZTINT', 'STEX'],\n WIDVASCATE: ['ESGESTX', 'MAGAZTINT', 'STEX', 'TINTEMIX'],\n WIDVERSIONI: ['ESGESTX', 'MAGAZTINT', 'STEX', 'TINTEMIX'],\n WKPI: ['ESGESTX'],\n WKPIANDAMENTO: ['ESGESTX'],\n WKPIANOMALIA: ['ESGESTX'],\n WKPIASSEGNAZIONI: ['ESGESTX'],\n WKPICENSITO: ['ESGESTX'],\n WKPICONSEGNERITIRO: ['ESGESTX'],\n WKPICREDITI: ['ESGESTX'],\n WKPIJOLLI: ['ESGESTX'],\n WKPILITE: ['ESGESTX'],\n WKPIMOVIMENTI: ['ESGESTX'],\n WKPIOLTREGG: ['ESGESTX'],\n WKPIPERSONALE: ['ESGESTX'],\n WKPIREGISTROANOMALIE: ['ESGESTX'],\n WKPIROTAZIONI: ['ESGESTX'],\n WKPISALDO: ['ESGESTX'],\n WKPIVARCO: ['ESGESTX'],\n WPROSPETTOANN: ['ESGESTX', 'MAGAZTINT'],\n WREGISTRAART: ['ESGESTX', 'MAGAZTINT'],\n WSCADENZESBF: ['ESGESTX', 'MAGAZTINT'],\n WSEGNALAZIONE: ['ESGESTX', 'MAGAZTINT'],\n ZCS_MANUTENZ: ['ESGESTX'],\n};\n"]}
@@ -0,0 +1,8 @@
1
+ import type { AccessiOptions } from '../AccessiModule';
2
+ export interface MenuScopeSeedReport {
3
+ scopesEnsured: number;
4
+ assignmentsInserted: number;
5
+ fallbackInserted: number;
6
+ unassigned: string[];
7
+ }
8
+ export declare function applyMenuScopeSeeds(options: AccessiOptions): Promise<MenuScopeSeedReport | null>;
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.applyMenuScopeSeeds = applyMenuScopeSeeds;
13
+ const Orm_1 = require("../../Orm");
14
+ const Logger_1 = require("../../Logger");
15
+ const menuScopeSeed_1 = require("./menuScopeSeed");
16
+ /**
17
+ * Seed di sistema degli scope applicativi.
18
+ *
19
+ * Gira al bootstrap, dopo la riconciliazione dello schema e prima delle
20
+ * catalog migration dell'host. E' idempotente:
21
+ * - inserisce gli scope mancanti senza sovrascrivere nome/descrizioni esistenti;
22
+ * - inserisce le associazioni menu/scope mancanti, senza cancellare quelle
23
+ * aggiunte a mano dalla console;
24
+ * - assegna un fallback ai menu nuovi in base al prefisso del gruppo
25
+ * (`ESGESTX_`, `TINTEMIX_`, ...), cosi un menu creato dopo l'installazione
26
+ * non resta senza scope;
27
+ * - logga i menu rimasti senza scope senza bloccare l'avvio.
28
+ *
29
+ * Il seed "grande" (314 menu) viene applicato una volta per versione; il
30
+ * fallback gira a ogni avvio ed e' una singola query.
31
+ */
32
+ const SEED_VERSION_KEY = 'MenuScopesSeed';
33
+ /** Prefisso della descrizione gruppo -> scope. */
34
+ const GROUP_PREFIXES = [
35
+ ['ESGESTX_', 'ESGESTX'],
36
+ ['TINTEMIX_', 'TINTEMIX'],
37
+ ['MAGAZTINT_', 'MAGAZTINT'],
38
+ ['STEX_', 'STEX'],
39
+ ['STAFFX_', 'STAFFX'],
40
+ ['STERILIX_', 'STERILIX'],
41
+ ['CENTROCONTROLLO_', 'CENTROCONTROLLO'],
42
+ ];
43
+ function sqlString(value) {
44
+ return `'${value.replace(/'/g, "''")}'`;
45
+ }
46
+ function insertScope(options, code, name) {
47
+ return __awaiter(this, void 0, void 0, function* () {
48
+ yield Orm_1.Orm.execute(options.databaseOptions, `INSERT INTO SCOPES (CODICE, NOME)
49
+ SELECT ?, ? FROM RDB$DATABASE
50
+ WHERE NOT EXISTS (SELECT 1 FROM SCOPES S WHERE S.CODICE = ?)`, [code, name, code], false);
51
+ });
52
+ }
53
+ function insertAssignment(options, menuCode, scopeCode) {
54
+ return __awaiter(this, void 0, void 0, function* () {
55
+ yield Orm_1.Orm.execute(options.databaseOptions, `INSERT INTO MENU_SCOPES (CODICE_MENU, CODICE_SCOPE)
56
+ SELECT ?, ? FROM RDB$DATABASE
57
+ WHERE EXISTS (SELECT 1 FROM MENU M WHERE M.CODMNU = ?)
58
+ AND NOT EXISTS (
59
+ SELECT 1 FROM MENU_SCOPES MS
60
+ WHERE MS.CODICE_MENU = ? AND MS.CODICE_SCOPE = ?
61
+ )`, [menuCode, scopeCode, menuCode, menuCode, scopeCode], false);
62
+ });
63
+ }
64
+ function fallbackCaseExpression() {
65
+ const branches = GROUP_PREFIXES.map(([prefix, scope]) => `WHEN TRIM(G.DESGRP) STARTING WITH ${sqlString(prefix)} THEN ${sqlString(scope)}`);
66
+ return `CASE ${branches.join(' ')} ELSE NULL END`;
67
+ }
68
+ function applyFallback(options) {
69
+ return __awaiter(this, void 0, void 0, function* () {
70
+ const scopeExpression = fallbackCaseExpression();
71
+ yield Orm_1.Orm.execute(options.databaseOptions, `INSERT INTO MENU_SCOPES (CODICE_MENU, CODICE_SCOPE)
72
+ SELECT M.CODMNU, ${scopeExpression}
73
+ FROM MENU M
74
+ LEFT JOIN MENU_GRP G ON G.CODGRP = M.CODGRP
75
+ WHERE ${scopeExpression} IS NOT NULL
76
+ AND NOT EXISTS (
77
+ SELECT 1 FROM MENU_SCOPES MS WHERE MS.CODICE_MENU = M.CODMNU
78
+ )`, [], false);
79
+ });
80
+ }
81
+ function unassignedMenus(options) {
82
+ return __awaiter(this, void 0, void 0, function* () {
83
+ const rows = (yield Orm_1.Orm.query(options.databaseOptions, `SELECT M.CODMNU AS CODE
84
+ FROM MENU M
85
+ WHERE NOT EXISTS (SELECT 1 FROM MENU_SCOPES MS WHERE MS.CODICE_MENU = M.CODMNU)
86
+ ORDER BY M.CODMNU`, [], false));
87
+ return rows
88
+ .map((row) => { var _a, _b; return String((_b = (_a = row.CODE) !== null && _a !== void 0 ? _a : row.code) !== null && _b !== void 0 ? _b : '').trim(); })
89
+ .filter((code) => code.length > 0);
90
+ });
91
+ }
92
+ function applyMenuScopeSeeds(options) {
93
+ return __awaiter(this, void 0, void 0, function* () {
94
+ var _a, _b, _c, _d, _e;
95
+ if (((_a = options.systemSeeds) === null || _a === void 0 ? void 0 : _a.enabled) === false) {
96
+ return null;
97
+ }
98
+ for (const scope of menuScopeSeed_1.SCOPE_SEED) {
99
+ yield insertScope(options, scope.code, scope.name);
100
+ }
101
+ const current = (yield Orm_1.Orm.query(options.databaseOptions, 'SELECT DESPAR FROM PARAMETRI WHERE CODPAR = ?', [SEED_VERSION_KEY], false));
102
+ const installedVersion = String((_e = (_c = (_b = current[0]) === null || _b === void 0 ? void 0 : _b.DESPAR) !== null && _c !== void 0 ? _c : (_d = current[0]) === null || _d === void 0 ? void 0 : _d.despar) !== null && _e !== void 0 ? _e : '').trim();
103
+ let assignmentsInserted = 0;
104
+ if (installedVersion !== menuScopeSeed_1.MENU_SCOPE_SEED_VERSION) {
105
+ for (const [menuCode, scopes] of Object.entries(menuScopeSeed_1.MENU_SCOPE_SEED)) {
106
+ for (const scopeCode of scopes) {
107
+ yield insertAssignment(options, menuCode, scopeCode);
108
+ assignmentsInserted += 1;
109
+ }
110
+ }
111
+ yield Orm_1.Orm.execute(options.databaseOptions, 'UPDATE OR INSERT INTO PARAMETRI (CODPAR, DESPAR) VALUES (?, ?) MATCHING (CODPAR)', [SEED_VERSION_KEY, menuScopeSeed_1.MENU_SCOPE_SEED_VERSION], false);
112
+ }
113
+ const beforeFallback = yield unassignedMenus(options);
114
+ yield applyFallback(options);
115
+ const unassigned = yield unassignedMenus(options);
116
+ const logger = new Logger_1.Logger('MenuScopeSeed');
117
+ logger.info(`Scope applicativi: ${menuScopeSeed_1.SCOPE_SEED.length} scope, ${assignmentsInserted} associazioni dal catalogo, ` +
118
+ `${beforeFallback.length - unassigned.length} dal fallback gruppo.`);
119
+ if (unassigned.length > 0) {
120
+ logger.warning(`Menu senza scope applicativo (${unassigned.length}): ${unassigned.join(', ')}. ` +
121
+ 'Assegna uno scope dalla console o aggiorna il catalogo menu.');
122
+ }
123
+ return {
124
+ scopesEnsured: menuScopeSeed_1.SCOPE_SEED.length,
125
+ assignmentsInserted,
126
+ fallbackInserted: Math.max(0, beforeFallback.length - unassigned.length),
127
+ unassigned,
128
+ };
129
+ });
130
+ }
131
+ //# sourceMappingURL=menuScopeSeeder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menuScopeSeeder.js","sourceRoot":"","sources":["../../../src/accessi-module/database-updates/menuScopeSeeder.ts"],"names":[],"mappings":"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","sourcesContent":["import { Orm } from '../../Orm';\nimport { Logger } from '../../Logger';\nimport type { AccessiOptions } from '../AccessiModule';\nimport { MENU_SCOPE_SEED, MENU_SCOPE_SEED_VERSION, SCOPE_SEED } from './menuScopeSeed';\n\n/**\n * Seed di sistema degli scope applicativi.\n *\n * Gira al bootstrap, dopo la riconciliazione dello schema e prima delle\n * catalog migration dell'host. E' idempotente:\n * - inserisce gli scope mancanti senza sovrascrivere nome/descrizioni esistenti;\n * - inserisce le associazioni menu/scope mancanti, senza cancellare quelle\n * aggiunte a mano dalla console;\n * - assegna un fallback ai menu nuovi in base al prefisso del gruppo\n * (`ESGESTX_`, `TINTEMIX_`, ...), cosi un menu creato dopo l'installazione\n * non resta senza scope;\n * - logga i menu rimasti senza scope senza bloccare l'avvio.\n *\n * Il seed \"grande\" (314 menu) viene applicato una volta per versione; il\n * fallback gira a ogni avvio ed e' una singola query.\n */\nconst SEED_VERSION_KEY = 'MenuScopesSeed';\n\n/** Prefisso della descrizione gruppo -> scope. */\nconst GROUP_PREFIXES: ReadonlyArray<readonly [string, string]> = [\n ['ESGESTX_', 'ESGESTX'],\n ['TINTEMIX_', 'TINTEMIX'],\n ['MAGAZTINT_', 'MAGAZTINT'],\n ['STEX_', 'STEX'],\n ['STAFFX_', 'STAFFX'],\n ['STERILIX_', 'STERILIX'],\n ['CENTROCONTROLLO_', 'CENTROCONTROLLO'],\n];\n\nexport interface MenuScopeSeedReport {\n scopesEnsured: number;\n assignmentsInserted: number;\n fallbackInserted: number;\n unassigned: string[];\n}\n\nfunction sqlString(value: string): string {\n return `'${value.replace(/'/g, \"''\")}'`;\n}\n\nasync function insertScope(options: AccessiOptions, code: string, name: string): Promise<void> {\n await Orm.execute(\n options.databaseOptions,\n `INSERT INTO SCOPES (CODICE, NOME)\n SELECT ?, ? FROM RDB$DATABASE\n WHERE NOT EXISTS (SELECT 1 FROM SCOPES S WHERE S.CODICE = ?)`,\n [code, name, code],\n false,\n );\n}\n\nasync function insertAssignment(\n options: AccessiOptions,\n menuCode: string,\n scopeCode: string,\n): Promise<void> {\n await Orm.execute(\n options.databaseOptions,\n `INSERT INTO MENU_SCOPES (CODICE_MENU, CODICE_SCOPE)\n SELECT ?, ? FROM RDB$DATABASE\n WHERE EXISTS (SELECT 1 FROM MENU M WHERE M.CODMNU = ?)\n AND NOT EXISTS (\n SELECT 1 FROM MENU_SCOPES MS\n WHERE MS.CODICE_MENU = ? AND MS.CODICE_SCOPE = ?\n )`,\n [menuCode, scopeCode, menuCode, menuCode, scopeCode],\n false,\n );\n}\n\nfunction fallbackCaseExpression(): string {\n const branches = GROUP_PREFIXES.map(\n ([prefix, scope]) => `WHEN TRIM(G.DESGRP) STARTING WITH ${sqlString(prefix)} THEN ${sqlString(scope)}`,\n );\n return `CASE ${branches.join(' ')} ELSE NULL END`;\n}\n\nasync function applyFallback(options: AccessiOptions): Promise<void> {\n const scopeExpression = fallbackCaseExpression();\n await Orm.execute(\n options.databaseOptions,\n `INSERT INTO MENU_SCOPES (CODICE_MENU, CODICE_SCOPE)\n SELECT M.CODMNU, ${scopeExpression}\n FROM MENU M\n LEFT JOIN MENU_GRP G ON G.CODGRP = M.CODGRP\n WHERE ${scopeExpression} IS NOT NULL\n AND NOT EXISTS (\n SELECT 1 FROM MENU_SCOPES MS WHERE MS.CODICE_MENU = M.CODMNU\n )`,\n [],\n false,\n );\n}\n\nasync function unassignedMenus(options: AccessiOptions): Promise<string[]> {\n const rows = (await Orm.query(\n options.databaseOptions,\n `SELECT M.CODMNU AS CODE\n FROM MENU M\n WHERE NOT EXISTS (SELECT 1 FROM MENU_SCOPES MS WHERE MS.CODICE_MENU = M.CODMNU)\n ORDER BY M.CODMNU`,\n [],\n false,\n )) as Array<Record<string, unknown>>;\n return rows\n .map((row) => String(row.CODE ?? row.code ?? '').trim())\n .filter((code) => code.length > 0);\n}\n\nexport async function applyMenuScopeSeeds(\n options: AccessiOptions,\n): Promise<MenuScopeSeedReport | null> {\n if (options.systemSeeds?.enabled === false) {\n return null;\n }\n\n for (const scope of SCOPE_SEED) {\n await insertScope(options, scope.code, scope.name);\n }\n\n const current = (await Orm.query(\n options.databaseOptions,\n 'SELECT DESPAR FROM PARAMETRI WHERE CODPAR = ?',\n [SEED_VERSION_KEY],\n false,\n )) as Array<Record<string, unknown>>;\n const installedVersion = String(current[0]?.DESPAR ?? current[0]?.despar ?? '').trim();\n\n let assignmentsInserted = 0;\n if (installedVersion !== MENU_SCOPE_SEED_VERSION) {\n for (const [menuCode, scopes] of Object.entries(MENU_SCOPE_SEED)) {\n for (const scopeCode of scopes) {\n await insertAssignment(options, menuCode, scopeCode);\n assignmentsInserted += 1;\n }\n }\n await Orm.execute(\n options.databaseOptions,\n 'UPDATE OR INSERT INTO PARAMETRI (CODPAR, DESPAR) VALUES (?, ?) MATCHING (CODPAR)',\n [SEED_VERSION_KEY, MENU_SCOPE_SEED_VERSION],\n false,\n );\n }\n\n const beforeFallback = await unassignedMenus(options);\n await applyFallback(options);\n const unassigned = await unassignedMenus(options);\n\n const logger = new Logger('MenuScopeSeed');\n logger.info(\n `Scope applicativi: ${SCOPE_SEED.length} scope, ${assignmentsInserted} associazioni dal catalogo, ` +\n `${beforeFallback.length - unassigned.length} dal fallback gruppo.`,\n );\n if (unassigned.length > 0) {\n logger.warning(\n `Menu senza scope applicativo (${unassigned.length}): ${unassigned.join(', ')}. ` +\n 'Assegna uno scope dalla console o aggiorna il catalogo menu.',\n );\n }\n\n return {\n scopesEnsured: SCOPE_SEED.length,\n assignmentsInserted,\n fallbackInserted: Math.max(0, beforeFallback.length - unassigned.length),\n unassigned,\n };\n}\n"]}
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  const AccessiDatabaseUpdater_1 = require("./AccessiDatabaseUpdater");
13
13
  const accessiOptionsFromEnv_1 = require("./accessiOptionsFromEnv");
14
14
  const Orm_1 = require("../../Orm");
15
+ const menuScopeSeeder_1 = require("./menuScopeSeeder");
15
16
  function main() {
16
17
  return __awaiter(this, void 0, void 0, function* () {
17
18
  const options = (0, accessiOptionsFromEnv_1.createAccessiOptionsFromEnv)();
@@ -20,8 +21,10 @@ function main() {
20
21
  console.log(`[Accessi DB Update] Target: ${options.databaseOptions.host}:${options.databaseOptions.port} -> ${options.databaseOptions.database}`);
21
22
  if (checkOnly)
22
23
  yield AccessiDatabaseUpdater_1.AccessiDatabaseUpdater.assertCompatible(options);
23
- else
24
+ else {
24
25
  yield AccessiDatabaseUpdater_1.AccessiDatabaseUpdater.run(options);
26
+ yield (0, menuScopeSeeder_1.applyMenuScopeSeeds)(options);
27
+ }
25
28
  const currentVersion = yield AccessiDatabaseUpdater_1.AccessiDatabaseUpdater.getCurrentVersion(options);
26
29
  console.log(`[Accessi DB Update] Completato. Versione corrente: ${currentVersion !== null && currentVersion !== void 0 ? currentVersion : "N/D"} | Ultima disponibile: ${AccessiDatabaseUpdater_1.AccessiDatabaseUpdater.getLatestVersion()}`);
27
30
  });
@@ -1 +1 @@
1
- {"version":3,"file":"runAccessiDbUpdate.js","sourceRoot":"","sources":["../../../src/accessi-module/database-updates/runAccessiDbUpdate.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,qEAAkE;AAClE,mEAAsE;AACtE,mCAAgC;AAEhC,SAAe,IAAI;;QACjB,MAAM,OAAO,GAAG,IAAA,mDAA2B,GAAE,CAAC;QAE9C,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,wDAAwD,CAAC,CAAC,CAAC,qDAAqD,CAAC,CAAC;QAC1I,OAAO,CAAC,GAAG,CACT,+BAA+B,OAAO,CAAC,eAAe,CAAC,IAAI,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,OAAO,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,CACrI,CAAC;QAEF,IAAI,SAAS;YAAE,MAAM,+CAAsB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;;YACjE,MAAM,+CAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAE/C,MAAM,cAAc,GAAG,MAAM,+CAAsB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,CACT,sDAAsD,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,KAAK,0BAA0B,+CAAsB,CAAC,gBAAgB,EAAE,EAAE,CACnJ,CAAC;IACJ,CAAC;CAAA;AAED,IAAI,EAAE;KACH,IAAI,CAAC,GAAG,EAAE,CAAC,SAAG,CAAC,UAAU,EAAE,CAAC;KAC5B,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAC3B,KAAK,CAAC,CAAO,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,qDAAqD,EAAE,KAAK,CAAC,CAAC;IAC5E,MAAM,SAAG,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAA,CAAC,CAAC","sourcesContent":["import { AccessiDatabaseUpdater } from \"./AccessiDatabaseUpdater\";\nimport { createAccessiOptionsFromEnv } from \"./accessiOptionsFromEnv\";\nimport { Orm } from \"../../Orm\";\n\nasync function main(): Promise<void> {\n const options = createAccessiOptionsFromEnv();\n\n const checkOnly = process.argv.includes('--check');\n console.log(checkOnly ? '[Accessi DB Update] Verifica schema in sola lettura...' : '[Accessi DB Update] Avvio aggiornamento database...');\n console.log(\n `[Accessi DB Update] Target: ${options.databaseOptions.host}:${options.databaseOptions.port} -> ${options.databaseOptions.database}`\n );\n\n if (checkOnly) await AccessiDatabaseUpdater.assertCompatible(options);\n else await AccessiDatabaseUpdater.run(options);\n\n const currentVersion = await AccessiDatabaseUpdater.getCurrentVersion(options);\n console.log(\n `[Accessi DB Update] Completato. Versione corrente: ${currentVersion ?? \"N/D\"} | Ultima disponibile: ${AccessiDatabaseUpdater.getLatestVersion()}`\n );\n}\n\nmain()\n .then(() => Orm.closePools())\n .then(() => process.exit(0))\n .catch(async (error) => {\n console.error(\"[Accessi DB Update] Errore durante l'aggiornamento:\", error);\n await Orm.closePools().catch(() => undefined);\n process.exit(1);\n });\n"]}
1
+ {"version":3,"file":"runAccessiDbUpdate.js","sourceRoot":"","sources":["../../../src/accessi-module/database-updates/runAccessiDbUpdate.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,qEAAkE;AAClE,mEAAsE;AACtE,mCAAgC;AAChC,uDAAwD;AAExD,SAAe,IAAI;;QACjB,MAAM,OAAO,GAAG,IAAA,mDAA2B,GAAE,CAAC;QAE9C,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,wDAAwD,CAAC,CAAC,CAAC,qDAAqD,CAAC,CAAC;QAC1I,OAAO,CAAC,GAAG,CACT,+BAA+B,OAAO,CAAC,eAAe,CAAC,IAAI,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,OAAO,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,CACrI,CAAC;QAEF,IAAI,SAAS;YAAE,MAAM,+CAAsB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;aACjE,CAAC;YACJ,MAAM,+CAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC1C,MAAM,IAAA,qCAAmB,EAAC,OAAO,CAAC,CAAC;QACrC,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,+CAAsB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,CACT,sDAAsD,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,KAAK,0BAA0B,+CAAsB,CAAC,gBAAgB,EAAE,EAAE,CACnJ,CAAC;IACJ,CAAC;CAAA;AAED,IAAI,EAAE;KACH,IAAI,CAAC,GAAG,EAAE,CAAC,SAAG,CAAC,UAAU,EAAE,CAAC;KAC5B,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAC3B,KAAK,CAAC,CAAO,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,qDAAqD,EAAE,KAAK,CAAC,CAAC;IAC5E,MAAM,SAAG,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAA,CAAC,CAAC","sourcesContent":["import { AccessiDatabaseUpdater } from \"./AccessiDatabaseUpdater\";\nimport { createAccessiOptionsFromEnv } from \"./accessiOptionsFromEnv\";\nimport { Orm } from \"../../Orm\";\nimport { applyMenuScopeSeeds } from \"./menuScopeSeeder\";\n\nasync function main(): Promise<void> {\n const options = createAccessiOptionsFromEnv();\n\n const checkOnly = process.argv.includes('--check');\n console.log(checkOnly ? '[Accessi DB Update] Verifica schema in sola lettura...' : '[Accessi DB Update] Avvio aggiornamento database...');\n console.log(\n `[Accessi DB Update] Target: ${options.databaseOptions.host}:${options.databaseOptions.port} -> ${options.databaseOptions.database}`\n );\n\n if (checkOnly) await AccessiDatabaseUpdater.assertCompatible(options);\n else {\n await AccessiDatabaseUpdater.run(options);\n await applyMenuScopeSeeds(options);\n }\n\n const currentVersion = await AccessiDatabaseUpdater.getCurrentVersion(options);\n console.log(\n `[Accessi DB Update] Completato. Versione corrente: ${currentVersion ?? \"N/D\"} | Ultima disponibile: ${AccessiDatabaseUpdater.getLatestVersion()}`\n );\n}\n\nmain()\n .then(() => Orm.closePools())\n .then(() => process.exit(0))\n .catch(async (error) => {\n console.error(\"[Accessi DB Update] Errore durante l'aggiornamento:\", error);\n await Orm.closePools().catch(() => undefined);\n process.exit(1);\n });\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "emilsoftware-utilities",
3
- "version": "2.0.0-dev.60",
3
+ "version": "2.0.0-dev.62",
4
4
  "description": "Utilities for EmilSoftware",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -21,8 +21,8 @@
21
21
  "typecheck": "tsc --noEmit",
22
22
  "lint": "node scripts/lint.cjs",
23
23
  "test": "npm run typecheck && npm run lint && npm run test:unit",
24
- "test:unit": "node --test test/menus-catalog.mjs test/accessi-regressions.cjs test/password-reset-regressions.cjs test/two-factor.cjs test/accessi-schema.cjs test/utilities-regressions.cjs test/service-token-regressions.cjs test/accessi-email-config.cjs test/accessi-catalog-scripts.cjs",
25
- "test:coverage": "node --experimental-test-coverage --test-coverage-lines=50 --test-coverage-functions=60 --test-coverage-branches=60 --test test/menus-catalog.mjs test/accessi-regressions.cjs test/password-reset-regressions.cjs test/two-factor.cjs test/accessi-schema.cjs test/utilities-regressions.cjs test/service-token-regressions.cjs test/accessi-email-config.cjs test/accessi-catalog-scripts.cjs",
24
+ "test:unit": "node --test test/menus-catalog.mjs test/menu-scopes.cjs test/accessi-regressions.cjs test/password-reset-regressions.cjs test/two-factor.cjs test/accessi-schema.cjs test/utilities-regressions.cjs test/service-token-regressions.cjs test/accessi-email-config.cjs test/accessi-catalog-scripts.cjs",
25
+ "test:coverage": "node --experimental-test-coverage --test-coverage-lines=50 --test-coverage-functions=60 --test-coverage-branches=60 --test test/menus-catalog.mjs test/menu-scopes.cjs test/accessi-regressions.cjs test/password-reset-regressions.cjs test/two-factor.cjs test/accessi-schema.cjs test/utilities-regressions.cjs test/service-token-regressions.cjs test/accessi-email-config.cjs test/accessi-catalog-scripts.cjs",
26
26
  "test:accessi": "npm run test:unit",
27
27
  "test:all": "npm test && npm run test:integration",
28
28
  "test:integration": "node test/integration/run-firebird.cjs 5",