@64mb/freelens-power 2.2.1 → 2.4.0
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/README.md +2 -2
- package/THIRD_PARTY_LICENSES +26 -0
- package/out/main/ai-models.js +2 -1
- package/out/main/ai-models.js.map +1 -1
- package/out/main/ai.js +13 -5
- package/out/main/ai.js.map +1 -1
- package/out/main/power-logs-query.js +4 -3
- package/out/main/power-logs-query.js.map +1 -1
- package/out/renderer/ai-extras.js +21 -16
- package/out/renderer/ai-extras.js.map +1 -1
- package/out/renderer/ai-icon.js +23 -0
- package/out/renderer/ai-icon.js.map +1 -1
- package/out/renderer/ai-logs-sql.js +1 -0
- package/out/renderer/ai-logs-sql.js.map +1 -1
- package/out/renderer/ai-message.js +8 -2
- package/out/renderer/ai-message.js.map +1 -1
- package/out/renderer/ai.js +91 -13
- package/out/renderer/ai.js.map +1 -1
- package/out/renderer/appearance.js +20 -2
- package/out/renderer/appearance.js.map +1 -1
- package/out/renderer/details/resource-health-details.js +2 -2
- package/out/renderer/details/resource-health-details.js.map +1 -1
- package/out/renderer/host-layout.js +15 -0
- package/out/renderer/host-layout.js.map +1 -0
- package/out/renderer/index.js +2 -0
- package/out/renderer/index.js.map +1 -1
- package/out/renderer/power-log-json-cell.js +2 -2
- package/out/renderer/power-logs.css.js +11 -2
- package/out/renderer/power-logs.css.js.map +1 -1
- package/out/renderer/power-logs.js +76 -33
- package/out/renderer/power-logs.js.map +1 -1
- package/out/renderer/preferences/ai-preferences.js +6 -3
- package/out/renderer/preferences/ai-preferences.js.map +1 -1
- package/out/renderer/preferences/monitoring-preferences.js +14 -6
- package/out/renderer/preferences/monitoring-preferences.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/renderer/index.tsx"],"sourcesContent":["/**\n * Copyright (c) Freelens Authors. All rights reserved.\n * Licensed under MIT License. See THIRD_PARTY_LICENSES for more information.\n */\n\nimport { Common, Renderer } from \"@freelensapp/extensions\";\nimport { computed, reaction } from \"mobx\";\nimport { observer } from \"mobx-react\";\nimport { EXTENSION_DISPLAY_NAME, EXTENSION_ID } from \"../common/extension-info\";\nimport { AiPreferencesStore } from \"../common/store/ai-preferences-store\";\nimport { AiShortcutsStore } from \"../common/store/ai-shortcuts-store\";\nimport { AppearancePreferencesStore } from \"../common/store/appearance-preferences-store\";\nimport { DashboardPreferencesStore } from \"../common/store/dashboard-preferences-store\";\nimport { LogsPreferencesStore } from \"../common/store/logs-preferences-store\";\nimport { MonitoringPreferencesStore } from \"../common/store/monitoring-preferences-store\";\nimport { NodeShellPreferencesStore } from \"../common/store/node-shell-preferences-store\";\nimport { PowerPreferencesStore } from \"../common/store/power-preferences-store\";\nimport { ReadOnlyPreferencesStore } from \"../common/store/read-only-preferences-store\";\nimport { startAiChat } from \"./ai\";\nimport { startAppearanceOverride } from \"./appearance\";\nimport { startPowerButtonStyles } from \"./button-styles\";\nimport { ClusterIconsPage } from \"./cluster-icons\";\nimport { DashboardPage } from \"./dashboard\";\nimport { HpaDiagnosticsDetails } from \"./details/hpa-diagnostics-details\";\nimport { NamespaceHealthDetails } from \"./details/namespace-health-details\";\nimport { ResourceHealthDetails } from \"./details/resource-health-details\";\nimport { SecretCertificateDetails } from \"./details/secret-certificate-details\";\nimport { ServiceDiagnosticsDetails } from \"./details/service-diagnostics-details\";\nimport { DiagnosticsPage } from \"./diagnostics\";\nimport { type DiagnosticsResourceScope, focusDiagnosticsNamespace } from \"./diagnostics-state\";\nimport { SecureNodeShellMenu } from \"./menus/secure-node-shell-menu\";\nimport { startMonitoring } from \"./monitoring\";\nimport { startMonitoringCollector } from \"./monitoring-collector\";\nimport { startMonitoringHistoryCollection } from \"./monitoring-history-collection\";\nimport { NodeMonitoringDetails } from \"./node-monitoring\";\nimport { startPodDetailsEnhancements } from \"./pod-details-enhancements\";\nimport { startPodMonitoring } from \"./pod-monitoring\";\nimport { PowerLogsPage } from \"./power-logs\";\nimport { PowerLogsMenu, startPowerLogsEntrypoints } from \"./power-logs-entrypoints\";\nimport { PowerPreferences } from \"./preferences/preferences\";\nimport { openPreferencesSection } from \"./preferences/section-navigation\";\nimport { startReadOnlyMode } from \"./read-only\";\nimport { ResourceRelationshipsPage } from \"./resource-relationships\";\nimport { startResourceSearch } from \"./resource-search\";\nimport { startWelcomeOverride } from \"./welcome\";\n\nimport type { ReactNode } from \"react\";\n\nconst PowerEnabled = observer(({ children }: { children: ReactNode }) =>\n PowerPreferencesStore.getInstanceOrCreate<PowerPreferencesStore>().enabled ? <>{children}</> : null,\n);\n\nconst RelationshipsPage = observer(() => (\n <PowerEnabled>\n <ResourceRelationshipsPage\n enabled={MonitoringPreferencesStore.getInstanceOrCreate<MonitoringPreferencesStore>().relationshipsVisible}\n />\n </PowerEnabled>\n));\n\nexport default class FreelensPowerRenderer extends Renderer.LensExtension {\n get name() {\n return EXTENSION_DISPLAY_NAME;\n }\n get sanitizedExtensionId() {\n return EXTENSION_ID;\n }\n get storeName() {\n return this.manifest.storeName || EXTENSION_ID;\n }\n\n private stopFeatures?: () => void;\n\n onActivate() {\n const power = PowerPreferencesStore.getInstanceOrCreate<PowerPreferencesStore>();\n power.loadExtension(this);\n LogsPreferencesStore.getInstanceOrCreate().loadExtension(this);\n AiPreferencesStore.getInstanceOrCreate().loadExtension(this);\n AiShortcutsStore.getInstanceOrCreate().loadExtension(this);\n ReadOnlyPreferencesStore.getInstanceOrCreate().loadExtension(this);\n NodeShellPreferencesStore.getInstanceOrCreate().loadExtension(this);\n MonitoringPreferencesStore.getInstanceOrCreate().loadExtension(this);\n AppearancePreferencesStore.getInstanceOrCreate().loadExtension(this);\n DashboardPreferencesStore.getInstanceOrCreate().loadExtension(this);\n this.stopFeatures?.();\n let disposers: (() => void)[] = [];\n const stop = reaction(\n () => power.enabled,\n (enabled) => {\n for (const dispose of disposers) dispose();\n disposers = [];\n if (enabled) {\n for (const start of [\n startReadOnlyMode,\n startMonitoringCollector,\n startMonitoringHistoryCollection,\n startMonitoring,\n startPodMonitoring,\n startPodDetailsEnhancements,\n startPowerButtonStyles,\n startAppearanceOverride,\n startWelcomeOverride,\n startAiChat,\n startResourceSearch,\n startPowerLogsEntrypoints,\n ]) {\n try {\n disposers.push(start());\n } catch {\n Common.logger.warn(\"[Freelens Power] feature could not start\", { feature: start.name });\n }\n }\n }\n },\n { fireImmediately: true },\n );\n this.stopFeatures = () => {\n stop();\n for (const dispose of disposers) dispose();\n disposers = [];\n };\n }\n\n onDeactivate() {\n this.stopFeatures?.();\n this.stopFeatures = undefined;\n }\n\n appPreferences = [\n {\n id: \"freelens-power-settings\",\n title: \"\",\n components: { Input: PowerPreferences, Hint: () => null },\n },\n ];\n\n globalPages = [\n {\n id: \"cluster-icons\",\n components: {\n Page: () => (\n <PowerEnabled>\n <ClusterIconsPage />\n </PowerEnabled>\n ),\n },\n },\n {\n id: \"dashboard\",\n components: {\n Page: () => (\n <PowerEnabled>\n <DashboardPage\n onOpenPreferences={() => openPreferencesSection(\"dashboard\", () => this.navigateToPreferences())}\n />\n </PowerEnabled>\n ),\n },\n },\n ];\n\n clusterPages = [\n {\n id: \"power-logs\",\n components: {\n Page: () => (\n <PowerEnabled>\n <PowerLogsPage />\n </PowerEnabled>\n ),\n },\n },\n { id: \"relationships\", components: { Page: () => <RelationshipsPage /> } },\n {\n id: \"diagnostics\",\n components: {\n Page: () => (\n <PowerEnabled>\n <DiagnosticsPage />\n </PowerEnabled>\n ),\n },\n },\n ];\n\n clusterPageMenus = [\n {\n visible: computed(\n () =>\n PowerPreferencesStore.getInstanceOrCreate<PowerPreferencesStore>().enabled &&\n MonitoringPreferencesStore.getInstanceOrCreate<MonitoringPreferencesStore>().diagnosticsVisible,\n ),\n target: { pageId: \"diagnostics\" },\n title: \"Diagnostics\",\n orderNumber: 5,\n components: { Icon: () => <Renderer.Component.Icon material=\"insights\" tooltip=\"Resource diagnostics\" /> },\n },\n {\n visible: computed(\n () =>\n PowerPreferencesStore.getInstanceOrCreate<PowerPreferencesStore>().enabled &&\n MonitoringPreferencesStore.getInstanceOrCreate<MonitoringPreferencesStore>().relationshipsVisible,\n ),\n id: \"relationships\",\n target: { pageId: \"relationships\" },\n title: \"Relationships\",\n orderNumber: 6,\n components: {\n Icon: () => <Renderer.Component.Icon material=\"account_tree\" tooltip=\"Resource relationships\" />,\n },\n },\n {\n id: \"power-logs\",\n visible: computed(\n () =>\n PowerPreferencesStore.getInstanceOrCreate<PowerPreferencesStore>().enabled &&\n LogsPreferencesStore.getInstanceOrCreate<LogsPreferencesStore>().enabled,\n ),\n target: { pageId: \"power-logs\" },\n title: \"Power Logs\",\n orderNumber: 7,\n components: {\n Icon: () => <Renderer.Component.Icon material=\"subject\" tooltip=\"Workload logs and SQL captures\" />,\n },\n },\n ];\n\n topBarItems = [\n {\n components: {\n Item: () => (\n <PowerEnabled>\n <Renderer.Component.Icon\n material=\"battery_charging_full\"\n className=\"freelens-power-settings-icon\"\n tooltip=\"Freelens Power settings\"\n onClick={() => this.navigateToPreferences()}\n />\n </PowerEnabled>\n ),\n },\n },\n ];\n\n private openDiagnostics = (namespace?: string, resourceScope?: DiagnosticsResourceScope) => {\n const clusterId = Renderer.Catalog.activeCluster.get()?.metadata.uid;\n if (clusterId && (namespace || resourceScope)) focusDiagnosticsNamespace(clusterId, namespace, resourceScope);\n void this.navigate(\"diagnostics\");\n };\n\n kubeObjectDetailItems: Renderer.LensExtension[\"kubeObjectDetailItems\"] = [\n ...[\"Pod\", \"Deployment\", \"StatefulSet\", \"DaemonSet\", \"Node\"].map((kind) => ({\n kind,\n apiVersions: kind === \"Pod\" || kind === \"Node\" ? [\"v1\"] : [\"apps/v1\"],\n priority: 320,\n components: {\n Details: (props: Renderer.Component.KubeObjectDetailsProps) => (\n <PowerEnabled>\n <ResourceHealthDetails {...props} onOpenDiagnostics={this.openDiagnostics} />\n </PowerEnabled>\n ),\n },\n })),\n {\n kind: \"Namespace\",\n apiVersions: [\"v1\"],\n priority: 320,\n components: {\n Details: (props) => (\n <PowerEnabled>\n <NamespaceHealthDetails {...props} onOpenDiagnostics={this.openDiagnostics} />\n </PowerEnabled>\n ),\n },\n },\n {\n kind: \"Service\",\n apiVersions: [\"v1\"],\n priority: 320,\n components: {\n Details: (props) => (\n <PowerEnabled>\n <ServiceDiagnosticsDetails {...props} object={props.object as Renderer.K8sApi.Service} />\n </PowerEnabled>\n ),\n },\n },\n {\n kind: \"HorizontalPodAutoscaler\",\n apiVersions: [\"autoscaling/v1\", \"autoscaling/v2\"],\n priority: 320,\n components: {\n Details: (props) => (\n <PowerEnabled>\n <HpaDiagnosticsDetails {...props} object={props.object as Renderer.K8sApi.HorizontalPodAutoscaler} />\n </PowerEnabled>\n ),\n },\n },\n {\n kind: \"Node\",\n apiVersions: [\"v1\"],\n // host order is [300 - priority], before native metrics at [-1]\n priority: 310,\n components: {\n Details: (props) => (\n <PowerEnabled>\n <NodeMonitoringDetails {...props} object={props.object as Renderer.K8sApi.Node} />\n </PowerEnabled>\n ),\n },\n },\n {\n kind: \"Secret\",\n apiVersions: [\"v1\"],\n priority: 10,\n components: {\n Details: (props) => (\n <PowerEnabled>\n <SecretCertificateDetails {...props} object={props.object as Renderer.K8sApi.Secret} />\n </PowerEnabled>\n ),\n },\n },\n ];\n\n kubeObjectMenuItems = [\n ...([\"Pod\", \"Deployment\", \"DaemonSet\", \"StatefulSet\", \"ReplicaSet\", \"Job\", \"CronJob\"] as const).map((kind) => ({\n kind,\n apiVersions: kind === \"Pod\" ? [\"v1\"] : kind === \"Job\" || kind === \"CronJob\" ? [\"batch/v1\"] : [\"apps/v1\"],\n components: {\n MenuItem: (props: Renderer.Component.KubeObjectMenuProps<Renderer.K8sApi.KubeObject>) => (\n <PowerEnabled>\n <PowerLogsMenu {...props} />\n </PowerEnabled>\n ),\n },\n })),\n {\n kind: \"Node\",\n apiVersions: [\"v1\"],\n components: {\n MenuItem: (props: Renderer.Component.KubeObjectMenuProps<Renderer.K8sApi.Node>) => (\n <PowerEnabled>\n <SecureNodeShellMenu {...props} />\n </PowerEnabled>\n ),\n },\n },\n ];\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/renderer/index.tsx"],"sourcesContent":["/**\n * Copyright (c) Freelens Authors. All rights reserved.\n * Licensed under MIT License. See THIRD_PARTY_LICENSES for more information.\n */\n\nimport { Common, Renderer } from \"@freelensapp/extensions\";\nimport { computed, reaction } from \"mobx\";\nimport { observer } from \"mobx-react\";\nimport { EXTENSION_DISPLAY_NAME, EXTENSION_ID } from \"../common/extension-info\";\nimport { AiPreferencesStore } from \"../common/store/ai-preferences-store\";\nimport { AiShortcutsStore } from \"../common/store/ai-shortcuts-store\";\nimport { AppearancePreferencesStore } from \"../common/store/appearance-preferences-store\";\nimport { DashboardPreferencesStore } from \"../common/store/dashboard-preferences-store\";\nimport { LogsPreferencesStore } from \"../common/store/logs-preferences-store\";\nimport { MonitoringPreferencesStore } from \"../common/store/monitoring-preferences-store\";\nimport { NodeShellPreferencesStore } from \"../common/store/node-shell-preferences-store\";\nimport { PowerPreferencesStore } from \"../common/store/power-preferences-store\";\nimport { ReadOnlyPreferencesStore } from \"../common/store/read-only-preferences-store\";\nimport { startAiChat } from \"./ai\";\nimport { startAppearanceOverride } from \"./appearance\";\nimport { startPowerButtonStyles } from \"./button-styles\";\nimport { ClusterIconsPage } from \"./cluster-icons\";\nimport { DashboardPage } from \"./dashboard\";\nimport { HpaDiagnosticsDetails } from \"./details/hpa-diagnostics-details\";\nimport { NamespaceHealthDetails } from \"./details/namespace-health-details\";\nimport { ResourceHealthDetails } from \"./details/resource-health-details\";\nimport { SecretCertificateDetails } from \"./details/secret-certificate-details\";\nimport { ServiceDiagnosticsDetails } from \"./details/service-diagnostics-details\";\nimport { DiagnosticsPage } from \"./diagnostics\";\nimport { type DiagnosticsResourceScope, focusDiagnosticsNamespace } from \"./diagnostics-state\";\nimport { startHostLayoutStyles } from \"./host-layout\";\nimport { SecureNodeShellMenu } from \"./menus/secure-node-shell-menu\";\nimport { startMonitoring } from \"./monitoring\";\nimport { startMonitoringCollector } from \"./monitoring-collector\";\nimport { startMonitoringHistoryCollection } from \"./monitoring-history-collection\";\nimport { NodeMonitoringDetails } from \"./node-monitoring\";\nimport { startPodDetailsEnhancements } from \"./pod-details-enhancements\";\nimport { startPodMonitoring } from \"./pod-monitoring\";\nimport { PowerLogsPage } from \"./power-logs\";\nimport { PowerLogsMenu, startPowerLogsEntrypoints } from \"./power-logs-entrypoints\";\nimport { PowerPreferences } from \"./preferences/preferences\";\nimport { openPreferencesSection } from \"./preferences/section-navigation\";\nimport { startReadOnlyMode } from \"./read-only\";\nimport { ResourceRelationshipsPage } from \"./resource-relationships\";\nimport { startResourceSearch } from \"./resource-search\";\nimport { startWelcomeOverride } from \"./welcome\";\n\nimport type { ReactNode } from \"react\";\n\nconst PowerEnabled = observer(({ children }: { children: ReactNode }) =>\n PowerPreferencesStore.getInstanceOrCreate<PowerPreferencesStore>().enabled ? <>{children}</> : null,\n);\n\nconst RelationshipsPage = observer(() => (\n <PowerEnabled>\n <ResourceRelationshipsPage\n enabled={MonitoringPreferencesStore.getInstanceOrCreate<MonitoringPreferencesStore>().relationshipsVisible}\n />\n </PowerEnabled>\n));\n\nexport default class FreelensPowerRenderer extends Renderer.LensExtension {\n get name() {\n return EXTENSION_DISPLAY_NAME;\n }\n get sanitizedExtensionId() {\n return EXTENSION_ID;\n }\n get storeName() {\n return this.manifest.storeName || EXTENSION_ID;\n }\n\n private stopFeatures?: () => void;\n\n onActivate() {\n const power = PowerPreferencesStore.getInstanceOrCreate<PowerPreferencesStore>();\n power.loadExtension(this);\n LogsPreferencesStore.getInstanceOrCreate().loadExtension(this);\n AiPreferencesStore.getInstanceOrCreate().loadExtension(this);\n AiShortcutsStore.getInstanceOrCreate().loadExtension(this);\n ReadOnlyPreferencesStore.getInstanceOrCreate().loadExtension(this);\n NodeShellPreferencesStore.getInstanceOrCreate().loadExtension(this);\n MonitoringPreferencesStore.getInstanceOrCreate().loadExtension(this);\n AppearancePreferencesStore.getInstanceOrCreate().loadExtension(this);\n DashboardPreferencesStore.getInstanceOrCreate().loadExtension(this);\n this.stopFeatures?.();\n let disposers: (() => void)[] = [];\n const stop = reaction(\n () => power.enabled,\n (enabled) => {\n for (const dispose of disposers) dispose();\n disposers = [];\n if (enabled) {\n for (const start of [\n startReadOnlyMode,\n startMonitoringCollector,\n startMonitoringHistoryCollection,\n startMonitoring,\n startPodMonitoring,\n startPodDetailsEnhancements,\n startPowerButtonStyles,\n startHostLayoutStyles,\n startAppearanceOverride,\n startWelcomeOverride,\n startAiChat,\n startResourceSearch,\n startPowerLogsEntrypoints,\n ]) {\n try {\n disposers.push(start());\n } catch {\n Common.logger.warn(\"[Freelens Power] feature could not start\", { feature: start.name });\n }\n }\n }\n },\n { fireImmediately: true },\n );\n this.stopFeatures = () => {\n stop();\n for (const dispose of disposers) dispose();\n disposers = [];\n };\n }\n\n onDeactivate() {\n this.stopFeatures?.();\n this.stopFeatures = undefined;\n }\n\n appPreferences = [\n {\n id: \"freelens-power-settings\",\n title: \"\",\n components: { Input: PowerPreferences, Hint: () => null },\n },\n ];\n\n globalPages = [\n {\n id: \"cluster-icons\",\n components: {\n Page: () => (\n <PowerEnabled>\n <ClusterIconsPage />\n </PowerEnabled>\n ),\n },\n },\n {\n id: \"dashboard\",\n components: {\n Page: () => (\n <PowerEnabled>\n <DashboardPage\n onOpenPreferences={() => openPreferencesSection(\"dashboard\", () => this.navigateToPreferences())}\n />\n </PowerEnabled>\n ),\n },\n },\n ];\n\n clusterPages = [\n {\n id: \"power-logs\",\n components: {\n Page: () => (\n <PowerEnabled>\n <PowerLogsPage />\n </PowerEnabled>\n ),\n },\n },\n { id: \"relationships\", components: { Page: () => <RelationshipsPage /> } },\n {\n id: \"diagnostics\",\n components: {\n Page: () => (\n <PowerEnabled>\n <DiagnosticsPage />\n </PowerEnabled>\n ),\n },\n },\n ];\n\n clusterPageMenus = [\n {\n visible: computed(\n () =>\n PowerPreferencesStore.getInstanceOrCreate<PowerPreferencesStore>().enabled &&\n MonitoringPreferencesStore.getInstanceOrCreate<MonitoringPreferencesStore>().diagnosticsVisible,\n ),\n target: { pageId: \"diagnostics\" },\n title: \"Diagnostics\",\n orderNumber: 5,\n components: { Icon: () => <Renderer.Component.Icon material=\"insights\" tooltip=\"Resource diagnostics\" /> },\n },\n {\n visible: computed(\n () =>\n PowerPreferencesStore.getInstanceOrCreate<PowerPreferencesStore>().enabled &&\n MonitoringPreferencesStore.getInstanceOrCreate<MonitoringPreferencesStore>().relationshipsVisible,\n ),\n id: \"relationships\",\n target: { pageId: \"relationships\" },\n title: \"Relationships\",\n orderNumber: 6,\n components: {\n Icon: () => <Renderer.Component.Icon material=\"account_tree\" tooltip=\"Resource relationships\" />,\n },\n },\n {\n id: \"power-logs\",\n visible: computed(\n () =>\n PowerPreferencesStore.getInstanceOrCreate<PowerPreferencesStore>().enabled &&\n LogsPreferencesStore.getInstanceOrCreate<LogsPreferencesStore>().enabled,\n ),\n target: { pageId: \"power-logs\" },\n title: \"Power Logs\",\n orderNumber: 7,\n components: {\n Icon: () => <Renderer.Component.Icon material=\"subject\" tooltip=\"Workload logs and SQL captures\" />,\n },\n },\n ];\n\n topBarItems = [\n {\n components: {\n Item: () => (\n <PowerEnabled>\n <Renderer.Component.Icon\n material=\"battery_charging_full\"\n className=\"freelens-power-settings-icon\"\n tooltip=\"Freelens Power settings\"\n onClick={() => this.navigateToPreferences()}\n />\n </PowerEnabled>\n ),\n },\n },\n ];\n\n private openDiagnostics = (namespace?: string, resourceScope?: DiagnosticsResourceScope) => {\n const clusterId = Renderer.Catalog.activeCluster.get()?.metadata.uid;\n if (clusterId && (namespace || resourceScope)) focusDiagnosticsNamespace(clusterId, namespace, resourceScope);\n void this.navigate(\"diagnostics\");\n };\n\n kubeObjectDetailItems: Renderer.LensExtension[\"kubeObjectDetailItems\"] = [\n ...[\"Pod\", \"Deployment\", \"StatefulSet\", \"DaemonSet\", \"Node\"].map((kind) => ({\n kind,\n apiVersions: kind === \"Pod\" || kind === \"Node\" ? [\"v1\"] : [\"apps/v1\"],\n priority: 320,\n components: {\n Details: (props: Renderer.Component.KubeObjectDetailsProps) => (\n <PowerEnabled>\n <ResourceHealthDetails {...props} onOpenDiagnostics={this.openDiagnostics} />\n </PowerEnabled>\n ),\n },\n })),\n {\n kind: \"Namespace\",\n apiVersions: [\"v1\"],\n priority: 320,\n components: {\n Details: (props) => (\n <PowerEnabled>\n <NamespaceHealthDetails {...props} onOpenDiagnostics={this.openDiagnostics} />\n </PowerEnabled>\n ),\n },\n },\n {\n kind: \"Service\",\n apiVersions: [\"v1\"],\n priority: 320,\n components: {\n Details: (props) => (\n <PowerEnabled>\n <ServiceDiagnosticsDetails {...props} object={props.object as Renderer.K8sApi.Service} />\n </PowerEnabled>\n ),\n },\n },\n {\n kind: \"HorizontalPodAutoscaler\",\n apiVersions: [\"autoscaling/v1\", \"autoscaling/v2\"],\n priority: 320,\n components: {\n Details: (props) => (\n <PowerEnabled>\n <HpaDiagnosticsDetails {...props} object={props.object as Renderer.K8sApi.HorizontalPodAutoscaler} />\n </PowerEnabled>\n ),\n },\n },\n {\n kind: \"Node\",\n apiVersions: [\"v1\"],\n // host order is [300 - priority], before native metrics at [-1]\n priority: 310,\n components: {\n Details: (props) => (\n <PowerEnabled>\n <NodeMonitoringDetails {...props} object={props.object as Renderer.K8sApi.Node} />\n </PowerEnabled>\n ),\n },\n },\n {\n kind: \"Secret\",\n apiVersions: [\"v1\"],\n priority: 10,\n components: {\n Details: (props) => (\n <PowerEnabled>\n <SecretCertificateDetails {...props} object={props.object as Renderer.K8sApi.Secret} />\n </PowerEnabled>\n ),\n },\n },\n ];\n\n kubeObjectMenuItems = [\n ...([\"Pod\", \"Deployment\", \"DaemonSet\", \"StatefulSet\", \"ReplicaSet\", \"Job\", \"CronJob\"] as const).map((kind) => ({\n kind,\n apiVersions: kind === \"Pod\" ? [\"v1\"] : kind === \"Job\" || kind === \"CronJob\" ? [\"batch/v1\"] : [\"apps/v1\"],\n components: {\n MenuItem: (props: Renderer.Component.KubeObjectMenuProps<Renderer.K8sApi.KubeObject>) => (\n <PowerEnabled>\n <PowerLogsMenu {...props} />\n </PowerEnabled>\n ),\n },\n })),\n {\n kind: \"Node\",\n apiVersions: [\"v1\"],\n components: {\n MenuItem: (props: Renderer.Component.KubeObjectMenuProps<Renderer.K8sApi.Node>) => (\n <PowerEnabled>\n <SecureNodeShellMenu {...props} />\n </PowerEnabled>\n ),\n },\n },\n ];\n}\n"],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
const require__global_external_react = require("./_virtual/_global-external_react.js");
|
|
2
2
|
const require_jsx_runtime = require("./_virtual/_global-external_react/jsx-runtime.js");
|
|
3
3
|
const require_native_tooltip = require("./native-tooltip.js");
|
|
4
|
-
const require_date_time = require("./src/common/date-time.js");
|
|
5
|
-
const require_power_log_sql_level = require("./src/common/power-log-sql-level.js");
|
|
6
4
|
const require_power_log_json_fields = require("./power-log-json-fields.js");
|
|
7
5
|
const require_power_log_json = require("./power-log-json.js");
|
|
6
|
+
const require_date_time = require("./src/common/date-time.js");
|
|
7
|
+
const require_power_log_sql_level = require("./src/common/power-log-sql-level.js");
|
|
8
8
|
const require_power_log_message = require("./power-log-message.js");
|
|
9
9
|
let electron = require("electron");
|
|
10
10
|
//#region src/renderer/power-log-json-cell.tsx
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
//#region src/renderer/power-logs.css.ts
|
|
2
2
|
var powerLogsStyles = `
|
|
3
|
+
.ConfirmDialog:has(.power-logs-confirmation) > .box { background:var(--contentColor); color:var(--textColorPrimary); min-width:min(360px,calc(100vw - 32px)); max-width:min(640px,calc(100vw - 32px)); }
|
|
4
|
+
.ConfirmDialog:has(.power-logs-confirmation) .confirm-content { gap:12px; }
|
|
5
|
+
.ConfirmDialog:has(.power-logs-confirmation) .confirm-content > .Icon { flex-shrink:0; margin:0; }
|
|
6
|
+
.ConfirmDialog .power-logs-confirmation { display:block; min-width:0; overflow-wrap:anywhere; }
|
|
7
|
+
.ConfirmDialog:has(.power-logs-confirmation) .confirm-buttons { background:var(--mainBackground); color:var(--textColorPrimary); }
|
|
8
|
+
.ConfirmDialog .power-logs-confirm-label { display:inline-flex; align-items:center; gap:6px; }
|
|
9
|
+
.ConfirmDialog:has(.power-logs-confirmation) .Button.power-logs-confirm-delete { background:var(--colorError); color:#fff !important; }
|
|
3
10
|
body:has(.power-logs[data-testid="power-logs-page"]) .power-ai-launcher { display:none; }
|
|
4
11
|
.power-logs { display:flex; flex-direction:column; height:100%; min-height:0; min-width:0; box-sizing:border-box; overflow:hidden; padding:12px; gap:6px; color:var(--textColorPrimary); container-type:inline-size; }
|
|
5
12
|
.power-logs header, .power-logs-toolbar, .power-logs-filters, .power-logs-source { display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
|
|
@@ -21,7 +28,8 @@ body:has(.power-logs[data-testid="power-logs-page"]) .power-ai-launcher { displa
|
|
|
21
28
|
.power-logs .power-logs-error { color:var(--colorError,#e68b80); }
|
|
22
29
|
.power-logs-tabs { display:flex; gap:4px; flex-shrink:0; }
|
|
23
30
|
.power-logs header .power-logs-page-title { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
|
|
24
|
-
.power-logs-snapshot-option { display:flex; align-items:center; justify-content:
|
|
31
|
+
.power-logs-snapshot-option { display:flex; align-items:center; justify-content:flex-start; gap:12px; min-width:0; }
|
|
32
|
+
.power-logs-snapshot-option > .power-logs-option-text { flex:1; }
|
|
25
33
|
.power-logs-option-text { display:flex; flex-direction:column; gap:3px; min-width:0; white-space:normal; overflow-wrap:anywhere; }
|
|
26
34
|
.power-logs-option-text strong { font-weight:500; }
|
|
27
35
|
.power-logs-option-text small { opacity:.85; font-size:11px; }
|
|
@@ -123,7 +131,8 @@ body:has(.power-logs[data-testid="power-logs-page"]) .power-ai-launcher { displa
|
|
|
123
131
|
.power-logs .power-logs-error { white-space:normal; overflow:visible; overflow-wrap:anywhere; }
|
|
124
132
|
.power-logs-snapshot-notes { max-height:100px; overflow:auto; }
|
|
125
133
|
@container(max-width:760px) { .power-logs-detail { width:min(420px,86%); padding:12px; gap:10px; } .power-logs-filters .power-logs-select { flex:1 1 130px; } .power-logs-filters > input { flex-basis:100%; } .power-log-row { grid-template-columns:var(--log-time-width,calc(8ch + 4px)) var(--log-level-width,calc(var(--power-log-level-ch,7) * .833333ch + 4px)) minmax(0,1fr); } .power-log-row .power-log-origin { display:none; } .power-logs header .power-logs-actions { gap:4px; } }
|
|
126
|
-
.Select__option--is-selected .power-logs-snapshot-option > button { color
|
|
134
|
+
.Select__option--is-selected .power-logs-snapshot-option > button { color:var(--freelens-power-accent-foreground,#fff); background:#0002; border:1px solid currentColor; }
|
|
135
|
+
.Select__option--is-selected .power-logs-snapshot-option > button[data-capture-persistent]:not(:disabled):hover { color:var(--primary); background:var(--freelens-power-accent-foreground,#fff); border-color:var(--freelens-power-accent-foreground,#fff); }
|
|
127
136
|
.Select__option--is-selected .power-logs-snapshot-option > button[data-capture-delete]:not(:disabled):hover { color:#a61b1b; background:#fff; border-color:#fff; }
|
|
128
137
|
.power-logs-field-filters { display:flex; align-items:center; flex-wrap:wrap; gap:4px; }
|
|
129
138
|
.power-logs .power-logs-field-filters button { max-width:360px; min-height:24px; padding:2px 6px; font-size:11px; }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"power-logs.css.js","names":[],"sources":["../../src/renderer/power-logs.css.ts"],"sourcesContent":["export const powerLogsStyles = `\nbody:has(.power-logs[data-testid=\"power-logs-page\"]) .power-ai-launcher { display:none; }\n.power-logs { display:flex; flex-direction:column; height:100%; min-height:0; min-width:0; box-sizing:border-box; overflow:hidden; padding:12px; gap:6px; color:var(--textColorPrimary); container-type:inline-size; }\n.power-logs header, .power-logs-toolbar, .power-logs-filters, .power-logs-source { display:flex; align-items:center; gap:6px; flex-wrap:wrap; }\n.power-logs header h1 { margin:0; font-size:16px; display:flex; align-items:center; gap:10px; }\n.power-logs header .power-logs-actions { margin-left:auto; display:flex; gap:8px; flex-wrap:wrap; }\n.power-logs :is(button,input,select,textarea), .power-logs .power-logs-options > summary { font:inherit; color:inherit; }\n.power-logs :is(.power-logs-filters > input,textarea) { background:var(--contentColor); border:1px solid var(--borderColor); border-radius:5px; padding:4px 8px; min-width:0; }\n.power-logs-filters > input { flex:1; min-width:180px; }\n.power-logs label { display:flex; align-items:center; gap:8px; }\n.power-logs button, .power-logs .power-logs-options > summary { display:inline-flex; align-items:center; justify-content:center; gap:6px; min-height:28px; padding:3px 8px; border:1px solid var(--borderColor); border-radius:5px; background:var(--contentColor); cursor:pointer; box-shadow:none; }\n.power-logs button::before { content:none; }\n.power-logs :is(button:not(:disabled),.power-logs-options > summary):hover { color:var(--primary); border-color:var(--primary); }\n.power-logs button[aria-pressed=true], .power-logs button[aria-selected=true] { color:var(--primary); background:color-mix(in srgb,var(--primary) 12%,var(--contentColor)); border-color:var(--primary); }\n.power-logs button:disabled { opacity:.45; cursor:default; }\n.power-logs :is(button,input,select,textarea):focus-visible, .power-logs .power-logs-options > summary:focus-visible { outline:2px solid var(--primary); outline-offset:2px; }\n.power-logs .power-logs-filters > input:focus-visible, .power-logs textarea:focus-visible { outline:none; border-color:var(--primary); box-shadow:inset 0 0 0 1px var(--primary); }\n.power-logs .power-logs-muted { color:var(--textColorSecondary); font-size:12px; line-height:1.5; }\n.power-logs .power-logs-notice { padding:3px 8px; border:1px solid var(--borderColor); border-radius:4px; line-height:1.5; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; flex-shrink:0; }\n.power-logs .power-logs-error { color:var(--colorError,#e68b80); }\n.power-logs-tabs { display:flex; gap:4px; flex-shrink:0; }\n.power-logs header .power-logs-page-title { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }\n.power-logs-snapshot-option { display:flex; align-items:center; justify-content:space-between; gap:12px; min-width:0; }\n.power-logs-option-text { display:flex; flex-direction:column; gap:3px; min-width:0; white-space:normal; overflow-wrap:anywhere; }\n.power-logs-option-text strong { font-weight:500; }\n.power-logs-option-text small { opacity:.85; font-size:11px; }\n.power-logs-source-option { display:flex; align-items:center; gap:10px; width:100%; min-width:0; white-space:normal; line-height:1.4; }\n.power-logs-source-option > :first-child { flex-shrink:0; opacity:.75; }\n.power-logs-source-option .power-logs-option-text { flex:1; }\n.power-logs-source-option strong, .power-logs-source-option small { white-space:normal; overflow:visible; overflow-wrap:anywhere; }\n.power-logs-source-check { display:inline-flex; width:16px; flex-shrink:0; }\n.power-logs-snapshot-option > button { display:inline-flex; align-items:center; justify-content:center; flex-shrink:0; min-width:28px; min-height:28px; padding:0; border:0; border-radius:4px; background:transparent; color:inherit; cursor:pointer; }\n.power-logs-snapshot-option > button[data-capture-delete]:not(:disabled):hover { color:var(--colorError); background:color-mix(in srgb,var(--colorError) 12%,transparent); }\n.power-logs-snapshot-option > button[data-capture-persistent]:not(:disabled):hover, .power-logs-snapshot-option > button[aria-pressed=true] { color:var(--primary); background:color-mix(in srgb,var(--primary) 12%,transparent); }\n.power-logs-snapshot-option > button:focus-visible { outline:2px solid var(--primary); outline-offset:-2px; }\n.power-logs-snapshot-option > button:disabled { opacity:.45; cursor:default; }\n.power-logs-level-label { color:var(--textColorSecondary); }\n.power-logs-level-label[data-level=debug] { color:var(--colorInfo); }\n.power-logs-level-label[data-level=info] { color:var(--primary); }\n.power-logs-level-label[data-level=warn] { color:var(--colorWarning); }\n.power-logs-level-label[data-level=error],.power-logs-level-label[data-level=fatal] { color:var(--colorError); }\n.Select__option--is-selected .power-logs-level-label { color:inherit; }\n.power-logs-workspace { position:relative; display:flex; flex:1; min-height:0; }\n.power-logs-viewer { display:flex; flex-direction:column; flex:1; min-width:0; min-height:0; gap:4px; }\n.power-logs-stream { position:relative; flex:1; min-height:0; min-width:0; overflow:auto; border:1px solid var(--borderColor); border-radius:6px; background:var(--contentColor); }\n.power-log-row { min-height:0!important; position:absolute; left:0; right:0; width:100%; display:grid!important; grid-template-columns:var(--log-time-width,calc(8ch + 4px)) var(--log-level-width,calc(var(--power-log-level-ch,7) * .833333ch + 4px)) minmax(100px,180px) minmax(0,1fr); align-items:center; gap:8px!important; padding:0 12px!important; border:0!important; border-left:3px solid var(--textColorSecondary)!important; border-bottom:1px solid var(--borderFaintColor)!important; border-radius:0!important; text-align:left; background:transparent!important; font-family:var(--font-monospace,monospace)!important; font-size:12px!important; }\n.power-logs[data-compact=true] .power-log-row { --log-time-width:calc(8ch + 1px); --log-level-width:calc(var(--power-log-level-ch,7) * .909091ch + 1px); padding-inline:6px!important; gap:4px!important; font-size:11px!important; line-height:16px; }\n.power-logs[data-compact=true] table :is(td,th) { padding:1px 6px; font-size:11px; line-height:16px; }\n.power-logs[data-compact=true] .power-logs-cell { white-space:nowrap; }\n.power-log-row > span { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }\n.power-log-row > span:last-child { white-space:pre; height:16px; line-height:16px; }\n.power-log-message { color:var(--textColorPrimary); }\n.power-log-message [data-log-token=http-method] { color:var(--primary); }\n.power-log-message [data-log-token=uuid] { color:#9cdcfe; }\n.theme-light .power-log-message [data-log-token=uuid] { color:#005a9e; }\n.power-log-row .power-log-level { font-size:10px; font-weight:600; text-transform:uppercase; }\n.power-log-row[data-level=warn] { border-left-color:var(--colorWarning,#d9a441)!important; }\n.power-log-row[data-level=error],.power-log-row[data-level=fatal] { border-left-color:var(--colorError,#d26860)!important; }\n.power-log-row[data-level=info] { border-left-color:var(--primary)!important; }\n.power-logs-detail { position:absolute; z-index:5; top:0; bottom:0; right:0; box-sizing:border-box; box-shadow:-4px 0 18px #0004; display:flex; flex-direction:column; align-items:stretch; gap:12px; width:460px; max-width:95%; padding:16px; background:var(--contentColor); border:1px solid var(--borderColor); border-radius:6px; overflow:auto; }\n.power-logs-detail header { justify-content:flex-end; }\n.power-logs-detail header > strong { margin-right:auto; }\n.power-logs-structured-heading { display:flex; align-items:center; gap:6px; }\n.power-logs .power-logs-detail-copy, .power-logs .power-logs-detail-close { flex-shrink:0; width:28px; padding:0; border-color:transparent; background:transparent; }\n.power-logs .power-logs-detail-copy:not(:disabled):hover, .power-logs .power-logs-detail-close:not(:disabled):hover { border-color:transparent; background:color-mix(in srgb,var(--primary) 10%,transparent); }\n.power-log-json { --json-key:#9cdcfe; --json-string:#ce9178; --json-number:#b5cea8; --json-literal:#c586c0; }\n.theme-light .power-log-json { --json-key:#005a9e; --json-string:#9e2b1a; --json-number:#17642d; --json-literal:#7a288c; }\n.power-log-json [data-token=key] { color:var(--json-key); }\n.power-log-json [data-token=string] { color:var(--json-string); }\n.power-log-json [data-token=number] { color:var(--json-number); }\n.power-log-json [data-token=literal] { color:var(--json-literal); }\n.power-logs pre { white-space:pre-wrap; overflow-wrap:anywhere; font-size:12px; line-height:1.6; }\n.power-logs textarea { user-select:text; box-sizing:border-box; width:100%; height:56px; min-height:48px; max-height:120px; flex-shrink:0; resize:vertical; font-family:var(--font-monospace,monospace); }\n.power-logs-results { flex:1; min-height:0; overflow:auto; border:1px solid var(--borderColor); border-radius:6px; }\n.power-logs table { border-collapse:collapse; table-layout:fixed; font-size:12px; width:100%; min-width:0; }\n\n.power-logs th,.power-logs td { padding:6px 10px; text-align:left; border-bottom:1px solid var(--borderColor); max-width:400px; white-space:nowrap; vertical-align:top; }\n.power-logs .power-logs-cell { display:block; overflow:hidden; text-overflow:ellipsis; max-height:4.8em; }\n.power-logs .power-logs-json-cell { position:relative; display:flex; align-items:center; gap:4px; min-width:0; height:20px; max-height:20px; }\n.power-logs .power-logs-json-cell .power-log-json { flex:1; min-width:0; margin:0; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; line-height:20px; }\n.power-logs .power-logs-json-copy { display:inline-flex; align-items:center; justify-content:center; flex:0 0 20px; width:20px; height:20px; min-height:0; padding:0; border-color:transparent; background:transparent; opacity:.6; }\n.power-logs .power-logs-json-copy:hover, .power-logs .power-logs-json-copy:focus-visible { opacity:1; background:color-mix(in srgb,var(--primary) 10%,transparent); }\n.power-logs .power-logs-json-copy-feedback { position:absolute; left:0; top:0; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }\n\n.power-logs tbody tr { cursor:pointer; }\n.power-logs tbody tr:hover, .power-logs tbody tr:focus-visible { background:color-mix(in srgb,var(--primary) 10%,var(--contentColor)); outline:none; }\n.power-logs td[data-column=message] { font-family:var(--font-monospace,monospace); font-size:12px; white-space:pre-wrap; overflow-wrap:anywhere; }\n.power-logs td[data-level=error], .power-logs td[data-level=fatal] { color:var(--colorError,#d26860); }\n.power-logs td[data-level=warn] { color:var(--colorWarning,#d9a441); }\n.power-logs th { position:sticky; top:0; background:var(--contentColor); }\n.power-logs dialog { position:fixed; inset:0; margin:auto; background:var(--mainBackground); color:var(--textColorPrimary); border:1px solid var(--borderColor); border-radius:8px; padding:24px; width:min(640px,85vw); max-height:80vh; overflow:auto; }\n.power-logs dialog::backdrop { background:#0007; }\n.power-logs-empty { padding:32px; text-align:center; color:var(--textColorSecondary); }\n\n.power-logs > :not(.power-logs-workspace):not(.power-logs-results) { flex-shrink:0; }\n.power-logs-target, .power-logs-caption { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }\n.power-logs-select { display:inline-block; min-width:0; max-width:360px; flex:1; }\n.power-logs-source .power-logs-select { flex:1; max-width:none; }\n.power-logs-select > div { width:100%; min-width:0; }\n.power-logs-filters .power-logs-select { flex:0 1 180px; }\n.power-logs-filters .power-logs-select[data-source-select] { flex:1 1 260px; max-width:420px; }\n\n.power-logs-capture { display:flex; }\n.power-logs-capture > button { color:var(--primary); }\n.power-logs-options { position:relative; }\n.power-logs-options > summary { list-style:none; }\n.power-logs-options > summary::-webkit-details-marker { display:none; }\n.power-logs .power-logs-options[open] > summary { color:var(--primary); border-color:var(--primary); background:color-mix(in srgb,var(--primary) 12%,var(--contentColor)); }\n.power-logs-options > div { position:absolute; z-index:10; top:calc(100% + 6px); right:0; box-sizing:border-box; width:280px; max-width:calc(100vw - 32px); border-radius:6px; padding:12px; display:flex; flex-direction:column; gap:12px; background:var(--mainBackground); border:1px solid var(--borderColor); box-shadow:0 4px 18px #0005; }\n.power-logs-options label { white-space:nowrap; justify-content:space-between; gap:12px; }\n.power-logs-options .power-logs-select { min-width:130px; }\n.power-logs-select .Select__single-value { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }\n.power-logs-sql-tools button { min-height:24px; font-size:12px; }\n.power-logs-pagination { justify-content:flex-end; gap:8px; }\n.power-logs-pagination button { width:28px; padding:3px; }\n.power-logs-footer { display:flex; align-items:center; justify-content:space-between; gap:12px; min-width:0; }\n.power-logs-caption { flex:1; min-width:0; font-size:11px!important; }\n.power-logs .power-logs-collection-note { display:flex; align-items:center; gap:5px; min-width:0; max-width:55%; padding:1px 6px; font-size:11px; }\n.power-logs-collection-note > :first-child { color:var(--colorWarning,#d9a441); flex-shrink:0; }\n.power-logs-collection-note > :last-child { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }\n.power-logs-status { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }\n.power-logs .power-logs-error { white-space:normal; overflow:visible; overflow-wrap:anywhere; }\n.power-logs-snapshot-notes { max-height:100px; overflow:auto; }\n@container(max-width:760px) { .power-logs-detail { width:min(420px,86%); padding:12px; gap:10px; } .power-logs-filters .power-logs-select { flex:1 1 130px; } .power-logs-filters > input { flex-basis:100%; } .power-log-row { grid-template-columns:var(--log-time-width,calc(8ch + 4px)) var(--log-level-width,calc(var(--power-log-level-ch,7) * .833333ch + 4px)) minmax(0,1fr); } .power-log-row .power-log-origin { display:none; } .power-logs header .power-logs-actions { gap:4px; } }\n.Select__option--is-selected .power-logs-snapshot-option > button { color:#fff; background:#0002; border:1px solid #fff7; }\n.Select__option--is-selected .power-logs-snapshot-option > button[data-capture-delete]:not(:disabled):hover { color:#a61b1b; background:#fff; border-color:#fff; }\n.power-logs-field-filters { display:flex; align-items:center; flex-wrap:wrap; gap:4px; }\n.power-logs .power-logs-field-filters button { max-width:360px; min-height:24px; padding:2px 6px; font-size:11px; }\n.power-logs-field-filters button > span:first-child { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }\n.power-logs-field-filters button > :last-child { flex-shrink:0; }\n@keyframes power-log-json-actions-in { from { opacity:0; } to { opacity:1; } }\n.power-log-json-actions button { color:inherit; }\n.power-logs .power-log-json-actions button:hover, .power-logs .power-log-json-actions button:focus-visible { color:var(--primary); }\n.power-log-json-actions { animation:power-log-json-actions-in 120ms ease-out; }\n@media (prefers-reduced-motion:reduce) { .power-log-json-actions { animation:none; } }\n.power-logs .power-logs-json-cell .power-log-json-fields { flex:1; min-width:0; overflow:hidden; }\n.power-logs .power-logs-json-cell .power-log-json { white-space:pre; }\n.power-log-message [data-log-token=url], .power-log-message [data-log-token=trace-id], .power-log-message [data-log-token=address] { color:#9cdcfe; }\n.theme-light .power-log-message [data-log-token=url], .theme-light .power-log-message [data-log-token=trace-id], .theme-light .power-log-message [data-log-token=address] { color:#005a9e; }\n.power-log-message [data-log-token=duration], .power-log-message [data-status-class=\"2\"] { color:#b5cea8; }\n.theme-light .power-log-message [data-log-token=duration], .theme-light .power-log-message [data-status-class=\"2\"] { color:#17642d; }\n.power-log-message [data-status-class=\"1\"], .power-log-message [data-status-class=\"3\"] { color:#9cdcfe; }\n.theme-light .power-log-message [data-status-class=\"1\"], .theme-light .power-log-message [data-status-class=\"3\"] { color:#005a9e; }\n.power-log-message [data-status-class=\"4\"] { color:#e3b56b; }\n.theme-light .power-log-message [data-status-class=\"4\"] { color:#8a4b00; }\n.power-log-message [data-status-class=\"5\"] { color:#f19b8d; }\n.theme-light .power-log-message [data-status-class=\"5\"] { color:#9e2b1a; }\n.power-logs[data-hide-resource-name=true] .power-log-row { grid-template-columns:var(--log-time-width,calc(8ch + 4px)) var(--log-level-width,calc(var(--power-log-level-ch,7) * .833333ch + 4px)) minmax(0,1fr); }\n.power-logs[data-hide-resource-name=true] .power-log-origin { display:none; }\n.power-logs .power-logs-control-label { display:block; flex:0 0 76px; width:76px; margin:0; }\n.power-logs .power-logs-query-error { font-size:12px; color:var(--colorError); }\n`;\n"],"mappings":";AAAA,IAAa,kBAAkB"}
|
|
1
|
+
{"version":3,"file":"power-logs.css.js","names":[],"sources":["../../src/renderer/power-logs.css.ts"],"sourcesContent":["export const powerLogsStyles = `\n.ConfirmDialog:has(.power-logs-confirmation) > .box { background:var(--contentColor); color:var(--textColorPrimary); min-width:min(360px,calc(100vw - 32px)); max-width:min(640px,calc(100vw - 32px)); }\n.ConfirmDialog:has(.power-logs-confirmation) .confirm-content { gap:12px; }\n.ConfirmDialog:has(.power-logs-confirmation) .confirm-content > .Icon { flex-shrink:0; margin:0; }\n.ConfirmDialog .power-logs-confirmation { display:block; min-width:0; overflow-wrap:anywhere; }\n.ConfirmDialog:has(.power-logs-confirmation) .confirm-buttons { background:var(--mainBackground); color:var(--textColorPrimary); }\n.ConfirmDialog .power-logs-confirm-label { display:inline-flex; align-items:center; gap:6px; }\n.ConfirmDialog:has(.power-logs-confirmation) .Button.power-logs-confirm-delete { background:var(--colorError); color:#fff !important; }\nbody:has(.power-logs[data-testid=\"power-logs-page\"]) .power-ai-launcher { display:none; }\n.power-logs { display:flex; flex-direction:column; height:100%; min-height:0; min-width:0; box-sizing:border-box; overflow:hidden; padding:12px; gap:6px; color:var(--textColorPrimary); container-type:inline-size; }\n.power-logs header, .power-logs-toolbar, .power-logs-filters, .power-logs-source { display:flex; align-items:center; gap:6px; flex-wrap:wrap; }\n.power-logs header h1 { margin:0; font-size:16px; display:flex; align-items:center; gap:10px; }\n.power-logs header .power-logs-actions { margin-left:auto; display:flex; gap:8px; flex-wrap:wrap; }\n.power-logs :is(button,input,select,textarea), .power-logs .power-logs-options > summary { font:inherit; color:inherit; }\n.power-logs :is(.power-logs-filters > input,textarea) { background:var(--contentColor); border:1px solid var(--borderColor); border-radius:5px; padding:4px 8px; min-width:0; }\n.power-logs-filters > input { flex:1; min-width:180px; }\n.power-logs label { display:flex; align-items:center; gap:8px; }\n.power-logs button, .power-logs .power-logs-options > summary { display:inline-flex; align-items:center; justify-content:center; gap:6px; min-height:28px; padding:3px 8px; border:1px solid var(--borderColor); border-radius:5px; background:var(--contentColor); cursor:pointer; box-shadow:none; }\n.power-logs button::before { content:none; }\n.power-logs :is(button:not(:disabled),.power-logs-options > summary):hover { color:var(--primary); border-color:var(--primary); }\n.power-logs button[aria-pressed=true], .power-logs button[aria-selected=true] { color:var(--primary); background:color-mix(in srgb,var(--primary) 12%,var(--contentColor)); border-color:var(--primary); }\n.power-logs button:disabled { opacity:.45; cursor:default; }\n.power-logs :is(button,input,select,textarea):focus-visible, .power-logs .power-logs-options > summary:focus-visible { outline:2px solid var(--primary); outline-offset:2px; }\n.power-logs .power-logs-filters > input:focus-visible, .power-logs textarea:focus-visible { outline:none; border-color:var(--primary); box-shadow:inset 0 0 0 1px var(--primary); }\n.power-logs .power-logs-muted { color:var(--textColorSecondary); font-size:12px; line-height:1.5; }\n.power-logs .power-logs-notice { padding:3px 8px; border:1px solid var(--borderColor); border-radius:4px; line-height:1.5; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; flex-shrink:0; }\n.power-logs .power-logs-error { color:var(--colorError,#e68b80); }\n.power-logs-tabs { display:flex; gap:4px; flex-shrink:0; }\n.power-logs header .power-logs-page-title { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }\n.power-logs-snapshot-option { display:flex; align-items:center; justify-content:flex-start; gap:12px; min-width:0; }\n.power-logs-snapshot-option > .power-logs-option-text { flex:1; }\n.power-logs-option-text { display:flex; flex-direction:column; gap:3px; min-width:0; white-space:normal; overflow-wrap:anywhere; }\n.power-logs-option-text strong { font-weight:500; }\n.power-logs-option-text small { opacity:.85; font-size:11px; }\n.power-logs-source-option { display:flex; align-items:center; gap:10px; width:100%; min-width:0; white-space:normal; line-height:1.4; }\n.power-logs-source-option > :first-child { flex-shrink:0; opacity:.75; }\n.power-logs-source-option .power-logs-option-text { flex:1; }\n.power-logs-source-option strong, .power-logs-source-option small { white-space:normal; overflow:visible; overflow-wrap:anywhere; }\n.power-logs-source-check { display:inline-flex; width:16px; flex-shrink:0; }\n.power-logs-snapshot-option > button { display:inline-flex; align-items:center; justify-content:center; flex-shrink:0; min-width:28px; min-height:28px; padding:0; border:0; border-radius:4px; background:transparent; color:inherit; cursor:pointer; }\n.power-logs-snapshot-option > button[data-capture-delete]:not(:disabled):hover { color:var(--colorError); background:color-mix(in srgb,var(--colorError) 12%,transparent); }\n.power-logs-snapshot-option > button[data-capture-persistent]:not(:disabled):hover, .power-logs-snapshot-option > button[aria-pressed=true] { color:var(--primary); background:color-mix(in srgb,var(--primary) 12%,transparent); }\n.power-logs-snapshot-option > button:focus-visible { outline:2px solid var(--primary); outline-offset:-2px; }\n.power-logs-snapshot-option > button:disabled { opacity:.45; cursor:default; }\n.power-logs-level-label { color:var(--textColorSecondary); }\n.power-logs-level-label[data-level=debug] { color:var(--colorInfo); }\n.power-logs-level-label[data-level=info] { color:var(--primary); }\n.power-logs-level-label[data-level=warn] { color:var(--colorWarning); }\n.power-logs-level-label[data-level=error],.power-logs-level-label[data-level=fatal] { color:var(--colorError); }\n.Select__option--is-selected .power-logs-level-label { color:inherit; }\n.power-logs-workspace { position:relative; display:flex; flex:1; min-height:0; }\n.power-logs-viewer { display:flex; flex-direction:column; flex:1; min-width:0; min-height:0; gap:4px; }\n.power-logs-stream { position:relative; flex:1; min-height:0; min-width:0; overflow:auto; border:1px solid var(--borderColor); border-radius:6px; background:var(--contentColor); }\n.power-log-row { min-height:0!important; position:absolute; left:0; right:0; width:100%; display:grid!important; grid-template-columns:var(--log-time-width,calc(8ch + 4px)) var(--log-level-width,calc(var(--power-log-level-ch,7) * .833333ch + 4px)) minmax(100px,180px) minmax(0,1fr); align-items:center; gap:8px!important; padding:0 12px!important; border:0!important; border-left:3px solid var(--textColorSecondary)!important; border-bottom:1px solid var(--borderFaintColor)!important; border-radius:0!important; text-align:left; background:transparent!important; font-family:var(--font-monospace,monospace)!important; font-size:12px!important; }\n.power-logs[data-compact=true] .power-log-row { --log-time-width:calc(8ch + 1px); --log-level-width:calc(var(--power-log-level-ch,7) * .909091ch + 1px); padding-inline:6px!important; gap:4px!important; font-size:11px!important; line-height:16px; }\n.power-logs[data-compact=true] table :is(td,th) { padding:1px 6px; font-size:11px; line-height:16px; }\n.power-logs[data-compact=true] .power-logs-cell { white-space:nowrap; }\n.power-log-row > span { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }\n.power-log-row > span:last-child { white-space:pre; height:16px; line-height:16px; }\n.power-log-message { color:var(--textColorPrimary); }\n.power-log-message [data-log-token=http-method] { color:var(--primary); }\n.power-log-message [data-log-token=uuid] { color:#9cdcfe; }\n.theme-light .power-log-message [data-log-token=uuid] { color:#005a9e; }\n.power-log-row .power-log-level { font-size:10px; font-weight:600; text-transform:uppercase; }\n.power-log-row[data-level=warn] { border-left-color:var(--colorWarning,#d9a441)!important; }\n.power-log-row[data-level=error],.power-log-row[data-level=fatal] { border-left-color:var(--colorError,#d26860)!important; }\n.power-log-row[data-level=info] { border-left-color:var(--primary)!important; }\n.power-logs-detail { position:absolute; z-index:5; top:0; bottom:0; right:0; box-sizing:border-box; box-shadow:-4px 0 18px #0004; display:flex; flex-direction:column; align-items:stretch; gap:12px; width:460px; max-width:95%; padding:16px; background:var(--contentColor); border:1px solid var(--borderColor); border-radius:6px; overflow:auto; }\n.power-logs-detail header { justify-content:flex-end; }\n.power-logs-detail header > strong { margin-right:auto; }\n.power-logs-structured-heading { display:flex; align-items:center; gap:6px; }\n.power-logs .power-logs-detail-copy, .power-logs .power-logs-detail-close { flex-shrink:0; width:28px; padding:0; border-color:transparent; background:transparent; }\n.power-logs .power-logs-detail-copy:not(:disabled):hover, .power-logs .power-logs-detail-close:not(:disabled):hover { border-color:transparent; background:color-mix(in srgb,var(--primary) 10%,transparent); }\n.power-log-json { --json-key:#9cdcfe; --json-string:#ce9178; --json-number:#b5cea8; --json-literal:#c586c0; }\n.theme-light .power-log-json { --json-key:#005a9e; --json-string:#9e2b1a; --json-number:#17642d; --json-literal:#7a288c; }\n.power-log-json [data-token=key] { color:var(--json-key); }\n.power-log-json [data-token=string] { color:var(--json-string); }\n.power-log-json [data-token=number] { color:var(--json-number); }\n.power-log-json [data-token=literal] { color:var(--json-literal); }\n.power-logs pre { white-space:pre-wrap; overflow-wrap:anywhere; font-size:12px; line-height:1.6; }\n.power-logs textarea { user-select:text; box-sizing:border-box; width:100%; height:56px; min-height:48px; max-height:120px; flex-shrink:0; resize:vertical; font-family:var(--font-monospace,monospace); }\n.power-logs-results { flex:1; min-height:0; overflow:auto; border:1px solid var(--borderColor); border-radius:6px; }\n.power-logs table { border-collapse:collapse; table-layout:fixed; font-size:12px; width:100%; min-width:0; }\n\n.power-logs th,.power-logs td { padding:6px 10px; text-align:left; border-bottom:1px solid var(--borderColor); max-width:400px; white-space:nowrap; vertical-align:top; }\n.power-logs .power-logs-cell { display:block; overflow:hidden; text-overflow:ellipsis; max-height:4.8em; }\n.power-logs .power-logs-json-cell { position:relative; display:flex; align-items:center; gap:4px; min-width:0; height:20px; max-height:20px; }\n.power-logs .power-logs-json-cell .power-log-json { flex:1; min-width:0; margin:0; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; line-height:20px; }\n.power-logs .power-logs-json-copy { display:inline-flex; align-items:center; justify-content:center; flex:0 0 20px; width:20px; height:20px; min-height:0; padding:0; border-color:transparent; background:transparent; opacity:.6; }\n.power-logs .power-logs-json-copy:hover, .power-logs .power-logs-json-copy:focus-visible { opacity:1; background:color-mix(in srgb,var(--primary) 10%,transparent); }\n.power-logs .power-logs-json-copy-feedback { position:absolute; left:0; top:0; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }\n\n.power-logs tbody tr { cursor:pointer; }\n.power-logs tbody tr:hover, .power-logs tbody tr:focus-visible { background:color-mix(in srgb,var(--primary) 10%,var(--contentColor)); outline:none; }\n.power-logs td[data-column=message] { font-family:var(--font-monospace,monospace); font-size:12px; white-space:pre-wrap; overflow-wrap:anywhere; }\n.power-logs td[data-level=error], .power-logs td[data-level=fatal] { color:var(--colorError,#d26860); }\n.power-logs td[data-level=warn] { color:var(--colorWarning,#d9a441); }\n.power-logs th { position:sticky; top:0; background:var(--contentColor); }\n.power-logs dialog { position:fixed; inset:0; margin:auto; background:var(--mainBackground); color:var(--textColorPrimary); border:1px solid var(--borderColor); border-radius:8px; padding:24px; width:min(640px,85vw); max-height:80vh; overflow:auto; }\n.power-logs dialog::backdrop { background:#0007; }\n.power-logs-empty { padding:32px; text-align:center; color:var(--textColorSecondary); }\n\n.power-logs > :not(.power-logs-workspace):not(.power-logs-results) { flex-shrink:0; }\n.power-logs-target, .power-logs-caption { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }\n.power-logs-select { display:inline-block; min-width:0; max-width:360px; flex:1; }\n.power-logs-source .power-logs-select { flex:1; max-width:none; }\n.power-logs-select > div { width:100%; min-width:0; }\n.power-logs-filters .power-logs-select { flex:0 1 180px; }\n.power-logs-filters .power-logs-select[data-source-select] { flex:1 1 260px; max-width:420px; }\n\n.power-logs-capture { display:flex; }\n.power-logs-capture > button { color:var(--primary); }\n.power-logs-options { position:relative; }\n.power-logs-options > summary { list-style:none; }\n.power-logs-options > summary::-webkit-details-marker { display:none; }\n.power-logs .power-logs-options[open] > summary { color:var(--primary); border-color:var(--primary); background:color-mix(in srgb,var(--primary) 12%,var(--contentColor)); }\n.power-logs-options > div { position:absolute; z-index:10; top:calc(100% + 6px); right:0; box-sizing:border-box; width:280px; max-width:calc(100vw - 32px); border-radius:6px; padding:12px; display:flex; flex-direction:column; gap:12px; background:var(--mainBackground); border:1px solid var(--borderColor); box-shadow:0 4px 18px #0005; }\n.power-logs-options label { white-space:nowrap; justify-content:space-between; gap:12px; }\n.power-logs-options .power-logs-select { min-width:130px; }\n.power-logs-select .Select__single-value { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }\n.power-logs-sql-tools button { min-height:24px; font-size:12px; }\n.power-logs-pagination { justify-content:flex-end; gap:8px; }\n.power-logs-pagination button { width:28px; padding:3px; }\n.power-logs-footer { display:flex; align-items:center; justify-content:space-between; gap:12px; min-width:0; }\n.power-logs-caption { flex:1; min-width:0; font-size:11px!important; }\n.power-logs .power-logs-collection-note { display:flex; align-items:center; gap:5px; min-width:0; max-width:55%; padding:1px 6px; font-size:11px; }\n.power-logs-collection-note > :first-child { color:var(--colorWarning,#d9a441); flex-shrink:0; }\n.power-logs-collection-note > :last-child { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }\n.power-logs-status { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }\n.power-logs .power-logs-error { white-space:normal; overflow:visible; overflow-wrap:anywhere; }\n.power-logs-snapshot-notes { max-height:100px; overflow:auto; }\n@container(max-width:760px) { .power-logs-detail { width:min(420px,86%); padding:12px; gap:10px; } .power-logs-filters .power-logs-select { flex:1 1 130px; } .power-logs-filters > input { flex-basis:100%; } .power-log-row { grid-template-columns:var(--log-time-width,calc(8ch + 4px)) var(--log-level-width,calc(var(--power-log-level-ch,7) * .833333ch + 4px)) minmax(0,1fr); } .power-log-row .power-log-origin { display:none; } .power-logs header .power-logs-actions { gap:4px; } }\n.Select__option--is-selected .power-logs-snapshot-option > button { color:var(--freelens-power-accent-foreground,#fff); background:#0002; border:1px solid currentColor; }\n.Select__option--is-selected .power-logs-snapshot-option > button[data-capture-persistent]:not(:disabled):hover { color:var(--primary); background:var(--freelens-power-accent-foreground,#fff); border-color:var(--freelens-power-accent-foreground,#fff); }\n.Select__option--is-selected .power-logs-snapshot-option > button[data-capture-delete]:not(:disabled):hover { color:#a61b1b; background:#fff; border-color:#fff; }\n.power-logs-field-filters { display:flex; align-items:center; flex-wrap:wrap; gap:4px; }\n.power-logs .power-logs-field-filters button { max-width:360px; min-height:24px; padding:2px 6px; font-size:11px; }\n.power-logs-field-filters button > span:first-child { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }\n.power-logs-field-filters button > :last-child { flex-shrink:0; }\n@keyframes power-log-json-actions-in { from { opacity:0; } to { opacity:1; } }\n.power-log-json-actions button { color:inherit; }\n.power-logs .power-log-json-actions button:hover, .power-logs .power-log-json-actions button:focus-visible { color:var(--primary); }\n.power-log-json-actions { animation:power-log-json-actions-in 120ms ease-out; }\n@media (prefers-reduced-motion:reduce) { .power-log-json-actions { animation:none; } }\n.power-logs .power-logs-json-cell .power-log-json-fields { flex:1; min-width:0; overflow:hidden; }\n.power-logs .power-logs-json-cell .power-log-json { white-space:pre; }\n.power-log-message [data-log-token=url], .power-log-message [data-log-token=trace-id], .power-log-message [data-log-token=address] { color:#9cdcfe; }\n.theme-light .power-log-message [data-log-token=url], .theme-light .power-log-message [data-log-token=trace-id], .theme-light .power-log-message [data-log-token=address] { color:#005a9e; }\n.power-log-message [data-log-token=duration], .power-log-message [data-status-class=\"2\"] { color:#b5cea8; }\n.theme-light .power-log-message [data-log-token=duration], .theme-light .power-log-message [data-status-class=\"2\"] { color:#17642d; }\n.power-log-message [data-status-class=\"1\"], .power-log-message [data-status-class=\"3\"] { color:#9cdcfe; }\n.theme-light .power-log-message [data-status-class=\"1\"], .theme-light .power-log-message [data-status-class=\"3\"] { color:#005a9e; }\n.power-log-message [data-status-class=\"4\"] { color:#e3b56b; }\n.theme-light .power-log-message [data-status-class=\"4\"] { color:#8a4b00; }\n.power-log-message [data-status-class=\"5\"] { color:#f19b8d; }\n.theme-light .power-log-message [data-status-class=\"5\"] { color:#9e2b1a; }\n.power-logs[data-hide-resource-name=true] .power-log-row { grid-template-columns:var(--log-time-width,calc(8ch + 4px)) var(--log-level-width,calc(var(--power-log-level-ch,7) * .833333ch + 4px)) minmax(0,1fr); }\n.power-logs[data-hide-resource-name=true] .power-log-origin { display:none; }\n.power-logs .power-logs-control-label { display:block; flex:0 0 76px; width:76px; margin:0; }\n.power-logs .power-logs-query-error { font-size:12px; color:var(--colorError); }\n`;\n"],"mappings":";AAAA,IAAa,kBAAkB"}
|
|
@@ -7,18 +7,18 @@ const require__global_external_react = require("./_virtual/_global-external_reac
|
|
|
7
7
|
const require_jsx_runtime = require("./_virtual/_global-external_react/jsx-runtime.js");
|
|
8
8
|
const require_native_tooltip = require("./native-tooltip.js");
|
|
9
9
|
const require_ai_diagnostic_handoff = require("./ai-diagnostic-handoff.js");
|
|
10
|
+
const require_power_log_field_filters = require("./src/common/power-log-field-filters.js");
|
|
11
|
+
const require_power_log_json_fields = require("./power-log-json-fields.js");
|
|
12
|
+
const require_power_log_json = require("./power-log-json.js");
|
|
13
|
+
const require_power_log_sql_editor = require("./power-log-sql-editor.js");
|
|
10
14
|
const require_date_time = require("./src/common/date-time.js");
|
|
11
15
|
const require_diagnostic_explain_button = require("./diagnostic-explain-button.js");
|
|
12
|
-
const require_power_log_field_filters = require("./src/common/power-log-field-filters.js");
|
|
13
16
|
const require_power_log_json_filter_sql = require("./src/common/power-log-json-filter-sql.js");
|
|
14
17
|
const require_power_log_json_preset = require("./src/common/power-log-json-preset.js");
|
|
15
18
|
const require_power_log_sql_level = require("./src/common/power-log-sql-level.js");
|
|
16
19
|
const require_power_logs_ai = require("./src/common/power-logs-ai.js");
|
|
17
|
-
const require_power_log_json_fields = require("./power-log-json-fields.js");
|
|
18
|
-
const require_power_log_json = require("./power-log-json.js");
|
|
19
20
|
const require_power_log_message = require("./power-log-message.js");
|
|
20
21
|
const require_power_log_json_cell = require("./power-log-json-cell.js");
|
|
21
|
-
const require_power_log_sql_editor = require("./power-log-sql-editor.js");
|
|
22
22
|
const require_power_logs_css = require("./power-logs.css.js");
|
|
23
23
|
const require_power_logs_client = require("./power-logs-client.js");
|
|
24
24
|
const require_power_logs_collector = require("./power-logs-collector.js");
|
|
@@ -978,28 +978,56 @@ function Workspace({ clusterId, contextId }) {
|
|
|
978
978
|
const capture = captures.find((capture) => capture.id === id);
|
|
979
979
|
if (!capture) return;
|
|
980
980
|
require_extensions.Renderer.Component.ConfirmDialog.open({
|
|
981
|
-
message: /* @__PURE__ */ require_jsx_runtime.jsxs(
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
981
|
+
message: /* @__PURE__ */ require_jsx_runtime.jsxs("div", {
|
|
982
|
+
className: "power-logs-confirmation",
|
|
983
|
+
children: [
|
|
984
|
+
"Delete snapshot ",
|
|
985
|
+
/* @__PURE__ */ require_jsx_runtime.jsx("strong", { children: capture.target.name }),
|
|
986
|
+
"? This cannot be undone."
|
|
987
|
+
]
|
|
988
|
+
}),
|
|
989
|
+
labelOk: /* @__PURE__ */ require_jsx_runtime.jsxs("span", {
|
|
990
|
+
className: "power-logs-confirm-label",
|
|
991
|
+
children: [/* @__PURE__ */ require_jsx_runtime.jsx("span", {
|
|
992
|
+
"aria-hidden": "true",
|
|
993
|
+
children: /* @__PURE__ */ require_jsx_runtime.jsx(require_extensions.Renderer.Component.Icon, {
|
|
994
|
+
material: "delete_outline",
|
|
995
|
+
size: 16
|
|
996
|
+
})
|
|
997
|
+
}), "Delete snapshot"]
|
|
998
|
+
}),
|
|
999
|
+
okButtonProps: { className: "ok power-logs-confirm-delete" },
|
|
987
1000
|
ok: () => deleteCapture(id)
|
|
988
1001
|
});
|
|
989
1002
|
};
|
|
990
1003
|
const confirmPersistentCapture = (capture) => {
|
|
991
1004
|
const persistent = !capture.persistent;
|
|
992
1005
|
require_extensions.Renderer.Component.ConfirmDialog.open({
|
|
993
|
-
message: persistent ? /* @__PURE__ */ require_jsx_runtime.jsxs(
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1006
|
+
message: persistent ? /* @__PURE__ */ require_jsx_runtime.jsxs("div", {
|
|
1007
|
+
className: "power-logs-confirmation",
|
|
1008
|
+
children: [
|
|
1009
|
+
"Keep snapshot ",
|
|
1010
|
+
/* @__PURE__ */ require_jsx_runtime.jsx("strong", { children: capture.target.name }),
|
|
1011
|
+
" until you delete it? It will survive restarts and will not expire automatically."
|
|
1012
|
+
]
|
|
1013
|
+
}) : /* @__PURE__ */ require_jsx_runtime.jsxs("div", {
|
|
1014
|
+
className: "power-logs-confirmation",
|
|
1015
|
+
children: [
|
|
1016
|
+
"Allow snapshot ",
|
|
1017
|
+
/* @__PURE__ */ require_jsx_runtime.jsx("strong", { children: capture.target.name }),
|
|
1018
|
+
" to expire? Its retention period will start again now."
|
|
1019
|
+
]
|
|
1020
|
+
}),
|
|
1021
|
+
labelOk: /* @__PURE__ */ require_jsx_runtime.jsxs("span", {
|
|
1022
|
+
className: "power-logs-confirm-label",
|
|
1023
|
+
children: [/* @__PURE__ */ require_jsx_runtime.jsx("span", {
|
|
1024
|
+
"aria-hidden": "true",
|
|
1025
|
+
children: /* @__PURE__ */ require_jsx_runtime.jsx(require_extensions.Renderer.Component.Icon, {
|
|
1026
|
+
svg: persistent ? "push_pin" : "push_off",
|
|
1027
|
+
size: 16
|
|
1028
|
+
})
|
|
1029
|
+
}), persistent ? "Keep snapshot" : "Allow expiration"]
|
|
1030
|
+
}),
|
|
1003
1031
|
ok: async () => {
|
|
1004
1032
|
if (!alive.current || deleting.current.has(capture.id) || queryRef.current || captureController.current) return;
|
|
1005
1033
|
deleting.current.add(capture.id);
|
|
@@ -1022,8 +1050,21 @@ function Workspace({ clusterId, contextId }) {
|
|
|
1022
1050
|
});
|
|
1023
1051
|
};
|
|
1024
1052
|
const clearSavedSnapshots = () => require_extensions.Renderer.Component.ConfirmDialog.open({
|
|
1025
|
-
message:
|
|
1026
|
-
|
|
1053
|
+
message: /* @__PURE__ */ require_jsx_runtime.jsx("div", {
|
|
1054
|
+
className: "power-logs-confirmation",
|
|
1055
|
+
children: "Delete all saved snapshots from all clusters? Temporary snapshots will be kept. This cannot be undone."
|
|
1056
|
+
}),
|
|
1057
|
+
labelOk: /* @__PURE__ */ require_jsx_runtime.jsxs("span", {
|
|
1058
|
+
className: "power-logs-confirm-label",
|
|
1059
|
+
children: [/* @__PURE__ */ require_jsx_runtime.jsx("span", {
|
|
1060
|
+
"aria-hidden": "true",
|
|
1061
|
+
children: /* @__PURE__ */ require_jsx_runtime.jsx(require_extensions.Renderer.Component.Icon, {
|
|
1062
|
+
material: "delete_outline",
|
|
1063
|
+
size: 16
|
|
1064
|
+
})
|
|
1065
|
+
}), "Clear saved snapshots"]
|
|
1066
|
+
}),
|
|
1067
|
+
okButtonProps: { className: "ok power-logs-confirm-delete" },
|
|
1027
1068
|
ok: async () => {
|
|
1028
1069
|
if (queryRef.current || captureController.current || deleting.current.size) return;
|
|
1029
1070
|
deleting.current.add("clear-saved");
|
|
@@ -1062,6 +1103,16 @@ function Workspace({ clusterId, contextId }) {
|
|
|
1062
1103
|
});
|
|
1063
1104
|
else setError("Open the Pod in the native resource view to use its Logs action");
|
|
1064
1105
|
};
|
|
1106
|
+
const errorNotice = error && /* @__PURE__ */ require_jsx_runtime.jsxs("div", {
|
|
1107
|
+
role: "alert",
|
|
1108
|
+
className: "power-logs-notice power-logs-error",
|
|
1109
|
+
children: [error, savedPoolFull && /* @__PURE__ */ require_jsx_runtime.jsx("button", {
|
|
1110
|
+
type: "button",
|
|
1111
|
+
disabled: deletingCount > 0 || !!queryId || capturePending,
|
|
1112
|
+
onClick: clearSavedSnapshots,
|
|
1113
|
+
children: "Clear saved snapshots"
|
|
1114
|
+
})]
|
|
1115
|
+
});
|
|
1065
1116
|
return /* @__PURE__ */ require_jsx_runtime.jsxs("div", {
|
|
1066
1117
|
className: "power-logs",
|
|
1067
1118
|
"data-testid": "power-logs-page",
|
|
@@ -1247,16 +1298,6 @@ function Workspace({ clusterId, contextId }) {
|
|
|
1247
1298
|
]
|
|
1248
1299
|
})
|
|
1249
1300
|
}) : /* @__PURE__ */ require_jsx_runtime.jsx(SourcePicker, {}),
|
|
1250
|
-
error && /* @__PURE__ */ require_jsx_runtime.jsxs("div", {
|
|
1251
|
-
role: "alert",
|
|
1252
|
-
className: "power-logs-notice power-logs-error",
|
|
1253
|
-
children: [error, savedPoolFull && /* @__PURE__ */ require_jsx_runtime.jsx("button", {
|
|
1254
|
-
type: "button",
|
|
1255
|
-
disabled: deletingCount > 0 || !!queryId || capturePending,
|
|
1256
|
-
onClick: clearSavedSnapshots,
|
|
1257
|
-
children: "Clear saved snapshots"
|
|
1258
|
-
})]
|
|
1259
|
-
}),
|
|
1260
1301
|
tab === "live" ? /* @__PURE__ */ require_jsx_runtime.jsxs(require_jsx_runtime.Fragment, { children: [
|
|
1261
1302
|
/* @__PURE__ */ require_jsx_runtime.jsxs("div", {
|
|
1262
1303
|
className: "power-logs-filters",
|
|
@@ -1363,6 +1404,7 @@ function Workspace({ clusterId, contextId }) {
|
|
|
1363
1404
|
})
|
|
1364
1405
|
]
|
|
1365
1406
|
}),
|
|
1407
|
+
errorNotice,
|
|
1366
1408
|
/* @__PURE__ */ require_jsx_runtime.jsx(FieldFilters, {
|
|
1367
1409
|
filters: fieldFilters,
|
|
1368
1410
|
onRemove: (index) => setFieldFilters(fieldFilters.filter((_, item) => item !== index))
|
|
@@ -1461,7 +1503,7 @@ function Workspace({ clusterId, contextId }) {
|
|
|
1461
1503
|
confirmPersistentCapture(item);
|
|
1462
1504
|
},
|
|
1463
1505
|
children: /* @__PURE__ */ require_jsx_runtime.jsx(require_extensions.Renderer.Component.Icon, {
|
|
1464
|
-
|
|
1506
|
+
svg: item.persistent ? "push_off" : "push_pin",
|
|
1465
1507
|
size: 16
|
|
1466
1508
|
})
|
|
1467
1509
|
})
|
|
@@ -1589,6 +1631,7 @@ function Workspace({ clusterId, contextId }) {
|
|
|
1589
1631
|
onChange: setSql,
|
|
1590
1632
|
fitVersion: sqlFitVersion
|
|
1591
1633
|
}),
|
|
1634
|
+
errorNotice,
|
|
1592
1635
|
sqlError && /* @__PURE__ */ require_jsx_runtime.jsx("div", {
|
|
1593
1636
|
role: "alert",
|
|
1594
1637
|
className: "power-logs-notice power-logs-error power-logs-query-error",
|