@@ -2,53 +2,61 @@ import type { SpaceData } from '../constants';
22import { minimatch } from 'minimatch' ;
33
44/**
5- * Filters space data to only include a specific component and its dependencies
5+ * Filters space data to only include a specific component (no dependencies)
66 */
77export function filterSpaceDataByComponent ( spaceData : SpaceData , componentName : string ) : SpaceData {
8- const filteredSpaceData : SpaceData = {
9- components : [ ] ,
10- groups : [ ...spaceData . groups ] , // Keep all groups for dependency resolution
11- internalTags : [ ...spaceData . internalTags ] , // Keep all tags for dependency resolution
12- presets : [ ] ,
13- } ;
14-
158 // Find the target component
169 const targetComponent = spaceData . components . find ( component => component . name === componentName ) ;
17- if ( targetComponent ) {
18- filteredSpaceData . components . push ( targetComponent ) ;
19-
20- // Find presets for this component
21- filteredSpaceData . presets = spaceData . presets . filter (
22- preset => preset . component_id === targetComponent . id ,
23- ) ;
10+ if ( ! targetComponent ) {
11+ return {
12+ components : [ ] ,
13+ groups : [ ] ,
14+ internalTags : [ ] ,
15+ presets : [ ] ,
16+ } ;
2417 }
2518
26- return filteredSpaceData ;
19+ // Find presets for this component
20+ const filteredPresets = spaceData . presets . filter (
21+ preset => preset . component_id === targetComponent . id ,
22+ ) ;
23+
24+ return {
25+ components : [ targetComponent ] ,
26+ groups : [ ] , // No groups - dependencies assumed to exist in target
27+ internalTags : [ ] , // No tags - dependencies assumed to exist in target
28+ presets : filteredPresets ,
29+ } ;
2730}
2831
2932/**
30- * Filters space data to only include components matching a glob pattern
33+ * Filters space data to only include components matching a glob pattern (no dependencies)
3134 */
3235export function filterSpaceDataByPattern ( spaceData : SpaceData , pattern : string ) : SpaceData {
33- const filteredSpaceData : SpaceData = {
34- components : [ ] ,
35- groups : [ ...spaceData . groups ] , // Keep all groups for dependency resolution
36- internalTags : [ ...spaceData . internalTags ] , // Keep all tags for dependency resolution
37- presets : [ ] ,
38- } ;
39-
4036 // Filter components by pattern
4137 const matchingComponents = spaceData . components . filter ( component =>
4238 minimatch ( component . name , pattern ) ,
4339 ) ;
4440
45- filteredSpaceData . components = matchingComponents ;
41+ if ( matchingComponents . length === 0 ) {
42+ return {
43+ components : [ ] ,
44+ groups : [ ] ,
45+ internalTags : [ ] ,
46+ presets : [ ] ,
47+ } ;
48+ }
4649
4750 // Find presets for matching components
4851 const componentIds = matchingComponents . map ( component => component . id ) ;
49- filteredSpaceData . presets = spaceData . presets . filter (
52+ const filteredPresets = spaceData . presets . filter (
5053 preset => componentIds . includes ( preset . component_id ) ,
5154 ) ;
5255
53- return filteredSpaceData ;
56+ return {
57+ components : matchingComponents ,
58+ groups : [ ] , // No groups - dependencies assumed to exist in target
59+ internalTags : [ ] , // No tags - dependencies assumed to exist in target
60+ presets : filteredPresets ,
61+ } ;
5462}
0 commit comments