@factorim/monotui 0.1.0 → 0.3.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/.changeset/README.md +8 -0
- package/.changeset/config.json +14 -0
- package/.github/workflows/ci.yml +5 -2
- package/.github/workflows/release.yml +77 -0
- package/.vscode/settings.json +1 -0
- package/CHANGELOG.md +9 -0
- package/README.md +2 -0
- package/dist/app/pages/WorkspacePage.d.ts.map +1 -1
- package/dist/app/pages/WorkspacePage.js +3 -3
- package/dist/app/pages/WorkspacePage.js.map +1 -1
- package/dist/commands/init.d.ts +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +33 -4
- package/dist/commands/init.js.map +1 -1
- package/dist/components/features/ProjectGrid/ColPackageJson.d.ts +2 -2
- package/dist/components/features/ProjectGrid/ColPackageJson.d.ts.map +1 -1
- package/dist/components/features/ProjectGrid/ColPackageJson.js.map +1 -1
- package/dist/components/features/WorkspaceGrid/WorkspaceGrid.js +1 -1
- package/dist/components/features/WorkspaceGrid/WorkspaceInfo.d.ts.map +1 -1
- package/dist/components/features/WorkspaceGrid/WorkspaceInfo.js +1 -1
- package/dist/components/features/WorkspaceGrid/WorkspaceInfo.js.map +1 -1
- package/dist/components/features/WorkspaceGrid/WorkspaceRow.js +2 -2
- package/dist/components/features/WorkspaceGrid/WorkspaceRow.js.map +1 -1
- package/dist/components/layouts/Header/Header.d.ts.map +1 -1
- package/dist/components/layouts/Header/Header.js +3 -7
- package/dist/components/layouts/Header/Header.js.map +1 -1
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +21 -21
- package/dist/config/config.js.map +1 -1
- package/dist/config/defaults.d.ts +2 -2
- package/dist/config/defaults.js +2 -2
- package/dist/config/validation.d.ts +54 -0
- package/dist/config/validation.d.ts.map +1 -0
- package/dist/config/validation.js +79 -0
- package/dist/config/validation.js.map +1 -0
- package/dist/contexts/ProjectGridContext.d.ts +1 -1
- package/dist/contexts/ProjectGridContext.d.ts.map +1 -1
- package/dist/contexts/WorkspaceDiscoveryContext.d.ts +2 -2
- package/dist/contexts/WorkspaceDiscoveryContext.d.ts.map +1 -1
- package/dist/contexts/WorkspaceDiscoveryContext.js +3 -3
- package/dist/contexts/WorkspaceDiscoveryContext.js.map +1 -1
- package/dist/contexts/WorkspaceGridContext.d.ts +1 -1
- package/dist/contexts/WorkspaceGridContext.d.ts.map +1 -1
- package/dist/contexts/WorkspaceGridContext.js +1 -1
- package/dist/contexts/WorkspaceGridContext.js.map +1 -1
- package/dist/hooks/useInterval.d.ts +5 -0
- package/dist/hooks/useInterval.d.ts.map +1 -0
- package/dist/hooks/useInterval.js +19 -0
- package/dist/hooks/useInterval.js.map +1 -0
- package/dist/hooks/useWorkspaceDiscovery.d.ts +3 -3
- package/dist/hooks/useWorkspaceDiscovery.d.ts.map +1 -1
- package/dist/hooks/useWorkspaceDiscovery.js +8 -13
- package/dist/hooks/useWorkspaceDiscovery.js.map +1 -1
- package/dist/hooks/useWorkspaceQuickActions.d.ts +1 -1
- package/dist/hooks/useWorkspaceQuickActions.d.ts.map +1 -1
- package/dist/hooks/useWorkspaceRuntime.d.ts +1 -1
- package/dist/hooks/useWorkspaceRuntime.d.ts.map +1 -1
- package/dist/hooks/useWorkspaceRuntime.js +30 -8
- package/dist/hooks/useWorkspaceRuntime.js.map +1 -1
- package/dist/services/discovery/facets/compose-parser.d.ts +1 -1
- package/dist/services/discovery/facets/compose-parser.d.ts.map +1 -1
- package/dist/services/discovery/facets/makefile-parser.d.ts +1 -1
- package/dist/services/discovery/facets/makefile-parser.d.ts.map +1 -1
- package/dist/services/discovery/facets/package-json-parser.d.ts +1 -1
- package/dist/services/discovery/facets/package-json-parser.d.ts.map +1 -1
- package/dist/services/discovery/workspace-discovery.d.ts +3 -3
- package/dist/services/discovery/workspace-discovery.d.ts.map +1 -1
- package/dist/services/discovery/workspace-discovery.js +17 -7
- package/dist/services/discovery/workspace-discovery.js.map +1 -1
- package/dist/services/runtime/docker-runtime.d.ts +1 -1
- package/dist/services/runtime/docker-runtime.d.ts.map +1 -1
- package/dist/services/runtime/node-runtime.d.ts +2 -2
- package/dist/services/runtime/node-runtime.d.ts.map +1 -1
- package/dist/theme/theme.js +1 -1
- package/dist/theme/theme.js.map +1 -1
- package/dist/types/project-grid.d.ts +1 -1
- package/dist/types/project-grid.d.ts.map +1 -1
- package/dist/types/workspace-grid.d.ts +2 -2
- package/dist/types/workspace-grid.d.ts.map +1 -1
- package/dist/types/workspace.d.ts +9 -2
- package/dist/types/workspace.d.ts.map +1 -1
- package/dist/utils/logging/logger.js +2 -2
- package/dist/utils/logging/logger.js.map +1 -1
- package/dist/utils/project/project-grid.d.ts +1 -1
- package/dist/utils/project/project-grid.d.ts.map +1 -1
- package/dist/utils/project/project-grid.js.map +1 -1
- package/dist/utils/workspace/workspace-grid.d.ts +1 -1
- package/dist/utils/workspace/workspace-grid.d.ts.map +1 -1
- package/dist/utils/workspace/workspace-grid.js +5 -18
- package/dist/utils/workspace/workspace-grid.js.map +1 -1
- package/dist/utils/workspace/workspace-helper.d.ts +1 -1
- package/dist/utils/workspace/workspace-helper.d.ts.map +1 -1
- package/docs/images/monotui-screenshot-v0.2.0.png +0 -0
- package/package.json +11 -4
- package/src/app/pages/WorkspacePage.tsx +5 -3
- package/src/commands/init.ts +34 -4
- package/src/components/features/ProjectGrid/ColPackageJson.tsx +3 -2
- package/src/components/features/WorkspaceGrid/WorkspaceGrid.tsx +2 -2
- package/src/components/features/WorkspaceGrid/WorkspaceInfo.tsx +7 -9
- package/src/components/features/WorkspaceGrid/WorkspaceRow.tsx +6 -6
- package/src/components/layouts/Header/Header.tsx +2 -9
- package/src/config/config.ts +24 -21
- package/src/config/defaults.ts +2 -2
- package/src/config/validation.ts +90 -0
- package/src/contexts/ProjectGridContext.tsx +1 -1
- package/src/contexts/WorkspaceDiscoveryContext.tsx +5 -5
- package/src/contexts/WorkspaceGridContext.tsx +2 -2
- package/src/hooks/useWorkspaceDiscovery.ts +16 -17
- package/src/hooks/useWorkspaceQuickActions.ts +1 -1
- package/src/hooks/useWorkspaceRuntime.ts +52 -12
- package/src/services/discovery/facets/compose-parser.ts +1 -1
- package/src/services/discovery/facets/makefile-parser.ts +2 -2
- package/src/services/discovery/facets/package-json-parser.ts +1 -1
- package/src/services/discovery/workspace-discovery.ts +21 -11
- package/src/services/runtime/docker-runtime.ts +1 -1
- package/src/services/runtime/node-runtime.ts +2 -2
- package/src/theme/theme.ts +1 -1
- package/src/types/project-grid.ts +1 -1
- package/src/types/workspace-grid.ts +2 -2
- package/src/types/{project.ts → workspace.ts} +9 -2
- package/src/utils/logging/logger.ts +2 -2
- package/src/utils/project/project-grid.test.ts +175 -0
- package/src/utils/project/project-grid.ts +1 -2
- package/src/utils/workspace/workspace-grid.ts +6 -20
- package/src/utils/workspace/workspace-helper.ts +1 -1
- package/.github/workflows/publish-to-npm.yml +0 -36
- package/dist/app/pages/About.d.ts +0 -2
- package/dist/app/pages/About.d.ts.map +0 -1
- package/dist/app/pages/About.js +0 -6
- package/dist/app/pages/About.js.map +0 -1
- package/dist/app/pages/AboutPage.d.ts +0 -2
- package/dist/app/pages/AboutPage.d.ts.map +0 -1
- package/dist/app/pages/AboutPage.js +0 -6
- package/dist/app/pages/AboutPage.js.map +0 -1
- package/dist/app/pages/Workspace.d.ts +0 -2
- package/dist/app/pages/Workspace.d.ts.map +0 -1
- package/dist/app/pages/Workspace.js +0 -14
- package/dist/app/pages/Workspace.js.map +0 -1
- package/dist/app/pages/Workspaces.d.ts +0 -2
- package/dist/app/pages/Workspaces.d.ts.map +0 -1
- package/dist/app/pages/Workspaces.js +0 -16
- package/dist/app/pages/Workspaces.js.map +0 -1
- package/dist/app/pages/WorkspacesPage.d.ts +0 -2
- package/dist/app/pages/WorkspacesPage.d.ts.map +0 -1
- package/dist/app/pages/WorkspacesPage.js +0 -15
- package/dist/app/pages/WorkspacesPage.js.map +0 -1
- package/dist/components/features/ProjectGrid/ProjectCommands.d.ts +0 -2
- package/dist/components/features/ProjectGrid/ProjectCommands.d.ts.map +0 -1
- package/dist/components/features/ProjectGrid/ProjectCommands.js +0 -6
- package/dist/components/features/ProjectGrid/ProjectCommands.js.map +0 -1
- package/dist/components/features/ProjectGrid/WorkspaceCommands.d.ts +0 -2
- package/dist/components/features/ProjectGrid/WorkspaceCommands.d.ts.map +0 -1
- package/dist/components/features/ProjectGrid/WorkspaceCommands.js +0 -6
- package/dist/components/features/ProjectGrid/WorkspaceCommands.js.map +0 -1
- package/dist/components/features/ProjectGrid/WorkspaceDetail.d.ts +0 -2
- package/dist/components/features/ProjectGrid/WorkspaceDetail.d.ts.map +0 -1
- package/dist/components/features/ProjectGrid/WorkspaceDetail.js +0 -16
- package/dist/components/features/ProjectGrid/WorkspaceDetail.js.map +0 -1
- package/dist/components/features/ProjectGrid/WorkspaceInfo.d.ts +0 -2
- package/dist/components/features/ProjectGrid/WorkspaceInfo.d.ts.map +0 -1
- package/dist/components/features/ProjectGrid/WorkspaceInfo.js +0 -11
- package/dist/components/features/ProjectGrid/WorkspaceInfo.js.map +0 -1
- package/dist/components/features/WorkspaceDetail/ColCompose.d.ts +0 -10
- package/dist/components/features/WorkspaceDetail/ColCompose.d.ts.map +0 -1
- package/dist/components/features/WorkspaceDetail/ColCompose.js +0 -6
- package/dist/components/features/WorkspaceDetail/ColCompose.js.map +0 -1
- package/dist/components/features/WorkspaceDetail/ColMakefile.d.ts +0 -9
- package/dist/components/features/WorkspaceDetail/ColMakefile.d.ts.map +0 -1
- package/dist/components/features/WorkspaceDetail/ColMakefile.js +0 -6
- package/dist/components/features/WorkspaceDetail/ColMakefile.js.map +0 -1
- package/dist/components/features/WorkspaceDetail/ColPackageJson.d.ts +0 -11
- package/dist/components/features/WorkspaceDetail/ColPackageJson.d.ts.map +0 -1
- package/dist/components/features/WorkspaceDetail/ColPackageJson.js +0 -6
- package/dist/components/features/WorkspaceDetail/ColPackageJson.js.map +0 -1
- package/dist/components/features/WorkspaceDetail/ComposeCol copy 2.d.ts +0 -1
- package/dist/components/features/WorkspaceDetail/ComposeCol copy 2.d.ts.map +0 -1
- package/dist/components/features/WorkspaceDetail/ComposeCol copy 2.js +0 -2
- package/dist/components/features/WorkspaceDetail/ComposeCol copy 2.js.map +0 -1
- package/dist/components/features/WorkspaceDetail/ComposeCol copy.d.ts +0 -1
- package/dist/components/features/WorkspaceDetail/ComposeCol copy.d.ts.map +0 -1
- package/dist/components/features/WorkspaceDetail/ComposeCol copy.js +0 -2
- package/dist/components/features/WorkspaceDetail/ComposeCol copy.js.map +0 -1
- package/dist/components/features/WorkspaceDetail/ComposeCol.d.ts +0 -1
- package/dist/components/features/WorkspaceDetail/ComposeCol.d.ts.map +0 -1
- package/dist/components/features/WorkspaceDetail/ComposeCol.js +0 -2
- package/dist/components/features/WorkspaceDetail/ComposeCol.js.map +0 -1
- package/dist/components/features/WorkspaceDetail/EmptyCol.d.ts +0 -2
- package/dist/components/features/WorkspaceDetail/EmptyCol.d.ts.map +0 -1
- package/dist/components/features/WorkspaceDetail/EmptyCol.js +0 -6
- package/dist/components/features/WorkspaceDetail/EmptyCol.js.map +0 -1
- package/dist/components/features/WorkspaceDetail/EmptyRow.d.ts +0 -2
- package/dist/components/features/WorkspaceDetail/EmptyRow.d.ts.map +0 -1
- package/dist/components/features/WorkspaceDetail/EmptyRow.js +0 -6
- package/dist/components/features/WorkspaceDetail/EmptyRow.js.map +0 -1
- package/dist/components/features/WorkspaceDetail/PackageJsonCol.d.ts +0 -1
- package/dist/components/features/WorkspaceDetail/PackageJsonCol.d.ts.map +0 -1
- package/dist/components/features/WorkspaceDetail/PackageJsonCol.js +0 -2
- package/dist/components/features/WorkspaceDetail/PackageJsonCol.js.map +0 -1
- package/dist/components/features/WorkspaceDetail/WorkspaceDetail copy.d.ts +0 -2
- package/dist/components/features/WorkspaceDetail/WorkspaceDetail copy.d.ts.map +0 -1
- package/dist/components/features/WorkspaceDetail/WorkspaceDetail copy.js +0 -12
- package/dist/components/features/WorkspaceDetail/WorkspaceDetail copy.js.map +0 -1
- package/dist/components/features/WorkspaceDetail/WorkspaceDetail.d.ts +0 -2
- package/dist/components/features/WorkspaceDetail/WorkspaceDetail.d.ts.map +0 -1
- package/dist/components/features/WorkspaceDetail/WorkspaceDetail.js +0 -16
- package/dist/components/features/WorkspaceDetail/WorkspaceDetail.js.map +0 -1
- package/dist/components/features/WorkspaceDetail/WorkspaceInfo.d.ts +0 -2
- package/dist/components/features/WorkspaceDetail/WorkspaceInfo.d.ts.map +0 -1
- package/dist/components/features/WorkspaceDetail/WorkspaceInfo.js +0 -11
- package/dist/components/features/WorkspaceDetail/WorkspaceInfo.js.map +0 -1
- package/dist/components/features/WorkspaceGrid/WorkspaceCommands.d.ts +0 -2
- package/dist/components/features/WorkspaceGrid/WorkspaceCommands.d.ts.map +0 -1
- package/dist/components/features/WorkspaceGrid/WorkspaceCommands.js +0 -6
- package/dist/components/features/WorkspaceGrid/WorkspaceCommands.js.map +0 -1
- package/dist/components/features/WorkspaceGrid/WorkspaceInfo copy.d.ts +0 -2
- package/dist/components/features/WorkspaceGrid/WorkspaceInfo copy.d.ts.map +0 -1
- package/dist/components/features/WorkspaceGrid/WorkspaceInfo copy.js +0 -11
- package/dist/components/features/WorkspaceGrid/WorkspaceInfo copy.js.map +0 -1
- package/dist/components/features/WorkspaceGrid/WorkspacesGrid.d.ts +0 -2
- package/dist/components/features/WorkspaceGrid/WorkspacesGrid.d.ts.map +0 -1
- package/dist/components/features/WorkspaceGrid/WorkspacesGrid.js +0 -10
- package/dist/components/features/WorkspaceGrid/WorkspacesGrid.js.map +0 -1
- package/dist/components/features/WorkspaceGrid/WorkspacesInfo.d.ts +0 -2
- package/dist/components/features/WorkspaceGrid/WorkspacesInfo.d.ts.map +0 -1
- package/dist/components/features/WorkspaceGrid/WorkspacesInfo.js +0 -11
- package/dist/components/features/WorkspaceGrid/WorkspacesInfo.js.map +0 -1
- package/dist/components/features/WorkspaceGrid/WorkspacesRow.d.ts +0 -8
- package/dist/components/features/WorkspaceGrid/WorkspacesRow.d.ts.map +0 -1
- package/dist/components/features/WorkspaceGrid/WorkspacesRow.js +0 -18
- package/dist/components/features/WorkspaceGrid/WorkspacesRow.js.map +0 -1
- package/dist/components/features/WorkspaceList/WorkspaceList.d.ts +0 -2
- package/dist/components/features/WorkspaceList/WorkspaceList.d.ts.map +0 -1
- package/dist/components/features/WorkspaceList/WorkspaceList.js +0 -10
- package/dist/components/features/WorkspaceList/WorkspaceList.js.map +0 -1
- package/dist/components/features/WorkspaceList/WorkspacesRow.d.ts +0 -8
- package/dist/components/features/WorkspaceList/WorkspacesRow.d.ts.map +0 -1
- package/dist/components/features/WorkspaceList/WorkspacesRow.js +0 -15
- package/dist/components/features/WorkspaceList/WorkspacesRow.js.map +0 -1
- package/dist/components/features/WorkspaceList/responsiveColumnWidths.d.ts +0 -4
- package/dist/components/features/WorkspaceList/responsiveColumnWidths.d.ts.map +0 -1
- package/dist/components/features/WorkspaceList/responsiveColumnWidths.js +0 -11
- package/dist/components/features/WorkspaceList/responsiveColumnWidths.js.map +0 -1
- package/dist/components/features/WorkspaceList/responsiveWidth.d.ts +0 -4
- package/dist/components/features/WorkspaceList/responsiveWidth.d.ts.map +0 -1
- package/dist/components/features/WorkspaceList/responsiveWidth.js +0 -11
- package/dist/components/features/WorkspaceList/responsiveWidth.js.map +0 -1
- package/dist/components/features/WorkspacesGrid/WorkspaceInfo.d.ts +0 -2
- package/dist/components/features/WorkspacesGrid/WorkspaceInfo.d.ts.map +0 -1
- package/dist/components/features/WorkspacesGrid/WorkspaceInfo.js +0 -13
- package/dist/components/features/WorkspacesGrid/WorkspaceInfo.js.map +0 -1
- package/dist/components/features/WorkspacesGrid/WorkspaceList.d.ts +0 -2
- package/dist/components/features/WorkspacesGrid/WorkspaceList.d.ts.map +0 -1
- package/dist/components/features/WorkspacesGrid/WorkspaceList.js +0 -10
- package/dist/components/features/WorkspacesGrid/WorkspaceList.js.map +0 -1
- package/dist/components/features/WorkspacesGrid/WorkspacesGrid.d.ts +0 -2
- package/dist/components/features/WorkspacesGrid/WorkspacesGrid.d.ts.map +0 -1
- package/dist/components/features/WorkspacesGrid/WorkspacesGrid.js +0 -10
- package/dist/components/features/WorkspacesGrid/WorkspacesGrid.js.map +0 -1
- package/dist/components/features/WorkspacesGrid/WorkspacesInfo.d.ts +0 -2
- package/dist/components/features/WorkspacesGrid/WorkspacesInfo.d.ts.map +0 -1
- package/dist/components/features/WorkspacesGrid/WorkspacesInfo.js +0 -11
- package/dist/components/features/WorkspacesGrid/WorkspacesInfo.js.map +0 -1
- package/dist/components/features/WorkspacesGrid/WorkspacesRow.d.ts +0 -8
- package/dist/components/features/WorkspacesGrid/WorkspacesRow.d.ts.map +0 -1
- package/dist/components/features/WorkspacesGrid/WorkspacesRow.js +0 -18
- package/dist/components/features/WorkspacesGrid/WorkspacesRow.js.map +0 -1
- package/dist/components/layouts/Footer/Footer.d.ts +0 -2
- package/dist/components/layouts/Footer/Footer.d.ts.map +0 -1
- package/dist/components/layouts/Footer/Footer.js +0 -7
- package/dist/components/layouts/Footer/Footer.js.map +0 -1
- package/dist/components/layouts/Header/WorkspaceCommands copy.d.ts +0 -2
- package/dist/components/layouts/Header/WorkspaceCommands copy.d.ts.map +0 -1
- package/dist/components/layouts/Header/WorkspaceCommands copy.js +0 -6
- package/dist/components/layouts/Header/WorkspaceCommands copy.js.map +0 -1
- package/dist/contexts/NavigationContext.d.ts +0 -27
- package/dist/contexts/NavigationContext.d.ts.map +0 -1
- package/dist/contexts/NavigationContext.js +0 -33
- package/dist/contexts/NavigationContext.js.map +0 -1
- package/dist/contexts/ProjectNavigationContext.d.ts +0 -20
- package/dist/contexts/ProjectNavigationContext.d.ts.map +0 -1
- package/dist/contexts/ProjectNavigationContext.js +0 -35
- package/dist/contexts/ProjectNavigationContext.js.map +0 -1
- package/dist/contexts/ResponsizeContext.d.ts +0 -14
- package/dist/contexts/ResponsizeContext.d.ts.map +0 -1
- package/dist/contexts/ResponsizeContext.js +0 -34
- package/dist/contexts/ResponsizeContext.js.map +0 -1
- package/dist/contexts/WorkspaceNavigationContext.d.ts +0 -29
- package/dist/contexts/WorkspaceNavigationContext.d.ts.map +0 -1
- package/dist/contexts/WorkspaceNavigationContext.js +0 -41
- package/dist/contexts/WorkspaceNavigationContext.js.map +0 -1
- package/dist/contexts/WorkspacesNavigationContext.d.ts +0 -29
- package/dist/contexts/WorkspacesNavigationContext.d.ts.map +0 -1
- package/dist/contexts/WorkspacesNavigationContext.js +0 -37
- package/dist/contexts/WorkspacesNavigationContext.js.map +0 -1
- package/dist/hooks/useDisovery.d.ts +0 -7
- package/dist/hooks/useDisovery.d.ts.map +0 -1
- package/dist/hooks/useDisovery.js +0 -38
- package/dist/hooks/useDisovery.js.map +0 -1
- package/dist/hooks/useGridNavigation.d.ts +0 -19
- package/dist/hooks/useGridNavigation.d.ts.map +0 -1
- package/dist/hooks/useGridNavigation.js +0 -52
- package/dist/hooks/useGridNavigation.js.map +0 -1
- package/dist/hooks/useNavigation.d.ts +0 -10
- package/dist/hooks/useNavigation.d.ts.map +0 -1
- package/dist/hooks/useNavigation.js +0 -43
- package/dist/hooks/useNavigation.js.map +0 -1
- package/dist/hooks/useNavigationMatrix.d.ts +0 -6
- package/dist/hooks/useNavigationMatrix.d.ts.map +0 -1
- package/dist/hooks/useNavigationMatrix.js +0 -34
- package/dist/hooks/useNavigationMatrix.js.map +0 -1
- package/dist/hooks/useRuntime.d.ts +0 -1
- package/dist/hooks/useRuntime.d.ts.map +0 -1
- package/dist/hooks/useRuntime.js +0 -2
- package/dist/hooks/useRuntime.js.map +0 -1
- package/dist/hooks/useWorkspaceNavigation.d.ts +0 -10
- package/dist/hooks/useWorkspaceNavigation.d.ts.map +0 -1
- package/dist/hooks/useWorkspaceNavigation.js +0 -31
- package/dist/hooks/useWorkspaceNavigation.js.map +0 -1
- package/dist/hooks/useWorkspaceQuickActionts.d.ts +0 -4
- package/dist/hooks/useWorkspaceQuickActionts.d.ts.map +0 -1
- package/dist/hooks/useWorkspaceQuickActionts.js +0 -28
- package/dist/hooks/useWorkspaceQuickActionts.js.map +0 -1
- package/dist/hooks/useWorkspacesGrid copy.d.ts +0 -10
- package/dist/hooks/useWorkspacesGrid copy.d.ts.map +0 -1
- package/dist/hooks/useWorkspacesGrid copy.js +0 -31
- package/dist/hooks/useWorkspacesGrid copy.js.map +0 -1
- package/dist/hooks/useWorkspacesGrid.d.ts +0 -11
- package/dist/hooks/useWorkspacesGrid.d.ts.map +0 -1
- package/dist/hooks/useWorkspacesGrid.js +0 -31
- package/dist/hooks/useWorkspacesGrid.js.map +0 -1
- package/dist/hooks/useWorkspacesNavigation.d.ts +0 -10
- package/dist/hooks/useWorkspacesNavigation.d.ts.map +0 -1
- package/dist/hooks/useWorkspacesNavigation.js +0 -31
- package/dist/hooks/useWorkspacesNavigation.js.map +0 -1
- package/dist/services/discovery/facets/biome-parser.d.ts +0 -3
- package/dist/services/discovery/facets/biome-parser.d.ts.map +0 -1
- package/dist/services/discovery/facets/biome-parser.js +0 -73
- package/dist/services/discovery/facets/biome-parser.js.map +0 -1
- package/dist/services/discovery/facets/composeParser.d.ts +0 -1
- package/dist/services/discovery/facets/composeParser.d.ts.map +0 -1
- package/dist/services/discovery/facets/composeParser.js +0 -2
- package/dist/services/discovery/facets/composeParser.js.map +0 -1
- package/dist/services/discovery/facets/makefileParser.d.ts +0 -1
- package/dist/services/discovery/facets/makefileParser.d.ts.map +0 -1
- package/dist/services/discovery/facets/makefileParser.js +0 -2
- package/dist/services/discovery/facets/makefileParser.js.map +0 -1
- package/dist/services/discovery/facets/manifest-parser.d.ts +0 -7
- package/dist/services/discovery/facets/manifest-parser.d.ts.map +0 -1
- package/dist/services/discovery/facets/manifest-parser.js +0 -43
- package/dist/services/discovery/facets/manifest-parser.js.map +0 -1
- package/dist/services/discovery/facets/manifestParser.d.ts +0 -1
- package/dist/services/discovery/facets/manifestParser.d.ts.map +0 -1
- package/dist/services/discovery/facets/manifestParser.js +0 -2
- package/dist/services/discovery/facets/manifestParser.js.map +0 -1
- package/dist/services/discovery/workspaceDiscovery.d.ts +0 -3
- package/dist/services/discovery/workspaceDiscovery.d.ts.map +0 -1
- package/dist/services/discovery/workspaceDiscovery.js +0 -17
- package/dist/services/discovery/workspaceDiscovery.js.map +0 -1
- package/dist/services/runtime/resolve-runtime-conflicts.d.ts +0 -15
- package/dist/services/runtime/resolve-runtime-conflicts.d.ts.map +0 -1
- package/dist/services/runtime/resolve-runtime-conflicts.js +0 -36
- package/dist/services/runtime/resolve-runtime-conflicts.js.map +0 -1
- package/dist/types/navigation.d.ts +0 -10
- package/dist/types/navigation.d.ts.map +0 -1
- package/dist/types/navigation.js +0 -59
- package/dist/types/navigation.js.map +0 -1
- package/dist/types/projects-grid.d.ts +0 -32
- package/dist/types/projects-grid.d.ts.map +0 -1
- package/dist/types/projects-grid.js +0 -2
- package/dist/types/projects-grid.js.map +0 -1
- package/dist/types/quick-actions.d.ts +0 -7
- package/dist/types/quick-actions.d.ts.map +0 -1
- package/dist/types/quick-actions.js +0 -2
- package/dist/types/quick-actions.js.map +0 -1
- package/dist/types/runtime.d.ts +0 -16
- package/dist/types/runtime.d.ts.map +0 -1
- package/dist/types/runtime.js +0 -2
- package/dist/types/runtime.js.map +0 -1
- package/dist/types/workpace-grid.d.ts +0 -32
- package/dist/types/workpace-grid.d.ts.map +0 -1
- package/dist/types/workpace-grid.js +0 -2
- package/dist/types/workpace-grid.js.map +0 -1
- package/dist/types/workspace-navigation.d.ts +0 -37
- package/dist/types/workspace-navigation.d.ts.map +0 -1
- package/dist/types/workspace-navigation.js +0 -7
- package/dist/types/workspace-navigation.js.map +0 -1
- package/dist/types/workspaces-grid copy.d.ts +0 -37
- package/dist/types/workspaces-grid copy.d.ts.map +0 -1
- package/dist/types/workspaces-grid copy.js +0 -7
- package/dist/types/workspaces-grid copy.js.map +0 -1
- package/dist/types/workspaces-grid.d.ts +0 -37
- package/dist/types/workspaces-grid.d.ts.map +0 -1
- package/dist/types/workspaces-grid.js +0 -7
- package/dist/types/workspaces-grid.js.map +0 -1
- package/dist/types/worspace-state.d.ts +0 -19
- package/dist/types/worspace-state.d.ts.map +0 -1
- package/dist/types/worspace-state.js +0 -2
- package/dist/types/worspace-state.js.map +0 -1
- package/dist/utils/framework-detector.d.ts +0 -7
- package/dist/utils/framework-detector.d.ts.map +0 -1
- package/dist/utils/framework-detector.js +0 -111
- package/dist/utils/framework-detector.js.map +0 -1
- package/dist/utils/fs/scanner.d.ts +0 -6
- package/dist/utils/fs/scanner.d.ts.map +0 -1
- package/dist/utils/fs/scanner.js +0 -32
- package/dist/utils/fs/scanner.js.map +0 -1
- package/dist/utils/getPackageVersion.d.ts +0 -2
- package/dist/utils/getPackageVersion.d.ts.map +0 -1
- package/dist/utils/getPackageVersion.js +0 -6
- package/dist/utils/getPackageVersion.js.map +0 -1
- package/dist/utils/logger.d.ts +0 -14
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js +0 -99
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/navigation-helper.d.ts +0 -9
- package/dist/utils/navigation-helper.d.ts.map +0 -1
- package/dist/utils/navigation-helper.js +0 -53
- package/dist/utils/navigation-helper.js.map +0 -1
- package/dist/utils/package-json.d.ts +0 -2
- package/dist/utils/package-json.d.ts.map +0 -1
- package/dist/utils/package-json.js +0 -11
- package/dist/utils/package-json.js.map +0 -1
- package/dist/utils/port.d.ts +0 -6
- package/dist/utils/port.d.ts.map +0 -1
- package/dist/utils/port.js +0 -24
- package/dist/utils/port.js.map +0 -1
- package/dist/utils/project/workspace-grid.d.ts +0 -17
- package/dist/utils/project/workspace-grid.d.ts.map +0 -1
- package/dist/utils/project/workspace-grid.js +0 -121
- package/dist/utils/project/workspace-grid.js.map +0 -1
- package/dist/utils/workpace/workspace-grid.d.ts +0 -17
- package/dist/utils/workpace/workspace-grid.d.ts.map +0 -1
- package/dist/utils/workpace/workspace-grid.js +0 -121
- package/dist/utils/workpace/workspace-grid.js.map +0 -1
- package/dist/utils/workpace/workspace-helper.d.ts +0 -7
- package/dist/utils/workpace/workspace-helper.d.ts.map +0 -1
- package/dist/utils/workpace/workspace-helper.js +0 -10
- package/dist/utils/workpace/workspace-helper.js.map +0 -1
- package/dist/utils/workpace/workspace-navigation.d.ts +0 -17
- package/dist/utils/workpace/workspace-navigation.d.ts.map +0 -1
- package/dist/utils/workpace/workspace-navigation.js +0 -123
- package/dist/utils/workpace/workspace-navigation.js.map +0 -1
- package/dist/utils/workpace/workspaces-grid copy.d.ts +0 -30
- package/dist/utils/workpace/workspaces-grid copy.d.ts.map +0 -1
- package/dist/utils/workpace/workspaces-grid copy.js +0 -97
- package/dist/utils/workpace/workspaces-grid copy.js.map +0 -1
- package/dist/utils/workpace/workspaces-grid.d.ts +0 -22
- package/dist/utils/workpace/workspaces-grid.d.ts.map +0 -1
- package/dist/utils/workpace/workspaces-grid.js +0 -123
- package/dist/utils/workpace/workspaces-grid.js.map +0 -1
- package/dist/utils/workpace/worspace-state.d.ts +0 -18
- package/dist/utils/workpace/worspace-state.d.ts.map +0 -1
- package/dist/utils/workpace/worspace-state.js +0 -2
- package/dist/utils/workpace/worspace-state.js.map +0 -1
- package/dist/utils/workspace/workspaces-grid.d.ts +0 -22
- package/dist/utils/workspace/workspaces-grid.d.ts.map +0 -1
- package/dist/utils/workspace/workspaces-grid.js +0 -123
- package/dist/utils/workspace/workspaces-grid.js.map +0 -1
- package/dist/utils/workspace-helper.d.ts +0 -10
- package/dist/utils/workspace-helper.d.ts.map +0 -1
- package/dist/utils/workspace-helper.js +0 -46
- package/dist/utils/workspace-helper.js.map +0 -1
- package/dist/utils/workspace-navigation.d.ts +0 -1
- package/dist/utils/workspace-navigation.d.ts.map +0 -1
- package/dist/utils/workspace-navigation.js +0 -2
- package/dist/utils/workspace-navigation.js.map +0 -1
- package/src/utils/navigation/grid-navigation.ts +0 -60
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { z } from "zod"
|
|
2
|
+
|
|
3
|
+
import type { Config } from "../types/config.js"
|
|
4
|
+
|
|
5
|
+
const facetQuickActionSchema = z.object({
|
|
6
|
+
facetPath: z.string(),
|
|
7
|
+
name: z.string(),
|
|
8
|
+
command: z.string(),
|
|
9
|
+
exec: z.string(),
|
|
10
|
+
order: z.number().optional(),
|
|
11
|
+
})
|
|
12
|
+
|
|
13
|
+
const workspaceQuickActionSchema = z.object({
|
|
14
|
+
workspacePath: z.string(),
|
|
15
|
+
facets: z.array(facetQuickActionSchema),
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
const discoverySchema = z
|
|
19
|
+
.object({
|
|
20
|
+
maxDepth: z.number().int().nonnegative().optional(),
|
|
21
|
+
ignore: z.array(z.string()).optional(),
|
|
22
|
+
folders: z
|
|
23
|
+
.object({
|
|
24
|
+
app: z.array(z.string()).optional(),
|
|
25
|
+
package: z.array(z.string()).optional(),
|
|
26
|
+
infra: z.array(z.string()).optional(),
|
|
27
|
+
contract: z.array(z.string()).optional(),
|
|
28
|
+
})
|
|
29
|
+
.optional(),
|
|
30
|
+
scripts: z
|
|
31
|
+
.object({
|
|
32
|
+
include: z.array(z.string()).optional(),
|
|
33
|
+
exclude: z.array(z.string()).optional(),
|
|
34
|
+
})
|
|
35
|
+
.optional(),
|
|
36
|
+
env: z
|
|
37
|
+
.object({
|
|
38
|
+
files: z.array(z.string()).optional(),
|
|
39
|
+
portKeys: z.array(z.string()).optional(),
|
|
40
|
+
})
|
|
41
|
+
.optional(),
|
|
42
|
+
order: z.array(z.string()).optional(),
|
|
43
|
+
makefile: z
|
|
44
|
+
.object({
|
|
45
|
+
showDefault: z.boolean().optional(),
|
|
46
|
+
})
|
|
47
|
+
.optional(),
|
|
48
|
+
})
|
|
49
|
+
.optional()
|
|
50
|
+
|
|
51
|
+
const executionSchema = z
|
|
52
|
+
.object({
|
|
53
|
+
useTmux: z.boolean().optional(),
|
|
54
|
+
})
|
|
55
|
+
.optional()
|
|
56
|
+
|
|
57
|
+
const loggingSchema = z
|
|
58
|
+
.object({
|
|
59
|
+
level: z.enum(["debug", "info", "warn", "error"]).optional(),
|
|
60
|
+
file: z.boolean().optional(),
|
|
61
|
+
logDir: z.string().optional(),
|
|
62
|
+
prettyPrint: z.boolean().optional(),
|
|
63
|
+
truncateOnStart: z.boolean().optional(),
|
|
64
|
+
})
|
|
65
|
+
.optional()
|
|
66
|
+
|
|
67
|
+
export const configSchema = z.object({
|
|
68
|
+
discovery: discoverySchema,
|
|
69
|
+
quickActions: z.array(workspaceQuickActionSchema),
|
|
70
|
+
execution: executionSchema,
|
|
71
|
+
logging: loggingSchema,
|
|
72
|
+
theme: z.literal("dark").optional(),
|
|
73
|
+
})
|
|
74
|
+
|
|
75
|
+
export function validateConfig(config: unknown): Config {
|
|
76
|
+
const result = configSchema.safeParse(config)
|
|
77
|
+
|
|
78
|
+
if (result.success) {
|
|
79
|
+
return result.data
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
const details = result.error.issues
|
|
83
|
+
.map((issue) => {
|
|
84
|
+
const path = issue.path.length > 0 ? issue.path.join(".") : "root"
|
|
85
|
+
return `${path}: ${issue.message}`
|
|
86
|
+
})
|
|
87
|
+
.join("; ")
|
|
88
|
+
|
|
89
|
+
throw new Error(`Invalid monotui config: ${details}`)
|
|
90
|
+
}
|
|
@@ -8,8 +8,8 @@ import {
|
|
|
8
8
|
shouldKeepTuiOpen,
|
|
9
9
|
} from "../services/runtime/command-runner.js"
|
|
10
10
|
import { Page } from "../types/page.js"
|
|
11
|
-
import type { Project } from "../types/project.js"
|
|
12
11
|
import type { ProjectGridGrid } from "../types/project-grid.js"
|
|
12
|
+
import type { Project } from "../types/workspace.js"
|
|
13
13
|
import {
|
|
14
14
|
buildProjectGrid,
|
|
15
15
|
getProjectCellByPosition,
|
|
@@ -8,11 +8,11 @@ import {
|
|
|
8
8
|
|
|
9
9
|
import { useWorkspaceDiscovery } from "../hooks/useWorkspaceDiscovery.js"
|
|
10
10
|
import { useWorkspaceRuntime } from "../hooks/useWorkspaceRuntime.js"
|
|
11
|
-
import type { Project } from "../types/
|
|
11
|
+
import type { Project, Workspace } from "../types/workspace.js"
|
|
12
12
|
import type { WorkspaceRuntimeState } from "../types/workspace-runtime.js"
|
|
13
13
|
|
|
14
14
|
interface WorkspaceDiscoveryContextType {
|
|
15
|
-
|
|
15
|
+
workspace: Workspace | null
|
|
16
16
|
workspaceRuntimes: WorkspaceRuntimeState[]
|
|
17
17
|
project: Project | null
|
|
18
18
|
setProject: (project: Project | null) => void
|
|
@@ -35,11 +35,11 @@ export function WorkspaceDiscoveryProvider({
|
|
|
35
35
|
}) {
|
|
36
36
|
const [project, setProject] = useState<Project | null>(null)
|
|
37
37
|
const rootPath = useMemo(() => process.cwd(), [])
|
|
38
|
-
const {
|
|
39
|
-
const workspaceRuntimes = useWorkspaceRuntime(projects)
|
|
38
|
+
const { workspace } = useWorkspaceDiscovery(rootPath)
|
|
39
|
+
const workspaceRuntimes = useWorkspaceRuntime(workspace?.projects || [])
|
|
40
40
|
|
|
41
41
|
return (
|
|
42
|
-
<Provider value={{
|
|
42
|
+
<Provider value={{ workspace, workspaceRuntimes, project, setProject }}>
|
|
43
43
|
{children}
|
|
44
44
|
</Provider>
|
|
45
45
|
)
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
shouldKeepTuiOpen,
|
|
7
7
|
} from "../services/runtime/command-runner.js"
|
|
8
8
|
import { Page } from "../types/page.js"
|
|
9
|
-
import type { Project } from "../types/
|
|
9
|
+
import type { Project } from "../types/workspace.js"
|
|
10
10
|
import type { CursorPosition } from "../types/workspace-grid.js"
|
|
11
11
|
import type { WorkspaceQuickAction } from "../types/workspace-quick-actions.js"
|
|
12
12
|
import type { WorkspaceRuntimeState } from "../types/workspace-runtime.js"
|
|
@@ -81,7 +81,7 @@ export function WorkspacesNavigationProvider({
|
|
|
81
81
|
|
|
82
82
|
if (selectedCell?.type === "workspace") {
|
|
83
83
|
setPage(Page.Project)
|
|
84
|
-
setProject(selectedCell.
|
|
84
|
+
setProject(selectedCell.project)
|
|
85
85
|
} else if (selectedCell?.type === "quickAction") {
|
|
86
86
|
const workspace = projects[newRow]
|
|
87
87
|
const command = selectedCell.action.command
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useEffect, useState } from "react"
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
import type {
|
|
3
|
+
import { workspaceDiscovery } from "../services/discovery/workspace-discovery.js"
|
|
4
|
+
import type { Workspace } from "../types/workspace.js"
|
|
5
5
|
import { logger } from "../utils/logging/logger.js"
|
|
6
6
|
|
|
7
7
|
interface UseWorkspaceDiscoveryOptions {
|
|
@@ -10,12 +10,15 @@ interface UseWorkspaceDiscoveryOptions {
|
|
|
10
10
|
|
|
11
11
|
export function useWorkspaceDiscovery(
|
|
12
12
|
rootPath: string,
|
|
13
|
-
|
|
14
|
-
) {
|
|
13
|
+
_options?: UseWorkspaceDiscoveryOptions,
|
|
14
|
+
): {
|
|
15
|
+
loading: boolean
|
|
16
|
+
workspace: Workspace | null
|
|
17
|
+
error: Error | null
|
|
18
|
+
} {
|
|
15
19
|
const [loading, setLoading] = useState(true)
|
|
16
|
-
const [
|
|
20
|
+
const [workspace, setWorkspace] = useState<Workspace | null>(null)
|
|
17
21
|
const [error, setError] = useState<Error | null>(null)
|
|
18
|
-
const refreshIntervalMs = options?.refreshIntervalMs ?? 0
|
|
19
22
|
|
|
20
23
|
useEffect(() => {
|
|
21
24
|
let cancelled = false
|
|
@@ -30,11 +33,13 @@ export function useWorkspaceDiscovery(
|
|
|
30
33
|
setLoading(true)
|
|
31
34
|
setError(null)
|
|
32
35
|
try {
|
|
33
|
-
const
|
|
36
|
+
const workspace = await workspaceDiscovery(rootPath)
|
|
34
37
|
logger.debug(rootPath, "discovered workspaces")
|
|
35
38
|
if (!cancelled) {
|
|
36
|
-
|
|
37
|
-
logger.debug(
|
|
39
|
+
setWorkspace(workspace)
|
|
40
|
+
logger.debug(
|
|
41
|
+
`Workspace discovery result count: ${workspace.projects.length}`,
|
|
42
|
+
)
|
|
38
43
|
}
|
|
39
44
|
} catch (err) {
|
|
40
45
|
if (!cancelled) setError(err as Error)
|
|
@@ -46,16 +51,10 @@ export function useWorkspaceDiscovery(
|
|
|
46
51
|
|
|
47
52
|
load()
|
|
48
53
|
|
|
49
|
-
const intervalId =
|
|
50
|
-
refreshIntervalMs > 0 ? setInterval(load, refreshIntervalMs) : null
|
|
51
|
-
|
|
52
54
|
return () => {
|
|
53
55
|
cancelled = true
|
|
54
|
-
if (intervalId) {
|
|
55
|
-
clearInterval(intervalId)
|
|
56
|
-
}
|
|
57
56
|
}
|
|
58
|
-
}, [rootPath
|
|
57
|
+
}, [rootPath])
|
|
59
58
|
|
|
60
|
-
return { loading,
|
|
59
|
+
return { loading, workspace, error }
|
|
61
60
|
}
|
|
@@ -3,7 +3,7 @@ import { useEffect, useState } from "react"
|
|
|
3
3
|
import { getDockerRunStates } from "../services/runtime/docker-runtime.js"
|
|
4
4
|
import { getNodeRunStates } from "../services/runtime/node-runtime.js"
|
|
5
5
|
import { resolveRuntimeConflicts } from "../services/runtime/resolve-runtime.js"
|
|
6
|
-
import type { Project } from "../types/
|
|
6
|
+
import type { Project } from "../types/workspace.js"
|
|
7
7
|
import type { WorkspaceRuntimeState } from "../types/workspace-runtime.js"
|
|
8
8
|
import { logger } from "../utils/logging/logger.js"
|
|
9
9
|
|
|
@@ -39,6 +39,50 @@ function mergeTransientStatuses(
|
|
|
39
39
|
}))
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
+
function areRuntimeStatesEqual(
|
|
43
|
+
left: WorkspaceRuntimeState[],
|
|
44
|
+
right: WorkspaceRuntimeState[],
|
|
45
|
+
): boolean {
|
|
46
|
+
if (left.length !== right.length) {
|
|
47
|
+
return false
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
for (
|
|
51
|
+
let workspaceIndex = 0;
|
|
52
|
+
workspaceIndex < left.length;
|
|
53
|
+
workspaceIndex += 1
|
|
54
|
+
) {
|
|
55
|
+
const leftWorkspace = left[workspaceIndex]
|
|
56
|
+
const rightWorkspace = right[workspaceIndex]
|
|
57
|
+
|
|
58
|
+
if (leftWorkspace.workspacePath !== rightWorkspace.workspacePath) {
|
|
59
|
+
return false
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
if (leftWorkspace.runStates.length !== rightWorkspace.runStates.length) {
|
|
63
|
+
return false
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
for (
|
|
67
|
+
let stateIndex = 0;
|
|
68
|
+
stateIndex < leftWorkspace.runStates.length;
|
|
69
|
+
stateIndex += 1
|
|
70
|
+
) {
|
|
71
|
+
const leftState = leftWorkspace.runStates[stateIndex]
|
|
72
|
+
const rightState = rightWorkspace.runStates[stateIndex]
|
|
73
|
+
|
|
74
|
+
if (
|
|
75
|
+
leftState.id !== rightState.id ||
|
|
76
|
+
leftState.status !== rightState.status
|
|
77
|
+
) {
|
|
78
|
+
return false
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return true
|
|
84
|
+
}
|
|
85
|
+
|
|
42
86
|
export function useWorkspaceRuntime(projects: Project[]) {
|
|
43
87
|
const [runtimeStates, setRuntimeStates] = useState<WorkspaceRuntimeState[]>(
|
|
44
88
|
[],
|
|
@@ -52,11 +96,6 @@ export function useWorkspaceRuntime(projects: Project[]) {
|
|
|
52
96
|
const scripts = project.facets.packageJson?.scripts ?? []
|
|
53
97
|
const services = project.facets.compose?.services ?? []
|
|
54
98
|
|
|
55
|
-
// const [nodeStates, dockerStates] = await Promise.all([
|
|
56
|
-
// getNodeRunStates(project.absolutePath, project.path, scripts),
|
|
57
|
-
// getDockerRunStates(project.path, services),
|
|
58
|
-
// ])
|
|
59
|
-
|
|
60
99
|
const nodeStates = await getNodeRunStates(
|
|
61
100
|
project.absolutePath,
|
|
62
101
|
project.path,
|
|
@@ -73,17 +112,18 @@ export function useWorkspaceRuntime(projects: Project[]) {
|
|
|
73
112
|
runStates: [...resolvedNodeStates, ...resolvedDockerStates],
|
|
74
113
|
})
|
|
75
114
|
}
|
|
76
|
-
if (
|
|
77
|
-
|
|
78
|
-
mergeTransientStatuses(previous, results),
|
|
79
|
-
)
|
|
115
|
+
if (cancelled) {
|
|
116
|
+
return
|
|
80
117
|
}
|
|
118
|
+
|
|
119
|
+
setRuntimeStates((previous) => {
|
|
120
|
+
const merged = mergeTransientStatuses(previous, results)
|
|
121
|
+
return areRuntimeStatesEqual(previous, merged) ? previous : merged
|
|
122
|
+
})
|
|
81
123
|
}
|
|
82
124
|
fetchStatus()
|
|
83
|
-
const interval = setInterval(fetchStatus, 5000)
|
|
84
125
|
return () => {
|
|
85
126
|
cancelled = true
|
|
86
|
-
clearInterval(interval)
|
|
87
127
|
}
|
|
88
128
|
}, [projects])
|
|
89
129
|
|
|
@@ -2,7 +2,7 @@ import { readFile } from "node:fs/promises"
|
|
|
2
2
|
import { dirname, join, relative } from "node:path"
|
|
3
3
|
import { parse as parseYaml } from "yaml"
|
|
4
4
|
|
|
5
|
-
import type { ComposeFacet } from "../../../types/
|
|
5
|
+
import type { ComposeFacet } from "../../../types/workspace.js"
|
|
6
6
|
import { fileExists } from "../../../utils/fs/file.js"
|
|
7
7
|
import { logger } from "../../../utils/logging/logger.js"
|
|
8
8
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { readFile } from "node:fs/promises"
|
|
2
2
|
import { dirname, join, relative, resolve } from "node:path"
|
|
3
3
|
|
|
4
|
-
import type { MakefileFacet } from "../../../types/
|
|
4
|
+
import type { MakefileFacet } from "../../../types/workspace.js"
|
|
5
5
|
import { fileExists } from "../../../utils/fs/file.js"
|
|
6
6
|
import { logger } from "../../../utils/logging/logger.js"
|
|
7
7
|
|
|
@@ -74,7 +74,7 @@ export async function parseMakefile(
|
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
import { getConfig } from "../../../config/config.js"
|
|
77
|
-
import type { MakefileCommand } from "../../../types/
|
|
77
|
+
import type { MakefileCommand } from "../../../types/workspace.js"
|
|
78
78
|
|
|
79
79
|
async function parseSingleMakefile(
|
|
80
80
|
makefilePath: string,
|
|
@@ -6,7 +6,7 @@ import type {
|
|
|
6
6
|
PackageJsonFacet,
|
|
7
7
|
PackageJsonScript,
|
|
8
8
|
PackageManager,
|
|
9
|
-
} from "../../../types/
|
|
9
|
+
} from "../../../types/workspace.js"
|
|
10
10
|
import { getPackageJson } from "../../../utils/fs/file.js"
|
|
11
11
|
import { detectFramework } from "../../../utils/workspace/framework-detector.js"
|
|
12
12
|
|
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
import { basename } from "node:path"
|
|
2
2
|
|
|
3
3
|
import { getConfig } from "../../config/config.js"
|
|
4
|
-
import type { Project, ProjectType } from "../../types/
|
|
4
|
+
import type { Project, ProjectType, Workspace } from "../../types/workspace.js"
|
|
5
5
|
import { scanDirectories } from "../../utils/fs/directories.js"
|
|
6
6
|
import { logger } from "../../utils/logging/logger.js"
|
|
7
7
|
import { parseDockerCompose } from "./facets/compose-parser.js"
|
|
8
8
|
import { parseMakefile } from "./facets/makefile-parser.js"
|
|
9
9
|
import { parsePackageJson } from "./facets/package-json-parser.js"
|
|
10
10
|
|
|
11
|
-
export async function
|
|
11
|
+
export async function workspaceDiscovery(rootPath: string): Promise<Workspace> {
|
|
12
12
|
const config = getConfig()
|
|
13
13
|
const directories = await scanDirectories(rootPath, {
|
|
14
14
|
maxDepth: 4,
|
|
15
15
|
ignore: config.discovery?.ignore || [],
|
|
16
16
|
})
|
|
17
|
+
|
|
17
18
|
logger.debug(directories, "Scanned Directories")
|
|
18
19
|
|
|
19
|
-
const
|
|
20
|
+
const projects: Project[] = []
|
|
20
21
|
for (const dir of directories) {
|
|
21
22
|
const packageFacet = await parsePackageJson(dir)
|
|
22
23
|
|
|
@@ -24,12 +25,16 @@ export async function discoverWorkspaces(rootPath: string): Promise<Project[]> {
|
|
|
24
25
|
|
|
25
26
|
const makefileFacet = await parseMakefile(dir)
|
|
26
27
|
|
|
28
|
+
// packageFacet?.name || composeFacet?.name || makefileFacet?.name || ""
|
|
29
|
+
const name = packageFacet?.name || basename(dir)
|
|
30
|
+
|
|
27
31
|
if (packageFacet || composeFacet || makefileFacet) {
|
|
28
32
|
const relPath = dir.startsWith(rootPath)
|
|
29
33
|
? dir.slice(rootPath.length).replace(/^\/+/, "")
|
|
30
34
|
: dir
|
|
31
35
|
const type = await determineProjectType(relPath)
|
|
32
|
-
const
|
|
36
|
+
const project: Project = {
|
|
37
|
+
name,
|
|
33
38
|
type,
|
|
34
39
|
folder: basename(dir),
|
|
35
40
|
path: relPath || ".",
|
|
@@ -40,16 +45,21 @@ export async function discoverWorkspaces(rootPath: string): Promise<Project[]> {
|
|
|
40
45
|
makefile: makefileFacet || undefined,
|
|
41
46
|
},
|
|
42
47
|
}
|
|
43
|
-
|
|
48
|
+
projects.push(project)
|
|
44
49
|
}
|
|
45
50
|
}
|
|
46
51
|
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
52
|
+
const orderedProjects = orderProjects(projects, config.discovery?.order || [])
|
|
53
|
+
const rootPackageName = projects.find((project) => project.path === ".")
|
|
54
|
+
?.facets.packageJson?.name
|
|
55
|
+
|
|
56
|
+
const workspace: Workspace = {
|
|
57
|
+
name: rootPackageName || basename(rootPath),
|
|
58
|
+
absolutePath: rootPath,
|
|
59
|
+
projects: orderedProjects,
|
|
60
|
+
}
|
|
51
61
|
|
|
52
|
-
return
|
|
62
|
+
return workspace
|
|
53
63
|
}
|
|
54
64
|
|
|
55
65
|
/**
|
|
@@ -91,7 +101,7 @@ async function determineProjectType(dir: string): Promise<ProjectType> {
|
|
|
91
101
|
return "app"
|
|
92
102
|
}
|
|
93
103
|
|
|
94
|
-
export function
|
|
104
|
+
export function orderProjects(
|
|
95
105
|
workspaces: Project[],
|
|
96
106
|
order: string[],
|
|
97
107
|
): Project[] {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { execFile } from "node:child_process"
|
|
2
2
|
import { promisify } from "node:util"
|
|
3
3
|
|
|
4
|
-
import type { ComposeService } from "../../types/
|
|
4
|
+
import type { ComposeService } from "../../types/workspace.js"
|
|
5
5
|
import type { RunState, RuntimeStatus } from "../../types/workspace-runtime"
|
|
6
6
|
import { logger } from "../../utils/logging/logger.js"
|
|
7
7
|
import { isPortInUse } from "../../utils/runtime/port.js"
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { execFile } from "node:child_process"
|
|
2
2
|
import { promisify } from "node:util"
|
|
3
3
|
|
|
4
|
-
import type { PackageJsonScript } from "../../types/
|
|
5
|
-
import type { RunState } from "../../types/workspace-runtime"
|
|
4
|
+
import type { PackageJsonScript } from "../../types/workspace.js"
|
|
5
|
+
import type { RunState } from "../../types/workspace-runtime.js"
|
|
6
6
|
|
|
7
7
|
const execFileAsync = promisify(execFile)
|
|
8
8
|
|
package/src/theme/theme.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Project } from "./
|
|
1
|
+
import type { Project } from "./workspace.js"
|
|
2
2
|
import type { FacetQuickAction } from "./workspace-quick-actions.js"
|
|
3
3
|
import type { RunState } from "./workspace-runtime.js"
|
|
4
4
|
|
|
@@ -23,7 +23,7 @@ export interface WorkspaceCell {
|
|
|
23
23
|
type: "workspace"
|
|
24
24
|
row: number
|
|
25
25
|
col: number
|
|
26
|
-
|
|
26
|
+
project: Project
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
export interface WorkspaceQuickActionCell {
|
|
@@ -5,9 +5,16 @@ export interface EnvFile {
|
|
|
5
5
|
filepath: string // e.g. "/home/user/project-name/.env"
|
|
6
6
|
}
|
|
7
7
|
|
|
8
|
+
export interface Workspace {
|
|
9
|
+
name: string // e.g. "my-monorepo"
|
|
10
|
+
absolutePath: string // e.g. "/home/user/my-monorepo"
|
|
11
|
+
projects: Project[]
|
|
12
|
+
}
|
|
13
|
+
|
|
8
14
|
export interface Project {
|
|
9
|
-
|
|
10
|
-
|
|
15
|
+
name: string // e.g. "myapp"
|
|
16
|
+
path: string // e.g. "project-name/myapp"
|
|
17
|
+
absolutePath: string // e.g. "/home/user/project-name/myapp"
|
|
11
18
|
type: ProjectType // e.g. "app"
|
|
12
19
|
folder: string // e.g. "project-name"
|
|
13
20
|
envFile?: EnvFile
|
|
@@ -16,10 +16,10 @@ export function initLogger(config: Config): Logger {
|
|
|
16
16
|
const truncateOnStart = loggingConfig.truncateOnStart !== false
|
|
17
17
|
const logDir = loggingConfig.logDir
|
|
18
18
|
? loggingConfig.logDir.replace(/^~/, homedir())
|
|
19
|
-
: join(homedir(), ".
|
|
19
|
+
: join(homedir(), ".monotui", "logs")
|
|
20
20
|
|
|
21
21
|
if (enableFile) {
|
|
22
|
-
const logFilePath = join(logDir, "
|
|
22
|
+
const logFilePath = join(logDir, "monotui.log")
|
|
23
23
|
|
|
24
24
|
// Truncate log file if configured
|
|
25
25
|
if (truncateOnStart) {
|