@teambit/config-merger 0.0.354 → 0.0.356
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/artifacts/__bit_junit.xml +1 -1
- package/artifacts/schema.json +228 -52
- package/dist/component-config-merger.d.ts +1 -1
- package/dist/component-config-merger.js.map +1 -1
- package/dist/config-merger.main.runtime.d.ts +1 -1
- package/dist/config-merger.main.runtime.js +7 -7
- package/dist/config-merger.main.runtime.js.map +1 -1
- package/package.json +16 -15
- /package/dist/{preview-1733714450424.js → preview-1733851236714.js} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
2
|
<testsuites tests="0" failures="0" errors="0" skipped="0">
|
|
3
|
-
<testsuite name="teambit.workspace/config-merger@0.0.
|
|
3
|
+
<testsuite name="teambit.workspace/config-merger@0.0.356" tests="0" failures="0" errors="0" skipped="0"/>
|
|
4
4
|
</testsuites>
|
package/artifacts/schema.json
CHANGED
|
@@ -57,7 +57,11 @@
|
|
|
57
57
|
"line": 42,
|
|
58
58
|
"character": 24
|
|
59
59
|
},
|
|
60
|
-
"name": "Workspace"
|
|
60
|
+
"name": "Workspace",
|
|
61
|
+
"componentId": {
|
|
62
|
+
"scope": "teambit.workspace",
|
|
63
|
+
"name": "workspace"
|
|
64
|
+
}
|
|
61
65
|
},
|
|
62
66
|
"isOptional": false,
|
|
63
67
|
"isSpread": false
|
|
@@ -77,7 +81,11 @@
|
|
|
77
81
|
"line": 43,
|
|
78
82
|
"character": 21
|
|
79
83
|
},
|
|
80
|
-
"name": "Logger"
|
|
84
|
+
"name": "Logger",
|
|
85
|
+
"componentId": {
|
|
86
|
+
"scope": "teambit.harmony",
|
|
87
|
+
"name": "logger"
|
|
88
|
+
}
|
|
81
89
|
},
|
|
82
90
|
"isOptional": false,
|
|
83
91
|
"isSpread": false
|
|
@@ -97,7 +105,11 @@
|
|
|
97
105
|
"line": 44,
|
|
98
106
|
"character": 21
|
|
99
107
|
},
|
|
100
|
-
"name": "ConfigMain"
|
|
108
|
+
"name": "ConfigMain",
|
|
109
|
+
"componentId": {
|
|
110
|
+
"scope": "teambit.harmony",
|
|
111
|
+
"name": "config"
|
|
112
|
+
}
|
|
101
113
|
},
|
|
102
114
|
"isOptional": false,
|
|
103
115
|
"isSpread": false
|
|
@@ -117,7 +129,11 @@
|
|
|
117
129
|
"line": 45,
|
|
118
130
|
"character": 27
|
|
119
131
|
},
|
|
120
|
-
"name": "DependencyResolverMain"
|
|
132
|
+
"name": "DependencyResolverMain",
|
|
133
|
+
"componentId": {
|
|
134
|
+
"scope": "teambit.dependencies",
|
|
135
|
+
"name": "dependency-resolver"
|
|
136
|
+
}
|
|
121
137
|
},
|
|
122
138
|
"isOptional": false,
|
|
123
139
|
"isSpread": false
|
|
@@ -372,7 +388,8 @@
|
|
|
372
388
|
"line": 133,
|
|
373
389
|
"character": 30
|
|
374
390
|
},
|
|
375
|
-
"name": "WorkspaceDepsUnchanged"
|
|
391
|
+
"name": "WorkspaceDepsUnchanged",
|
|
392
|
+
"internalFilePath": "config-merger.main.runtime.ts"
|
|
376
393
|
},
|
|
377
394
|
"isOptional": true
|
|
378
395
|
}
|
|
@@ -416,7 +433,12 @@
|
|
|
416
433
|
"line": 266,
|
|
417
434
|
"character": 17
|
|
418
435
|
},
|
|
419
|
-
"name": "ConsumerComponent"
|
|
436
|
+
"name": "ConsumerComponent",
|
|
437
|
+
"componentId": {
|
|
438
|
+
"scope": "teambit.legacy",
|
|
439
|
+
"name": "consumer-component",
|
|
440
|
+
"version": "0.0.3"
|
|
441
|
+
}
|
|
420
442
|
}
|
|
421
443
|
},
|
|
422
444
|
"isOptional": false,
|
|
@@ -437,7 +459,11 @@
|
|
|
437
459
|
"line": 267,
|
|
438
460
|
"character": 21
|
|
439
461
|
},
|
|
440
|
-
"name": "MergeStrategy"
|
|
462
|
+
"name": "MergeStrategy",
|
|
463
|
+
"componentId": {
|
|
464
|
+
"scope": "teambit.component",
|
|
465
|
+
"name": "merging"
|
|
466
|
+
}
|
|
441
467
|
},
|
|
442
468
|
"isOptional": true,
|
|
443
469
|
"isSpread": false
|
|
@@ -582,7 +608,11 @@
|
|
|
582
608
|
"line": 498,
|
|
583
609
|
"character": 5
|
|
584
610
|
},
|
|
585
|
-
"name": "Workspace"
|
|
611
|
+
"name": "Workspace",
|
|
612
|
+
"componentId": {
|
|
613
|
+
"scope": "teambit.workspace",
|
|
614
|
+
"name": "workspace"
|
|
615
|
+
}
|
|
586
616
|
},
|
|
587
617
|
{
|
|
588
618
|
"__schema": "TypeRefSchema",
|
|
@@ -591,7 +621,11 @@
|
|
|
591
621
|
"line": 499,
|
|
592
622
|
"character": 5
|
|
593
623
|
},
|
|
594
|
-
"name": "ConfigMain"
|
|
624
|
+
"name": "ConfigMain",
|
|
625
|
+
"componentId": {
|
|
626
|
+
"scope": "teambit.harmony",
|
|
627
|
+
"name": "config"
|
|
628
|
+
}
|
|
595
629
|
},
|
|
596
630
|
{
|
|
597
631
|
"__schema": "TypeRefSchema",
|
|
@@ -600,7 +634,11 @@
|
|
|
600
634
|
"line": 500,
|
|
601
635
|
"character": 5
|
|
602
636
|
},
|
|
603
|
-
"name": "LoggerMain"
|
|
637
|
+
"name": "LoggerMain",
|
|
638
|
+
"componentId": {
|
|
639
|
+
"scope": "teambit.harmony",
|
|
640
|
+
"name": "logger"
|
|
641
|
+
}
|
|
604
642
|
},
|
|
605
643
|
{
|
|
606
644
|
"__schema": "TypeRefSchema",
|
|
@@ -609,7 +647,11 @@
|
|
|
609
647
|
"line": 501,
|
|
610
648
|
"character": 5
|
|
611
649
|
},
|
|
612
|
-
"name": "DependencyResolverMain"
|
|
650
|
+
"name": "DependencyResolverMain",
|
|
651
|
+
"componentId": {
|
|
652
|
+
"scope": "teambit.dependencies",
|
|
653
|
+
"name": "dependency-resolver"
|
|
654
|
+
}
|
|
613
655
|
}
|
|
614
656
|
]
|
|
615
657
|
},
|
|
@@ -756,7 +798,11 @@
|
|
|
756
798
|
"line": 30,
|
|
757
799
|
"character": 45
|
|
758
800
|
},
|
|
759
|
-
"name": "WorkspacePolicyConfigKeysNames"
|
|
801
|
+
"name": "WorkspacePolicyConfigKeysNames",
|
|
802
|
+
"componentId": {
|
|
803
|
+
"scope": "teambit.dependencies",
|
|
804
|
+
"name": "dependency-resolver"
|
|
805
|
+
}
|
|
760
806
|
},
|
|
761
807
|
{
|
|
762
808
|
"__schema": "TypeRefSchema",
|
|
@@ -905,7 +951,8 @@
|
|
|
905
951
|
"line": 36,
|
|
906
952
|
"character": 28
|
|
907
953
|
},
|
|
908
|
-
"name": "WorkspaceDepsUnchanged"
|
|
954
|
+
"name": "WorkspaceDepsUnchanged",
|
|
955
|
+
"internalFilePath": "config-merger.main.runtime.ts"
|
|
909
956
|
},
|
|
910
957
|
"isOptional": true
|
|
911
958
|
},
|
|
@@ -1072,7 +1119,8 @@
|
|
|
1072
1119
|
"line": 13,
|
|
1073
1120
|
"character": 22
|
|
1074
1121
|
},
|
|
1075
|
-
"name": "MergeStrategyResult"
|
|
1122
|
+
"name": "MergeStrategyResult",
|
|
1123
|
+
"internalFilePath": "component-config-merger.ts"
|
|
1076
1124
|
}
|
|
1077
1125
|
},
|
|
1078
1126
|
"isOptional": false,
|
|
@@ -1217,7 +1265,8 @@
|
|
|
1217
1265
|
"line": 36,
|
|
1218
1266
|
"character": 28
|
|
1219
1267
|
},
|
|
1220
|
-
"name": "MergeStrategyResult"
|
|
1268
|
+
"name": "MergeStrategyResult",
|
|
1269
|
+
"internalFilePath": "component-config-merger.ts"
|
|
1221
1270
|
},
|
|
1222
1271
|
{
|
|
1223
1272
|
"__schema": "KeywordTypeSchema",
|
|
@@ -1319,7 +1368,12 @@
|
|
|
1319
1368
|
"line": 76,
|
|
1320
1369
|
"character": 27
|
|
1321
1370
|
},
|
|
1322
|
-
"name": "ComponentID"
|
|
1371
|
+
"name": "ComponentID",
|
|
1372
|
+
"componentId": {
|
|
1373
|
+
"scope": "teambit.component",
|
|
1374
|
+
"name": "component-id",
|
|
1375
|
+
"version": "1.2.2"
|
|
1376
|
+
}
|
|
1323
1377
|
}
|
|
1324
1378
|
},
|
|
1325
1379
|
"isOptional": false,
|
|
@@ -1348,7 +1402,12 @@
|
|
|
1348
1402
|
"line": 77,
|
|
1349
1403
|
"character": 16
|
|
1350
1404
|
},
|
|
1351
|
-
"name": "Lane"
|
|
1405
|
+
"name": "Lane",
|
|
1406
|
+
"componentId": {
|
|
1407
|
+
"scope": "teambit.scope",
|
|
1408
|
+
"name": "objects",
|
|
1409
|
+
"version": "0.0.2"
|
|
1410
|
+
}
|
|
1352
1411
|
},
|
|
1353
1412
|
{
|
|
1354
1413
|
"__schema": "KeywordTypeSchema",
|
|
@@ -1379,7 +1438,12 @@
|
|
|
1379
1438
|
"line": 78,
|
|
1380
1439
|
"character": 29
|
|
1381
1440
|
},
|
|
1382
|
-
"name": "ExtensionDataList"
|
|
1441
|
+
"name": "ExtensionDataList",
|
|
1442
|
+
"componentId": {
|
|
1443
|
+
"scope": "teambit.legacy",
|
|
1444
|
+
"name": "extension-data",
|
|
1445
|
+
"version": "0.0.4"
|
|
1446
|
+
}
|
|
1383
1447
|
},
|
|
1384
1448
|
"isOptional": false,
|
|
1385
1449
|
"isSpread": false
|
|
@@ -1399,7 +1463,12 @@
|
|
|
1399
1463
|
"line": 79,
|
|
1400
1464
|
"character": 26
|
|
1401
1465
|
},
|
|
1402
|
-
"name": "ExtensionDataList"
|
|
1466
|
+
"name": "ExtensionDataList",
|
|
1467
|
+
"componentId": {
|
|
1468
|
+
"scope": "teambit.legacy",
|
|
1469
|
+
"name": "extension-data",
|
|
1470
|
+
"version": "0.0.4"
|
|
1471
|
+
}
|
|
1403
1472
|
},
|
|
1404
1473
|
"isOptional": false,
|
|
1405
1474
|
"isSpread": false
|
|
@@ -1419,7 +1488,12 @@
|
|
|
1419
1488
|
"line": 80,
|
|
1420
1489
|
"character": 27
|
|
1421
1490
|
},
|
|
1422
|
-
"name": "ExtensionDataList"
|
|
1491
|
+
"name": "ExtensionDataList",
|
|
1492
|
+
"componentId": {
|
|
1493
|
+
"scope": "teambit.legacy",
|
|
1494
|
+
"name": "extension-data",
|
|
1495
|
+
"version": "0.0.4"
|
|
1496
|
+
}
|
|
1423
1497
|
},
|
|
1424
1498
|
"isOptional": false,
|
|
1425
1499
|
"isSpread": false
|
|
@@ -1479,7 +1553,11 @@
|
|
|
1479
1553
|
"line": 83,
|
|
1480
1554
|
"character": 21
|
|
1481
1555
|
},
|
|
1482
|
-
"name": "Logger"
|
|
1556
|
+
"name": "Logger",
|
|
1557
|
+
"componentId": {
|
|
1558
|
+
"scope": "teambit.harmony",
|
|
1559
|
+
"name": "logger"
|
|
1560
|
+
}
|
|
1483
1561
|
},
|
|
1484
1562
|
"isOptional": false,
|
|
1485
1563
|
"isSpread": false
|
|
@@ -1499,7 +1577,11 @@
|
|
|
1499
1577
|
"line": 84,
|
|
1500
1578
|
"character": 28
|
|
1501
1579
|
},
|
|
1502
|
-
"name": "MergeStrategy"
|
|
1580
|
+
"name": "MergeStrategy",
|
|
1581
|
+
"componentId": {
|
|
1582
|
+
"scope": "teambit.component",
|
|
1583
|
+
"name": "merging"
|
|
1584
|
+
}
|
|
1503
1585
|
},
|
|
1504
1586
|
"isOptional": false,
|
|
1505
1587
|
"isSpread": false
|
|
@@ -1781,7 +1863,11 @@
|
|
|
1781
1863
|
"line": 30,
|
|
1782
1864
|
"character": 45
|
|
1783
1865
|
},
|
|
1784
|
-
"name": "WorkspacePolicyConfigKeysNames"
|
|
1866
|
+
"name": "WorkspacePolicyConfigKeysNames",
|
|
1867
|
+
"componentId": {
|
|
1868
|
+
"scope": "teambit.dependencies",
|
|
1869
|
+
"name": "dependency-resolver"
|
|
1870
|
+
}
|
|
1785
1871
|
},
|
|
1786
1872
|
{
|
|
1787
1873
|
"__schema": "TypeRefSchema",
|
|
@@ -1977,7 +2063,8 @@
|
|
|
1977
2063
|
"line": 36,
|
|
1978
2064
|
"character": 28
|
|
1979
2065
|
},
|
|
1980
|
-
"name": "WorkspaceDepsUnchanged"
|
|
2066
|
+
"name": "WorkspaceDepsUnchanged",
|
|
2067
|
+
"internalFilePath": "config-merger.main.runtime.ts"
|
|
1981
2068
|
},
|
|
1982
2069
|
"isOptional": true
|
|
1983
2070
|
},
|
|
@@ -2067,7 +2154,11 @@
|
|
|
2067
2154
|
"line": 42,
|
|
2068
2155
|
"character": 24
|
|
2069
2156
|
},
|
|
2070
|
-
"name": "Workspace"
|
|
2157
|
+
"name": "Workspace",
|
|
2158
|
+
"componentId": {
|
|
2159
|
+
"scope": "teambit.workspace",
|
|
2160
|
+
"name": "workspace"
|
|
2161
|
+
}
|
|
2071
2162
|
},
|
|
2072
2163
|
"isOptional": false,
|
|
2073
2164
|
"isSpread": false
|
|
@@ -2087,7 +2178,11 @@
|
|
|
2087
2178
|
"line": 43,
|
|
2088
2179
|
"character": 21
|
|
2089
2180
|
},
|
|
2090
|
-
"name": "Logger"
|
|
2181
|
+
"name": "Logger",
|
|
2182
|
+
"componentId": {
|
|
2183
|
+
"scope": "teambit.harmony",
|
|
2184
|
+
"name": "logger"
|
|
2185
|
+
}
|
|
2091
2186
|
},
|
|
2092
2187
|
"isOptional": false,
|
|
2093
2188
|
"isSpread": false
|
|
@@ -2107,7 +2202,11 @@
|
|
|
2107
2202
|
"line": 44,
|
|
2108
2203
|
"character": 21
|
|
2109
2204
|
},
|
|
2110
|
-
"name": "ConfigMain"
|
|
2205
|
+
"name": "ConfigMain",
|
|
2206
|
+
"componentId": {
|
|
2207
|
+
"scope": "teambit.harmony",
|
|
2208
|
+
"name": "config"
|
|
2209
|
+
}
|
|
2111
2210
|
},
|
|
2112
2211
|
"isOptional": false,
|
|
2113
2212
|
"isSpread": false
|
|
@@ -2127,7 +2226,11 @@
|
|
|
2127
2226
|
"line": 45,
|
|
2128
2227
|
"character": 27
|
|
2129
2228
|
},
|
|
2130
|
-
"name": "DependencyResolverMain"
|
|
2229
|
+
"name": "DependencyResolverMain",
|
|
2230
|
+
"componentId": {
|
|
2231
|
+
"scope": "teambit.dependencies",
|
|
2232
|
+
"name": "dependency-resolver"
|
|
2233
|
+
}
|
|
2131
2234
|
},
|
|
2132
2235
|
"isOptional": false,
|
|
2133
2236
|
"isSpread": false
|
|
@@ -2382,7 +2485,8 @@
|
|
|
2382
2485
|
"line": 133,
|
|
2383
2486
|
"character": 30
|
|
2384
2487
|
},
|
|
2385
|
-
"name": "WorkspaceDepsUnchanged"
|
|
2488
|
+
"name": "WorkspaceDepsUnchanged",
|
|
2489
|
+
"internalFilePath": "config-merger.main.runtime.ts"
|
|
2386
2490
|
},
|
|
2387
2491
|
"isOptional": true
|
|
2388
2492
|
}
|
|
@@ -2426,7 +2530,12 @@
|
|
|
2426
2530
|
"line": 266,
|
|
2427
2531
|
"character": 17
|
|
2428
2532
|
},
|
|
2429
|
-
"name": "ConsumerComponent"
|
|
2533
|
+
"name": "ConsumerComponent",
|
|
2534
|
+
"componentId": {
|
|
2535
|
+
"scope": "teambit.legacy",
|
|
2536
|
+
"name": "consumer-component",
|
|
2537
|
+
"version": "0.0.3"
|
|
2538
|
+
}
|
|
2430
2539
|
}
|
|
2431
2540
|
},
|
|
2432
2541
|
"isOptional": false,
|
|
@@ -2447,7 +2556,11 @@
|
|
|
2447
2556
|
"line": 267,
|
|
2448
2557
|
"character": 21
|
|
2449
2558
|
},
|
|
2450
|
-
"name": "MergeStrategy"
|
|
2559
|
+
"name": "MergeStrategy",
|
|
2560
|
+
"componentId": {
|
|
2561
|
+
"scope": "teambit.component",
|
|
2562
|
+
"name": "merging"
|
|
2563
|
+
}
|
|
2451
2564
|
},
|
|
2452
2565
|
"isOptional": true,
|
|
2453
2566
|
"isSpread": false
|
|
@@ -2592,7 +2705,11 @@
|
|
|
2592
2705
|
"line": 498,
|
|
2593
2706
|
"character": 5
|
|
2594
2707
|
},
|
|
2595
|
-
"name": "Workspace"
|
|
2708
|
+
"name": "Workspace",
|
|
2709
|
+
"componentId": {
|
|
2710
|
+
"scope": "teambit.workspace",
|
|
2711
|
+
"name": "workspace"
|
|
2712
|
+
}
|
|
2596
2713
|
},
|
|
2597
2714
|
{
|
|
2598
2715
|
"__schema": "TypeRefSchema",
|
|
@@ -2601,7 +2718,11 @@
|
|
|
2601
2718
|
"line": 499,
|
|
2602
2719
|
"character": 5
|
|
2603
2720
|
},
|
|
2604
|
-
"name": "ConfigMain"
|
|
2721
|
+
"name": "ConfigMain",
|
|
2722
|
+
"componentId": {
|
|
2723
|
+
"scope": "teambit.harmony",
|
|
2724
|
+
"name": "config"
|
|
2725
|
+
}
|
|
2605
2726
|
},
|
|
2606
2727
|
{
|
|
2607
2728
|
"__schema": "TypeRefSchema",
|
|
@@ -2610,7 +2731,11 @@
|
|
|
2610
2731
|
"line": 500,
|
|
2611
2732
|
"character": 5
|
|
2612
2733
|
},
|
|
2613
|
-
"name": "LoggerMain"
|
|
2734
|
+
"name": "LoggerMain",
|
|
2735
|
+
"componentId": {
|
|
2736
|
+
"scope": "teambit.harmony",
|
|
2737
|
+
"name": "logger"
|
|
2738
|
+
}
|
|
2614
2739
|
},
|
|
2615
2740
|
{
|
|
2616
2741
|
"__schema": "TypeRefSchema",
|
|
@@ -2619,7 +2744,11 @@
|
|
|
2619
2744
|
"line": 501,
|
|
2620
2745
|
"character": 5
|
|
2621
2746
|
},
|
|
2622
|
-
"name": "DependencyResolverMain"
|
|
2747
|
+
"name": "DependencyResolverMain",
|
|
2748
|
+
"componentId": {
|
|
2749
|
+
"scope": "teambit.dependencies",
|
|
2750
|
+
"name": "dependency-resolver"
|
|
2751
|
+
}
|
|
2623
2752
|
}
|
|
2624
2753
|
]
|
|
2625
2754
|
},
|
|
@@ -2811,7 +2940,8 @@
|
|
|
2811
2940
|
"line": 13,
|
|
2812
2941
|
"character": 22
|
|
2813
2942
|
},
|
|
2814
|
-
"name": "MergeStrategyResult"
|
|
2943
|
+
"name": "MergeStrategyResult",
|
|
2944
|
+
"internalFilePath": "component-config-merger.ts"
|
|
2815
2945
|
}
|
|
2816
2946
|
},
|
|
2817
2947
|
"isOptional": false,
|
|
@@ -2956,7 +3086,8 @@
|
|
|
2956
3086
|
"line": 36,
|
|
2957
3087
|
"character": 28
|
|
2958
3088
|
},
|
|
2959
|
-
"name": "MergeStrategyResult"
|
|
3089
|
+
"name": "MergeStrategyResult",
|
|
3090
|
+
"internalFilePath": "component-config-merger.ts"
|
|
2960
3091
|
},
|
|
2961
3092
|
{
|
|
2962
3093
|
"__schema": "KeywordTypeSchema",
|
|
@@ -3227,7 +3358,8 @@
|
|
|
3227
3358
|
"line": 29,
|
|
3228
3359
|
"character": 18
|
|
3229
3360
|
},
|
|
3230
|
-
"name": "GenericConfigOrRemoved"
|
|
3361
|
+
"name": "GenericConfigOrRemoved",
|
|
3362
|
+
"internalFilePath": "component-config-merger.ts"
|
|
3231
3363
|
},
|
|
3232
3364
|
"isOptional": true
|
|
3233
3365
|
},
|
|
@@ -3347,7 +3479,12 @@
|
|
|
3347
3479
|
"line": 76,
|
|
3348
3480
|
"character": 27
|
|
3349
3481
|
},
|
|
3350
|
-
"name": "ComponentID"
|
|
3482
|
+
"name": "ComponentID",
|
|
3483
|
+
"componentId": {
|
|
3484
|
+
"scope": "teambit.component",
|
|
3485
|
+
"name": "component-id",
|
|
3486
|
+
"version": "1.2.2"
|
|
3487
|
+
}
|
|
3351
3488
|
}
|
|
3352
3489
|
},
|
|
3353
3490
|
"isOptional": false,
|
|
@@ -3376,7 +3513,12 @@
|
|
|
3376
3513
|
"line": 77,
|
|
3377
3514
|
"character": 16
|
|
3378
3515
|
},
|
|
3379
|
-
"name": "Lane"
|
|
3516
|
+
"name": "Lane",
|
|
3517
|
+
"componentId": {
|
|
3518
|
+
"scope": "teambit.scope",
|
|
3519
|
+
"name": "objects",
|
|
3520
|
+
"version": "0.0.2"
|
|
3521
|
+
}
|
|
3380
3522
|
},
|
|
3381
3523
|
{
|
|
3382
3524
|
"__schema": "KeywordTypeSchema",
|
|
@@ -3407,7 +3549,12 @@
|
|
|
3407
3549
|
"line": 78,
|
|
3408
3550
|
"character": 29
|
|
3409
3551
|
},
|
|
3410
|
-
"name": "ExtensionDataList"
|
|
3552
|
+
"name": "ExtensionDataList",
|
|
3553
|
+
"componentId": {
|
|
3554
|
+
"scope": "teambit.legacy",
|
|
3555
|
+
"name": "extension-data",
|
|
3556
|
+
"version": "0.0.4"
|
|
3557
|
+
}
|
|
3411
3558
|
},
|
|
3412
3559
|
"isOptional": false,
|
|
3413
3560
|
"isSpread": false
|
|
@@ -3427,7 +3574,12 @@
|
|
|
3427
3574
|
"line": 79,
|
|
3428
3575
|
"character": 26
|
|
3429
3576
|
},
|
|
3430
|
-
"name": "ExtensionDataList"
|
|
3577
|
+
"name": "ExtensionDataList",
|
|
3578
|
+
"componentId": {
|
|
3579
|
+
"scope": "teambit.legacy",
|
|
3580
|
+
"name": "extension-data",
|
|
3581
|
+
"version": "0.0.4"
|
|
3582
|
+
}
|
|
3431
3583
|
},
|
|
3432
3584
|
"isOptional": false,
|
|
3433
3585
|
"isSpread": false
|
|
@@ -3447,7 +3599,12 @@
|
|
|
3447
3599
|
"line": 80,
|
|
3448
3600
|
"character": 27
|
|
3449
3601
|
},
|
|
3450
|
-
"name": "ExtensionDataList"
|
|
3602
|
+
"name": "ExtensionDataList",
|
|
3603
|
+
"componentId": {
|
|
3604
|
+
"scope": "teambit.legacy",
|
|
3605
|
+
"name": "extension-data",
|
|
3606
|
+
"version": "0.0.4"
|
|
3607
|
+
}
|
|
3451
3608
|
},
|
|
3452
3609
|
"isOptional": false,
|
|
3453
3610
|
"isSpread": false
|
|
@@ -3507,7 +3664,11 @@
|
|
|
3507
3664
|
"line": 83,
|
|
3508
3665
|
"character": 21
|
|
3509
3666
|
},
|
|
3510
|
-
"name": "Logger"
|
|
3667
|
+
"name": "Logger",
|
|
3668
|
+
"componentId": {
|
|
3669
|
+
"scope": "teambit.harmony",
|
|
3670
|
+
"name": "logger"
|
|
3671
|
+
}
|
|
3511
3672
|
},
|
|
3512
3673
|
"isOptional": false,
|
|
3513
3674
|
"isSpread": false
|
|
@@ -3527,7 +3688,11 @@
|
|
|
3527
3688
|
"line": 84,
|
|
3528
3689
|
"character": 28
|
|
3529
3690
|
},
|
|
3530
|
-
"name": "MergeStrategy"
|
|
3691
|
+
"name": "MergeStrategy",
|
|
3692
|
+
"componentId": {
|
|
3693
|
+
"scope": "teambit.component",
|
|
3694
|
+
"name": "merging"
|
|
3695
|
+
}
|
|
3531
3696
|
},
|
|
3532
3697
|
"isOptional": false,
|
|
3533
3698
|
"isSpread": false
|
|
@@ -3644,7 +3809,8 @@
|
|
|
3644
3809
|
"line": 21,
|
|
3645
3810
|
"character": 57
|
|
3646
3811
|
},
|
|
3647
|
-
"name": "GenericConfigOrRemoved"
|
|
3812
|
+
"name": "GenericConfigOrRemoved",
|
|
3813
|
+
"internalFilePath": "component-config-merger.ts"
|
|
3648
3814
|
},
|
|
3649
3815
|
"isOptional": true
|
|
3650
3816
|
}
|
|
@@ -3675,7 +3841,11 @@
|
|
|
3675
3841
|
"line": 23,
|
|
3676
3842
|
"character": 39
|
|
3677
3843
|
},
|
|
3678
|
-
"name": "SerializedDependency"
|
|
3844
|
+
"name": "SerializedDependency",
|
|
3845
|
+
"componentId": {
|
|
3846
|
+
"scope": "teambit.dependencies",
|
|
3847
|
+
"name": "dependency-resolver"
|
|
3848
|
+
}
|
|
3679
3849
|
},
|
|
3680
3850
|
{
|
|
3681
3851
|
"__schema": "TypeLiteralSchema",
|
|
@@ -3825,7 +3995,8 @@
|
|
|
3825
3995
|
"line": 36,
|
|
3826
3996
|
"character": 16
|
|
3827
3997
|
},
|
|
3828
|
-
"name": "GenericConfigOrRemoved"
|
|
3998
|
+
"name": "GenericConfigOrRemoved",
|
|
3999
|
+
"internalFilePath": "component-config-merger.ts"
|
|
3829
4000
|
},
|
|
3830
4001
|
"isOptional": true
|
|
3831
4002
|
}
|
|
@@ -3889,7 +4060,7 @@
|
|
|
3889
4060
|
"componentId": {
|
|
3890
4061
|
"scope": "teambit.legacy",
|
|
3891
4062
|
"name": "extension-data",
|
|
3892
|
-
"version": "0.0.
|
|
4063
|
+
"version": "0.0.4"
|
|
3893
4064
|
}
|
|
3894
4065
|
},
|
|
3895
4066
|
"isOptional": false
|
|
@@ -3914,7 +4085,7 @@
|
|
|
3914
4085
|
"componentId": {
|
|
3915
4086
|
"scope": "teambit.legacy",
|
|
3916
4087
|
"name": "extension-data",
|
|
3917
|
-
"version": "0.0.
|
|
4088
|
+
"version": "0.0.4"
|
|
3918
4089
|
}
|
|
3919
4090
|
},
|
|
3920
4091
|
"isOptional": false
|
|
@@ -3935,7 +4106,12 @@
|
|
|
3935
4106
|
"line": 42,
|
|
3936
4107
|
"character": 13
|
|
3937
4108
|
},
|
|
3938
|
-
"name": "ExtensionDataEntry"
|
|
4109
|
+
"name": "ExtensionDataEntry",
|
|
4110
|
+
"componentId": {
|
|
4111
|
+
"scope": "teambit.legacy",
|
|
4112
|
+
"name": "extension-data",
|
|
4113
|
+
"version": "0.0.4"
|
|
4114
|
+
}
|
|
3939
4115
|
},
|
|
3940
4116
|
"isOptional": true
|
|
3941
4117
|
}
|
|
@@ -3985,7 +4161,7 @@
|
|
|
3985
4161
|
"componentId": {
|
|
3986
4162
|
"scope": "teambit.workspace",
|
|
3987
4163
|
"name": "config-merger",
|
|
3988
|
-
"version": "0.0.
|
|
4164
|
+
"version": "0.0.356"
|
|
3989
4165
|
},
|
|
3990
4166
|
"taggedModuleExports": []
|
|
3991
4167
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ComponentID } from '@teambit/component-id';
|
|
2
2
|
import { Logger } from '@teambit/logger';
|
|
3
|
-
import { Lane } from '@teambit/
|
|
3
|
+
import { Lane } from '@teambit/scope.objects';
|
|
4
4
|
import { ExtensionDataList } from '@teambit/legacy.extension-data';
|
|
5
5
|
import { MergeStrategy } from '@teambit/merging';
|
|
6
6
|
import { ConfigMergeResult } from './config-merge-result';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_semver","data","_interopRequireDefault","require","_builder","_componentVersion","_dependencyResolver","_envs","_lodash","_configMergeResult","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","conflictIndicator","exports","ComponentConfigMerger","constructor","compIdStr","workspaceIds","otherLane","currentAspects","baseAspects","otherAspects","currentLabel","otherLabel","logger","mergeStrategy","BuilderAspect","id","otherLaneIdsStr","toComponentIds","map","toString","merge","debug","populateEnvs","results","currentExt","stringId","handledExtIds","includes","baseExt","findExtension","otherExt","mergePerStrategy","mergedConfig","conflict","currentConfig","getConfig","otherConfig","otherAspectsNotHandledResults","extensionId","hasVersion","idFromWorkspace","getIdFromWorkspace","toStringWithoutVersion","existingExt","_legacy","envResult","envStrategy","ConfigMergeResult","compact","getEnvId","ext","envsAspect","findCoreExtension","EnvsAspect","Error","env","config","currentEnv","otherEnv","baseEnv","undefined","currentEnvAspect","version","otherEnvAspect","baseEnvAspect","mergeStrategyParams","baseConfig","isIdInWorkspaceOrOtherLane","basicConfigMerge","areConfigsEqual","configA","configB","JSON","stringify","depResolverResult","depResolverStrategy","params","DependencyResolverAspect","trace","currentConfigPolicy","getPolicy","otherConfigPolicy","baseConfigPolicy","getAllDeps","dependencies","policy","d","idWithoutVersion","__type","split","existingPolicy","find","p","dependencyId","getPolicyVer","getDataPolicy","getAutoDeps","allDeps","source","currentAutoData","currentAllData","currentDataPolicy","otherData","currentAndOtherData","uniqBy","concat","currentAndOtherComponentsData","c","baseData","getCompIdStrByPkgNameFromData","pkgName","found","packageName","getFromCurrentDataByPackageName","getFromCurrentDataPolicyByPackageName","mergedPolicy","devDependencies","peerDependencies","conflictedPolicy","hasConflict","lifecycleToDepType","runtime","dev","peer","handleConfigMerge","addVariantPolicyEntryToPolicy","dep","fromCurrentData","force","isHash","semver","satisfies","fromCurrentDataPolicy","depType","lifecycleType","name","currentAndOtherConfig","currentDep","otherDep","baseDep","currentVer","otherVer","baseVer","hasConfigForDep","depName","getDepIdAsPkgName","addSerializedDepToPolicy","lifecycle","join","depData","isEnv","currentId","versionOnOtherLane","Boolean","rawConfig","omit","VariantPolicy","fromConfigObject","entries"],"sources":["component-config-merger.ts"],"sourcesContent":["import { ComponentID } from '@teambit/component-id';\nimport semver from 'semver';\nimport { Logger } from '@teambit/logger';\nimport { BuilderAspect } from '@teambit/builder';\nimport { isHash } from '@teambit/component-version';\nimport {\n DependencyResolverAspect,\n SerializedDependency,\n VariantPolicy,\n VariantPolicyEntry,\n} from '@teambit/dependency-resolver';\nimport { Lane } from '@teambit/legacy/dist/scope/models';\nimport { EnvsAspect } from '@teambit/envs';\nimport { ExtensionDataEntry, ExtensionDataList } from '@teambit/legacy.extension-data';\nimport { MergeStrategy } from '@teambit/merging';\nimport { compact, omit, uniqBy } from 'lodash';\nimport { ConfigMergeResult } from './config-merge-result';\n\nexport type GenericConfigOrRemoved = Record<string, any> | '-';\n\ntype EnvData = { id: string; version?: string; config?: GenericConfigOrRemoved };\n\ntype SerializedDependencyWithPolicy = SerializedDependency & { policy?: string; packageName?: string };\n\nexport const conflictIndicator = 'CONFLICT::';\n\nexport type MergeStrategyResult = {\n id: string;\n mergedConfig?: GenericConfigOrRemoved;\n conflict?: Record<string, any>;\n};\ntype MergeStrategyParamsWithRemoved = {\n id: string;\n currentConfig: GenericConfigOrRemoved;\n otherConfig: GenericConfigOrRemoved;\n baseConfig?: GenericConfigOrRemoved;\n};\ntype MergeStrategyParams = {\n id: string;\n currentExt: ExtensionDataEntry;\n otherExt: ExtensionDataEntry;\n baseExt?: ExtensionDataEntry;\n};\n\n/**\n * perform 3-way merge of component configuration (aspects).\n * normally this is needed when merging one lane into another. the component may have different aspects config in each lane.\n * the baseAspects are the aspects of the component in the diversion point (the common ancestor of the two lanes).\n * the currentAspects are the aspects of the component in the current lane.\n * the otherAspects are the aspects of the component in the other lane. this is the lane we merge into the current lane.\n *\n * the basic merging strategy is a simple comparison between the aspect-configs, if they're different, we have a conflict.\n * we have two special cases:\n *\n * 1. dependency-resolver: we do a deeper check for the policy, we compare each dependency separately. also, we take\n * into account not only the config, but also the data. this is needed because some dependencies are automatically\n * added by Bit (from the import statements in the code) and they're not in the config. the final config has the deps\n * from both sources, the config and the data. The way we know to differentiate between them is by the \"force\" prop.\n * the config has always force: true.\n *\n * 2. envs: if we don't treat it specially, the user will need to make the change not only in the envs aspect, but also\n * in the deps-resolver (because the env is added as a devDependency) and also in the aspect itself (because\n * teambit.envs/env has only the id and not the version). to make it simpler, we ignore the envs in the deps-resolver\n * we ignore the individual aspect that is the env itself. we only show teambit.envs/env and we put the env id and\n * version. later, when the component is loaded, we split the id and the version and put them in the correct places.\n * see workspace.componentExtension / adjustEnvsOnConfigMerge for more details.\n */\nexport class ComponentConfigMerger {\n private currentEnv: EnvData;\n private otherEnv: EnvData;\n private baseEnv?: EnvData;\n private handledExtIds: string[] = [BuilderAspect.id]; // don't try to merge builder, it's possible that at one end it wasn't built yet, so it's empty\n private otherLaneIdsStr: string[];\n constructor(\n private compIdStr: string,\n private workspaceIds: ComponentID[],\n otherLane: Lane | undefined,\n private currentAspects: ExtensionDataList,\n private baseAspects: ExtensionDataList,\n private otherAspects: ExtensionDataList,\n private currentLabel: string,\n private otherLabel: string,\n private logger: Logger,\n private mergeStrategy: MergeStrategy\n ) {\n this.otherLaneIdsStr = otherLane?.toComponentIds().map((id) => id.toString()) || [];\n }\n\n merge(): ConfigMergeResult {\n this.logger.debug(`\\n************** start config-merger for ${this.compIdStr} **************`);\n this.logger.debug(`currentLabel: ${this.currentLabel}`);\n this.logger.debug(`otherLabel: ${this.otherLabel}`);\n this.populateEnvs();\n const results = this.currentAspects.map((currentExt) => {\n const id = currentExt.stringId;\n if (this.handledExtIds.includes(id)) return null;\n this.handledExtIds.push(id);\n const baseExt = this.baseAspects.findExtension(id, true);\n const otherExt = this.otherAspects.findExtension(id, true);\n if (otherExt) {\n // try to 3-way-merge\n return this.mergePerStrategy({ id, currentExt, otherExt, baseExt });\n }\n // exist in current but not in other\n if (baseExt) {\n // was removed on other\n if (this.mergeStrategy === 'theirs') {\n return { id, mergedConfig: '-' } as MergeStrategyResult;\n }\n if (this.mergeStrategy === 'ours') {\n return null;\n }\n return { id, conflict: { currentConfig: this.getConfig(currentExt), otherConfig: '-' } };\n }\n // exist in current but not in other and base, so it got created on current. nothing to do.\n return null;\n });\n const otherAspectsNotHandledResults = this.otherAspects.map((otherExt) => {\n let id = otherExt.stringId;\n if (this.handledExtIds.includes(id)) return null;\n this.handledExtIds.push(id);\n if (otherExt.extensionId && otherExt.extensionId.hasVersion()) {\n // avoid using the id from the other lane if it exits in the workspace. prefer the id from the workspace.\n const idFromWorkspace = this.getIdFromWorkspace(otherExt.extensionId.toStringWithoutVersion());\n if (idFromWorkspace) {\n const existingExt = this.currentAspects.findExtension(otherExt.extensionId.toStringWithoutVersion(), true);\n if (existingExt) return null; // the aspect is set currently, no need to add it again.\n id = idFromWorkspace._legacy.toString();\n }\n }\n const baseExt = this.baseAspects.findExtension(id, true);\n if (baseExt) {\n // was removed on current\n return { id, conflict: { currentConfig: '-', otherConfig: this.getConfig(otherExt) } };\n }\n // exist in other but not in current and base, so it got created on other.\n return { id, mergedConfig: this.getConfig(otherExt) };\n });\n const envResult = this.envStrategy();\n this.logger.debug(`*** end config-merger for ${this.compIdStr} ***\\n`);\n return new ConfigMergeResult(\n this.compIdStr,\n this.currentLabel,\n this.otherLabel,\n compact([...results, ...otherAspectsNotHandledResults, envResult])\n );\n }\n\n private populateEnvs() {\n // populate ids\n const getEnvId = (ext: ExtensionDataList) => {\n const envsAspect = ext.findCoreExtension(EnvsAspect.id);\n if (!envsAspect) throw new Error(`unable to find ${EnvsAspect.id} aspect for ${this.compIdStr}`);\n const env = envsAspect.config.env || envsAspect.data.id;\n if (!env)\n throw new Error(`unable to find env for ${this.compIdStr}, the config and data of ${EnvsAspect.id} are empty}`);\n return env;\n };\n const currentEnv = getEnvId(this.currentAspects);\n this.currentEnv = { id: currentEnv };\n const otherEnv = getEnvId(this.otherAspects);\n this.otherEnv = { id: otherEnv };\n const baseEnv = this.baseAspects ? getEnvId(this.baseAspects) : undefined;\n if (baseEnv) this.baseEnv = { id: baseEnv };\n\n // populate version\n const currentEnvAspect = this.currentAspects.findExtension(currentEnv, true);\n if (currentEnvAspect) {\n this.handledExtIds.push(currentEnvAspect.stringId);\n this.currentEnv.version = currentEnvAspect.extensionId?.version;\n this.currentEnv.config = this.getConfig(currentEnvAspect);\n }\n const otherEnvAspect = this.otherAspects.findExtension(otherEnv, true);\n if (otherEnvAspect) {\n this.handledExtIds.push(otherEnvAspect.stringId);\n this.otherEnv.version = otherEnvAspect.extensionId?.version;\n this.otherEnv.config = this.getConfig(otherEnvAspect);\n }\n if (this.baseEnv) {\n const baseEnvAspect = this.baseAspects.findExtension(baseEnv, true);\n if (baseEnvAspect) {\n this.baseEnv.version = baseEnvAspect.extensionId?.version;\n this.baseEnv.config = this.getConfig(baseEnvAspect);\n }\n }\n }\n\n private envStrategy(): MergeStrategyResult | null {\n const mergeStrategyParams: MergeStrategyParamsWithRemoved = {\n id: EnvsAspect.id,\n currentConfig: {\n env: this.currentEnv.version ? `${this.currentEnv.id}@${this.currentEnv.version}` : this.currentEnv.id,\n },\n otherConfig: { env: this.otherEnv.version ? `${this.otherEnv.id}@${this.otherEnv.version}` : this.otherEnv.id },\n };\n if (this.baseEnv) {\n mergeStrategyParams.baseConfig = {\n env: this.baseEnv?.version ? `${this.baseEnv.id}@${this.baseEnv.version}` : this.baseEnv?.id,\n };\n }\n if (this.currentEnv.id === this.otherEnv.id && this.currentEnv.version === this.otherEnv.version) {\n return null;\n }\n if (this.isIdInWorkspaceOrOtherLane(this.currentEnv.id, this.otherEnv.version)) {\n // the env currently used is part of the workspace, that's what the user needs. don't try to resolve anything.\n return null;\n }\n return this.basicConfigMerge(mergeStrategyParams);\n }\n\n private areConfigsEqual(configA: GenericConfigOrRemoved, configB: GenericConfigOrRemoved) {\n return JSON.stringify(configA) === JSON.stringify(configB);\n }\n\n private mergePerStrategy(mergeStrategyParams: MergeStrategyParams): MergeStrategyResult | null {\n const { id, currentExt, otherExt, baseExt } = mergeStrategyParams;\n const depResolverResult = this.depResolverStrategy(mergeStrategyParams);\n\n if (depResolverResult) {\n // if (depResolverResult.mergedConfig || depResolverResult?.conflict) console.log(\"\\n\\nDepResolverResult\", this.compIdStr, '\\n', JSON.stringify(depResolverResult, undefined, 2))\n return depResolverResult;\n }\n const currentConfig = this.getConfig(currentExt);\n const otherConfig = this.getConfig(otherExt);\n const baseConfig = baseExt ? this.getConfig(baseExt) : undefined;\n\n return this.basicConfigMerge({ id, currentConfig, otherConfig, baseConfig });\n }\n\n private basicConfigMerge(mergeStrategyParams: MergeStrategyParamsWithRemoved) {\n const { id, currentConfig, otherConfig, baseConfig } = mergeStrategyParams;\n if (this.areConfigsEqual(currentConfig, otherConfig)) {\n return null;\n }\n if (baseConfig && this.areConfigsEqual(baseConfig, otherConfig)) {\n // was changed on current\n return null;\n }\n if (baseConfig && this.areConfigsEqual(baseConfig, currentConfig)) {\n // was changed on other\n return { id, mergedConfig: otherConfig };\n }\n // either no baseConfig, or baseConfig is also different from both: other and local. that's a conflict.\n if (this.mergeStrategy === 'theirs') {\n return { id, mergedConfig: otherConfig };\n }\n if (this.mergeStrategy === 'ours') {\n return null;\n }\n return { id, conflict: { currentConfig, otherConfig, baseConfig } };\n }\n\n private depResolverStrategy(params: MergeStrategyParams): MergeStrategyResult | undefined {\n if (params.id !== DependencyResolverAspect.id) return undefined;\n this.logger.trace(`start depResolverStrategy for ${this.compIdStr}`);\n const { currentExt, otherExt, baseExt } = params;\n\n const currentConfig = this.getConfig(currentExt);\n const currentConfigPolicy = this.getPolicy(currentConfig);\n const otherConfig = this.getConfig(otherExt);\n const otherConfigPolicy = this.getPolicy(otherConfig);\n\n const baseConfig = baseExt ? this.getConfig(baseExt) : undefined;\n const baseConfigPolicy = baseConfig ? this.getPolicy(baseConfig) : undefined;\n\n this.logger.debug(`currentConfig, ${JSON.stringify(currentConfig, undefined, 2)}`);\n this.logger.debug(`otherConfig, ${JSON.stringify(otherConfig, undefined, 2)}`);\n this.logger.debug(`baseConfig, ${JSON.stringify(baseConfig, undefined, 2)}`);\n\n const getAllDeps = (ext: ExtensionDataList): SerializedDependencyWithPolicy[] => {\n const data = ext.findCoreExtension(DependencyResolverAspect.id)?.data.dependencies;\n if (!data) return [];\n const policy = ext.findCoreExtension(DependencyResolverAspect.id)?.data.policy || [];\n return data.map((d) => {\n const idWithoutVersion = d.__type === 'package' ? d.id : d.id.split('@')[0];\n const existingPolicy = policy.find((p) => p.dependencyId === idWithoutVersion);\n const getPolicyVer = () => {\n if (d.__type === 'package') return undefined; // for packages, the policy is already the version\n if (existingPolicy) return existingPolicy.value.version; // currently it's missing, will be implemented by @Gilad\n return d.version;\n // if (!semver.valid(d.version)) return d.version; // could be a hash\n // // default to `^` or ~ if starts with zero, until we save the policy from the workspace during tag/snap.\n // return d.version.startsWith('0.') ? `~${d.version}` : `^${d.version}`;\n };\n return {\n ...d,\n id: idWithoutVersion,\n policy: getPolicyVer(),\n };\n });\n };\n const getDataPolicy = (ext: ExtensionDataList): VariantPolicyEntry[] => {\n return ext.findCoreExtension(DependencyResolverAspect.id)?.data.policy || [];\n };\n\n const getAutoDeps = (ext: ExtensionDataList): SerializedDependencyWithPolicy[] => {\n const allDeps = getAllDeps(ext);\n return allDeps.filter((d) => d.source === 'auto');\n };\n\n const currentAutoData = getAutoDeps(this.currentAspects);\n const currentAllData = getAllDeps(this.currentAspects);\n const currentDataPolicy = getDataPolicy(this.currentAspects);\n const otherData = getAutoDeps(this.otherAspects);\n const currentAndOtherData = uniqBy(currentAutoData.concat(otherData), (d) => d.id);\n const currentAndOtherComponentsData = currentAndOtherData.filter((c) => c.__type === 'component');\n const baseData = getAutoDeps(this.baseAspects);\n\n const getCompIdStrByPkgNameFromData = (pkgName: string): string | undefined => {\n const found = currentAndOtherComponentsData.find((d) => d.packageName === pkgName);\n return found?.id;\n };\n\n const getFromCurrentDataByPackageName = (pkgName: string) => {\n return currentAllData.find((d) => {\n if (d.__type === 'package') return d.id === pkgName;\n return d.packageName === pkgName;\n });\n };\n\n const getFromCurrentDataPolicyByPackageName = (pkgName: string) => {\n return currentDataPolicy.find((d) => d.dependencyId === pkgName);\n };\n\n const mergedPolicy = {\n dependencies: [],\n devDependencies: [],\n peerDependencies: [],\n };\n const conflictedPolicy = {\n dependencies: [],\n devDependencies: [],\n peerDependencies: [],\n };\n let hasConflict = false;\n const lifecycleToDepType = {\n runtime: 'dependencies',\n dev: 'devDependencies',\n peer: 'peerDependencies',\n };\n const handleConfigMerge = () => {\n const addVariantPolicyEntryToPolicy = (dep: VariantPolicyEntry) => {\n const compIdStr = getCompIdStrByPkgNameFromData(dep.dependencyId);\n if (compIdStr && this.isIdInWorkspaceOrOtherLane(compIdStr, dep.value.version)) {\n // no need to add if the id exists in the workspace (regardless the version)\n return;\n }\n const fromCurrentData = getFromCurrentDataByPackageName(dep.dependencyId);\n if (fromCurrentData && !dep.force) {\n if (fromCurrentData.version === dep.value.version) return;\n if (\n !isHash(fromCurrentData.version) &&\n !isHash(dep.value.version) &&\n semver.satisfies(fromCurrentData.version, dep.value.version)\n ) {\n return;\n }\n }\n const fromCurrentDataPolicy = getFromCurrentDataPolicyByPackageName(dep.dependencyId);\n if (fromCurrentDataPolicy && fromCurrentDataPolicy.value.version === dep.value.version) {\n // -- updated comment --\n // not sure why this block is needed. this gets called also from this if: `if (baseConfig && this.areConfigsEqual(baseConfig, currentConfig)) {`\n // and in this case, it's possible that current/base has 5 deps, and other just added one and it has 6.\n // in which case, we do need to add all these 5 in additional to the new one. otherwise, only the new one appears in the final\n // merged object, and all the 5 deps are lost.\n // --- previous comment ---\n // that's a bug. if it's in the data.policy, it should be in data.dependencies.\n // return;\n }\n const depType = lifecycleToDepType[dep.lifecycleType];\n mergedPolicy[depType].push({\n name: dep.dependencyId,\n version: dep.value.version,\n force: dep.force,\n });\n };\n\n if (this.areConfigsEqual(currentConfig, otherConfig)) {\n return;\n }\n if (baseConfig && this.areConfigsEqual(baseConfig, otherConfig)) {\n // was changed on current\n return;\n }\n if (currentConfig === '-' || otherConfig === '-') {\n throw new Error('not implemented. Is it possible to have it as minus?');\n }\n if (baseConfig && this.areConfigsEqual(baseConfig, currentConfig)) {\n // was changed on other\n if (otherConfigPolicy.length) {\n otherConfigPolicy.forEach((dep) => {\n addVariantPolicyEntryToPolicy(dep);\n });\n }\n return;\n }\n\n // either no baseConfig, or baseConfig is also different from both: other and local. that's a conflict.\n if (!currentConfig.policy && !otherConfig.policy) return;\n const currentAndOtherConfig = uniqBy(currentConfigPolicy.concat(otherConfigPolicy), (d) => d.dependencyId);\n currentAndOtherConfig.forEach((dep) => {\n const depType = lifecycleToDepType[dep.lifecycleType];\n const currentDep = currentConfigPolicy.find((d) => d.dependencyId === dep.dependencyId);\n const otherDep = otherConfigPolicy.find((d) => d.dependencyId === dep.dependencyId);\n const baseDep = baseConfigPolicy?.find((d) => d.dependencyId === dep.dependencyId);\n\n if (!otherDep) {\n return;\n }\n if (!currentDep) {\n // only on other\n addVariantPolicyEntryToPolicy(otherDep);\n return;\n }\n const currentVer = currentDep.value.version;\n const otherVer = otherDep.value.version;\n if (currentVer === otherVer) {\n return;\n }\n const baseVer = baseDep?.value.version;\n if (baseVer && baseVer === otherVer) {\n return;\n }\n if (baseVer && baseVer === currentVer) {\n addVariantPolicyEntryToPolicy(otherDep);\n return;\n }\n const compIdStr = getCompIdStrByPkgNameFromData(dep.dependencyId);\n if (compIdStr && this.isIdInWorkspaceOrOtherLane(compIdStr, otherVer)) {\n // no need to add if the id exists in the workspace (regardless the version)\n return;\n }\n if (this.mergeStrategy === 'theirs') {\n addVariantPolicyEntryToPolicy(otherDep);\n return;\n }\n if (this.mergeStrategy === 'ours') {\n return;\n }\n\n hasConflict = true;\n conflictedPolicy[depType].push({\n name: currentDep.dependencyId,\n version: `${conflictIndicator}${currentVer}::${otherVer}::`,\n force: currentDep.force,\n });\n });\n };\n\n handleConfigMerge();\n\n const hasConfigForDep = (depType: string, depName: string) => mergedPolicy[depType].find((d) => d.name === depName);\n const getDepIdAsPkgName = (dep: SerializedDependencyWithPolicy) => {\n if (dep.__type !== 'component') {\n return dep.id;\n }\n // @ts-ignore\n return dep.packageName;\n };\n\n const addSerializedDepToPolicy = (dep: SerializedDependencyWithPolicy) => {\n const depType = lifecycleToDepType[dep.lifecycle];\n if (dep.__type === 'component' && this.isIdInWorkspaceOrOtherLane(dep.id, dep.version)) {\n return;\n }\n if (hasConfigForDep(depType, dep.id)) {\n return; // there is already config for it.\n }\n mergedPolicy[depType].push({\n name: getDepIdAsPkgName(dep),\n version: dep.policy || dep.version,\n force: false,\n });\n };\n\n this.logger.debug(\n `currentData, ${currentAllData.length}\\n${currentAllData\n .map((d) => `${d.__type} ${d.id} ${d.version}`)\n .join('\\n')}`\n );\n this.logger.debug(\n `otherData, ${otherData.length}\\n${otherData.map((d) => `${d.__type} ${d.id} ${d.version}`).join('\\n')}`\n );\n this.logger.debug(\n `baseData, ${baseData.length}\\n${baseData.map((d) => `${d.__type} ${d.id} ${d.version}`).join('\\n')}`\n );\n\n // eslint-disable-next-line complexity\n currentAndOtherData.forEach((depData) => {\n this.logger.trace(`depData.id, ${depData.id}`);\n if (this.isEnv(depData.id)) {\n // ignore the envs\n return;\n }\n const currentDep = currentAllData.find((d) => d.id === depData.id);\n const otherDep = otherData.find((d) => d.id === depData.id);\n const baseDep = baseData.find((d) => d.id === depData.id);\n\n this.logger.trace(`currentDep`, currentDep);\n this.logger.trace(`otherDep`, otherDep);\n this.logger.trace(`baseDep`, baseDep);\n if (!otherDep) {\n return;\n }\n if (!currentDep) {\n if (baseDep) {\n // exists in other and base, so it was removed from current\n return;\n }\n // only on other\n addSerializedDepToPolicy(otherDep);\n return;\n }\n\n if (currentDep.policy && otherDep.policy) {\n if (semver.satisfies(currentDep.version, otherDep.policy)) {\n return;\n }\n if (semver.satisfies(otherDep.version, currentDep.policy)) {\n return;\n }\n }\n\n const currentVer = currentDep.policy || currentDep.version;\n const otherVer = otherDep.policy || otherDep.version;\n if (currentVer === otherVer) {\n return;\n }\n const baseVer = baseDep?.policy || baseDep?.version;\n if (baseVer && baseVer === otherVer) {\n return;\n }\n const currentId = currentDep.id;\n if (currentDep.__type === 'component' && this.isIdInWorkspaceOrOtherLane(currentId, otherDep.version)) {\n // dependencies that exist in the workspace, should be ignored. they'll be resolved later to the version in the ws.\n return;\n }\n const depType = lifecycleToDepType[currentDep.lifecycle];\n if (hasConfigForDep(depType, currentDep.id)) {\n return; // there is already config for it.\n }\n if (baseVer && baseVer === currentVer) {\n addSerializedDepToPolicy(otherDep);\n return;\n }\n if (this.mergeStrategy === 'theirs') {\n addSerializedDepToPolicy(otherDep);\n return;\n }\n if (this.mergeStrategy === 'ours') {\n return;\n }\n hasConflict = true;\n conflictedPolicy[depType].push({\n name: getDepIdAsPkgName(currentDep),\n version: `${conflictIndicator}${currentVer}::${otherVer}::`,\n force: false,\n });\n });\n\n ['dependencies', 'devDependencies', 'peerDependencies'].forEach((depType) => {\n if (!mergedPolicy[depType].length) delete mergedPolicy[depType];\n if (!conflictedPolicy[depType].length) delete conflictedPolicy[depType];\n });\n\n const config = Object.keys(mergedPolicy).length ? { policy: mergedPolicy } : undefined;\n const conflict = hasConflict ? conflictedPolicy : undefined;\n\n this.logger.debug('final mergedConfig', config);\n this.logger.debug('final conflict', conflict);\n\n return { id: params.id, mergedConfig: config, conflict };\n }\n\n private isIdInWorkspaceOrOtherLane(id: string, versionOnOtherLane?: string): boolean {\n return Boolean(this.getIdFromWorkspace(id)) || this.otherLaneIdsStr.includes(`${id}@${versionOnOtherLane}`);\n }\n\n private getIdFromWorkspace(id: string): ComponentID | undefined {\n return this.workspaceIds.find((c) => c.toStringWithoutVersion() === id);\n }\n\n private isEnv(id: string) {\n return id === this.currentEnv.id || id === this.otherEnv.id;\n }\n\n private getConfig(ext: ExtensionDataEntry): GenericConfigOrRemoved {\n if (ext.rawConfig === '-') return ext.rawConfig;\n return omit(ext.rawConfig, ['__specific']);\n }\n\n private getPolicy(config): VariantPolicyEntry[] {\n if (!config.policy) return [];\n return VariantPolicy.fromConfigObject(config.policy).entries;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_semver","data","_interopRequireDefault","require","_builder","_componentVersion","_dependencyResolver","_envs","_lodash","_configMergeResult","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","conflictIndicator","exports","ComponentConfigMerger","constructor","compIdStr","workspaceIds","otherLane","currentAspects","baseAspects","otherAspects","currentLabel","otherLabel","logger","mergeStrategy","BuilderAspect","id","otherLaneIdsStr","toComponentIds","map","toString","merge","debug","populateEnvs","results","currentExt","stringId","handledExtIds","includes","baseExt","findExtension","otherExt","mergePerStrategy","mergedConfig","conflict","currentConfig","getConfig","otherConfig","otherAspectsNotHandledResults","extensionId","hasVersion","idFromWorkspace","getIdFromWorkspace","toStringWithoutVersion","existingExt","_legacy","envResult","envStrategy","ConfigMergeResult","compact","getEnvId","ext","envsAspect","findCoreExtension","EnvsAspect","Error","env","config","currentEnv","otherEnv","baseEnv","undefined","currentEnvAspect","version","otherEnvAspect","baseEnvAspect","mergeStrategyParams","baseConfig","isIdInWorkspaceOrOtherLane","basicConfigMerge","areConfigsEqual","configA","configB","JSON","stringify","depResolverResult","depResolverStrategy","params","DependencyResolverAspect","trace","currentConfigPolicy","getPolicy","otherConfigPolicy","baseConfigPolicy","getAllDeps","dependencies","policy","d","idWithoutVersion","__type","split","existingPolicy","find","p","dependencyId","getPolicyVer","getDataPolicy","getAutoDeps","allDeps","source","currentAutoData","currentAllData","currentDataPolicy","otherData","currentAndOtherData","uniqBy","concat","currentAndOtherComponentsData","c","baseData","getCompIdStrByPkgNameFromData","pkgName","found","packageName","getFromCurrentDataByPackageName","getFromCurrentDataPolicyByPackageName","mergedPolicy","devDependencies","peerDependencies","conflictedPolicy","hasConflict","lifecycleToDepType","runtime","dev","peer","handleConfigMerge","addVariantPolicyEntryToPolicy","dep","fromCurrentData","force","isHash","semver","satisfies","fromCurrentDataPolicy","depType","lifecycleType","name","currentAndOtherConfig","currentDep","otherDep","baseDep","currentVer","otherVer","baseVer","hasConfigForDep","depName","getDepIdAsPkgName","addSerializedDepToPolicy","lifecycle","join","depData","isEnv","currentId","versionOnOtherLane","Boolean","rawConfig","omit","VariantPolicy","fromConfigObject","entries"],"sources":["component-config-merger.ts"],"sourcesContent":["import { ComponentID } from '@teambit/component-id';\nimport semver from 'semver';\nimport { Logger } from '@teambit/logger';\nimport { BuilderAspect } from '@teambit/builder';\nimport { isHash } from '@teambit/component-version';\nimport {\n DependencyResolverAspect,\n SerializedDependency,\n VariantPolicy,\n VariantPolicyEntry,\n} from '@teambit/dependency-resolver';\nimport { Lane } from '@teambit/scope.objects';\nimport { EnvsAspect } from '@teambit/envs';\nimport { ExtensionDataEntry, ExtensionDataList } from '@teambit/legacy.extension-data';\nimport { MergeStrategy } from '@teambit/merging';\nimport { compact, omit, uniqBy } from 'lodash';\nimport { ConfigMergeResult } from './config-merge-result';\n\nexport type GenericConfigOrRemoved = Record<string, any> | '-';\n\ntype EnvData = { id: string; version?: string; config?: GenericConfigOrRemoved };\n\ntype SerializedDependencyWithPolicy = SerializedDependency & { policy?: string; packageName?: string };\n\nexport const conflictIndicator = 'CONFLICT::';\n\nexport type MergeStrategyResult = {\n id: string;\n mergedConfig?: GenericConfigOrRemoved;\n conflict?: Record<string, any>;\n};\ntype MergeStrategyParamsWithRemoved = {\n id: string;\n currentConfig: GenericConfigOrRemoved;\n otherConfig: GenericConfigOrRemoved;\n baseConfig?: GenericConfigOrRemoved;\n};\ntype MergeStrategyParams = {\n id: string;\n currentExt: ExtensionDataEntry;\n otherExt: ExtensionDataEntry;\n baseExt?: ExtensionDataEntry;\n};\n\n/**\n * perform 3-way merge of component configuration (aspects).\n * normally this is needed when merging one lane into another. the component may have different aspects config in each lane.\n * the baseAspects are the aspects of the component in the diversion point (the common ancestor of the two lanes).\n * the currentAspects are the aspects of the component in the current lane.\n * the otherAspects are the aspects of the component in the other lane. this is the lane we merge into the current lane.\n *\n * the basic merging strategy is a simple comparison between the aspect-configs, if they're different, we have a conflict.\n * we have two special cases:\n *\n * 1. dependency-resolver: we do a deeper check for the policy, we compare each dependency separately. also, we take\n * into account not only the config, but also the data. this is needed because some dependencies are automatically\n * added by Bit (from the import statements in the code) and they're not in the config. the final config has the deps\n * from both sources, the config and the data. The way we know to differentiate between them is by the \"force\" prop.\n * the config has always force: true.\n *\n * 2. envs: if we don't treat it specially, the user will need to make the change not only in the envs aspect, but also\n * in the deps-resolver (because the env is added as a devDependency) and also in the aspect itself (because\n * teambit.envs/env has only the id and not the version). to make it simpler, we ignore the envs in the deps-resolver\n * we ignore the individual aspect that is the env itself. we only show teambit.envs/env and we put the env id and\n * version. later, when the component is loaded, we split the id and the version and put them in the correct places.\n * see workspace.componentExtension / adjustEnvsOnConfigMerge for more details.\n */\nexport class ComponentConfigMerger {\n private currentEnv: EnvData;\n private otherEnv: EnvData;\n private baseEnv?: EnvData;\n private handledExtIds: string[] = [BuilderAspect.id]; // don't try to merge builder, it's possible that at one end it wasn't built yet, so it's empty\n private otherLaneIdsStr: string[];\n constructor(\n private compIdStr: string,\n private workspaceIds: ComponentID[],\n otherLane: Lane | undefined,\n private currentAspects: ExtensionDataList,\n private baseAspects: ExtensionDataList,\n private otherAspects: ExtensionDataList,\n private currentLabel: string,\n private otherLabel: string,\n private logger: Logger,\n private mergeStrategy: MergeStrategy\n ) {\n this.otherLaneIdsStr = otherLane?.toComponentIds().map((id) => id.toString()) || [];\n }\n\n merge(): ConfigMergeResult {\n this.logger.debug(`\\n************** start config-merger for ${this.compIdStr} **************`);\n this.logger.debug(`currentLabel: ${this.currentLabel}`);\n this.logger.debug(`otherLabel: ${this.otherLabel}`);\n this.populateEnvs();\n const results = this.currentAspects.map((currentExt) => {\n const id = currentExt.stringId;\n if (this.handledExtIds.includes(id)) return null;\n this.handledExtIds.push(id);\n const baseExt = this.baseAspects.findExtension(id, true);\n const otherExt = this.otherAspects.findExtension(id, true);\n if (otherExt) {\n // try to 3-way-merge\n return this.mergePerStrategy({ id, currentExt, otherExt, baseExt });\n }\n // exist in current but not in other\n if (baseExt) {\n // was removed on other\n if (this.mergeStrategy === 'theirs') {\n return { id, mergedConfig: '-' } as MergeStrategyResult;\n }\n if (this.mergeStrategy === 'ours') {\n return null;\n }\n return { id, conflict: { currentConfig: this.getConfig(currentExt), otherConfig: '-' } };\n }\n // exist in current but not in other and base, so it got created on current. nothing to do.\n return null;\n });\n const otherAspectsNotHandledResults = this.otherAspects.map((otherExt) => {\n let id = otherExt.stringId;\n if (this.handledExtIds.includes(id)) return null;\n this.handledExtIds.push(id);\n if (otherExt.extensionId && otherExt.extensionId.hasVersion()) {\n // avoid using the id from the other lane if it exits in the workspace. prefer the id from the workspace.\n const idFromWorkspace = this.getIdFromWorkspace(otherExt.extensionId.toStringWithoutVersion());\n if (idFromWorkspace) {\n const existingExt = this.currentAspects.findExtension(otherExt.extensionId.toStringWithoutVersion(), true);\n if (existingExt) return null; // the aspect is set currently, no need to add it again.\n id = idFromWorkspace._legacy.toString();\n }\n }\n const baseExt = this.baseAspects.findExtension(id, true);\n if (baseExt) {\n // was removed on current\n return { id, conflict: { currentConfig: '-', otherConfig: this.getConfig(otherExt) } };\n }\n // exist in other but not in current and base, so it got created on other.\n return { id, mergedConfig: this.getConfig(otherExt) };\n });\n const envResult = this.envStrategy();\n this.logger.debug(`*** end config-merger for ${this.compIdStr} ***\\n`);\n return new ConfigMergeResult(\n this.compIdStr,\n this.currentLabel,\n this.otherLabel,\n compact([...results, ...otherAspectsNotHandledResults, envResult])\n );\n }\n\n private populateEnvs() {\n // populate ids\n const getEnvId = (ext: ExtensionDataList) => {\n const envsAspect = ext.findCoreExtension(EnvsAspect.id);\n if (!envsAspect) throw new Error(`unable to find ${EnvsAspect.id} aspect for ${this.compIdStr}`);\n const env = envsAspect.config.env || envsAspect.data.id;\n if (!env)\n throw new Error(`unable to find env for ${this.compIdStr}, the config and data of ${EnvsAspect.id} are empty}`);\n return env;\n };\n const currentEnv = getEnvId(this.currentAspects);\n this.currentEnv = { id: currentEnv };\n const otherEnv = getEnvId(this.otherAspects);\n this.otherEnv = { id: otherEnv };\n const baseEnv = this.baseAspects ? getEnvId(this.baseAspects) : undefined;\n if (baseEnv) this.baseEnv = { id: baseEnv };\n\n // populate version\n const currentEnvAspect = this.currentAspects.findExtension(currentEnv, true);\n if (currentEnvAspect) {\n this.handledExtIds.push(currentEnvAspect.stringId);\n this.currentEnv.version = currentEnvAspect.extensionId?.version;\n this.currentEnv.config = this.getConfig(currentEnvAspect);\n }\n const otherEnvAspect = this.otherAspects.findExtension(otherEnv, true);\n if (otherEnvAspect) {\n this.handledExtIds.push(otherEnvAspect.stringId);\n this.otherEnv.version = otherEnvAspect.extensionId?.version;\n this.otherEnv.config = this.getConfig(otherEnvAspect);\n }\n if (this.baseEnv) {\n const baseEnvAspect = this.baseAspects.findExtension(baseEnv, true);\n if (baseEnvAspect) {\n this.baseEnv.version = baseEnvAspect.extensionId?.version;\n this.baseEnv.config = this.getConfig(baseEnvAspect);\n }\n }\n }\n\n private envStrategy(): MergeStrategyResult | null {\n const mergeStrategyParams: MergeStrategyParamsWithRemoved = {\n id: EnvsAspect.id,\n currentConfig: {\n env: this.currentEnv.version ? `${this.currentEnv.id}@${this.currentEnv.version}` : this.currentEnv.id,\n },\n otherConfig: { env: this.otherEnv.version ? `${this.otherEnv.id}@${this.otherEnv.version}` : this.otherEnv.id },\n };\n if (this.baseEnv) {\n mergeStrategyParams.baseConfig = {\n env: this.baseEnv?.version ? `${this.baseEnv.id}@${this.baseEnv.version}` : this.baseEnv?.id,\n };\n }\n if (this.currentEnv.id === this.otherEnv.id && this.currentEnv.version === this.otherEnv.version) {\n return null;\n }\n if (this.isIdInWorkspaceOrOtherLane(this.currentEnv.id, this.otherEnv.version)) {\n // the env currently used is part of the workspace, that's what the user needs. don't try to resolve anything.\n return null;\n }\n return this.basicConfigMerge(mergeStrategyParams);\n }\n\n private areConfigsEqual(configA: GenericConfigOrRemoved, configB: GenericConfigOrRemoved) {\n return JSON.stringify(configA) === JSON.stringify(configB);\n }\n\n private mergePerStrategy(mergeStrategyParams: MergeStrategyParams): MergeStrategyResult | null {\n const { id, currentExt, otherExt, baseExt } = mergeStrategyParams;\n const depResolverResult = this.depResolverStrategy(mergeStrategyParams);\n\n if (depResolverResult) {\n // if (depResolverResult.mergedConfig || depResolverResult?.conflict) console.log(\"\\n\\nDepResolverResult\", this.compIdStr, '\\n', JSON.stringify(depResolverResult, undefined, 2))\n return depResolverResult;\n }\n const currentConfig = this.getConfig(currentExt);\n const otherConfig = this.getConfig(otherExt);\n const baseConfig = baseExt ? this.getConfig(baseExt) : undefined;\n\n return this.basicConfigMerge({ id, currentConfig, otherConfig, baseConfig });\n }\n\n private basicConfigMerge(mergeStrategyParams: MergeStrategyParamsWithRemoved) {\n const { id, currentConfig, otherConfig, baseConfig } = mergeStrategyParams;\n if (this.areConfigsEqual(currentConfig, otherConfig)) {\n return null;\n }\n if (baseConfig && this.areConfigsEqual(baseConfig, otherConfig)) {\n // was changed on current\n return null;\n }\n if (baseConfig && this.areConfigsEqual(baseConfig, currentConfig)) {\n // was changed on other\n return { id, mergedConfig: otherConfig };\n }\n // either no baseConfig, or baseConfig is also different from both: other and local. that's a conflict.\n if (this.mergeStrategy === 'theirs') {\n return { id, mergedConfig: otherConfig };\n }\n if (this.mergeStrategy === 'ours') {\n return null;\n }\n return { id, conflict: { currentConfig, otherConfig, baseConfig } };\n }\n\n private depResolverStrategy(params: MergeStrategyParams): MergeStrategyResult | undefined {\n if (params.id !== DependencyResolverAspect.id) return undefined;\n this.logger.trace(`start depResolverStrategy for ${this.compIdStr}`);\n const { currentExt, otherExt, baseExt } = params;\n\n const currentConfig = this.getConfig(currentExt);\n const currentConfigPolicy = this.getPolicy(currentConfig);\n const otherConfig = this.getConfig(otherExt);\n const otherConfigPolicy = this.getPolicy(otherConfig);\n\n const baseConfig = baseExt ? this.getConfig(baseExt) : undefined;\n const baseConfigPolicy = baseConfig ? this.getPolicy(baseConfig) : undefined;\n\n this.logger.debug(`currentConfig, ${JSON.stringify(currentConfig, undefined, 2)}`);\n this.logger.debug(`otherConfig, ${JSON.stringify(otherConfig, undefined, 2)}`);\n this.logger.debug(`baseConfig, ${JSON.stringify(baseConfig, undefined, 2)}`);\n\n const getAllDeps = (ext: ExtensionDataList): SerializedDependencyWithPolicy[] => {\n const data = ext.findCoreExtension(DependencyResolverAspect.id)?.data.dependencies;\n if (!data) return [];\n const policy = ext.findCoreExtension(DependencyResolverAspect.id)?.data.policy || [];\n return data.map((d) => {\n const idWithoutVersion = d.__type === 'package' ? d.id : d.id.split('@')[0];\n const existingPolicy = policy.find((p) => p.dependencyId === idWithoutVersion);\n const getPolicyVer = () => {\n if (d.__type === 'package') return undefined; // for packages, the policy is already the version\n if (existingPolicy) return existingPolicy.value.version; // currently it's missing, will be implemented by @Gilad\n return d.version;\n // if (!semver.valid(d.version)) return d.version; // could be a hash\n // // default to `^` or ~ if starts with zero, until we save the policy from the workspace during tag/snap.\n // return d.version.startsWith('0.') ? `~${d.version}` : `^${d.version}`;\n };\n return {\n ...d,\n id: idWithoutVersion,\n policy: getPolicyVer(),\n };\n });\n };\n const getDataPolicy = (ext: ExtensionDataList): VariantPolicyEntry[] => {\n return ext.findCoreExtension(DependencyResolverAspect.id)?.data.policy || [];\n };\n\n const getAutoDeps = (ext: ExtensionDataList): SerializedDependencyWithPolicy[] => {\n const allDeps = getAllDeps(ext);\n return allDeps.filter((d) => d.source === 'auto');\n };\n\n const currentAutoData = getAutoDeps(this.currentAspects);\n const currentAllData = getAllDeps(this.currentAspects);\n const currentDataPolicy = getDataPolicy(this.currentAspects);\n const otherData = getAutoDeps(this.otherAspects);\n const currentAndOtherData = uniqBy(currentAutoData.concat(otherData), (d) => d.id);\n const currentAndOtherComponentsData = currentAndOtherData.filter((c) => c.__type === 'component');\n const baseData = getAutoDeps(this.baseAspects);\n\n const getCompIdStrByPkgNameFromData = (pkgName: string): string | undefined => {\n const found = currentAndOtherComponentsData.find((d) => d.packageName === pkgName);\n return found?.id;\n };\n\n const getFromCurrentDataByPackageName = (pkgName: string) => {\n return currentAllData.find((d) => {\n if (d.__type === 'package') return d.id === pkgName;\n return d.packageName === pkgName;\n });\n };\n\n const getFromCurrentDataPolicyByPackageName = (pkgName: string) => {\n return currentDataPolicy.find((d) => d.dependencyId === pkgName);\n };\n\n const mergedPolicy = {\n dependencies: [],\n devDependencies: [],\n peerDependencies: [],\n };\n const conflictedPolicy = {\n dependencies: [],\n devDependencies: [],\n peerDependencies: [],\n };\n let hasConflict = false;\n const lifecycleToDepType = {\n runtime: 'dependencies',\n dev: 'devDependencies',\n peer: 'peerDependencies',\n };\n const handleConfigMerge = () => {\n const addVariantPolicyEntryToPolicy = (dep: VariantPolicyEntry) => {\n const compIdStr = getCompIdStrByPkgNameFromData(dep.dependencyId);\n if (compIdStr && this.isIdInWorkspaceOrOtherLane(compIdStr, dep.value.version)) {\n // no need to add if the id exists in the workspace (regardless the version)\n return;\n }\n const fromCurrentData = getFromCurrentDataByPackageName(dep.dependencyId);\n if (fromCurrentData && !dep.force) {\n if (fromCurrentData.version === dep.value.version) return;\n if (\n !isHash(fromCurrentData.version) &&\n !isHash(dep.value.version) &&\n semver.satisfies(fromCurrentData.version, dep.value.version)\n ) {\n return;\n }\n }\n const fromCurrentDataPolicy = getFromCurrentDataPolicyByPackageName(dep.dependencyId);\n if (fromCurrentDataPolicy && fromCurrentDataPolicy.value.version === dep.value.version) {\n // -- updated comment --\n // not sure why this block is needed. this gets called also from this if: `if (baseConfig && this.areConfigsEqual(baseConfig, currentConfig)) {`\n // and in this case, it's possible that current/base has 5 deps, and other just added one and it has 6.\n // in which case, we do need to add all these 5 in additional to the new one. otherwise, only the new one appears in the final\n // merged object, and all the 5 deps are lost.\n // --- previous comment ---\n // that's a bug. if it's in the data.policy, it should be in data.dependencies.\n // return;\n }\n const depType = lifecycleToDepType[dep.lifecycleType];\n mergedPolicy[depType].push({\n name: dep.dependencyId,\n version: dep.value.version,\n force: dep.force,\n });\n };\n\n if (this.areConfigsEqual(currentConfig, otherConfig)) {\n return;\n }\n if (baseConfig && this.areConfigsEqual(baseConfig, otherConfig)) {\n // was changed on current\n return;\n }\n if (currentConfig === '-' || otherConfig === '-') {\n throw new Error('not implemented. Is it possible to have it as minus?');\n }\n if (baseConfig && this.areConfigsEqual(baseConfig, currentConfig)) {\n // was changed on other\n if (otherConfigPolicy.length) {\n otherConfigPolicy.forEach((dep) => {\n addVariantPolicyEntryToPolicy(dep);\n });\n }\n return;\n }\n\n // either no baseConfig, or baseConfig is also different from both: other and local. that's a conflict.\n if (!currentConfig.policy && !otherConfig.policy) return;\n const currentAndOtherConfig = uniqBy(currentConfigPolicy.concat(otherConfigPolicy), (d) => d.dependencyId);\n currentAndOtherConfig.forEach((dep) => {\n const depType = lifecycleToDepType[dep.lifecycleType];\n const currentDep = currentConfigPolicy.find((d) => d.dependencyId === dep.dependencyId);\n const otherDep = otherConfigPolicy.find((d) => d.dependencyId === dep.dependencyId);\n const baseDep = baseConfigPolicy?.find((d) => d.dependencyId === dep.dependencyId);\n\n if (!otherDep) {\n return;\n }\n if (!currentDep) {\n // only on other\n addVariantPolicyEntryToPolicy(otherDep);\n return;\n }\n const currentVer = currentDep.value.version;\n const otherVer = otherDep.value.version;\n if (currentVer === otherVer) {\n return;\n }\n const baseVer = baseDep?.value.version;\n if (baseVer && baseVer === otherVer) {\n return;\n }\n if (baseVer && baseVer === currentVer) {\n addVariantPolicyEntryToPolicy(otherDep);\n return;\n }\n const compIdStr = getCompIdStrByPkgNameFromData(dep.dependencyId);\n if (compIdStr && this.isIdInWorkspaceOrOtherLane(compIdStr, otherVer)) {\n // no need to add if the id exists in the workspace (regardless the version)\n return;\n }\n if (this.mergeStrategy === 'theirs') {\n addVariantPolicyEntryToPolicy(otherDep);\n return;\n }\n if (this.mergeStrategy === 'ours') {\n return;\n }\n\n hasConflict = true;\n conflictedPolicy[depType].push({\n name: currentDep.dependencyId,\n version: `${conflictIndicator}${currentVer}::${otherVer}::`,\n force: currentDep.force,\n });\n });\n };\n\n handleConfigMerge();\n\n const hasConfigForDep = (depType: string, depName: string) => mergedPolicy[depType].find((d) => d.name === depName);\n const getDepIdAsPkgName = (dep: SerializedDependencyWithPolicy) => {\n if (dep.__type !== 'component') {\n return dep.id;\n }\n // @ts-ignore\n return dep.packageName;\n };\n\n const addSerializedDepToPolicy = (dep: SerializedDependencyWithPolicy) => {\n const depType = lifecycleToDepType[dep.lifecycle];\n if (dep.__type === 'component' && this.isIdInWorkspaceOrOtherLane(dep.id, dep.version)) {\n return;\n }\n if (hasConfigForDep(depType, dep.id)) {\n return; // there is already config for it.\n }\n mergedPolicy[depType].push({\n name: getDepIdAsPkgName(dep),\n version: dep.policy || dep.version,\n force: false,\n });\n };\n\n this.logger.debug(\n `currentData, ${currentAllData.length}\\n${currentAllData\n .map((d) => `${d.__type} ${d.id} ${d.version}`)\n .join('\\n')}`\n );\n this.logger.debug(\n `otherData, ${otherData.length}\\n${otherData.map((d) => `${d.__type} ${d.id} ${d.version}`).join('\\n')}`\n );\n this.logger.debug(\n `baseData, ${baseData.length}\\n${baseData.map((d) => `${d.__type} ${d.id} ${d.version}`).join('\\n')}`\n );\n\n // eslint-disable-next-line complexity\n currentAndOtherData.forEach((depData) => {\n this.logger.trace(`depData.id, ${depData.id}`);\n if (this.isEnv(depData.id)) {\n // ignore the envs\n return;\n }\n const currentDep = currentAllData.find((d) => d.id === depData.id);\n const otherDep = otherData.find((d) => d.id === depData.id);\n const baseDep = baseData.find((d) => d.id === depData.id);\n\n this.logger.trace(`currentDep`, currentDep);\n this.logger.trace(`otherDep`, otherDep);\n this.logger.trace(`baseDep`, baseDep);\n if (!otherDep) {\n return;\n }\n if (!currentDep) {\n if (baseDep) {\n // exists in other and base, so it was removed from current\n return;\n }\n // only on other\n addSerializedDepToPolicy(otherDep);\n return;\n }\n\n if (currentDep.policy && otherDep.policy) {\n if (semver.satisfies(currentDep.version, otherDep.policy)) {\n return;\n }\n if (semver.satisfies(otherDep.version, currentDep.policy)) {\n return;\n }\n }\n\n const currentVer = currentDep.policy || currentDep.version;\n const otherVer = otherDep.policy || otherDep.version;\n if (currentVer === otherVer) {\n return;\n }\n const baseVer = baseDep?.policy || baseDep?.version;\n if (baseVer && baseVer === otherVer) {\n return;\n }\n const currentId = currentDep.id;\n if (currentDep.__type === 'component' && this.isIdInWorkspaceOrOtherLane(currentId, otherDep.version)) {\n // dependencies that exist in the workspace, should be ignored. they'll be resolved later to the version in the ws.\n return;\n }\n const depType = lifecycleToDepType[currentDep.lifecycle];\n if (hasConfigForDep(depType, currentDep.id)) {\n return; // there is already config for it.\n }\n if (baseVer && baseVer === currentVer) {\n addSerializedDepToPolicy(otherDep);\n return;\n }\n if (this.mergeStrategy === 'theirs') {\n addSerializedDepToPolicy(otherDep);\n return;\n }\n if (this.mergeStrategy === 'ours') {\n return;\n }\n hasConflict = true;\n conflictedPolicy[depType].push({\n name: getDepIdAsPkgName(currentDep),\n version: `${conflictIndicator}${currentVer}::${otherVer}::`,\n force: false,\n });\n });\n\n ['dependencies', 'devDependencies', 'peerDependencies'].forEach((depType) => {\n if (!mergedPolicy[depType].length) delete mergedPolicy[depType];\n if (!conflictedPolicy[depType].length) delete conflictedPolicy[depType];\n });\n\n const config = Object.keys(mergedPolicy).length ? { policy: mergedPolicy } : undefined;\n const conflict = hasConflict ? conflictedPolicy : undefined;\n\n this.logger.debug('final mergedConfig', config);\n this.logger.debug('final conflict', conflict);\n\n return { id: params.id, mergedConfig: config, conflict };\n }\n\n private isIdInWorkspaceOrOtherLane(id: string, versionOnOtherLane?: string): boolean {\n return Boolean(this.getIdFromWorkspace(id)) || this.otherLaneIdsStr.includes(`${id}@${versionOnOtherLane}`);\n }\n\n private getIdFromWorkspace(id: string): ComponentID | undefined {\n return this.workspaceIds.find((c) => c.toStringWithoutVersion() === id);\n }\n\n private isEnv(id: string) {\n return id === this.currentEnv.id || id === this.otherEnv.id;\n }\n\n private getConfig(ext: ExtensionDataEntry): GenericConfigOrRemoved {\n if (ext.rawConfig === '-') return ext.rawConfig;\n return omit(ext.rawConfig, ['__specific']);\n }\n\n private getPolicy(config): VariantPolicyEntry[] {\n if (!config.policy) return [];\n return VariantPolicy.fromConfigObject(config.policy).entries;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DependencyResolverMain, WorkspacePolicyConfigKeysNames } from '@teambit/dependency-resolver';
|
|
2
2
|
import { Workspace } from '@teambit/workspace';
|
|
3
3
|
import { Logger, LoggerMain } from '@teambit/logger';
|
|
4
|
-
import ConsumerComponent from '@teambit/legacy
|
|
4
|
+
import { ConsumerComponent } from '@teambit/legacy.consumer-component';
|
|
5
5
|
import { ConfigMain } from '@teambit/config';
|
|
6
6
|
import { MergeStrategy } from '@teambit/merging';
|
|
7
7
|
import { ConfigMergeResult } from './config-merge-result';
|
|
@@ -67,9 +67,9 @@ function _logger() {
|
|
|
67
67
|
};
|
|
68
68
|
return data;
|
|
69
69
|
}
|
|
70
|
-
function
|
|
71
|
-
const data = require("@teambit/legacy
|
|
72
|
-
|
|
70
|
+
function _legacy() {
|
|
71
|
+
const data = require("@teambit/legacy.constants");
|
|
72
|
+
_legacy = function () {
|
|
73
73
|
return data;
|
|
74
74
|
};
|
|
75
75
|
return data;
|
|
@@ -228,7 +228,7 @@ see the conflicts below and edit your workspace.jsonc as you see fit.`;
|
|
|
228
228
|
const mergedConfig = configMerge.getDepsResolverResult()?.mergedConfig;
|
|
229
229
|
if (!mergedConfig || mergedConfig === '-') return;
|
|
230
230
|
const mergedConfigPolicy = mergedConfig.policy || {};
|
|
231
|
-
|
|
231
|
+
_legacy().DEPENDENCIES_FIELDS.forEach(depField => {
|
|
232
232
|
mergedConfigPolicy[depField]?.forEach(pkg => nonConflictDeps.push(pkg, configMerge.compIdStr));
|
|
233
233
|
});
|
|
234
234
|
});
|
|
@@ -238,7 +238,7 @@ see the conflicts below and edit your workspace.jsonc as you see fit.`;
|
|
|
238
238
|
allConfigMerge.forEach(configMerge => {
|
|
239
239
|
const mergedConfigConflict = configMerge.getDepsResolverResult()?.conflict;
|
|
240
240
|
if (!mergedConfigConflict) return;
|
|
241
|
-
|
|
241
|
+
_legacy().DEPENDENCIES_FIELDS.forEach(depField => {
|
|
242
242
|
mergedConfigConflict[depField]?.forEach(pkg => conflictDeps.push(pkg, configMerge.compIdStr));
|
|
243
243
|
});
|
|
244
244
|
});
|
|
@@ -261,7 +261,7 @@ see the conflicts below and edit your workspace.jsonc as you see fit.`;
|
|
|
261
261
|
// calculate the workspace.json updates
|
|
262
262
|
const workspaceJsonUpdates = {};
|
|
263
263
|
notConflictedPackages.forEach(pkgName => {
|
|
264
|
-
|
|
264
|
+
_legacy().DEPENDENCIES_FIELDS.forEach(depField => {
|
|
265
265
|
if (!policy[depField]?.[pkgName]) return; // doesn't exists in the workspace.json
|
|
266
266
|
const currentVer = policy[depField][pkgName];
|
|
267
267
|
if (!nonConflictDeps.hasSameVersions(pkgName)) {
|
|
@@ -320,7 +320,7 @@ see the conflicts below and edit your workspace.jsonc as you see fit.`;
|
|
|
320
320
|
if (conflictPackagesToRemoveFromConfigMerge.length) {
|
|
321
321
|
allResults.forEach(result => {
|
|
322
322
|
if (result?.conflict) {
|
|
323
|
-
|
|
323
|
+
_legacy().DEPENDENCIES_FIELDS.forEach(depField => {
|
|
324
324
|
if (!result.conflict?.[depField]) return;
|
|
325
325
|
result.conflict[depField] = result.conflict?.[depField].filter(dep => !conflictPackagesToRemoveFromConfigMerge.includes(dep.name));
|
|
326
326
|
if (!result.conflict[depField].length) delete result.conflict[depField];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_semver","data","_interopRequireDefault","require","_lodash","_dependencyResolver","_componentPackageVersion","_tempy","_fsExtra","_cli","_workspace","_logger","_constants","_bitError","_config","_merging","_configMergeResult","_configMerger","_aggregatedDeps","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","WS_DEPS_FIELDS","ConfigMergerMain","constructor","workspace","logger","config","depsResolver","generateConfigMergeConflictFileForAll","allConfigMerge","configMergeFile","getConflictMergeFile","forEach","configMerge","conflict","generateMergeConflictFile","addConflict","compIdStr","hasConflict","write","writeWorkspaceJsoncWithConflictsGracefully","workspaceDepsConflicts","writeWorkspaceJsoncWithConflicts","undefined","err","error","errTitle","message","conflictsStr","map","depField","name","version","currentVal","otherVal","parseVersionLineWithConflict","flat","join","BitError","wsConfig","workspaceConfig","Error","wsJsoncPath","path","wsJsoncOriginalContent","fs","readFile","wsJsoncContent","originalDep","includes","replace","baseFilePath","tempy","otherFilePath","mergeFilesParams","filePath","currentFile","label","baseFile","otherFile","mergeResult","mergeFiles","conflictFile","debug","backupConfigFile","writeFile","updateWorkspaceJsoncWithDepsIfNeeded","allResults","c","getDepsResolverResult","nonConflictDeps","AggregatedDeps","mergedConfig","mergedConfigPolicy","policy","DEPENDENCIES_FIELDS","pkg","push","conflictDeps","mergedConfigConflict","notConflictedPackages","depsNames","conflictedPackages","length","depResolver","extensions","findCoreExtension","DependencyResolverAspect","id","workspaceDepsUnchanged","workspaceJsonUpdates","pkgName","currentVer","hasSameVersions","reportMultipleVersions","newVer","getFirstVersion","compIds","getCompIdsBy","workspaceJsonConflicts","dependencies","peerDependencies","conflictPackagesToRemoveFromConfigMerge","conflictRaw","split","otherValValid","snapToSemver","currentVerInWsJson","semver","satisfies","force","isEmpty","result","filter","dep","keys","reasonForChange","workspaceDepsUpdates","updateDepsInWorkspaceConfig","components","mergeStrategy","workspacePolicy","getWorkspacePolicyFromConfig","workspacePolicyObj","entries","reduce","acc","current","dependencyId","componentDepsWithMultipleVer","component","deps","getDependenciesFromLegacyComponent","source","depId","getPackageName","compToLog","info","componentDeps","logs","depInCompVer","depInWsVer","isDepInCompVersion","Boolean","valid","isDepInCompRange","validRange","addNotUpdateToLogs","reason","isDepInWsVersion","isDepInWsRange","lifeCycle","find","d","lifecycleType","addToUpdate","addRangeFrom","potentialRangeChar","newRange","warnMsg","warn","addToConflict","gt","isRange1GreaterThanRange2Naively","wsMinVer","minVersion","compMinVer","JSON","stringify","updateWsConfigWithGivenChanges","workspaceConfigConflictWriteError","wsPolicy","getLifeCycle","newWorkspacePolicyEntries","addToRootPolicy","updateExisting","persistConfig","range1","range2","minVersion1","minVersion2","provider","loggerMain","createLogger","ConfigMergerAspect","exports","WorkspaceAspect","ConfigAspect","LoggerAspect","MainRuntime","addRuntime","_default"],"sources":["config-merger.main.runtime.ts"],"sourcesContent":["import semver from 'semver';\nimport { isEmpty } from 'lodash';\nimport {\n DependencyResolverAspect,\n DependencyResolverMain,\n WorkspacePolicy,\n WorkspacePolicyConfigKeysNames,\n WorkspacePolicyEntry,\n} from '@teambit/dependency-resolver';\nimport { snapToSemver } from '@teambit/component-package-version';\nimport tempy from 'tempy';\nimport fs from 'fs-extra';\nimport { MainRuntime } from '@teambit/cli';\nimport { WorkspaceAspect, Workspace } from '@teambit/workspace';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport ConsumerComponent from '@teambit/legacy/dist/consumer/component';\nimport { DEPENDENCIES_FIELDS } from '@teambit/legacy/dist/constants';\nimport { BitError } from '@teambit/bit-error';\nimport { ConfigAspect, ConfigMain } from '@teambit/config';\nimport { MergeStrategy, mergeFiles, MergeFileParams } from '@teambit/merging';\nimport { ConfigMergeResult, parseVersionLineWithConflict } from './config-merge-result';\nimport { ConfigMergerAspect } from './config-merger.aspect';\nimport { AggregatedDeps } from './aggregated-deps';\n\nexport type PkgEntry = { name: string; version: string; force: boolean };\n\nconst WS_DEPS_FIELDS = ['dependencies', 'peerDependencies'];\n\nexport type WorkspaceDepsUpdates = { [pkgName: string]: [string, string] }; // from => to\nexport type WorkspaceDepsConflicts = Record<WorkspacePolicyConfigKeysNames, Array<{ name: string; version: string }>>; // the pkg value is in a format of CONFLICT::OURS::THEIRS\nexport type WorkspaceDepsUnchanged = { [pkgName: string]: string }; // the pkg value is the message why it wasn't updated\n\nexport type WorkspaceConfigUpdateResult = {\n workspaceDepsUpdates?: WorkspaceDepsUpdates; // in case workspace.jsonc has been updated with dependencies versions\n workspaceDepsConflicts?: WorkspaceDepsConflicts; // in case workspace.jsonc has conflicts\n workspaceDepsUnchanged?: WorkspaceDepsUnchanged; // in case the deps in workspace.jsonc couldn't be updated\n workspaceConfigConflictWriteError?: Error; // in case workspace.jsonc has conflicts and we failed to write the conflicts to the file\n logs?: string[]; // verbose details about the updates/conflicts for each one of the deps\n};\nexport class ConfigMergerMain {\n constructor(\n private workspace: Workspace,\n private logger: Logger,\n private config: ConfigMain,\n private depsResolver: DependencyResolverMain\n ) {}\n\n async generateConfigMergeConflictFileForAll(allConfigMerge: ConfigMergeResult[]) {\n const configMergeFile = this.workspace.getConflictMergeFile();\n allConfigMerge.forEach((configMerge) => {\n const conflict = configMerge.generateMergeConflictFile();\n if (!conflict) return;\n configMergeFile.addConflict(configMerge.compIdStr, conflict);\n });\n if (configMergeFile.hasConflict()) {\n await configMergeFile.write();\n }\n }\n\n async writeWorkspaceJsoncWithConflictsGracefully(\n workspaceDepsConflicts: WorkspaceDepsConflicts\n ): Promise<Error | undefined> {\n try {\n await this.writeWorkspaceJsoncWithConflicts(workspaceDepsConflicts);\n return undefined;\n } catch (err: any) {\n this.logger.error(`unable to write workspace.jsonc with conflicts`, err);\n const errTitle = `unable to write workspace.jsonc with conflicts, due to an error: \"${err.message}\".\nsee the conflicts below and edit your workspace.jsonc as you see fit.`;\n const conflictsStr = WS_DEPS_FIELDS.map((depField) => {\n if (!workspaceDepsConflicts[depField]) return [];\n return workspaceDepsConflicts[depField].map(({ name, version }) => {\n const { currentVal, otherVal } = parseVersionLineWithConflict(version);\n return `(${depField}) ${name}: ours: ${currentVal}, theirs: ${otherVal}`;\n });\n })\n .flat()\n .join('\\n');\n return new BitError(`${errTitle}\\n${conflictsStr}`);\n }\n }\n\n private async writeWorkspaceJsoncWithConflicts(workspaceDepsConflicts: WorkspaceDepsConflicts) {\n const wsConfig = this.config.workspaceConfig;\n if (!wsConfig) throw new Error(`unable to get workspace config`);\n const wsJsoncPath = wsConfig.path;\n const wsJsoncOriginalContent = await fs.readFile(wsJsoncPath, 'utf8');\n let wsJsoncContent = wsJsoncOriginalContent;\n WS_DEPS_FIELDS.forEach((depField) => {\n if (!workspaceDepsConflicts[depField]) return;\n workspaceDepsConflicts[depField].forEach(({ name, version }) => {\n const { currentVal, otherVal } = parseVersionLineWithConflict(version);\n // e.g. \"@ci/8oypmb6p-remote.bar.foo\": \"^0.0.3\"\n const originalDep = `\"${name}\": \"${currentVal}\"`;\n if (!wsJsoncContent.includes(originalDep)) {\n throw new Error(`unable to find the dependency ${originalDep} in the workspace.jsonc`);\n }\n wsJsoncContent = wsJsoncContent.replace(originalDep, `\"${name}\": \"${otherVal}\"`);\n });\n });\n\n const baseFilePath = await tempy.write('');\n const otherFilePath = await tempy.write(wsJsoncContent);\n const mergeFilesParams: MergeFileParams = {\n filePath: wsJsoncPath,\n currentFile: {\n label: 'ours',\n path: wsJsoncPath,\n },\n baseFile: {\n path: baseFilePath,\n },\n otherFile: {\n label: 'theirs',\n path: otherFilePath,\n },\n };\n const mergeResult = await mergeFiles(mergeFilesParams);\n const conflictFile = mergeResult.conflict;\n if (!conflictFile) {\n this.logger.debug(`original content:\\n${wsJsoncOriginalContent}`);\n this.logger.debug(`new content:\\n${wsJsoncContent}`);\n throw new Error('unable to generate conflict from the workspace.jsonc file. see debug.log for the file content');\n }\n await wsConfig.backupConfigFile('before writing conflicts');\n this.logger.debug('writing workspace.jsonc with conflicts');\n await fs.writeFile(wsJsoncPath, conflictFile);\n }\n\n async updateWorkspaceJsoncWithDepsIfNeeded(allConfigMerge: ConfigMergeResult[]): Promise<{\n workspaceDepsUpdates?: WorkspaceDepsUpdates;\n workspaceDepsConflicts?: WorkspaceDepsConflicts;\n workspaceDepsUnchanged?: WorkspaceDepsUnchanged;\n }> {\n const allResults = allConfigMerge.map((c) => c.getDepsResolverResult());\n\n // aggregate all dependencies that can be updated (not conflicting)\n const nonConflictDeps = new AggregatedDeps();\n allConfigMerge.forEach((configMerge) => {\n const mergedConfig = configMerge.getDepsResolverResult()?.mergedConfig;\n if (!mergedConfig || mergedConfig === '-') return;\n const mergedConfigPolicy = mergedConfig.policy || {};\n DEPENDENCIES_FIELDS.forEach((depField) => {\n mergedConfigPolicy[depField]?.forEach((pkg: PkgEntry) => nonConflictDeps.push(pkg, configMerge.compIdStr));\n });\n });\n\n // aggregate all dependencies that have conflicts\n const conflictDeps = new AggregatedDeps();\n allConfigMerge.forEach((configMerge) => {\n const mergedConfigConflict = configMerge.getDepsResolverResult()?.conflict;\n if (!mergedConfigConflict) return;\n DEPENDENCIES_FIELDS.forEach((depField) => {\n mergedConfigConflict[depField]?.forEach((pkg: PkgEntry) => conflictDeps.push(pkg, configMerge.compIdStr));\n });\n });\n\n // uncomment to get the aggregated deps of both the conflicted and non-conflicted\n // console.log('nonConflictDeps', nonConflictDeps.toString(), 'conflictDeps', conflictDeps.toString());\n\n const notConflictedPackages = nonConflictDeps.depsNames;\n const conflictedPackages = conflictDeps.depsNames;\n if (!notConflictedPackages.length && !conflictedPackages.length) return {};\n\n const workspaceConfig = this.config.workspaceConfig;\n if (!workspaceConfig) throw new Error(`updateWorkspaceJsoncWithDepsIfNeeded unable to get workspace config`);\n const depResolver = workspaceConfig.extensions.findCoreExtension(DependencyResolverAspect.id);\n const policy = depResolver?.config.policy;\n if (!policy) {\n return {};\n }\n\n const workspaceDepsUnchanged: { [pkgName: string]: string } = {};\n\n // calculate the workspace.json updates\n const workspaceJsonUpdates: WorkspaceDepsUpdates = {};\n notConflictedPackages.forEach((pkgName) => {\n DEPENDENCIES_FIELDS.forEach((depField) => {\n if (!policy[depField]?.[pkgName]) return; // doesn't exists in the workspace.json\n const currentVer = policy[depField][pkgName];\n if (!nonConflictDeps.hasSameVersions(pkgName)) {\n // we only want the deps that the other lane has them in the workspace.json and that all comps use the same dep.\n workspaceDepsUnchanged[pkgName] = nonConflictDeps.reportMultipleVersions(pkgName);\n return;\n }\n const newVer = nonConflictDeps.getFirstVersion(pkgName);\n if (currentVer === newVer) return;\n workspaceJsonUpdates[pkgName] = [currentVer, newVer];\n policy[depField][pkgName] = newVer;\n const compIds = nonConflictDeps.getCompIdsBy(pkgName).join(', ');\n this.logger.debug(\n `update workspace.jsonc: ${pkgName} from ${currentVer} to ${newVer}. Triggered by: ${compIds}`\n );\n });\n });\n\n // calculate the workspace.json conflicts\n const workspaceJsonConflicts = { dependencies: [], peerDependencies: [] };\n const conflictPackagesToRemoveFromConfigMerge: string[] = [];\n conflictedPackages.forEach((pkgName) => {\n if (!conflictDeps.hasSameVersions(pkgName)) {\n // we only want the deps that the other lane has them in the workspace.json and that all comps use the same dep.\n workspaceDepsUnchanged[pkgName] = conflictDeps.reportMultipleVersions(pkgName);\n return;\n }\n const conflictRaw = conflictDeps.getFirstVersion(pkgName);\n const [, currentVal, otherVal] = conflictRaw.split('::');\n // in case of a snap, the otherVal is the snap-hash, we need to convert it to semver\n const otherValValid = snapToSemver(otherVal);\n WS_DEPS_FIELDS.forEach((depField) => {\n if (!policy[depField]?.[pkgName]) return;\n const currentVerInWsJson = policy[depField][pkgName];\n if (!currentVerInWsJson) return;\n // the version is coming from the workspace.jsonc\n conflictPackagesToRemoveFromConfigMerge.push(pkgName);\n if (semver.satisfies(otherValValid, currentVerInWsJson)) {\n // the other version is compatible with the current version in the workspace.json\n return;\n }\n workspaceJsonConflicts[depField].push({\n name: pkgName,\n version: conflictRaw.replace(currentVal, currentVerInWsJson),\n force: false,\n });\n conflictPackagesToRemoveFromConfigMerge.push(pkgName);\n const compIds = conflictDeps.getCompIdsBy(pkgName).join(', ');\n this.logger.debug(\n `conflict workspace.jsonc: ${pkgName} current: ${currentVerInWsJson}, other: ${otherValValid}. Triggered by: ${compIds}`\n );\n });\n });\n WS_DEPS_FIELDS.forEach((depField) => {\n if (isEmpty(workspaceJsonConflicts[depField])) delete workspaceJsonConflicts[depField];\n });\n\n if (conflictPackagesToRemoveFromConfigMerge.length) {\n allResults.forEach((result) => {\n if (result?.conflict) {\n DEPENDENCIES_FIELDS.forEach((depField) => {\n if (!result.conflict?.[depField]) return;\n result.conflict[depField] = result.conflict?.[depField].filter(\n (dep) => !conflictPackagesToRemoveFromConfigMerge.includes(dep.name)\n );\n if (!result.conflict[depField].length) delete result.conflict[depField];\n });\n if (isEmpty(result.conflict)) result.conflict = undefined;\n }\n });\n }\n\n if (Object.keys(workspaceJsonUpdates).length) {\n await workspaceConfig.write({ reasonForChange: 'merge (update dependencies)' });\n }\n\n this.logger.debug('final workspace.jsonc updates', workspaceJsonUpdates);\n this.logger.debug('final workspace.jsonc conflicts', workspaceJsonConflicts);\n\n return {\n workspaceDepsUpdates: Object.keys(workspaceJsonUpdates).length ? workspaceJsonUpdates : undefined,\n workspaceDepsConflicts: Object.keys(workspaceJsonConflicts).length ? workspaceJsonConflicts : undefined,\n workspaceDepsUnchanged: Object.keys(workspaceDepsUnchanged).length ? workspaceDepsUnchanged : undefined,\n };\n }\n\n async updateDepsInWorkspaceConfig(\n components: ConsumerComponent[],\n mergeStrategy?: MergeStrategy\n ): Promise<WorkspaceConfigUpdateResult | undefined> {\n if (mergeStrategy === 'ours') {\n this.logger.debug('mergeStrategy is \"ours\", skipping the workspace.jsonc update');\n return undefined;\n }\n const workspacePolicy = this.depsResolver.getWorkspacePolicyFromConfig();\n const workspacePolicyObj = workspacePolicy.entries.reduce((acc, current) => {\n acc[current.dependencyId] = current.value.version;\n return acc;\n }, {});\n const componentDepsWithMultipleVer: Record<string, string[]> = {};\n components.forEach((component) => {\n const deps = this.depsResolver.getDependenciesFromLegacyComponent(component);\n deps.forEach((dep) => {\n if (dep.source !== 'auto') return;\n const depId = dep.getPackageName?.();\n if (!depId) return; // unclear when this happens.\n if (!workspacePolicyObj[depId]) return;\n if (workspacePolicyObj[depId] === dep.version) return;\n if (componentDepsWithMultipleVer[depId]?.includes(dep.version)) return;\n\n (componentDepsWithMultipleVer[depId] ||= []).push(dep.version);\n });\n });\n\n const compToLog = Object.keys(componentDepsWithMultipleVer)\n .map(\n (depId) =>\n `${depId} => workspace: ${workspacePolicyObj[depId]}, components: ${componentDepsWithMultipleVer[depId].join(\n ', '\n )}`\n )\n .join('\\n');\n this.logger.info(`found the following deps to update/conflict:\\n${compToLog}`);\n\n const componentDeps = Object.keys(componentDepsWithMultipleVer).reduce((acc, depId) => {\n // if there are different versions of this dep between the components, forget about it.\n if (componentDepsWithMultipleVer[depId].length > 1) return acc;\n acc[depId] = componentDepsWithMultipleVer[depId][0];\n return acc;\n }, {});\n\n if (isEmpty(componentDeps)) {\n return undefined;\n }\n\n const workspaceDepsUpdates: WorkspaceDepsUpdates = {};\n const workspaceDepsConflicts: WorkspaceDepsConflicts = { dependencies: [], peerDependencies: [] };\n\n const logs: string[] = [];\n\n Object.keys(componentDeps).forEach((depId) => {\n const depInCompVer: string = componentDeps[depId];\n const depInWsVer: string = workspacePolicyObj[depId];\n const isDepInCompVersion = Boolean(semver.valid(depInCompVer));\n const isDepInCompRange = !isDepInCompVersion && Boolean(semver.validRange(depInCompVer));\n\n const addNotUpdateToLogs = (reason: string) => {\n logs.push(`${depId} - not updating. ${reason}`);\n };\n\n if (!isDepInCompVersion && !isDepInCompRange) {\n addNotUpdateToLogs(`probably a snap-hash`);\n return; // probably a snap-hash.\n }\n const isDepInWsVersion = Boolean(semver.valid(depInWsVer));\n const isDepInWsRange = !isDepInWsVersion && Boolean(semver.validRange(depInWsVer));\n if (!isDepInWsVersion && !isDepInWsRange) {\n addNotUpdateToLogs(`probably a snap-hash`);\n return; // probably a snap-hash.\n }\n\n // both are either versions or ranges\n const lifeCycle =\n workspacePolicy.entries.find((d) => d.dependencyId === depId)?.lifecycleType === 'peer'\n ? 'peerDependencies'\n : 'dependencies';\n\n const addToUpdate = (addRangeFrom?: string) => {\n if (addRangeFrom) {\n // depInCompVer is a version, depInWsVer is a range\n const potentialRangeChar = depInWsVer[0];\n const newRange = potentialRangeChar + depInCompVer;\n if (newRange === depInWsVer) {\n addNotUpdateToLogs(`the min version from ws ${depInWsVer} is the same as ${depInCompVer} from comp`);\n return;\n }\n if (!semver.validRange(newRange)) {\n const warnMsg = `failed to add the range \"${potentialRangeChar}\" to ${depInCompVer}, the result is not a valid range`;\n this.logger.warn(warnMsg);\n addNotUpdateToLogs(warnMsg);\n return;\n }\n logs.push(`${depId} - updating from ${depInWsVer} to ${newRange} (new range based on ${depInCompVer})`);\n workspaceDepsUpdates[depId] = [depInWsVer, newRange];\n } else {\n logs.push(`${depId} - updating from ${depInWsVer} to ${depInCompVer}`);\n workspaceDepsUpdates[depId] = [depInWsVer, depInCompVer];\n }\n };\n const addToConflict = () => {\n if (mergeStrategy === 'theirs') {\n addToUpdate();\n return;\n }\n workspaceDepsConflicts[lifeCycle].push({ name: depId, version: `CONFLICT::${depInWsVer}::${depInCompVer}` });\n logs.push(`${depId} - conflict. ours: ${depInWsVer}, theirs: ${depInCompVer}`);\n };\n\n // both are versions\n if (isDepInCompVersion && isDepInWsVersion) {\n if (semver.gt(depInCompVer, depInWsVer)) {\n addToConflict();\n return;\n }\n addNotUpdateToLogs(`the version from ws ${depInWsVer} is greater than ${depInCompVer} from comp`);\n return;\n }\n\n // both are ranges\n if (isDepInCompRange && isDepInWsRange) {\n if (this.isRange1GreaterThanRange2Naively(depInCompVer, depInWsVer)) {\n addToUpdate();\n return;\n }\n addNotUpdateToLogs(`the range from ws ${depInWsVer} is greater than ${depInCompVer} from comp`);\n return;\n }\n\n if (isDepInCompVersion && isDepInWsRange) {\n const wsMinVer = semver.minVersion(depInWsVer);\n if (!wsMinVer) {\n this.logger.warn(`unable to calculate the min version of ${depInWsVer}`);\n addNotUpdateToLogs(`unable to calculate the min version of ${depInWsVer} from ws`);\n return;\n }\n if (semver.gt(wsMinVer, depInCompVer)) {\n addNotUpdateToLogs(`the min version from ws ${depInWsVer} is greater than ${depInCompVer} from comp`);\n return;\n }\n if (semver.satisfies(depInCompVer, depInWsVer)) {\n addToUpdate(depInWsVer);\n return;\n }\n addToConflict();\n return;\n }\n\n if (isDepInCompRange && isDepInWsVersion) {\n if (semver.satisfies(depInWsVer, depInCompVer)) {\n addToUpdate();\n return;\n }\n const compMinVer = semver.minVersion(depInCompVer);\n if (!compMinVer) {\n this.logger.warn(`unable to calculate the min version of ${compMinVer}`);\n addNotUpdateToLogs(`unable to calculate the min version of ${compMinVer} from comp`);\n return;\n }\n if (semver.gt(compMinVer, depInWsVer)) {\n addToConflict();\n return;\n }\n addNotUpdateToLogs(`the min version from comp ${compMinVer} is less than ${depInWsVer} from ws`);\n }\n throw new Error(`unhandled case: comp: ${depInCompVer}, ws: ${depInWsVer}`);\n });\n\n WS_DEPS_FIELDS.forEach((depField) => {\n if (isEmpty(workspaceDepsConflicts[depField])) delete workspaceDepsConflicts[depField];\n });\n\n this.logger.debug(`workspace config-merge all components logs\\n${logs.join('\\n')}`);\n this.logger.debug('final workspace.jsonc updates [from, to]', workspaceDepsUpdates);\n this.logger.debug(`final workspace.jsonc conflicts ${JSON.stringify(workspaceDepsConflicts, undefined, 2)}`);\n\n await this.updateWsConfigWithGivenChanges(workspaceDepsUpdates, workspacePolicy);\n let workspaceConfigConflictWriteError: Error | undefined;\n if (!isEmpty(workspaceDepsConflicts)) {\n workspaceConfigConflictWriteError = await this.writeWorkspaceJsoncWithConflictsGracefully(workspaceDepsConflicts);\n }\n\n return {\n workspaceDepsUpdates: isEmpty(workspaceDepsUpdates) ? undefined : workspaceDepsUpdates,\n workspaceDepsConflicts: isEmpty(workspaceDepsConflicts) ? undefined : workspaceDepsConflicts,\n workspaceConfigConflictWriteError,\n logs,\n };\n }\n\n private async updateWsConfigWithGivenChanges(workspaceDepsUpdates: WorkspaceDepsUpdates, wsPolicy: WorkspacePolicy) {\n if (isEmpty(workspaceDepsUpdates)) return;\n const getLifeCycle = (depId: string) => {\n const lifeCycle = wsPolicy.entries.find((d) => d.dependencyId === depId)?.lifecycleType;\n if (!lifeCycle) throw new Error(`unable to find the lifecycle of ${depId}`);\n return lifeCycle;\n };\n\n const newWorkspacePolicyEntries: WorkspacePolicyEntry[] = Object.keys(workspaceDepsUpdates).map((pkgName) => {\n return {\n dependencyId: pkgName,\n lifecycleType: getLifeCycle(pkgName),\n value: {\n version: workspaceDepsUpdates[pkgName][1],\n },\n };\n });\n this.depsResolver.addToRootPolicy(newWorkspacePolicyEntries, {\n updateExisting: true,\n });\n await this.depsResolver.persistConfig('config-merger (update root policy)');\n }\n\n /**\n * if both versions are ranges, it's hard to check which one is bigger. sometimes it's even impossible.\n * remember that a range can be something like `1.2 <1.2.9 || >2.0.0`.\n * this check is naive in a way that it assumes the range is simple, such as \"^1.2.3\" or \"~1.2.3.\n * in this case, it's possible to check for the minimum version and compare it.\n */\n private isRange1GreaterThanRange2Naively(range1: string, range2: string) {\n const minVersion1 = semver.minVersion(range1);\n const minVersion2 = semver.minVersion(range2);\n if (!minVersion1 || !minVersion2) return false;\n return semver.gt(minVersion1, minVersion2);\n }\n\n static slots = [];\n static dependencies = [WorkspaceAspect, ConfigAspect, LoggerAspect, DependencyResolverAspect];\n static runtime = MainRuntime;\n static async provider([workspace, config, loggerMain, depsResolver]: [\n Workspace,\n ConfigMain,\n LoggerMain,\n DependencyResolverMain,\n ]) {\n const logger = loggerMain.createLogger(ConfigMergerAspect.id);\n return new ConfigMergerMain(workspace, logger, config, depsResolver);\n }\n}\n\nConfigMergerAspect.addRuntime(ConfigMergerMain);\n\nexport default ConfigMergerMain;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_semver","data","_interopRequireDefault","require","_lodash","_dependencyResolver","_componentPackageVersion","_tempy","_fsExtra","_cli","_workspace","_logger","_legacy","_bitError","_config","_merging","_configMergeResult","_configMerger","_aggregatedDeps","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","WS_DEPS_FIELDS","ConfigMergerMain","constructor","workspace","logger","config","depsResolver","generateConfigMergeConflictFileForAll","allConfigMerge","configMergeFile","getConflictMergeFile","forEach","configMerge","conflict","generateMergeConflictFile","addConflict","compIdStr","hasConflict","write","writeWorkspaceJsoncWithConflictsGracefully","workspaceDepsConflicts","writeWorkspaceJsoncWithConflicts","undefined","err","error","errTitle","message","conflictsStr","map","depField","name","version","currentVal","otherVal","parseVersionLineWithConflict","flat","join","BitError","wsConfig","workspaceConfig","Error","wsJsoncPath","path","wsJsoncOriginalContent","fs","readFile","wsJsoncContent","originalDep","includes","replace","baseFilePath","tempy","otherFilePath","mergeFilesParams","filePath","currentFile","label","baseFile","otherFile","mergeResult","mergeFiles","conflictFile","debug","backupConfigFile","writeFile","updateWorkspaceJsoncWithDepsIfNeeded","allResults","c","getDepsResolverResult","nonConflictDeps","AggregatedDeps","mergedConfig","mergedConfigPolicy","policy","DEPENDENCIES_FIELDS","pkg","push","conflictDeps","mergedConfigConflict","notConflictedPackages","depsNames","conflictedPackages","length","depResolver","extensions","findCoreExtension","DependencyResolverAspect","id","workspaceDepsUnchanged","workspaceJsonUpdates","pkgName","currentVer","hasSameVersions","reportMultipleVersions","newVer","getFirstVersion","compIds","getCompIdsBy","workspaceJsonConflicts","dependencies","peerDependencies","conflictPackagesToRemoveFromConfigMerge","conflictRaw","split","otherValValid","snapToSemver","currentVerInWsJson","semver","satisfies","force","isEmpty","result","filter","dep","keys","reasonForChange","workspaceDepsUpdates","updateDepsInWorkspaceConfig","components","mergeStrategy","workspacePolicy","getWorkspacePolicyFromConfig","workspacePolicyObj","entries","reduce","acc","current","dependencyId","componentDepsWithMultipleVer","component","deps","getDependenciesFromLegacyComponent","source","depId","getPackageName","compToLog","info","componentDeps","logs","depInCompVer","depInWsVer","isDepInCompVersion","Boolean","valid","isDepInCompRange","validRange","addNotUpdateToLogs","reason","isDepInWsVersion","isDepInWsRange","lifeCycle","find","d","lifecycleType","addToUpdate","addRangeFrom","potentialRangeChar","newRange","warnMsg","warn","addToConflict","gt","isRange1GreaterThanRange2Naively","wsMinVer","minVersion","compMinVer","JSON","stringify","updateWsConfigWithGivenChanges","workspaceConfigConflictWriteError","wsPolicy","getLifeCycle","newWorkspacePolicyEntries","addToRootPolicy","updateExisting","persistConfig","range1","range2","minVersion1","minVersion2","provider","loggerMain","createLogger","ConfigMergerAspect","exports","WorkspaceAspect","ConfigAspect","LoggerAspect","MainRuntime","addRuntime","_default"],"sources":["config-merger.main.runtime.ts"],"sourcesContent":["import semver from 'semver';\nimport { isEmpty } from 'lodash';\nimport {\n DependencyResolverAspect,\n DependencyResolverMain,\n WorkspacePolicy,\n WorkspacePolicyConfigKeysNames,\n WorkspacePolicyEntry,\n} from '@teambit/dependency-resolver';\nimport { snapToSemver } from '@teambit/component-package-version';\nimport tempy from 'tempy';\nimport fs from 'fs-extra';\nimport { MainRuntime } from '@teambit/cli';\nimport { WorkspaceAspect, Workspace } from '@teambit/workspace';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { ConsumerComponent } from '@teambit/legacy.consumer-component';\nimport { DEPENDENCIES_FIELDS } from '@teambit/legacy.constants';\nimport { BitError } from '@teambit/bit-error';\nimport { ConfigAspect, ConfigMain } from '@teambit/config';\nimport { MergeStrategy, mergeFiles, MergeFileParams } from '@teambit/merging';\nimport { ConfigMergeResult, parseVersionLineWithConflict } from './config-merge-result';\nimport { ConfigMergerAspect } from './config-merger.aspect';\nimport { AggregatedDeps } from './aggregated-deps';\n\nexport type PkgEntry = { name: string; version: string; force: boolean };\n\nconst WS_DEPS_FIELDS = ['dependencies', 'peerDependencies'];\n\nexport type WorkspaceDepsUpdates = { [pkgName: string]: [string, string] }; // from => to\nexport type WorkspaceDepsConflicts = Record<WorkspacePolicyConfigKeysNames, Array<{ name: string; version: string }>>; // the pkg value is in a format of CONFLICT::OURS::THEIRS\nexport type WorkspaceDepsUnchanged = { [pkgName: string]: string }; // the pkg value is the message why it wasn't updated\n\nexport type WorkspaceConfigUpdateResult = {\n workspaceDepsUpdates?: WorkspaceDepsUpdates; // in case workspace.jsonc has been updated with dependencies versions\n workspaceDepsConflicts?: WorkspaceDepsConflicts; // in case workspace.jsonc has conflicts\n workspaceDepsUnchanged?: WorkspaceDepsUnchanged; // in case the deps in workspace.jsonc couldn't be updated\n workspaceConfigConflictWriteError?: Error; // in case workspace.jsonc has conflicts and we failed to write the conflicts to the file\n logs?: string[]; // verbose details about the updates/conflicts for each one of the deps\n};\nexport class ConfigMergerMain {\n constructor(\n private workspace: Workspace,\n private logger: Logger,\n private config: ConfigMain,\n private depsResolver: DependencyResolverMain\n ) {}\n\n async generateConfigMergeConflictFileForAll(allConfigMerge: ConfigMergeResult[]) {\n const configMergeFile = this.workspace.getConflictMergeFile();\n allConfigMerge.forEach((configMerge) => {\n const conflict = configMerge.generateMergeConflictFile();\n if (!conflict) return;\n configMergeFile.addConflict(configMerge.compIdStr, conflict);\n });\n if (configMergeFile.hasConflict()) {\n await configMergeFile.write();\n }\n }\n\n async writeWorkspaceJsoncWithConflictsGracefully(\n workspaceDepsConflicts: WorkspaceDepsConflicts\n ): Promise<Error | undefined> {\n try {\n await this.writeWorkspaceJsoncWithConflicts(workspaceDepsConflicts);\n return undefined;\n } catch (err: any) {\n this.logger.error(`unable to write workspace.jsonc with conflicts`, err);\n const errTitle = `unable to write workspace.jsonc with conflicts, due to an error: \"${err.message}\".\nsee the conflicts below and edit your workspace.jsonc as you see fit.`;\n const conflictsStr = WS_DEPS_FIELDS.map((depField) => {\n if (!workspaceDepsConflicts[depField]) return [];\n return workspaceDepsConflicts[depField].map(({ name, version }) => {\n const { currentVal, otherVal } = parseVersionLineWithConflict(version);\n return `(${depField}) ${name}: ours: ${currentVal}, theirs: ${otherVal}`;\n });\n })\n .flat()\n .join('\\n');\n return new BitError(`${errTitle}\\n${conflictsStr}`);\n }\n }\n\n private async writeWorkspaceJsoncWithConflicts(workspaceDepsConflicts: WorkspaceDepsConflicts) {\n const wsConfig = this.config.workspaceConfig;\n if (!wsConfig) throw new Error(`unable to get workspace config`);\n const wsJsoncPath = wsConfig.path;\n const wsJsoncOriginalContent = await fs.readFile(wsJsoncPath, 'utf8');\n let wsJsoncContent = wsJsoncOriginalContent;\n WS_DEPS_FIELDS.forEach((depField) => {\n if (!workspaceDepsConflicts[depField]) return;\n workspaceDepsConflicts[depField].forEach(({ name, version }) => {\n const { currentVal, otherVal } = parseVersionLineWithConflict(version);\n // e.g. \"@ci/8oypmb6p-remote.bar.foo\": \"^0.0.3\"\n const originalDep = `\"${name}\": \"${currentVal}\"`;\n if (!wsJsoncContent.includes(originalDep)) {\n throw new Error(`unable to find the dependency ${originalDep} in the workspace.jsonc`);\n }\n wsJsoncContent = wsJsoncContent.replace(originalDep, `\"${name}\": \"${otherVal}\"`);\n });\n });\n\n const baseFilePath = await tempy.write('');\n const otherFilePath = await tempy.write(wsJsoncContent);\n const mergeFilesParams: MergeFileParams = {\n filePath: wsJsoncPath,\n currentFile: {\n label: 'ours',\n path: wsJsoncPath,\n },\n baseFile: {\n path: baseFilePath,\n },\n otherFile: {\n label: 'theirs',\n path: otherFilePath,\n },\n };\n const mergeResult = await mergeFiles(mergeFilesParams);\n const conflictFile = mergeResult.conflict;\n if (!conflictFile) {\n this.logger.debug(`original content:\\n${wsJsoncOriginalContent}`);\n this.logger.debug(`new content:\\n${wsJsoncContent}`);\n throw new Error('unable to generate conflict from the workspace.jsonc file. see debug.log for the file content');\n }\n await wsConfig.backupConfigFile('before writing conflicts');\n this.logger.debug('writing workspace.jsonc with conflicts');\n await fs.writeFile(wsJsoncPath, conflictFile);\n }\n\n async updateWorkspaceJsoncWithDepsIfNeeded(allConfigMerge: ConfigMergeResult[]): Promise<{\n workspaceDepsUpdates?: WorkspaceDepsUpdates;\n workspaceDepsConflicts?: WorkspaceDepsConflicts;\n workspaceDepsUnchanged?: WorkspaceDepsUnchanged;\n }> {\n const allResults = allConfigMerge.map((c) => c.getDepsResolverResult());\n\n // aggregate all dependencies that can be updated (not conflicting)\n const nonConflictDeps = new AggregatedDeps();\n allConfigMerge.forEach((configMerge) => {\n const mergedConfig = configMerge.getDepsResolverResult()?.mergedConfig;\n if (!mergedConfig || mergedConfig === '-') return;\n const mergedConfigPolicy = mergedConfig.policy || {};\n DEPENDENCIES_FIELDS.forEach((depField) => {\n mergedConfigPolicy[depField]?.forEach((pkg: PkgEntry) => nonConflictDeps.push(pkg, configMerge.compIdStr));\n });\n });\n\n // aggregate all dependencies that have conflicts\n const conflictDeps = new AggregatedDeps();\n allConfigMerge.forEach((configMerge) => {\n const mergedConfigConflict = configMerge.getDepsResolverResult()?.conflict;\n if (!mergedConfigConflict) return;\n DEPENDENCIES_FIELDS.forEach((depField) => {\n mergedConfigConflict[depField]?.forEach((pkg: PkgEntry) => conflictDeps.push(pkg, configMerge.compIdStr));\n });\n });\n\n // uncomment to get the aggregated deps of both the conflicted and non-conflicted\n // console.log('nonConflictDeps', nonConflictDeps.toString(), 'conflictDeps', conflictDeps.toString());\n\n const notConflictedPackages = nonConflictDeps.depsNames;\n const conflictedPackages = conflictDeps.depsNames;\n if (!notConflictedPackages.length && !conflictedPackages.length) return {};\n\n const workspaceConfig = this.config.workspaceConfig;\n if (!workspaceConfig) throw new Error(`updateWorkspaceJsoncWithDepsIfNeeded unable to get workspace config`);\n const depResolver = workspaceConfig.extensions.findCoreExtension(DependencyResolverAspect.id);\n const policy = depResolver?.config.policy;\n if (!policy) {\n return {};\n }\n\n const workspaceDepsUnchanged: { [pkgName: string]: string } = {};\n\n // calculate the workspace.json updates\n const workspaceJsonUpdates: WorkspaceDepsUpdates = {};\n notConflictedPackages.forEach((pkgName) => {\n DEPENDENCIES_FIELDS.forEach((depField) => {\n if (!policy[depField]?.[pkgName]) return; // doesn't exists in the workspace.json\n const currentVer = policy[depField][pkgName];\n if (!nonConflictDeps.hasSameVersions(pkgName)) {\n // we only want the deps that the other lane has them in the workspace.json and that all comps use the same dep.\n workspaceDepsUnchanged[pkgName] = nonConflictDeps.reportMultipleVersions(pkgName);\n return;\n }\n const newVer = nonConflictDeps.getFirstVersion(pkgName);\n if (currentVer === newVer) return;\n workspaceJsonUpdates[pkgName] = [currentVer, newVer];\n policy[depField][pkgName] = newVer;\n const compIds = nonConflictDeps.getCompIdsBy(pkgName).join(', ');\n this.logger.debug(\n `update workspace.jsonc: ${pkgName} from ${currentVer} to ${newVer}. Triggered by: ${compIds}`\n );\n });\n });\n\n // calculate the workspace.json conflicts\n const workspaceJsonConflicts = { dependencies: [], peerDependencies: [] };\n const conflictPackagesToRemoveFromConfigMerge: string[] = [];\n conflictedPackages.forEach((pkgName) => {\n if (!conflictDeps.hasSameVersions(pkgName)) {\n // we only want the deps that the other lane has them in the workspace.json and that all comps use the same dep.\n workspaceDepsUnchanged[pkgName] = conflictDeps.reportMultipleVersions(pkgName);\n return;\n }\n const conflictRaw = conflictDeps.getFirstVersion(pkgName);\n const [, currentVal, otherVal] = conflictRaw.split('::');\n // in case of a snap, the otherVal is the snap-hash, we need to convert it to semver\n const otherValValid = snapToSemver(otherVal);\n WS_DEPS_FIELDS.forEach((depField) => {\n if (!policy[depField]?.[pkgName]) return;\n const currentVerInWsJson = policy[depField][pkgName];\n if (!currentVerInWsJson) return;\n // the version is coming from the workspace.jsonc\n conflictPackagesToRemoveFromConfigMerge.push(pkgName);\n if (semver.satisfies(otherValValid, currentVerInWsJson)) {\n // the other version is compatible with the current version in the workspace.json\n return;\n }\n workspaceJsonConflicts[depField].push({\n name: pkgName,\n version: conflictRaw.replace(currentVal, currentVerInWsJson),\n force: false,\n });\n conflictPackagesToRemoveFromConfigMerge.push(pkgName);\n const compIds = conflictDeps.getCompIdsBy(pkgName).join(', ');\n this.logger.debug(\n `conflict workspace.jsonc: ${pkgName} current: ${currentVerInWsJson}, other: ${otherValValid}. Triggered by: ${compIds}`\n );\n });\n });\n WS_DEPS_FIELDS.forEach((depField) => {\n if (isEmpty(workspaceJsonConflicts[depField])) delete workspaceJsonConflicts[depField];\n });\n\n if (conflictPackagesToRemoveFromConfigMerge.length) {\n allResults.forEach((result) => {\n if (result?.conflict) {\n DEPENDENCIES_FIELDS.forEach((depField) => {\n if (!result.conflict?.[depField]) return;\n result.conflict[depField] = result.conflict?.[depField].filter(\n (dep) => !conflictPackagesToRemoveFromConfigMerge.includes(dep.name)\n );\n if (!result.conflict[depField].length) delete result.conflict[depField];\n });\n if (isEmpty(result.conflict)) result.conflict = undefined;\n }\n });\n }\n\n if (Object.keys(workspaceJsonUpdates).length) {\n await workspaceConfig.write({ reasonForChange: 'merge (update dependencies)' });\n }\n\n this.logger.debug('final workspace.jsonc updates', workspaceJsonUpdates);\n this.logger.debug('final workspace.jsonc conflicts', workspaceJsonConflicts);\n\n return {\n workspaceDepsUpdates: Object.keys(workspaceJsonUpdates).length ? workspaceJsonUpdates : undefined,\n workspaceDepsConflicts: Object.keys(workspaceJsonConflicts).length ? workspaceJsonConflicts : undefined,\n workspaceDepsUnchanged: Object.keys(workspaceDepsUnchanged).length ? workspaceDepsUnchanged : undefined,\n };\n }\n\n async updateDepsInWorkspaceConfig(\n components: ConsumerComponent[],\n mergeStrategy?: MergeStrategy\n ): Promise<WorkspaceConfigUpdateResult | undefined> {\n if (mergeStrategy === 'ours') {\n this.logger.debug('mergeStrategy is \"ours\", skipping the workspace.jsonc update');\n return undefined;\n }\n const workspacePolicy = this.depsResolver.getWorkspacePolicyFromConfig();\n const workspacePolicyObj = workspacePolicy.entries.reduce((acc, current) => {\n acc[current.dependencyId] = current.value.version;\n return acc;\n }, {});\n const componentDepsWithMultipleVer: Record<string, string[]> = {};\n components.forEach((component) => {\n const deps = this.depsResolver.getDependenciesFromLegacyComponent(component);\n deps.forEach((dep) => {\n if (dep.source !== 'auto') return;\n const depId = dep.getPackageName?.();\n if (!depId) return; // unclear when this happens.\n if (!workspacePolicyObj[depId]) return;\n if (workspacePolicyObj[depId] === dep.version) return;\n if (componentDepsWithMultipleVer[depId]?.includes(dep.version)) return;\n\n (componentDepsWithMultipleVer[depId] ||= []).push(dep.version);\n });\n });\n\n const compToLog = Object.keys(componentDepsWithMultipleVer)\n .map(\n (depId) =>\n `${depId} => workspace: ${workspacePolicyObj[depId]}, components: ${componentDepsWithMultipleVer[depId].join(\n ', '\n )}`\n )\n .join('\\n');\n this.logger.info(`found the following deps to update/conflict:\\n${compToLog}`);\n\n const componentDeps = Object.keys(componentDepsWithMultipleVer).reduce((acc, depId) => {\n // if there are different versions of this dep between the components, forget about it.\n if (componentDepsWithMultipleVer[depId].length > 1) return acc;\n acc[depId] = componentDepsWithMultipleVer[depId][0];\n return acc;\n }, {});\n\n if (isEmpty(componentDeps)) {\n return undefined;\n }\n\n const workspaceDepsUpdates: WorkspaceDepsUpdates = {};\n const workspaceDepsConflicts: WorkspaceDepsConflicts = { dependencies: [], peerDependencies: [] };\n\n const logs: string[] = [];\n\n Object.keys(componentDeps).forEach((depId) => {\n const depInCompVer: string = componentDeps[depId];\n const depInWsVer: string = workspacePolicyObj[depId];\n const isDepInCompVersion = Boolean(semver.valid(depInCompVer));\n const isDepInCompRange = !isDepInCompVersion && Boolean(semver.validRange(depInCompVer));\n\n const addNotUpdateToLogs = (reason: string) => {\n logs.push(`${depId} - not updating. ${reason}`);\n };\n\n if (!isDepInCompVersion && !isDepInCompRange) {\n addNotUpdateToLogs(`probably a snap-hash`);\n return; // probably a snap-hash.\n }\n const isDepInWsVersion = Boolean(semver.valid(depInWsVer));\n const isDepInWsRange = !isDepInWsVersion && Boolean(semver.validRange(depInWsVer));\n if (!isDepInWsVersion && !isDepInWsRange) {\n addNotUpdateToLogs(`probably a snap-hash`);\n return; // probably a snap-hash.\n }\n\n // both are either versions or ranges\n const lifeCycle =\n workspacePolicy.entries.find((d) => d.dependencyId === depId)?.lifecycleType === 'peer'\n ? 'peerDependencies'\n : 'dependencies';\n\n const addToUpdate = (addRangeFrom?: string) => {\n if (addRangeFrom) {\n // depInCompVer is a version, depInWsVer is a range\n const potentialRangeChar = depInWsVer[0];\n const newRange = potentialRangeChar + depInCompVer;\n if (newRange === depInWsVer) {\n addNotUpdateToLogs(`the min version from ws ${depInWsVer} is the same as ${depInCompVer} from comp`);\n return;\n }\n if (!semver.validRange(newRange)) {\n const warnMsg = `failed to add the range \"${potentialRangeChar}\" to ${depInCompVer}, the result is not a valid range`;\n this.logger.warn(warnMsg);\n addNotUpdateToLogs(warnMsg);\n return;\n }\n logs.push(`${depId} - updating from ${depInWsVer} to ${newRange} (new range based on ${depInCompVer})`);\n workspaceDepsUpdates[depId] = [depInWsVer, newRange];\n } else {\n logs.push(`${depId} - updating from ${depInWsVer} to ${depInCompVer}`);\n workspaceDepsUpdates[depId] = [depInWsVer, depInCompVer];\n }\n };\n const addToConflict = () => {\n if (mergeStrategy === 'theirs') {\n addToUpdate();\n return;\n }\n workspaceDepsConflicts[lifeCycle].push({ name: depId, version: `CONFLICT::${depInWsVer}::${depInCompVer}` });\n logs.push(`${depId} - conflict. ours: ${depInWsVer}, theirs: ${depInCompVer}`);\n };\n\n // both are versions\n if (isDepInCompVersion && isDepInWsVersion) {\n if (semver.gt(depInCompVer, depInWsVer)) {\n addToConflict();\n return;\n }\n addNotUpdateToLogs(`the version from ws ${depInWsVer} is greater than ${depInCompVer} from comp`);\n return;\n }\n\n // both are ranges\n if (isDepInCompRange && isDepInWsRange) {\n if (this.isRange1GreaterThanRange2Naively(depInCompVer, depInWsVer)) {\n addToUpdate();\n return;\n }\n addNotUpdateToLogs(`the range from ws ${depInWsVer} is greater than ${depInCompVer} from comp`);\n return;\n }\n\n if (isDepInCompVersion && isDepInWsRange) {\n const wsMinVer = semver.minVersion(depInWsVer);\n if (!wsMinVer) {\n this.logger.warn(`unable to calculate the min version of ${depInWsVer}`);\n addNotUpdateToLogs(`unable to calculate the min version of ${depInWsVer} from ws`);\n return;\n }\n if (semver.gt(wsMinVer, depInCompVer)) {\n addNotUpdateToLogs(`the min version from ws ${depInWsVer} is greater than ${depInCompVer} from comp`);\n return;\n }\n if (semver.satisfies(depInCompVer, depInWsVer)) {\n addToUpdate(depInWsVer);\n return;\n }\n addToConflict();\n return;\n }\n\n if (isDepInCompRange && isDepInWsVersion) {\n if (semver.satisfies(depInWsVer, depInCompVer)) {\n addToUpdate();\n return;\n }\n const compMinVer = semver.minVersion(depInCompVer);\n if (!compMinVer) {\n this.logger.warn(`unable to calculate the min version of ${compMinVer}`);\n addNotUpdateToLogs(`unable to calculate the min version of ${compMinVer} from comp`);\n return;\n }\n if (semver.gt(compMinVer, depInWsVer)) {\n addToConflict();\n return;\n }\n addNotUpdateToLogs(`the min version from comp ${compMinVer} is less than ${depInWsVer} from ws`);\n }\n throw new Error(`unhandled case: comp: ${depInCompVer}, ws: ${depInWsVer}`);\n });\n\n WS_DEPS_FIELDS.forEach((depField) => {\n if (isEmpty(workspaceDepsConflicts[depField])) delete workspaceDepsConflicts[depField];\n });\n\n this.logger.debug(`workspace config-merge all components logs\\n${logs.join('\\n')}`);\n this.logger.debug('final workspace.jsonc updates [from, to]', workspaceDepsUpdates);\n this.logger.debug(`final workspace.jsonc conflicts ${JSON.stringify(workspaceDepsConflicts, undefined, 2)}`);\n\n await this.updateWsConfigWithGivenChanges(workspaceDepsUpdates, workspacePolicy);\n let workspaceConfigConflictWriteError: Error | undefined;\n if (!isEmpty(workspaceDepsConflicts)) {\n workspaceConfigConflictWriteError = await this.writeWorkspaceJsoncWithConflictsGracefully(workspaceDepsConflicts);\n }\n\n return {\n workspaceDepsUpdates: isEmpty(workspaceDepsUpdates) ? undefined : workspaceDepsUpdates,\n workspaceDepsConflicts: isEmpty(workspaceDepsConflicts) ? undefined : workspaceDepsConflicts,\n workspaceConfigConflictWriteError,\n logs,\n };\n }\n\n private async updateWsConfigWithGivenChanges(workspaceDepsUpdates: WorkspaceDepsUpdates, wsPolicy: WorkspacePolicy) {\n if (isEmpty(workspaceDepsUpdates)) return;\n const getLifeCycle = (depId: string) => {\n const lifeCycle = wsPolicy.entries.find((d) => d.dependencyId === depId)?.lifecycleType;\n if (!lifeCycle) throw new Error(`unable to find the lifecycle of ${depId}`);\n return lifeCycle;\n };\n\n const newWorkspacePolicyEntries: WorkspacePolicyEntry[] = Object.keys(workspaceDepsUpdates).map((pkgName) => {\n return {\n dependencyId: pkgName,\n lifecycleType: getLifeCycle(pkgName),\n value: {\n version: workspaceDepsUpdates[pkgName][1],\n },\n };\n });\n this.depsResolver.addToRootPolicy(newWorkspacePolicyEntries, {\n updateExisting: true,\n });\n await this.depsResolver.persistConfig('config-merger (update root policy)');\n }\n\n /**\n * if both versions are ranges, it's hard to check which one is bigger. sometimes it's even impossible.\n * remember that a range can be something like `1.2 <1.2.9 || >2.0.0`.\n * this check is naive in a way that it assumes the range is simple, such as \"^1.2.3\" or \"~1.2.3.\n * in this case, it's possible to check for the minimum version and compare it.\n */\n private isRange1GreaterThanRange2Naively(range1: string, range2: string) {\n const minVersion1 = semver.minVersion(range1);\n const minVersion2 = semver.minVersion(range2);\n if (!minVersion1 || !minVersion2) return false;\n return semver.gt(minVersion1, minVersion2);\n }\n\n static slots = [];\n static dependencies = [WorkspaceAspect, ConfigAspect, LoggerAspect, DependencyResolverAspect];\n static runtime = MainRuntime;\n static async provider([workspace, config, loggerMain, depsResolver]: [\n Workspace,\n ConfigMain,\n LoggerMain,\n DependencyResolverMain,\n ]) {\n const logger = loggerMain.createLogger(ConfigMergerAspect.id);\n return new ConfigMergerMain(workspace, logger, config, depsResolver);\n }\n}\n\nConfigMergerAspect.addRuntime(ConfigMergerMain);\n\nexport default ConfigMergerMain;\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,32 +1,35 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/config-merger",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.356",
|
|
4
4
|
"homepage": "https://bit.cloud/teambit/workspace/config-merger",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.workspace",
|
|
8
8
|
"name": "config-merger",
|
|
9
|
-
"version": "0.0.
|
|
9
|
+
"version": "0.0.356"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"lodash": "4.17.21",
|
|
13
|
-
"semver": "7.5.
|
|
13
|
+
"semver": "7.5.4",
|
|
14
14
|
"fs-extra": "10.0.0",
|
|
15
15
|
"tempy": "1.0.1",
|
|
16
16
|
"@teambit/component-id": "1.2.2",
|
|
17
17
|
"@teambit/component-version": "1.0.3",
|
|
18
18
|
"@teambit/harmony": "0.4.6",
|
|
19
19
|
"@teambit/bit-error": "0.0.404",
|
|
20
|
-
"@teambit/builder": "1.0.
|
|
21
|
-
"@teambit/dependency-resolver": "1.0.
|
|
22
|
-
"@teambit/envs": "1.0.
|
|
23
|
-
"@teambit/legacy.extension-data": "0.0.
|
|
24
|
-
"@teambit/logger": "0.0.
|
|
25
|
-
"@teambit/merging": "1.0.
|
|
26
|
-
"@teambit/
|
|
20
|
+
"@teambit/builder": "1.0.489",
|
|
21
|
+
"@teambit/dependency-resolver": "1.0.489",
|
|
22
|
+
"@teambit/envs": "1.0.489",
|
|
23
|
+
"@teambit/legacy.extension-data": "0.0.4",
|
|
24
|
+
"@teambit/logger": "0.0.1159",
|
|
25
|
+
"@teambit/merging": "1.0.489",
|
|
26
|
+
"@teambit/scope.objects": "0.0.2",
|
|
27
|
+
"@teambit/cli": "0.0.1066",
|
|
27
28
|
"@teambit/component-package-version": "0.0.434",
|
|
28
|
-
"@teambit/config": "0.0.
|
|
29
|
-
"@teambit/
|
|
29
|
+
"@teambit/config": "0.0.1240",
|
|
30
|
+
"@teambit/legacy.constants": "0.0.2",
|
|
31
|
+
"@teambit/legacy.consumer-component": "0.0.3",
|
|
32
|
+
"@teambit/workspace": "1.0.489"
|
|
30
33
|
},
|
|
31
34
|
"devDependencies": {
|
|
32
35
|
"@types/lodash": "4.14.165",
|
|
@@ -34,9 +37,7 @@
|
|
|
34
37
|
"@types/fs-extra": "9.0.7",
|
|
35
38
|
"@teambit/harmony.envs.core-aspect-env": "0.0.63"
|
|
36
39
|
},
|
|
37
|
-
"peerDependencies": {
|
|
38
|
-
"@teambit/legacy": "1.0.770"
|
|
39
|
-
},
|
|
40
|
+
"peerDependencies": {},
|
|
40
41
|
"license": "Apache-2.0",
|
|
41
42
|
"optionalDependencies": {},
|
|
42
43
|
"peerDependenciesMeta": {},
|
|
File without changes
|