aril 2.0.1-dev.4 → 2.0.1

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 (192) hide show
  1. package/boot/config/apps/src/interfaces.d.ts +7 -1
  2. package/boot/config/apps/src/route-close.service.d.ts +8 -3
  3. package/boot/config/apps/src/route-permissions.d.ts +2 -2
  4. package/esm2022/boot/config/api/src/interfaces.mjs +3 -2
  5. package/esm2022/boot/config/apps/src/apps.service.mjs +2 -2
  6. package/esm2022/boot/config/apps/src/custom-route-reuse-strategy.class.mjs +4 -4
  7. package/esm2022/boot/config/apps/src/interfaces.mjs +2 -1
  8. package/esm2022/boot/config/apps/src/route-close.service.mjs +11 -4
  9. package/esm2022/boot/config/apps/src/route-permissions.mjs +24 -6
  10. package/esm2022/boot/config/plugins/src/plugins.service.mjs +7 -5
  11. package/esm2022/boot/host/src/bootstrap.mjs +5 -3
  12. package/esm2022/boot/mfe/src/bootstrap.mjs +11 -3
  13. package/esm2022/http/index.mjs +1 -2
  14. package/esm2022/http/src/serviceBase.mjs +4 -4
  15. package/esm2022/http/src/serviceStateMethods.mjs +9 -1
  16. package/esm2022/keycloak/src/auth.interceptor.mjs +5 -2
  17. package/esm2022/selection/aril-selection.mjs +5 -0
  18. package/esm2022/selection/index.mjs +2 -0
  19. package/esm2022/selection/src/interfaces.mjs +2 -0
  20. package/esm2022/selection/src/selection-group.service.mjs +195 -0
  21. package/esm2022/theme/layout/app/profileSidebar/modals/edit-profile-modal/edit-profile-modal.component.mjs +2 -2
  22. package/esm2022/theme/layout/index.mjs +4 -2
  23. package/esm2022/theme/layout/service/tab-session.service.mjs +1 -1
  24. package/esm2022/ui/button/index.mjs +1 -2
  25. package/esm2022/ui/button/src/button.component.mjs +5 -2
  26. package/esm2022/ui/charts/index.mjs +1 -11
  27. package/esm2022/ui/lib/index.mjs +1 -4
  28. package/esm2022/ui/lib/src/form/form-error-message.directive.mjs +9 -5
  29. package/esm2022/ui/multiSelect/src/multi-select.component.mjs +25 -25
  30. package/esm2022/ui/relativeDateSelector/src/relative-date-selector.component.mjs +2 -2
  31. package/esm2022/ui/selectBox/src/select-box.component.mjs +11 -34
  32. package/esm2022/ui/table/src/table.component.mjs +10 -5
  33. package/esm2022/ui/value/src/value.component.mjs +3 -2
  34. package/esm2022/ui-business/enumPicker/src/enum-picker.component.mjs +14 -6
  35. package/esm2022/util/activity/aril-util-activity.mjs +5 -0
  36. package/esm2022/util/activity/index.mjs +4 -0
  37. package/esm2022/util/activity/src/activity.constants.mjs +4 -0
  38. package/esm2022/util/activity/src/activity.service.mjs +218 -0
  39. package/esm2022/util/activity/src/activity.types.mjs +2 -0
  40. package/esm2022/util/block/src/block.mjs +9 -25
  41. package/esm2022/util/pub-sub/src/pub-sub.service.mjs +10 -5
  42. package/fesm2022/{aril-app.component-s14ruALV.mjs → aril-app.component-MjG_tPEe.mjs} +2 -1
  43. package/fesm2022/{aril-app.component-s14ruALV.mjs.map → aril-app.component-MjG_tPEe.mjs.map} +1 -1
  44. package/fesm2022/aril-boot-config-api.mjs +2 -1
  45. package/fesm2022/aril-boot-config-api.mjs.map +1 -1
  46. package/fesm2022/aril-boot-config-apps.mjs +36 -12
  47. package/fesm2022/aril-boot-config-apps.mjs.map +1 -1
  48. package/fesm2022/aril-boot-config-plugins.mjs +6 -4
  49. package/fesm2022/aril-boot-config-plugins.mjs.map +1 -1
  50. package/fesm2022/aril-boot-host.mjs +4 -2
  51. package/fesm2022/aril-boot-host.mjs.map +1 -1
  52. package/fesm2022/{aril-boot-mfe-app.component-oxzMhRXe.mjs → aril-boot-mfe-app.component-DtspQ3J8.mjs} +3 -2
  53. package/fesm2022/{aril-boot-mfe-app.component-oxzMhRXe.mjs.map → aril-boot-mfe-app.component-DtspQ3J8.mjs.map} +1 -1
  54. package/fesm2022/{aril-boot-mfe-aril-boot-mfe-CKOM61xb.mjs → aril-boot-mfe-aril-boot-mfe-lovoFcgw.mjs} +12 -4
  55. package/fesm2022/aril-boot-mfe-aril-boot-mfe-lovoFcgw.mjs.map +1 -0
  56. package/fesm2022/aril-boot-mfe.mjs +2 -1
  57. package/fesm2022/aril-boot-mfe.mjs.map +1 -1
  58. package/fesm2022/aril-http.mjs +11 -7
  59. package/fesm2022/aril-http.mjs.map +1 -1
  60. package/fesm2022/aril-keycloak.mjs +4 -1
  61. package/fesm2022/aril-keycloak.mjs.map +1 -1
  62. package/fesm2022/aril-selection.mjs +202 -0
  63. package/fesm2022/aril-selection.mjs.map +1 -0
  64. package/fesm2022/aril-theme-layout.mjs +4 -193
  65. package/fesm2022/aril-theme-layout.mjs.map +1 -1
  66. package/fesm2022/aril-ui-business-enumPicker.mjs +14 -6
  67. package/fesm2022/aril-ui-business-enumPicker.mjs.map +1 -1
  68. package/fesm2022/aril-ui-button.mjs +5 -17
  69. package/fesm2022/aril-ui-button.mjs.map +1 -1
  70. package/fesm2022/aril-ui-charts.mjs +4 -1302
  71. package/fesm2022/aril-ui-charts.mjs.map +1 -1
  72. package/fesm2022/aril-ui-lib.mjs +10 -98
  73. package/fesm2022/aril-ui-lib.mjs.map +1 -1
  74. package/fesm2022/aril-ui-multiSelect.mjs +24 -24
  75. package/fesm2022/aril-ui-multiSelect.mjs.map +1 -1
  76. package/fesm2022/aril-ui-relativeDateSelector.mjs +1 -1
  77. package/fesm2022/aril-ui-relativeDateSelector.mjs.map +1 -1
  78. package/fesm2022/aril-ui-selectBox.mjs +10 -33
  79. package/fesm2022/aril-ui-selectBox.mjs.map +1 -1
  80. package/fesm2022/aril-ui-table.mjs +9 -4
  81. package/fesm2022/aril-ui-table.mjs.map +1 -1
  82. package/fesm2022/aril-ui-value.mjs +2 -1
  83. package/fesm2022/aril-ui-value.mjs.map +1 -1
  84. package/fesm2022/aril-util-activity.mjs +228 -0
  85. package/fesm2022/aril-util-activity.mjs.map +1 -0
  86. package/fesm2022/aril-util-block.mjs +9 -25
  87. package/fesm2022/aril-util-block.mjs.map +1 -1
  88. package/fesm2022/aril-util-pub-sub.mjs +9 -4
  89. package/fesm2022/aril-util-pub-sub.mjs.map +1 -1
  90. package/fesm2022/aril.mjs +14 -5
  91. package/fesm2022/aril.mjs.map +1 -1
  92. package/http/index.d.ts +0 -1
  93. package/http/src/serviceStateMethods.d.ts +1 -0
  94. package/package.json +184 -208
  95. package/scripts/mf-shared.js +47 -47
  96. package/selection/index.d.ts +1 -0
  97. package/selection/src/interfaces.d.ts +8 -0
  98. package/{theme/layout/service → selection/src}/selection-group.service.d.ts +1 -1
  99. package/theme/layout/index.d.ts +1 -1
  100. package/theme/layout/index.ts +3 -1
  101. package/theme/layout/service/tab-session.service.ts +138 -138
  102. package/ui/button/index.d.ts +0 -1
  103. package/ui/button/src/button.component.d.ts +2 -0
  104. package/ui/charts/index.d.ts +0 -10
  105. package/ui/lib/index.d.ts +0 -3
  106. package/ui/lib/src/form/form-error-message.directive.d.ts +4 -3
  107. package/ui/multiSelect/src/multi-select.component.d.ts +4 -5
  108. package/ui/selectBox/src/select-box.component.d.ts +2 -7
  109. package/ui/table/src/table.component.d.ts +3 -2
  110. package/util/activity/index.d.ts +3 -0
  111. package/util/activity/src/activity.constants.d.ts +3 -0
  112. package/util/activity/src/activity.service.d.ts +35 -0
  113. package/util/activity/src/activity.types.d.ts +13 -0
  114. package/util/block/src/block.d.ts +4 -10
  115. package/util/pub-sub/src/pub-sub.service.d.ts +2 -2
  116. package/esm2022/http/src/serviceMockBase.mjs +0 -4
  117. package/esm2022/theme/layout/service/selection-group.service.mjs +0 -195
  118. package/esm2022/ui/button/src/split-button.component.mjs +0 -18
  119. package/esm2022/ui/charts/src/amCharts/column/column-chart.component.mjs +0 -124
  120. package/esm2022/ui/charts/src/amCharts/line/line-chart.component.mjs +0 -164
  121. package/esm2022/ui/charts/src/amCharts/pie/pie-chart.component.mjs +0 -116
  122. package/esm2022/ui/charts/src/highCharts/area/area-chart.component.mjs +0 -114
  123. package/esm2022/ui/charts/src/highCharts/bar/bar-chart.component.mjs +0 -100
  124. package/esm2022/ui/charts/src/highCharts/column/column-chart.component.mjs +0 -117
  125. package/esm2022/ui/charts/src/highCharts/heatmap/heatMap-chart.component.mjs +0 -252
  126. package/esm2022/ui/charts/src/highCharts/line/line-chart-series.component.mjs +0 -89
  127. package/esm2022/ui/charts/src/highCharts/line/line-chart.component.mjs +0 -82
  128. package/esm2022/ui/charts/src/highCharts/pie/pie-chart.component.mjs +0 -137
  129. package/esm2022/ui/charts/src/theme/theme.mjs +0 -54
  130. package/esm2022/ui/dxEditor/aril-ui-dxEditor.mjs +0 -5
  131. package/esm2022/ui/dxEditor/index.mjs +0 -2
  132. package/esm2022/ui/dxEditor/src/dx-editor.component.mjs +0 -26
  133. package/esm2022/ui/lib/src/form/form-field-builder.mjs +0 -23
  134. package/esm2022/ui/lib/src/input/common-input-validators.service.mjs +0 -49
  135. package/esm2022/ui/lib/src/input/input-disabled.directive.mjs +0 -25
  136. package/esm2022/ui/overlayPanel/aril-ui-overlayPanel.mjs +0 -5
  137. package/esm2022/ui/overlayPanel/index.mjs +0 -2
  138. package/esm2022/ui/overlayPanel/src/overlay-panel.component.mjs +0 -20
  139. package/esm2022/ui/tooltip/aril-ui-tooltip.mjs +0 -5
  140. package/esm2022/ui/tooltip/index.mjs +0 -2
  141. package/esm2022/ui/tooltip/src/tooltip-component.mjs +0 -23
  142. package/esm2022/ui/treeTable/aril-ui-treeTable.mjs +0 -5
  143. package/esm2022/ui/treeTable/index.mjs +0 -2
  144. package/esm2022/ui/treeTable/src/tree-table.component.mjs +0 -55
  145. package/esm2022/ui-business/operation-types-dialog/aril-ui-business-operation-types-dialog.mjs +0 -5
  146. package/esm2022/ui-business/operation-types-dialog/index.mjs +0 -2
  147. package/esm2022/ui-business/operation-types-dialog/src/operation-types-dialog.component.mjs +0 -76
  148. package/esm2022/util/unwrap/aril-util-unwrap.mjs +0 -5
  149. package/esm2022/util/unwrap/index.mjs +0 -2
  150. package/esm2022/util/unwrap/src/unwrap-tag.directive.mjs +0 -24
  151. package/fesm2022/aril-boot-mfe-aril-boot-mfe-CKOM61xb.mjs.map +0 -1
  152. package/fesm2022/aril-ui-business-operation-types-dialog.mjs +0 -83
  153. package/fesm2022/aril-ui-business-operation-types-dialog.mjs.map +0 -1
  154. package/fesm2022/aril-ui-dxEditor.mjs +0 -33
  155. package/fesm2022/aril-ui-dxEditor.mjs.map +0 -1
  156. package/fesm2022/aril-ui-overlayPanel.mjs +0 -27
  157. package/fesm2022/aril-ui-overlayPanel.mjs.map +0 -1
  158. package/fesm2022/aril-ui-tooltip.mjs +0 -30
  159. package/fesm2022/aril-ui-tooltip.mjs.map +0 -1
  160. package/fesm2022/aril-ui-treeTable.mjs +0 -62
  161. package/fesm2022/aril-ui-treeTable.mjs.map +0 -1
  162. package/fesm2022/aril-util-unwrap.mjs +0 -31
  163. package/fesm2022/aril-util-unwrap.mjs.map +0 -1
  164. package/http/src/serviceMockBase.d.ts +0 -6
  165. package/theme/layout/service/selection-group.service.ts +0 -209
  166. package/ui/button/src/split-button.component.d.ts +0 -8
  167. package/ui/charts/src/amCharts/column/column-chart.component.d.ts +0 -25
  168. package/ui/charts/src/amCharts/line/line-chart.component.d.ts +0 -26
  169. package/ui/charts/src/amCharts/pie/pie-chart.component.d.ts +0 -24
  170. package/ui/charts/src/highCharts/area/area-chart.component.d.ts +0 -20
  171. package/ui/charts/src/highCharts/bar/bar-chart.component.d.ts +0 -26
  172. package/ui/charts/src/highCharts/column/column-chart.component.d.ts +0 -28
  173. package/ui/charts/src/highCharts/heatmap/heatMap-chart.component.d.ts +0 -32
  174. package/ui/charts/src/highCharts/line/line-chart-series.component.d.ts +0 -21
  175. package/ui/charts/src/highCharts/line/line-chart.component.d.ts +0 -21
  176. package/ui/charts/src/highCharts/pie/pie-chart.component.d.ts +0 -27
  177. package/ui/charts/src/theme/theme.d.ts +0 -5
  178. package/ui/dxEditor/index.d.ts +0 -1
  179. package/ui/dxEditor/src/dx-editor.component.d.ts +0 -11
  180. package/ui/lib/src/form/form-field-builder.d.ts +0 -8
  181. package/ui/lib/src/input/common-input-validators.service.d.ts +0 -20
  182. package/ui/lib/src/input/input-disabled.directive.d.ts +0 -9
  183. package/ui/overlayPanel/index.d.ts +0 -1
  184. package/ui/overlayPanel/src/overlay-panel.component.d.ts +0 -8
  185. package/ui/tooltip/index.d.ts +0 -1
  186. package/ui/tooltip/src/tooltip-component.d.ts +0 -14
  187. package/ui/treeTable/index.d.ts +0 -1
  188. package/ui/treeTable/src/tree-table.component.d.ts +0 -21
  189. package/ui-business/operation-types-dialog/index.d.ts +0 -1
  190. package/ui-business/operation-types-dialog/src/operation-types-dialog.component.d.ts +0 -28
  191. package/util/unwrap/index.d.ts +0 -1
  192. package/util/unwrap/src/unwrap-tag.directive.d.ts +0 -9
