@quazardous/qdadm 1.19.3
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/LICENSE +21 -0
- package/README.md +111 -0
- package/package.json +101 -0
- package/src/assets/logo.svg +6 -0
- package/src/auth/SessionAuthAdapter.ts +459 -0
- package/src/auth/index.ts +15 -0
- package/src/chain/ActiveStack.ts +154 -0
- package/src/chain/StackHydrator.ts +292 -0
- package/src/chain/index.ts +25 -0
- package/src/chain/useActiveStack.ts +120 -0
- package/src/chain/useStackHydrator.ts +155 -0
- package/src/components/BoolCell.vue +34 -0
- package/src/components/InfoBanner.vue +73 -0
- package/src/components/QdadmRoot.vue +52 -0
- package/src/components/SeverityTag.vue +86 -0
- package/src/components/dialogs/BulkStatusDialog.vue +60 -0
- package/src/components/dialogs/MultiStepDialog.vue +331 -0
- package/src/components/dialogs/SimpleDialog.vue +122 -0
- package/src/components/dialogs/UnsavedChangesDialog.vue +80 -0
- package/src/components/display/BannerZone.vue +65 -0
- package/src/components/display/CardsGrid.vue +72 -0
- package/src/components/display/CopyableId.vue +84 -0
- package/src/components/display/EmptyState.vue +62 -0
- package/src/components/display/IntensityBar.vue +190 -0
- package/src/components/display/RichCardsGrid.vue +101 -0
- package/src/components/edit/FormActions.vue +78 -0
- package/src/components/edit/FormField.vue +82 -0
- package/src/components/edit/FormInput.vue +158 -0
- package/src/components/edit/FormPage.vue +260 -0
- package/src/components/edit/FormTab.vue +217 -0
- package/src/components/edit/FormTabs.vue +120 -0
- package/src/components/edit/LookupField.vue +406 -0
- package/src/components/edit/LookupPickerDialog.vue +230 -0
- package/src/components/editors/JsonEditorFoldable.vue +470 -0
- package/src/components/editors/JsonStructuredField.vue +264 -0
- package/src/components/editors/JsonViewer.vue +51 -0
- package/src/components/editors/KeyValueEditor.vue +314 -0
- package/src/components/editors/LanguageEditor.vue +259 -0
- package/src/components/editors/PermissionEditor.vue +558 -0
- package/src/components/editors/ScopeEditor.vue +372 -0
- package/src/components/editors/VanillaJsonEditor.vue +183 -0
- package/src/components/index.ts +83 -0
- package/src/components/item/FieldGroups.vue +392 -0
- package/src/components/layout/AppLayout.vue +1032 -0
- package/src/components/layout/BaseLayout.vue +190 -0
- package/src/components/layout/Breadcrumb.vue +55 -0
- package/src/components/layout/DashboardLayout.vue +104 -0
- package/src/components/layout/FormLayout.vue +256 -0
- package/src/components/layout/ListLayout.vue +278 -0
- package/src/components/layout/PageHeader.vue +156 -0
- package/src/components/layout/PageLayout.vue +126 -0
- package/src/components/layout/PageNav.vue +192 -0
- package/src/components/layout/SidebarBox.vue +87 -0
- package/src/components/layout/Zone.vue +182 -0
- package/src/components/layout/defaults/DefaultBreadcrumb.vue +149 -0
- package/src/components/layout/defaults/DefaultFooter.vue +89 -0
- package/src/components/layout/defaults/DefaultFormActions.vue +67 -0
- package/src/components/layout/defaults/DefaultHeader.vue +78 -0
- package/src/components/layout/defaults/DefaultMenu.vue +188 -0
- package/src/components/layout/defaults/DefaultPagination.vue +75 -0
- package/src/components/layout/defaults/DefaultTable.vue +137 -0
- package/src/components/layout/defaults/DefaultUserInfo.vue +111 -0
- package/src/components/layout/defaults/index.ts +16 -0
- package/src/components/lists/ActionButtons.vue +49 -0
- package/src/components/lists/ActionColumn.vue +40 -0
- package/src/components/lists/FilterBar.vue +54 -0
- package/src/components/lists/ListPage.vue +467 -0
- package/src/components/pages/LoginPage.vue +334 -0
- package/src/components/pages/NotFoundPage.vue +98 -0
- package/src/components/show/ShowDisplay.vue +343 -0
- package/src/components/show/ShowField.vue +67 -0
- package/src/components/show/ShowPage.vue +431 -0
- package/src/composables/index.ts +155 -0
- package/src/composables/useApp.ts +67 -0
- package/src/composables/useAuth.ts +98 -0
- package/src/composables/useBareForm.ts +319 -0
- package/src/composables/useBreadcrumb.ts +252 -0
- package/src/composables/useChildPage.ts +113 -0
- package/src/composables/useCurrentEntity.ts +60 -0
- package/src/composables/useDeferred.ts +94 -0
- package/src/composables/useDirtyState.ts +138 -0
- package/src/composables/useEntityItemFormPage.ts +942 -0
- package/src/composables/useEntityItemFormPage.types.ts +451 -0
- package/src/composables/useEntityItemPage.ts +438 -0
- package/src/composables/useEntityItemShowPage.ts +722 -0
- package/src/composables/useFieldManager.ts +692 -0
- package/src/composables/useForm.ts +544 -0
- package/src/composables/useGuardStore.ts +53 -0
- package/src/composables/useHooks.ts +56 -0
- package/src/composables/useInfoBanner.ts +217 -0
- package/src/composables/useJsonSyntax.ts +122 -0
- package/src/composables/useLayoutResolver.ts +329 -0
- package/src/composables/useListPage.ts +1535 -0
- package/src/composables/useListPage.types.ts +437 -0
- package/src/composables/useListPage.utils.ts +101 -0
- package/src/composables/useNavContext.ts +439 -0
- package/src/composables/useNavigation.ts +216 -0
- package/src/composables/useOptionsLookup.ts +323 -0
- package/src/composables/usePageTitle.ts +84 -0
- package/src/composables/useSSEBridge.ts +142 -0
- package/src/composables/useSemanticBreadcrumb.ts +222 -0
- package/src/composables/useSidebarState.ts +24 -0
- package/src/composables/useSignals.ts +52 -0
- package/src/composables/useUnsavedChangesGuard.ts +155 -0
- package/src/composables/useUserImpersonator.ts +317 -0
- package/src/composables/useZoneRegistry.ts +252 -0
- package/src/core/bundles.ts +558 -0
- package/src/core/decorator.ts +420 -0
- package/src/core/extension.ts +470 -0
- package/src/core/index.ts +59 -0
- package/src/deferred/DeferredRegistry.ts +353 -0
- package/src/deferred/index.ts +15 -0
- package/src/editors/index.ts +12 -0
- package/src/entity/EntityManager.cache.ts +530 -0
- package/src/entity/EntityManager.crud.ts +615 -0
- package/src/entity/EntityManager.interface.ts +78 -0
- package/src/entity/EntityManager.query.ts +221 -0
- package/src/entity/EntityManager.relations.ts +151 -0
- package/src/entity/EntityManager.ts +944 -0
- package/src/entity/EntityManager.types.ts +288 -0
- package/src/entity/auth/CompositeAuthAdapter.ts +194 -0
- package/src/entity/auth/EntityAuthAdapter.ts +119 -0
- package/src/entity/auth/PermissiveAdapter.ts +43 -0
- package/src/entity/auth/RoleHierarchy.ts +128 -0
- package/src/entity/auth/SecurityChecker.ts +202 -0
- package/src/entity/auth/factory.ts +203 -0
- package/src/entity/auth/index.ts +47 -0
- package/src/entity/factory.test.js +189 -0
- package/src/entity/factory.ts +146 -0
- package/src/entity/index.ts +49 -0
- package/src/entity/storage/ApiStorage.ts +228 -0
- package/src/entity/storage/IStorage.ts +100 -0
- package/src/entity/storage/LocalStorage.ts +200 -0
- package/src/entity/storage/MemoryStorage.ts +184 -0
- package/src/entity/storage/MockApiStorage.ts +318 -0
- package/src/entity/storage/SdkStorage.ts +377 -0
- package/src/entity/storage/factory.test.js +159 -0
- package/src/entity/storage/factory.ts +209 -0
- package/src/entity/storage/index.ts +75 -0
- package/src/gen/FieldMapper.ts +122 -0
- package/src/gen/StorageProfileFactory.ts +93 -0
- package/src/gen/connectors/BaseConnector.ts +150 -0
- package/src/gen/connectors/ManualConnector.test.js +499 -0
- package/src/gen/connectors/ManualConnector.ts +414 -0
- package/src/gen/connectors/OpenAPIConnector.test.js +836 -0
- package/src/gen/connectors/OpenAPIConnector.ts +693 -0
- package/src/gen/connectors/__fixtures__/sample-openapi.json +311 -0
- package/src/gen/connectors/index.ts +27 -0
- package/src/gen/createManagers.ts +245 -0
- package/src/gen/decorators.ts +134 -0
- package/src/gen/generateManagers.test.js +540 -0
- package/src/gen/generateManagers.ts +398 -0
- package/src/gen/index.ts +66 -0
- package/src/gen/schema.ts +248 -0
- package/src/gen/vite-plugin.ts +114 -0
- package/src/generated/managers/testManager.js +45 -0
- package/src/generated/managers/testManager.ts +46 -0
- package/src/hooks/HookRegistry.ts +16 -0
- package/src/hooks/index.ts +15 -0
- package/src/i18n/I18n.ts +344 -0
- package/src/i18n/IncrementalDomainProvider.ts +153 -0
- package/src/i18n/InlineTranslationProvider.ts +4 -0
- package/src/i18n/LazyTranslationProvider.ts +102 -0
- package/src/i18n/MessagesRegistry.ts +4 -0
- package/src/i18n/Resolver.ts +4 -0
- package/src/i18n/__tests__/I18n.test.ts +169 -0
- package/src/i18n/__tests__/IncrementalDomainProvider.test.ts +146 -0
- package/src/i18n/__tests__/LazyTranslationProvider.test.ts +100 -0
- package/src/i18n/__tests__/Resolver.test.ts +271 -0
- package/src/i18n/defaults/DefaultCoreProvider.ts +28 -0
- package/src/i18n/defaults/core.en.yml +55 -0
- package/src/i18n/defaults/core.fr.yml +55 -0
- package/src/i18n/index.ts +55 -0
- package/src/i18n/loaders/raw-modules.d.ts +15 -0
- package/src/i18n/loaders/yaml.ts +35 -0
- package/src/i18n/strategies.ts +4 -0
- package/src/i18n/types.ts +34 -0
- package/src/i18n/useI18n.ts +34 -0
- package/src/index.ts +453 -0
- package/src/kernel/EventRouter.ts +23 -0
- package/src/kernel/Kernel.api.ts +79 -0
- package/src/kernel/Kernel.auth.ts +120 -0
- package/src/kernel/Kernel.i18n.ts +29 -0
- package/src/kernel/Kernel.modules.ts +170 -0
- package/src/kernel/Kernel.registries.ts +237 -0
- package/src/kernel/Kernel.routing.ts +334 -0
- package/src/kernel/Kernel.ts +460 -0
- package/src/kernel/Kernel.types.ts +263 -0
- package/src/kernel/Kernel.vue.ts +304 -0
- package/src/kernel/KernelContext.entities.ts +80 -0
- package/src/kernel/KernelContext.events.ts +57 -0
- package/src/kernel/KernelContext.i18n.ts +37 -0
- package/src/kernel/KernelContext.permissions.ts +38 -0
- package/src/kernel/KernelContext.routing.ts +280 -0
- package/src/kernel/KernelContext.ts +252 -0
- package/src/kernel/KernelContext.types.ts +173 -0
- package/src/kernel/KernelContext.zones.ts +54 -0
- package/src/kernel/Module.ts +169 -0
- package/src/kernel/ModuleLoader.ts +645 -0
- package/src/kernel/SSEBridge.ts +11 -0
- package/src/kernel/SignalBus.ts +48 -0
- package/src/kernel/index.ts +56 -0
- package/src/module/index.ts +33 -0
- package/src/module/moduleRegistry.ts +492 -0
- package/src/modules/debug/AuthCollector.ts +501 -0
- package/src/modules/debug/Collector.ts +20 -0
- package/src/modules/debug/DebugBridge.ts +14 -0
- package/src/modules/debug/DebugModule.ts +220 -0
- package/src/modules/debug/EntitiesCollector.ts +839 -0
- package/src/modules/debug/ErrorCollector.ts +4 -0
- package/src/modules/debug/I18nCollector.ts +9 -0
- package/src/modules/debug/LocalStorageAdapter.ts +7 -0
- package/src/modules/debug/RouterCollector.ts +449 -0
- package/src/modules/debug/SignalCollector.ts +4 -0
- package/src/modules/debug/ToastCollector.ts +4 -0
- package/src/modules/debug/ZonesCollector.ts +447 -0
- package/src/modules/debug/components/DebugBar.vue +31 -0
- package/src/modules/debug/components/adminPanelsConfig.ts +42 -0
- package/src/modules/debug/components/index.ts +9 -0
- package/src/modules/debug/components/panels/AuthPanel.vue +267 -0
- package/src/modules/debug/components/panels/EntitiesPanel.vue +572 -0
- package/src/modules/debug/components/panels/I18nPanel.vue +738 -0
- package/src/modules/debug/components/panels/RouterPanel.vue +440 -0
- package/src/modules/debug/components/panels/ZonesPanel.vue +133 -0
- package/src/modules/debug/components/panels/index.ts +16 -0
- package/src/modules/debug/index.ts +58 -0
- package/src/modules/debug/styles.scss +2671 -0
- package/src/notifications/NotificationBadge.vue +35 -0
- package/src/notifications/NotificationListener.vue +71 -0
- package/src/notifications/NotificationModule.ts +76 -0
- package/src/notifications/NotificationPanel.vue +478 -0
- package/src/notifications/NotificationStore.ts +288 -0
- package/src/notifications/index.ts +42 -0
- package/src/notifications/styles.scss +32 -0
- package/src/orchestrator/Orchestrator.ts +427 -0
- package/src/orchestrator/index.ts +8 -0
- package/src/orchestrator/useOrchestrator.ts +80 -0
- package/src/plugin.ts +251 -0
- package/src/query/FilterQuery.ts +306 -0
- package/src/query/QueryExecutor.ts +341 -0
- package/src/query/index.ts +16 -0
- package/src/security/EntityRolesProvider.ts +385 -0
- package/src/security/PermissionMatcher.ts +152 -0
- package/src/security/PermissionRegistry.ts +273 -0
- package/src/security/PersistableRolesProvider.ts +584 -0
- package/src/security/RolesManager.ts +136 -0
- package/src/security/RolesProvider.ts +167 -0
- package/src/security/RolesProviderStorage.ts +211 -0
- package/src/security/SecurityModule.ts +94 -0
- package/src/security/StaticRolesProvider.ts +117 -0
- package/src/security/UsersManager.ts +163 -0
- package/src/security/index.ts +77 -0
- package/src/security/pages/RoleForm.vue +276 -0
- package/src/security/pages/RoleList.vue +123 -0
- package/src/styles/_alerts.scss +95 -0
- package/src/styles/_buttons.scss +391 -0
- package/src/styles/_cards.scss +241 -0
- package/src/styles/_code.scss +78 -0
- package/src/styles/_dialogs.scss +55 -0
- package/src/styles/_filter-bar.scss +70 -0
- package/src/styles/_forms.scss +434 -0
- package/src/styles/_helpers.scss +153 -0
- package/src/styles/_lists.scss +225 -0
- package/src/styles/_main.scss +356 -0
- package/src/styles/_markdown.scss +88 -0
- package/src/styles/_responsive.scss +255 -0
- package/src/styles/_show-pages.scss +186 -0
- package/src/styles/_sidebar.scss +380 -0
- package/src/styles/_states.scss +115 -0
- package/src/styles/_stats.scss +47 -0
- package/src/styles/_variables.scss +224 -0
- package/src/styles/index.scss +38 -0
- package/src/styles/theme/_components.scss +331 -0
- package/src/styles/theme/_index.scss +10 -0
- package/src/styles/theme/_tokens.scss +147 -0
- package/src/styles/theme/_utilities.scss +175 -0
- package/src/toast/ToastBridgeModule.ts +68 -0
- package/src/toast/ToastListener.vue +55 -0
- package/src/toast/index.ts +26 -0
- package/src/toast/useSignalToast.ts +154 -0
- package/src/types/index.ts +285 -0
- package/src/types/pluralize.d.ts +19 -0
- package/src/types/quarkernel.d.ts +50 -0
- package/src/utils/formatters.ts +174 -0
- package/src/utils/index.ts +35 -0
- package/src/utils/transformers.ts +131 -0
- package/src/vite/qdadmDebugPlugin.ts +401 -0
- package/src/vite-env.d.ts +50 -0
- package/src/zones/ZoneRegistry.ts +934 -0
- package/src/zones/index.ts +29 -0
- package/src/zones/zones.ts +191 -0
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DebugModule - Module System v2 class for debug tools integration
|
|
3
|
+
*
|
|
4
|
+
* Integrates the debug infrastructure (DebugBridge, collectors, DebugBar)
|
|
5
|
+
* into a qdadm application via the Module System.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Creates and configures DebugBridge with default collectors
|
|
9
|
+
* - Registers ErrorCollector and SignalCollector automatically
|
|
10
|
+
* - Adds DebugBar component to 'app:debug' zone
|
|
11
|
+
* - Provides debug bridge via Vue's provide/inject
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import { h, inject, defineComponent, type DefineComponent } from 'vue'
|
|
15
|
+
import { Module, type ModuleOptions } from '../../kernel/Module'
|
|
16
|
+
import { createDebugBridge, type DebugBridge } from './DebugBridge'
|
|
17
|
+
import { ErrorCollector } from './ErrorCollector'
|
|
18
|
+
import { SignalCollector } from './SignalCollector'
|
|
19
|
+
import { ToastCollector } from './ToastCollector'
|
|
20
|
+
import { ZonesCollector } from './ZonesCollector'
|
|
21
|
+
import { AuthCollector } from './AuthCollector'
|
|
22
|
+
import { EntitiesCollector } from './EntitiesCollector'
|
|
23
|
+
import { RouterCollector } from './RouterCollector'
|
|
24
|
+
import { I18nCollector } from './I18nCollector'
|
|
25
|
+
import DebugBar from './components/DebugBar.vue'
|
|
26
|
+
import type { KernelContext } from '../../kernel/KernelContext'
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Symbol for debug bridge injection key
|
|
30
|
+
*/
|
|
31
|
+
// Symbol.for() instead of Symbol() — the latter mints a fresh
|
|
32
|
+
// instance each time the module evaluates, and Vite HMR can fragment
|
|
33
|
+
// a single source module into multiple live instances per importer.
|
|
34
|
+
// Provider and consumer would then hold DIFFERENT symbols and the
|
|
35
|
+
// inject would fall back to its default (null), defeating the bridge.
|
|
36
|
+
export const DEBUG_BRIDGE_KEY = Symbol.for('qdadm.debugBridge')
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Debug zone name for the DebugBar component
|
|
40
|
+
* Prefixed with _ to hide from ZonesCollector (internal zone)
|
|
41
|
+
*/
|
|
42
|
+
export const DEBUG_ZONE = '_app:debug'
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Global DebugBar wrapper component
|
|
46
|
+
* Auto-injects the debug bridge - use in App.vue for app-wide debug bar
|
|
47
|
+
*/
|
|
48
|
+
export const QdadmDebugBar = defineComponent({
|
|
49
|
+
name: 'QdadmDebugBar',
|
|
50
|
+
setup() {
|
|
51
|
+
const bridge = inject<DebugBridge | null>(DEBUG_BRIDGE_KEY, null)
|
|
52
|
+
return () => bridge ? h(DebugBar as unknown as DefineComponent, { bridge }) : null
|
|
53
|
+
}
|
|
54
|
+
})
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Debug module options
|
|
58
|
+
*/
|
|
59
|
+
export interface DebugModuleOptions extends ModuleOptions {
|
|
60
|
+
enabled?: boolean
|
|
61
|
+
maxEntries?: number
|
|
62
|
+
errorCollector?: boolean
|
|
63
|
+
signalCollector?: boolean
|
|
64
|
+
toastCollector?: boolean
|
|
65
|
+
zonesCollector?: boolean
|
|
66
|
+
authCollector?: boolean
|
|
67
|
+
entitiesCollector?: boolean
|
|
68
|
+
routerCollector?: boolean
|
|
69
|
+
i18nCollector?: boolean
|
|
70
|
+
_kernelManaged?: boolean
|
|
71
|
+
/**
|
|
72
|
+
* Existing DebugBridge to register collectors onto. When provided,
|
|
73
|
+
* the module skips its own `createDebugBridge()` AND skips
|
|
74
|
+
* `bridge.install(ctx)` — the host shell owns install timing so
|
|
75
|
+
* collectors from multiple sources (e.g. qdcms + qdadm) end up on
|
|
76
|
+
* the same bridge with a single merged install. When omitted, the
|
|
77
|
+
* module owns its bridge fully (legacy behaviour).
|
|
78
|
+
*/
|
|
79
|
+
bridge?: DebugBridge
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* DebugModule - Integrates debug tools into the application
|
|
84
|
+
*/
|
|
85
|
+
export class DebugModule extends Module {
|
|
86
|
+
static override moduleName = 'debug'
|
|
87
|
+
static override requires: string[] = []
|
|
88
|
+
static override priority = 1000
|
|
89
|
+
static styles = () => import('./styles.scss')
|
|
90
|
+
|
|
91
|
+
declare options: DebugModuleOptions
|
|
92
|
+
private _bridge: DebugBridge | null = null
|
|
93
|
+
private _blockId = 'debug-bar'
|
|
94
|
+
|
|
95
|
+
constructor(options: DebugModuleOptions = {}) {
|
|
96
|
+
super(options)
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Check if module should be enabled
|
|
101
|
+
*/
|
|
102
|
+
override enabled(ctx: KernelContext): boolean {
|
|
103
|
+
const extCtx = ctx as KernelContext & { isDev?: boolean; debug?: boolean }
|
|
104
|
+
return extCtx.isDev || extCtx.debug || false
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Connect module to kernel
|
|
109
|
+
*/
|
|
110
|
+
override async connect(ctx: KernelContext): Promise<void> {
|
|
111
|
+
this.ctx = ctx as unknown as Record<string, unknown>
|
|
112
|
+
|
|
113
|
+
// External bridge (host-owned) when provided — the host installs
|
|
114
|
+
// it later with a merged context. Otherwise create our own.
|
|
115
|
+
const externalBridge = this.options.bridge ?? null
|
|
116
|
+
this._bridge = externalBridge ?? createDebugBridge({
|
|
117
|
+
enabled: this.options.enabled ?? false
|
|
118
|
+
})
|
|
119
|
+
|
|
120
|
+
// Register default collectors
|
|
121
|
+
const collectorOptions = { maxEntries: this.options.maxEntries ?? 100 }
|
|
122
|
+
|
|
123
|
+
if (this.options.errorCollector !== false) {
|
|
124
|
+
this._bridge.addCollector(new ErrorCollector(collectorOptions))
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
if (this.options.signalCollector !== false) {
|
|
128
|
+
this._bridge.addCollector(new SignalCollector(collectorOptions))
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
if (this.options.toastCollector !== false) {
|
|
132
|
+
this._bridge.addCollector(new ToastCollector(collectorOptions))
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
if (this.options.zonesCollector !== false) {
|
|
136
|
+
this._bridge.addCollector(new ZonesCollector(collectorOptions))
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
if (this.options.authCollector !== false) {
|
|
140
|
+
this._bridge.addCollector(new AuthCollector(collectorOptions))
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
if (this.options.entitiesCollector !== false) {
|
|
144
|
+
this._bridge.addCollector(new EntitiesCollector(collectorOptions))
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
if (this.options.routerCollector !== false) {
|
|
148
|
+
this._bridge.addCollector(new RouterCollector(collectorOptions))
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
if (this.options.i18nCollector !== false) {
|
|
152
|
+
this._bridge.addCollector(new I18nCollector(collectorOptions))
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// Install collectors with context — only when WE own the bridge.
|
|
156
|
+
// External bridges are installed by the host later with a merged
|
|
157
|
+
// context that may include data from other frameworks (e.g. cms).
|
|
158
|
+
if (!externalBridge) {
|
|
159
|
+
this._bridge.install(ctx as unknown as Record<string, unknown>)
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// Define the debug zone
|
|
163
|
+
const extCtx = ctx as KernelContext & {
|
|
164
|
+
zone: (name: string) => void
|
|
165
|
+
block: (zone: string, config: {
|
|
166
|
+
id: string
|
|
167
|
+
component: unknown
|
|
168
|
+
props: Record<string, unknown>
|
|
169
|
+
weight: number
|
|
170
|
+
}) => void
|
|
171
|
+
provide: (key: symbol, value: unknown) => void
|
|
172
|
+
component: (name: string, component: unknown) => void
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
extCtx.zone(DEBUG_ZONE)
|
|
176
|
+
|
|
177
|
+
// Only register zone block if NOT using Kernel's root wrapper approach
|
|
178
|
+
if (!this.options._kernelManaged) {
|
|
179
|
+
extCtx.block(DEBUG_ZONE, {
|
|
180
|
+
id: this._blockId,
|
|
181
|
+
component: DebugBar,
|
|
182
|
+
props: {
|
|
183
|
+
bridge: this._bridge
|
|
184
|
+
},
|
|
185
|
+
weight: 100
|
|
186
|
+
})
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
// Provide debug bridge for injection
|
|
190
|
+
extCtx.provide(DEBUG_BRIDGE_KEY, this._bridge)
|
|
191
|
+
|
|
192
|
+
// Register global component for use in App.vue
|
|
193
|
+
extCtx.component('QdadmDebugBar', QdadmDebugBar)
|
|
194
|
+
|
|
195
|
+
// The HTTP debug bridge (qdadmDebugPlugin) is wired entirely from the
|
|
196
|
+
// injected client script (see transformIndexHtml in the plugin). The
|
|
197
|
+
// DebugModule itself stays browser-pure and HMR-agnostic.
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* Disconnect module from kernel
|
|
202
|
+
*/
|
|
203
|
+
override async disconnect(): Promise<void> {
|
|
204
|
+
if (this._bridge) {
|
|
205
|
+
this._bridge.uninstall()
|
|
206
|
+
this._bridge = null
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
await super.disconnect()
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* Get the debug bridge instance
|
|
214
|
+
*/
|
|
215
|
+
getBridge(): DebugBridge | null {
|
|
216
|
+
return this._bridge
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
export default DebugModule
|