FN-5926: break bundled plugin dashboard dependency cycle
Remove direct dashboard package dependencies from bundled plugins while preserving typed dashboard interop. - add a workspace acyclic dependency regression test for all packages and dashboard-bundled plugins - expose dashboard app aliases in dashboard TS/Vite/Vitest configs for plugin interop imports - replace bundled plugin @fusion/dashboard dependencies with local dashboard interop declarations and updated tsconfig path mappings Files changed: .../workspace-dependency-acyclicity.test.ts | 174 +++++++++++++++++++++ packages/dashboard/tsconfig.app.json | 6 +- packages/dashboard/tsconfig.test-check.json | 6 +- packages/dashboard/vite.config.ts | 4 + packages/dashboard/vitest.config.ts | 4 + .../fusion-plugin-cli-printing-press/package.json | 1 - .../src/dashboard-interop.d.ts | 19 +++ .../fusion-plugin-cli-printing-press/tsconfig.json | 7 +- .../fusion-plugin-dependency-graph/package.json | 1 - .../src/dashboard-interop.d.ts | 6 + .../fusion-plugin-dependency-graph/tsconfig.json | 3 +- plugins/fusion-plugin-roadmap/package.json | 1 - .../src/dashboard-interop.d.ts | 19 +++ plugins/fusion-plugin-roadmap/tsconfig.json | 7 +- pnpm-lock.yaml | 9 -- 15 files changed, 248 insertions(+), 19 deletions(-) Fusion-Task-Id: FN-5926 Fusion-Task-Lineage: 1b39c08a-1415-407d-90cc-b3de89af0316
This commit is contained in:
@@ -24,7 +24,6 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@fusion/core": "workspace:*",
|
||||
"@fusion/dashboard": "workspace:*",
|
||||
"@fusion/plugin-sdk": "workspace:*",
|
||||
"express": "^5.1.0",
|
||||
"lucide-react": "^0.542.0",
|
||||
|
||||
19
plugins/fusion-plugin-cli-printing-press/src/dashboard-interop.d.ts
vendored
Normal file
19
plugins/fusion-plugin-cli-printing-press/src/dashboard-interop.d.ts
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
declare module "@fusion/dashboard/app/plugins/types" {
|
||||
import type { ReactNode } from "react";
|
||||
import type { Task, TaskDetail, WorkflowStep } from "@fusion/core";
|
||||
|
||||
export type DetailTaskTab = "definition" | "logs" | "changes" | "comments" | "model" | "workflow" | "pr" | "retries";
|
||||
|
||||
export type PluginToastType = "success" | "error" | "warning" | "info";
|
||||
|
||||
export interface PluginDashboardViewContext {
|
||||
projectId?: string;
|
||||
tasks: Task[];
|
||||
workflowSteps: WorkflowStep[];
|
||||
openTaskDetail: (task: Task | TaskDetail, initialTab?: DetailTaskTab) => void;
|
||||
renderTaskCard?: (task: Task | TaskDetail) => ReactNode;
|
||||
addToast?: (message: string, type?: PluginToastType) => void;
|
||||
}
|
||||
|
||||
export type PluginTaskView = `plugin:${string}:${string}`;
|
||||
}
|
||||
@@ -3,8 +3,11 @@
|
||||
"compilerOptions": {
|
||||
"outDir": "dist",
|
||||
"rootDir": "src",
|
||||
"jsx": "react-jsx"
|
||||
"jsx": "react-jsx",
|
||||
"paths": {
|
||||
"@fusion/dashboard/app/plugins/types": ["./src/dashboard-interop.d.ts"]
|
||||
}
|
||||
},
|
||||
"include": ["src/**/*.ts", "src/**/*.tsx"],
|
||||
"include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.d.ts"],
|
||||
"exclude": ["src/**/*.test.ts", "src/**/__tests__/**"]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user