@@ -1 +1 @@
1
- {"version":3,"file":"aril-http.mjs","sources":["../../projects/aril/http/lib/enums.ts","../../projects/aril/http/lib/interfaces.ts","../../projects/aril/http/src/httpBackend.ts","../../projects/aril/http/src/httpClient.ts","../../projects/aril/http/src/serviceRequest.ts","../../projects/aril/http/src/serviceStateMethods.ts","../../projects/aril/http/src/serviceBase.ts","../../projects/aril/http/src/serviceMockBase.ts","../../projects/aril/http/src/interceptor/accept-language.interceptor.ts","../../projects/aril/http/index.ts","../../projects/aril/http/aril-http.ts"],"sourcesContent":["export enum HTTPMethods {\r\n\tGET = 'GET',\r\n\tGETBYPARAMS = 'GETBYPARAMS',\r\n\tGETBYDYNAMICPATH = 'GETBYDYNAMICPATH',\r\n\tGETBYPARAMSANDDYNAMICPATH = 'GETBYPARAMSANDDYNAMICPATH',\r\n\tPOST = 'POST',\r\n\tPOSTBYPARAMS = 'POSTBYPARAMS',\r\n\tPOSTBYDYNAMICPATH = 'POSTBYDYNAMICPATH',\r\n\tPUT = 'PUT',\r\n\tPUTBYPARAMS = 'PUTBYPARAMS',\r\n\tPUTBYDYNAMICPATH = 'PUTBYDYNAMICPATH',\r\n\tDELETE = 'DELETE',\r\n\tDELETEBYPARAMS = 'DELETEBYPARAMS',\r\n\tDELETEBYDYNAMICPATH = 'DELETEBYDYNAMICPATH'\r\n}\r\nexport enum ProxyTypes {\r\n\tNative,\r\n\tServerSide,\r\n\tClientSide\r\n}\r\nexport enum HTTPStatusCodes {\r\n\tOK = 200,\r\n\tCREATED = 201,\r\n\tACCEPTED = 202,\r\n\tNO_CONTENT = 204,\r\n\tBAD_REQUEST = 400,\r\n\tUNAUTHORIZED = 401,\r\n\tFORBIDDEN = 403,\r\n\tNOT_FOUND = 404,\r\n\tINTERNAL_SERVER_ERROR = 500\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\n/* eslint-disable @typescript-eslint/ban-types */\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\n\r\nimport { ProxyTypes } from './enums';\r\n\r\nexport interface ServiceCallStates {\r\n\tserviceCalled: boolean;\r\n\twaitingForResponse: boolean;\r\n\tresponseIsRecieved: boolean;\r\n\tserviceCallFailed: boolean;\r\n}\r\n\r\nexport type ServiceCallStateMap<T> = {\r\n\t[K in keyof T]?: T[K] extends Function ? ServiceCallStates : never;\r\n};\r\n\r\nexport class ErrorResponse {\r\n\terror: HttpErrorResponse | undefined;\r\n\r\n\tconstructor(err: HttpErrorResponse | undefined) {\r\n\t\tthis.error = err;\r\n\t}\r\n}\r\n\r\nexport class ServiceResponse<T> extends ErrorResponse {\r\n\trequest: any;\r\n\tresponse: T;\r\n\tproxy: ProxyTypes;\r\n\tstatusCode?: number;\r\n\r\n\tconstructor(request: any, response: T, proxy: ProxyTypes, statusCode?: number) {\r\n\t\tsuper(undefined);\r\n\t\tthis.request = request;\r\n\t\tthis.response = response;\r\n\t\tthis.proxy = proxy;\r\n\t\tthis.statusCode = statusCode;\r\n\t}\r\n}\r\n\r\nexport interface ErrorDetail {\r\n\tfieldName: string;\r\n\treason: string;\r\n\tdescription: string;\r\n}\r\n","import { HttpBackend, HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\n\r\n// WithoutInterceptorHttpClient\r\n@Injectable({ providedIn: 'root' })\r\nexport class HttpBackendService {\r\n\tpublic httpClient: HttpClient;\r\n\r\n\tconstructor(handler: HttpBackend) {\r\n\t\tthis.httpClient = new HttpClient(handler);\r\n\t}\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Injector, inject } from '@angular/core';\r\n\r\nimport { MessageService } from 'primeng/api';\r\n\r\nimport { TranslocoService } from '@ngneat/transloco';\r\nimport { KeycloakService } from 'keycloak-angular';\r\n\r\nimport { ServiceCallStateMap } from '../lib/interfaces';\r\n\r\nexport abstract class RestClient {\r\n\tprivate readonly httpClient = inject(HttpClient);\r\n\tprivate readonly injector = inject(Injector);\r\n\tprivate readonly messageService = inject(MessageService);\r\n\tprivate readonly translocoService = inject(TranslocoService);\r\n\tprivate readonly keycloak = inject(KeycloakService);\r\n\r\n\tabstract states: ServiceCallStateMap<any>;\r\n}\r\n","import { HttpParams } from '@angular/common/http';\r\n\r\nimport { Interfaces } from 'aril/util/lib';\r\n\r\nimport { HTTPMethods } from '../lib/enums';\r\n\r\nexport function getRequest(httpMethod: HTTPMethods, args: any[]): HttpParams | Interfaces.MapStringAny | undefined {\r\n\tif (!args.length) return undefined;\r\n\r\n\tswitch (httpMethod) {\r\n\t\tcase HTTPMethods.PUT:\r\n\t\t\treturn args[1];\r\n\t\tcase HTTPMethods.POSTBYPARAMS:\r\n\t\tcase HTTPMethods.GETBYPARAMS:\r\n\t\tcase HTTPMethods.GETBYPARAMSANDDYNAMICPATH:\r\n\t\tcase HTTPMethods.DELETEBYPARAMS:\r\n\t\t\tconst dto = httpMethod === HTTPMethods.POSTBYPARAMS ? args[0].queryParams : args[0];\r\n\t\t\tlet queryParams = new HttpParams();\r\n\r\n\t\t\tfor (const [key, value] of Object.entries(dto)) {\r\n\t\t\t\tqueryParams = queryParams.append(key, value as any);\r\n\t\t\t}\r\n\r\n\t\t\treturn queryParams;\r\n\t\tdefault:\r\n\t\t\treturn args[0];\r\n\t}\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { HttpErrorResponse, HttpStatusCode } from '@angular/common/http';\r\n\r\nimport { MessageService } from 'primeng/api';\r\n\r\nimport { TranslocoService } from '@ngneat/transloco';\r\nimport { KeycloakService } from 'keycloak-angular';\r\n\r\nimport { ErrorDetail, ServiceCallStateMap } from '../lib/interfaces';\r\n\r\nexport const callState = (states: ServiceCallStateMap<any>, serviceName: any): void => {\r\n\tstates[serviceName] = {\r\n\t\tserviceCalled: true,\r\n\t\twaitingForResponse: true,\r\n\t\tresponseIsRecieved: false,\r\n\t\tserviceCallFailed: false\r\n\t};\r\n};\r\n\r\nexport const successState = (\r\n\tstates: ServiceCallStateMap<any>,\r\n\tserviceName: any,\r\n\ttranslocoService: TranslocoService,\r\n\tmessageService: MessageService,\r\n\tmessage?: { success?: string; error?: string; ignoredStatusCodes?: HttpStatusCode[] },\r\n\tresponse?: any\r\n): void => {\r\n\tstates[serviceName] = {\r\n\t\tserviceCalled: true,\r\n\t\twaitingForResponse: false,\r\n\t\tresponseIsRecieved: true,\r\n\t\tserviceCallFailed: false\r\n\t};\r\n\r\n\tif (message?.success) {\r\n\t\tmessageService.add({\r\n\t\t\tkey: 'toast-root',\r\n\t\t\tseverity: 'success',\r\n\t\t\tsummary: getTranslatedMessage(<string>message.success, translocoService, response)\r\n\t\t});\r\n\t}\r\n};\r\n\r\nexport const errorState = async (\r\n\tstates: ServiceCallStateMap<any>,\r\n\tserviceName: any,\r\n\terror: HttpErrorResponse,\r\n\ttranslocoService: TranslocoService,\r\n\tmessageService: MessageService,\r\n\tkeycloakService: KeycloakService,\r\n\tmessage?: { success?: string; error?: string; ignoredStatusCodes?: HttpStatusCode[] }\r\n) => {\r\n\tstates[serviceName] = {\r\n\t\tserviceCalled: true,\r\n\t\twaitingForResponse: false,\r\n\t\tresponseIsRecieved: true,\r\n\t\tserviceCallFailed: true\r\n\t};\r\n\r\n\tlet httpError: string;\r\n\r\n\tswitch (error.status) {\r\n\t\tcase 400:\r\n\t\t\thttpError = 'Hatalı İstek';\r\n\t\t\tbreak;\r\n\t\tcase 401:\r\n\t\t\thttpError = 'Yetkisiz Erişim';\r\n\t\t\tawait keycloakService.login({ redirectUri: window.location.href });\r\n\t\t\tbreak;\r\n\t\tcase 403:\r\n\t\t\thttpError = 'Erişim Engellendi';\r\n\t\t\tif (keycloakService.isTokenExpired()) await keycloakService.login({ redirectUri: window.location.href });\r\n\t\t\tbreak;\r\n\t\tcase 404:\r\n\t\t\thttpError = 'Kaynak Bulunamadı';\r\n\t\t\tbreak;\r\n\t\tcase 405:\r\n\t\t\thttpError = 'İzin Verilmeyen Metod';\r\n\t\t\tbreak;\r\n\t\tcase 406:\r\n\t\t\thttpError = 'Kabul Edilemez Başlık';\r\n\t\t\tbreak;\r\n\t\tcase 408:\r\n\t\t\thttpError = 'Zaman Aşımı';\r\n\t\t\tbreak;\r\n\t\tcase 409:\r\n\t\t\thttpError = 'Çakışma';\r\n\t\t\tbreak;\r\n\t\tcase 500:\r\n\t\t\thttpError = 'Sunucu Hatası';\r\n\t\t\tbreak;\r\n\t\tcase 501:\r\n\t\t\thttpError = 'Sunucu Yapılandırma Hatası';\r\n\t\t\tbreak;\r\n\t\tcase 502:\r\n\t\t\thttpError = 'Geçersiz Ağ Geçidi';\r\n\t\t\tbreak;\r\n\t\tcase 503:\r\n\t\t\thttpError = 'Sunucu Hizmet Vermiyor';\r\n\t\t\tbreak;\r\n\t\tcase 504:\r\n\t\t\thttpError = 'Ağ Geçidi Zaman Aşımı';\r\n\t\t\tbreak;\r\n\t\tcase 505:\r\n\t\t\thttpError = 'HTTP Protokol Desteklenmiyor';\r\n\t\t\tbreak;\r\n\t\tcase 511:\r\n\t\t\thttpError = 'Ağ Kimlik Doğrulaması Gerekli';\r\n\t\t\tbreak;\r\n\t\tcase 599:\r\n\t\t\thttpError = 'Ağ Bağlantısı Zaman Aşımı';\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\thttpError = error?.error?.message;\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\tif (!httpError) return;\r\n\r\n\tif (message?.ignoredStatusCodes?.includes(error.status)) return;\r\n\r\n\tif (error.error?.details?.length && Array.isArray(error.error.details)) {\r\n\t\terror.error.details.forEach((detail: ErrorDetail) => {\r\n\t\t\tconst key = 'fields.' + detail.fieldName;\r\n\t\t\tconst translatedField = translocoService.translate(key);\r\n\t\t\tconst text = translatedField === key ? detail.fieldName : translatedField;\r\n\r\n\t\t\tconst detailText = (detail.fieldName ? text + ' - ' : '') + detail.reason;\r\n\r\n\t\t\tmessageService.add({\r\n\t\t\t\tkey: 'toast-root',\r\n\t\t\t\tseverity: 'error',\r\n\t\t\t\tsummary: error?.error?.message,\r\n\t\t\t\tdetail: detailText\r\n\t\t\t});\r\n\t\t});\r\n\t} else {\r\n\t\tmessageService.add({\r\n\t\t\tkey: 'toast-root',\r\n\t\t\tseverity: 'error',\r\n\t\t\tsummary: httpError,\r\n\t\t\tdetail: error?.error?.message\r\n\t\t});\r\n\t}\r\n\r\n\tif (message?.error) {\r\n\t\tmessageService.add({\r\n\t\t\tkey: 'toast-root',\r\n\t\t\tseverity: 'error',\r\n\t\t\tsummary: error?.error?.message || getTranslatedMessage(message.error, translocoService)\r\n\t\t});\r\n\t}\r\n};\r\n\r\nexport const warningState = (\r\n\tstates: ServiceCallStateMap<any>,\r\n\tserviceName: any,\r\n\tresponse: any,\r\n\tmessageService: MessageService\r\n): void => {\r\n\tstates[serviceName] = {\r\n\t\tserviceCalled: true,\r\n\t\twaitingForResponse: false,\r\n\t\tresponseIsRecieved: true,\r\n\t\tserviceCallFailed: true\r\n\t};\r\n\r\n\tif (response?.details && Array.isArray(response.details) && response.details.length > 0) {\r\n\t\tresponse.details.forEach((detail: ErrorDetail) => {\r\n\t\t\tmessageService.add({\r\n\t\t\t\tkey: 'toast-root',\r\n\t\t\t\tseverity: 'warn',\r\n\t\t\t\tsummary: response?.message,\r\n\t\t\t\tdetail: (detail.fieldName !== null ? detail.fieldName + ' - ' : '') + detail.reason\r\n\t\t\t});\r\n\t\t});\r\n\t} else {\r\n\t\tmessageService.add({\r\n\t\t\tkey: 'toast-root',\r\n\t\t\tseverity: 'warn',\r\n\t\t\tdetail: response?.message\r\n\t\t});\r\n\t}\r\n};\r\n\r\nconst getTranslatedMessage = (messageCode: string, translocoService: TranslocoService, response?: any): string => {\r\n\tconst translateObject = translocoService.getTranslation().get(translocoService.getActiveLang());\r\n\tlet translatedMessage = translateObject?.[messageCode] ?? messageCode;\r\n\r\n\tconst paramStartSymbol = '{{';\r\n\tconst paramEndSymbol = '}}';\r\n\r\n\tif (response && translatedMessage.includes(paramStartSymbol) && translatedMessage.includes(paramEndSymbol)) {\r\n\t\tdo {\r\n\t\t\tlet paramStartIndex = translatedMessage.indexOf(paramStartSymbol);\r\n\t\t\tlet paramEndIndex = translatedMessage.indexOf(paramEndSymbol);\r\n\t\t\tlet paramKey = translatedMessage.slice(paramStartIndex + paramStartSymbol.length, paramEndIndex);\r\n\r\n\t\t\t// Splitting the key to get nested object values\r\n\t\t\tlet paramKeyList = paramKey.split('.');\r\n\t\t\tlet paramValue;\r\n\r\n\t\t\tfor (let key of paramKeyList) {\r\n\t\t\t\tparamValue = paramValue ? paramValue[key] : response[key];\r\n\t\t\t}\r\n\r\n\t\t\tlet replacePattern = `${paramStartSymbol}${paramKey}${paramEndSymbol}`;\r\n\t\t\ttranslatedMessage = translatedMessage.replace(replacePattern, paramValue);\r\n\t\t} while (translatedMessage.includes(paramStartSymbol));\r\n\t}\r\n\r\n\treturn translatedMessage;\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { HttpClient, HttpErrorResponse, HttpParams, HttpStatusCode } from '@angular/common/http';\r\nimport { runInInjectionContext } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\nimport { Observable, of } from 'rxjs';\r\nimport { catchError, map, tap } from 'rxjs/operators';\r\n\r\nimport { API_CONFIGS } from 'aril/boot/config/api';\r\nimport { Apps } from 'aril/boot/config/apps';\r\n\r\nimport { HTTPMethods, HTTPStatusCodes, ProxyTypes } from '../lib/enums';\r\nimport { ErrorResponse, ServiceCallStateMap, ServiceResponse } from '../lib/interfaces';\r\nimport { getRequest } from './serviceRequest';\r\nimport { callState, errorState, successState, warningState } from './serviceStateMethods';\r\n\r\nexport function ServiceCall(\r\n\thttpMethod: HTTPMethods,\r\n\tproxy: ProxyTypes,\r\n\tserviceURL: string,\r\n\tmessage?: { success?: string; error?: string; ignoredStatusCodes?: HttpStatusCode[] },\r\n\tremoteAPI?: Apps,\r\n\tisMockAPI = false\r\n): MethodDecorator {\r\n\treturn function (serviceClass: object, serviceName: string | symbol, descriptor: PropertyDescriptor) {\r\n\t\t// const originalFunction = descriptor.value;\r\n\r\n\t\tdescriptor.value = function (...args: any[]) {\r\n\t\t\treturn runInInjectionContext((<any>this).injector, () => {\r\n\t\t\t\tconst httpClient: HttpClient = (<any>this).httpClient;\r\n\r\n\t\t\t\tlet api = '';\r\n\t\t\t\tif (isMockAPI) api = <string>remoteAPI;\r\n\t\t\t\telse if (remoteAPI) {\r\n\t\t\t\t\tconst url = new URL(API_CONFIGS.api);\r\n\t\t\t\t\tapi = url.origin + '/' + API_CONFIGS.prefixMap[remoteAPI];\r\n\t\t\t\t} else api = API_CONFIGS.api;\r\n\r\n\t\t\t\tconst endPoint = api + '/' + serviceURL;\r\n\t\t\t\tconst request = getRequest(httpMethod, args);\r\n\t\t\t\tconst states: ServiceCallStateMap<any> = (<any>this).states;\r\n\r\n\t\t\t\tcallState(states, serviceName);\r\n\r\n\t\t\t\tlet observable: Observable<any> = new Observable<any>();\r\n\t\t\t\tlet getDynamicServiceUrl: string;\r\n\r\n\t\t\t\tswitch (httpMethod) {\r\n\t\t\t\t\tcase HTTPMethods.GET:\r\n\t\t\t\t\t\tlet getReq = args.length ? '/' + args[0] : '';\r\n\t\t\t\t\t\tobservable = httpClient.get<any>(endPoint + getReq, {observe: 'response', responseType: 'json' });\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase HTTPMethods.GETBYPARAMS:\r\n\t\t\t\t\t\tobservable = httpClient.get<any>(endPoint, { params: request as HttpParams, observe: 'response', responseType: 'json' });\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase HTTPMethods.GETBYDYNAMICPATH:\r\n\t\t\t\t\t\tgetDynamicServiceUrl = serviceURL;\r\n\t\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\t\tgetDynamicServiceUrl = getDynamicServiceUrl.replace('$', arg);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tobservable = httpClient.get<any>(api + '/' + getDynamicServiceUrl, {observe: 'response', responseType: 'json' });\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase HTTPMethods.GETBYPARAMSANDDYNAMICPATH:\r\n\t\t\t\t\t\tlet getParams = {};\r\n\t\t\t\t\t\tlet getDynamicServiceUrlWithParams = serviceURL;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\t\tif (typeof arg === 'object') getParams = arg;\r\n\t\t\t\t\t\t\telse getDynamicServiceUrlWithParams = getDynamicServiceUrlWithParams.replace('$', arg);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tobservable = httpClient.get<any>(api + '/' + getDynamicServiceUrlWithParams, {\r\n\t\t\t\t\t\t\tparams: getParams as HttpParams,\r\n\t\t\t\t\t\t\tobserve: 'response',\r\n\t\t\t\t\t\t\tresponseType: 'json'\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase HTTPMethods.POST:\r\n\t\t\t\t\t\tobservable = httpClient.post<any>(endPoint, args[0], {observe: 'response', responseType: 'json' });\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase HTTPMethods.POSTBYPARAMS:\r\n\t\t\t\t\t\tobservable = httpClient.post<any>(endPoint, args[0].body, { params: request, observe: 'response', responseType: 'json' });\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase HTTPMethods.POSTBYDYNAMICPATH:\r\n\t\t\t\t\t\tlet body = {};\r\n\t\t\t\t\t\tlet dynamicServiceUrl = serviceURL;\r\n\r\n\t\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\t\tif (typeof arg === 'object') body = arg;\r\n\t\t\t\t\t\t\telse dynamicServiceUrl = dynamicServiceUrl.replace('$', arg);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tobservable = httpClient.post<any>(api + '/' + dynamicServiceUrl, body, { observe: 'response', responseType: 'json' });\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase HTTPMethods.PUT:\r\n\t\t\t\t\t\tobservable = httpClient.put<any>(endPoint + '/' + args[0], request, { observe: 'response', responseType: 'json' });\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase HTTPMethods.PUTBYPARAMS:\r\n\t\t\t\t\t\tobservable = httpClient.put<any>(endPoint, args[0], { observe: 'response', responseType: 'json' });\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase HTTPMethods.PUTBYDYNAMICPATH:\r\n\t\t\t\t\t\tlet putBody = {};\r\n\t\t\t\t\t\tlet putDynamicServiceUrl = serviceURL;\r\n\r\n\t\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\t\tif (typeof arg === 'object') putBody = arg;\r\n\t\t\t\t\t\t\telse putDynamicServiceUrl = putDynamicServiceUrl.replace('$', arg);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tobservable = httpClient.put<any>(api + '/' + putDynamicServiceUrl, putBody, {observe: 'response', responseType: 'json' });\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase HTTPMethods.DELETE:\r\n\t\t\t\t\t\tobservable = httpClient.delete<any>(endPoint + '/' + args[0], {observe: 'response', responseType: 'json' });\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase HTTPMethods.DELETEBYPARAMS:\r\n\t\t\t\t\t\tobservable = httpClient.delete<any>(endPoint, { params: request as HttpParams, observe: 'response', responseType: 'json' });\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase HTTPMethods.DELETEBYDYNAMICPATH:\r\n\t\t\t\t\t\tlet deleteParams = {};\r\n\t\t\t\t\t\tlet deleteDynamicServiceUrl = serviceURL;\r\n\r\n\t\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\t\tif (typeof arg === 'object') deleteParams = arg;\r\n\t\t\t\t\t\t\telse deleteDynamicServiceUrl = deleteDynamicServiceUrl.replace('$', arg);\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tobservable = httpClient.delete<any>(api + '/' + deleteDynamicServiceUrl, {\r\n\t\t\t\t\t\t\tparams: deleteParams,\r\n\t\t\t\t\t\t\tobserve: 'response',\r\n\t\t\t\t\t\t\tresponseType: 'json'\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tobservable = observable.pipe(\r\n\t\t\t\t\tmap((response) => new ServiceResponse(request, response?.body, proxy, response?.status)),\r\n\t\t\t\t\ttap((serviceRes) => {\r\n\t\t\t\t\t\tif (serviceRes?.statusCode === HTTPStatusCodes.NO_CONTENT) {\r\n\t\t\t\t\t\t\t(<any>this).messageService.add({\r\n\t\t\t\t\t\t\t\tkey: 'toast-root',\r\n\t\t\t\t\t\t\t\tseverity: 'success',\r\n\t\t\t\t\t\t\t\tsummary: (<any>this).translocoService.translate('messages.successMessageHeader'),\r\n\t\t\t\t\t\t\t\tdetail: (<any>this).translocoService.translate('messages.successMessage')\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else if (serviceRes.response.type === 'ValidationWarningException') {\r\n\t\t\t\t\t\t\twarningState(states, serviceName, serviceRes.response, (<any>this).messageService);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tsuccessState(\r\n\t\t\t\t\t\t\t\tstates,\r\n\t\t\t\t\t\t\t\tserviceName,\r\n\t\t\t\t\t\t\t\t(<any>this).translocoService,\r\n\t\t\t\t\t\t\t\t(<any>this).messageService,\r\n\t\t\t\t\t\t\t\tmessage,\r\n\t\t\t\t\t\t\t\tserviceRes\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tcatchError((error: HttpErrorResponse) => {\r\n\t\t\t\t\t\terrorState(\r\n\t\t\t\t\t\t\tstates,\r\n\t\t\t\t\t\t\tserviceName,\r\n\t\t\t\t\t\t\terror,\r\n\t\t\t\t\t\t\t(<any>this).translocoService,\r\n\t\t\t\t\t\t\t(<any>this).messageService,\r\n\t\t\t\t\t\t\t(<any>this).keycloak,\r\n\t\t\t\t\t\t\tmessage\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\treturn of(new ErrorResponse(error));\r\n\t\t\t\t\t}),\r\n\t\t\t\t\ttakeUntilDestroyed()\r\n\t\t\t\t);\r\n\r\n\t\t\t\treturn observable;\r\n\t\t\t});\r\n\t\t};\r\n\t};\r\n}\r\n","import { HTTPMethods, ProxyTypes } from '../lib/enums';\r\nimport { ServiceCall } from './serviceBase';\r\n\r\nexport function ServiceCallMock(\r\n\thttpMethod: HTTPMethods,\r\n\tproxy: ProxyTypes,\r\n\tserviceURL: string,\r\n\tmockAPI: string,\r\n\tmessage?: { success?: string; error?: string; useDefault: boolean }\r\n) {\r\n\t// return ServiceCall(httpMethod, proxy, serviceURL, message, mockAPI, true);\r\n}\r\n","import { HttpHandlerFn, HttpInterceptorFn, HttpRequest } from '@angular/common/http';\r\nimport { inject } from '@angular/core';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\n\r\nconst DEFAULT_LANGUAGE = 'tr' as const;\r\nconst STORAGE_KEY = 'lang' as const;\r\n\r\nconst resolveLanguage = (translocoService: TranslocoService | null): string => {\r\n return (\r\n translocoService?.getActiveLang?.() ||\r\n localStorage.getItem(STORAGE_KEY) ||\r\n translocoService?.getDefaultLang?.() ||\r\n DEFAULT_LANGUAGE\r\n );\r\n};\r\n\r\nexport const acceptLanguageInterceptor: HttpInterceptorFn = (\r\n req: HttpRequest<unknown>,\r\n next: HttpHandlerFn\r\n) => {\r\n const translocoService = inject(TranslocoService, { optional: true }) ?? null;\r\n const language = resolveLanguage(translocoService);\r\n\r\n const updatedReq = req.clone({\r\n setHeaders: {\r\n 'Accept-Language': language\r\n }\r\n });\r\n\r\n return next(updatedReq);\r\n};\r\n\r\n","/* lib */\r\nexport * from './lib/enums';\r\nexport * from './lib/interfaces';\r\n\r\n/* src */\r\nexport * from './src/httpBackend';\r\nexport * from './src/httpClient';\r\nexport * from './src/serviceBase';\r\nexport * from './src/serviceMockBase';\r\nexport * from './src/serviceStateMethods';\r\n\r\n/* interceptor */\r\nexport * from './src/interceptor/accept-language.interceptor';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aril-http.mjs","sources":["../../projects/aril/http/lib/enums.ts","../../projects/aril/http/lib/interfaces.ts","../../projects/aril/http/src/httpBackend.ts","../../projects/aril/http/src/httpClient.ts","../../projects/aril/http/src/serviceRequest.ts","../../projects/aril/http/src/serviceStateMethods.ts","../../projects/aril/http/src/serviceBase.ts","../../projects/aril/http/src/interceptor/accept-language.interceptor.ts","../../projects/aril/http/index.ts","../../projects/aril/http/aril-http.ts"],"sourcesContent":["export enum HTTPMethods {\r\n\tGET = 'GET',\r\n\tGETBYPARAMS = 'GETBYPARAMS',\r\n\tGETBYDYNAMICPATH = 'GETBYDYNAMICPATH',\r\n\tGETBYPARAMSANDDYNAMICPATH = 'GETBYPARAMSANDDYNAMICPATH',\r\n\tPOST = 'POST',\r\n\tPOSTBYPARAMS = 'POSTBYPARAMS',\r\n\tPOSTBYDYNAMICPATH = 'POSTBYDYNAMICPATH',\r\n\tPUT = 'PUT',\r\n\tPUTBYPARAMS = 'PUTBYPARAMS',\r\n\tPUTBYDYNAMICPATH = 'PUTBYDYNAMICPATH',\r\n\tDELETE = 'DELETE',\r\n\tDELETEBYPARAMS = 'DELETEBYPARAMS',\r\n\tDELETEBYDYNAMICPATH = 'DELETEBYDYNAMICPATH'\r\n}\r\nexport enum ProxyTypes {\r\n\tNative,\r\n\tServerSide,\r\n\tClientSide\r\n}\r\nexport enum HTTPStatusCodes {\r\n\tOK = 200,\r\n\tCREATED = 201,\r\n\tACCEPTED = 202,\r\n\tNO_CONTENT = 204,\r\n\tBAD_REQUEST = 400,\r\n\tUNAUTHORIZED = 401,\r\n\tFORBIDDEN = 403,\r\n\tNOT_FOUND = 404,\r\n\tINTERNAL_SERVER_ERROR = 500\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\n/* eslint-disable @typescript-eslint/ban-types */\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\n\r\nimport { ProxyTypes } from './enums';\r\n\r\nexport interface ServiceCallStates {\r\n\tserviceCalled: boolean;\r\n\twaitingForResponse: boolean;\r\n\tresponseIsRecieved: boolean;\r\n\tserviceCallFailed: boolean;\r\n}\r\n\r\nexport type ServiceCallStateMap<T> = {\r\n\t[K in keyof T]?: T[K] extends Function ? ServiceCallStates : never;\r\n};\r\n\r\nexport class ErrorResponse {\r\n\terror: HttpErrorResponse | undefined;\r\n\r\n\tconstructor(err: HttpErrorResponse | undefined) {\r\n\t\tthis.error = err;\r\n\t}\r\n}\r\n\r\nexport class ServiceResponse<T> extends ErrorResponse {\r\n\trequest: any;\r\n\tresponse: T;\r\n\tproxy: ProxyTypes;\r\n\tstatusCode?: number;\r\n\r\n\tconstructor(request: any, response: T, proxy: ProxyTypes, statusCode?: number) {\r\n\t\tsuper(undefined);\r\n\t\tthis.request = request;\r\n\t\tthis.response = response;\r\n\t\tthis.proxy = proxy;\r\n\t\tthis.statusCode = statusCode;\r\n\t}\r\n}\r\n\r\nexport interface ErrorDetail {\r\n\tfieldName: string;\r\n\treason: string;\r\n\tdescription: string;\r\n}\r\n","import { HttpBackend, HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\n\r\n// WithoutInterceptorHttpClient\r\n@Injectable({ providedIn: 'root' })\r\nexport class HttpBackendService {\r\n\tpublic httpClient: HttpClient;\r\n\r\n\tconstructor(handler: HttpBackend) {\r\n\t\tthis.httpClient = new HttpClient(handler);\r\n\t}\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Injector, inject } from '@angular/core';\r\n\r\nimport { MessageService } from 'primeng/api';\r\n\r\nimport { TranslocoService } from '@ngneat/transloco';\r\nimport { KeycloakService } from 'keycloak-angular';\r\n\r\nimport { ServiceCallStateMap } from '../lib/interfaces';\r\n\r\nexport abstract class RestClient {\r\n\tprivate readonly httpClient = inject(HttpClient);\r\n\tprivate readonly injector = inject(Injector);\r\n\tprivate readonly messageService = inject(MessageService);\r\n\tprivate readonly translocoService = inject(TranslocoService);\r\n\tprivate readonly keycloak = inject(KeycloakService);\r\n\r\n\tabstract states: ServiceCallStateMap<any>;\r\n}\r\n","import { HttpParams } from '@angular/common/http';\r\n\r\nimport { Interfaces } from 'aril/util/lib';\r\n\r\nimport { HTTPMethods } from '../lib/enums';\r\n\r\nexport function getRequest(httpMethod: HTTPMethods, args: any[]): HttpParams | Interfaces.MapStringAny | undefined {\r\n\tif (!args.length) return undefined;\r\n\r\n\tswitch (httpMethod) {\r\n\t\tcase HTTPMethods.PUT:\r\n\t\t\treturn args[1];\r\n\t\tcase HTTPMethods.POSTBYPARAMS:\r\n\t\tcase HTTPMethods.GETBYPARAMS:\r\n\t\tcase HTTPMethods.GETBYPARAMSANDDYNAMICPATH:\r\n\t\tcase HTTPMethods.DELETEBYPARAMS:\r\n\t\t\tconst dto = httpMethod === HTTPMethods.POSTBYPARAMS ? args[0].queryParams : args[0];\r\n\t\t\tlet queryParams = new HttpParams();\r\n\r\n\t\t\tfor (const [key, value] of Object.entries(dto)) {\r\n\t\t\t\tqueryParams = queryParams.append(key, value as any);\r\n\t\t\t}\r\n\r\n\t\t\treturn queryParams;\r\n\t\tdefault:\r\n\t\t\treturn args[0];\r\n\t}\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { HttpErrorResponse, HttpStatusCode } from '@angular/common/http';\r\n\r\nimport { MessageService } from 'primeng/api';\r\n\r\nimport { TranslocoService } from '@ngneat/transloco';\r\nimport { KeycloakService } from 'keycloak-angular';\r\n\r\nimport { ErrorDetail, ServiceCallStateMap } from '../lib/interfaces';\r\n\r\nexport const callState = (states: ServiceCallStateMap<any>, serviceName: any): void => {\r\n\tstates[serviceName] = {\r\n\t\tserviceCalled: true,\r\n\t\twaitingForResponse: true,\r\n\t\tresponseIsRecieved: false,\r\n\t\tserviceCallFailed: false\r\n\t};\r\n};\r\n\r\n// İstek iptal/teardown olduğunda (finalize) waitingForResponse'u temizler. Normal akış\r\n// (success/warning/error) state'i zaten güncellediyse no-op — yalnızca takılı kalan true'yu düşürür.\r\nexport const clearWaitingState = (states: ServiceCallStateMap<any>, serviceName: any): void => {\r\n\tconst current = states[serviceName];\r\n\tif (current?.waitingForResponse) {\r\n\t\tstates[serviceName] = { ...current, waitingForResponse: false };\r\n\t}\r\n};\r\n\r\nexport const successState = (\r\n\tstates: ServiceCallStateMap<any>,\r\n\tserviceName: any,\r\n\ttranslocoService: TranslocoService,\r\n\tmessageService: MessageService,\r\n\tmessage?: { success?: string; error?: string; ignoredStatusCodes?: HttpStatusCode[] },\r\n\tresponse?: any\r\n): void => {\r\n\tstates[serviceName] = {\r\n\t\tserviceCalled: true,\r\n\t\twaitingForResponse: false,\r\n\t\tresponseIsRecieved: true,\r\n\t\tserviceCallFailed: false\r\n\t};\r\n\r\n\tif (message?.success) {\r\n\t\tmessageService.add({\r\n\t\t\tkey: 'toast-root',\r\n\t\t\tseverity: 'success',\r\n\t\t\tsummary: getTranslatedMessage(<string>message.success, translocoService, response)\r\n\t\t});\r\n\t}\r\n};\r\n\r\nexport const errorState = async (\r\n\tstates: ServiceCallStateMap<any>,\r\n\tserviceName: any,\r\n\terror: HttpErrorResponse,\r\n\ttranslocoService: TranslocoService,\r\n\tmessageService: MessageService,\r\n\tkeycloakService: KeycloakService,\r\n\tmessage?: { success?: string; error?: string; ignoredStatusCodes?: HttpStatusCode[] }\r\n) => {\r\n\tstates[serviceName] = {\r\n\t\tserviceCalled: true,\r\n\t\twaitingForResponse: false,\r\n\t\tresponseIsRecieved: true,\r\n\t\tserviceCallFailed: true\r\n\t};\r\n\r\n\tlet httpError: string;\r\n\r\n\tswitch (error.status) {\r\n\t\tcase 400:\r\n\t\t\thttpError = 'Hatalı İstek';\r\n\t\t\tbreak;\r\n\t\tcase 401:\r\n\t\t\thttpError = 'Yetkisiz Erişim';\r\n\t\t\tawait keycloakService.login({ redirectUri: window.location.href });\r\n\t\t\tbreak;\r\n\t\tcase 403:\r\n\t\t\thttpError = 'Erişim Engellendi';\r\n\t\t\tif (keycloakService.isTokenExpired()) await keycloakService.login({ redirectUri: window.location.href });\r\n\t\t\tbreak;\r\n\t\tcase 404:\r\n\t\t\thttpError = 'Kaynak Bulunamadı';\r\n\t\t\tbreak;\r\n\t\tcase 405:\r\n\t\t\thttpError = 'İzin Verilmeyen Metod';\r\n\t\t\tbreak;\r\n\t\tcase 406:\r\n\t\t\thttpError = 'Kabul Edilemez Başlık';\r\n\t\t\tbreak;\r\n\t\tcase 408:\r\n\t\t\thttpError = 'Zaman Aşımı';\r\n\t\t\tbreak;\r\n\t\tcase 409:\r\n\t\t\thttpError = 'Çakışma';\r\n\t\t\tbreak;\r\n\t\tcase 500:\r\n\t\t\thttpError = 'Sunucu Hatası';\r\n\t\t\tbreak;\r\n\t\tcase 501:\r\n\t\t\thttpError = 'Sunucu Yapılandırma Hatası';\r\n\t\t\tbreak;\r\n\t\tcase 502:\r\n\t\t\thttpError = 'Geçersiz Ağ Geçidi';\r\n\t\t\tbreak;\r\n\t\tcase 503:\r\n\t\t\thttpError = 'Sunucu Hizmet Vermiyor';\r\n\t\t\tbreak;\r\n\t\tcase 504:\r\n\t\t\thttpError = 'Ağ Geçidi Zaman Aşımı';\r\n\t\t\tbreak;\r\n\t\tcase 505:\r\n\t\t\thttpError = 'HTTP Protokol Desteklenmiyor';\r\n\t\t\tbreak;\r\n\t\tcase 511:\r\n\t\t\thttpError = 'Ağ Kimlik Doğrulaması Gerekli';\r\n\t\t\tbreak;\r\n\t\tcase 599:\r\n\t\t\thttpError = 'Ağ Bağlantısı Zaman Aşımı';\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\thttpError = error?.error?.message;\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\tif (!httpError) return;\r\n\r\n\tif (message?.ignoredStatusCodes?.includes(error.status)) return;\r\n\r\n\tif (error.error?.details?.length && Array.isArray(error.error.details)) {\r\n\t\terror.error.details.forEach((detail: ErrorDetail) => {\r\n\t\t\tconst key = 'fields.' + detail.fieldName;\r\n\t\t\tconst translatedField = translocoService.translate(key);\r\n\t\t\tconst text = translatedField === key ? detail.fieldName : translatedField;\r\n\r\n\t\t\tconst detailText = (detail.fieldName ? text + ' - ' : '') + detail.reason;\r\n\r\n\t\t\tmessageService.add({\r\n\t\t\t\tkey: 'toast-root',\r\n\t\t\t\tseverity: 'error',\r\n\t\t\t\tsummary: error?.error?.message,\r\n\t\t\t\tdetail: detailText\r\n\t\t\t});\r\n\t\t});\r\n\t} else {\r\n\t\tmessageService.add({\r\n\t\t\tkey: 'toast-root',\r\n\t\t\tseverity: 'error',\r\n\t\t\tsummary: httpError,\r\n\t\t\tdetail: error?.error?.message\r\n\t\t});\r\n\t}\r\n\r\n\tif (message?.error) {\r\n\t\tmessageService.add({\r\n\t\t\tkey: 'toast-root',\r\n\t\t\tseverity: 'error',\r\n\t\t\tsummary: error?.error?.message || getTranslatedMessage(message.error, translocoService)\r\n\t\t});\r\n\t}\r\n};\r\n\r\nexport const warningState = (\r\n\tstates: ServiceCallStateMap<any>,\r\n\tserviceName: any,\r\n\tresponse: any,\r\n\tmessageService: MessageService\r\n): void => {\r\n\tstates[serviceName] = {\r\n\t\tserviceCalled: true,\r\n\t\twaitingForResponse: false,\r\n\t\tresponseIsRecieved: true,\r\n\t\tserviceCallFailed: true\r\n\t};\r\n\r\n\tif (response?.details && Array.isArray(response.details) && response.details.length > 0) {\r\n\t\tresponse.details.forEach((detail: ErrorDetail) => {\r\n\t\t\tmessageService.add({\r\n\t\t\t\tkey: 'toast-root',\r\n\t\t\t\tseverity: 'warn',\r\n\t\t\t\tsummary: response?.message,\r\n\t\t\t\tdetail: (detail.fieldName !== null ? detail.fieldName + ' - ' : '') + detail.reason\r\n\t\t\t});\r\n\t\t});\r\n\t} else {\r\n\t\tmessageService.add({\r\n\t\t\tkey: 'toast-root',\r\n\t\t\tseverity: 'warn',\r\n\t\t\tdetail: response?.message\r\n\t\t});\r\n\t}\r\n};\r\n\r\nconst getTranslatedMessage = (messageCode: string, translocoService: TranslocoService, response?: any): string => {\r\n\tconst translateObject = translocoService.getTranslation().get(translocoService.getActiveLang());\r\n\tlet translatedMessage = translateObject?.[messageCode] ?? messageCode;\r\n\r\n\tconst paramStartSymbol = '{{';\r\n\tconst paramEndSymbol = '}}';\r\n\r\n\tif (response && translatedMessage.includes(paramStartSymbol) && translatedMessage.includes(paramEndSymbol)) {\r\n\t\tdo {\r\n\t\t\tlet paramStartIndex = translatedMessage.indexOf(paramStartSymbol);\r\n\t\t\tlet paramEndIndex = translatedMessage.indexOf(paramEndSymbol);\r\n\t\t\tlet paramKey = translatedMessage.slice(paramStartIndex + paramStartSymbol.length, paramEndIndex);\r\n\r\n\t\t\t// Splitting the key to get nested object values\r\n\t\t\tlet paramKeyList = paramKey.split('.');\r\n\t\t\tlet paramValue;\r\n\r\n\t\t\tfor (let key of paramKeyList) {\r\n\t\t\t\tparamValue = paramValue ? paramValue[key] : response[key];\r\n\t\t\t}\r\n\r\n\t\t\tlet replacePattern = `${paramStartSymbol}${paramKey}${paramEndSymbol}`;\r\n\t\t\ttranslatedMessage = translatedMessage.replace(replacePattern, paramValue);\r\n\t\t} while (translatedMessage.includes(paramStartSymbol));\r\n\t}\r\n\r\n\treturn translatedMessage;\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { HttpClient, HttpErrorResponse, HttpParams, HttpStatusCode } from '@angular/common/http';\r\nimport { runInInjectionContext } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\nimport { Observable, of } from 'rxjs';\r\nimport { catchError, finalize, map, tap } from 'rxjs/operators';\r\n\r\nimport { API_CONFIGS } from 'aril/boot/config/api';\r\nimport { Apps } from 'aril/boot/config/apps';\r\n\r\nimport { HTTPMethods, HTTPStatusCodes, ProxyTypes } from '../lib/enums';\r\nimport { ErrorResponse, ServiceCallStateMap, ServiceResponse } from '../lib/interfaces';\r\nimport { getRequest } from './serviceRequest';\r\nimport { callState, clearWaitingState, errorState, successState, warningState } from './serviceStateMethods';\r\n\r\nexport function ServiceCall(\r\n\thttpMethod: HTTPMethods,\r\n\tproxy: ProxyTypes,\r\n\tserviceURL: string,\r\n\tmessage?: { success?: string; error?: string; ignoredStatusCodes?: HttpStatusCode[] },\r\n\tremoteAPI?: Apps,\r\n\tisMockAPI = false\r\n): MethodDecorator {\r\n\treturn function (serviceClass: object, serviceName: string | symbol, descriptor: PropertyDescriptor) {\r\n\t\t// const originalFunction = descriptor.value;\r\n\r\n\t\tdescriptor.value = function (...args: any[]) {\r\n\t\t\treturn runInInjectionContext((<any>this).injector, () => {\r\n\t\t\t\tconst httpClient: HttpClient = (<any>this).httpClient;\r\n\r\n\t\t\t\tlet api = '';\r\n\t\t\t\tif (isMockAPI) api = <string>remoteAPI;\r\n\t\t\t\telse if (remoteAPI) {\r\n\t\t\t\t\tconst url = new URL(API_CONFIGS.api);\r\n\t\t\t\t\tapi = url.origin + '/' + API_CONFIGS.prefixMap[remoteAPI];\r\n\t\t\t\t} else api = API_CONFIGS.api;\r\n\r\n\t\t\t\tconst endPoint = api + '/' + serviceURL;\r\n\t\t\t\tconst request = getRequest(httpMethod, args);\r\n\t\t\t\tconst states: ServiceCallStateMap<any> = (<any>this).states;\r\n\r\n\t\t\t\tcallState(states, serviceName);\r\n\r\n\t\t\t\tlet observable: Observable<any> = new Observable<any>();\r\n\t\t\t\tlet getDynamicServiceUrl: string;\r\n\r\n\t\t\t\tswitch (httpMethod) {\r\n\t\t\t\t\tcase HTTPMethods.GET:\r\n\t\t\t\t\t\tlet getReq = args.length ? '/' + args[0] : '';\r\n\t\t\t\t\t\tobservable = httpClient.get<any>(endPoint + getReq, {observe: 'response', responseType: 'json' });\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase HTTPMethods.GETBYPARAMS:\r\n\t\t\t\t\t\tobservable = httpClient.get<any>(endPoint, { params: request as HttpParams, observe: 'response', responseType: 'json' });\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase HTTPMethods.GETBYDYNAMICPATH:\r\n\t\t\t\t\t\tgetDynamicServiceUrl = serviceURL;\r\n\t\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\t\tgetDynamicServiceUrl = getDynamicServiceUrl.replace('$', arg);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tobservable = httpClient.get<any>(api + '/' + getDynamicServiceUrl, {observe: 'response', responseType: 'json' });\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase HTTPMethods.GETBYPARAMSANDDYNAMICPATH:\r\n\t\t\t\t\t\tlet getParams = {};\r\n\t\t\t\t\t\tlet getDynamicServiceUrlWithParams = serviceURL;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\t\tif (typeof arg === 'object') getParams = arg;\r\n\t\t\t\t\t\t\telse getDynamicServiceUrlWithParams = getDynamicServiceUrlWithParams.replace('$', arg);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tobservable = httpClient.get<any>(api + '/' + getDynamicServiceUrlWithParams, {\r\n\t\t\t\t\t\t\tparams: getParams as HttpParams,\r\n\t\t\t\t\t\t\tobserve: 'response',\r\n\t\t\t\t\t\t\tresponseType: 'json'\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase HTTPMethods.POST:\r\n\t\t\t\t\t\tobservable = httpClient.post<any>(endPoint, args[0], {observe: 'response', responseType: 'json' });\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase HTTPMethods.POSTBYPARAMS:\r\n\t\t\t\t\t\tobservable = httpClient.post<any>(endPoint, args[0].body, { params: request, observe: 'response', responseType: 'json' });\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase HTTPMethods.POSTBYDYNAMICPATH:\r\n\t\t\t\t\t\tlet body = {};\r\n\t\t\t\t\t\tlet dynamicServiceUrl = serviceURL;\r\n\r\n\t\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\t\tif (typeof arg === 'object') body = arg;\r\n\t\t\t\t\t\t\telse dynamicServiceUrl = dynamicServiceUrl.replace('$', arg);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tobservable = httpClient.post<any>(api + '/' + dynamicServiceUrl, body, { observe: 'response', responseType: 'json' });\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase HTTPMethods.PUT:\r\n\t\t\t\t\t\tobservable = httpClient.put<any>(endPoint + '/' + args[0], request, { observe: 'response', responseType: 'json' });\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase HTTPMethods.PUTBYPARAMS:\r\n\t\t\t\t\t\tobservable = httpClient.put<any>(endPoint, args[0], { observe: 'response', responseType: 'json' });\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase HTTPMethods.PUTBYDYNAMICPATH:\r\n\t\t\t\t\t\tlet putBody = {};\r\n\t\t\t\t\t\tlet putDynamicServiceUrl = serviceURL;\r\n\r\n\t\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\t\tif (typeof arg === 'object') putBody = arg;\r\n\t\t\t\t\t\t\telse putDynamicServiceUrl = putDynamicServiceUrl.replace('$', arg);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tobservable = httpClient.put<any>(api + '/' + putDynamicServiceUrl, putBody, {observe: 'response', responseType: 'json' });\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase HTTPMethods.DELETE:\r\n\t\t\t\t\t\tobservable = httpClient.delete<any>(endPoint + '/' + args[0], {observe: 'response', responseType: 'json' });\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase HTTPMethods.DELETEBYPARAMS:\r\n\t\t\t\t\t\tobservable = httpClient.delete<any>(endPoint, { params: request as HttpParams, observe: 'response', responseType: 'json' });\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase HTTPMethods.DELETEBYDYNAMICPATH:\r\n\t\t\t\t\t\tlet deleteParams = {};\r\n\t\t\t\t\t\tlet deleteDynamicServiceUrl = serviceURL;\r\n\r\n\t\t\t\t\t\targs.forEach((arg) => {\r\n\t\t\t\t\t\t\tif (typeof arg === 'object') deleteParams = arg;\r\n\t\t\t\t\t\t\telse deleteDynamicServiceUrl = deleteDynamicServiceUrl.replace('$', arg);\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tobservable = httpClient.delete<any>(api + '/' + deleteDynamicServiceUrl, {\r\n\t\t\t\t\t\t\tparams: deleteParams,\r\n\t\t\t\t\t\t\tobserve: 'response',\r\n\t\t\t\t\t\t\tresponseType: 'json'\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tobservable = observable.pipe(\r\n\t\t\t\t\tmap((response) => new ServiceResponse(request, response?.body, proxy, response?.status)),\r\n\t\t\t\t\ttap((serviceRes) => {\r\n\t\t\t\t\t\tif (serviceRes?.statusCode === HTTPStatusCodes.NO_CONTENT) {\r\n\t\t\t\t\t\t\t(<any>this).messageService.add({\r\n\t\t\t\t\t\t\t\tkey: 'toast-root',\r\n\t\t\t\t\t\t\t\tseverity: 'success',\r\n\t\t\t\t\t\t\t\tsummary: (<any>this).translocoService.translate('messages.successMessageHeader'),\r\n\t\t\t\t\t\t\t\tdetail: (<any>this).translocoService.translate('messages.successMessage')\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else if (serviceRes.response.type === 'ValidationWarningException') {\r\n\t\t\t\t\t\t\twarningState(states, serviceName, serviceRes.response, (<any>this).messageService);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tsuccessState(\r\n\t\t\t\t\t\t\t\tstates,\r\n\t\t\t\t\t\t\t\tserviceName,\r\n\t\t\t\t\t\t\t\t(<any>this).translocoService,\r\n\t\t\t\t\t\t\t\t(<any>this).messageService,\r\n\t\t\t\t\t\t\t\tmessage,\r\n\t\t\t\t\t\t\t\tserviceRes\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tcatchError((error: HttpErrorResponse) => {\r\n\t\t\t\t\t\terrorState(\r\n\t\t\t\t\t\t\tstates,\r\n\t\t\t\t\t\t\tserviceName,\r\n\t\t\t\t\t\t\terror,\r\n\t\t\t\t\t\t\t(<any>this).translocoService,\r\n\t\t\t\t\t\t\t(<any>this).messageService,\r\n\t\t\t\t\t\t\t(<any>this).keycloak,\r\n\t\t\t\t\t\t\tmessage\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\treturn of(new ErrorResponse(error));\r\n\t\t\t\t\t}),\r\n\t\t\t\t\ttakeUntilDestroyed(),\r\n\t\t\t\t\tfinalize(() => clearWaitingState(states, serviceName))\r\n\t\t\t\t);\r\n\r\n\t\t\t\treturn observable;\r\n\t\t\t});\r\n\t\t};\r\n\t};\r\n}\r\n","import { HttpHandlerFn, HttpInterceptorFn, HttpRequest } from '@angular/common/http';\r\nimport { inject } from '@angular/core';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\n\r\nconst DEFAULT_LANGUAGE = 'tr' as const;\r\nconst STORAGE_KEY = 'lang' as const;\r\n\r\nconst resolveLanguage = (translocoService: TranslocoService | null): string => {\r\n return (\r\n translocoService?.getActiveLang?.() ||\r\n localStorage.getItem(STORAGE_KEY) ||\r\n translocoService?.getDefaultLang?.() ||\r\n DEFAULT_LANGUAGE\r\n );\r\n};\r\n\r\nexport const acceptLanguageInterceptor: HttpInterceptorFn = (\r\n req: HttpRequest<unknown>,\r\n next: HttpHandlerFn\r\n) => {\r\n const translocoService = inject(TranslocoService, { optional: true }) ?? null;\r\n const language = resolveLanguage(translocoService);\r\n\r\n const updatedReq = req.clone({\r\n setHeaders: {\r\n 'Accept-Language': language\r\n }\r\n });\r\n\r\n return next(updatedReq);\r\n};\r\n\r\n","/* lib */\r\nexport * from './lib/enums';\r\nexport * from './lib/interfaces';\r\n\r\n/* src */\r\nexport * from './src/httpBackend';\r\nexport * from './src/httpClient';\r\nexport * from './src/serviceBase';\r\nexport * from './src/serviceStateMethods';\r\n\r\n/* interceptor */\r\nexport * from './src/interceptor/accept-language.interceptor';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { fromEvent } from 'rxjs';
4
4
  import { filter, take, switchMap } from 'rxjs/operators';
5
5
  import { bridge } from 'aril/boot/bridge';
6
6
  import { Apps } from 'aril/boot/config/apps';
7
+ import { ActivityService, LOGGER_SESSION_HEADER } from 'aril/util/activity';
7
8
 
8
9
  const HOST_APP_HEADERS = {
9
10
  [Apps.THOR]: { 'x-yeap-application': 'thor', 'x-application': 'thor', 'x-module': 'thor-fe' },
@@ -19,10 +20,12 @@ const authInterceptor = (req, next) => {
19
20
  const activeHost = bridge.activeHost();
20
21
  const headers = isHostApp(activeHost) ? HOST_APP_HEADERS[activeHost] : {};
21
22
  const csrfToken = getCsrfToken();
23
+ const loggerSessionId = inject(ActivityService).getSessionId();
22
24
  const authReq = req.clone({
23
25
  setHeaders: {
24
26
  csrf_token: csrfToken ?? '',
25
- ...headers
27
+ ...headers,
28
+ ...(loggerSessionId ? { [LOGGER_SESSION_HEADER]: loggerSessionId } : {})
26
29
  }
27
30
  });
28
31
  return next(authReq);
@@ -1 +1 @@
1
- {"version":3,"file":"aril-keycloak.mjs","sources":["../../projects/aril/keycloak/src/auth.interceptor.ts","../../projects/aril/keycloak/aril-keycloak.ts"],"sourcesContent":["import { HttpHandlerFn, HttpInterceptorFn, HttpRequest } from '@angular/common/http';\r\nimport { inject } from '@angular/core';\r\n\r\nimport { KeycloakBearerInterceptor } from 'keycloak-angular';\r\nimport { fromEvent } from 'rxjs';\r\nimport { filter, switchMap, take } from 'rxjs/operators';\r\n\r\nimport { bridge } from 'aril/boot/bridge';\r\nimport { Apps } from 'aril/boot/config/apps';\r\n\r\ntype HostApp = Apps.THOR | Apps.YEAP | Apps.LENA;\r\n\r\nconst HOST_APP_HEADERS: Record<HostApp, Readonly<Record<string, string>>> = {\r\n\t[Apps.THOR]: { 'x-yeap-application': 'thor', 'x-application': 'thor', 'x-module': 'thor-fe' },\r\n\t[Apps.LENA]: { 'x-yeap-application': 'lena', 'x-application': 'lena', 'x-module': 'lena-fe' },\r\n\t[Apps.YEAP]: { 'x-yeap-application': 'yeap', 'x-application': 'yeap', 'x-module': 'yeap-fe' }\r\n};\r\n\r\nconst isHostApp = (value: string | null | undefined): value is HostApp =>\r\n\tvalue === Apps.THOR || value === Apps.LENA || value === Apps.YEAP;\r\n\r\nconst getCsrfToken = (): string | undefined =>\r\n\tdocument.cookie\r\n\t\t.split('; ')\r\n\t\t.find((row) => row.startsWith('csrf_token='))\r\n\t\t?.split('=')[1];\r\n\r\nexport const authInterceptor: HttpInterceptorFn = (req: HttpRequest<unknown>, next: HttpHandlerFn) => {\r\n\tconst activeHost = bridge.activeHost();\r\n\tconst headers = isHostApp(activeHost) ? HOST_APP_HEADERS[activeHost] : {};\r\n\tconst csrfToken = getCsrfToken();\r\n\r\n\tconst authReq = req.clone({\r\n\t\tsetHeaders: {\r\n\t\t\tcsrf_token: csrfToken ?? '',\r\n\t\t\t...headers\r\n\t\t}\r\n\t});\r\n\r\n\treturn next(authReq);\r\n};\r\n\r\n/**\r\n * Keycloak token refresh XHR'larının tab inactive iken abort olup `InvalidStateError`\r\n * fırlatmasını önler. `KeycloakBearerInterceptor.intercept` lazy Observable döner —\r\n * subscribe edilmediği sürece side-effect (token refresh) yok. Tab `visibilityState`\r\n * `'hidden'` iken subscribe'ı `visibilitychange → 'visible'` event'ine kadar erteleriz;\r\n * tab tekrar görünür olunca request fresh token ile atılır.\r\n */\r\nexport const keycloakAuthInterceptor: HttpInterceptorFn = (req: HttpRequest<unknown>, next: HttpHandlerFn) => {\r\n\tconst interceptor = inject(KeycloakBearerInterceptor);\r\n\r\n\tif (typeof document === 'undefined' || document.visibilityState === 'visible') {\r\n\t\treturn interceptor.intercept(req, { handle: next });\r\n\t}\r\n\r\n\treturn fromEvent(document, 'visibilitychange').pipe(\r\n\t\tfilter(() => document.visibilityState === 'visible'),\r\n\t\ttake(1),\r\n\t\tswitchMap(() => interceptor.intercept(req, { handle: next }))\r\n\t);\r\n};\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAYA,MAAM,gBAAgB,GAAsD;AAC3E,IAAA,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,oBAAoB,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE;AAC7F,IAAA,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,oBAAoB,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE;AAC7F,IAAA,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,oBAAoB,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE;CAC7F,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,KAAgC,KAClD,KAAK,KAAK,IAAI,CAAC,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC;AAEnE,MAAM,YAAY,GAAG,MACpB,QAAQ,CAAC,MAAM;KACb,KAAK,CAAC,IAAI,CAAC;AACX,KAAA,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAC7C,MAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAEL,eAAe,GAAsB,CAAC,GAAyB,EAAE,IAAmB,KAAI;AACpG,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;AACvC,IAAA,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,gBAAgB,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;AAC1E,IAAA,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;AAEjC,IAAA,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC;AACzB,QAAA,UAAU,EAAE;YACX,UAAU,EAAE,SAAS,IAAI,EAAE;AAC3B,YAAA,GAAG,OAAO;AACV,SAAA;AACD,KAAA,CAAC,CAAC;AAEH,IAAA,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;AACtB,EAAE;AAEF;;;;;;AAMG;MACU,uBAAuB,GAAsB,CAAC,GAAyB,EAAE,IAAmB,KAAI;AAC5G,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC;IAEtD,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,QAAQ,CAAC,eAAe,KAAK,SAAS,EAAE;AAC9E,QAAA,OAAO,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;KACpD;IAED,OAAO,SAAS,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,IAAI,CAClD,MAAM,CAAC,MAAM,QAAQ,CAAC,eAAe,KAAK,SAAS,CAAC,EACpD,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,MAAM,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAC7D,CAAC;AACH;;AC7DA;;AAEG;;;;"}
1
+ {"version":3,"file":"aril-keycloak.mjs","sources":["../../projects/aril/keycloak/src/auth.interceptor.ts","../../projects/aril/keycloak/aril-keycloak.ts"],"sourcesContent":["import { HttpHandlerFn, HttpInterceptorFn, HttpRequest } from '@angular/common/http';\r\nimport { inject } from '@angular/core';\r\n\r\nimport { KeycloakBearerInterceptor } from 'keycloak-angular';\r\nimport { fromEvent } from 'rxjs';\r\nimport { filter, switchMap, take } from 'rxjs/operators';\r\n\r\nimport { bridge } from 'aril/boot/bridge';\r\nimport { Apps } from 'aril/boot/config/apps';\r\nimport { ActivityService, LOGGER_SESSION_HEADER } from 'aril/util/activity';\r\n\r\ntype HostApp = Apps.THOR | Apps.YEAP | Apps.LENA;\r\n\r\nconst HOST_APP_HEADERS: Record<HostApp, Readonly<Record<string, string>>> = {\r\n\t[Apps.THOR]: { 'x-yeap-application': 'thor', 'x-application': 'thor', 'x-module': 'thor-fe' },\r\n\t[Apps.LENA]: { 'x-yeap-application': 'lena', 'x-application': 'lena', 'x-module': 'lena-fe' },\r\n\t[Apps.YEAP]: { 'x-yeap-application': 'yeap', 'x-application': 'yeap', 'x-module': 'yeap-fe' }\r\n};\r\n\r\nconst isHostApp = (value: string | null | undefined): value is HostApp =>\r\n\tvalue === Apps.THOR || value === Apps.LENA || value === Apps.YEAP;\r\n\r\nconst getCsrfToken = (): string | undefined =>\r\n\tdocument.cookie\r\n\t\t.split('; ')\r\n\t\t.find((row) => row.startsWith('csrf_token='))\r\n\t\t?.split('=')[1];\r\n\r\nexport const authInterceptor: HttpInterceptorFn = (req: HttpRequest<unknown>, next: HttpHandlerFn) => {\r\n\tconst activeHost = bridge.activeHost();\r\n\tconst headers = isHostApp(activeHost) ? HOST_APP_HEADERS[activeHost] : {};\r\n\tconst csrfToken = getCsrfToken();\r\n\tconst loggerSessionId = inject(ActivityService).getSessionId();\r\n\r\n\tconst authReq = req.clone({\r\n\t\tsetHeaders: {\r\n\t\t\tcsrf_token: csrfToken ?? '',\r\n\t\t\t...headers,\r\n\t\t\t...(loggerSessionId ? { [LOGGER_SESSION_HEADER]: loggerSessionId } : {})\r\n\t\t}\r\n\t});\r\n\r\n\treturn next(authReq);\r\n};\r\n\r\n/**\r\n * Keycloak token refresh XHR'larının tab inactive iken abort olup `InvalidStateError`\r\n * fırlatmasını önler. `KeycloakBearerInterceptor.intercept` lazy Observable döner —\r\n * subscribe edilmediği sürece side-effect (token refresh) yok. Tab `visibilityState`\r\n * `'hidden'` iken subscribe'ı `visibilitychange → 'visible'` event'ine kadar erteleriz;\r\n * tab tekrar görünür olunca request fresh token ile atılır.\r\n */\r\nexport const keycloakAuthInterceptor: HttpInterceptorFn = (req: HttpRequest<unknown>, next: HttpHandlerFn) => {\r\n\tconst interceptor = inject(KeycloakBearerInterceptor);\r\n\r\n\tif (typeof document === 'undefined' || document.visibilityState === 'visible') {\r\n\t\treturn interceptor.intercept(req, { handle: next });\r\n\t}\r\n\r\n\treturn fromEvent(document, 'visibilitychange').pipe(\r\n\t\tfilter(() => document.visibilityState === 'visible'),\r\n\t\ttake(1),\r\n\t\tswitchMap(() => interceptor.intercept(req, { handle: next }))\r\n\t);\r\n};\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;AAaA,MAAM,gBAAgB,GAAsD;AAC3E,IAAA,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,oBAAoB,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE;AAC7F,IAAA,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,oBAAoB,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE;AAC7F,IAAA,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,oBAAoB,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE;CAC7F,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,KAAgC,KAClD,KAAK,KAAK,IAAI,CAAC,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC;AAEnE,MAAM,YAAY,GAAG,MACpB,QAAQ,CAAC,MAAM;KACb,KAAK,CAAC,IAAI,CAAC;AACX,KAAA,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAC7C,MAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAEL,eAAe,GAAsB,CAAC,GAAyB,EAAE,IAAmB,KAAI;AACpG,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;AACvC,IAAA,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,gBAAgB,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;AAC1E,IAAA,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC,YAAY,EAAE,CAAC;AAE/D,IAAA,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC;AACzB,QAAA,UAAU,EAAE;YACX,UAAU,EAAE,SAAS,IAAI,EAAE;AAC3B,YAAA,GAAG,OAAO;AACV,YAAA,IAAI,eAAe,GAAG,EAAE,CAAC,qBAAqB,GAAG,eAAe,EAAE,GAAG,EAAE;AACvE,SAAA;AACD,KAAA,CAAC,CAAC;AAEH,IAAA,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;AACtB,EAAE;AAEF;;;;;;AAMG;MACU,uBAAuB,GAAsB,CAAC,GAAyB,EAAE,IAAmB,KAAI;AAC5G,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC;IAEtD,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,QAAQ,CAAC,eAAe,KAAK,SAAS,EAAE;AAC9E,QAAA,OAAO,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;KACpD;IAED,OAAO,SAAS,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,IAAI,CAClD,MAAM,CAAC,MAAM,QAAQ,CAAC,eAAe,KAAK,SAAS,CAAC,EACpD,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,MAAM,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAC7D,CAAC;AACH;;AChEA;;AAEG;;;;"}
@@ -0,0 +1,202 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Injectable } from '@angular/core';
3
+ import { take } from 'rxjs';
4
+ import { bridge } from 'aril/boot/bridge';
5
+ import { API_CONFIGS } from 'aril/boot/config/api';
6
+ import * as i1 from '@angular/common/http';
7
+
8
+ // Key başına maksimum ardışık fetch hatası: limit aşılınca o key oturum boyu yeniden denenmez.
9
+ // Sınırsız retry'da kalıcı hata veren bir grup (örn. silinmiş grup → 404), diğer grupların her
10
+ // başarılı yüklemesinde (map güncellemesi tüm enum computed'larını yeniden çalıştırır) yeniden
11
+ // POST edilirdi → istek/console fırtınası.
12
+ const MAX_FETCH_FAILURES = 3;
13
+ class SelectionGroupService {
14
+ constructor(http) {
15
+ this.http = http;
16
+ // State cross-MFE paylaşımlı: bridge globalThis-singleton'ında yaşar (bkz. mfe-bridge.ts).
17
+ // Servis instance'ı MFE/tab başına çoğalsa da tüm okuma/yazma tek bridge state'ine gider.
18
+ this.selectionGroups = bridge.selectionGroups;
19
+ this.loading = bridge.selectionLoading;
20
+ this.loaded = bridge.selectionLoaded;
21
+ this.failures = bridge.selectionFailures;
22
+ // loadStates + invalidate yalnızca ilk instance'ta (cross-MFE bir kez): tek localStorage
23
+ // yüklemesi, tek `/versions` çağrısı. effect her instance'ta kurulur ama hepsi aynı paylaşılan
24
+ // state'i yazdığından ezme olmaz.
25
+ if (!bridge.selectionInitialized) {
26
+ bridge.selectionInitialized = true;
27
+ this.loadStatesFromLocalStorage();
28
+ this.invalidateStaleGroups();
29
+ }
30
+ }
31
+ // localStorage'a slim cache yazar. `effect` YERİNE bilinçli olarak doğrudan çağrılır: signal'i
32
+ // değiştiren her yer (fetchEnum, invalidateStaleGroups) persist'i açıkça tetikler. NOT: webpack MF
33
+ // config'iyle `@angular/core` artık singleton shared olduğundan effect-tabanlı persist de çalışırdı;
34
+ // yine de açık/öngörülebilir olması (effect içinde gizli signal-write + NG0600 riski olmaması) için
35
+ // doğrudan çağrı tercih edildi.
36
+ persistToLocalStorage() {
37
+ try {
38
+ const slim = this.slimForStorage(this.selectionGroups());
39
+ localStorage.setItem('selection-groups', btoa(encodeURI(JSON.stringify(slim))));
40
+ }
41
+ catch {
42
+ // QuotaExceededError vb. → eski cache'i koru, yeni yazımı sessizce atla.
43
+ }
44
+ }
45
+ loadStatesFromLocalStorage() {
46
+ const selectionGroups = localStorage.getItem('selection-groups');
47
+ if (selectionGroups) {
48
+ try {
49
+ const decodedData = decodeURI(atob(selectionGroups));
50
+ // Dynamic gruplar zaten persist edilmiyor (slimForStorage onları atlar) → ekstra
51
+ // filtre gerekmez; localStorage içeriği yalnızca Fixed gruplardır.
52
+ const restored = JSON.parse(decodedData);
53
+ this.selectionGroups.set(restored);
54
+ // Restore edilen gruplar loaded sayılır: aksi halde koşulsuz fetchEnum çağıran
55
+ // consumer'lar guard'ı geçip her oturum yeniden çeker (cache faydası kaybolur).
56
+ // Stale'lik kontrolü invalidateStaleGroups'un işi. null entry'ler (legacy) loaded
57
+ // işaretlenmez — işaretlenirse o grup bir daha hiç yüklenemezdi.
58
+ Object.entries(restored).forEach(([key, group]) => {
59
+ if (group)
60
+ this.loaded.set(key, true);
61
+ });
62
+ }
63
+ catch (e) {
64
+ console.error(e);
65
+ }
66
+ }
67
+ }
68
+ // Dynamic grupları atlar + Fixed grupları yalnızca render (value/table/picker/export) ve invalidate
69
+ // için gerekli alanlara indirger. localStorage'da audit/id/açıklama gibi kullanılmayan alanları tutmaz.
70
+ slimForStorage(groups) {
71
+ const out = {};
72
+ for (const [key, group] of Object.entries(groups)) {
73
+ if (!group || group.loadStrategy === 'Dynamic')
74
+ continue;
75
+ out[key] = {
76
+ version: group.version,
77
+ selectionItems: (group.selectionItems ?? []).map((it) => ({
78
+ selectionKey: it.selectionKey,
79
+ selectionDisplay: it.selectionDisplay,
80
+ selectionMultiLanguageDisplays: it.selectionMultiLanguageDisplays,
81
+ showOrder: it.showOrder,
82
+ parentSelectionKey: it.parentSelectionKey
83
+ }))
84
+ };
85
+ }
86
+ return out;
87
+ }
88
+ // App init'te enum version'larını çekip localStorage'daki stale grupları temizler.
89
+ // Silinen grup, tüketici component'lerin `if (!selectionGroup) fetchEnum()` guard'ıyla yeniden yüklenir.
90
+ invalidateStaleGroups() {
91
+ // App-init snapshot: yalnızca localStorage'dan yüklenen gruplar kontrol edilir. Yanıt gelene
92
+ // kadar consumer'ların fetchEnum ile yüklediği taze gruplar taranmaz/silinmez (aksi halde
93
+ // taze grup silinir ve kalıcı per-component fetch guard'ları onu bir daha çekmeyebilir).
94
+ const keysToCheck = Object.keys(this.selectionGroups());
95
+ if (keysToCheck.length === 0)
96
+ return;
97
+ const hostApi = API_CONFIGS.api.replace(/\/[^\/]+\/v1$/, `/host/v1`);
98
+ this.http
99
+ .get(hostApi + '/selection-group/versions')
100
+ .pipe(take(1))
101
+ .subscribe({
102
+ next: (versions) => {
103
+ // Boş/bozuk yanıt güvenlik şeridi: aşağıdaki "listede olmayanı sil" kuralı
104
+ // boş listeyle tüm cache'i yanlışlıkla boşaltmasın.
105
+ if (!versions?.length)
106
+ return;
107
+ const latest = new Map(versions.map((v) => [v.groupName, v.version]));
108
+ let changed = false;
109
+ const next = { ...this.selectionGroups() };
110
+ keysToCheck.forEach((key) => {
111
+ const group = next[key];
112
+ if (!group)
113
+ return;
114
+ const separatorIndex = key.indexOf('~');
115
+ if (separatorIndex === -1)
116
+ return;
117
+ const serverVersion = latest.get(key.substring(0, separatorIndex));
118
+ // serverVersion == null: grup /versions listesinde yok → sunucudan silinmiş /
119
+ // yeniden adlandırılmış demektir (endpoint Fixed grupların tam listesini döner)
120
+ // → o da evict edilir; kalırsa kaldırılmış enum değerleri süresiz render edilir.
121
+ if (serverVersion == null || serverVersion !== group.version) {
122
+ delete next[key];
123
+ this.loaded.delete(key);
124
+ this.failures.delete(key);
125
+ // Uçuştaki fetch'in flag'i korunur: silinirse ikinci bir consumer guard'ı
126
+ // geçip duplicate /load atar ve export-overlay'in isLoading poll'ü grubu
127
+ // beklemeden erken geçer. Yanıt geldiğinde flag'i fetchEnum kendisi yönetir.
128
+ if (!this.loading.get(key)) {
129
+ this.loading.delete(key);
130
+ }
131
+ changed = true;
132
+ }
133
+ });
134
+ if (changed) {
135
+ this.selectionGroups.set(next);
136
+ this.persistToLocalStorage();
137
+ }
138
+ },
139
+ error: () => {
140
+ // versions endpoint yok/erişilemez: sessizce mevcut cache ile devam.
141
+ }
142
+ });
143
+ }
144
+ fetchEnum(groupName, parentSelectionKey = 'ALL') {
145
+ const key = groupName + '~' + parentSelectionKey;
146
+ if (this.loaded.get(key) || this.loading.get(key))
147
+ return;
148
+ if ((this.failures.get(key) ?? 0) >= MAX_FETCH_FAILURES)
149
+ return;
150
+ const payload = {
151
+ groupName,
152
+ parentSelectionKey
153
+ };
154
+ this.loading.set(key, true);
155
+ this.loaded.set(key, false);
156
+ const hostApi = API_CONFIGS.api.replace(/\/[^\/]+\/v1$/, `/host/v1`);
157
+ this.http
158
+ .post(hostApi + '/selection-group/load', payload)
159
+ .pipe(take(1))
160
+ .subscribe({
161
+ next: (selectionGroup) => {
162
+ this.loading.set(key, false);
163
+ this.loaded.set(key, true);
164
+ this.failures.delete(key);
165
+ this.selectionGroups.update((groups) => ({
166
+ ...groups,
167
+ [key]: selectionGroup
168
+ }));
169
+ this.persistToLocalStorage();
170
+ },
171
+ // HTTP hatasında loading'i sıfırla: aksi halde guard (loaded/loading) bu enum'u
172
+ // kilitler. loading/loaded bridge'de cross-MFE SHARED olduğundan, tek bir anlık hata
173
+ // bu enum'u TÜM remote'larda hard-reload'a kadar bir daha çekilemez yapardı. loading=false
174
+ // → sonraki fetchEnum (component init/retry) yeniden deneyebilir. loaded zaten false kalır.
175
+ // Deneme sayısı MAX_FETCH_FAILURES ile sınırlı: kalıcı hatada sonsuz retry önlenir.
176
+ error: () => {
177
+ this.loading.set(key, false);
178
+ this.failures.set(key, (this.failures.get(key) ?? 0) + 1);
179
+ }
180
+ });
181
+ }
182
+ // key formatı: `groupName~parentSelectionKey` (fetchEnum'daki composite key ile aynı).
183
+ // Direkt olarak groupName geçilirse Map'te eşleşme olmaz ve her zaman false döner.
184
+ isLoading(key) {
185
+ return this.loading.get(key) ?? false;
186
+ }
187
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SelectionGroupService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
188
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SelectionGroupService, providedIn: 'root' }); }
189
+ }
190
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SelectionGroupService, decorators: [{
191
+ type: Injectable,
192
+ args: [{
193
+ providedIn: 'root'
194
+ }]
195
+ }], ctorParameters: () => [{ type: i1.HttpClient }] });
196
+
197
+ /**
198
+ * Generated bundle index. Do not edit.
199
+ */
200
+
201
+ export { SelectionGroupService };
202
+ //# sourceMappingURL=aril-selection.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aril-selection.mjs","sources":["../../projects/aril/selection/src/selection-group.service.ts","../../projects/aril/selection/aril-selection.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\n\r\nimport { take } from 'rxjs';\r\n\r\nimport { SelectionGroupDTO, bridge } from 'aril/boot/bridge';\r\nimport { API_CONFIGS } from 'aril/boot/config/api';\r\n\r\nimport { SelectionGroupVersionDTO, SelectionRequestDTO } from './interfaces';\r\n\r\n// Key başına maksimum ardışık fetch hatası: limit aşılınca o key oturum boyu yeniden denenmez.\r\n// Sınırsız retry'da kalıcı hata veren bir grup (örn. silinmiş grup → 404), diğer grupların her\r\n// başarılı yüklemesinde (map güncellemesi tüm enum computed'larını yeniden çalıştırır) yeniden\r\n// POST edilirdi → istek/console fırtınası.\r\nconst MAX_FETCH_FAILURES = 3;\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class SelectionGroupService {\r\n\t// State cross-MFE paylaşımlı: bridge globalThis-singleton'ında yaşar (bkz. mfe-bridge.ts).\r\n\t// Servis instance'ı MFE/tab başına çoğalsa da tüm okuma/yazma tek bridge state'ine gider.\r\n\tselectionGroups = bridge.selectionGroups;\r\n\r\n\tprivate readonly loading = bridge.selectionLoading;\r\n\tprivate readonly loaded = bridge.selectionLoaded;\r\n\tprivate readonly failures = bridge.selectionFailures;\r\n\r\n\tconstructor(private readonly http: HttpClient) {\r\n\t\t// loadStates + invalidate yalnızca ilk instance'ta (cross-MFE bir kez): tek localStorage\r\n\t\t// yüklemesi, tek `/versions` çağrısı. effect her instance'ta kurulur ama hepsi aynı paylaşılan\r\n\t\t// state'i yazdığından ezme olmaz.\r\n\t\tif (!bridge.selectionInitialized) {\r\n\t\t\tbridge.selectionInitialized = true;\r\n\t\t\tthis.loadStatesFromLocalStorage();\r\n\t\t\tthis.invalidateStaleGroups();\r\n\t\t}\r\n\t}\r\n\r\n\t// localStorage'a slim cache yazar. `effect` YERİNE bilinçli olarak doğrudan çağrılır: signal'i\r\n\t// değiştiren her yer (fetchEnum, invalidateStaleGroups) persist'i açıkça tetikler. NOT: webpack MF\r\n\t// config'iyle `@angular/core` artık singleton shared olduğundan effect-tabanlı persist de çalışırdı;\r\n\t// yine de açık/öngörülebilir olması (effect içinde gizli signal-write + NG0600 riski olmaması) için\r\n\t// doğrudan çağrı tercih edildi.\r\n\tprivate persistToLocalStorage() {\r\n\t\ttry {\r\n\t\t\tconst slim = this.slimForStorage(this.selectionGroups());\r\n\t\t\tlocalStorage.setItem('selection-groups', btoa(encodeURI(JSON.stringify(slim))));\r\n\t\t} catch {\r\n\t\t\t// QuotaExceededError vb. → eski cache'i koru, yeni yazımı sessizce atla.\r\n\t\t}\r\n\t}\r\n\r\n\tprivate loadStatesFromLocalStorage() {\r\n\t\tconst selectionGroups = localStorage.getItem('selection-groups');\r\n\r\n\t\tif (selectionGroups) {\r\n\t\t\ttry {\r\n\t\t\t\tconst decodedData = decodeURI(atob(selectionGroups));\r\n\t\t\t\t// Dynamic gruplar zaten persist edilmiyor (slimForStorage onları atlar) → ekstra\r\n\t\t\t\t// filtre gerekmez; localStorage içeriği yalnızca Fixed gruplardır.\r\n\t\t\t\tconst restored: { [key: string]: SelectionGroupDTO | null } = JSON.parse(decodedData);\r\n\t\t\t\tthis.selectionGroups.set(restored);\r\n\r\n\t\t\t\t// Restore edilen gruplar loaded sayılır: aksi halde koşulsuz fetchEnum çağıran\r\n\t\t\t\t// consumer'lar guard'ı geçip her oturum yeniden çeker (cache faydası kaybolur).\r\n\t\t\t\t// Stale'lik kontrolü invalidateStaleGroups'un işi. null entry'ler (legacy) loaded\r\n\t\t\t\t// işaretlenmez — işaretlenirse o grup bir daha hiç yüklenemezdi.\r\n\t\t\t\tObject.entries(restored).forEach(([key, group]) => {\r\n\t\t\t\t\tif (group) this.loaded.set(key, true);\r\n\t\t\t\t});\r\n\t\t\t} catch (e) {\r\n\t\t\t\tconsole.error(e);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Dynamic grupları atlar + Fixed grupları yalnızca render (value/table/picker/export) ve invalidate\r\n\t// için gerekli alanlara indirger. localStorage'da audit/id/açıklama gibi kullanılmayan alanları tutmaz.\r\n\tprivate slimForStorage(groups: { [key: string]: SelectionGroupDTO | null }): { [key: string]: unknown } {\r\n\t\tconst out: { [key: string]: unknown } = {};\r\n\t\tfor (const [key, group] of Object.entries(groups)) {\r\n\t\t\tif (!group || group.loadStrategy === 'Dynamic') continue;\r\n\t\t\tout[key] = {\r\n\t\t\t\tversion: group.version,\r\n\t\t\t\tselectionItems: (group.selectionItems ?? []).map((it) => ({\r\n\t\t\t\t\tselectionKey: it.selectionKey,\r\n\t\t\t\t\tselectionDisplay: it.selectionDisplay,\r\n\t\t\t\t\tselectionMultiLanguageDisplays: it.selectionMultiLanguageDisplays,\r\n\t\t\t\t\tshowOrder: it.showOrder,\r\n\t\t\t\t\tparentSelectionKey: it.parentSelectionKey\r\n\t\t\t\t}))\r\n\t\t\t};\r\n\t\t}\r\n\t\treturn out;\r\n\t}\r\n\r\n\t// App init'te enum version'larını çekip localStorage'daki stale grupları temizler.\r\n\t// Silinen grup, tüketici component'lerin `if (!selectionGroup) fetchEnum()` guard'ıyla yeniden yüklenir.\r\n\tprivate invalidateStaleGroups() {\r\n\t\t// App-init snapshot: yalnızca localStorage'dan yüklenen gruplar kontrol edilir. Yanıt gelene\r\n\t\t// kadar consumer'ların fetchEnum ile yüklediği taze gruplar taranmaz/silinmez (aksi halde\r\n\t\t// taze grup silinir ve kalıcı per-component fetch guard'ları onu bir daha çekmeyebilir).\r\n\t\tconst keysToCheck = Object.keys(this.selectionGroups());\r\n\t\tif (keysToCheck.length === 0) return;\r\n\r\n\t\tconst hostApi = API_CONFIGS.api.replace(/\\/[^\\/]+\\/v1$/, `/host/v1`);\r\n\r\n\t\tthis.http\r\n\t\t\t.get<SelectionGroupVersionDTO[]>(hostApi + '/selection-group/versions')\r\n\t\t\t.pipe(take(1))\r\n\t\t\t.subscribe({\r\n\t\t\t\tnext: (versions) => {\r\n\t\t\t\t\t// Boş/bozuk yanıt güvenlik şeridi: aşağıdaki \"listede olmayanı sil\" kuralı\r\n\t\t\t\t\t// boş listeyle tüm cache'i yanlışlıkla boşaltmasın.\r\n\t\t\t\t\tif (!versions?.length) return;\r\n\r\n\t\t\t\t\tconst latest = new Map(versions.map((v) => [v.groupName, v.version] as [string, number]));\r\n\r\n\t\t\t\t\tlet changed = false;\r\n\t\t\t\t\tconst next = { ...this.selectionGroups() };\r\n\r\n\t\t\t\t\tkeysToCheck.forEach((key) => {\r\n\t\t\t\t\t\tconst group = next[key];\r\n\t\t\t\t\t\tif (!group) return;\r\n\r\n\t\t\t\t\t\tconst separatorIndex = key.indexOf('~');\r\n\t\t\t\t\t\tif (separatorIndex === -1) return;\r\n\r\n\t\t\t\t\t\tconst serverVersion = latest.get(key.substring(0, separatorIndex));\r\n\r\n\t\t\t\t\t\t// serverVersion == null: grup /versions listesinde yok → sunucudan silinmiş /\r\n\t\t\t\t\t\t// yeniden adlandırılmış demektir (endpoint Fixed grupların tam listesini döner)\r\n\t\t\t\t\t\t// → o da evict edilir; kalırsa kaldırılmış enum değerleri süresiz render edilir.\r\n\t\t\t\t\t\tif (serverVersion == null || serverVersion !== group.version) {\r\n\t\t\t\t\t\t\tdelete next[key];\r\n\t\t\t\t\t\t\tthis.loaded.delete(key);\r\n\t\t\t\t\t\t\tthis.failures.delete(key);\r\n\t\t\t\t\t\t\t// Uçuştaki fetch'in flag'i korunur: silinirse ikinci bir consumer guard'ı\r\n\t\t\t\t\t\t\t// geçip duplicate /load atar ve export-overlay'in isLoading poll'ü grubu\r\n\t\t\t\t\t\t\t// beklemeden erken geçer. Yanıt geldiğinde flag'i fetchEnum kendisi yönetir.\r\n\t\t\t\t\t\t\tif (!this.loading.get(key)) {\r\n\t\t\t\t\t\t\t\tthis.loading.delete(key);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tchanged = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif (changed) {\r\n\t\t\t\t\t\tthis.selectionGroups.set(next);\r\n\t\t\t\t\t\tthis.persistToLocalStorage();\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\terror: () => {\r\n\t\t\t\t\t// versions endpoint yok/erişilemez: sessizce mevcut cache ile devam.\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tfetchEnum(groupName: string, parentSelectionKey: string = 'ALL') {\r\n\t\tconst key = groupName + '~' + parentSelectionKey;\r\n\r\n\t\tif (this.loaded.get(key) || this.loading.get(key)) return;\r\n\t\tif ((this.failures.get(key) ?? 0) >= MAX_FETCH_FAILURES) return;\r\n\r\n\t\tconst payload: SelectionRequestDTO = {\r\n\t\t\tgroupName,\r\n\t\t\tparentSelectionKey\r\n\t\t};\r\n\r\n\t\tthis.loading.set(key, true);\r\n\t\tthis.loaded.set(key, false);\r\n\r\n\t\tconst hostApi = API_CONFIGS.api.replace(/\\/[^\\/]+\\/v1$/, `/host/v1`);\r\n\r\n\t\tthis.http\r\n\t\t\t.post<SelectionGroupDTO>(hostApi + '/selection-group/load', payload)\r\n\t\t\t.pipe(take(1))\r\n\t\t\t.subscribe({\r\n\t\t\t\tnext: (selectionGroup) => {\r\n\t\t\t\t\tthis.loading.set(key, false);\r\n\t\t\t\t\tthis.loaded.set(key, true);\r\n\t\t\t\t\tthis.failures.delete(key);\r\n\r\n\t\t\t\t\tthis.selectionGroups.update((groups) => ({\r\n\t\t\t\t\t\t...groups,\r\n\t\t\t\t\t\t[key]: selectionGroup\r\n\t\t\t\t\t}));\r\n\r\n\t\t\t\t\tthis.persistToLocalStorage();\r\n\t\t\t\t},\r\n\t\t\t\t// HTTP hatasında loading'i sıfırla: aksi halde guard (loaded/loading) bu enum'u\r\n\t\t\t\t// kilitler. loading/loaded bridge'de cross-MFE SHARED olduğundan, tek bir anlık hata\r\n\t\t\t\t// bu enum'u TÜM remote'larda hard-reload'a kadar bir daha çekilemez yapardı. loading=false\r\n\t\t\t\t// → sonraki fetchEnum (component init/retry) yeniden deneyebilir. loaded zaten false kalır.\r\n\t\t\t\t// Deneme sayısı MAX_FETCH_FAILURES ile sınırlı: kalıcı hatada sonsuz retry önlenir.\r\n\t\t\t\terror: () => {\r\n\t\t\t\t\tthis.loading.set(key, false);\r\n\t\t\t\t\tthis.failures.set(key, (this.failures.get(key) ?? 0) + 1);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t// key formatı: `groupName~parentSelectionKey` (fetchEnum'daki composite key ile aynı).\r\n\t// Direkt olarak groupName geçilirse Map'te eşleşme olmaz ve her zaman false döner.\r\n\tisLoading(key: string): boolean {\r\n\t\treturn this.loading.get(key) ?? false;\r\n\t}\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}