@uniformdev/transformer 1.1.31 → 1.1.32

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/dist/index.d.ts CHANGED
@@ -252,6 +252,7 @@ declare class ComponentService {
252
252
  addParameterToComponent(component: ComponentDefinition, parameter: Parameter, options?: FindOptions$1): ComponentDefinition;
253
253
  ensureGroupExists(component: ComponentDefinition, groupId: string, groupName?: string, options?: FindOptions$1): ComponentDefinition;
254
254
  addParameterToGroup(component: ComponentDefinition, groupId: string, parameterId: string, options?: FindOptions$1): ComponentDefinition;
255
+ resolveRemoveIds(component: ComponentDefinition, parameterId: string, options?: FindOptions$1): string[];
255
256
  removeParameter(component: ComponentDefinition, parameterId: string, options?: FindOptions$1): ComponentDefinition;
256
257
  removeEmptyGroups(component: ComponentDefinition): ComponentDefinition;
257
258
  findSlot(component: ComponentDefinition, slotId: string, options?: FindOptions$1): SlotDefinition | undefined;
@@ -573,11 +574,12 @@ declare class ParameterRemoverService {
573
574
  private removeParameterFromTree;
574
575
  private removeParameterFromOverrides;
575
576
  private removeOverridesForMatchingInstances;
576
- private removeKeyFromMap;
577
+ private removeKeysFromMap;
577
578
  }
578
579
 
579
580
  interface RemoveFieldInternalOptions {
580
581
  rootDir: string;
582
+ componentsDir: string;
581
583
  compositionsDir: string;
582
584
  compositionPatternsDir: string;
583
585
  componentPatternsDir: string;
@@ -594,15 +596,16 @@ interface RemoveFieldResult {
594
596
  }
595
597
  declare class FieldRemoverService {
596
598
  private fileSystem;
599
+ private componentService;
597
600
  private logger;
598
- constructor(fileSystem: FileSystemService, logger: Logger);
601
+ constructor(fileSystem: FileSystemService, componentService: ComponentService, logger: Logger);
599
602
  private compareIds;
600
603
  remove(options: RemoveFieldInternalOptions): Promise<RemoveFieldResult>;
601
604
  private removeFieldInDirectory;
602
605
  private removeFieldFromTree;
603
606
  private removeFieldFromOverrides;
604
607
  private removeOverridesForMatchingInstances;
605
- private removeKeyFromMap;
608
+ private removeKeysFromMap;
606
609
  }
607
610
 
608
611
  export { type AddComponentOptions, type AddComponentParameterOptions, type AddComponentPatternOptions, type AddContentTypeFieldOptions, ComponentAdderService, ComponentAlreadyExistsError, type ComponentDefinition, type ComponentInstance, ComponentNotFoundError, ComponentRenamerService, ComponentService, type Composition, CompositionConverterService, type CompositionOverrides, type CompositionPatternCandidatesOptions, type CompositionRoot, CompositionService, type ContentTypeDefinition$1 as ContentTypeDefinition, type ContentTypeField$1 as ContentTypeField, type ConvertCompositionsToEntriesOptions, DuplicateIdError, FieldRemoverService, FileNotFoundError, FileSystemService, type FlattenBlockFieldOptions, type GlobalOptions, InvalidYamlError, Logger, type PackSerializationOptions, type Parameter, ParameterRemoverService, type ParameterValue, type PropagateRootComponentPropertyOptions, type PropagateRootComponentSlotOptions, PropertyNotFoundError, PropertyPropagatorService, type RemoveFieldOptions, type RemoveParameterOptions, type RenameComponentOptions, type RenameSlotOptions, SlotAlreadyExistsError, type SlotDefinition, SlotNotFoundError, SlotRenamerService, TransformError, type UnpackSerializationOptions, computeGuidHash, regenerateIds };
package/dist/index.js CHANGED
@@ -336,18 +336,31 @@ var ComponentService = class {
336
336
  }
337
337
  return component;
338
338
  }
339
+ resolveRemoveIds(component, parameterId, options = {}) {
340
+ const param = this.findParameter(component, parameterId, options);
341
+ if (!param) return [];
342
+ if (!this.isGroupParameter(param)) {
343
+ return [param.id];
344
+ }
345
+ const ids = [param.id];
346
+ for (const childId of param.typeConfig?.childrenParams ?? []) {
347
+ ids.push(...this.resolveRemoveIds(component, childId, options));
348
+ }
349
+ return ids;
350
+ }
339
351
  removeParameter(component, parameterId, options = {}) {
340
352
  const { strict = false } = options;
341
353
  if (!component.parameters) {
342
354
  return component;
343
355
  }
356
+ const idsToRemove = this.resolveRemoveIds(component, parameterId, options);
344
357
  component.parameters = component.parameters.filter(
345
- (p) => !this.compareIds(p.id, parameterId, strict)
358
+ (p) => !idsToRemove.some((id) => this.compareIds(p.id, id, strict))
346
359
  );
347
360
  for (const param of component.parameters) {
348
361
  if (this.isGroupParameter(param) && param.typeConfig?.childrenParams) {
349
362
  param.typeConfig.childrenParams = param.typeConfig.childrenParams.filter(
350
- (id) => !this.compareIds(id, parameterId, strict)
363
+ (id) => !idsToRemove.some((removeId) => this.compareIds(id, removeId, strict))
351
364
  );
352
365
  }
353
366
  }
@@ -2506,11 +2519,20 @@ var ParameterRemoverService = class {
2506
2519
  if (!param) {
2507
2520
  throw new PropertyNotFoundError(parameterId, componentType);
2508
2521
  }
2522
+ const allIdsToRemove = this.componentService.resolveRemoveIds(component, parameterId, findOptions);
2523
+ const childIds = allIdsToRemove.filter((id) => !this.compareIds(id, parameterId, strict));
2509
2524
  this.logger.action(
2510
2525
  whatIf,
2511
2526
  "REMOVE",
2512
2527
  `Parameter "${parameterId}" from component/${this.fileSystem.getBasename(componentFilePath)}`
2513
2528
  );
2529
+ if (childIds.length > 0) {
2530
+ this.logger.action(
2531
+ whatIf,
2532
+ "REMOVE",
2533
+ `Cascade-removing ${childIds.length} child parameter(s) [${childIds.join(", ")}] from component/${this.fileSystem.getBasename(componentFilePath)}`
2534
+ );
2535
+ }
2514
2536
  let modifiedComponent = this.componentService.removeParameter(component, parameterId, findOptions);
2515
2537
  const beforeGroupCount = modifiedComponent.parameters?.filter(
2516
2538
  (p) => this.componentService.isGroupParameter(p)
@@ -2533,7 +2555,7 @@ var ParameterRemoverService = class {
2533
2555
  const compositionsResult = await this.removeParameterInDirectory(
2534
2556
  fullCompositionsDir,
2535
2557
  componentType,
2536
- parameterId,
2558
+ allIdsToRemove,
2537
2559
  whatIf,
2538
2560
  strict,
2539
2561
  "composition"
@@ -2541,7 +2563,7 @@ var ParameterRemoverService = class {
2541
2563
  const compositionPatternsResult = await this.removeParameterInDirectory(
2542
2564
  fullCompositionPatternsDir,
2543
2565
  componentType,
2544
- parameterId,
2566
+ allIdsToRemove,
2545
2567
  whatIf,
2546
2568
  strict,
2547
2569
  "compositionPattern"
@@ -2549,7 +2571,7 @@ var ParameterRemoverService = class {
2549
2571
  const componentPatternsResult = await this.removeParameterInDirectory(
2550
2572
  fullComponentPatternsDir,
2551
2573
  componentType,
2552
- parameterId,
2574
+ allIdsToRemove,
2553
2575
  whatIf,
2554
2576
  strict,
2555
2577
  "componentPattern"
@@ -2568,7 +2590,7 @@ var ParameterRemoverService = class {
2568
2590
  instancesUpdated: totalInstances
2569
2591
  };
2570
2592
  }
2571
- async removeParameterInDirectory(directory, componentType, parameterId, whatIf, strict, label) {
2593
+ async removeParameterInDirectory(directory, componentType, parameterIds, whatIf, strict, label) {
2572
2594
  let files;
2573
2595
  try {
2574
2596
  files = await this.fileSystem.findFiles(directory, "**/*.{json,yaml,yml}");
@@ -2593,13 +2615,13 @@ var ParameterRemoverService = class {
2593
2615
  const count = this.removeParameterFromTree(
2594
2616
  composition.composition,
2595
2617
  componentType,
2596
- parameterId,
2618
+ parameterIds,
2597
2619
  strict
2598
2620
  );
2599
2621
  const overridesCount = this.removeParameterFromOverrides(
2600
2622
  composition,
2601
2623
  componentType,
2602
- parameterId,
2624
+ parameterIds,
2603
2625
  strict
2604
2626
  );
2605
2627
  const totalCount = count + overridesCount;
@@ -2619,11 +2641,11 @@ var ParameterRemoverService = class {
2619
2641
  }
2620
2642
  return { filesModified, instancesUpdated };
2621
2643
  }
2622
- removeParameterFromTree(node, componentType, parameterId, strict) {
2644
+ removeParameterFromTree(node, componentType, parameterIds, strict) {
2623
2645
  let count = 0;
2624
2646
  if (this.compareIds(node.type, componentType, strict) && node.parameters) {
2625
- const removed = this.removeKeyFromMap(node.parameters, parameterId, strict);
2626
- if (removed) {
2647
+ const removed = this.removeKeysFromMap(node.parameters, parameterIds, strict);
2648
+ if (removed > 0) {
2627
2649
  count++;
2628
2650
  }
2629
2651
  }
@@ -2631,13 +2653,13 @@ var ParameterRemoverService = class {
2631
2653
  for (const slotInstances of Object.values(node.slots)) {
2632
2654
  if (!Array.isArray(slotInstances)) continue;
2633
2655
  for (const instance of slotInstances) {
2634
- count += this.removeParameterFromTree(instance, componentType, parameterId, strict);
2656
+ count += this.removeParameterFromTree(instance, componentType, parameterIds, strict);
2635
2657
  }
2636
2658
  }
2637
2659
  }
2638
2660
  return count;
2639
2661
  }
2640
- removeParameterFromOverrides(composition, componentType, parameterId, strict) {
2662
+ removeParameterFromOverrides(composition, componentType, parameterIds, strict) {
2641
2663
  if (!composition.composition._overrides) {
2642
2664
  return 0;
2643
2665
  }
@@ -2646,8 +2668,8 @@ var ParameterRemoverService = class {
2646
2668
  const rootId = composition.composition._id;
2647
2669
  const rootOverrides = composition.composition._overrides[rootId];
2648
2670
  if (rootOverrides?.parameters) {
2649
- const removed = this.removeKeyFromMap(rootOverrides.parameters, parameterId, strict);
2650
- if (removed) {
2671
+ const removed = this.removeKeysFromMap(rootOverrides.parameters, parameterIds, strict);
2672
+ if (removed > 0) {
2651
2673
  count++;
2652
2674
  }
2653
2675
  }
@@ -2657,14 +2679,14 @@ var ParameterRemoverService = class {
2657
2679
  composition.composition,
2658
2680
  composition.composition._overrides,
2659
2681
  componentType,
2660
- parameterId,
2682
+ parameterIds,
2661
2683
  strict,
2662
2684
  counter
2663
2685
  );
2664
2686
  count += counter.count;
2665
2687
  return count;
2666
2688
  }
2667
- removeOverridesForMatchingInstances(node, overrides, componentType, parameterId, strict, counter) {
2689
+ removeOverridesForMatchingInstances(node, overrides, componentType, parameterIds, strict, counter) {
2668
2690
  if (node.slots) {
2669
2691
  for (const slotInstances of Object.values(node.slots)) {
2670
2692
  if (!Array.isArray(slotInstances)) continue;
@@ -2672,8 +2694,8 @@ var ParameterRemoverService = class {
2672
2694
  if (this.compareIds(instance.type, componentType, strict) && instance._id) {
2673
2695
  const instanceOverrides = overrides[instance._id];
2674
2696
  if (instanceOverrides?.parameters) {
2675
- const removed = this.removeKeyFromMap(instanceOverrides.parameters, parameterId, strict);
2676
- if (removed) {
2697
+ const removed = this.removeKeysFromMap(instanceOverrides.parameters, parameterIds, strict);
2698
+ if (removed > 0) {
2677
2699
  counter.count++;
2678
2700
  }
2679
2701
  }
@@ -2682,7 +2704,7 @@ var ParameterRemoverService = class {
2682
2704
  instance,
2683
2705
  overrides,
2684
2706
  componentType,
2685
- parameterId,
2707
+ parameterIds,
2686
2708
  strict,
2687
2709
  counter
2688
2710
  );
@@ -2690,22 +2712,24 @@ var ParameterRemoverService = class {
2690
2712
  }
2691
2713
  }
2692
2714
  }
2693
- removeKeyFromMap(map, key, strict) {
2694
- const matchingKey = Object.keys(map).find(
2695
- (k) => this.compareIds(k, key, strict)
2696
- );
2697
- if (!matchingKey) {
2698
- return false;
2715
+ removeKeysFromMap(map, keys, strict) {
2716
+ let removed = 0;
2717
+ for (const key of keys) {
2718
+ const matchingKey = Object.keys(map).find((k) => this.compareIds(k, key, strict));
2719
+ if (matchingKey) {
2720
+ delete map[matchingKey];
2721
+ removed++;
2722
+ }
2699
2723
  }
2700
- delete map[matchingKey];
2701
- return true;
2724
+ return removed;
2702
2725
  }
2703
2726
  };
2704
2727
 
2705
2728
  // src/core/services/field-remover.service.ts
2706
2729
  var FieldRemoverService = class {
2707
- constructor(fileSystem, logger) {
2730
+ constructor(fileSystem, componentService, logger) {
2708
2731
  this.fileSystem = fileSystem;
2732
+ this.componentService = componentService;
2709
2733
  this.logger = logger;
2710
2734
  }
2711
2735
  compareIds(id1, id2, strict) {
@@ -2717,6 +2741,7 @@ var FieldRemoverService = class {
2717
2741
  async remove(options) {
2718
2742
  const {
2719
2743
  rootDir,
2744
+ componentsDir,
2720
2745
  compositionsDir,
2721
2746
  compositionPatternsDir,
2722
2747
  componentPatternsDir,
@@ -2725,14 +2750,29 @@ var FieldRemoverService = class {
2725
2750
  whatIf,
2726
2751
  strict
2727
2752
  } = options;
2753
+ const findOptions = { strict };
2754
+ const fullComponentsDir = this.fileSystem.resolvePath(rootDir, componentsDir);
2728
2755
  const fullCompositionsDir = this.fileSystem.resolvePath(rootDir, compositionsDir);
2729
2756
  const fullCompositionPatternsDir = this.fileSystem.resolvePath(rootDir, compositionPatternsDir);
2730
2757
  const fullComponentPatternsDir = this.fileSystem.resolvePath(rootDir, componentPatternsDir);
2758
+ let allIdsToRemove = [parameterId];
2759
+ try {
2760
+ const { component } = await this.componentService.loadComponent(fullComponentsDir, componentType, findOptions);
2761
+ const resolved = this.componentService.resolveRemoveIds(component, parameterId, findOptions);
2762
+ if (resolved.length > 0) {
2763
+ allIdsToRemove = resolved;
2764
+ }
2765
+ } catch {
2766
+ }
2767
+ const childIds = allIdsToRemove.filter((id) => id.toLowerCase() !== parameterId.toLowerCase());
2768
+ if (childIds.length > 0) {
2769
+ this.logger.info(`Cascade-removing ${childIds.length} child field(s) [${childIds.join(", ")}] along with "${parameterId}"`);
2770
+ }
2731
2771
  this.logger.info(`Removing field "${parameterId}" from instances of ${componentType}`);
2732
2772
  const compositionsResult = await this.removeFieldInDirectory(
2733
2773
  fullCompositionsDir,
2734
2774
  componentType,
2735
- parameterId,
2775
+ allIdsToRemove,
2736
2776
  whatIf,
2737
2777
  strict,
2738
2778
  "composition"
@@ -2740,7 +2780,7 @@ var FieldRemoverService = class {
2740
2780
  const compositionPatternsResult = await this.removeFieldInDirectory(
2741
2781
  fullCompositionPatternsDir,
2742
2782
  componentType,
2743
- parameterId,
2783
+ allIdsToRemove,
2744
2784
  whatIf,
2745
2785
  strict,
2746
2786
  "compositionPattern"
@@ -2748,7 +2788,7 @@ var FieldRemoverService = class {
2748
2788
  const componentPatternsResult = await this.removeFieldInDirectory(
2749
2789
  fullComponentPatternsDir,
2750
2790
  componentType,
2751
- parameterId,
2791
+ allIdsToRemove,
2752
2792
  whatIf,
2753
2793
  strict,
2754
2794
  "componentPattern"
@@ -2766,7 +2806,7 @@ var FieldRemoverService = class {
2766
2806
  instancesUpdated: totalInstances
2767
2807
  };
2768
2808
  }
2769
- async removeFieldInDirectory(directory, componentType, parameterId, whatIf, strict, label) {
2809
+ async removeFieldInDirectory(directory, componentType, parameterIds, whatIf, strict, label) {
2770
2810
  let files;
2771
2811
  try {
2772
2812
  files = await this.fileSystem.findFiles(directory, "**/*.{json,yaml,yml}");
@@ -2791,13 +2831,13 @@ var FieldRemoverService = class {
2791
2831
  const treeCount = this.removeFieldFromTree(
2792
2832
  composition.composition,
2793
2833
  componentType,
2794
- parameterId,
2834
+ parameterIds,
2795
2835
  strict
2796
2836
  );
2797
2837
  const overridesCount = this.removeFieldFromOverrides(
2798
2838
  composition,
2799
2839
  componentType,
2800
- parameterId,
2840
+ parameterIds,
2801
2841
  strict
2802
2842
  );
2803
2843
  const totalCount = treeCount + overridesCount;
@@ -2817,11 +2857,11 @@ var FieldRemoverService = class {
2817
2857
  }
2818
2858
  return { filesModified, instancesUpdated };
2819
2859
  }
2820
- removeFieldFromTree(node, componentType, parameterId, strict) {
2860
+ removeFieldFromTree(node, componentType, parameterIds, strict) {
2821
2861
  let count = 0;
2822
2862
  if (this.compareIds(node.type, componentType, strict) && node.parameters) {
2823
- const removed = this.removeKeyFromMap(node.parameters, parameterId, strict);
2824
- if (removed) {
2863
+ const removed = this.removeKeysFromMap(node.parameters, parameterIds, strict);
2864
+ if (removed > 0) {
2825
2865
  count++;
2826
2866
  }
2827
2867
  }
@@ -2829,13 +2869,13 @@ var FieldRemoverService = class {
2829
2869
  for (const slotInstances of Object.values(node.slots)) {
2830
2870
  if (!Array.isArray(slotInstances)) continue;
2831
2871
  for (const instance of slotInstances) {
2832
- count += this.removeFieldFromTree(instance, componentType, parameterId, strict);
2872
+ count += this.removeFieldFromTree(instance, componentType, parameterIds, strict);
2833
2873
  }
2834
2874
  }
2835
2875
  }
2836
2876
  return count;
2837
2877
  }
2838
- removeFieldFromOverrides(composition, componentType, parameterId, strict) {
2878
+ removeFieldFromOverrides(composition, componentType, parameterIds, strict) {
2839
2879
  if (!composition.composition._overrides) {
2840
2880
  return 0;
2841
2881
  }
@@ -2844,8 +2884,8 @@ var FieldRemoverService = class {
2844
2884
  const rootId = composition.composition._id;
2845
2885
  const rootOverrides = composition.composition._overrides[rootId];
2846
2886
  if (rootOverrides?.parameters) {
2847
- const removed = this.removeKeyFromMap(rootOverrides.parameters, parameterId, strict);
2848
- if (removed) {
2887
+ const removed = this.removeKeysFromMap(rootOverrides.parameters, parameterIds, strict);
2888
+ if (removed > 0) {
2849
2889
  count++;
2850
2890
  }
2851
2891
  }
@@ -2854,12 +2894,12 @@ var FieldRemoverService = class {
2854
2894
  composition.composition,
2855
2895
  composition.composition._overrides,
2856
2896
  componentType,
2857
- parameterId,
2897
+ parameterIds,
2858
2898
  strict
2859
2899
  );
2860
2900
  return count;
2861
2901
  }
2862
- removeOverridesForMatchingInstances(node, overrides, componentType, parameterId, strict) {
2902
+ removeOverridesForMatchingInstances(node, overrides, componentType, parameterIds, strict) {
2863
2903
  let count = 0;
2864
2904
  if (node.slots) {
2865
2905
  for (const slotInstances of Object.values(node.slots)) {
@@ -2868,8 +2908,8 @@ var FieldRemoverService = class {
2868
2908
  if (this.compareIds(instance.type, componentType, strict) && instance._id) {
2869
2909
  const instanceOverrides = overrides[instance._id];
2870
2910
  if (instanceOverrides?.parameters) {
2871
- const removed = this.removeKeyFromMap(instanceOverrides.parameters, parameterId, strict);
2872
- if (removed) {
2911
+ const removed = this.removeKeysFromMap(instanceOverrides.parameters, parameterIds, strict);
2912
+ if (removed > 0) {
2873
2913
  count++;
2874
2914
  }
2875
2915
  }
@@ -2878,7 +2918,7 @@ var FieldRemoverService = class {
2878
2918
  instance,
2879
2919
  overrides,
2880
2920
  componentType,
2881
- parameterId,
2921
+ parameterIds,
2882
2922
  strict
2883
2923
  );
2884
2924
  }
@@ -2886,15 +2926,16 @@ var FieldRemoverService = class {
2886
2926
  }
2887
2927
  return count;
2888
2928
  }
2889
- removeKeyFromMap(map, key, strict) {
2890
- const matchingKey = Object.keys(map).find(
2891
- (k) => this.compareIds(k, key, strict)
2892
- );
2893
- if (!matchingKey) {
2894
- return false;
2929
+ removeKeysFromMap(map, keys, strict) {
2930
+ let removed = 0;
2931
+ for (const key of keys) {
2932
+ const matchingKey = Object.keys(map).find((k) => this.compareIds(k, key, strict));
2933
+ if (matchingKey) {
2934
+ delete map[matchingKey];
2935
+ removed++;
2936
+ }
2895
2937
  }
2896
- delete map[matchingKey];
2897
- return true;
2938
+ return removed;
2898
2939
  }
2899
2940
  };
2900
2941