aril 2.0.1-dev.5 → 2.0.2
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.
- package/esm2022/boot/config/apps/src/apps.service.mjs +4 -4
- package/esm2022/boot/config/apps/src/auth.guard.mjs +4 -4
- package/esm2022/boot/config/apps/src/custom-reuse-outlet.component.mjs +4 -4
- package/esm2022/boot/config/apps/src/custom-route-reuse-strategy.class.mjs +4 -4
- package/esm2022/boot/config/apps/src/nav-link-context-menu.service.mjs +4 -4
- package/esm2022/boot/config/apps/src/nav-link.directive.mjs +4 -4
- package/esm2022/boot/config/apps/src/nav.service.mjs +4 -4
- package/esm2022/boot/config/apps/src/route-close.service.mjs +4 -4
- package/esm2022/boot/config/apps/src/showdowDOMWrapper.mjs +4 -4
- package/esm2022/boot/config/apps/src/tab-aware-url-serializer.mjs +4 -4
- package/esm2022/boot/host/src/app.component.mjs +4 -4
- package/esm2022/boot/mfe/src/app.component.mjs +11 -6
- package/esm2022/boot/mfe/src/isolated-location-strategy.mjs +4 -4
- package/esm2022/boot/pages/src/forbidden.component.mjs +4 -4
- package/esm2022/boot/pages/src/notFound.component.mjs +4 -4
- package/esm2022/http/src/httpBackend.mjs +4 -4
- package/esm2022/i18n/src/i18n.module.mjs +5 -5
- package/esm2022/i18n/src/loader.mjs +4 -4
- package/esm2022/selection/src/selection-group.service.mjs +4 -4
- package/esm2022/theme/layout/app/expandableMenu/expandable-menu.component.mjs +4 -4
- package/esm2022/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.mjs +4 -4
- package/esm2022/theme/layout/app/favorite-pages/favorite-pages.service.mjs +4 -4
- package/esm2022/theme/layout/app/favorite-pages/modals/add-edit-favorite-modal/add-edit-favorite-modal.component.mjs +4 -4
- package/esm2022/theme/layout/app/general-search/general-search.component.mjs +4 -4
- package/esm2022/theme/layout/app/history/history-sidebar.component.mjs +4 -4
- package/esm2022/theme/layout/app/history/history.service.mjs +4 -4
- package/esm2022/theme/layout/app/layout/app.layout.component.mjs +4 -4
- package/esm2022/theme/layout/app/layout/mfe.layout.component.mjs +4 -4
- package/esm2022/theme/layout/app/notifications/notifications-sidebar.component.mjs +4 -4
- package/esm2022/theme/layout/app/profileSidebar/app.profilesidebar.component.mjs +4 -4
- package/esm2022/theme/layout/app/profileSidebar/modals/change-password-modal/change-password-modal.component.mjs +4 -4
- package/esm2022/theme/layout/app/profileSidebar/modals/edit-profile-modal/edit-profile-modal.component.mjs +4 -4
- package/esm2022/theme/layout/app/profileSidebar/profile.service.mjs +4 -4
- package/esm2022/theme/layout/app/site-map/site-map-sidebar.component.mjs +4 -4
- package/esm2022/theme/layout/app/static-sidebar/static-sidebar.component.mjs +4 -4
- package/esm2022/theme/layout/app/topbar/app.topbar.component.mjs +4 -4
- package/esm2022/theme/layout/service/app.layout.service.mjs +4 -4
- package/esm2022/theme/layout/service/app.menu.service.mjs +4 -4
- package/esm2022/theme/layout/service/breadcrumb-publisher.service.mjs +4 -4
- package/esm2022/theme/layout/service/breadcrumb.service.mjs +4 -4
- package/esm2022/theme/layout/service/notifications.service.mjs +4 -4
- package/esm2022/theme/layout/service/search.service.mjs +4 -4
- package/esm2022/theme/layout/service/tab-session.service.mjs +4 -4
- package/esm2022/ui/autoComplete/src/auto-complete.component.mjs +4 -4
- package/esm2022/ui/badge/src/badge.component.mjs +4 -4
- package/esm2022/ui/button/src/button.component.mjs +4 -4
- package/esm2022/ui/calendar/src/calendar.component.mjs +4 -4
- package/esm2022/ui/charts/src/highCharts/gauge/solid-gauge.component.mjs +4 -4
- package/esm2022/ui/charts/src/highCharts/line/line-chart-datetime-axis.component.mjs +4 -4
- package/esm2022/ui/checkbox/src/check-box.component.mjs +4 -4
- package/esm2022/ui/checkbox/src/tri-state-checkbox.component.mjs +4 -4
- package/esm2022/ui/chip/src/chip.component.mjs +4 -4
- package/esm2022/ui/collapse-reorder-list/src/collapse-reorder-list.component.mjs +4 -4
- package/esm2022/ui/dxField/src/dx-field.component.mjs +4 -4
- package/esm2022/ui/editor/src/aril-editor.component.mjs +4 -4
- package/esm2022/ui/field/src/field.component.mjs +4 -4
- package/esm2022/ui/fileUpload/src/file-upload.component.mjs +4 -4
- package/esm2022/ui/form/index.mjs +5 -5
- package/esm2022/ui/form/src/form-submit-button.component.mjs +4 -4
- package/esm2022/ui/form/src/form.component.mjs +4 -4
- package/esm2022/ui/img-viewer/src/img-viewer.component.mjs +4 -4
- package/esm2022/ui/json-diff-comparison/src/json-diff.component.mjs +4 -4
- package/esm2022/ui/lib/src/form/form-error-message.component.mjs +4 -4
- package/esm2022/ui/lib/src/form/form-error-message.directive.mjs +4 -4
- package/esm2022/ui/lib/src/grid/enum-color-picker.pipe.mjs +4 -4
- package/esm2022/ui/lib/src/grid/flex-grid.directive.mjs +4 -4
- package/esm2022/ui/lib/src/input/dx-input-error-message.pipe.mjs +4 -4
- package/esm2022/ui/lib/src/input/input-error-message.pipe.mjs +4 -4
- package/esm2022/ui/lib/src/input/value-accessor.directive.mjs +4 -4
- package/esm2022/ui/loader/src/loader.component.mjs +4 -4
- package/esm2022/ui/mask/src/mask.component.mjs +4 -4
- package/esm2022/ui/multiSelect/src/multi-select.component.mjs +4 -4
- package/esm2022/ui/number/src/number.component.mjs +4 -4
- package/esm2022/ui/operation-types-dialog/src/operation-types-dialog.component.mjs +4 -4
- package/esm2022/ui/panel/src/panel.component.mjs +4 -4
- package/esm2022/ui/password/src/password.component.mjs +4 -4
- package/esm2022/ui/pdf-viewer/src/pdf-viewer.component.mjs +4 -4
- package/esm2022/ui/progressbar/src/progressbar.component.mjs +4 -4
- package/esm2022/ui/radioButton/src/radio-button.component.mjs +4 -4
- package/esm2022/ui/relativeDateSelector/src/relative-date-selector.component.mjs +4 -4
- package/esm2022/ui/selectBox/src/select-box.component.mjs +4 -4
- package/esm2022/ui/switch/src/switch.component.mjs +4 -4
- package/esm2022/ui/table/index.mjs +5 -5
- package/esm2022/ui/table/src/export-overlay-panel.component.mjs +4 -4
- package/esm2022/ui/table/src/table-column.component.mjs +4 -4
- package/esm2022/ui/table/src/table.component.mjs +4 -4
- package/esm2022/ui/table-expand/index.mjs +5 -5
- package/esm2022/ui/table-expand/src/table-column.component.mjs +4 -4
- package/esm2022/ui/table-expand/src/table-expand-area.component.mjs +4 -4
- package/esm2022/ui/table-expand/src/table.component.mjs +4 -4
- package/esm2022/ui/tag/src/tag.component.mjs +4 -4
- package/esm2022/ui/tagBox/src/tag-box.component.mjs +4 -4
- package/esm2022/ui/text/src/text.component.mjs +4 -4
- package/esm2022/ui/textArea/src/text-area.component.mjs +4 -4
- package/esm2022/ui/toggle-button/src/toggle-button.component.mjs +4 -4
- package/esm2022/ui/translate-input/src/aril-lang-modal/aril-lang-modal.component.mjs +4 -4
- package/esm2022/ui/translate-input/src/aril-translate-input.component.mjs +4 -4
- package/esm2022/ui/tree/src/tree.component.mjs +4 -4
- package/esm2022/ui/treeSelect/src/treeSelect.component.mjs +4 -4
- package/esm2022/ui/value/src/value.component.mjs +4 -4
- package/esm2022/ui-business/assetPicker/src/asset-picker.component.mjs +4 -4
- package/esm2022/ui-business/detailed-overlay-panel/src/detailed-overlay-panel.component.mjs +4 -4
- package/esm2022/ui-business/enumPicker/src/enum-picker.component.mjs +4 -4
- package/esm2022/ui-business/image-viewer/src/aril-image-viewer.component.mjs +4 -4
- package/esm2022/ui-business/multiple-ref-value/src/multiple-ref-value.component.mjs +4 -4
- package/esm2022/ui-business/notification-templates-dialog/src/notification-templates-dialog.component.mjs +4 -4
- package/esm2022/ui-business/pdf-preview-modal/src/pdf-preview-modal.component.mjs +4 -4
- package/esm2022/ui-business/ref-value/src/ref-value.component.mjs +4 -4
- package/esm2022/ui-business/rolePicker/src/role-picker.component.mjs +4 -4
- package/esm2022/ui-business/trace-drawer/src/app-log.service.mjs +4 -4
- package/esm2022/ui-business/trace-drawer/src/trace-drawer.component.mjs +4 -4
- package/esm2022/ui-business/trace-drawer/src/trace-log.service.mjs +4 -4
- package/esm2022/ui-business/trace-id/src/trace-id.component.mjs +4 -4
- package/esm2022/ui-business/userPicker/src/user-picker.component.mjs +4 -4
- package/esm2022/util/activity/src/activity.service.mjs +4 -4
- package/esm2022/util/block/src/block.mjs +4 -4
- package/esm2022/util/directives/src/detail-page-customization/detail-page-customization.directive.mjs +4 -4
- package/esm2022/util/directives/src/dialog-component/plugin-dialog.component.mjs +4 -4
- package/esm2022/util/directives/src/dialog-service/plugin-dialog.service.mjs +4 -4
- package/esm2022/util/lib/src/module-router.mjs +4 -4
- package/esm2022/util/pipes/src/distance-to-now.pipe.mjs +4 -4
- package/esm2022/util/pipes/src/get-column-by-field.pipe.mjs +4 -4
- package/esm2022/util/pipes/src/parse.pipe.mjs +4 -4
- package/esm2022/util/pipes/src/round-number.pipe.mjs +4 -4
- package/esm2022/util/pipes/src/safe.pipe.mjs +4 -4
- package/esm2022/util/pipes/src/translate-json/translate-json.pipe.mjs +4 -4
- package/esm2022/util/pub-sub/src/pub-sub.service.mjs +4 -4
- package/esm2022/util/sync-active-tab-route/src/sync-active-tab-route.directive.mjs +4 -4
- package/fesm2022/{aril-app.component-MjG_tPEe.mjs → aril-app.component-Bl9p6jXU.mjs} +11 -6
- package/fesm2022/aril-app.component-Bl9p6jXU.mjs.map +1 -0
- package/fesm2022/aril-boot-base.mjs +1 -1
- package/fesm2022/aril-boot-base.mjs.map +1 -1
- package/fesm2022/aril-boot-bridge.mjs.map +1 -1
- package/fesm2022/aril-boot-config-api.mjs.map +1 -1
- package/fesm2022/aril-boot-config-apps.mjs +31 -31
- package/fesm2022/aril-boot-config-apps.mjs.map +1 -1
- package/fesm2022/aril-boot-config-plugins.mjs +1 -1
- package/fesm2022/aril-boot-config-plugins.mjs.map +1 -1
- package/fesm2022/aril-boot-config-translate.mjs.map +1 -1
- package/fesm2022/aril-boot-host.mjs +4 -4
- package/fesm2022/aril-boot-host.mjs.map +1 -1
- package/fesm2022/{aril-boot-mfe-app.component-DtspQ3J8.mjs → aril-boot-mfe-app.component-DovYRbZO.mjs} +12 -7
- package/fesm2022/aril-boot-mfe-app.component-DovYRbZO.mjs.map +1 -0
- package/fesm2022/{aril-boot-mfe-aril-boot-mfe-lovoFcgw.mjs → aril-boot-mfe-aril-boot-mfe-D9YM2exR.mjs} +7 -7
- package/fesm2022/{aril-boot-mfe-aril-boot-mfe-lovoFcgw.mjs.map → aril-boot-mfe-aril-boot-mfe-D9YM2exR.mjs.map} +1 -1
- package/fesm2022/aril-boot-mfe.mjs +1 -1
- package/fesm2022/aril-boot-pages.mjs +6 -6
- package/fesm2022/aril-boot-pages.mjs.map +1 -1
- package/fesm2022/aril-http.mjs +3 -3
- package/fesm2022/aril-http.mjs.map +1 -1
- package/fesm2022/aril-i18n.mjs +7 -7
- package/fesm2022/aril-i18n.mjs.map +1 -1
- package/fesm2022/aril-keycloak.mjs.map +1 -1
- package/fesm2022/aril-provider.mjs +1 -1
- package/fesm2022/aril-provider.mjs.map +1 -1
- package/fesm2022/aril-selection.mjs +3 -3
- package/fesm2022/aril-selection.mjs.map +1 -1
- package/fesm2022/aril-theme-layout.mjs +74 -74
- package/fesm2022/aril-theme-layout.mjs.map +1 -1
- package/fesm2022/aril-ui-autoComplete.mjs +6 -6
- package/fesm2022/aril-ui-autoComplete.mjs.map +1 -1
- package/fesm2022/aril-ui-badge.mjs +4 -4
- package/fesm2022/aril-ui-badge.mjs.map +1 -1
- package/fesm2022/aril-ui-business-assetPicker.mjs +5 -5
- package/fesm2022/aril-ui-business-assetPicker.mjs.map +1 -1
- package/fesm2022/aril-ui-business-detailed-overlay-panel.mjs +5 -5
- package/fesm2022/aril-ui-business-detailed-overlay-panel.mjs.map +1 -1
- package/fesm2022/aril-ui-business-enumPicker.mjs +5 -5
- package/fesm2022/aril-ui-business-enumPicker.mjs.map +1 -1
- package/fesm2022/aril-ui-business-image-viewer.mjs +3 -3
- package/fesm2022/aril-ui-business-image-viewer.mjs.map +1 -1
- package/fesm2022/aril-ui-business-multiple-ref-value.mjs +4 -4
- package/fesm2022/aril-ui-business-multiple-ref-value.mjs.map +1 -1
- package/fesm2022/aril-ui-business-notification-templates-dialog.mjs +3 -3
- package/fesm2022/aril-ui-business-notification-templates-dialog.mjs.map +1 -1
- package/fesm2022/aril-ui-business-pdf-preview-modal.mjs +3 -3
- package/fesm2022/aril-ui-business-pdf-preview-modal.mjs.map +1 -1
- package/fesm2022/aril-ui-business-ref-value.mjs +4 -4
- package/fesm2022/aril-ui-business-ref-value.mjs.map +1 -1
- package/fesm2022/aril-ui-business-rolePicker.mjs +4 -4
- package/fesm2022/aril-ui-business-rolePicker.mjs.map +1 -1
- package/fesm2022/aril-ui-business-trace-drawer.mjs +10 -10
- package/fesm2022/aril-ui-business-trace-drawer.mjs.map +1 -1
- package/fesm2022/aril-ui-business-trace-id.mjs +4 -4
- package/fesm2022/aril-ui-business-trace-id.mjs.map +1 -1
- package/fesm2022/aril-ui-business-userPicker.mjs +3 -3
- package/fesm2022/aril-ui-business-userPicker.mjs.map +1 -1
- package/fesm2022/aril-ui-button.mjs +4 -4
- package/fesm2022/aril-ui-button.mjs.map +1 -1
- package/fesm2022/aril-ui-calendar.mjs +3 -3
- package/fesm2022/aril-ui-calendar.mjs.map +1 -1
- package/fesm2022/aril-ui-charts.mjs +6 -6
- package/fesm2022/aril-ui-charts.mjs.map +1 -1
- package/fesm2022/aril-ui-checkbox.mjs +6 -6
- package/fesm2022/aril-ui-checkbox.mjs.map +1 -1
- package/fesm2022/aril-ui-chip.mjs +4 -4
- package/fesm2022/aril-ui-chip.mjs.map +1 -1
- package/fesm2022/aril-ui-collapse-reorder-list.mjs +4 -4
- package/fesm2022/aril-ui-collapse-reorder-list.mjs.map +1 -1
- package/fesm2022/aril-ui-dxField.mjs +4 -4
- package/fesm2022/aril-ui-dxField.mjs.map +1 -1
- package/fesm2022/aril-ui-editor.mjs +4 -4
- package/fesm2022/aril-ui-editor.mjs.map +1 -1
- package/fesm2022/aril-ui-field.mjs +4 -4
- package/fesm2022/aril-ui-field.mjs.map +1 -1
- package/fesm2022/aril-ui-fileUpload.mjs +4 -4
- package/fesm2022/aril-ui-fileUpload.mjs.map +1 -1
- package/fesm2022/aril-ui-form.mjs +11 -11
- package/fesm2022/aril-ui-form.mjs.map +1 -1
- package/fesm2022/aril-ui-img-viewer.mjs +3 -3
- package/fesm2022/aril-ui-img-viewer.mjs.map +1 -1
- package/fesm2022/aril-ui-json-diff-comparison.mjs +4 -4
- package/fesm2022/aril-ui-json-diff-comparison.mjs.map +1 -1
- package/fesm2022/aril-ui-lib.mjs +22 -22
- package/fesm2022/aril-ui-lib.mjs.map +1 -1
- package/fesm2022/aril-ui-loader.mjs +3 -3
- package/fesm2022/aril-ui-loader.mjs.map +1 -1
- package/fesm2022/aril-ui-mask.mjs +3 -3
- package/fesm2022/aril-ui-mask.mjs.map +1 -1
- package/fesm2022/aril-ui-multiSelect.mjs +3 -3
- package/fesm2022/aril-ui-multiSelect.mjs.map +1 -1
- package/fesm2022/aril-ui-number.mjs +3 -3
- package/fesm2022/aril-ui-number.mjs.map +1 -1
- package/fesm2022/aril-ui-operation-types-dialog.mjs +3 -3
- package/fesm2022/aril-ui-operation-types-dialog.mjs.map +1 -1
- package/fesm2022/aril-ui-panel.mjs +4 -4
- package/fesm2022/aril-ui-panel.mjs.map +1 -1
- package/fesm2022/aril-ui-password.mjs +3 -3
- package/fesm2022/aril-ui-password.mjs.map +1 -1
- package/fesm2022/aril-ui-pdf-viewer.mjs +3 -3
- package/fesm2022/aril-ui-pdf-viewer.mjs.map +1 -1
- package/fesm2022/aril-ui-progressbar.mjs +3 -3
- package/fesm2022/aril-ui-progressbar.mjs.map +1 -1
- package/fesm2022/aril-ui-radioButton.mjs +3 -3
- package/fesm2022/aril-ui-radioButton.mjs.map +1 -1
- package/fesm2022/aril-ui-relativeDateSelector.mjs +4 -4
- package/fesm2022/aril-ui-relativeDateSelector.mjs.map +1 -1
- package/fesm2022/aril-ui-selectBox.mjs +5 -5
- package/fesm2022/aril-ui-selectBox.mjs.map +1 -1
- package/fesm2022/aril-ui-switch.mjs +3 -3
- package/fesm2022/aril-ui-switch.mjs.map +1 -1
- package/fesm2022/aril-ui-table-expand.mjs +14 -14
- package/fesm2022/aril-ui-table-expand.mjs.map +1 -1
- package/fesm2022/aril-ui-table.mjs +15 -15
- package/fesm2022/aril-ui-table.mjs.map +1 -1
- package/fesm2022/aril-ui-tag.mjs +3 -3
- package/fesm2022/aril-ui-tag.mjs.map +1 -1
- package/fesm2022/aril-ui-tagBox.mjs +5 -5
- package/fesm2022/aril-ui-tagBox.mjs.map +1 -1
- package/fesm2022/aril-ui-text.mjs +3 -3
- package/fesm2022/aril-ui-text.mjs.map +1 -1
- package/fesm2022/aril-ui-textArea.mjs +3 -3
- package/fesm2022/aril-ui-textArea.mjs.map +1 -1
- package/fesm2022/aril-ui-toggle-button.mjs +4 -4
- package/fesm2022/aril-ui-toggle-button.mjs.map +1 -1
- package/fesm2022/aril-ui-translate-input.mjs +6 -6
- package/fesm2022/aril-ui-translate-input.mjs.map +1 -1
- package/fesm2022/aril-ui-tree.mjs +4 -4
- package/fesm2022/aril-ui-tree.mjs.map +1 -1
- package/fesm2022/aril-ui-treeSelect.mjs +4 -4
- package/fesm2022/aril-ui-treeSelect.mjs.map +1 -1
- package/fesm2022/aril-ui-value.mjs +5 -5
- package/fesm2022/aril-ui-value.mjs.map +1 -1
- package/fesm2022/aril-util-activity.mjs +3 -3
- package/fesm2022/aril-util-activity.mjs.map +1 -1
- package/fesm2022/aril-util-block.mjs +3 -3
- package/fesm2022/aril-util-block.mjs.map +1 -1
- package/fesm2022/aril-util-directives.mjs +10 -10
- package/fesm2022/aril-util-directives.mjs.map +1 -1
- package/fesm2022/aril-util-lib.mjs +3 -3
- package/fesm2022/aril-util-lib.mjs.map +1 -1
- package/fesm2022/aril-util-pipes.mjs +18 -18
- package/fesm2022/aril-util-pipes.mjs.map +1 -1
- package/fesm2022/aril-util-primitive-extensions.mjs.map +1 -1
- package/fesm2022/aril-util-pub-sub.mjs +3 -3
- package/fesm2022/aril-util-pub-sub.mjs.map +1 -1
- package/fesm2022/aril-util-sync-active-tab-route.mjs +4 -4
- package/fesm2022/aril-util-sync-active-tab-route.mjs.map +1 -1
- package/fesm2022/aril.mjs +9 -9
- package/fesm2022/aril.mjs.map +1 -1
- package/package.json +160 -160
- package/scripts/mf-shared.js +47 -47
- package/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.d.ts +16 -0
- package/theme/layout/app/history/history-sidebar.component.d.ts +16 -0
- package/theme/layout/app/notifications/notifications-sidebar.component.d.ts +16 -0
- package/theme/layout/app/site-map/site-map-sidebar.component.d.ts +16 -0
- package/theme/layout/service/tab-session.service.ts +138 -138
- package/ui/autoComplete/src/auto-complete.component.d.ts +8 -8
- package/ui/badge/src/badge.component.d.ts +9 -9
- package/ui/button/src/button.component.d.ts +12 -12
- package/ui/calendar/src/calendar.component.d.ts +22 -22
- package/ui/charts/src/highCharts/gauge/solid-gauge.component.d.ts +3 -3
- package/ui/charts/src/highCharts/line/line-chart-datetime-axis.component.d.ts +5 -5
- package/ui/checkbox/src/check-box.component.d.ts +3 -3
- package/ui/checkbox/src/tri-state-checkbox.component.d.ts +2 -2
- package/ui/chip/src/chip.component.d.ts +7 -7
- package/ui/collapse-reorder-list/src/collapse-reorder-list.component.d.ts +4 -4
- package/ui/dxField/src/dx-field.component.d.ts +5 -5
- package/ui/editor/src/aril-editor.component.d.ts +3 -3
- package/ui/field/src/field.component.d.ts +9 -9
- package/ui/fileUpload/src/file-upload.component.d.ts +14 -14
- package/ui/form/src/form-submit-button.component.d.ts +1 -1
- package/ui/form/src/form.component.d.ts +1 -1
- package/ui/img-viewer/src/img-viewer.component.d.ts +1 -1
- package/ui/lib/src/form/form-error-message.directive.d.ts +1 -1
- package/ui/mask/src/mask.component.d.ts +6 -6
- package/ui/multiSelect/src/multi-select.component.d.ts +13 -13
- package/ui/number/src/number.component.d.ts +15 -15
- package/ui/panel/src/panel.component.d.ts +6 -6
- package/ui/password/src/password.component.d.ts +4 -4
- package/ui/pdf-viewer/src/pdf-viewer.component.d.ts +12 -12
- package/ui/progressbar/src/progressbar.component.d.ts +3 -3
- package/ui/radioButton/src/radio-button.component.d.ts +3 -3
- package/ui/selectBox/src/select-box.component.d.ts +9 -9
- package/ui/switch/src/switch.component.d.ts +1 -1
- package/ui/table/src/export-overlay-panel.component.d.ts +2 -2
- package/ui/table/src/table-column.component.d.ts +11 -11
- package/ui/table/src/table.component.d.ts +35 -35
- package/ui/table-expand/src/table-column.component.d.ts +6 -6
- package/ui/table-expand/src/table.component.d.ts +20 -20
- package/ui/tag/src/tag.component.d.ts +4 -6
- package/ui/tagBox/src/tag-box.component.d.ts +7 -7
- package/ui/text/src/text.component.d.ts +5 -5
- package/ui/textArea/src/text-area.component.d.ts +5 -5
- package/ui/toggle-button/src/toggle-button.component.d.ts +1 -1
- package/ui/translate-input/src/aril-translate-input.component.d.ts +2 -2
- package/ui/tree/src/tree.component.d.ts +8 -8
- package/ui/treeSelect/src/treeSelect.component.d.ts +12 -12
- package/ui/value/src/value.component.d.ts +15 -15
- package/ui-business/assetPicker/src/asset-picker.component.d.ts +11 -11
- package/ui-business/detailed-overlay-panel/src/detailed-overlay-panel.component.d.ts +3 -6
- package/ui-business/enumPicker/src/enum-picker.component.d.ts +23 -23
- package/ui-business/image-viewer/src/aril-image-viewer.component.d.ts +8 -8
- package/ui-business/multiple-ref-value/src/multiple-ref-value.component.d.ts +2 -5
- package/ui-business/ref-value/src/ref-value.component.d.ts +5 -5
- package/ui-business/rolePicker/src/role-picker.component.d.ts +6 -6
- package/ui-business/trace-drawer/src/trace-drawer.component.d.ts +8 -8
- package/ui-business/trace-id/src/trace-id.component.d.ts +6 -6
- package/ui-business/userPicker/src/user-picker.component.d.ts +3 -3
- package/util/block/src/block.d.ts +2 -2
- package/util/lib/src/types.d.ts +16 -0
- package/fesm2022/aril-app.component-MjG_tPEe.mjs.map +0 -1
- package/fesm2022/aril-boot-mfe-app.component-DtspQ3J8.mjs.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { NgZone,
|
|
1
|
+
import { NgZone, APP_INITIALIZER, importProvidersFrom, isDevMode } from '@angular/core';
|
|
2
2
|
import { createCustomElement } from '@angular/elements';
|
|
3
3
|
import { createApplication } from '@angular/platform-browser';
|
|
4
4
|
import { PrimeNGConfig } from 'primeng/api';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aril-boot-config-plugins.mjs","sources":["../../projects/aril/boot/config/plugins/src/getNgZone.ts","../../projects/aril/boot/config/plugins/src/interfaces.ts","../../projects/aril/boot/config/plugins/src/plugins.service.ts","../../projects/aril/boot/config/plugins/aril-boot-config-plugins.ts"],"sourcesContent":["import { NgZone } from '@angular/core';\r\n\r\nimport { bridge } from 'aril/boot/bridge';\r\n\r\n/**\r\n * Host shell'in NgZone'unu MFE/plugin Application'a inject eder (paylaşımlı zone).\r\n *\r\n * `hostNgZone` host bootstrap'inde (`AppComponent` constructor'ında `inject(NgZone)`)\r\n * set ediliyor. `getNgZone()` MFE/plugin bootstrap zamanında çağrılıyor → o anda\r\n * `hostNgZone` set edilmiş olmalı. Set edilmemişse explicit error: silent `undefined`\r\n * provider DI hatası \"no provider for NgZone\" gibi yanıltıcı bir mesajla patlardı.\r\n */\r\nexport const getNgZone = () => {\r\n\tif (!bridge.hostNgZone) {\r\n\t\tthrow new Error(\r\n\t\t\t'[getNgZone] bridge.hostNgZone henüz set edilmedi. ' +\r\n\t\t\t'Host shell bootstrap tamamlanmadan MFE/plugin getNgZone() çağıramaz.'\r\n\t\t);\r\n\t}\r\n\treturn { provide: NgZone, useValue: bridge.hostNgZone };\r\n};\r\n","import { LoadRemoteModuleScriptOptions } from '@angular-architects/module-federation';\r\n\r\ninterface PluginItem {\r\n\toptions: LoadRemoteModuleScriptOptions & { elementName: string };\r\n\tprops: { [key in string]: any };\r\n\tevents: { [key in string]: Function };\r\n}\r\n\r\nexport type PluginConfigs = { [key in string]: PluginItem };\r\n\r\nexport class FactoryClass {}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { APP_INITIALIZER, ApplicationConfig, Type, importProvidersFrom, isDevMode } from '@angular/core';\r\nimport { createCustomElement } from '@angular/elements';\r\nimport { createApplication } from '@angular/platform-browser';\r\n\r\nimport { PrimeNGConfig } from 'primeng/api';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { ConfirmPopupModule } from 'primeng/confirmpopup';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { MessagesModule } from 'primeng/messages';\r\nimport { ToastModule } from 'primeng/toast';\r\n\r\nimport { TranslocoService } from '@ngneat/transloco';\r\nimport { firstValueFrom, tap } from 'rxjs';\r\n\r\nimport { HOST_I18N_FOLDER, createBaseAppConfig } from 'aril/boot/base';\r\nimport { bridge } from 'aril/boot/bridge';\r\nimport { API_CONFIGS, ApiConfigsFactory } from 'aril/boot/config/api';\r\nimport { LanguageCode, TR_TRANSLATIONS } from 'aril/boot/config/translate';\r\nimport { HttpBackendService } from 'aril/http';\r\nimport { provideHost, provideHostRouter } from 'aril/provider';\r\nimport { ActivityService } from 'aril/util/activity';\r\n\r\nimport { getNgZone } from './getNgZone';\r\nimport { FactoryClass, PluginConfigs } from './interfaces';\r\n\r\nexport const PLUGINS = new FactoryClass() as FactoryClass & PluginConfigs;\r\n\r\nexport function loadPlugins(): () => void {\r\n\treturn () => {\r\n\t\ttry {\r\n\t\t\tconst pluginsData = bridge.pluginJson();\r\n\t\t\tObject.assign(PLUGINS, pluginsData);\r\n\t\t} catch (err) {\r\n\t\t\tconsole.log('Error Plugins Loading', err);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport async function bootPlugin(selector: string, component: Type<any>) {\r\n\tif (customElements.get(selector)) return;\r\n\r\n\tconst config: ApplicationConfig = {\r\n\t\tproviders: [\r\n\t\t\tcreateBaseAppConfig({ i18nFolder: HOST_I18N_FOLDER }),\r\n\t\t\tprovideHost(selector as any), // todo refactor\r\n\t\t\tprovideHostRouter(),\r\n\t\t\timportProvidersFrom(\r\n\t\t\t\tConfirmDialogModule,\r\n\t\t\t\tConfirmPopupModule,\r\n\t\t\t\tDialogModule,\r\n\t\t\t\tMessagesModule,\r\n\t\t\t\tToastModule\r\n\t\t\t),\r\n\t\t\tgetNgZone(),\r\n\t\t\t{\r\n\t\t\t\tprovide: APP_INITIALIZER,\r\n\t\t\t\tuseFactory: (\r\n\t\t\t\t\thttpBackend: { httpClient: HttpClient },\r\n\t\t\t\t\ttranslocoService: TranslocoService,\r\n\t\t\t\t\tprimeNgConfig: PrimeNGConfig,\r\n\t\t\t\t\tactivityService: ActivityService\r\n\t\t\t\t) => {\r\n\t\t\t\t\treturn async () => {\r\n\t\t\t\t\t\tconst activeLang: LanguageCode = (localStorage.getItem('lang') as LanguageCode) ?? LanguageCode.TR;\r\n\r\n\t\t\t\t\t\ttranslocoService.setActiveLang(activeLang);\r\n\r\n\t\t\t\t\t\tif (!activeLang?.length) {\r\n\t\t\t\t\t\t\tconsole.warn('No language selected');\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (activeLang === LanguageCode.TR) {\r\n\t\t\t\t\t\t\tprimeNgConfig.setTranslation(TR_TRANSLATIONS);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tconst observable$ = httpBackend.httpClient\r\n\t\t\t\t\t\t\t.get<ApiConfigsFactory>(isDevMode() ? './assets/local-configs/api.local.json' : './api.json')\r\n\t\t\t\t\t\t\t.pipe(\r\n\t\t\t\t\t\t\t\ttap((configs) => {\r\n\t\t\t\t\t\t\t\t\tObject.assign(API_CONFIGS, { ...configs });\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\tawait firstValueFrom(observable$);\r\n\t\t\t\t\t\tactivityService.start({ shellMode: false });\r\n\t\t\t\t\t};\r\n\t\t\t\t},\r\n\t\t\t\tdeps: [HttpBackendService, TranslocoService, PrimeNGConfig, ActivityService],\r\n\t\t\t\tmulti: true\r\n\t\t\t}\r\n\t\t]\r\n\t};\r\n\r\n\tconst appRef = await createApplication(config);\r\n\tconst plugin = createCustomElement(component, { injector: appRef.injector });\r\n\r\n\tcustomElements.define(selector, plugin);\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAIA;;;;;;;AAOG;AACI,MAAM,SAAS,GAAG,MAAK;AAC7B,IAAA,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;QACvB,MAAM,IAAI,KAAK,CACd,oDAAoD;AACpD,YAAA,sEAAsE,CACtE
|
|
1
|
+
{"version":3,"file":"aril-boot-config-plugins.mjs","sources":["../../projects/aril/boot/config/plugins/src/getNgZone.ts","../../projects/aril/boot/config/plugins/src/interfaces.ts","../../projects/aril/boot/config/plugins/src/plugins.service.ts","../../projects/aril/boot/config/plugins/aril-boot-config-plugins.ts"],"sourcesContent":["import { NgZone } from '@angular/core';\r\n\r\nimport { bridge } from 'aril/boot/bridge';\r\n\r\n/**\r\n * Host shell'in NgZone'unu MFE/plugin Application'a inject eder (paylaşımlı zone).\r\n *\r\n * `hostNgZone` host bootstrap'inde (`AppComponent` constructor'ında `inject(NgZone)`)\r\n * set ediliyor. `getNgZone()` MFE/plugin bootstrap zamanında çağrılıyor → o anda\r\n * `hostNgZone` set edilmiş olmalı. Set edilmemişse explicit error: silent `undefined`\r\n * provider DI hatası \"no provider for NgZone\" gibi yanıltıcı bir mesajla patlardı.\r\n */\r\nexport const getNgZone = () => {\r\n\tif (!bridge.hostNgZone) {\r\n\t\tthrow new Error(\r\n\t\t\t'[getNgZone] bridge.hostNgZone henüz set edilmedi. ' +\r\n\t\t\t'Host shell bootstrap tamamlanmadan MFE/plugin getNgZone() çağıramaz.'\r\n\t\t);\r\n\t}\r\n\treturn { provide: NgZone, useValue: bridge.hostNgZone };\r\n};\r\n","import { LoadRemoteModuleScriptOptions } from '@angular-architects/module-federation';\r\n\r\ninterface PluginItem {\r\n\toptions: LoadRemoteModuleScriptOptions & { elementName: string };\r\n\tprops: { [key in string]: any };\r\n\tevents: { [key in string]: Function };\r\n}\r\n\r\nexport type PluginConfigs = { [key in string]: PluginItem };\r\n\r\nexport class FactoryClass {}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { APP_INITIALIZER, ApplicationConfig, Type, importProvidersFrom, isDevMode } from '@angular/core';\r\nimport { createCustomElement } from '@angular/elements';\r\nimport { createApplication } from '@angular/platform-browser';\r\n\r\nimport { PrimeNGConfig } from 'primeng/api';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { ConfirmPopupModule } from 'primeng/confirmpopup';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { MessagesModule } from 'primeng/messages';\r\nimport { ToastModule } from 'primeng/toast';\r\n\r\nimport { TranslocoService } from '@ngneat/transloco';\r\nimport { firstValueFrom, tap } from 'rxjs';\r\n\r\nimport { HOST_I18N_FOLDER, createBaseAppConfig } from 'aril/boot/base';\r\nimport { bridge } from 'aril/boot/bridge';\r\nimport { API_CONFIGS, ApiConfigsFactory } from 'aril/boot/config/api';\r\nimport { LanguageCode, TR_TRANSLATIONS } from 'aril/boot/config/translate';\r\nimport { HttpBackendService } from 'aril/http';\r\nimport { provideHost, provideHostRouter } from 'aril/provider';\r\nimport { ActivityService } from 'aril/util/activity';\r\n\r\nimport { getNgZone } from './getNgZone';\r\nimport { FactoryClass, PluginConfigs } from './interfaces';\r\n\r\nexport const PLUGINS = new FactoryClass() as FactoryClass & PluginConfigs;\r\n\r\nexport function loadPlugins(): () => void {\r\n\treturn () => {\r\n\t\ttry {\r\n\t\t\tconst pluginsData = bridge.pluginJson();\r\n\t\t\tObject.assign(PLUGINS, pluginsData);\r\n\t\t} catch (err) {\r\n\t\t\tconsole.log('Error Plugins Loading', err);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport async function bootPlugin(selector: string, component: Type<any>) {\r\n\tif (customElements.get(selector)) return;\r\n\r\n\tconst config: ApplicationConfig = {\r\n\t\tproviders: [\r\n\t\t\tcreateBaseAppConfig({ i18nFolder: HOST_I18N_FOLDER }),\r\n\t\t\tprovideHost(selector as any), // todo refactor\r\n\t\t\tprovideHostRouter(),\r\n\t\t\timportProvidersFrom(\r\n\t\t\t\tConfirmDialogModule,\r\n\t\t\t\tConfirmPopupModule,\r\n\t\t\t\tDialogModule,\r\n\t\t\t\tMessagesModule,\r\n\t\t\t\tToastModule\r\n\t\t\t),\r\n\t\t\tgetNgZone(),\r\n\t\t\t{\r\n\t\t\t\tprovide: APP_INITIALIZER,\r\n\t\t\t\tuseFactory: (\r\n\t\t\t\t\thttpBackend: { httpClient: HttpClient },\r\n\t\t\t\t\ttranslocoService: TranslocoService,\r\n\t\t\t\t\tprimeNgConfig: PrimeNGConfig,\r\n\t\t\t\t\tactivityService: ActivityService\r\n\t\t\t\t) => {\r\n\t\t\t\t\treturn async () => {\r\n\t\t\t\t\t\tconst activeLang: LanguageCode = (localStorage.getItem('lang') as LanguageCode) ?? LanguageCode.TR;\r\n\r\n\t\t\t\t\t\ttranslocoService.setActiveLang(activeLang);\r\n\r\n\t\t\t\t\t\tif (!activeLang?.length) {\r\n\t\t\t\t\t\t\tconsole.warn('No language selected');\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (activeLang === LanguageCode.TR) {\r\n\t\t\t\t\t\t\tprimeNgConfig.setTranslation(TR_TRANSLATIONS);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tconst observable$ = httpBackend.httpClient\r\n\t\t\t\t\t\t\t.get<ApiConfigsFactory>(isDevMode() ? './assets/local-configs/api.local.json' : './api.json')\r\n\t\t\t\t\t\t\t.pipe(\r\n\t\t\t\t\t\t\t\ttap((configs) => {\r\n\t\t\t\t\t\t\t\t\tObject.assign(API_CONFIGS, { ...configs });\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\tawait firstValueFrom(observable$);\r\n\t\t\t\t\t\tactivityService.start({ shellMode: false });\r\n\t\t\t\t\t};\r\n\t\t\t\t},\r\n\t\t\t\tdeps: [HttpBackendService, TranslocoService, PrimeNGConfig, ActivityService],\r\n\t\t\t\tmulti: true\r\n\t\t\t}\r\n\t\t]\r\n\t};\r\n\r\n\tconst appRef = await createApplication(config);\r\n\tconst plugin = createCustomElement(component, { injector: appRef.injector });\r\n\r\n\tcustomElements.define(selector, plugin);\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAIA;;;;;;;AAOG;AACI,MAAM,SAAS,GAAG,MAAK;AAC7B,IAAA,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;QACvB,MAAM,IAAI,KAAK,CACd,oDAAoD;AACpD,YAAA,sEAAsE,CACtE;IACF;IACA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE;AACxD;;MCVa,YAAY,CAAA;AAAG;;ACgBrB,MAAM,OAAO,GAAG,IAAI,YAAY;SAEvB,WAAW,GAAA;AAC1B,IAAA,OAAO,MAAK;AACX,QAAA,IAAI;AACH,YAAA,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,EAAE;AACvC,YAAA,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC;QACpC;QAAE,OAAO,GAAG,EAAE;AACb,YAAA,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,GAAG,CAAC;QAC1C;AACD,IAAA,CAAC;AACF;AAEO,eAAe,UAAU,CAAC,QAAgB,EAAE,SAAoB,EAAA;AACtE,IAAA,IAAI,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE;AAElC,IAAA,MAAM,MAAM,GAAsB;AACjC,QAAA,SAAS,EAAE;AACV,YAAA,mBAAmB,CAAC,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC;AACrD,YAAA,WAAW,CAAC,QAAe,CAAC;AAC5B,YAAA,iBAAiB,EAAE;YACnB,mBAAmB,CAClB,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,WAAW,CACX;AACD,YAAA,SAAS,EAAE;AACX,YAAA;AACC,gBAAA,OAAO,EAAE,eAAe;gBACxB,UAAU,EAAE,CACX,WAAuC,EACvC,gBAAkC,EAClC,aAA4B,EAC5B,eAAgC,KAC7B;oBACH,OAAO,YAAW;AACjB,wBAAA,MAAM,UAAU,GAAkB,YAAY,CAAC,OAAO,CAAC,MAAM,CAAkB,IAAI,YAAY,CAAC,EAAE;AAElG,wBAAA,gBAAgB,CAAC,aAAa,CAAC,UAAU,CAAC;AAE1C,wBAAA,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE;AACxB,4BAAA,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC;4BACpC;wBACD;AAEA,wBAAA,IAAI,UAAU,KAAK,YAAY,CAAC,EAAE,EAAE;AACnC,4BAAA,aAAa,CAAC,cAAc,CAAC,eAAe,CAAC;wBAC9C;AAEA,wBAAA,MAAM,WAAW,GAAG,WAAW,CAAC;6BAC9B,GAAG,CAAoB,SAAS,EAAE,GAAG,uCAAuC,GAAG,YAAY;AAC3F,6BAAA,IAAI,CACJ,GAAG,CAAC,CAAC,OAAO,KAAI;4BACf,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC;wBAC3C,CAAC,CAAC,CACF;AAEF,wBAAA,MAAM,cAAc,CAAC,WAAW,CAAC;wBACjC,eAAe,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAC5C,oBAAA,CAAC;gBACF,CAAC;gBACD,IAAI,EAAE,CAAC,kBAAkB,EAAE,gBAAgB,EAAE,aAAa,EAAE,eAAe,CAAC;AAC5E,gBAAA,KAAK,EAAE;AACP;AACD;KACD;AAED,IAAA,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC;AAC9C,IAAA,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;AAE5E,IAAA,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC;AACxC;;ACnGA;;AAEG;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aril-boot-config-translate.mjs","sources":["../../projects/aril/boot/config/translate/primeng/i18n/tr.ts","../../projects/aril/boot/config/translate/constants.ts","../../projects/aril/boot/config/translate/aril-boot-config-translate.ts"],"sourcesContent":["export const TR_TRANSLATIONS = {\r\n\tmatchAll: 'Tümü',\r\n\tmatchAny: 'Herhangi biri',\r\n\tstartsWith: 'İle başlar',\r\n\tcontains: 'İçerir',\r\n\tnotContains: 'İçermez',\r\n\tnotEquals: 'Eşit değildir',\r\n\tendsWith: 'İle biter',\r\n\tequals: 'Eşittir',\r\n\tlt: 'Eşit değildir',\r\n\tlte: 'Küçük eşittir',\r\n\tgt: 'Büyüktür',\r\n\tgte: 'Büyük eşittir',\r\n\tis: 'Eşittir',\r\n\tisNot: 'Eşit değildir',\r\n\tbefore: 'Önce',\r\n\tafter: 'Sonra',\r\n\tclear: 'Temizle',\r\n\tapply: 'Uygula',\r\n\taddRule: 'Kural Ekle',\r\n\tremoveRule: 'Kural Kaldır',\r\n\taccept: 'Kabul Et',\r\n\treject: 'Reddet',\r\n\tchoose: 'Seç',\r\n\tupload: 'Yükle',\r\n\tcancel: 'İptal',\r\n\tdayNames: ['Pazar', 'Pazartesi', 'Salı', 'Çarşamba', 'Perşembe', 'Cuma', 'Cumartesi'],\r\n\tdayNamesShort: ['Paz', 'Pzt', 'Sal', 'Çar', 'Per', 'Cum', 'Cmt'],\r\n\tdayNamesMin: ['Pz', 'Pt', 'Sa', 'Ça', 'Pe', 'Cu', 'Ct'],\r\n\tmonthNames: [\r\n\t\t'Ocak',\r\n\t\t'Şubat',\r\n\t\t'Mart',\r\n\t\t'Nisan',\r\n\t\t'Mayıs',\r\n\t\t'Haziran',\r\n\t\t'Temmuz',\r\n\t\t'Ağustos',\r\n\t\t'Eylül',\r\n\t\t'Ekim',\r\n\t\t'Kasım',\r\n\t\t'Aralık'\r\n\t],\r\n\tmonthNamesShort: ['Oca', 'Şub', 'Mar', 'Nis', 'May', 'Haz', 'Tem', 'Ağu', 'Eyl', 'Eki', 'Kas', 'Ara'],\r\n\tdateFormat: 'dd/mm/yy',\r\n\tfirstDayOfWeek: 1,\r\n\ttoday: 'Bugün',\r\n\tweekHeader: 'Hafta',\r\n\tweak: 'Zayıf',\r\n\tmedium: 'Orta',\r\n\tstrong: 'Güçlü',\r\n\tpasswordPrompt: 'Şifre',\r\n\temptyMessage: 'Kayıt bulunamadı',\r\n\temptyFilterMessage: 'Eşleşen kayıt bulunamadı',\r\n\tdateIs: 'Tarih eşit',\r\n\tdateIsNot: 'Tarih eşit değil',\r\n\tdateBefore: 'Tarihten önce',\r\n\tdateAfter: 'Tarihten sonra'\r\n};\r\n","export enum LanguageCode {\r\n\tTR = 'tr',\r\n\tEN = 'en'\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"aril-boot-config-translate.mjs","sources":["../../projects/aril/boot/config/translate/primeng/i18n/tr.ts","../../projects/aril/boot/config/translate/constants.ts","../../projects/aril/boot/config/translate/aril-boot-config-translate.ts"],"sourcesContent":["export const TR_TRANSLATIONS = {\r\n\tmatchAll: 'Tümü',\r\n\tmatchAny: 'Herhangi biri',\r\n\tstartsWith: 'İle başlar',\r\n\tcontains: 'İçerir',\r\n\tnotContains: 'İçermez',\r\n\tnotEquals: 'Eşit değildir',\r\n\tendsWith: 'İle biter',\r\n\tequals: 'Eşittir',\r\n\tlt: 'Eşit değildir',\r\n\tlte: 'Küçük eşittir',\r\n\tgt: 'Büyüktür',\r\n\tgte: 'Büyük eşittir',\r\n\tis: 'Eşittir',\r\n\tisNot: 'Eşit değildir',\r\n\tbefore: 'Önce',\r\n\tafter: 'Sonra',\r\n\tclear: 'Temizle',\r\n\tapply: 'Uygula',\r\n\taddRule: 'Kural Ekle',\r\n\tremoveRule: 'Kural Kaldır',\r\n\taccept: 'Kabul Et',\r\n\treject: 'Reddet',\r\n\tchoose: 'Seç',\r\n\tupload: 'Yükle',\r\n\tcancel: 'İptal',\r\n\tdayNames: ['Pazar', 'Pazartesi', 'Salı', 'Çarşamba', 'Perşembe', 'Cuma', 'Cumartesi'],\r\n\tdayNamesShort: ['Paz', 'Pzt', 'Sal', 'Çar', 'Per', 'Cum', 'Cmt'],\r\n\tdayNamesMin: ['Pz', 'Pt', 'Sa', 'Ça', 'Pe', 'Cu', 'Ct'],\r\n\tmonthNames: [\r\n\t\t'Ocak',\r\n\t\t'Şubat',\r\n\t\t'Mart',\r\n\t\t'Nisan',\r\n\t\t'Mayıs',\r\n\t\t'Haziran',\r\n\t\t'Temmuz',\r\n\t\t'Ağustos',\r\n\t\t'Eylül',\r\n\t\t'Ekim',\r\n\t\t'Kasım',\r\n\t\t'Aralık'\r\n\t],\r\n\tmonthNamesShort: ['Oca', 'Şub', 'Mar', 'Nis', 'May', 'Haz', 'Tem', 'Ağu', 'Eyl', 'Eki', 'Kas', 'Ara'],\r\n\tdateFormat: 'dd/mm/yy',\r\n\tfirstDayOfWeek: 1,\r\n\ttoday: 'Bugün',\r\n\tweekHeader: 'Hafta',\r\n\tweak: 'Zayıf',\r\n\tmedium: 'Orta',\r\n\tstrong: 'Güçlü',\r\n\tpasswordPrompt: 'Şifre',\r\n\temptyMessage: 'Kayıt bulunamadı',\r\n\temptyFilterMessage: 'Eşleşen kayıt bulunamadı',\r\n\tdateIs: 'Tarih eşit',\r\n\tdateIsNot: 'Tarih eşit değil',\r\n\tdateBefore: 'Tarihten önce',\r\n\tdateAfter: 'Tarihten sonra'\r\n};\r\n","export enum LanguageCode {\r\n\tTR = 'tr',\r\n\tEN = 'en'\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAO,MAAM,eAAe,GAAG;AAC9B,IAAA,QAAQ,EAAE,MAAM;AAChB,IAAA,QAAQ,EAAE,eAAe;AACzB,IAAA,UAAU,EAAE,YAAY;AACxB,IAAA,QAAQ,EAAE,QAAQ;AAClB,IAAA,WAAW,EAAE,SAAS;AACtB,IAAA,SAAS,EAAE,eAAe;AAC1B,IAAA,QAAQ,EAAE,WAAW;AACrB,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,EAAE,EAAE,eAAe;AACnB,IAAA,GAAG,EAAE,eAAe;AACpB,IAAA,EAAE,EAAE,UAAU;AACd,IAAA,GAAG,EAAE,eAAe;AACpB,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,KAAK,EAAE,eAAe;AACtB,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,KAAK,EAAE,QAAQ;AACf,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,UAAU,EAAE,cAAc;AAC1B,IAAA,MAAM,EAAE,UAAU;AAClB,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC;AACrF,IAAA,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;AAChE,IAAA,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACvD,IAAA,UAAU,EAAE;QACX,MAAM;QACN,OAAO;QACP,MAAM;QACN,OAAO;QACP,OAAO;QACP,SAAS;QACT,QAAQ;QACR,SAAS;QACT,OAAO;QACP,MAAM;QACN,OAAO;QACP;AACA,KAAA;IACD,eAAe,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;AACrG,IAAA,UAAU,EAAE,UAAU;AACtB,IAAA,cAAc,EAAE,CAAC;AACjB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,UAAU,EAAE,OAAO;AACnB,IAAA,IAAI,EAAE,OAAO;AACb,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,cAAc,EAAE,OAAO;AACvB,IAAA,YAAY,EAAE,kBAAkB;AAChC,IAAA,kBAAkB,EAAE,0BAA0B;AAC9C,IAAA,MAAM,EAAE,YAAY;AACpB,IAAA,SAAS,EAAE,kBAAkB;AAC7B,IAAA,UAAU,EAAE,eAAe;AAC3B,IAAA,SAAS,EAAE;;;ICzDA;AAAZ,CAAA,UAAY,YAAY,EAAA;AACvB,IAAA,YAAA,CAAA,IAAA,CAAA,GAAA,IAAS;AACT,IAAA,YAAA,CAAA,IAAA,CAAA,GAAA,IAAS;AACV,CAAC,EAHW,YAAY,KAAZ,YAAY,GAAA,EAAA,CAAA,CAAA;;ACAxB;;AAEG;;;;"}
|
|
@@ -3,7 +3,7 @@ import { HttpClient } from '@angular/common/http';
|
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
4
|
import { inject, NgZone, Component, APP_INITIALIZER } from '@angular/core';
|
|
5
5
|
import { bootstrapApplication } from '@angular/platform-browser';
|
|
6
|
-
import {
|
|
6
|
+
import { RouteReuseStrategy, UrlSerializer, Router, provideRouter, withComponentInputBinding, withHashLocation, withRouterConfig } from '@angular/router';
|
|
7
7
|
import { KeycloakService } from 'keycloak-angular';
|
|
8
8
|
import { createBaseAppConfig, HOST_I18N_FOLDER } from 'aril/boot/base';
|
|
9
9
|
import * as i3 from 'aril/boot/bridge';
|
|
@@ -46,10 +46,10 @@ class AppComponent {
|
|
|
46
46
|
}
|
|
47
47
|
});
|
|
48
48
|
}
|
|
49
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
50
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
49
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppComponent, deps: [{ token: i1.LayoutService }, { token: i2.PubSubService }, { token: i3.MfeBridge }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
50
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AppComponent, isStandalone: true, selector: "aril-root", ngImport: i0, template: ` <app-layout></app-layout> `, isInline: true, dependencies: [{ kind: "component", type: AppLayoutComponent, selector: "app-layout" }] }); }
|
|
51
51
|
}
|
|
52
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
52
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppComponent, decorators: [{
|
|
53
53
|
type: Component,
|
|
54
54
|
args: [{
|
|
55
55
|
standalone: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aril-boot-host.mjs","sources":["../../projects/aril/boot/host/src/app.component.ts","../../projects/aril/boot/host/src/bootstrap.ts","../../projects/aril/boot/host/aril-boot-host.ts"],"sourcesContent":["import { Component, NgZone, inject } from '@angular/core';\r\n\r\nimport { MfeBridge } from 'aril/boot/bridge';\r\nimport { AppLayoutComponent, LayoutService } from 'aril/theme/layout';\r\nimport { PubSubService } from 'aril/util/pub-sub';\r\n\r\nimport { appName } from './bootstrap';\r\n\r\ntype MenuMode = 'static' | 'expandable';\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\tselector: 'aril-root',\r\n\ttemplate: ` <app-layout></app-layout> `,\r\n\timports: [AppLayoutComponent]\r\n})\r\nexport class AppComponent {\r\n\tconstructor(\r\n\t\tprivate readonly layoutService: LayoutService,\r\n\t\tprivate readonly pubSubService: PubSubService,\r\n\t\tprivate readonly bridgeSvc: MfeBridge\r\n\t) {\r\n\t\tthis.bridgeSvc.mirrorToWindow();\r\n\t\tthis.bridgeSvc.activeHost.set(appName);\r\n\t\tthis.bridgeSvc.hostNgZone = inject(NgZone);\r\n\r\n\t\tthis.pubSubService.subscribe('menuModeChanged', (data) => {\r\n\t\t\tconst menuMode = data?.custom;\r\n\r\n\t\t\tif (menuMode && (menuMode === 'static' || menuMode === 'expandable')) {\r\n\t\t\t\tthis.layoutService.config.update((config) => {\r\n\t\t\t\t\tconst newConfig = {\r\n\t\t\t\t\t\t...config,\r\n\t\t\t\t\t\tmenuMode: menuMode as MenuMode\r\n\t\t\t\t\t};\r\n\t\t\t\t\treturn newConfig;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (menuMode === 'static') {\r\n\t\t\t\t\tthis.layoutService.state.staticSidebarVisible = true;\r\n\t\t\t\t} else if (menuMode === 'expandable') {\r\n\t\t\t\t\tthis.layoutService.state.staticSidebarVisible = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Always close mobile menu on mode change\r\n\t\t\t\tthis.layoutService.state.staticMenuMobileActive = false;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n","import { Location } from '@angular/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { APP_INITIALIZER, ApplicationConfig } from '@angular/core';\r\nimport { bootstrapApplication } from '@angular/platform-browser';\r\nimport {\r\n\tRouteReuseStrategy,\r\n\tRouter,\r\n\tRoutes,\r\n\tUrlSerializer,\r\n\tprovideRouter,\r\n\twithComponentInputBinding,\r\n\twithHashLocation,\r\n\twithRouterConfig\r\n} from '@angular/router';\r\n\r\nimport { KeycloakService } from 'keycloak-angular';\r\n\r\nimport { HOST_I18N_FOLDER, createBaseAppConfig } from 'aril/boot/base';\r\nimport { bridge } from 'aril/boot/bridge';\r\nimport { loadApiConfigs, loadInitData } from 'aril/boot/config/api';\r\nimport { Apps, CustomRouteReuseStrategy, MicroAppService, TabAwareUrlSerializer } from 'aril/boot/config/apps';\r\nimport { loadPlugins } from 'aril/boot/config/plugins';\r\nimport { i18nFolderName } from 'aril/i18n';\r\nimport { ActivityService } from 'aril/util/activity';\r\n\r\nimport { AppComponent } from './app.component';\r\n\r\nexport var appName: Apps;\r\n\r\nexport const boot = (_appName: Apps, routes: Routes) => {\r\n\tappName = _appName;\r\n\tconst appConfig: ApplicationConfig = {\r\n\t\tproviders: [\r\n\t\t\tcreateBaseAppConfig({ i18nFolder: HOST_I18N_FOLDER }),\r\n\t\t\tprovideRouter(\r\n\t\t\t\troutes,\r\n\t\t\t\twithComponentInputBinding(),\r\n\t\t\t\twithHashLocation(),\r\n\t\t\t\twithRouterConfig({ onSameUrlNavigation: 'reload' })\r\n\t\t\t),\r\n\t\t\t// `useExisting`: `CustomRouteReuseStrategy` `providedIn: 'root'` olduğu için root injector'da\r\n\t\t\t// zaten bir instance var. Router'a aynı instance'ı bağlamak ileride class'a doğrudan\r\n\t\t\t// erişmek isteyen tüketiciler (örn. test hook'ları, debug paneli) için tek-instance\r\n\t\t\t// garantisi sağlar.\r\n\t\t\t{\r\n\t\t\t\tprovide: RouteReuseStrategy,\r\n\t\t\t\tuseExisting: CustomRouteReuseStrategy\r\n\t\t\t},\r\n\t\t\t// `_tab` query param'ı address bar'dan strip eder; Router internal `queryParams`'ı korur.\r\n\t\t\t{\r\n\t\t\t\tprovide: UrlSerializer,\r\n\t\t\t\tuseExisting: TabAwareUrlSerializer\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tprovide: APP_INITIALIZER,\r\n\t\t\t\tuseFactory: (\r\n\t\t\t\t\thttpClient: HttpClient,\r\n\t\t\t\t\tkeycloak: KeycloakService,\r\n\t\t\t\t\trouter: Router,\r\n\t\t\t\t\tfolderName: typeof i18nFolderName,\r\n\t\t\t\t\tmicroAppService: MicroAppService,\r\n\t\t\t\t\tlocation: Location,\r\n\t\t\t\t\tactivityService: ActivityService\r\n\t\t\t\t) => {\r\n\t\t\t\t\tif (router) bridge.hostRouter = router;\r\n\t\t\t\t\tif (location) bridge.hostLocation = location;\r\n\r\n\t\t\t\t\tconst runLoadApiConfigs = loadApiConfigs(\r\n\t\t\t\t\t\thttpClient,\r\n\t\t\t\t\t\tkeycloak,\r\n\t\t\t\t\t\tfolderName as unknown as string,\r\n\t\t\t\t\t\tmicroAppService\r\n\t\t\t\t\t);\r\n\t\t\t\t\tconst runLoadInitData = loadInitData(httpClient);\r\n\t\t\t\t\tconst runLoadPlugins = loadPlugins();\r\n\t\t\t\t\treturn async () => {\r\n\t\t\t\t\t\tawait runLoadApiConfigs();\r\n\t\t\t\t\t\tawait runLoadInitData();\r\n\t\t\t\t\t\trunLoadPlugins();\r\n\t\t\t\t\t\tactivityService.start({ shellMode: true });\r\n\t\t\t\t\t};\r\n\t\t\t\t},\r\n\t\t\t\tmulti: true,\r\n\t\t\t\tdeps: [HttpClient, KeycloakService, Router, i18nFolderName, MicroAppService, Location, ActivityService]\r\n\t\t\t}\r\n\t\t]\r\n\t};\r\n\r\n\tbootstrapApplication(AppComponent, appConfig).catch((err) => console.error(err));\r\n};\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;MAgBa,YAAY,CAAA;AACxB,IAAA,WAAA,CACkB,aAA4B,EAC5B,aAA4B,EAC5B,SAAoB,EAAA;QAFpB,
|
|
1
|
+
{"version":3,"file":"aril-boot-host.mjs","sources":["../../projects/aril/boot/host/src/app.component.ts","../../projects/aril/boot/host/src/bootstrap.ts","../../projects/aril/boot/host/aril-boot-host.ts"],"sourcesContent":["import { Component, NgZone, inject } from '@angular/core';\r\n\r\nimport { MfeBridge } from 'aril/boot/bridge';\r\nimport { AppLayoutComponent, LayoutService } from 'aril/theme/layout';\r\nimport { PubSubService } from 'aril/util/pub-sub';\r\n\r\nimport { appName } from './bootstrap';\r\n\r\ntype MenuMode = 'static' | 'expandable';\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\tselector: 'aril-root',\r\n\ttemplate: ` <app-layout></app-layout> `,\r\n\timports: [AppLayoutComponent]\r\n})\r\nexport class AppComponent {\r\n\tconstructor(\r\n\t\tprivate readonly layoutService: LayoutService,\r\n\t\tprivate readonly pubSubService: PubSubService,\r\n\t\tprivate readonly bridgeSvc: MfeBridge\r\n\t) {\r\n\t\tthis.bridgeSvc.mirrorToWindow();\r\n\t\tthis.bridgeSvc.activeHost.set(appName);\r\n\t\tthis.bridgeSvc.hostNgZone = inject(NgZone);\r\n\r\n\t\tthis.pubSubService.subscribe('menuModeChanged', (data) => {\r\n\t\t\tconst menuMode = data?.custom;\r\n\r\n\t\t\tif (menuMode && (menuMode === 'static' || menuMode === 'expandable')) {\r\n\t\t\t\tthis.layoutService.config.update((config) => {\r\n\t\t\t\t\tconst newConfig = {\r\n\t\t\t\t\t\t...config,\r\n\t\t\t\t\t\tmenuMode: menuMode as MenuMode\r\n\t\t\t\t\t};\r\n\t\t\t\t\treturn newConfig;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (menuMode === 'static') {\r\n\t\t\t\t\tthis.layoutService.state.staticSidebarVisible = true;\r\n\t\t\t\t} else if (menuMode === 'expandable') {\r\n\t\t\t\t\tthis.layoutService.state.staticSidebarVisible = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Always close mobile menu on mode change\r\n\t\t\t\tthis.layoutService.state.staticMenuMobileActive = false;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n","import { Location } from '@angular/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { APP_INITIALIZER, ApplicationConfig } from '@angular/core';\r\nimport { bootstrapApplication } from '@angular/platform-browser';\r\nimport {\r\n\tRouteReuseStrategy,\r\n\tRouter,\r\n\tRoutes,\r\n\tUrlSerializer,\r\n\tprovideRouter,\r\n\twithComponentInputBinding,\r\n\twithHashLocation,\r\n\twithRouterConfig\r\n} from '@angular/router';\r\n\r\nimport { KeycloakService } from 'keycloak-angular';\r\n\r\nimport { HOST_I18N_FOLDER, createBaseAppConfig } from 'aril/boot/base';\r\nimport { bridge } from 'aril/boot/bridge';\r\nimport { loadApiConfigs, loadInitData } from 'aril/boot/config/api';\r\nimport { Apps, CustomRouteReuseStrategy, MicroAppService, TabAwareUrlSerializer } from 'aril/boot/config/apps';\r\nimport { loadPlugins } from 'aril/boot/config/plugins';\r\nimport { i18nFolderName } from 'aril/i18n';\r\nimport { ActivityService } from 'aril/util/activity';\r\n\r\nimport { AppComponent } from './app.component';\r\n\r\nexport var appName: Apps;\r\n\r\nexport const boot = (_appName: Apps, routes: Routes) => {\r\n\tappName = _appName;\r\n\tconst appConfig: ApplicationConfig = {\r\n\t\tproviders: [\r\n\t\t\tcreateBaseAppConfig({ i18nFolder: HOST_I18N_FOLDER }),\r\n\t\t\tprovideRouter(\r\n\t\t\t\troutes,\r\n\t\t\t\twithComponentInputBinding(),\r\n\t\t\t\twithHashLocation(),\r\n\t\t\t\twithRouterConfig({ onSameUrlNavigation: 'reload' })\r\n\t\t\t),\r\n\t\t\t// `useExisting`: `CustomRouteReuseStrategy` `providedIn: 'root'` olduğu için root injector'da\r\n\t\t\t// zaten bir instance var. Router'a aynı instance'ı bağlamak ileride class'a doğrudan\r\n\t\t\t// erişmek isteyen tüketiciler (örn. test hook'ları, debug paneli) için tek-instance\r\n\t\t\t// garantisi sağlar.\r\n\t\t\t{\r\n\t\t\t\tprovide: RouteReuseStrategy,\r\n\t\t\t\tuseExisting: CustomRouteReuseStrategy\r\n\t\t\t},\r\n\t\t\t// `_tab` query param'ı address bar'dan strip eder; Router internal `queryParams`'ı korur.\r\n\t\t\t{\r\n\t\t\t\tprovide: UrlSerializer,\r\n\t\t\t\tuseExisting: TabAwareUrlSerializer\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tprovide: APP_INITIALIZER,\r\n\t\t\t\tuseFactory: (\r\n\t\t\t\t\thttpClient: HttpClient,\r\n\t\t\t\t\tkeycloak: KeycloakService,\r\n\t\t\t\t\trouter: Router,\r\n\t\t\t\t\tfolderName: typeof i18nFolderName,\r\n\t\t\t\t\tmicroAppService: MicroAppService,\r\n\t\t\t\t\tlocation: Location,\r\n\t\t\t\t\tactivityService: ActivityService\r\n\t\t\t\t) => {\r\n\t\t\t\t\tif (router) bridge.hostRouter = router;\r\n\t\t\t\t\tif (location) bridge.hostLocation = location;\r\n\r\n\t\t\t\t\tconst runLoadApiConfigs = loadApiConfigs(\r\n\t\t\t\t\t\thttpClient,\r\n\t\t\t\t\t\tkeycloak,\r\n\t\t\t\t\t\tfolderName as unknown as string,\r\n\t\t\t\t\t\tmicroAppService\r\n\t\t\t\t\t);\r\n\t\t\t\t\tconst runLoadInitData = loadInitData(httpClient);\r\n\t\t\t\t\tconst runLoadPlugins = loadPlugins();\r\n\t\t\t\t\treturn async () => {\r\n\t\t\t\t\t\tawait runLoadApiConfigs();\r\n\t\t\t\t\t\tawait runLoadInitData();\r\n\t\t\t\t\t\trunLoadPlugins();\r\n\t\t\t\t\t\tactivityService.start({ shellMode: true });\r\n\t\t\t\t\t};\r\n\t\t\t\t},\r\n\t\t\t\tmulti: true,\r\n\t\t\t\tdeps: [HttpClient, KeycloakService, Router, i18nFolderName, MicroAppService, Location, ActivityService]\r\n\t\t\t}\r\n\t\t]\r\n\t};\r\n\r\n\tbootstrapApplication(AppComponent, appConfig).catch((err) => console.error(err));\r\n};\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { LocationStrategy } from '@angular/common';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { inject, ElementRef, effect, Component } from '@angular/core';
|
|
3
|
+
import { inject, ElementRef, effect, untracked, Component } from '@angular/core';
|
|
4
4
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
5
5
|
import * as i1 from '@angular/router';
|
|
6
6
|
import { EventType } from '@angular/router';
|
|
@@ -8,7 +8,7 @@ import { ModuleFederationToolsModule } from '@angular-architects/module-federati
|
|
|
8
8
|
import { safeNavigate } from 'aril/boot/config/apps';
|
|
9
9
|
import { LanguageCode, TR_TRANSLATIONS } from 'aril/boot/config/translate';
|
|
10
10
|
import { BreadcrumbService, MFELayoutComponent } from 'aril/theme/layout';
|
|
11
|
-
import { a as appName } from './aril-boot-mfe-aril-boot-mfe-
|
|
11
|
+
import { a as appName } from './aril-boot-mfe-aril-boot-mfe-D9YM2exR.mjs';
|
|
12
12
|
import * as i2 from '@ngneat/transloco';
|
|
13
13
|
import * as i3 from 'primeng/api';
|
|
14
14
|
import * as i4 from 'aril/boot/bridge';
|
|
@@ -119,7 +119,12 @@ class AppComponent {
|
|
|
119
119
|
if (!lastUrl || !lastTabIdForTitle)
|
|
120
120
|
return;
|
|
121
121
|
const title = computeTabTitle();
|
|
122
|
-
|
|
122
|
+
// `untracked`: `activeMFEUrl` SHARED signal'dır (bridge'de tek instance). Aynı remote'un
|
|
123
|
+
// iki tab'ı tek `sharedAppRef` → tek effect-scheduler paylaşır; bu read TRACKED olsaydı
|
|
124
|
+
// tab A'nın yazısı tab B'nin effect'ini (ve tersini) AYNI flush içinde tetikler → flush
|
|
125
|
+
// kuyruğu boşalmaz, sonsuz döngü, app donar. Değer yalnız aşağıdaki dedupe guard'ı için
|
|
126
|
+
// okunur; re-run tetiklemesi İSTENMEZ — effect'i yalnız tab-local `keyValues()` sürmeli.
|
|
127
|
+
const prev = untracked(() => this.bridgeSvc.activeMFEUrl());
|
|
123
128
|
if (prev?.tabId === lastTabIdForTitle && prev?.url === lastUrl && prev?.title === title) {
|
|
124
129
|
return;
|
|
125
130
|
}
|
|
@@ -168,10 +173,10 @@ class AppComponent {
|
|
|
168
173
|
this.primeNgConfig.setTranslation(TR_TRANSLATIONS);
|
|
169
174
|
}
|
|
170
175
|
}
|
|
171
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
172
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
176
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppComponent, deps: [{ token: i1.Router }, { token: i2.TranslocoService }, { token: i3.PrimeNGConfig }, { token: i4.MfeBridge }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
177
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AppComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: `<mfe-layout></mfe-layout>`, isInline: true, dependencies: [{ kind: "ngmodule", type: ModuleFederationToolsModule }, { kind: "component", type: MFELayoutComponent, selector: "mfe-layout" }] }); }
|
|
173
178
|
}
|
|
174
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
179
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppComponent, decorators: [{
|
|
175
180
|
type: Component,
|
|
176
181
|
args: [{
|
|
177
182
|
standalone: true,
|
|
@@ -181,4 +186,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
181
186
|
}], ctorParameters: () => [{ type: i1.Router }, { type: i2.TranslocoService }, { type: i3.PrimeNGConfig }, { type: i4.MfeBridge }] });
|
|
182
187
|
|
|
183
188
|
export { AppComponent };
|
|
184
|
-
//# sourceMappingURL=aril-boot-mfe-app.component-
|
|
189
|
+
//# sourceMappingURL=aril-boot-mfe-app.component-DovYRbZO.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aril-boot-mfe-app.component-DovYRbZO.mjs","sources":["../../projects/aril/boot/mfe/src/app.component.ts"],"sourcesContent":["import { LocationStrategy } from '@angular/common';\r\nimport { Component, ElementRef, effect, inject, untracked } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { EventType, Router, type Event as RouterEvent } from '@angular/router';\r\n\r\nimport { PrimeNGConfig } from 'primeng/api';\r\n\r\nimport { ModuleFederationToolsModule } from '@angular-architects/module-federation-tools';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\n\r\nimport { MfeBridge } from 'aril/boot/bridge';\r\nimport { safeNavigate } from 'aril/boot/config/apps';\r\nimport { LanguageCode, TR_TRANSLATIONS } from 'aril/boot/config/translate';\r\nimport { BreadcrumbService, MFELayoutComponent } from 'aril/theme/layout';\r\n\r\nimport { appName } from './bootstrap';\r\n\r\n/**\r\n * Tab izolasyonlu MFE app root.\r\n *\r\n * Her `<app-${appName}>` custom element instance'ı kendi `createApplication`'ını yarattığı için\r\n * (bkz. `bootstrap.ts` `MFEAppElement`), `AppComponent` constructor'ı her tab için **bağımsız**\r\n * çalışır — paylaşılan Injector/Router yok. Bu yüzden host Router subscription'ı her tab için\r\n * ayrı kurulur ama \"tab-id filter\" ile **sadece o tab'a ait** `NavigationEnd`'leri MFE Router'a\r\n * iletir; diğer tab'lerin navigation'ları ignore edilir.\r\n *\r\n * Tab kimliği `<app-${appName}>` element'inde `aril-tab-id` attribute olarak yazılır\r\n * (`ArilWebComponentWrapper` route.queryParams._tab'ten okuyup set eder). Filter karşılaştırması:\r\n * `window.history.state._tab === tabId` — `navigateToTab` `extras.state._tab` ile yazıyor.\r\n */\r\n@Component({\r\n\tstandalone: true,\r\n\ttemplate: `<mfe-layout></mfe-layout>`,\r\n\timports: [ModuleFederationToolsModule, MFELayoutComponent]\r\n})\r\nexport class AppComponent {\r\n\tprivate readonly elementRef = inject(ElementRef);\r\n\r\n\tconstructor(\r\n\t\tprivate readonly router: Router,\r\n\t\tprivate readonly translocoService: TranslocoService,\r\n\t\tprivate readonly primeNgConfig: PrimeNGConfig,\r\n\t\tprivate readonly bridgeSvc: MfeBridge\r\n\t) {\r\n\t\t// Bu tab'ın kimliği — wrapper component `aril-tab-id` attribute olarak yazıyor.\r\n\t\t// İlk yükleme cycle'ında URL'de henüz `_tab` yok; NavService `firstCheckForRoute`\r\n\t\t// sonradan `replaceUrl` ile ekliyor. Wrapper queryParams.subscribe ile attribute'u\r\n\t\t// güncelliyor — bu yüzden constructor'da değil, her NavigationEnd'de fresh okuyoruz.\r\n\t\tconst readMyTabId = (): string => (this.elementRef.nativeElement as HTMLElement).getAttribute('aril-tab-id') ?? '';\r\n\r\n\t\tconst initialTabId = readMyTabId();\r\n\t\tconst locStrategy = inject(LocationStrategy);\r\n\t\tconst sameRouter = this.router === this.bridgeSvc.hostRouter;\r\n\t\tconsole.log(\r\n\t\t\t`[MFE:${appName}] host modu — tab=\"${initialTabId || '(pending)'}\" ` +\r\n\t\t\t\t`LocationStrategy=${locStrategy.constructor.name} ` +\r\n\t\t\t\t`router===hostRouter? ${sameRouter}`\r\n\t\t);\r\n\t\tconst initial = this.bridgeSvc.hostRouter!.url;\r\n\t\tconsole.log(`[MFE:${appName}] initial sync:`, initial);\r\n\t\tsafeNavigate(this.router, initial);\r\n\r\n\t\t// MFE içi `routerLink`/`router.navigate` host Router'a yansımıyor (IsolatedLocationStrategy\r\n\t\t// browser hash'ı değiştirmiyor) — NavService tab navLink'ini güncelleyemiyor.\r\n\t\t// MFE NavigationEnd'i `bridge.activeMFEUrl`'a (kaynak tabId ile) yazarız;\r\n\t\t// AppLayoutComponent effect → `syncActiveTabNavLinkForTab(tabId, url)` ile sadece\r\n\t\t// kaynak tab'ın navLink'i güncellenir → cross-tab kontaminasyonu yok.\r\n\t\t// Tab title resolve — kaynak öncelik sırası (en spesifik → en geniş):\r\n\t\t// 1. `route.title` (ÖNERİLEN — Angular Router 16+ standardı, sayfa <title>'ını da set eder)\r\n\t\t// 2. `data.tabName` (ÖNERİLEN — tab adı sayfa <title>'ından farklı olmalıysa)\r\n\t\t// 3. `data.title` (DEPRECATED — geriye uyumluluk için var; yeni route'larda kullanmayın,\r\n\t\t// `route.title` ile aynı semantiği taşıyor ama Angular contract dışı kalıyor)\r\n\t\t// 4. `data.breadcrumb` — mevcut breadcrumb template'i fallback olarak kullanılır\r\n\t\t// (single-brace `{key}` placeholder, literal string, i18n YOK)\r\n\t\t//\r\n\t\t// i18n key'lerinde `{{placeholder}}` Transloco interpolation'ı `BreadcrumbService.keyValues`\r\n\t\t// ile doldurulur. Component cevap geldiğinde `breadcrumbService.set('GatewayMaterialSerialNumber',\r\n\t\t// '12345')` her iki path'i de besler — effect ile re-compute, dinamik tab adı\r\n\t\t// (\"12345 - Modem Detay\").\r\n\t\tconst breadcrumbService = inject(BreadcrumbService);\r\n\t\tconst computeTabTitle = (): string | undefined => {\r\n\t\t\tlet route = this.router.routerState.snapshot.root;\r\n\t\t\twhile (route.firstChild) route = route.firstChild;\r\n\t\t\tconst params = breadcrumbService.keyValues();\r\n\r\n\t\t\tconst i18nKey =\r\n\t\t\t\t(route.title as string | undefined) ??\r\n\t\t\t\t(route.data?.['title'] as string | undefined) ??\r\n\t\t\t\t(route.data?.['tabName'] as string | undefined);\r\n\t\t\tif (i18nKey) {\r\n\t\t\t\tconst translated = this.translocoService.translate(i18nKey, params);\r\n\t\t\t\treturn translated || i18nKey;\r\n\t\t\t}\r\n\r\n\t\t\tconst breadcrumb = route.data?.['breadcrumb'] as string | undefined;\r\n\t\t\tif (breadcrumb) {\r\n\t\t\t\treturn breadcrumb.replace(/\\{([^}]+)\\}/g, (_, key: string) => params[key] ?? '...');\r\n\t\t\t}\r\n\r\n\t\t\treturn undefined;\r\n\t\t};\r\n\r\n\t\tlet lastUrl: string | undefined;\r\n\t\tlet lastTabIdForTitle: string | undefined;\r\n\r\n\t\tthis.router.events.pipe(takeUntilDestroyed()).subscribe((event: RouterEvent) => {\r\n\t\t\tif (event.type === EventType.NavigationEnd) {\r\n\t\t\t\tconst url = event.urlAfterRedirects ?? event.url;\r\n\t\t\t\tconst myTabId = readMyTabId();\r\n\t\t\t\tif (!myTabId) return;\r\n\t\t\t\tlastUrl = url;\r\n\t\t\t\tlastTabIdForTitle = myTabId;\r\n\t\t\t\tconst title = computeTabTitle();\r\n\t\t\t\tconst prev = this.bridgeSvc.activeMFEUrl();\r\n\t\t\t\tif (prev?.tabId === myTabId && prev?.url === url && prev?.title === title) return;\r\n\t\t\t\tthis.bridgeSvc.activeMFEUrl.set({ tabId: myTabId, url, title });\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// Component cevap gelince `breadcrumbService.set('meterNo', '12345')` keyValues'ı\r\n\t\t// günceller; effect ile yakalayıp tab title'ı yeniden hesaplarız → \"12345 - Sayaç\r\n\t\t// Detayı\" gibi dinamik sonuçlar tab adına yansır.\r\n\t\teffect(\r\n\t\t\t() => {\r\n\t\t\t\tbreadcrumbService.keyValues();\r\n\t\t\t\tif (!lastUrl || !lastTabIdForTitle) return;\r\n\t\t\t\tconst title = computeTabTitle();\r\n\t\t\t\t// `untracked`: `activeMFEUrl` SHARED signal'dır (bridge'de tek instance). Aynı remote'un\r\n\t\t\t\t// iki tab'ı tek `sharedAppRef` → tek effect-scheduler paylaşır; bu read TRACKED olsaydı\r\n\t\t\t\t// tab A'nın yazısı tab B'nin effect'ini (ve tersini) AYNI flush içinde tetikler → flush\r\n\t\t\t\t// kuyruğu boşalmaz, sonsuz döngü, app donar. Değer yalnız aşağıdaki dedupe guard'ı için\r\n\t\t\t\t// okunur; re-run tetiklemesi İSTENMEZ — effect'i yalnız tab-local `keyValues()` sürmeli.\r\n\t\t\t\tconst prev = untracked(() => this.bridgeSvc.activeMFEUrl());\r\n\t\t\t\tif (prev?.tabId === lastTabIdForTitle && prev?.url === lastUrl && prev?.title === title) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tthis.bridgeSvc.activeMFEUrl.set({ tabId: lastTabIdForTitle, url: lastUrl, title });\r\n\t\t\t},\r\n\t\t\t{ allowSignalWrites: true }\r\n\t\t);\r\n\r\n\t\tconst mfePrefix = `/${appName}`;\r\n\r\n\t\tthis.bridgeSvc.hostRouter!.events.pipe(takeUntilDestroyed()).subscribe((event: RouterEvent) => {\r\n\t\t\tif (event.type === EventType.NavigationEnd) {\r\n\t\t\t\tconst target = event.urlAfterRedirects ?? event.url;\r\n\t\t\t\tif (target !== mfePrefix && !target.startsWith(`${mfePrefix}/`)) return;\r\n\t\t\t\t// **Tab izolasyonu filter**: navigation'ın hedef tab'ı bu instance mı?\r\n\t\t\t\t// `IsolatedLocationStrategy` sayesinde host'a sadece tab tıklamaları\r\n\t\t\t\t// (`tabState({_tab})` ile) gelir — `history.state._tab` her zaman dolu.\r\n\t\t\t\tconst myTabId = readMyTabId();\r\n\t\t\t\tif (myTabId) {\r\n\t\t\t\t\tconst navTabId = (window.history.state as Record<string, unknown> | null)?.['_tab'];\r\n\t\t\t\t\tif (navTabId !== myTabId) return;\r\n\t\t\t\t}\r\n\t\t\t\t// `lastNavigated`/`router.url===target` early-return YOK: izole Router'da (her tab\r\n\t\t\t\t// kendi Router'ı) bir tab'a geri dönüldüğünde MFE Router zaten hedef URL'dedir;\r\n\t\t\t\t// navigate atlanırsa NavigationEnd fire etmez → `BreadcrumbPublisherService` yeniden\r\n\t\t\t\t// yayın yapmaz ve app.layout tab geçişinde breadcrumb'ı `set([])` ile temizlediği için\r\n\t\t\t\t// breadcrumb boş kalır. `onSameUrlNavigation:'reload'` aynı URL'e navigate'i\r\n\t\t\t\t// NavigationEnd ile garanti eder → breadcrumb + tab navLink yeniden yayınlanır.\r\n\t\t\t\tconsole.log(`[MFE:${appName}] tab=\"${myTabId || '(pending)'}\" host NavigationEnd → navigate:`, target);\r\n\t\t\t\tsafeNavigate(this.router, target);\r\n\t\t\t} else if (event.type === EventType.NavigationCancel) {\r\n\t\t\t\tconsole.warn(`[MFE:${appName}] host NavigationCancel:`, event.url, 'reason:', event.reason);\r\n\t\t\t} else if (event.type === EventType.NavigationError) {\r\n\t\t\t\tconsole.error(`[MFE:${appName}] host NavigationError:`, event.url, 'err:', event.error);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.bridgeSvc.activeMF.set(appName);\r\n\t\tconst lang: LanguageCode = (localStorage.getItem('lang') as LanguageCode) ?? LanguageCode.TR;\r\n\r\n\t\tthis.translocoService.setActiveLang(lang);\r\n\r\n\t\tthis.setLocale(lang);\r\n\t}\r\n\r\n\tsetLocale(lang: LanguageCode) {\r\n\t\tif (!lang?.length) return;\r\n\r\n\t\tif (lang === LanguageCode.TR) {\r\n\t\t\tthis.primeNgConfig.setTranslation(TR_TRANSLATIONS);\r\n\t\t}\r\n\t}\r\n}\r\n"],"names":[],"mappings":"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"}
|
|
@@ -3,11 +3,11 @@ import { HttpClient } from '@angular/common/http';
|
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
4
|
import { Injectable, APP_INITIALIZER, importProvidersFrom, ɵINJECTOR_SCOPE as _INJECTOR_SCOPE, ApplicationRef, inject, EnvironmentInjector, createEnvironmentInjector, isDevMode, createComponent } from '@angular/core';
|
|
5
5
|
import { createApplication } from '@angular/platform-browser';
|
|
6
|
-
import {
|
|
6
|
+
import { RouteReuseStrategy, UrlSerializer, provideRouter, withComponentInputBinding, withRouterConfig, Router } from '@angular/router';
|
|
7
7
|
import { PrimeNGConfig, MessageService, ConfirmationService } from 'primeng/api';
|
|
8
8
|
import { TranslocoService } from '@ngneat/transloco';
|
|
9
9
|
import { KeycloakService } from 'keycloak-angular';
|
|
10
|
-
import {
|
|
10
|
+
import { NGX_MONACO_EDITOR_CONFIG, MonacoEditorModule } from 'ngx-monaco-editor-v2';
|
|
11
11
|
import { createBaseAppConfig } from 'aril/boot/base';
|
|
12
12
|
import { setApiConfigOnMFEMode } from 'aril/boot/config/api';
|
|
13
13
|
import { CustomRouteReuseStrategy, TabAwareUrlSerializer } from 'aril/boot/config/apps';
|
|
@@ -18,7 +18,7 @@ import { ActivityService } from 'aril/util/activity';
|
|
|
18
18
|
import { PubSubService } from 'aril/util/pub-sub';
|
|
19
19
|
|
|
20
20
|
const appComponentLoader = async () => {
|
|
21
|
-
const { AppComponent } = await import('./aril-boot-mfe-app.component-
|
|
21
|
+
const { AppComponent } = await import('./aril-boot-mfe-app.component-DovYRbZO.mjs');
|
|
22
22
|
return AppComponent;
|
|
23
23
|
};
|
|
24
24
|
|
|
@@ -154,10 +154,10 @@ class IsolatedLocationStrategy extends LocationStrategy {
|
|
|
154
154
|
getState() {
|
|
155
155
|
return this.internalState;
|
|
156
156
|
}
|
|
157
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
158
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.
|
|
157
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IsolatedLocationStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
158
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IsolatedLocationStrategy }); }
|
|
159
159
|
}
|
|
160
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
160
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IsolatedLocationStrategy, decorators: [{
|
|
161
161
|
type: Injectable
|
|
162
162
|
}], ctorParameters: () => [] });
|
|
163
163
|
|
|
@@ -680,4 +680,4 @@ const boot = (_appName, _routes, _menuItems) => {
|
|
|
680
680
|
*/
|
|
681
681
|
|
|
682
682
|
export { appName as a, boot as b };
|
|
683
|
-
//# sourceMappingURL=aril-boot-mfe-aril-boot-mfe-
|
|
683
|
+
//# sourceMappingURL=aril-boot-mfe-aril-boot-mfe-D9YM2exR.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aril-boot-mfe-aril-boot-mfe-lovoFcgw.mjs","sources":["../../projects/aril/boot/mfe/src/appComponentLoader.ts","../../projects/aril/boot/mfe/src/isolated-location-strategy.ts","../../projects/aril/boot/mfe/src/monaco.config.ts","../../projects/aril/boot/mfe/src/bootstrap.ts","../../projects/aril/boot/mfe/aril-boot-mfe.ts"],"sourcesContent":["export const appComponentLoader = async () => {\r\n\tconst { AppComponent } = await import('./app.component');\r\n\treturn AppComponent;\r\n};","import { LocationStrategy } from '@angular/common';\r\nimport { Injectable } from '@angular/core';\r\n\r\n/**\r\n * Host modda her MFE Application'ı için kullanılan custom `LocationStrategy`. Browser\r\n * URL'ine (`window.location.hash`) HİÇ YAZMAZ; tüm path/state internal alanlarda tutulur.\r\n *\r\n * Neden? Host modda host Router yegane URL kontrolcüsüdür. Eğer MFE Router da\r\n * `HashLocationStrategy` kullansaydı, MFE içindeki bir `routerLink` tıklaması browser hash'ını\r\n * değiştirir → `HashLocationStrategy` host Router'ı OTOMATİK tetikler → host Router'a\r\n * tabsız (state'siz) navigation gelir → Strategy yanlış componentRef yaratır, tab\r\n * izolasyonu bozulur. Bu otomatik sync'i kırmak için MFE Router'ın LocationStrategy'sini\r\n * isolate ediyoruz: MFE içi navigation MFE Router'ın internal state'inde kalır, browser'a\r\n * sızmaz, host'a istemsiz event göndermez.\r\n *\r\n * ## Tab içi history stack\r\n * Browser back/forward butonu yerine MFE içinde **tab-içi history stack** çalışır:\r\n * `pushState` her yeni navigation'da `backStack`'e mevcut konumu iter, `forwardStack`'i\r\n * temizler; `back()` ve `forward()` stack'ler arasında değiş tokuş yapıp `popstate` event'i\r\n * emit eder — Angular `Location` service bunu Router'a iletir, Router popstate-driven\r\n * navigation cycle başlatır. Sonuçta kullanıcı **detay → liste** gibi MFE içi geri dönüşleri\r\n * browser back butonuyla yapabilir, ama bu navigation **host Router'a yansımaz** → tab\r\n * izolasyonu korunur, \"geri\" başka tab'a atlatmaz.\r\n */\r\n@Injectable()\r\nexport class IsolatedLocationStrategy extends LocationStrategy {\r\n\t/**\r\n\t * Stack boyutu üst limiti — browser default'una (50 entry) yakın. Aşırı uzun\r\n\t * session'larda memory'i sınırlı tutar; sınır aşıldığında en eski entry düşürülür.\r\n\t */\r\n\tprivate static readonly MAX_STACK_SIZE = 50;\r\n\r\n\tprivate internalPath = '/';\r\n\tprivate internalState: unknown = null;\r\n\t/** Geri gidilebilecek path/state çiftleri (LIFO). */\r\n\tprivate backStack: { path: string; state: unknown }[] = [];\r\n\t/** İleri gidilebilecek path/state çiftleri (`back()` ile pop edilen entry'ler). */\r\n\tprivate forwardStack: { path: string; state: unknown }[] = [];\r\n\tprivate popStateHandlers: ((event: PopStateEvent) => void)[] = [];\r\n\t/**\r\n\t * `back/forward` sonrası Router'ın navigation cycle'ı sırasında çağrılabilen\r\n\t * `pushState`'i `backStack`'e tekrar itmemek için flag. `replaceState` zaten stack'i\r\n\t * değiştirmiyor — bu flag yalnızca pushState yolunu koruyor.\r\n\t */\r\n\tprivate isNavigatingViaHistory = false;\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tconsole.log('[IsolatedLocationStrategy] CONSTRUCTED — host modda MFE Router için aktif');\r\n\t}\r\n\r\n\toverride path(_includeHash?: boolean): string {\r\n\t\treturn this.internalPath;\r\n\t}\r\n\r\n\toverride prepareExternalUrl(internal: string): string {\r\n\t\t// Host `HashLocationStrategy` (withHashLocation) kullanıyor → MFE routerLink'lerinin\r\n\t\t// ürettiği `<a href>` (hover/kopyalama/orta-tık/yeni sekme) host ile uyumlu `#/...`\r\n\t\t// formatında olmalı. Sol-tık navigation'ı zaten host Router proxy üzerinden gider\r\n\t\t// (href kullanılmaz); bu override yalnız görünen/kopyalanan URL'i düzeltir.\r\n\t\treturn internal.length > 0 ? '#' + internal : internal;\r\n\t}\r\n\r\n\toverride pushState(state: unknown, _title: string, url: string, queryParams: string): void {\r\n\t\tconst fullPath = url + (queryParams ? `?${queryParams}` : '');\r\n\t\tconsole.log(`[IsolatedLocationStrategy] pushState url=\"${url}\" qs=\"${queryParams}\" viaHistory=${this.isNavigatingViaHistory}`);\r\n\t\tif (!this.isNavigatingViaHistory) {\r\n\t\t\t// Yeni navigation → mevcut konumu backStack'e it, forwardStack'i temizle\r\n\t\t\t// (browser semantiği: yeni sayfaya gidince forward history düşer).\r\n\t\t\tif (this.internalPath !== fullPath) {\r\n\t\t\t\tthis.backStack.push({ path: this.internalPath, state: this.internalState });\r\n\t\t\t\tif (this.backStack.length > IsolatedLocationStrategy.MAX_STACK_SIZE) {\r\n\t\t\t\t\tthis.backStack.shift();\r\n\t\t\t\t}\r\n\t\t\t\tthis.forwardStack = [];\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.internalPath = fullPath;\r\n\t\tthis.internalState = state;\r\n\t}\r\n\r\n\toverride replaceState(state: unknown, _title: string, url: string, queryParams: string): void {\r\n\t\tconsole.log(`[IsolatedLocationStrategy] replaceState url=\"${url}\" qs=\"${queryParams}\"`);\r\n\t\tthis.internalPath = url + (queryParams ? `?${queryParams}` : '');\r\n\t\tthis.internalState = state;\r\n\t}\r\n\r\n\toverride back(): void {\r\n\t\tconst prev = this.backStack.pop();\r\n\t\tif (!prev) return;\r\n\t\tthis.forwardStack.push({ path: this.internalPath, state: this.internalState });\r\n\t\tthis.internalPath = prev.path;\r\n\t\tthis.internalState = prev.state;\r\n\t\tthis.emitPopState();\r\n\t}\r\n\r\n\toverride forward(): void {\r\n\t\tconst next = this.forwardStack.pop();\r\n\t\tif (!next) return;\r\n\t\tthis.backStack.push({ path: this.internalPath, state: this.internalState });\r\n\t\tthis.internalPath = next.path;\r\n\t\tthis.internalState = next.state;\r\n\t\tthis.emitPopState();\r\n\t}\r\n\r\n\toverride historyGo(relativePosition: number): void {\r\n\t\tif (relativePosition < 0) {\r\n\t\t\tconst steps = -relativePosition;\r\n\t\t\tfor (let i = 0; i < steps && this.backStack.length; i++) this.back();\r\n\t\t} else if (relativePosition > 0) {\r\n\t\t\tfor (let i = 0; i < relativePosition && this.forwardStack.length; i++) this.forward();\r\n\t\t}\r\n\t}\r\n\r\n\toverride onPopState(fn: (event: PopStateEvent) => void): void {\r\n\t\tthis.popStateHandlers.push(fn);\r\n\t}\r\n\r\n\tprivate emitPopState(): void {\r\n\t\tthis.isNavigatingViaHistory = true;\r\n\t\ttry {\r\n\t\t\tconst event = new PopStateEvent('popstate', { state: this.internalState });\r\n\t\t\tfor (const fn of this.popStateHandlers) fn(event);\r\n\t\t} finally {\r\n\t\t\t// Router'ın navigation cycle'ı async — popstate handler'ı navigation tetikledikten\r\n\t\t\t// sonra cycle bittiğinde pushState/replaceState çağrılabilir. Microtask sınırı\r\n\t\t\t// sync cycle'ı kapsar; daha güvenli istersek `queueMicrotask` yerine `setTimeout(0)`\r\n\t\t\t// tercih edilebilir ama bu durumda araya gerçek user navigation girebilir. Microtask\r\n\t\t\t// pratikte yeterli: Router popstate cycle'ında pushState değil replaceState çağırır.\r\n\t\t\tqueueMicrotask(() => {\r\n\t\t\t\tthis.isNavigatingViaHistory = false;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\toverride getBaseHref(): string {\r\n\t\treturn '/';\r\n\t}\r\n\r\n\toverride getState(): unknown {\r\n\t\treturn this.internalState;\r\n\t}\r\n}\r\n","declare const monaco: any;\r\n\r\nexport const monacoConfig = {\r\n\tbaseUrl: 'assets',\r\n\tdefaultOptions: { scrollBeyondLastLine: false },\r\n\tonMonacoLoad: () => {\r\n\t\t// JSON düzenleyici ayarları\r\n\t\tif (monaco && monaco.languages && monaco.languages.json) {\r\n\t\t\tmonaco.languages.json.jsonDefaults.setDiagnosticsOptions({\r\n\t\t\t\tvalidate: true,\r\n\t\t\t\tallowComments: false,\r\n\t\t\t\tschemas: []\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// JavaScript/TypeScript düzenleyici ayarları\r\n\t\tif (monaco && monaco.languages && monaco.languages.typescript) {\r\n\t\t\tmonaco.languages.typescript.javascriptDefaults.setCompilerOptions({\r\n\t\t\t\ttarget: monaco.languages.typescript.ScriptTarget.ES2016,\r\n\t\t\t\tallowNonTsExtensions: true,\r\n\t\t\t\tmoduleResolution: monaco.languages.typescript.ModuleResolutionKind.NodeJs,\r\n\t\t\t\tmodule: monaco.languages.typescript.ModuleKind.CommonJS,\r\n\t\t\t\tnoEmit: true,\r\n\t\t\t\ttypeRoots: ['node_modules/@types']\r\n\t\t\t});\r\n\r\n\t\t\t// TypeScript düzenleyici ayarları\r\n\t\t\tmonaco.languages.typescript.typescriptDefaults.setCompilerOptions({\r\n\t\t\t\ttarget: monaco.languages.typescript.ScriptTarget.ES2016,\r\n\t\t\t\tallowNonTsExtensions: true,\r\n\t\t\t\tmoduleResolution: monaco.languages.typescript.ModuleResolutionKind.NodeJs,\r\n\t\t\t\tmodule: monaco.languages.typescript.ModuleKind.CommonJS,\r\n\t\t\t\tnoEmit: true,\r\n\t\t\t\ttypeRoots: ['node_modules/@types']\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// HTML, XML ve diğer markup dilleri için ayarlar\r\n\t\tif (monaco && monaco.languages && monaco.languages.html) {\r\n\t\t\tmonaco.languages.html.htmlDefaults.setOptions({\r\n\t\t\t\tformat: {\r\n\t\t\t\t\ttabSize: 2,\r\n\t\t\t\t\tinsertSpaces: true\r\n\t\t\t\t},\r\n\t\t\t\tsuggest: {\r\n\t\t\t\t\thtml5: true\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// Python için syntax highlighting ve özel formatlamalar\r\n\t\tif (monaco && monaco.languages) {\r\n\t\t\tmonaco.languages.registerDocumentFormattingEditProvider('python', {\r\n\t\t\t\tprovideDocumentFormattingEdits: function (model: any) {\r\n\t\t\t\t\tconst text = model.getValue();\r\n\t\t\t\t\treturn [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\trange: model.getFullModelRange(),\r\n\t\t\t\t\t\t\ttext: text\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t];\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// Python için özel linting kuralları\r\n\t\t\tmonaco.languages.registerCompletionItemProvider('python', {\r\n\t\t\t\tprovideCompletionItems: function (model: any, position: any) {\r\n\t\t\t\t\tconst suggestions = [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'def',\r\n\t\t\t\t\t\t\tkind: monaco.languages.CompletionItemKind.Keyword,\r\n\t\t\t\t\t\t\tinsertText: 'def ${1:function_name}(${2:parameters}):\\n\\t${3:pass}',\r\n\t\t\t\t\t\t\tinsertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\r\n\t\t\t\t\t\t\tdocumentation: 'Fonksiyon tanımlama'\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'class',\r\n\t\t\t\t\t\t\tkind: monaco.languages.CompletionItemKind.Keyword,\r\n\t\t\t\t\t\t\tinsertText: 'class ${1:ClassName}:\\n\\tdef __init__(self, ${2:parameters}):\\n\\t\\t${3:pass}',\r\n\t\t\t\t\t\t\tinsertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\r\n\t\t\t\t\t\t\tdocumentation: 'Sınıf tanımlama'\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'if',\r\n\t\t\t\t\t\t\tkind: monaco.languages.CompletionItemKind.Keyword,\r\n\t\t\t\t\t\t\tinsertText: 'if ${1:condition}:\\n\\t${2:pass}',\r\n\t\t\t\t\t\t\tinsertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\r\n\t\t\t\t\t\t\tdocumentation: 'If bloğu'\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'for',\r\n\t\t\t\t\t\t\tkind: monaco.languages.CompletionItemKind.Keyword,\r\n\t\t\t\t\t\t\tinsertText: 'for ${1:item} in ${2:iterable}:\\n\\t${3:pass}',\r\n\t\t\t\t\t\t\tinsertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\r\n\t\t\t\t\t\t\tdocumentation: 'For döngüsü'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t];\r\n\r\n\t\t\t\t\treturn { suggestions: suggestions };\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// Lua için özel ayarlar\r\n\t\tif (monaco && monaco.languages) {\r\n\t\t\tmonaco.languages.registerDocumentFormattingEditProvider('lua', {\r\n\t\t\t\tprovideDocumentFormattingEdits: function (model: any) {\r\n\t\t\t\t\tconst text = model.getValue();\r\n\t\t\t\t\treturn [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\trange: model.getFullModelRange(),\r\n\t\t\t\t\t\t\ttext: text\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t];\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tmonaco.languages.registerCompletionItemProvider('lua', {\r\n\t\t\t\tprovideCompletionItems: function (model: any, position: any) {\r\n\t\t\t\t\tconst suggestions = [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'function',\r\n\t\t\t\t\t\t\tkind: monaco.languages.CompletionItemKind.Keyword,\r\n\t\t\t\t\t\t\tinsertText: 'function ${1:name}(${2:params})\\n\\t${3:-- body}\\nend',\r\n\t\t\t\t\t\t\tinsertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\r\n\t\t\t\t\t\t\tdocumentation: 'Fonksiyon tanımlama'\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'if',\r\n\t\t\t\t\t\t\tkind: monaco.languages.CompletionItemKind.Keyword,\r\n\t\t\t\t\t\t\tinsertText: 'if ${1:condition} then\\n\\t${2:-- body}\\nend',\r\n\t\t\t\t\t\t\tinsertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\r\n\t\t\t\t\t\t\tdocumentation: 'If bloğu'\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'for',\r\n\t\t\t\t\t\t\tkind: monaco.languages.CompletionItemKind.Keyword,\r\n\t\t\t\t\t\t\tinsertText: 'for ${1:i}=${2:1},${3:10} do\\n\\t${4:-- body}\\nend',\r\n\t\t\t\t\t\t\tinsertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\r\n\t\t\t\t\t\t\tdocumentation: 'For döngüsü'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t];\r\n\r\n\t\t\t\t\treturn { suggestions: suggestions };\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// Java için özel ayarlar\r\n\t\tif (monaco && monaco.languages) {\r\n\t\t\tmonaco.languages.registerDocumentFormattingEditProvider('java', {\r\n\t\t\t\tprovideDocumentFormattingEdits: function (model: any) {\r\n\t\t\t\t\tconst text = model.getValue();\r\n\t\t\t\t\t// Java formatlaması\r\n\t\t\t\t\treturn [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\trange: model.getFullModelRange(),\r\n\t\t\t\t\t\t\ttext: text // Formatlanmış metin\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t];\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// Java için özel öneriler\r\n\t\t\tmonaco.languages.registerCompletionItemProvider('java', {\r\n\t\t\t\tprovideCompletionItems: function (model: any, position: any) {\r\n\t\t\t\t\tconst suggestions = [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'class',\r\n\t\t\t\t\t\t\tkind: monaco.languages.CompletionItemKind.Keyword,\r\n\t\t\t\t\t\t\tinsertText: 'public class ${1:ClassName} {\\n\\t${2}\\n}',\r\n\t\t\t\t\t\t\tinsertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\r\n\t\t\t\t\t\t\tdocumentation: 'Sınıf tanımlama'\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'main',\r\n\t\t\t\t\t\t\tkind: monaco.languages.CompletionItemKind.Snippet,\r\n\t\t\t\t\t\t\tinsertText: 'public static void main(String[] args) {\\n\\t${1}\\n}',\r\n\t\t\t\t\t\t\tinsertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\r\n\t\t\t\t\t\t\tdocumentation: 'Main metodu'\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'sout',\r\n\t\t\t\t\t\t\tkind: monaco.languages.CompletionItemKind.Snippet,\r\n\t\t\t\t\t\t\tinsertText: 'System.out.println(${1});',\r\n\t\t\t\t\t\t\tinsertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\r\n\t\t\t\t\t\t\tdocumentation: 'Konsola yazdırma'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t];\r\n\r\n\t\t\t\t\treturn { suggestions: suggestions };\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// HTML için özel ayarlar\r\n\t\tif (monaco && monaco.languages) {\r\n\t\t\tmonaco.languages.registerCompletionItemProvider('html', {\r\n\t\t\t\tprovideCompletionItems: function (model: any, position: any) {\r\n\t\t\t\t\tconst suggestions = [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'html5',\r\n\t\t\t\t\t\t\tkind: monaco.languages.CompletionItemKind.Snippet,\r\n\t\t\t\t\t\t\tinsertText:\r\n\t\t\t\t\t\t\t\t'<!DOCTYPE html>\\n<html lang=\"en\">\\n<head>\\n\\t<meta charset=\"UTF-8\">\\n\\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\\n\\t<title>${1:Document}</title>\\n</head>\\n<body>\\n\\t${2}\\n</body>\\n</html>',\r\n\t\t\t\t\t\t\tinsertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\r\n\t\t\t\t\t\t\tdocumentation: 'HTML5 taslağı'\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'div',\r\n\t\t\t\t\t\t\tkind: monaco.languages.CompletionItemKind.Snippet,\r\n\t\t\t\t\t\t\tinsertText: '<div class=\"${1:className}\">\\n\\t${2}\\n</div>',\r\n\t\t\t\t\t\t\tinsertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\r\n\t\t\t\t\t\t\tdocumentation: 'Div elementi'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t];\r\n\r\n\t\t\t\t\treturn { suggestions: suggestions };\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// XML için özel ayarlar\r\n\t\tif (monaco && monaco.languages) {\r\n\t\t\tmonaco.languages.registerCompletionItemProvider('xml', {\r\n\t\t\t\tprovideCompletionItems: function (model: any, position: any) {\r\n\t\t\t\t\tconst suggestions = [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'xml',\r\n\t\t\t\t\t\t\tkind: monaco.languages.CompletionItemKind.Snippet,\r\n\t\t\t\t\t\t\tinsertText: '<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n<${1:root}>\\n\\t${2}\\n</${1:root}>',\r\n\t\t\t\t\t\t\tinsertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\r\n\t\t\t\t\t\t\tdocumentation: 'XML taslağı'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t];\r\n\r\n\t\t\t\t\treturn { suggestions: suggestions };\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// JSON için özel ayarlar ve şema doğrulama\r\n\t\tif (monaco && monaco.languages && monaco.languages.json) {\r\n\t\t\tmonaco.languages.json.jsonDefaults.setDiagnosticsOptions({\r\n\t\t\t\tvalidate: true,\r\n\t\t\t\tallowComments: false,\r\n\t\t\t\tschemas: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\turi: 'http://myserver/schema/package.schema.json',\r\n\t\t\t\t\t\tfileMatch: ['package.json'],\r\n\t\t\t\t\t\tschema: {\r\n\t\t\t\t\t\t\ttype: 'object',\r\n\t\t\t\t\t\t\tproperties: {\r\n\t\t\t\t\t\t\t\tname: { type: 'string' },\r\n\t\t\t\t\t\t\t\tversion: { type: 'string' },\r\n\t\t\t\t\t\t\t\tdependencies: {\r\n\t\t\t\t\t\t\t\t\ttype: 'object'\r\n\t\t\t\t\t\t\t\t}\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]\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n};\r\n","import { Location, LocationStrategy } from '@angular/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport {\r\n\tAPP_INITIALIZER,\r\n\tApplicationConfig,\r\n\tApplicationRef,\r\n\tComponentRef,\r\n\tEnvironmentInjector,\r\n\tEnvironmentProviders,\r\n\tProvider,\r\n\tcreateComponent,\r\n\tcreateEnvironmentInjector,\r\n\timportProvidersFrom,\r\n\tinject,\r\n\tisDevMode,\r\n\tɵINJECTOR_SCOPE\r\n} from '@angular/core';\r\nimport { createApplication } from '@angular/platform-browser';\r\nimport {\r\n\tRouteReuseStrategy,\r\n\tRouter,\r\n\tRoutes,\r\n\tUrlSerializer,\r\n\tprovideRouter,\r\n\twithComponentInputBinding,\r\n\twithRouterConfig\r\n} from '@angular/router';\r\n\r\nimport { ConfirmationService, MessageService, PrimeNGConfig } from 'primeng/api';\r\n\r\nimport { TranslocoService } from '@ngneat/transloco';\r\n\r\nimport { KeycloakService } from 'keycloak-angular';\r\nimport { MonacoEditorModule, NGX_MONACO_EDITOR_CONFIG } from 'ngx-monaco-editor-v2';\r\n\r\nimport { createBaseAppConfig } from 'aril/boot/base';\r\nimport { setApiConfigOnMFEMode } from 'aril/boot/config/api';\r\nimport { Apps, CustomRouteReuseStrategy, PluginMenuItem, TabAwareUrlSerializer } from 'aril/boot/config/apps';\r\nimport { getNgZone, loadPlugins } from 'aril/boot/config/plugins';\r\nimport { i18nFolderName } from 'aril/i18n';\r\nimport { provideHost } from 'aril/provider';\r\nimport { ActivityService } from 'aril/util/activity';\r\nimport { PubSubService } from 'aril/util/pub-sub';\r\n\r\nimport { appComponentLoader } from './appComponentLoader';\r\nimport { IsolatedLocationStrategy } from './isolated-location-strategy';\r\nimport { monacoConfig } from './monaco.config';\r\n\r\nexport var appName: Apps;\r\nexport var menuItems: PluginMenuItem[] = [];\r\n\r\n/**\r\n * `boot` çağrılarının idempotent kalmasını sağlayan sync guard. Aynı remote için\r\n * birden fazla paralel `boot('wdm', ...)` çağrısı geldiğinde, ilk `customElements.define`\r\n * tamamlanmadan ikinci çağrı `customElements.get` guard'ını geçiyordu → her ikisi de\r\n * define etmeye çalışıp `NotSupportedError: the name \"app-wdm\" has already been used`\r\n * hatası fırlatılıyordu. Set ile sync mark ederek tek bir define cycle'ı garanti ediyoruz.\r\n */\r\nconst bootedApps = new Set<string>();\r\n\r\nexport const boot = (_appName: Apps, _routes: Routes, _menuItems: PluginMenuItem[]) => {\r\n\tif (bootedApps.has(_appName) || customElements.get(`app-${_appName}`)) return;\r\n\tbootedApps.add(_appName);\r\n\r\n\tappName = _appName;\r\n\tmenuItems = _menuItems;\r\n\r\n\t/**\r\n\t * **Paylaşılan base config** — remote başına TEK `createApplication`. Ağır servisler\r\n\t * (HttpClient + interceptor chain, Keycloak, i18n/Transloco, Monaco, animations) burada\r\n\t * yaşar; `providedIn` taşımayan explicit provider oldukları için tüm tab'ların child\r\n\t * injector'larından parent olarak paylaşılır → RAM lineer büyümez. Router/Location/\r\n\t * ReuseStrategy/UrlSerializer burada YOK; onlar tab başına izole child injector'da verilir.\r\n\t */\r\n\tconst sharedBaseConfig: ApplicationConfig = {\r\n\t\tproviders: [\r\n\t\t\tcreateBaseAppConfig({ i18nFolder: _appName }),\r\n\t\t\tprovideHost(_appName),\r\n\t\t\tgetNgZone(),\r\n\t\t\t{\r\n\t\t\t\tprovide: APP_INITIALIZER,\r\n\t\t\t\tuseFactory: (\r\n\t\t\t\t\thttpClient: HttpClient,\r\n\t\t\t\t\tkeycloak: KeycloakService,\r\n\t\t\t\t\tfolderName: typeof i18nFolderName,\r\n\t\t\t\t\tactivityService: ActivityService\r\n\t\t\t\t) => {\r\n\t\t\t\t\tconst runApiInit = setApiConfigOnMFEMode(httpClient, keycloak, folderName as unknown as Apps);\r\n\t\t\t\t\tconst runLoadPlugins = loadPlugins();\r\n\t\t\t\t\treturn async () => {\r\n\t\t\t\t\t\tawait runApiInit();\r\n\t\t\t\t\t\trunLoadPlugins();\r\n\t\t\t\t\t\tactivityService.start({ shellMode: false });\r\n\t\t\t\t\t};\r\n\t\t\t\t},\r\n\t\t\t\tmulti: true,\r\n\t\t\t\tdeps: [HttpClient, KeycloakService, i18nFolderName, ActivityService]\r\n\t\t\t},\r\n\t\t\timportProvidersFrom(MonacoEditorModule.forRoot()),\r\n\t\t\t{ provide: NGX_MONACO_EDITOR_CONFIG, useValue: monacoConfig }\r\n\t\t]\r\n\t};\r\n\r\n\t/**\r\n\t * Remote başına TEK paylaşılan `ApplicationRef` — closure-scope. İlk `<app-${appName}>`\r\n\t * element'i `createApplication(sharedBaseConfig)` çağırır, sonraki tüm element'ler aynı\r\n\t * promise'ı bekler (duplicate Application yaratımı imkânsız). Her element kendi child\r\n\t * injector + `createComponent` ile kendi `AppComponent` view'ını yaratıp shared app'e\r\n\t * `attachView` ile bağlar. Shared app uzun ömürlüdür (tab'lar kapansa da destroy edilmez).\r\n\t *\r\n\t * `childProviders`'taki `TranslocoService` factory'si bu referansı kullandığı için\r\n\t * `childProviders`'tan ÖNCE tanımlanır (forward TDZ'yi önler).\r\n\t */\r\n\tlet sharedAppRef: ApplicationRef | null = null;\r\n\tlet sharedAppPromise: Promise<ApplicationRef> | null = null;\r\n\r\n\t/**\r\n\t * **Tab başına izole Router stack** — her `<app-${appName}>` kendi child\r\n\t * `EnvironmentInjector`'ında bunları alır. `ɵINJECTOR_SCOPE: 'root'` child'ı 'root'\r\n\t * scope yapar (Angular `R3Injector` ctor: `scopes.add('root')`); böylece `provideRouter`'ın\r\n\t * inject ettiği `providedIn:'root'` Router servisleri — `Router`, `ChildrenOutletContexts`,\r\n\t * `Location`, `NavigationTransitions` vb. — child-LOCAL üretilir. Sonuç: her tab kendi\r\n\t * Router + kendi `RouterOutlet` context'ine sahip olur → **1 Router : 1 outlet**.\r\n\t *\r\n\t * Neden gerekli: paylaşılan tek Application'da N `<router-outlet>` aynı tek\r\n\t * `ChildrenOutletContexts`'e \"primary\" diye kaydolup birbirini eziyordu (`contexts.set`\r\n\t * overwrite) → tab geçişi sonrası aynı tab içi navigasyon (list→detail) yanlış outlet'e\r\n\t * render oluyordu. Child-injector izolasyonu bunu kökten çözer.\r\n\t *\r\n\t * **TranslocoService istisnası**: `'root'` scope onu da child-local yapardı; ama global\r\n\t * (scope'suz) çeviriler shared app'in init akışında yüklendiğinden — `createComponent`\r\n\t * `APP_INITIALIZER` çalıştırmaz — child-local service'in global cache'i boş kalıp ham key\r\n\t * gösteriyordu. Tab başına ayrı dil senaryosu yok; service'i shared app'ten paylaştırıyoruz\r\n\t * (global çeviri tek yerde yüklenir, tek translation cache → ek RAM kazancı). Scope çevirileri\r\n\t * (`providei18nScope`) component-level sağlandığı için paylaşılan service'le de çalışır.\r\n\t *\r\n\t * NOT: `ɵINJECTOR_SCOPE` Angular private API'sidir; minor sürüm yükseltmelerinde davranışı\r\n\t * doğrulanmalı (aşağıdaki POC izolasyon log'u bunun için bırakıldı).\r\n\t */\r\n\tconst childProviders: Array<Provider | EnvironmentProviders> = [\r\n\t\t{ provide: ɵINJECTOR_SCOPE, useValue: 'root' },\r\n\t\tprovideRouter(\r\n\t\t\t_routes,\r\n\t\t\twithComponentInputBinding(),\r\n\t\t\twithRouterConfig({ onSameUrlNavigation: 'reload' })\r\n\t\t),\r\n\t\t{ provide: LocationStrategy, useClass: IsolatedLocationStrategy },\r\n\t\t{ provide: Location, useClass: Location },\r\n\t\t{ provide: RouteReuseStrategy, useExisting: CustomRouteReuseStrategy },\r\n\t\t{ provide: UrlSerializer, useExisting: TabAwareUrlSerializer },\r\n\t\t{ provide: TranslocoService, useFactory: () => sharedAppRef!.injector.get(TranslocoService) },\r\n\t\t// `ɵINJECTOR_SCOPE:'root'` yan etkisi: `ApplicationRef` de `providedIn:'root'` olduğu için\r\n\t\t// child injector'da child-LOKAL (sahte) bir instance üretilirdi — bu instance NgZone'un\r\n\t\t// tick döngüsüne bağlı DEĞİLDİR. Sonuç: bu appRef'e `attachView` edilen view'lar hiç change\r\n\t\t// detection almaz. AppComponent'i biz açıkça `sharedAppRef.attachView` ile bağladığımız için\r\n\t\t// çalışır; ama `inject(ApplicationRef)` yapan üçüncü taraf kod (PrimeNG `DialogService` →\r\n\t\t// `this.appRef.attachView`) child-local sahte appRef'i alıp dialog'u ona bağlıyordu → dialog\r\n\t\t// yaratılıyor ama `*ngIf=\"visible\"` hiç render edilmiyordu (boş açılıyordu).\r\n\t\t//\r\n\t\t// Çözüm — `sharedAppRef`'i saran Proxy: TÜM üyeler (attachView/detachView/tick/components…)\r\n\t\t// gerçek `sharedAppRef`'e delege olur (method'lar `target`'a bind'li → private field dahil\r\n\t\t// doğru `this`), TEK fark `.injector` → bu tab'ın child injector'ı. Neden kritik: PrimeNG\r\n\t\t// `DialogService` dialog'u `createComponent(..., { environmentInjector: this.appRef.injector })`\r\n\t\t// ile yaratır. Düz `sharedAppRef` dönersek dialog içeriği shared ROOT'ta çözülür, sayfa ise\r\n\t\t// child injector'da → `providedIn:'root'` her servis İKİ ayrı instance olur (split-brain) ve\r\n\t\t// BehaviorSubject tabanlı sayfa↔dialog state senkronize OLMAZ (seçili kayıt dialog'da null).\r\n\t\t// `.injector`'ı child'a yönlendirince dialog içeriği sayfayla AYNI injector'da çözer → otomatik\r\n\t\t// tek instance, TÜM (mevcut+gelecek) servisler için — servis listesi tutmaya gerek yok.\r\n\t\t// `attachView` yine `sharedAppRef`'e gittiği için tek tick döngüsü/change detection korunur.\r\n\t\t{\r\n\t\t\tprovide: ApplicationRef,\r\n\t\t\tuseFactory: () => {\r\n\t\t\t\tconst tabInjector = inject(EnvironmentInjector);\r\n\t\t\t\treturn new Proxy(sharedAppRef!, {\r\n\t\t\t\t\tget(target, prop) {\r\n\t\t\t\t\t\tif (prop === 'injector') return tabInjector;\r\n\t\t\t\t\t\t// `ngOnDestroy`'u GİZLE (undefined döndür). Aksi halde `inject(ApplicationRef)`\r\n\t\t\t\t\t\t// yapan tab child injector'ı (PrimeNG DialogService veya aşağıdaki dev guard)\r\n\t\t\t\t\t\t// proxy'yi kendi `_ngOnDestroyHooks`'una kaydeder (R3Injector.hydrate →\r\n\t\t\t\t\t\t// hasOnDestroy=true) ve tab kapanışında `childInjector.destroy()` →\r\n\t\t\t\t\t\t// `sharedAppRef.ngOnDestroy()` → açık TÜM tab'ların view'larını destroy edip\r\n\t\t\t\t\t\t// shared app'i öldürür. Shared app'in lifecycle'ı bootstrap'a aittir, tab'a değil\r\n\t\t\t\t\t\t// (gerçek `sharedAppRef.ngOnDestroy` etkilenmez; yalnızca proxy üzerinden gizlenir).\r\n\t\t\t\t\t\tif (prop === 'ngOnDestroy') return undefined;\r\n\t\t\t\t\t\tconst value = Reflect.get(target, prop, target);\r\n\t\t\t\t\t\treturn typeof value === 'function' ? value.bind(target) : value;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\t\t// Tarama (log15) ile saptanan, child-local olunca bozulan ek `providedIn:'root'` servisleri:\r\n\t\t// • PubSubService — MFE'nin `breadcrumbUpdated` event'i host `history.service`'e ulaşmalı;\r\n\t\t// child-local olunca MFE↔host event köprüsü kopuyordu.\r\n\t\t// • PrimeNGConfig — dinamik dialog'lar shared root context'inde yaratıldığı için PrimeNG\r\n\t\t// çevirileri (calendar/paginator vb.) ve `setTranslation` shared instance'tan okunmalı.\r\n\t\t// (BreadcrumbService bilinçli olarak child-local bırakıldı: her tab kendi breadcrumb'ı.)\r\n\t\t{ provide: PubSubService, useFactory: () => sharedAppRef!.injector.get(PubSubService) },\r\n\t\t{ provide: PrimeNGConfig, useFactory: () => sharedAppRef!.injector.get(PrimeNGConfig) },\r\n\t\t// ActivityService shared'da `APP_INITIALIZER` ile başlatıldı (Keycloak listener'ları + sessionId\r\n\t\t// capture). Tab child injector'ında `ɵINJECTOR_SCOPE:'root'` yan etkisiyle ayrı bir instance\r\n\t\t// üretilirdi — bu instance hiç `start()` çağrılmadığı için `track()` no-op olur ve aril-button\r\n\t\t// click'leri sessizce kaybolur. Shared instance'ı forward ederek tek başlatılmış instance'ı\r\n\t\t// her tab'a paylaştırıyoruz (authInterceptor'ın okuduğu `sessionId` ile birebir aynı).\r\n\t\t{ provide: ActivityService, useFactory: () => sharedAppRef!.injector.get(ActivityService) },\r\n\t\t// Toast/confirm GLOBAL: tek shared MessageService/ConfirmationService. Aksi halde her tab\r\n\t\t// kendi instance'ına sahip olur → host'tan tetiklenen toast MFE tab'ında (ya da tersi)\r\n\t\t// görünmez. Shared instance ile tüm `<p-toast key=\"toast-root\">` container'ları aynı kuyruğu dinler.\r\n\t\t{ provide: MessageService, useFactory: () => sharedAppRef!.injector.get(MessageService) },\r\n\t\t{ provide: ConfirmationService, useFactory: () => sharedAppRef!.injector.get(ConfirmationService) }\r\n\t\t// SelectionGroupService bilinçli olarak BURADA YOK: tüm state'i (signal + loaded/loading +\r\n\t\t// init flag'i) globalThis bridge'de yaşar; child-local instance'lar da aynı state'i alias'lar,\r\n\t\t// bu yüzden instance sayısının önemi yoktur — forwarding yalnızca instance-local state'i olan\r\n\t\t// servisler (MessageService vb.) için gereklidir.\r\n\t];\r\n\r\n\tconst appComponentPromise = appComponentLoader();\r\n\r\n\tclass MFEAppElement extends HTMLElement {\r\n\t\tprivate childInjector: EnvironmentInjector | null = null;\r\n\t\tprivate compRef: ComponentRef<unknown> | null = null;\r\n\t\tprivate isBootstrapping = false;\r\n\t\tprivate destroyTimer: ReturnType<typeof setTimeout> | null = null;\r\n\r\n\t\tasync connectedCallback(): Promise<void> {\r\n\t\t\t// Strategy hidden container ↔ view arası taşımalarda re-bootstrap'ı önle —\r\n\t\t\t// view zaten yaratıldıysa skip. destroyTimer pending ise iptal et.\r\n\t\t\tif (this.compRef || this.isBootstrapping) {\r\n\t\t\t\tif (this.destroyTimer) {\r\n\t\t\t\t\tclearTimeout(this.destroyTimer);\r\n\t\t\t\t\tthis.destroyTimer = null;\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.isBootstrapping = true;\r\n\t\t\ttry {\r\n\t\t\t\t// Paylaşılan Application — ilk çağıran yaratır, diğerleri aynı promise'ı bekler.\r\n\t\t\t\tif (!sharedAppPromise) {\r\n\t\t\t\t\tsharedAppPromise = createApplication(sharedBaseConfig);\r\n\t\t\t\t}\r\n\t\t\t\tconst [appRef, AppComponent] = await Promise.all([sharedAppPromise, appComponentPromise]);\r\n\t\t\t\tsharedAppRef = appRef;\r\n\r\n\t\t\t\t// Bu tab için izole Router stack'i barındıran child injector.\r\n\t\t\t\tconst tabId = this.getAttribute('aril-tab-id') ?? '';\r\n\t\t\t\tthis.childInjector = createEnvironmentInjector(\r\n\t\t\t\t\tchildProviders,\r\n\t\t\t\t\tappRef.injector,\r\n\t\t\t\t\t`mfe:${_appName}:${tabId || 'pending'}`\r\n\t\t\t\t);\r\n\r\n\t\t\t\t// [Hibrit izolasyon guard — kalıcı] `ɵINJECTOR_SCOPE:'root'` ile child injector'ın\r\n\t\t\t\t// KENDİ Router + ChildrenOutletContexts'i olması, tab izolasyonunun temelidir\r\n\t\t\t\t// (\"1 Router : 1 outlet\"). Bu private API Angular upgrade'inde davranış değiştirirse\r\n\t\t\t\t// burada erken yakalanır; aksi halde \"1 Router : N outlet\" bug'ı sessizce geri döner.\r\n\t\t\t\tif (isDevMode() && this.childInjector.get(Router) === appRef.injector.get(Router)) {\r\n\t\t\t\t\tconsole.error(\r\n\t\t\t\t\t\t`[boot:${_appName}] HİBRİT İZOLASYON BOZULDU: child Router shared root ile aynı instance! ` +\r\n\t\t\t\t\t\t\t`ɵINJECTOR_SCOPE davranışı değişmiş olabilir (Angular upgrade?) — tab izolasyonu çalışmaz.`\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// [Dialog injector köprüsü guard — kalıcı] ApplicationRef proxy'sinin `.injector`'ı bu\r\n\t\t\t\t// tab'ın child injector'ını göstermeli; aksi halde PrimeNG DialogService dialog içeriğini\r\n\t\t\t\t// shared root'ta çözer → sayfa↔dialog `providedIn:'root'` split-brain geri döner. PrimeNG\r\n\t\t\t\t// ya da Angular upgrade'i `appRef.injector` kullanımını değiştirirse burada yakalanır.\r\n\t\t\t\tif (isDevMode() && this.childInjector.get(ApplicationRef).injector !== this.childInjector) {\r\n\t\t\t\t\tconsole.error(\r\n\t\t\t\t\t\t`[boot:${_appName}] DIALOG INJECTOR KÖPRÜSÜ BOZULDU: ApplicationRef.injector tab child ` +\r\n\t\t\t\t\t\t\t`injector'ı göstermiyor — dialog içeriği sayfadan farklı injector'da çözülür (split-brain).`\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// AppComponent'i child injector context'inde yarat → inject(Router)/LocationStrategy\r\n\t\t\t\t// child-local; inject(MfeBridge)/HttpClient/Keycloak/TranslocoService vb. parent'tan\r\n\t\t\t\t// paylaşımlı. `attachView` shared app'in change detection döngüsüne bağlar. (`bootstrap`\r\n\t\t\t\t// değil: APP_BOOTSTRAP_LISTENER çalışmaz, child Router'ın initial navigation'ını\r\n\t\t\t\t// AppComponent host-Router sync'i `safeNavigate` ile yapıyor.)\r\n\t\t\t\tthis.compRef = createComponent(AppComponent as never, {\r\n\t\t\t\t\tenvironmentInjector: this.childInjector,\r\n\t\t\t\t\thostElement: this\r\n\t\t\t\t});\r\n\t\t\t\tappRef.attachView(this.compRef.hostView);\r\n\t\t\t\t// Başarılı boot: guard artık `compRef` üzerinden çalışır → `isBootstrapping`'i bırak.\r\n\t\t\t\t// (await sırasında disconnect olup hata oluşmazsa flag takılı kalmasın; aksi halde\r\n\t\t\t\t// reconnect'te guard erken return edip tab'ı kalıcı boş bırakır.)\r\n\t\t\t\tthis.isBootstrapping = false;\r\n\t\t\t} catch (err) {\r\n\t\t\t\tconsole.error(`[boot:${_appName}] application bootstrap hatası:`, err);\r\n\t\t\t\tthis.isBootstrapping = false;\r\n\t\t\t\t// sharedApp henüz set edilmediyse (createApplication başarısız) promise'ı sıfırla ki\r\n\t\t\t\t// sonraki tab retry edebilsin — aksi halde rejected promise closure'da kalıcı kalır ve\r\n\t\t\t\t// remote sayfa yenilemeden bir daha boot edilemez. (createComponent hatasında\r\n\t\t\t\t// sharedAppRef zaten set'tir; o durumda promise korunur, app yeniden yaratılmaz.)\r\n\t\t\t\tif (!sharedAppRef) sharedAppPromise = null;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdisconnectedCallback(): void {\r\n\t\t\t// Strategy hidden container ↔ view arası taşımalarda `removeChild` + `appendChild`\r\n\t\t\t// ardışık olduğu için disconnectedCallback parent değişimiyle tetiklenir — element\r\n\t\t\t// gerçekten destroy edilmiyor. `preserveWebComponentElement` öncesinde Strategy\r\n\t\t\t// `__arilPreserveDuringDetach` flag'i set ediyor; o flag varsa view korunur.\r\n\t\t\tconst preserveFlag = (this as HTMLElement & { __arilPreserveDuringDetach?: boolean }).__arilPreserveDuringDetach;\r\n\t\t\tif (preserveFlag) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t// Flag yok → gerçek destroy. Async re-connect ihtimaline karşı microtask sınırlı\r\n\t\t\t// defansif gecikme; bir sonraki tick'te hâlâ disconnected mı diye son kontrol.\r\n\t\t\tif (this.destroyTimer) clearTimeout(this.destroyTimer);\r\n\t\t\tthis.destroyTimer = setTimeout(() => {\r\n\t\t\t\tif (!this.isConnected && this.compRef) {\r\n\t\t\t\t\tconsole.log(`[boot:${_appName}] gerçek destroy → view + child injector destroy`);\r\n\t\t\t\t\t// Shared app'e ASLA dokunma; sadece bu tab'ın view'ını ve child injector'ını yık.\r\n\t\t\t\t\tif (sharedAppRef) sharedAppRef.detachView(this.compRef.hostView);\r\n\t\t\t\t\tthis.compRef.destroy();\r\n\t\t\t\t\tthis.childInjector?.destroy();\r\n\t\t\t\t\tthis.compRef = null;\r\n\t\t\t\t\tthis.childInjector = null;\r\n\t\t\t\t\tthis.isBootstrapping = false;\r\n\t\t\t\t}\r\n\t\t\t\tthis.destroyTimer = null;\r\n\t\t\t}, 0);\r\n\t\t}\r\n\t}\r\n\r\n\ttry {\r\n\t\tcustomElements.define(`app-${appName}`, MFEAppElement);\r\n\t} catch (e) {\r\n\t\tif (e instanceof DOMException && e.name === 'NotSupportedError') {\r\n\t\t\tconsole.warn(`[boot:${appName}] custom element zaten tanımlı, define atlandı`);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthrow e;\r\n\t}\r\n};\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["ɵINJECTOR_SCOPE"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"aril-boot-mfe-aril-boot-mfe-D9YM2exR.mjs","sources":["../../projects/aril/boot/mfe/src/appComponentLoader.ts","../../projects/aril/boot/mfe/src/isolated-location-strategy.ts","../../projects/aril/boot/mfe/src/monaco.config.ts","../../projects/aril/boot/mfe/src/bootstrap.ts","../../projects/aril/boot/mfe/aril-boot-mfe.ts"],"sourcesContent":["export const appComponentLoader = async () => {\r\n\tconst { AppComponent } = await import('./app.component');\r\n\treturn AppComponent;\r\n};","import { LocationStrategy } from '@angular/common';\r\nimport { Injectable } from '@angular/core';\r\n\r\n/**\r\n * Host modda her MFE Application'ı için kullanılan custom `LocationStrategy`. Browser\r\n * URL'ine (`window.location.hash`) HİÇ YAZMAZ; tüm path/state internal alanlarda tutulur.\r\n *\r\n * Neden? Host modda host Router yegane URL kontrolcüsüdür. Eğer MFE Router da\r\n * `HashLocationStrategy` kullansaydı, MFE içindeki bir `routerLink` tıklaması browser hash'ını\r\n * değiştirir → `HashLocationStrategy` host Router'ı OTOMATİK tetikler → host Router'a\r\n * tabsız (state'siz) navigation gelir → Strategy yanlış componentRef yaratır, tab\r\n * izolasyonu bozulur. Bu otomatik sync'i kırmak için MFE Router'ın LocationStrategy'sini\r\n * isolate ediyoruz: MFE içi navigation MFE Router'ın internal state'inde kalır, browser'a\r\n * sızmaz, host'a istemsiz event göndermez.\r\n *\r\n * ## Tab içi history stack\r\n * Browser back/forward butonu yerine MFE içinde **tab-içi history stack** çalışır:\r\n * `pushState` her yeni navigation'da `backStack`'e mevcut konumu iter, `forwardStack`'i\r\n * temizler; `back()` ve `forward()` stack'ler arasında değiş tokuş yapıp `popstate` event'i\r\n * emit eder — Angular `Location` service bunu Router'a iletir, Router popstate-driven\r\n * navigation cycle başlatır. Sonuçta kullanıcı **detay → liste** gibi MFE içi geri dönüşleri\r\n * browser back butonuyla yapabilir, ama bu navigation **host Router'a yansımaz** → tab\r\n * izolasyonu korunur, \"geri\" başka tab'a atlatmaz.\r\n */\r\n@Injectable()\r\nexport class IsolatedLocationStrategy extends LocationStrategy {\r\n\t/**\r\n\t * Stack boyutu üst limiti — browser default'una (50 entry) yakın. Aşırı uzun\r\n\t * session'larda memory'i sınırlı tutar; sınır aşıldığında en eski entry düşürülür.\r\n\t */\r\n\tprivate static readonly MAX_STACK_SIZE = 50;\r\n\r\n\tprivate internalPath = '/';\r\n\tprivate internalState: unknown = null;\r\n\t/** Geri gidilebilecek path/state çiftleri (LIFO). */\r\n\tprivate backStack: { path: string; state: unknown }[] = [];\r\n\t/** İleri gidilebilecek path/state çiftleri (`back()` ile pop edilen entry'ler). */\r\n\tprivate forwardStack: { path: string; state: unknown }[] = [];\r\n\tprivate popStateHandlers: ((event: PopStateEvent) => void)[] = [];\r\n\t/**\r\n\t * `back/forward` sonrası Router'ın navigation cycle'ı sırasında çağrılabilen\r\n\t * `pushState`'i `backStack`'e tekrar itmemek için flag. `replaceState` zaten stack'i\r\n\t * değiştirmiyor — bu flag yalnızca pushState yolunu koruyor.\r\n\t */\r\n\tprivate isNavigatingViaHistory = false;\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tconsole.log('[IsolatedLocationStrategy] CONSTRUCTED — host modda MFE Router için aktif');\r\n\t}\r\n\r\n\toverride path(_includeHash?: boolean): string {\r\n\t\treturn this.internalPath;\r\n\t}\r\n\r\n\toverride prepareExternalUrl(internal: string): string {\r\n\t\t// Host `HashLocationStrategy` (withHashLocation) kullanıyor → MFE routerLink'lerinin\r\n\t\t// ürettiği `<a href>` (hover/kopyalama/orta-tık/yeni sekme) host ile uyumlu `#/...`\r\n\t\t// formatında olmalı. Sol-tık navigation'ı zaten host Router proxy üzerinden gider\r\n\t\t// (href kullanılmaz); bu override yalnız görünen/kopyalanan URL'i düzeltir.\r\n\t\treturn internal.length > 0 ? '#' + internal : internal;\r\n\t}\r\n\r\n\toverride pushState(state: unknown, _title: string, url: string, queryParams: string): void {\r\n\t\tconst fullPath = url + (queryParams ? `?${queryParams}` : '');\r\n\t\tconsole.log(`[IsolatedLocationStrategy] pushState url=\"${url}\" qs=\"${queryParams}\" viaHistory=${this.isNavigatingViaHistory}`);\r\n\t\tif (!this.isNavigatingViaHistory) {\r\n\t\t\t// Yeni navigation → mevcut konumu backStack'e it, forwardStack'i temizle\r\n\t\t\t// (browser semantiği: yeni sayfaya gidince forward history düşer).\r\n\t\t\tif (this.internalPath !== fullPath) {\r\n\t\t\t\tthis.backStack.push({ path: this.internalPath, state: this.internalState });\r\n\t\t\t\tif (this.backStack.length > IsolatedLocationStrategy.MAX_STACK_SIZE) {\r\n\t\t\t\t\tthis.backStack.shift();\r\n\t\t\t\t}\r\n\t\t\t\tthis.forwardStack = [];\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.internalPath = fullPath;\r\n\t\tthis.internalState = state;\r\n\t}\r\n\r\n\toverride replaceState(state: unknown, _title: string, url: string, queryParams: string): void {\r\n\t\tconsole.log(`[IsolatedLocationStrategy] replaceState url=\"${url}\" qs=\"${queryParams}\"`);\r\n\t\tthis.internalPath = url + (queryParams ? `?${queryParams}` : '');\r\n\t\tthis.internalState = state;\r\n\t}\r\n\r\n\toverride back(): void {\r\n\t\tconst prev = this.backStack.pop();\r\n\t\tif (!prev) return;\r\n\t\tthis.forwardStack.push({ path: this.internalPath, state: this.internalState });\r\n\t\tthis.internalPath = prev.path;\r\n\t\tthis.internalState = prev.state;\r\n\t\tthis.emitPopState();\r\n\t}\r\n\r\n\toverride forward(): void {\r\n\t\tconst next = this.forwardStack.pop();\r\n\t\tif (!next) return;\r\n\t\tthis.backStack.push({ path: this.internalPath, state: this.internalState });\r\n\t\tthis.internalPath = next.path;\r\n\t\tthis.internalState = next.state;\r\n\t\tthis.emitPopState();\r\n\t}\r\n\r\n\toverride historyGo(relativePosition: number): void {\r\n\t\tif (relativePosition < 0) {\r\n\t\t\tconst steps = -relativePosition;\r\n\t\t\tfor (let i = 0; i < steps && this.backStack.length; i++) this.back();\r\n\t\t} else if (relativePosition > 0) {\r\n\t\t\tfor (let i = 0; i < relativePosition && this.forwardStack.length; i++) this.forward();\r\n\t\t}\r\n\t}\r\n\r\n\toverride onPopState(fn: (event: PopStateEvent) => void): void {\r\n\t\tthis.popStateHandlers.push(fn);\r\n\t}\r\n\r\n\tprivate emitPopState(): void {\r\n\t\tthis.isNavigatingViaHistory = true;\r\n\t\ttry {\r\n\t\t\tconst event = new PopStateEvent('popstate', { state: this.internalState });\r\n\t\t\tfor (const fn of this.popStateHandlers) fn(event);\r\n\t\t} finally {\r\n\t\t\t// Router'ın navigation cycle'ı async — popstate handler'ı navigation tetikledikten\r\n\t\t\t// sonra cycle bittiğinde pushState/replaceState çağrılabilir. Microtask sınırı\r\n\t\t\t// sync cycle'ı kapsar; daha güvenli istersek `queueMicrotask` yerine `setTimeout(0)`\r\n\t\t\t// tercih edilebilir ama bu durumda araya gerçek user navigation girebilir. Microtask\r\n\t\t\t// pratikte yeterli: Router popstate cycle'ında pushState değil replaceState çağırır.\r\n\t\t\tqueueMicrotask(() => {\r\n\t\t\t\tthis.isNavigatingViaHistory = false;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\toverride getBaseHref(): string {\r\n\t\treturn '/';\r\n\t}\r\n\r\n\toverride getState(): unknown {\r\n\t\treturn this.internalState;\r\n\t}\r\n}\r\n","declare const monaco: any;\r\n\r\nexport const monacoConfig = {\r\n\tbaseUrl: 'assets',\r\n\tdefaultOptions: { scrollBeyondLastLine: false },\r\n\tonMonacoLoad: () => {\r\n\t\t// JSON düzenleyici ayarları\r\n\t\tif (monaco && monaco.languages && monaco.languages.json) {\r\n\t\t\tmonaco.languages.json.jsonDefaults.setDiagnosticsOptions({\r\n\t\t\t\tvalidate: true,\r\n\t\t\t\tallowComments: false,\r\n\t\t\t\tschemas: []\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// JavaScript/TypeScript düzenleyici ayarları\r\n\t\tif (monaco && monaco.languages && monaco.languages.typescript) {\r\n\t\t\tmonaco.languages.typescript.javascriptDefaults.setCompilerOptions({\r\n\t\t\t\ttarget: monaco.languages.typescript.ScriptTarget.ES2016,\r\n\t\t\t\tallowNonTsExtensions: true,\r\n\t\t\t\tmoduleResolution: monaco.languages.typescript.ModuleResolutionKind.NodeJs,\r\n\t\t\t\tmodule: monaco.languages.typescript.ModuleKind.CommonJS,\r\n\t\t\t\tnoEmit: true,\r\n\t\t\t\ttypeRoots: ['node_modules/@types']\r\n\t\t\t});\r\n\r\n\t\t\t// TypeScript düzenleyici ayarları\r\n\t\t\tmonaco.languages.typescript.typescriptDefaults.setCompilerOptions({\r\n\t\t\t\ttarget: monaco.languages.typescript.ScriptTarget.ES2016,\r\n\t\t\t\tallowNonTsExtensions: true,\r\n\t\t\t\tmoduleResolution: monaco.languages.typescript.ModuleResolutionKind.NodeJs,\r\n\t\t\t\tmodule: monaco.languages.typescript.ModuleKind.CommonJS,\r\n\t\t\t\tnoEmit: true,\r\n\t\t\t\ttypeRoots: ['node_modules/@types']\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// HTML, XML ve diğer markup dilleri için ayarlar\r\n\t\tif (monaco && monaco.languages && monaco.languages.html) {\r\n\t\t\tmonaco.languages.html.htmlDefaults.setOptions({\r\n\t\t\t\tformat: {\r\n\t\t\t\t\ttabSize: 2,\r\n\t\t\t\t\tinsertSpaces: true\r\n\t\t\t\t},\r\n\t\t\t\tsuggest: {\r\n\t\t\t\t\thtml5: true\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// Python için syntax highlighting ve özel formatlamalar\r\n\t\tif (monaco && monaco.languages) {\r\n\t\t\tmonaco.languages.registerDocumentFormattingEditProvider('python', {\r\n\t\t\t\tprovideDocumentFormattingEdits: function (model: any) {\r\n\t\t\t\t\tconst text = model.getValue();\r\n\t\t\t\t\treturn [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\trange: model.getFullModelRange(),\r\n\t\t\t\t\t\t\ttext: text\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t];\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// Python için özel linting kuralları\r\n\t\t\tmonaco.languages.registerCompletionItemProvider('python', {\r\n\t\t\t\tprovideCompletionItems: function (model: any, position: any) {\r\n\t\t\t\t\tconst suggestions = [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'def',\r\n\t\t\t\t\t\t\tkind: monaco.languages.CompletionItemKind.Keyword,\r\n\t\t\t\t\t\t\tinsertText: 'def ${1:function_name}(${2:parameters}):\\n\\t${3:pass}',\r\n\t\t\t\t\t\t\tinsertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\r\n\t\t\t\t\t\t\tdocumentation: 'Fonksiyon tanımlama'\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'class',\r\n\t\t\t\t\t\t\tkind: monaco.languages.CompletionItemKind.Keyword,\r\n\t\t\t\t\t\t\tinsertText: 'class ${1:ClassName}:\\n\\tdef __init__(self, ${2:parameters}):\\n\\t\\t${3:pass}',\r\n\t\t\t\t\t\t\tinsertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\r\n\t\t\t\t\t\t\tdocumentation: 'Sınıf tanımlama'\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'if',\r\n\t\t\t\t\t\t\tkind: monaco.languages.CompletionItemKind.Keyword,\r\n\t\t\t\t\t\t\tinsertText: 'if ${1:condition}:\\n\\t${2:pass}',\r\n\t\t\t\t\t\t\tinsertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\r\n\t\t\t\t\t\t\tdocumentation: 'If bloğu'\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'for',\r\n\t\t\t\t\t\t\tkind: monaco.languages.CompletionItemKind.Keyword,\r\n\t\t\t\t\t\t\tinsertText: 'for ${1:item} in ${2:iterable}:\\n\\t${3:pass}',\r\n\t\t\t\t\t\t\tinsertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\r\n\t\t\t\t\t\t\tdocumentation: 'For döngüsü'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t];\r\n\r\n\t\t\t\t\treturn { suggestions: suggestions };\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// Lua için özel ayarlar\r\n\t\tif (monaco && monaco.languages) {\r\n\t\t\tmonaco.languages.registerDocumentFormattingEditProvider('lua', {\r\n\t\t\t\tprovideDocumentFormattingEdits: function (model: any) {\r\n\t\t\t\t\tconst text = model.getValue();\r\n\t\t\t\t\treturn [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\trange: model.getFullModelRange(),\r\n\t\t\t\t\t\t\ttext: text\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t];\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tmonaco.languages.registerCompletionItemProvider('lua', {\r\n\t\t\t\tprovideCompletionItems: function (model: any, position: any) {\r\n\t\t\t\t\tconst suggestions = [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'function',\r\n\t\t\t\t\t\t\tkind: monaco.languages.CompletionItemKind.Keyword,\r\n\t\t\t\t\t\t\tinsertText: 'function ${1:name}(${2:params})\\n\\t${3:-- body}\\nend',\r\n\t\t\t\t\t\t\tinsertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\r\n\t\t\t\t\t\t\tdocumentation: 'Fonksiyon tanımlama'\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'if',\r\n\t\t\t\t\t\t\tkind: monaco.languages.CompletionItemKind.Keyword,\r\n\t\t\t\t\t\t\tinsertText: 'if ${1:condition} then\\n\\t${2:-- body}\\nend',\r\n\t\t\t\t\t\t\tinsertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\r\n\t\t\t\t\t\t\tdocumentation: 'If bloğu'\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'for',\r\n\t\t\t\t\t\t\tkind: monaco.languages.CompletionItemKind.Keyword,\r\n\t\t\t\t\t\t\tinsertText: 'for ${1:i}=${2:1},${3:10} do\\n\\t${4:-- body}\\nend',\r\n\t\t\t\t\t\t\tinsertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\r\n\t\t\t\t\t\t\tdocumentation: 'For döngüsü'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t];\r\n\r\n\t\t\t\t\treturn { suggestions: suggestions };\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// Java için özel ayarlar\r\n\t\tif (monaco && monaco.languages) {\r\n\t\t\tmonaco.languages.registerDocumentFormattingEditProvider('java', {\r\n\t\t\t\tprovideDocumentFormattingEdits: function (model: any) {\r\n\t\t\t\t\tconst text = model.getValue();\r\n\t\t\t\t\t// Java formatlaması\r\n\t\t\t\t\treturn [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\trange: model.getFullModelRange(),\r\n\t\t\t\t\t\t\ttext: text // Formatlanmış metin\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t];\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// Java için özel öneriler\r\n\t\t\tmonaco.languages.registerCompletionItemProvider('java', {\r\n\t\t\t\tprovideCompletionItems: function (model: any, position: any) {\r\n\t\t\t\t\tconst suggestions = [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'class',\r\n\t\t\t\t\t\t\tkind: monaco.languages.CompletionItemKind.Keyword,\r\n\t\t\t\t\t\t\tinsertText: 'public class ${1:ClassName} {\\n\\t${2}\\n}',\r\n\t\t\t\t\t\t\tinsertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\r\n\t\t\t\t\t\t\tdocumentation: 'Sınıf tanımlama'\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'main',\r\n\t\t\t\t\t\t\tkind: monaco.languages.CompletionItemKind.Snippet,\r\n\t\t\t\t\t\t\tinsertText: 'public static void main(String[] args) {\\n\\t${1}\\n}',\r\n\t\t\t\t\t\t\tinsertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\r\n\t\t\t\t\t\t\tdocumentation: 'Main metodu'\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'sout',\r\n\t\t\t\t\t\t\tkind: monaco.languages.CompletionItemKind.Snippet,\r\n\t\t\t\t\t\t\tinsertText: 'System.out.println(${1});',\r\n\t\t\t\t\t\t\tinsertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\r\n\t\t\t\t\t\t\tdocumentation: 'Konsola yazdırma'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t];\r\n\r\n\t\t\t\t\treturn { suggestions: suggestions };\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// HTML için özel ayarlar\r\n\t\tif (monaco && monaco.languages) {\r\n\t\t\tmonaco.languages.registerCompletionItemProvider('html', {\r\n\t\t\t\tprovideCompletionItems: function (model: any, position: any) {\r\n\t\t\t\t\tconst suggestions = [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'html5',\r\n\t\t\t\t\t\t\tkind: monaco.languages.CompletionItemKind.Snippet,\r\n\t\t\t\t\t\t\tinsertText:\r\n\t\t\t\t\t\t\t\t'<!DOCTYPE html>\\n<html lang=\"en\">\\n<head>\\n\\t<meta charset=\"UTF-8\">\\n\\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\\n\\t<title>${1:Document}</title>\\n</head>\\n<body>\\n\\t${2}\\n</body>\\n</html>',\r\n\t\t\t\t\t\t\tinsertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\r\n\t\t\t\t\t\t\tdocumentation: 'HTML5 taslağı'\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'div',\r\n\t\t\t\t\t\t\tkind: monaco.languages.CompletionItemKind.Snippet,\r\n\t\t\t\t\t\t\tinsertText: '<div class=\"${1:className}\">\\n\\t${2}\\n</div>',\r\n\t\t\t\t\t\t\tinsertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\r\n\t\t\t\t\t\t\tdocumentation: 'Div elementi'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t];\r\n\r\n\t\t\t\t\treturn { suggestions: suggestions };\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// XML için özel ayarlar\r\n\t\tif (monaco && monaco.languages) {\r\n\t\t\tmonaco.languages.registerCompletionItemProvider('xml', {\r\n\t\t\t\tprovideCompletionItems: function (model: any, position: any) {\r\n\t\t\t\t\tconst suggestions = [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tlabel: 'xml',\r\n\t\t\t\t\t\t\tkind: monaco.languages.CompletionItemKind.Snippet,\r\n\t\t\t\t\t\t\tinsertText: '<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n<${1:root}>\\n\\t${2}\\n</${1:root}>',\r\n\t\t\t\t\t\t\tinsertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\r\n\t\t\t\t\t\t\tdocumentation: 'XML taslağı'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t];\r\n\r\n\t\t\t\t\treturn { suggestions: suggestions };\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// JSON için özel ayarlar ve şema doğrulama\r\n\t\tif (monaco && monaco.languages && monaco.languages.json) {\r\n\t\t\tmonaco.languages.json.jsonDefaults.setDiagnosticsOptions({\r\n\t\t\t\tvalidate: true,\r\n\t\t\t\tallowComments: false,\r\n\t\t\t\tschemas: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\turi: 'http://myserver/schema/package.schema.json',\r\n\t\t\t\t\t\tfileMatch: ['package.json'],\r\n\t\t\t\t\t\tschema: {\r\n\t\t\t\t\t\t\ttype: 'object',\r\n\t\t\t\t\t\t\tproperties: {\r\n\t\t\t\t\t\t\t\tname: { type: 'string' },\r\n\t\t\t\t\t\t\t\tversion: { type: 'string' },\r\n\t\t\t\t\t\t\t\tdependencies: {\r\n\t\t\t\t\t\t\t\t\ttype: 'object'\r\n\t\t\t\t\t\t\t\t}\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]\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n};\r\n","import { Location, LocationStrategy } from '@angular/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport {\r\n\tAPP_INITIALIZER,\r\n\tApplicationConfig,\r\n\tApplicationRef,\r\n\tComponentRef,\r\n\tEnvironmentInjector,\r\n\tEnvironmentProviders,\r\n\tProvider,\r\n\tcreateComponent,\r\n\tcreateEnvironmentInjector,\r\n\timportProvidersFrom,\r\n\tinject,\r\n\tisDevMode,\r\n\tɵINJECTOR_SCOPE\r\n} from '@angular/core';\r\nimport { createApplication } from '@angular/platform-browser';\r\nimport {\r\n\tRouteReuseStrategy,\r\n\tRouter,\r\n\tRoutes,\r\n\tUrlSerializer,\r\n\tprovideRouter,\r\n\twithComponentInputBinding,\r\n\twithRouterConfig\r\n} from '@angular/router';\r\n\r\nimport { ConfirmationService, MessageService, PrimeNGConfig } from 'primeng/api';\r\n\r\nimport { TranslocoService } from '@ngneat/transloco';\r\n\r\nimport { KeycloakService } from 'keycloak-angular';\r\nimport { MonacoEditorModule, NGX_MONACO_EDITOR_CONFIG } from 'ngx-monaco-editor-v2';\r\n\r\nimport { createBaseAppConfig } from 'aril/boot/base';\r\nimport { setApiConfigOnMFEMode } from 'aril/boot/config/api';\r\nimport { Apps, CustomRouteReuseStrategy, PluginMenuItem, TabAwareUrlSerializer } from 'aril/boot/config/apps';\r\nimport { getNgZone, loadPlugins } from 'aril/boot/config/plugins';\r\nimport { i18nFolderName } from 'aril/i18n';\r\nimport { provideHost } from 'aril/provider';\r\nimport { ActivityService } from 'aril/util/activity';\r\nimport { PubSubService } from 'aril/util/pub-sub';\r\n\r\nimport { appComponentLoader } from './appComponentLoader';\r\nimport { IsolatedLocationStrategy } from './isolated-location-strategy';\r\nimport { monacoConfig } from './monaco.config';\r\n\r\nexport var appName: Apps;\r\nexport var menuItems: PluginMenuItem[] = [];\r\n\r\n/**\r\n * `boot` çağrılarının idempotent kalmasını sağlayan sync guard. Aynı remote için\r\n * birden fazla paralel `boot('wdm', ...)` çağrısı geldiğinde, ilk `customElements.define`\r\n * tamamlanmadan ikinci çağrı `customElements.get` guard'ını geçiyordu → her ikisi de\r\n * define etmeye çalışıp `NotSupportedError: the name \"app-wdm\" has already been used`\r\n * hatası fırlatılıyordu. Set ile sync mark ederek tek bir define cycle'ı garanti ediyoruz.\r\n */\r\nconst bootedApps = new Set<string>();\r\n\r\nexport const boot = (_appName: Apps, _routes: Routes, _menuItems: PluginMenuItem[]) => {\r\n\tif (bootedApps.has(_appName) || customElements.get(`app-${_appName}`)) return;\r\n\tbootedApps.add(_appName);\r\n\r\n\tappName = _appName;\r\n\tmenuItems = _menuItems;\r\n\r\n\t/**\r\n\t * **Paylaşılan base config** — remote başına TEK `createApplication`. Ağır servisler\r\n\t * (HttpClient + interceptor chain, Keycloak, i18n/Transloco, Monaco, animations) burada\r\n\t * yaşar; `providedIn` taşımayan explicit provider oldukları için tüm tab'ların child\r\n\t * injector'larından parent olarak paylaşılır → RAM lineer büyümez. Router/Location/\r\n\t * ReuseStrategy/UrlSerializer burada YOK; onlar tab başına izole child injector'da verilir.\r\n\t */\r\n\tconst sharedBaseConfig: ApplicationConfig = {\r\n\t\tproviders: [\r\n\t\t\tcreateBaseAppConfig({ i18nFolder: _appName }),\r\n\t\t\tprovideHost(_appName),\r\n\t\t\tgetNgZone(),\r\n\t\t\t{\r\n\t\t\t\tprovide: APP_INITIALIZER,\r\n\t\t\t\tuseFactory: (\r\n\t\t\t\t\thttpClient: HttpClient,\r\n\t\t\t\t\tkeycloak: KeycloakService,\r\n\t\t\t\t\tfolderName: typeof i18nFolderName,\r\n\t\t\t\t\tactivityService: ActivityService\r\n\t\t\t\t) => {\r\n\t\t\t\t\tconst runApiInit = setApiConfigOnMFEMode(httpClient, keycloak, folderName as unknown as Apps);\r\n\t\t\t\t\tconst runLoadPlugins = loadPlugins();\r\n\t\t\t\t\treturn async () => {\r\n\t\t\t\t\t\tawait runApiInit();\r\n\t\t\t\t\t\trunLoadPlugins();\r\n\t\t\t\t\t\tactivityService.start({ shellMode: false });\r\n\t\t\t\t\t};\r\n\t\t\t\t},\r\n\t\t\t\tmulti: true,\r\n\t\t\t\tdeps: [HttpClient, KeycloakService, i18nFolderName, ActivityService]\r\n\t\t\t},\r\n\t\t\timportProvidersFrom(MonacoEditorModule.forRoot()),\r\n\t\t\t{ provide: NGX_MONACO_EDITOR_CONFIG, useValue: monacoConfig }\r\n\t\t]\r\n\t};\r\n\r\n\t/**\r\n\t * Remote başına TEK paylaşılan `ApplicationRef` — closure-scope. İlk `<app-${appName}>`\r\n\t * element'i `createApplication(sharedBaseConfig)` çağırır, sonraki tüm element'ler aynı\r\n\t * promise'ı bekler (duplicate Application yaratımı imkânsız). Her element kendi child\r\n\t * injector + `createComponent` ile kendi `AppComponent` view'ını yaratıp shared app'e\r\n\t * `attachView` ile bağlar. Shared app uzun ömürlüdür (tab'lar kapansa da destroy edilmez).\r\n\t *\r\n\t * `childProviders`'taki `TranslocoService` factory'si bu referansı kullandığı için\r\n\t * `childProviders`'tan ÖNCE tanımlanır (forward TDZ'yi önler).\r\n\t */\r\n\tlet sharedAppRef: ApplicationRef | null = null;\r\n\tlet sharedAppPromise: Promise<ApplicationRef> | null = null;\r\n\r\n\t/**\r\n\t * **Tab başına izole Router stack** — her `<app-${appName}>` kendi child\r\n\t * `EnvironmentInjector`'ında bunları alır. `ɵINJECTOR_SCOPE: 'root'` child'ı 'root'\r\n\t * scope yapar (Angular `R3Injector` ctor: `scopes.add('root')`); böylece `provideRouter`'ın\r\n\t * inject ettiği `providedIn:'root'` Router servisleri — `Router`, `ChildrenOutletContexts`,\r\n\t * `Location`, `NavigationTransitions` vb. — child-LOCAL üretilir. Sonuç: her tab kendi\r\n\t * Router + kendi `RouterOutlet` context'ine sahip olur → **1 Router : 1 outlet**.\r\n\t *\r\n\t * Neden gerekli: paylaşılan tek Application'da N `<router-outlet>` aynı tek\r\n\t * `ChildrenOutletContexts`'e \"primary\" diye kaydolup birbirini eziyordu (`contexts.set`\r\n\t * overwrite) → tab geçişi sonrası aynı tab içi navigasyon (list→detail) yanlış outlet'e\r\n\t * render oluyordu. Child-injector izolasyonu bunu kökten çözer.\r\n\t *\r\n\t * **TranslocoService istisnası**: `'root'` scope onu da child-local yapardı; ama global\r\n\t * (scope'suz) çeviriler shared app'in init akışında yüklendiğinden — `createComponent`\r\n\t * `APP_INITIALIZER` çalıştırmaz — child-local service'in global cache'i boş kalıp ham key\r\n\t * gösteriyordu. Tab başına ayrı dil senaryosu yok; service'i shared app'ten paylaştırıyoruz\r\n\t * (global çeviri tek yerde yüklenir, tek translation cache → ek RAM kazancı). Scope çevirileri\r\n\t * (`providei18nScope`) component-level sağlandığı için paylaşılan service'le de çalışır.\r\n\t *\r\n\t * NOT: `ɵINJECTOR_SCOPE` Angular private API'sidir; minor sürüm yükseltmelerinde davranışı\r\n\t * doğrulanmalı (aşağıdaki POC izolasyon log'u bunun için bırakıldı).\r\n\t */\r\n\tconst childProviders: Array<Provider | EnvironmentProviders> = [\r\n\t\t{ provide: ɵINJECTOR_SCOPE, useValue: 'root' },\r\n\t\tprovideRouter(\r\n\t\t\t_routes,\r\n\t\t\twithComponentInputBinding(),\r\n\t\t\twithRouterConfig({ onSameUrlNavigation: 'reload' })\r\n\t\t),\r\n\t\t{ provide: LocationStrategy, useClass: IsolatedLocationStrategy },\r\n\t\t{ provide: Location, useClass: Location },\r\n\t\t{ provide: RouteReuseStrategy, useExisting: CustomRouteReuseStrategy },\r\n\t\t{ provide: UrlSerializer, useExisting: TabAwareUrlSerializer },\r\n\t\t{ provide: TranslocoService, useFactory: () => sharedAppRef!.injector.get(TranslocoService) },\r\n\t\t// `ɵINJECTOR_SCOPE:'root'` yan etkisi: `ApplicationRef` de `providedIn:'root'` olduğu için\r\n\t\t// child injector'da child-LOKAL (sahte) bir instance üretilirdi — bu instance NgZone'un\r\n\t\t// tick döngüsüne bağlı DEĞİLDİR. Sonuç: bu appRef'e `attachView` edilen view'lar hiç change\r\n\t\t// detection almaz. AppComponent'i biz açıkça `sharedAppRef.attachView` ile bağladığımız için\r\n\t\t// çalışır; ama `inject(ApplicationRef)` yapan üçüncü taraf kod (PrimeNG `DialogService` →\r\n\t\t// `this.appRef.attachView`) child-local sahte appRef'i alıp dialog'u ona bağlıyordu → dialog\r\n\t\t// yaratılıyor ama `*ngIf=\"visible\"` hiç render edilmiyordu (boş açılıyordu).\r\n\t\t//\r\n\t\t// Çözüm — `sharedAppRef`'i saran Proxy: TÜM üyeler (attachView/detachView/tick/components…)\r\n\t\t// gerçek `sharedAppRef`'e delege olur (method'lar `target`'a bind'li → private field dahil\r\n\t\t// doğru `this`), TEK fark `.injector` → bu tab'ın child injector'ı. Neden kritik: PrimeNG\r\n\t\t// `DialogService` dialog'u `createComponent(..., { environmentInjector: this.appRef.injector })`\r\n\t\t// ile yaratır. Düz `sharedAppRef` dönersek dialog içeriği shared ROOT'ta çözülür, sayfa ise\r\n\t\t// child injector'da → `providedIn:'root'` her servis İKİ ayrı instance olur (split-brain) ve\r\n\t\t// BehaviorSubject tabanlı sayfa↔dialog state senkronize OLMAZ (seçili kayıt dialog'da null).\r\n\t\t// `.injector`'ı child'a yönlendirince dialog içeriği sayfayla AYNI injector'da çözer → otomatik\r\n\t\t// tek instance, TÜM (mevcut+gelecek) servisler için — servis listesi tutmaya gerek yok.\r\n\t\t// `attachView` yine `sharedAppRef`'e gittiği için tek tick döngüsü/change detection korunur.\r\n\t\t{\r\n\t\t\tprovide: ApplicationRef,\r\n\t\t\tuseFactory: () => {\r\n\t\t\t\tconst tabInjector = inject(EnvironmentInjector);\r\n\t\t\t\treturn new Proxy(sharedAppRef!, {\r\n\t\t\t\t\tget(target, prop) {\r\n\t\t\t\t\t\tif (prop === 'injector') return tabInjector;\r\n\t\t\t\t\t\t// `ngOnDestroy`'u GİZLE (undefined döndür). Aksi halde `inject(ApplicationRef)`\r\n\t\t\t\t\t\t// yapan tab child injector'ı (PrimeNG DialogService veya aşağıdaki dev guard)\r\n\t\t\t\t\t\t// proxy'yi kendi `_ngOnDestroyHooks`'una kaydeder (R3Injector.hydrate →\r\n\t\t\t\t\t\t// hasOnDestroy=true) ve tab kapanışında `childInjector.destroy()` →\r\n\t\t\t\t\t\t// `sharedAppRef.ngOnDestroy()` → açık TÜM tab'ların view'larını destroy edip\r\n\t\t\t\t\t\t// shared app'i öldürür. Shared app'in lifecycle'ı bootstrap'a aittir, tab'a değil\r\n\t\t\t\t\t\t// (gerçek `sharedAppRef.ngOnDestroy` etkilenmez; yalnızca proxy üzerinden gizlenir).\r\n\t\t\t\t\t\tif (prop === 'ngOnDestroy') return undefined;\r\n\t\t\t\t\t\tconst value = Reflect.get(target, prop, target);\r\n\t\t\t\t\t\treturn typeof value === 'function' ? value.bind(target) : value;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\t\t// Tarama (log15) ile saptanan, child-local olunca bozulan ek `providedIn:'root'` servisleri:\r\n\t\t// • PubSubService — MFE'nin `breadcrumbUpdated` event'i host `history.service`'e ulaşmalı;\r\n\t\t// child-local olunca MFE↔host event köprüsü kopuyordu.\r\n\t\t// • PrimeNGConfig — dinamik dialog'lar shared root context'inde yaratıldığı için PrimeNG\r\n\t\t// çevirileri (calendar/paginator vb.) ve `setTranslation` shared instance'tan okunmalı.\r\n\t\t// (BreadcrumbService bilinçli olarak child-local bırakıldı: her tab kendi breadcrumb'ı.)\r\n\t\t{ provide: PubSubService, useFactory: () => sharedAppRef!.injector.get(PubSubService) },\r\n\t\t{ provide: PrimeNGConfig, useFactory: () => sharedAppRef!.injector.get(PrimeNGConfig) },\r\n\t\t// ActivityService shared'da `APP_INITIALIZER` ile başlatıldı (Keycloak listener'ları + sessionId\r\n\t\t// capture). Tab child injector'ında `ɵINJECTOR_SCOPE:'root'` yan etkisiyle ayrı bir instance\r\n\t\t// üretilirdi — bu instance hiç `start()` çağrılmadığı için `track()` no-op olur ve aril-button\r\n\t\t// click'leri sessizce kaybolur. Shared instance'ı forward ederek tek başlatılmış instance'ı\r\n\t\t// her tab'a paylaştırıyoruz (authInterceptor'ın okuduğu `sessionId` ile birebir aynı).\r\n\t\t{ provide: ActivityService, useFactory: () => sharedAppRef!.injector.get(ActivityService) },\r\n\t\t// Toast/confirm GLOBAL: tek shared MessageService/ConfirmationService. Aksi halde her tab\r\n\t\t// kendi instance'ına sahip olur → host'tan tetiklenen toast MFE tab'ında (ya da tersi)\r\n\t\t// görünmez. Shared instance ile tüm `<p-toast key=\"toast-root\">` container'ları aynı kuyruğu dinler.\r\n\t\t{ provide: MessageService, useFactory: () => sharedAppRef!.injector.get(MessageService) },\r\n\t\t{ provide: ConfirmationService, useFactory: () => sharedAppRef!.injector.get(ConfirmationService) }\r\n\t\t// SelectionGroupService bilinçli olarak BURADA YOK: tüm state'i (signal + loaded/loading +\r\n\t\t// init flag'i) globalThis bridge'de yaşar; child-local instance'lar da aynı state'i alias'lar,\r\n\t\t// bu yüzden instance sayısının önemi yoktur — forwarding yalnızca instance-local state'i olan\r\n\t\t// servisler (MessageService vb.) için gereklidir.\r\n\t];\r\n\r\n\tconst appComponentPromise = appComponentLoader();\r\n\r\n\tclass MFEAppElement extends HTMLElement {\r\n\t\tprivate childInjector: EnvironmentInjector | null = null;\r\n\t\tprivate compRef: ComponentRef<unknown> | null = null;\r\n\t\tprivate isBootstrapping = false;\r\n\t\tprivate destroyTimer: ReturnType<typeof setTimeout> | null = null;\r\n\r\n\t\tasync connectedCallback(): Promise<void> {\r\n\t\t\t// Strategy hidden container ↔ view arası taşımalarda re-bootstrap'ı önle —\r\n\t\t\t// view zaten yaratıldıysa skip. destroyTimer pending ise iptal et.\r\n\t\t\tif (this.compRef || this.isBootstrapping) {\r\n\t\t\t\tif (this.destroyTimer) {\r\n\t\t\t\t\tclearTimeout(this.destroyTimer);\r\n\t\t\t\t\tthis.destroyTimer = null;\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.isBootstrapping = true;\r\n\t\t\ttry {\r\n\t\t\t\t// Paylaşılan Application — ilk çağıran yaratır, diğerleri aynı promise'ı bekler.\r\n\t\t\t\tif (!sharedAppPromise) {\r\n\t\t\t\t\tsharedAppPromise = createApplication(sharedBaseConfig);\r\n\t\t\t\t}\r\n\t\t\t\tconst [appRef, AppComponent] = await Promise.all([sharedAppPromise, appComponentPromise]);\r\n\t\t\t\tsharedAppRef = appRef;\r\n\r\n\t\t\t\t// Bu tab için izole Router stack'i barındıran child injector.\r\n\t\t\t\tconst tabId = this.getAttribute('aril-tab-id') ?? '';\r\n\t\t\t\tthis.childInjector = createEnvironmentInjector(\r\n\t\t\t\t\tchildProviders,\r\n\t\t\t\t\tappRef.injector,\r\n\t\t\t\t\t`mfe:${_appName}:${tabId || 'pending'}`\r\n\t\t\t\t);\r\n\r\n\t\t\t\t// [Hibrit izolasyon guard — kalıcı] `ɵINJECTOR_SCOPE:'root'` ile child injector'ın\r\n\t\t\t\t// KENDİ Router + ChildrenOutletContexts'i olması, tab izolasyonunun temelidir\r\n\t\t\t\t// (\"1 Router : 1 outlet\"). Bu private API Angular upgrade'inde davranış değiştirirse\r\n\t\t\t\t// burada erken yakalanır; aksi halde \"1 Router : N outlet\" bug'ı sessizce geri döner.\r\n\t\t\t\tif (isDevMode() && this.childInjector.get(Router) === appRef.injector.get(Router)) {\r\n\t\t\t\t\tconsole.error(\r\n\t\t\t\t\t\t`[boot:${_appName}] HİBRİT İZOLASYON BOZULDU: child Router shared root ile aynı instance! ` +\r\n\t\t\t\t\t\t\t`ɵINJECTOR_SCOPE davranışı değişmiş olabilir (Angular upgrade?) — tab izolasyonu çalışmaz.`\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// [Dialog injector köprüsü guard — kalıcı] ApplicationRef proxy'sinin `.injector`'ı bu\r\n\t\t\t\t// tab'ın child injector'ını göstermeli; aksi halde PrimeNG DialogService dialog içeriğini\r\n\t\t\t\t// shared root'ta çözer → sayfa↔dialog `providedIn:'root'` split-brain geri döner. PrimeNG\r\n\t\t\t\t// ya da Angular upgrade'i `appRef.injector` kullanımını değiştirirse burada yakalanır.\r\n\t\t\t\tif (isDevMode() && this.childInjector.get(ApplicationRef).injector !== this.childInjector) {\r\n\t\t\t\t\tconsole.error(\r\n\t\t\t\t\t\t`[boot:${_appName}] DIALOG INJECTOR KÖPRÜSÜ BOZULDU: ApplicationRef.injector tab child ` +\r\n\t\t\t\t\t\t\t`injector'ı göstermiyor — dialog içeriği sayfadan farklı injector'da çözülür (split-brain).`\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// AppComponent'i child injector context'inde yarat → inject(Router)/LocationStrategy\r\n\t\t\t\t// child-local; inject(MfeBridge)/HttpClient/Keycloak/TranslocoService vb. parent'tan\r\n\t\t\t\t// paylaşımlı. `attachView` shared app'in change detection döngüsüne bağlar. (`bootstrap`\r\n\t\t\t\t// değil: APP_BOOTSTRAP_LISTENER çalışmaz, child Router'ın initial navigation'ını\r\n\t\t\t\t// AppComponent host-Router sync'i `safeNavigate` ile yapıyor.)\r\n\t\t\t\tthis.compRef = createComponent(AppComponent as never, {\r\n\t\t\t\t\tenvironmentInjector: this.childInjector,\r\n\t\t\t\t\thostElement: this\r\n\t\t\t\t});\r\n\t\t\t\tappRef.attachView(this.compRef.hostView);\r\n\t\t\t\t// Başarılı boot: guard artık `compRef` üzerinden çalışır → `isBootstrapping`'i bırak.\r\n\t\t\t\t// (await sırasında disconnect olup hata oluşmazsa flag takılı kalmasın; aksi halde\r\n\t\t\t\t// reconnect'te guard erken return edip tab'ı kalıcı boş bırakır.)\r\n\t\t\t\tthis.isBootstrapping = false;\r\n\t\t\t} catch (err) {\r\n\t\t\t\tconsole.error(`[boot:${_appName}] application bootstrap hatası:`, err);\r\n\t\t\t\tthis.isBootstrapping = false;\r\n\t\t\t\t// sharedApp henüz set edilmediyse (createApplication başarısız) promise'ı sıfırla ki\r\n\t\t\t\t// sonraki tab retry edebilsin — aksi halde rejected promise closure'da kalıcı kalır ve\r\n\t\t\t\t// remote sayfa yenilemeden bir daha boot edilemez. (createComponent hatasında\r\n\t\t\t\t// sharedAppRef zaten set'tir; o durumda promise korunur, app yeniden yaratılmaz.)\r\n\t\t\t\tif (!sharedAppRef) sharedAppPromise = null;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdisconnectedCallback(): void {\r\n\t\t\t// Strategy hidden container ↔ view arası taşımalarda `removeChild` + `appendChild`\r\n\t\t\t// ardışık olduğu için disconnectedCallback parent değişimiyle tetiklenir — element\r\n\t\t\t// gerçekten destroy edilmiyor. `preserveWebComponentElement` öncesinde Strategy\r\n\t\t\t// `__arilPreserveDuringDetach` flag'i set ediyor; o flag varsa view korunur.\r\n\t\t\tconst preserveFlag = (this as HTMLElement & { __arilPreserveDuringDetach?: boolean }).__arilPreserveDuringDetach;\r\n\t\t\tif (preserveFlag) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t// Flag yok → gerçek destroy. Async re-connect ihtimaline karşı microtask sınırlı\r\n\t\t\t// defansif gecikme; bir sonraki tick'te hâlâ disconnected mı diye son kontrol.\r\n\t\t\tif (this.destroyTimer) clearTimeout(this.destroyTimer);\r\n\t\t\tthis.destroyTimer = setTimeout(() => {\r\n\t\t\t\tif (!this.isConnected && this.compRef) {\r\n\t\t\t\t\tconsole.log(`[boot:${_appName}] gerçek destroy → view + child injector destroy`);\r\n\t\t\t\t\t// Shared app'e ASLA dokunma; sadece bu tab'ın view'ını ve child injector'ını yık.\r\n\t\t\t\t\tif (sharedAppRef) sharedAppRef.detachView(this.compRef.hostView);\r\n\t\t\t\t\tthis.compRef.destroy();\r\n\t\t\t\t\tthis.childInjector?.destroy();\r\n\t\t\t\t\tthis.compRef = null;\r\n\t\t\t\t\tthis.childInjector = null;\r\n\t\t\t\t\tthis.isBootstrapping = false;\r\n\t\t\t\t}\r\n\t\t\t\tthis.destroyTimer = null;\r\n\t\t\t}, 0);\r\n\t\t}\r\n\t}\r\n\r\n\ttry {\r\n\t\tcustomElements.define(`app-${appName}`, MFEAppElement);\r\n\t} catch (e) {\r\n\t\tif (e instanceof DOMException && e.name === 'NotSupportedError') {\r\n\t\t\tconsole.warn(`[boot:${appName}] custom element zaten tanımlı, define atlandı`);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthrow e;\r\n\t}\r\n};\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["ɵINJECTOR_SCOPE"],"mappings":"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"}
|