refactor: remove the legacy ngrx list framework - #5405
Conversation
… list framework Source CfOrgSpaceLabelService's CF name from EndpointsSignalService instead of store.select(selectEntity(...)); its public observable API is unchanged so CfOrgSpaceLinksComponent is untouched. Org/space resolve empty, matching the live breadcrumb path (which passes only cfGuid). Drop the ngrx Store from all four callers (cf-service-card, service-cf-breadcrumbs, and the dead card-app / TableCellAppCfOrgSpaceBase cells) plus the vestigial EntityServiceFactory provider on the card. Relocate the live cf-service-card cluster (card + 6 table-cell-service-* cells) out of components/list/list-types/cf-services into shared/components/cards/cf-service-card so workstream D can delete the list framework. Repoint select-service and the spaces table-cell-service consumer.
Move the three live, ngrx-free table cells out of shared/components/list/list-types into the manage-users feature beside their sole consumers, so workstream D can delete the list framework: cf-confirm-roles/table-cell-confirm-org-space -> manage-users-confirm/ cf-confirm-roles/table-cell-confirm-role-add-rem -> manage-users-confirm/ cf-users-org-space-roles/table-cell-select-org -> manage-users-modify/ The cells already import TableCellCustom from the signal-list home and sit at the same tree depth, so only the two consumer import paths change.
Lift the page-size sentinel + helpers (PAGE_SIZE_ALL, PageSizeSentinel, isPageSizeSentinel, resolvePageSize, getPageSizeLabel, and the default page-size option arrays) out of the legacy list.component.types into shared/components/signal-list/page-size.types so they survive deletion of the list framework. Repoint the live app-paginator + public-api at the new home; the dead list.component / list.component.types keep using them via the new import until D deletes them.
Lift the list-action contract interfaces (IBaseListAction, IListAction, IOptionalAction, IMultiListAction, IGlobalListAction) out of the legacy list.component.types into shared/components/signal-list/list-action.types so they survive deletion of the list framework, and export them from public-api. Repoint the live consumers (store entity-catalog.types, helm endpoint generator) + the dead-until-D consumers (list.component, table-cell-actions) at the new home; base-cf-list-config resolves via the @stratosui/core barrel. Drop the now-orphaned ActionState import.
The endpointListActions entity-catalog hook passed an ngrx Store to each endpoint type's action builder, but the sole implementor (helm) never used it — it refreshes via EndpointsDataService. Drop the param from the contract (entity-catalog.types), the helm implementation, and the caller EndpointListHelper, which no longer injects Store. Behavior-preserving; removes the last ngrx coupling from the endpoint cluster ahead of its relocation out of the list framework.
Move the live, now-ngrx-free endpoint cells + helper (endpoint-card, table-cell-endpoint-address/name/status, endpoint-list.helpers incl. the public-API EndpointListDetailsComponent base) from shared/components/list/list-types/endpoint into a dedicated shared/components/endpoint-list so workstream D can delete the list framework. Repoint TableCellCustom/CardCell at signal-list/cell-base, drop the vestigial listCards self-registration, and update public-api, SharedModule, and the core/kube/git/metrics consumers. The dead table-cell-endpoint-details + endpoint-data-source.helpers stay behind for deletion in D.
Remove SharedModule's imports/exports/providers of the legacy list framework (ListComponent, ListViewComponent, EntityListViewComponent, TableComponent, listCardComponents, listTableComponents, MaxListMessageComponent, ListHostDirective, TableCellStatusDirective, the empty table-cell-request-monitor-icon/side-panel imports, and the vestigial ListConfig provider). Nothing live consumes them — the table and list-view consumers were migrated in workstreams T and K. The endpoint cluster references are kept (already repointed to endpoint-list/). Clears the way for D to delete the list/ trees.
Delete both list/ trees (core + cloud-foundry), cf-list-data-source.ts,
and the 17 confirmed-dead kubernetes/helm list cells. Strip the now-dead
list/ re-export lines from the core and cloud-foundry public APIs.
Three symbols the framework still exported turned out to be live and are
relocated into the signal-list module (re-exported from @stratosui/core
so consumers are unchanged):
- TableCellStatusDirective (used by card-app-usage)
- extractActualListEntity (used by cf.helpers)
- ISimpleListConfig (opaque holder type for the kubernetes
UI/list ConfigHolder registries)
Also fix a latent RC bug the production build surfaced: cf-org-space-label
imported APIResource from cf-api.types (which only re-imports it) instead
of @stratosui/store. Drop add-route-stepper's obsolete ListConfig
leak-guard test (the type it guarded no longer exists).
Full `make check gate` green: 2324 tests pass, production build + go
tests pass. The legacy list framework is gone.
Reviewer guideMost of this PR is mechanical (file moves + import-path recomputation + ~200 deletions) that the gate and a local smoke already cover. Here's where reviewer judgment adds the most value, in priority order. 1. Behavior-preserving ngrx conversions (highest value)The only places behavior could subtly change:
2. One deliberate type-weakening
3. Deletion scope
How to navigateReview commit-by-commit, not the squashed diff — each commit is atomic and self-describing, ordered: RC → confirm/select cells → page-size / IListAction / endpoint-cluster relocations → unwire SharedModule → delete. The ~200-file deletion is the last commit and is almost entirely Safe to skim: the relocation commits — pure moves; import correctness is covered by a file-existence resolution sweep and the green build/CI. Verification done
Pre-existing, unrelated (not introduced here)CI/test logs show unhandled errors in |
norman-abramovitz
left a comment
There was a problem hiding this comment.
Did the review
Summary
Removes the legacy ngrx
list/framework (thecoreandcloud-foundryshared/components/list/trees pluscf-list-data-source.ts) now that all consumers render via the signal-native<app-signal-list>. Live code still living inside the framework is relocated into permanent signal-native homes first, then the framework is deleted outright.What changed
Relocate live code out of
list/:cf-service-cardcluster is converted off ngrx (Store/EntityServiceFactoryremoved;CfOrgSpaceLabelServicenow sources the CF name fromEndpointsSignalService) and moved toshared/components/cards/cf-service-card/.manage-usersfeature beside their consumers.IListActionfamily, and the endpoint cluster (cards/cells +EndpointListHelper, with the unusedStoreparameter dropped from theendpointListActionsentity-catalog contract) move intoshared/components/signal-list/and a newshared/components/endpoint-list/.Delete the framework:
SharedModuleis unwired from the framework; bothlist/trees,cf-list-data-source.ts, and the dead Kubernetes/Helm list cells are deleted.TableCellStatusDirective,extractActualListEntity,ISimpleListConfig) are relocated intosignal-list/and remain exported from@stratosui/core, so consumers are unchanged.Testing
make check gateis green — lint, 2324 unit tests (0 failures), the production build, and the Go tests all pass.