@teambit/config-merger 0.0.92 → 0.0.94
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 +74 -188
- package/dist/config-merger.main.runtime.js +2 -1
- package/dist/config-merger.main.runtime.js.map +1 -1
- package/package.json +11 -11
- package/tsconfig.json +22 -1
- package/dist/component-config-merger.d.ts +0 -65
- package/dist/config-merge-result.d.ts +0 -21
- package/dist/config-merger.aspect.d.ts +0 -2
- package/dist/config-merger.main.runtime.d.ts +0 -52
- package/dist/index.d.ts +0 -6
- /package/dist/{preview-1712546198033.js → preview-1712719054377.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.94" tests="0" failures="0" errors="0" skipped="0"/>
|
|
4
4
|
</testsuites>
|
package/artifacts/schema.json
CHANGED
|
@@ -48,11 +48,7 @@
|
|
|
48
48
|
"line": 39,
|
|
49
49
|
"character": 24
|
|
50
50
|
},
|
|
51
|
-
"name": "Workspace"
|
|
52
|
-
"componentId": {
|
|
53
|
-
"scope": "teambit.workspace",
|
|
54
|
-
"name": "workspace"
|
|
55
|
-
}
|
|
51
|
+
"name": "Workspace"
|
|
56
52
|
},
|
|
57
53
|
"isOptional": false,
|
|
58
54
|
"isSpread": false
|
|
@@ -72,11 +68,7 @@
|
|
|
72
68
|
"line": 40,
|
|
73
69
|
"character": 21
|
|
74
70
|
},
|
|
75
|
-
"name": "Logger"
|
|
76
|
-
"componentId": {
|
|
77
|
-
"scope": "teambit.harmony",
|
|
78
|
-
"name": "logger"
|
|
79
|
-
}
|
|
71
|
+
"name": "Logger"
|
|
80
72
|
},
|
|
81
73
|
"isOptional": false,
|
|
82
74
|
"isSpread": false
|
|
@@ -96,11 +88,7 @@
|
|
|
96
88
|
"line": 41,
|
|
97
89
|
"character": 21
|
|
98
90
|
},
|
|
99
|
-
"name": "ConfigMain"
|
|
100
|
-
"componentId": {
|
|
101
|
-
"scope": "teambit.harmony",
|
|
102
|
-
"name": "config"
|
|
103
|
-
}
|
|
91
|
+
"name": "ConfigMain"
|
|
104
92
|
},
|
|
105
93
|
"isOptional": false,
|
|
106
94
|
"isSpread": false
|
|
@@ -120,11 +108,7 @@
|
|
|
120
108
|
"line": 42,
|
|
121
109
|
"character": 27
|
|
122
110
|
},
|
|
123
|
-
"name": "DependencyResolverMain"
|
|
124
|
-
"componentId": {
|
|
125
|
-
"scope": "teambit.dependencies",
|
|
126
|
-
"name": "dependency-resolver"
|
|
127
|
-
}
|
|
111
|
+
"name": "DependencyResolverMain"
|
|
128
112
|
},
|
|
129
113
|
"isOptional": false,
|
|
130
114
|
"isSpread": false
|
|
@@ -403,8 +387,7 @@
|
|
|
403
387
|
"line": 276,
|
|
404
388
|
"character": 49
|
|
405
389
|
},
|
|
406
|
-
"name": "ConsumerComponent"
|
|
407
|
-
"packageName": "@teambit/legacy/dist/consumer/component"
|
|
390
|
+
"name": "ConsumerComponent"
|
|
408
391
|
}
|
|
409
392
|
},
|
|
410
393
|
"isOptional": false,
|
|
@@ -458,7 +441,7 @@
|
|
|
458
441
|
"__schema": "VariableLikeSchema",
|
|
459
442
|
"location": {
|
|
460
443
|
"filePath": "config-merger.main.runtime.ts",
|
|
461
|
-
"line":
|
|
444
|
+
"line": 490,
|
|
462
445
|
"character": 3
|
|
463
446
|
},
|
|
464
447
|
"signature": "(property) ConfigMergerMain.slots: never[]",
|
|
@@ -467,7 +450,7 @@
|
|
|
467
450
|
"__schema": "InferenceTypeSchema",
|
|
468
451
|
"location": {
|
|
469
452
|
"filePath": "config-merger.main.runtime.ts",
|
|
470
|
-
"line":
|
|
453
|
+
"line": 490,
|
|
471
454
|
"character": 3
|
|
472
455
|
},
|
|
473
456
|
"type": "never[]"
|
|
@@ -479,7 +462,7 @@
|
|
|
479
462
|
"__schema": "VariableLikeSchema",
|
|
480
463
|
"location": {
|
|
481
464
|
"filePath": "config-merger.main.runtime.ts",
|
|
482
|
-
"line":
|
|
465
|
+
"line": 491,
|
|
483
466
|
"character": 3
|
|
484
467
|
},
|
|
485
468
|
"signature": "(property) ConfigMergerMain.dependencies: Aspect[]",
|
|
@@ -488,7 +471,7 @@
|
|
|
488
471
|
"__schema": "InferenceTypeSchema",
|
|
489
472
|
"location": {
|
|
490
473
|
"filePath": "config-merger.main.runtime.ts",
|
|
491
|
-
"line":
|
|
474
|
+
"line": 491,
|
|
492
475
|
"character": 3
|
|
493
476
|
},
|
|
494
477
|
"type": "Aspect[]"
|
|
@@ -500,7 +483,7 @@
|
|
|
500
483
|
"__schema": "VariableLikeSchema",
|
|
501
484
|
"location": {
|
|
502
485
|
"filePath": "config-merger.main.runtime.ts",
|
|
503
|
-
"line":
|
|
486
|
+
"line": 492,
|
|
504
487
|
"character": 3
|
|
505
488
|
},
|
|
506
489
|
"signature": "(property) ConfigMergerMain.runtime: RuntimeDefinition",
|
|
@@ -509,7 +492,7 @@
|
|
|
509
492
|
"__schema": "InferenceTypeSchema",
|
|
510
493
|
"location": {
|
|
511
494
|
"filePath": "config-merger.main.runtime.ts",
|
|
512
|
-
"line":
|
|
495
|
+
"line": 492,
|
|
513
496
|
"character": 3
|
|
514
497
|
},
|
|
515
498
|
"type": "RuntimeDefinition"
|
|
@@ -521,7 +504,7 @@
|
|
|
521
504
|
"__schema": "FunctionLikeSchema",
|
|
522
505
|
"location": {
|
|
523
506
|
"filePath": "config-merger.main.runtime.ts",
|
|
524
|
-
"line":
|
|
507
|
+
"line": 493,
|
|
525
508
|
"character": 3
|
|
526
509
|
},
|
|
527
510
|
"signature": "(method) ConfigMergerMain.provider([workspace, config, loggerMain, depsResolver]: [\n Workspace,\n ConfigMain,\n LoggerMain,\n DependencyResolverMain\n]): Promise<ConfigMergerMain>",
|
|
@@ -531,7 +514,7 @@
|
|
|
531
514
|
"__schema": "ParameterSchema",
|
|
532
515
|
"location": {
|
|
533
516
|
"filePath": "config-merger.main.runtime.ts",
|
|
534
|
-
"line":
|
|
517
|
+
"line": 493,
|
|
535
518
|
"character": 25
|
|
536
519
|
},
|
|
537
520
|
"name": "[ workspace, config, loggerMain, depsResolver ]",
|
|
@@ -539,7 +522,7 @@
|
|
|
539
522
|
"__schema": "TupleTypeSchema",
|
|
540
523
|
"location": {
|
|
541
524
|
"filePath": "config-merger.main.runtime.ts",
|
|
542
|
-
"line":
|
|
525
|
+
"line": 493,
|
|
543
526
|
"character": 72
|
|
544
527
|
},
|
|
545
528
|
"elements": [
|
|
@@ -547,53 +530,37 @@
|
|
|
547
530
|
"__schema": "TypeRefSchema",
|
|
548
531
|
"location": {
|
|
549
532
|
"filePath": "config-merger.main.runtime.ts",
|
|
550
|
-
"line":
|
|
533
|
+
"line": 494,
|
|
551
534
|
"character": 5
|
|
552
535
|
},
|
|
553
|
-
"name": "Workspace"
|
|
554
|
-
"componentId": {
|
|
555
|
-
"scope": "teambit.workspace",
|
|
556
|
-
"name": "workspace"
|
|
557
|
-
}
|
|
536
|
+
"name": "Workspace"
|
|
558
537
|
},
|
|
559
538
|
{
|
|
560
539
|
"__schema": "TypeRefSchema",
|
|
561
540
|
"location": {
|
|
562
541
|
"filePath": "config-merger.main.runtime.ts",
|
|
563
|
-
"line":
|
|
542
|
+
"line": 495,
|
|
564
543
|
"character": 5
|
|
565
544
|
},
|
|
566
|
-
"name": "ConfigMain"
|
|
567
|
-
"componentId": {
|
|
568
|
-
"scope": "teambit.harmony",
|
|
569
|
-
"name": "config"
|
|
570
|
-
}
|
|
545
|
+
"name": "ConfigMain"
|
|
571
546
|
},
|
|
572
547
|
{
|
|
573
548
|
"__schema": "TypeRefSchema",
|
|
574
549
|
"location": {
|
|
575
550
|
"filePath": "config-merger.main.runtime.ts",
|
|
576
|
-
"line":
|
|
551
|
+
"line": 496,
|
|
577
552
|
"character": 5
|
|
578
553
|
},
|
|
579
|
-
"name": "LoggerMain"
|
|
580
|
-
"componentId": {
|
|
581
|
-
"scope": "teambit.harmony",
|
|
582
|
-
"name": "logger"
|
|
583
|
-
}
|
|
554
|
+
"name": "LoggerMain"
|
|
584
555
|
},
|
|
585
556
|
{
|
|
586
557
|
"__schema": "TypeRefSchema",
|
|
587
558
|
"location": {
|
|
588
559
|
"filePath": "config-merger.main.runtime.ts",
|
|
589
|
-
"line":
|
|
560
|
+
"line": 497,
|
|
590
561
|
"character": 5
|
|
591
562
|
},
|
|
592
|
-
"name": "DependencyResolverMain"
|
|
593
|
-
"componentId": {
|
|
594
|
-
"scope": "teambit.dependencies",
|
|
595
|
-
"name": "dependency-resolver"
|
|
596
|
-
}
|
|
563
|
+
"name": "DependencyResolverMain"
|
|
597
564
|
}
|
|
598
565
|
]
|
|
599
566
|
},
|
|
@@ -605,7 +572,7 @@
|
|
|
605
572
|
"__schema": "InferenceTypeSchema",
|
|
606
573
|
"location": {
|
|
607
574
|
"filePath": "config-merger.main.runtime.ts",
|
|
608
|
-
"line":
|
|
575
|
+
"line": 493,
|
|
609
576
|
"character": 3
|
|
610
577
|
},
|
|
611
578
|
"type": "Promise<ConfigMergerMain>"
|
|
@@ -720,11 +687,7 @@
|
|
|
720
687
|
"line": 29,
|
|
721
688
|
"character": 45
|
|
722
689
|
},
|
|
723
|
-
"name": "WorkspacePolicyConfigKeysNames"
|
|
724
|
-
"componentId": {
|
|
725
|
-
"scope": "teambit.dependencies",
|
|
726
|
-
"name": "dependency-resolver"
|
|
727
|
-
}
|
|
690
|
+
"name": "WorkspacePolicyConfigKeysNames"
|
|
728
691
|
},
|
|
729
692
|
{
|
|
730
693
|
"__schema": "TypeRefSchema",
|
|
@@ -1000,8 +963,7 @@
|
|
|
1000
963
|
"line": 13,
|
|
1001
964
|
"character": 22
|
|
1002
965
|
},
|
|
1003
|
-
"name": "MergeStrategyResult"
|
|
1004
|
-
"internalFilePath": "component-config-merger.ts"
|
|
966
|
+
"name": "MergeStrategyResult"
|
|
1005
967
|
}
|
|
1006
968
|
},
|
|
1007
969
|
"isOptional": false,
|
|
@@ -1146,8 +1108,7 @@
|
|
|
1146
1108
|
"line": 36,
|
|
1147
1109
|
"character": 28
|
|
1148
1110
|
},
|
|
1149
|
-
"name": "MergeStrategyResult"
|
|
1150
|
-
"internalFilePath": "component-config-merger.ts"
|
|
1111
|
+
"name": "MergeStrategyResult"
|
|
1151
1112
|
},
|
|
1152
1113
|
{
|
|
1153
1114
|
"__schema": "KeywordTypeSchema",
|
|
@@ -1238,12 +1199,7 @@
|
|
|
1238
1199
|
"line": 76,
|
|
1239
1200
|
"character": 27
|
|
1240
1201
|
},
|
|
1241
|
-
"name": "ComponentID"
|
|
1242
|
-
"componentId": {
|
|
1243
|
-
"scope": "teambit.component",
|
|
1244
|
-
"name": "component-id",
|
|
1245
|
-
"version": "1.2.0"
|
|
1246
|
-
}
|
|
1202
|
+
"name": "ComponentID"
|
|
1247
1203
|
}
|
|
1248
1204
|
},
|
|
1249
1205
|
"isOptional": false,
|
|
@@ -1272,8 +1228,7 @@
|
|
|
1272
1228
|
"line": 77,
|
|
1273
1229
|
"character": 16
|
|
1274
1230
|
},
|
|
1275
|
-
"name": "Lane"
|
|
1276
|
-
"packageName": "@teambit/legacy/dist/scope/models"
|
|
1231
|
+
"name": "Lane"
|
|
1277
1232
|
},
|
|
1278
1233
|
{
|
|
1279
1234
|
"__schema": "KeywordTypeSchema",
|
|
@@ -1304,8 +1259,7 @@
|
|
|
1304
1259
|
"line": 78,
|
|
1305
1260
|
"character": 29
|
|
1306
1261
|
},
|
|
1307
|
-
"name": "ExtensionDataList"
|
|
1308
|
-
"packageName": "@teambit/legacy/dist/consumer/config/extension-data"
|
|
1262
|
+
"name": "ExtensionDataList"
|
|
1309
1263
|
},
|
|
1310
1264
|
"isOptional": false,
|
|
1311
1265
|
"isSpread": false
|
|
@@ -1325,8 +1279,7 @@
|
|
|
1325
1279
|
"line": 79,
|
|
1326
1280
|
"character": 26
|
|
1327
1281
|
},
|
|
1328
|
-
"name": "ExtensionDataList"
|
|
1329
|
-
"packageName": "@teambit/legacy/dist/consumer/config/extension-data"
|
|
1282
|
+
"name": "ExtensionDataList"
|
|
1330
1283
|
},
|
|
1331
1284
|
"isOptional": false,
|
|
1332
1285
|
"isSpread": false
|
|
@@ -1346,8 +1299,7 @@
|
|
|
1346
1299
|
"line": 80,
|
|
1347
1300
|
"character": 27
|
|
1348
1301
|
},
|
|
1349
|
-
"name": "ExtensionDataList"
|
|
1350
|
-
"packageName": "@teambit/legacy/dist/consumer/config/extension-data"
|
|
1302
|
+
"name": "ExtensionDataList"
|
|
1351
1303
|
},
|
|
1352
1304
|
"isOptional": false,
|
|
1353
1305
|
"isSpread": false
|
|
@@ -1407,11 +1359,7 @@
|
|
|
1407
1359
|
"line": 83,
|
|
1408
1360
|
"character": 21
|
|
1409
1361
|
},
|
|
1410
|
-
"name": "Logger"
|
|
1411
|
-
"componentId": {
|
|
1412
|
-
"scope": "teambit.harmony",
|
|
1413
|
-
"name": "logger"
|
|
1414
|
-
}
|
|
1362
|
+
"name": "Logger"
|
|
1415
1363
|
},
|
|
1416
1364
|
"isOptional": false,
|
|
1417
1365
|
"isSpread": false
|
|
@@ -1431,8 +1379,7 @@
|
|
|
1431
1379
|
"line": 84,
|
|
1432
1380
|
"character": 28
|
|
1433
1381
|
},
|
|
1434
|
-
"name": "MergeStrategy"
|
|
1435
|
-
"packageName": "@teambit/legacy/dist/consumer/versions-ops/merge-version"
|
|
1382
|
+
"name": "MergeStrategy"
|
|
1436
1383
|
},
|
|
1437
1384
|
"isOptional": false,
|
|
1438
1385
|
"isSpread": false
|
|
@@ -1623,11 +1570,7 @@
|
|
|
1623
1570
|
"line": 29,
|
|
1624
1571
|
"character": 45
|
|
1625
1572
|
},
|
|
1626
|
-
"name": "WorkspacePolicyConfigKeysNames"
|
|
1627
|
-
"componentId": {
|
|
1628
|
-
"scope": "teambit.dependencies",
|
|
1629
|
-
"name": "dependency-resolver"
|
|
1630
|
-
}
|
|
1573
|
+
"name": "WorkspacePolicyConfigKeysNames"
|
|
1631
1574
|
},
|
|
1632
1575
|
{
|
|
1633
1576
|
"__schema": "TypeRefSchema",
|
|
@@ -1836,11 +1779,7 @@
|
|
|
1836
1779
|
"line": 39,
|
|
1837
1780
|
"character": 24
|
|
1838
1781
|
},
|
|
1839
|
-
"name": "Workspace"
|
|
1840
|
-
"componentId": {
|
|
1841
|
-
"scope": "teambit.workspace",
|
|
1842
|
-
"name": "workspace"
|
|
1843
|
-
}
|
|
1782
|
+
"name": "Workspace"
|
|
1844
1783
|
},
|
|
1845
1784
|
"isOptional": false,
|
|
1846
1785
|
"isSpread": false
|
|
@@ -1860,11 +1799,7 @@
|
|
|
1860
1799
|
"line": 40,
|
|
1861
1800
|
"character": 21
|
|
1862
1801
|
},
|
|
1863
|
-
"name": "Logger"
|
|
1864
|
-
"componentId": {
|
|
1865
|
-
"scope": "teambit.harmony",
|
|
1866
|
-
"name": "logger"
|
|
1867
|
-
}
|
|
1802
|
+
"name": "Logger"
|
|
1868
1803
|
},
|
|
1869
1804
|
"isOptional": false,
|
|
1870
1805
|
"isSpread": false
|
|
@@ -1884,11 +1819,7 @@
|
|
|
1884
1819
|
"line": 41,
|
|
1885
1820
|
"character": 21
|
|
1886
1821
|
},
|
|
1887
|
-
"name": "ConfigMain"
|
|
1888
|
-
"componentId": {
|
|
1889
|
-
"scope": "teambit.harmony",
|
|
1890
|
-
"name": "config"
|
|
1891
|
-
}
|
|
1822
|
+
"name": "ConfigMain"
|
|
1892
1823
|
},
|
|
1893
1824
|
"isOptional": false,
|
|
1894
1825
|
"isSpread": false
|
|
@@ -1908,11 +1839,7 @@
|
|
|
1908
1839
|
"line": 42,
|
|
1909
1840
|
"character": 27
|
|
1910
1841
|
},
|
|
1911
|
-
"name": "DependencyResolverMain"
|
|
1912
|
-
"componentId": {
|
|
1913
|
-
"scope": "teambit.dependencies",
|
|
1914
|
-
"name": "dependency-resolver"
|
|
1915
|
-
}
|
|
1842
|
+
"name": "DependencyResolverMain"
|
|
1916
1843
|
},
|
|
1917
1844
|
"isOptional": false,
|
|
1918
1845
|
"isSpread": false
|
|
@@ -2191,8 +2118,7 @@
|
|
|
2191
2118
|
"line": 276,
|
|
2192
2119
|
"character": 49
|
|
2193
2120
|
},
|
|
2194
|
-
"name": "ConsumerComponent"
|
|
2195
|
-
"packageName": "@teambit/legacy/dist/consumer/component"
|
|
2121
|
+
"name": "ConsumerComponent"
|
|
2196
2122
|
}
|
|
2197
2123
|
},
|
|
2198
2124
|
"isOptional": false,
|
|
@@ -2246,7 +2172,7 @@
|
|
|
2246
2172
|
"__schema": "VariableLikeSchema",
|
|
2247
2173
|
"location": {
|
|
2248
2174
|
"filePath": "config-merger.main.runtime.ts",
|
|
2249
|
-
"line":
|
|
2175
|
+
"line": 490,
|
|
2250
2176
|
"character": 3
|
|
2251
2177
|
},
|
|
2252
2178
|
"signature": "(property) ConfigMergerMain.slots: never[]",
|
|
@@ -2255,7 +2181,7 @@
|
|
|
2255
2181
|
"__schema": "InferenceTypeSchema",
|
|
2256
2182
|
"location": {
|
|
2257
2183
|
"filePath": "config-merger.main.runtime.ts",
|
|
2258
|
-
"line":
|
|
2184
|
+
"line": 490,
|
|
2259
2185
|
"character": 3
|
|
2260
2186
|
},
|
|
2261
2187
|
"type": "never[]"
|
|
@@ -2267,7 +2193,7 @@
|
|
|
2267
2193
|
"__schema": "VariableLikeSchema",
|
|
2268
2194
|
"location": {
|
|
2269
2195
|
"filePath": "config-merger.main.runtime.ts",
|
|
2270
|
-
"line":
|
|
2196
|
+
"line": 491,
|
|
2271
2197
|
"character": 3
|
|
2272
2198
|
},
|
|
2273
2199
|
"signature": "(property) ConfigMergerMain.dependencies: Aspect[]",
|
|
@@ -2276,7 +2202,7 @@
|
|
|
2276
2202
|
"__schema": "InferenceTypeSchema",
|
|
2277
2203
|
"location": {
|
|
2278
2204
|
"filePath": "config-merger.main.runtime.ts",
|
|
2279
|
-
"line":
|
|
2205
|
+
"line": 491,
|
|
2280
2206
|
"character": 3
|
|
2281
2207
|
},
|
|
2282
2208
|
"type": "Aspect[]"
|
|
@@ -2288,7 +2214,7 @@
|
|
|
2288
2214
|
"__schema": "VariableLikeSchema",
|
|
2289
2215
|
"location": {
|
|
2290
2216
|
"filePath": "config-merger.main.runtime.ts",
|
|
2291
|
-
"line":
|
|
2217
|
+
"line": 492,
|
|
2292
2218
|
"character": 3
|
|
2293
2219
|
},
|
|
2294
2220
|
"signature": "(property) ConfigMergerMain.runtime: RuntimeDefinition",
|
|
@@ -2297,7 +2223,7 @@
|
|
|
2297
2223
|
"__schema": "InferenceTypeSchema",
|
|
2298
2224
|
"location": {
|
|
2299
2225
|
"filePath": "config-merger.main.runtime.ts",
|
|
2300
|
-
"line":
|
|
2226
|
+
"line": 492,
|
|
2301
2227
|
"character": 3
|
|
2302
2228
|
},
|
|
2303
2229
|
"type": "RuntimeDefinition"
|
|
@@ -2309,7 +2235,7 @@
|
|
|
2309
2235
|
"__schema": "FunctionLikeSchema",
|
|
2310
2236
|
"location": {
|
|
2311
2237
|
"filePath": "config-merger.main.runtime.ts",
|
|
2312
|
-
"line":
|
|
2238
|
+
"line": 493,
|
|
2313
2239
|
"character": 3
|
|
2314
2240
|
},
|
|
2315
2241
|
"signature": "(method) ConfigMergerMain.provider([workspace, config, loggerMain, depsResolver]: [\n Workspace,\n ConfigMain,\n LoggerMain,\n DependencyResolverMain\n]): Promise<ConfigMergerMain>",
|
|
@@ -2319,7 +2245,7 @@
|
|
|
2319
2245
|
"__schema": "ParameterSchema",
|
|
2320
2246
|
"location": {
|
|
2321
2247
|
"filePath": "config-merger.main.runtime.ts",
|
|
2322
|
-
"line":
|
|
2248
|
+
"line": 493,
|
|
2323
2249
|
"character": 25
|
|
2324
2250
|
},
|
|
2325
2251
|
"name": "[ workspace, config, loggerMain, depsResolver ]",
|
|
@@ -2327,7 +2253,7 @@
|
|
|
2327
2253
|
"__schema": "TupleTypeSchema",
|
|
2328
2254
|
"location": {
|
|
2329
2255
|
"filePath": "config-merger.main.runtime.ts",
|
|
2330
|
-
"line":
|
|
2256
|
+
"line": 493,
|
|
2331
2257
|
"character": 72
|
|
2332
2258
|
},
|
|
2333
2259
|
"elements": [
|
|
@@ -2335,53 +2261,37 @@
|
|
|
2335
2261
|
"__schema": "TypeRefSchema",
|
|
2336
2262
|
"location": {
|
|
2337
2263
|
"filePath": "config-merger.main.runtime.ts",
|
|
2338
|
-
"line":
|
|
2264
|
+
"line": 494,
|
|
2339
2265
|
"character": 5
|
|
2340
2266
|
},
|
|
2341
|
-
"name": "Workspace"
|
|
2342
|
-
"componentId": {
|
|
2343
|
-
"scope": "teambit.workspace",
|
|
2344
|
-
"name": "workspace"
|
|
2345
|
-
}
|
|
2267
|
+
"name": "Workspace"
|
|
2346
2268
|
},
|
|
2347
2269
|
{
|
|
2348
2270
|
"__schema": "TypeRefSchema",
|
|
2349
2271
|
"location": {
|
|
2350
2272
|
"filePath": "config-merger.main.runtime.ts",
|
|
2351
|
-
"line":
|
|
2273
|
+
"line": 495,
|
|
2352
2274
|
"character": 5
|
|
2353
2275
|
},
|
|
2354
|
-
"name": "ConfigMain"
|
|
2355
|
-
"componentId": {
|
|
2356
|
-
"scope": "teambit.harmony",
|
|
2357
|
-
"name": "config"
|
|
2358
|
-
}
|
|
2276
|
+
"name": "ConfigMain"
|
|
2359
2277
|
},
|
|
2360
2278
|
{
|
|
2361
2279
|
"__schema": "TypeRefSchema",
|
|
2362
2280
|
"location": {
|
|
2363
2281
|
"filePath": "config-merger.main.runtime.ts",
|
|
2364
|
-
"line":
|
|
2282
|
+
"line": 496,
|
|
2365
2283
|
"character": 5
|
|
2366
2284
|
},
|
|
2367
|
-
"name": "LoggerMain"
|
|
2368
|
-
"componentId": {
|
|
2369
|
-
"scope": "teambit.harmony",
|
|
2370
|
-
"name": "logger"
|
|
2371
|
-
}
|
|
2285
|
+
"name": "LoggerMain"
|
|
2372
2286
|
},
|
|
2373
2287
|
{
|
|
2374
2288
|
"__schema": "TypeRefSchema",
|
|
2375
2289
|
"location": {
|
|
2376
2290
|
"filePath": "config-merger.main.runtime.ts",
|
|
2377
|
-
"line":
|
|
2291
|
+
"line": 497,
|
|
2378
2292
|
"character": 5
|
|
2379
2293
|
},
|
|
2380
|
-
"name": "DependencyResolverMain"
|
|
2381
|
-
"componentId": {
|
|
2382
|
-
"scope": "teambit.dependencies",
|
|
2383
|
-
"name": "dependency-resolver"
|
|
2384
|
-
}
|
|
2294
|
+
"name": "DependencyResolverMain"
|
|
2385
2295
|
}
|
|
2386
2296
|
]
|
|
2387
2297
|
},
|
|
@@ -2393,7 +2303,7 @@
|
|
|
2393
2303
|
"__schema": "InferenceTypeSchema",
|
|
2394
2304
|
"location": {
|
|
2395
2305
|
"filePath": "config-merger.main.runtime.ts",
|
|
2396
|
-
"line":
|
|
2306
|
+
"line": 493,
|
|
2397
2307
|
"character": 3
|
|
2398
2308
|
},
|
|
2399
2309
|
"type": "Promise<ConfigMergerMain>"
|
|
@@ -2411,7 +2321,7 @@
|
|
|
2411
2321
|
"__schema": "UnImplementedSchema",
|
|
2412
2322
|
"location": {
|
|
2413
2323
|
"filePath": "config-merger.main.runtime.ts",
|
|
2414
|
-
"line":
|
|
2324
|
+
"line": 506,
|
|
2415
2325
|
"character": 16
|
|
2416
2326
|
},
|
|
2417
2327
|
"name": "ConfigMergerMain",
|
|
@@ -2535,7 +2445,7 @@
|
|
|
2535
2445
|
"__schema": "UnImplementedSchema",
|
|
2536
2446
|
"location": {
|
|
2537
2447
|
"filePath": "config-merger.main.runtime.ts",
|
|
2538
|
-
"line":
|
|
2448
|
+
"line": 504,
|
|
2539
2449
|
"character": 1
|
|
2540
2450
|
},
|
|
2541
2451
|
"name": "ConfigMergerAspect.addRuntime(ConfigMergerMain);",
|
|
@@ -2653,8 +2563,7 @@
|
|
|
2653
2563
|
"line": 13,
|
|
2654
2564
|
"character": 22
|
|
2655
2565
|
},
|
|
2656
|
-
"name": "MergeStrategyResult"
|
|
2657
|
-
"internalFilePath": "component-config-merger.ts"
|
|
2566
|
+
"name": "MergeStrategyResult"
|
|
2658
2567
|
}
|
|
2659
2568
|
},
|
|
2660
2569
|
"isOptional": false,
|
|
@@ -2799,8 +2708,7 @@
|
|
|
2799
2708
|
"line": 36,
|
|
2800
2709
|
"character": 28
|
|
2801
2710
|
},
|
|
2802
|
-
"name": "MergeStrategyResult"
|
|
2803
|
-
"internalFilePath": "component-config-merger.ts"
|
|
2711
|
+
"name": "MergeStrategyResult"
|
|
2804
2712
|
},
|
|
2805
2713
|
{
|
|
2806
2714
|
"__schema": "KeywordTypeSchema",
|
|
@@ -3071,8 +2979,7 @@
|
|
|
3071
2979
|
"line": 29,
|
|
3072
2980
|
"character": 18
|
|
3073
2981
|
},
|
|
3074
|
-
"name": "GenericConfigOrRemoved"
|
|
3075
|
-
"internalFilePath": "component-config-merger.ts"
|
|
2982
|
+
"name": "GenericConfigOrRemoved"
|
|
3076
2983
|
},
|
|
3077
2984
|
"isOptional": true
|
|
3078
2985
|
},
|
|
@@ -3191,12 +3098,7 @@
|
|
|
3191
3098
|
"line": 76,
|
|
3192
3099
|
"character": 27
|
|
3193
3100
|
},
|
|
3194
|
-
"name": "ComponentID"
|
|
3195
|
-
"componentId": {
|
|
3196
|
-
"scope": "teambit.component",
|
|
3197
|
-
"name": "component-id",
|
|
3198
|
-
"version": "1.2.0"
|
|
3199
|
-
}
|
|
3101
|
+
"name": "ComponentID"
|
|
3200
3102
|
}
|
|
3201
3103
|
},
|
|
3202
3104
|
"isOptional": false,
|
|
@@ -3225,8 +3127,7 @@
|
|
|
3225
3127
|
"line": 77,
|
|
3226
3128
|
"character": 16
|
|
3227
3129
|
},
|
|
3228
|
-
"name": "Lane"
|
|
3229
|
-
"packageName": "@teambit/legacy/dist/scope/models"
|
|
3130
|
+
"name": "Lane"
|
|
3230
3131
|
},
|
|
3231
3132
|
{
|
|
3232
3133
|
"__schema": "KeywordTypeSchema",
|
|
@@ -3257,8 +3158,7 @@
|
|
|
3257
3158
|
"line": 78,
|
|
3258
3159
|
"character": 29
|
|
3259
3160
|
},
|
|
3260
|
-
"name": "ExtensionDataList"
|
|
3261
|
-
"packageName": "@teambit/legacy/dist/consumer/config/extension-data"
|
|
3161
|
+
"name": "ExtensionDataList"
|
|
3262
3162
|
},
|
|
3263
3163
|
"isOptional": false,
|
|
3264
3164
|
"isSpread": false
|
|
@@ -3278,8 +3178,7 @@
|
|
|
3278
3178
|
"line": 79,
|
|
3279
3179
|
"character": 26
|
|
3280
3180
|
},
|
|
3281
|
-
"name": "ExtensionDataList"
|
|
3282
|
-
"packageName": "@teambit/legacy/dist/consumer/config/extension-data"
|
|
3181
|
+
"name": "ExtensionDataList"
|
|
3283
3182
|
},
|
|
3284
3183
|
"isOptional": false,
|
|
3285
3184
|
"isSpread": false
|
|
@@ -3299,8 +3198,7 @@
|
|
|
3299
3198
|
"line": 80,
|
|
3300
3199
|
"character": 27
|
|
3301
3200
|
},
|
|
3302
|
-
"name": "ExtensionDataList"
|
|
3303
|
-
"packageName": "@teambit/legacy/dist/consumer/config/extension-data"
|
|
3201
|
+
"name": "ExtensionDataList"
|
|
3304
3202
|
},
|
|
3305
3203
|
"isOptional": false,
|
|
3306
3204
|
"isSpread": false
|
|
@@ -3360,11 +3258,7 @@
|
|
|
3360
3258
|
"line": 83,
|
|
3361
3259
|
"character": 21
|
|
3362
3260
|
},
|
|
3363
|
-
"name": "Logger"
|
|
3364
|
-
"componentId": {
|
|
3365
|
-
"scope": "teambit.harmony",
|
|
3366
|
-
"name": "logger"
|
|
3367
|
-
}
|
|
3261
|
+
"name": "Logger"
|
|
3368
3262
|
},
|
|
3369
3263
|
"isOptional": false,
|
|
3370
3264
|
"isSpread": false
|
|
@@ -3384,8 +3278,7 @@
|
|
|
3384
3278
|
"line": 84,
|
|
3385
3279
|
"character": 28
|
|
3386
3280
|
},
|
|
3387
|
-
"name": "MergeStrategy"
|
|
3388
|
-
"packageName": "@teambit/legacy/dist/consumer/versions-ops/merge-version"
|
|
3281
|
+
"name": "MergeStrategy"
|
|
3389
3282
|
},
|
|
3390
3283
|
"isOptional": false,
|
|
3391
3284
|
"isSpread": false
|
|
@@ -3502,8 +3395,7 @@
|
|
|
3502
3395
|
"line": 21,
|
|
3503
3396
|
"character": 57
|
|
3504
3397
|
},
|
|
3505
|
-
"name": "GenericConfigOrRemoved"
|
|
3506
|
-
"internalFilePath": "component-config-merger.ts"
|
|
3398
|
+
"name": "GenericConfigOrRemoved"
|
|
3507
3399
|
},
|
|
3508
3400
|
"isOptional": true
|
|
3509
3401
|
}
|
|
@@ -3534,11 +3426,7 @@
|
|
|
3534
3426
|
"line": 23,
|
|
3535
3427
|
"character": 39
|
|
3536
3428
|
},
|
|
3537
|
-
"name": "SerializedDependency"
|
|
3538
|
-
"componentId": {
|
|
3539
|
-
"scope": "teambit.dependencies",
|
|
3540
|
-
"name": "dependency-resolver"
|
|
3541
|
-
}
|
|
3429
|
+
"name": "SerializedDependency"
|
|
3542
3430
|
},
|
|
3543
3431
|
{
|
|
3544
3432
|
"__schema": "TypeLiteralSchema",
|
|
@@ -3688,8 +3576,7 @@
|
|
|
3688
3576
|
"line": 36,
|
|
3689
3577
|
"character": 16
|
|
3690
3578
|
},
|
|
3691
|
-
"name": "GenericConfigOrRemoved"
|
|
3692
|
-
"internalFilePath": "component-config-merger.ts"
|
|
3579
|
+
"name": "GenericConfigOrRemoved"
|
|
3693
3580
|
},
|
|
3694
3581
|
"isOptional": true
|
|
3695
3582
|
}
|
|
@@ -3791,8 +3678,7 @@
|
|
|
3791
3678
|
"line": 42,
|
|
3792
3679
|
"character": 13
|
|
3793
3680
|
},
|
|
3794
|
-
"name": "ExtensionDataEntry"
|
|
3795
|
-
"packageName": "@teambit/legacy/dist/consumer/config/extension-data"
|
|
3681
|
+
"name": "ExtensionDataEntry"
|
|
3796
3682
|
},
|
|
3797
3683
|
"isOptional": true
|
|
3798
3684
|
}
|
|
@@ -3842,7 +3728,7 @@
|
|
|
3842
3728
|
"componentId": {
|
|
3843
3729
|
"scope": "teambit.workspace",
|
|
3844
3730
|
"name": "config-merger",
|
|
3845
|
-
"version": "0.0.
|
|
3731
|
+
"version": "0.0.94"
|
|
3846
3732
|
},
|
|
3847
3733
|
"taggedModuleExports": []
|
|
3848
3734
|
}
|
|
@@ -357,7 +357,8 @@ see the conflicts below and edit your workspace.jsonc as you see fit.`;
|
|
|
357
357
|
const deps = this.depsResolver.getDependenciesFromLegacyComponent(component);
|
|
358
358
|
deps.forEach(dep => {
|
|
359
359
|
if (dep.source !== 'auto') return;
|
|
360
|
-
const depId = dep.
|
|
360
|
+
const depId = dep.getPackageName?.();
|
|
361
|
+
if (!depId) return; // unclear when this happens.
|
|
361
362
|
if (!workspacePolicyObj[depId]) return;
|
|
362
363
|
if (workspacePolicyObj[depId] === dep.version) return;
|
|
363
364
|
if (componentDepsWithMultipleVer[depId]?.includes(dep.version)) return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_semver","data","_interopRequireDefault","require","_lodash","_dependencyResolver","_componentPackageVersion","_tempy","_fsExtra","_cli","_workspace","_logger","_constants","_bitError","_mergeFiles","_config","_configMergeResult","_configMerger","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","r","e","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","nonConflictSources","mergedConfig","mergedConfigPolicy","policy","DEPENDENCIES_FIELDS","pkg","force","push","conflictDeps","conflictDepsSources","mergedConfigConflict","notConflictedPackages","keys","conflictedPackages","length","depResolver","extensions","findCoreExtension","DependencyResolverAspect","id","workspaceJsonUpdates","pkgName","currentVer","newVer","workspaceJsonConflicts","dependencies","peerDependencies","conflictPackagesToRemoveFromConfigMerge","conflictRaw","split","otherValValid","snapToSemver","currentVerInWsJson","semver","satisfies","isEmpty","result","filter","dep","reasonForChange","workspaceDepsUpdates","updateDepsInWorkspaceConfig","components","workspacePolicy","getWorkspacePolicyFromConfig","workspacePolicyObj","entries","reduce","acc","current","dependencyId","componentDepsWithMultipleVer","component","deps","getDependenciesFromLegacyComponent","source","depId","idWithoutVersion","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 mergeFiles, { MergeFileParams } from '@teambit/legacy/dist/utils/merge-files';\nimport { ConfigAspect, ConfigMain } from '@teambit/config';\nimport { ConfigMergeResult, parseVersionLineWithConflict } from './config-merge-result';\nimport { ConfigMergerAspect } from './config-merger.aspect';\n\ntype 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\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 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(\n allConfigMerge: ConfigMergeResult[]\n ): Promise<{ workspaceDepsUpdates?: WorkspaceDepsUpdates; workspaceDepsConflicts?: WorkspaceDepsConflicts }> {\n const allResults = allConfigMerge.map((c) => c.getDepsResolverResult());\n\n // aggregate all dependencies that can be updated (not conflicting)\n const nonConflictDeps: { [pkgName: string]: string[] } = {};\n const nonConflictSources: { [pkgName: string]: string[] } = {}; // for logging/debugging purposes\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 if (!mergedConfigPolicy[depField]) return;\n mergedConfigPolicy[depField].forEach((pkg: PkgEntry) => {\n if (pkg.force) return; // we only care about auto-detected dependencies\n if (nonConflictDeps[pkg.name]) {\n if (!nonConflictDeps[pkg.name].includes(pkg.version)) nonConflictDeps[pkg.name].push(pkg.version);\n nonConflictSources[pkg.name].push(configMerge.compIdStr);\n return;\n }\n nonConflictDeps[pkg.name] = [pkg.version];\n nonConflictSources[pkg.name] = [configMerge.compIdStr];\n });\n });\n });\n\n // aggregate all dependencies that have conflicts\n const conflictDeps: { [pkgName: string]: string[] } = {};\n const conflictDepsSources: { [pkgName: string]: string[] } = {}; // for logging/debugging purposes\n allConfigMerge.forEach((configMerge) => {\n const mergedConfigConflict = configMerge.getDepsResolverResult()?.conflict;\n if (!mergedConfigConflict) return;\n DEPENDENCIES_FIELDS.forEach((depField) => {\n if (!mergedConfigConflict[depField]) return;\n mergedConfigConflict[depField].forEach((pkg: PkgEntry) => {\n if (pkg.force) return; // we only care about auto-detected dependencies\n if (conflictDeps[pkg.name]) {\n if (!conflictDeps[pkg.name].includes(pkg.version)) conflictDeps[pkg.name].push(pkg.version);\n conflictDepsSources[pkg.name].push(configMerge.compIdStr);\n return;\n }\n conflictDeps[pkg.name] = [pkg.version];\n conflictDepsSources[pkg.name] = [configMerge.compIdStr];\n });\n });\n });\n\n const notConflictedPackages = Object.keys(nonConflictDeps);\n const conflictedPackages = Object.keys(conflictDeps);\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 // calculate the workspace.json updates\n const workspaceJsonUpdates = {};\n notConflictedPackages.forEach((pkgName) => {\n if (nonConflictDeps[pkgName].length > 1) {\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 return;\n }\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 const newVer = nonConflictDeps[pkgName][0];\n if (currentVer === newVer) return;\n workspaceJsonUpdates[pkgName] = [currentVer, newVer];\n policy[depField][pkgName] = newVer;\n this.logger.debug(\n `update workspace.jsonc: ${pkgName} from ${currentVer} to ${newVer}. Triggered by: ${nonConflictSources[\n pkgName\n ].join(', ')}`\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[pkgName].length > 1) {\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 return;\n }\n const conflictRaw = conflictDeps[pkgName][0];\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 this.logger.debug(\n `conflict workspace.jsonc: ${pkgName} current: ${currentVerInWsJson}, other: ${otherValValid}. Triggered by: ${conflictDepsSources[\n pkgName\n ].join(', ')}`\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 };\n }\n\n async updateDepsInWorkspaceConfig(components: ConsumerComponent[]): Promise<WorkspaceConfigUpdateResult | undefined> {\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.idWithoutVersion;\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 (!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 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","_constants","_bitError","_mergeFiles","_config","_configMergeResult","_configMerger","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","r","e","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","nonConflictSources","mergedConfig","mergedConfigPolicy","policy","DEPENDENCIES_FIELDS","pkg","force","push","conflictDeps","conflictDepsSources","mergedConfigConflict","notConflictedPackages","keys","conflictedPackages","length","depResolver","extensions","findCoreExtension","DependencyResolverAspect","id","workspaceJsonUpdates","pkgName","currentVer","newVer","workspaceJsonConflicts","dependencies","peerDependencies","conflictPackagesToRemoveFromConfigMerge","conflictRaw","split","otherValValid","snapToSemver","currentVerInWsJson","semver","satisfies","isEmpty","result","filter","dep","reasonForChange","workspaceDepsUpdates","updateDepsInWorkspaceConfig","components","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 mergeFiles, { MergeFileParams } from '@teambit/legacy/dist/utils/merge-files';\nimport { ConfigAspect, ConfigMain } from '@teambit/config';\nimport { ConfigMergeResult, parseVersionLineWithConflict } from './config-merge-result';\nimport { ConfigMergerAspect } from './config-merger.aspect';\n\ntype 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\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 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(\n allConfigMerge: ConfigMergeResult[]\n ): Promise<{ workspaceDepsUpdates?: WorkspaceDepsUpdates; workspaceDepsConflicts?: WorkspaceDepsConflicts }> {\n const allResults = allConfigMerge.map((c) => c.getDepsResolverResult());\n\n // aggregate all dependencies that can be updated (not conflicting)\n const nonConflictDeps: { [pkgName: string]: string[] } = {};\n const nonConflictSources: { [pkgName: string]: string[] } = {}; // for logging/debugging purposes\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 if (!mergedConfigPolicy[depField]) return;\n mergedConfigPolicy[depField].forEach((pkg: PkgEntry) => {\n if (pkg.force) return; // we only care about auto-detected dependencies\n if (nonConflictDeps[pkg.name]) {\n if (!nonConflictDeps[pkg.name].includes(pkg.version)) nonConflictDeps[pkg.name].push(pkg.version);\n nonConflictSources[pkg.name].push(configMerge.compIdStr);\n return;\n }\n nonConflictDeps[pkg.name] = [pkg.version];\n nonConflictSources[pkg.name] = [configMerge.compIdStr];\n });\n });\n });\n\n // aggregate all dependencies that have conflicts\n const conflictDeps: { [pkgName: string]: string[] } = {};\n const conflictDepsSources: { [pkgName: string]: string[] } = {}; // for logging/debugging purposes\n allConfigMerge.forEach((configMerge) => {\n const mergedConfigConflict = configMerge.getDepsResolverResult()?.conflict;\n if (!mergedConfigConflict) return;\n DEPENDENCIES_FIELDS.forEach((depField) => {\n if (!mergedConfigConflict[depField]) return;\n mergedConfigConflict[depField].forEach((pkg: PkgEntry) => {\n if (pkg.force) return; // we only care about auto-detected dependencies\n if (conflictDeps[pkg.name]) {\n if (!conflictDeps[pkg.name].includes(pkg.version)) conflictDeps[pkg.name].push(pkg.version);\n conflictDepsSources[pkg.name].push(configMerge.compIdStr);\n return;\n }\n conflictDeps[pkg.name] = [pkg.version];\n conflictDepsSources[pkg.name] = [configMerge.compIdStr];\n });\n });\n });\n\n const notConflictedPackages = Object.keys(nonConflictDeps);\n const conflictedPackages = Object.keys(conflictDeps);\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 // calculate the workspace.json updates\n const workspaceJsonUpdates = {};\n notConflictedPackages.forEach((pkgName) => {\n if (nonConflictDeps[pkgName].length > 1) {\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 return;\n }\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 const newVer = nonConflictDeps[pkgName][0];\n if (currentVer === newVer) return;\n workspaceJsonUpdates[pkgName] = [currentVer, newVer];\n policy[depField][pkgName] = newVer;\n this.logger.debug(\n `update workspace.jsonc: ${pkgName} from ${currentVer} to ${newVer}. Triggered by: ${nonConflictSources[\n pkgName\n ].join(', ')}`\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[pkgName].length > 1) {\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 return;\n }\n const conflictRaw = conflictDeps[pkgName][0];\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 this.logger.debug(\n `conflict workspace.jsonc: ${pkgName} current: ${currentVerInWsJson}, other: ${otherValValid}. Triggered by: ${conflictDepsSources[\n pkgName\n ].join(', ')}`\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 };\n }\n\n async updateDepsInWorkspaceConfig(components: ConsumerComponent[]): Promise<WorkspaceConfigUpdateResult | undefined> {\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 (!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 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":";;;;;;AAAA,SAAAA,QAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,OAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,QAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,OAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,oBAAA;EAAA,MAAAJ,IAAA,GAAAE,OAAA;EAAAE,mBAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAOA,SAAAK,yBAAA;EAAA,MAAAL,IAAA,GAAAE,OAAA;EAAAG,wBAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAM,OAAA;EAAA,MAAAN,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAI,MAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAO,SAAA;EAAA,MAAAP,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAK,QAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAQ,KAAA;EAAA,MAAAR,IAAA,GAAAE,OAAA;EAAAM,IAAA,YAAAA,CAAA;IAAA,OAAAR,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAS,WAAA;EAAA,MAAAT,IAAA,GAAAE,OAAA;EAAAO,UAAA,YAAAA,CAAA;IAAA,OAAAT,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAU,QAAA;EAAA,MAAAV,IAAA,GAAAE,OAAA;EAAAQ,OAAA,YAAAA,CAAA;IAAA,OAAAV,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAW,WAAA;EAAA,MAAAX,IAAA,GAAAE,OAAA;EAAAS,UAAA,YAAAA,CAAA;IAAA,OAAAX,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAY,UAAA;EAAA,MAAAZ,IAAA,GAAAE,OAAA;EAAAU,SAAA,YAAAA,CAAA;IAAA,OAAAZ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAa,YAAA;EAAA,MAAAb,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAW,WAAA,YAAAA,CAAA;IAAA,OAAAb,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAc,QAAA;EAAA,MAAAd,IAAA,GAAAE,OAAA;EAAAY,OAAA,YAAAA,CAAA;IAAA,OAAAd,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAe,mBAAA;EAAA,MAAAf,IAAA,GAAAE,OAAA;EAAAa,kBAAA,YAAAA,CAAA;IAAA,OAAAf,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAgB,cAAA;EAAA,MAAAhB,IAAA,GAAAE,OAAA;EAAAc,aAAA,YAAAA,CAAA;IAAA,OAAAhB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA4D,SAAAC,uBAAAgB,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,gBAAAH,GAAA,EAAAI,GAAA,EAAAC,KAAA,IAAAD,GAAA,GAAAE,cAAA,CAAAF,GAAA,OAAAA,GAAA,IAAAJ,GAAA,IAAAO,MAAA,CAAAC,cAAA,CAAAR,GAAA,EAAAI,GAAA,IAAAC,KAAA,EAAAA,KAAA,EAAAI,UAAA,QAAAC,YAAA,QAAAC,QAAA,oBAAAX,GAAA,CAAAI,GAAA,IAAAC,KAAA,WAAAL,GAAA;AAAA,SAAAM,eAAAM,CAAA,QAAAC,CAAA,GAAAC,YAAA,CAAAF,CAAA,uCAAAC,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAF,CAAA,EAAAG,CAAA,2BAAAH,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAI,CAAA,GAAAJ,CAAA,CAAAK,MAAA,CAAAC,WAAA,kBAAAF,CAAA,QAAAH,CAAA,GAAAG,CAAA,CAAAG,IAAA,CAAAP,CAAA,EAAAG,CAAA,uCAAAF,CAAA,SAAAA,CAAA,YAAAO,SAAA,yEAAAL,CAAA,GAAAM,MAAA,GAAAC,MAAA,EAAAV,CAAA;AAI5D,MAAMW,cAAc,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC;;AAEiB;AAC2C;;AAQhH,MAAMC,gBAAgB,CAAC;EAC5BC,WAAWA,CACDC,SAAoB,EACpBC,MAAc,EACdC,MAAkB,EAClBC,YAAoC,EAC5C;IAAA,KAJQH,SAAoB,GAApBA,SAAoB;IAAA,KACpBC,MAAc,GAAdA,MAAc;IAAA,KACdC,MAAkB,GAAlBA,MAAkB;IAAA,KAClBC,YAAoC,GAApCA,YAAoC;EAC3C;EAEH,MAAMC,qCAAqCA,CAACC,cAAmC,EAAE;IAC/E,MAAMC,eAAe,GAAG,IAAI,CAACN,SAAS,CAACO,oBAAoB,CAAC,CAAC;IAC7DF,cAAc,CAACG,OAAO,CAAEC,WAAW,IAAK;MACtC,MAAMC,QAAQ,GAAGD,WAAW,CAACE,yBAAyB,CAAC,CAAC;MACxD,IAAI,CAACD,QAAQ,EAAE;MACfJ,eAAe,CAACM,WAAW,CAACH,WAAW,CAACI,SAAS,EAAEH,QAAQ,CAAC;IAC9D,CAAC,CAAC;IACF,IAAIJ,eAAe,CAACQ,WAAW,CAAC,CAAC,EAAE;MACjC,MAAMR,eAAe,CAACS,KAAK,CAAC,CAAC;IAC/B;EACF;EAEA,MAAMC,0CAA0CA,CAC9CC,sBAA8C,EAClB;IAC5B,IAAI;MACF,MAAM,IAAI,CAACC,gCAAgC,CAACD,sBAAsB,CAAC;MACnE,OAAOE,SAAS;IAClB,CAAC,CAAC,OAAOC,GAAQ,EAAE;MACjB,IAAI,CAACnB,MAAM,CAACoB,KAAK,CAAE,gDAA+C,EAAED,GAAG,CAAC;MACxE,MAAME,QAAQ,GAAI,qEAAoEF,GAAG,CAACG,OAAQ;AACxG,sEAAsE;MAChE,MAAMC,YAAY,GAAG3B,cAAc,CAAC4B,GAAG,CAAEC,QAAQ,IAAK;QACpD,IAAI,CAACT,sBAAsB,CAACS,QAAQ,CAAC,EAAE,OAAO,EAAE;QAChD,OAAOT,sBAAsB,CAACS,QAAQ,CAAC,CAACD,GAAG,CAAC,CAAC;UAAEE,IAAI;UAAEC;QAAQ,CAAC,KAAK;UACjE,MAAM;YAAEC,UAAU;YAAEC;UAAS,CAAC,GAAG,IAAAC,iDAA4B,EAACH,OAAO,CAAC;UACtE,OAAQ,IAAGF,QAAS,KAAIC,IAAK,WAAUE,UAAW,aAAYC,QAAS,EAAC;QAC1E,CAAC,CAAC;MACJ,CAAC,CAAC,CACCE,IAAI,CAAC,CAAC,CACNC,IAAI,CAAC,IAAI,CAAC;MACb,OAAO,KAAIC,oBAAQ,EAAE,GAAEZ,QAAS,KAAIE,YAAa,EAAC,CAAC;IACrD;EACF;EAEA,MAAcN,gCAAgCA,CAACD,sBAA8C,EAAE;IAC7F,MAAMkB,QAAQ,GAAG,IAAI,CAACjC,MAAM,CAACkC,eAAe;IAC5C,IAAI,CAACD,QAAQ,EAAE,MAAM,IAAIE,KAAK,CAAE,gCAA+B,CAAC;IAChE,MAAMC,WAAW,GAAGH,QAAQ,CAACI,IAAI;IACjC,MAAMC,sBAAsB,GAAG,MAAMC,kBAAE,CAACC,QAAQ,CAACJ,WAAW,EAAE,MAAM,CAAC;IACrE,IAAIK,cAAc,GAAGH,sBAAsB;IAC3C3C,cAAc,CAACW,OAAO,CAAEkB,QAAQ,IAAK;MACnC,IAAI,CAACT,sBAAsB,CAACS,QAAQ,CAAC,EAAE;MACvCT,sBAAsB,CAACS,QAAQ,CAAC,CAAClB,OAAO,CAAC,CAAC;QAAEmB,IAAI;QAAEC;MAAQ,CAAC,KAAK;QAC9D,MAAM;UAAEC,UAAU;UAAEC;QAAS,CAAC,GAAG,IAAAC,iDAA4B,EAACH,OAAO,CAAC;QACtE;QACA,MAAMgB,WAAW,GAAI,IAAGjB,IAAK,OAAME,UAAW,GAAE;QAChD,IAAI,CAACc,cAAc,CAACE,QAAQ,CAACD,WAAW,CAAC,EAAE;UACzC,MAAM,IAAIP,KAAK,CAAE,iCAAgCO,WAAY,yBAAwB,CAAC;QACxF;QACAD,cAAc,GAAGA,cAAc,CAACG,OAAO,CAACF,WAAW,EAAG,IAAGjB,IAAK,OAAMG,QAAS,GAAE,CAAC;MAClF,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,MAAMiB,YAAY,GAAG,MAAMC,gBAAK,CAACjC,KAAK,CAAC,EAAE,CAAC;IAC1C,MAAMkC,aAAa,GAAG,MAAMD,gBAAK,CAACjC,KAAK,CAAC4B,cAAc,CAAC;IACvD,MAAMO,gBAAiC,GAAG;MACxCC,QAAQ,EAAEb,WAAW;MACrBc,WAAW,EAAE;QACXC,KAAK,EAAE,MAAM;QACbd,IAAI,EAAED;MACR,CAAC;MACDgB,QAAQ,EAAE;QACRf,IAAI,EAAEQ;MACR,CAAC;MACDQ,SAAS,EAAE;QACTF,KAAK,EAAE,QAAQ;QACfd,IAAI,EAAEU;MACR;IACF,CAAC;IACD,MAAMO,WAAW,GAAG,MAAM,IAAAC,qBAAU,EAACP,gBAAgB,CAAC;IACtD,MAAMQ,YAAY,GAAGF,WAAW,CAAC9C,QAAQ;IACzC,IAAI,CAACgD,YAAY,EAAE;MACjB,IAAI,CAACzD,MAAM,CAAC0D,KAAK,CAAE,sBAAqBnB,sBAAuB,EAAC,CAAC;MACjE,IAAI,CAACvC,MAAM,CAAC0D,KAAK,CAAE,iBAAgBhB,cAAe,EAAC,CAAC;MACpD,MAAM,IAAIN,KAAK,CAAC,+FAA+F,CAAC;IAClH;IACA,MAAMF,QAAQ,CAACyB,gBAAgB,CAAC,0BAA0B,CAAC;IAC3D,IAAI,CAAC3D,MAAM,CAAC0D,KAAK,CAAC,wCAAwC,CAAC;IAC3D,MAAMlB,kBAAE,CAACoB,SAAS,CAACvB,WAAW,EAAEoB,YAAY,CAAC;EAC/C;EAEA,MAAMI,oCAAoCA,CACxCzD,cAAmC,EACwE;IAC3G,MAAM0D,UAAU,GAAG1D,cAAc,CAACoB,GAAG,CAAEuC,CAAC,IAAKA,CAAC,CAACC,qBAAqB,CAAC,CAAC,CAAC;;IAEvE;IACA,MAAMC,eAAgD,GAAG,CAAC,CAAC;IAC3D,MAAMC,kBAAmD,GAAG,CAAC,CAAC,CAAC,CAAC;IAChE9D,cAAc,CAACG,OAAO,CAAEC,WAAW,IAAK;MACtC,MAAM2D,YAAY,GAAG3D,WAAW,CAACwD,qBAAqB,CAAC,CAAC,EAAEG,YAAY;MACtE,IAAI,CAACA,YAAY,IAAIA,YAAY,KAAK,GAAG,EAAE;MAC3C,MAAMC,kBAAkB,GAAGD,YAAY,CAACE,MAAM,IAAI,CAAC,CAAC;MACpDC,gCAAmB,CAAC/D,OAAO,CAAEkB,QAAQ,IAAK;QACxC,IAAI,CAAC2C,kBAAkB,CAAC3C,QAAQ,CAAC,EAAE;QACnC2C,kBAAkB,CAAC3C,QAAQ,CAAC,CAAClB,OAAO,CAAEgE,GAAa,IAAK;UACtD,IAAIA,GAAG,CAACC,KAAK,EAAE,OAAO,CAAC;UACvB,IAAIP,eAAe,CAACM,GAAG,CAAC7C,IAAI,CAAC,EAAE;YAC7B,IAAI,CAACuC,eAAe,CAACM,GAAG,CAAC7C,IAAI,CAAC,CAACkB,QAAQ,CAAC2B,GAAG,CAAC5C,OAAO,CAAC,EAAEsC,eAAe,CAACM,GAAG,CAAC7C,IAAI,CAAC,CAAC+C,IAAI,CAACF,GAAG,CAAC5C,OAAO,CAAC;YACjGuC,kBAAkB,CAACK,GAAG,CAAC7C,IAAI,CAAC,CAAC+C,IAAI,CAACjE,WAAW,CAACI,SAAS,CAAC;YACxD;UACF;UACAqD,eAAe,CAACM,GAAG,CAAC7C,IAAI,CAAC,GAAG,CAAC6C,GAAG,CAAC5C,OAAO,CAAC;UACzCuC,kBAAkB,CAACK,GAAG,CAAC7C,IAAI,CAAC,GAAG,CAAClB,WAAW,CAACI,SAAS,CAAC;QACxD,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ,CAAC,CAAC;;IAEF;IACA,MAAM8D,YAA6C,GAAG,CAAC,CAAC;IACxD,MAAMC,mBAAoD,GAAG,CAAC,CAAC,CAAC,CAAC;IACjEvE,cAAc,CAACG,OAAO,CAAEC,WAAW,IAAK;MACtC,MAAMoE,oBAAoB,GAAGpE,WAAW,CAACwD,qBAAqB,CAAC,CAAC,EAAEvD,QAAQ;MAC1E,IAAI,CAACmE,oBAAoB,EAAE;MAC3BN,gCAAmB,CAAC/D,OAAO,CAAEkB,QAAQ,IAAK;QACxC,IAAI,CAACmD,oBAAoB,CAACnD,QAAQ,CAAC,EAAE;QACrCmD,oBAAoB,CAACnD,QAAQ,CAAC,CAAClB,OAAO,CAAEgE,GAAa,IAAK;UACxD,IAAIA,GAAG,CAACC,KAAK,EAAE,OAAO,CAAC;UACvB,IAAIE,YAAY,CAACH,GAAG,CAAC7C,IAAI,CAAC,EAAE;YAC1B,IAAI,CAACgD,YAAY,CAACH,GAAG,CAAC7C,IAAI,CAAC,CAACkB,QAAQ,CAAC2B,GAAG,CAAC5C,OAAO,CAAC,EAAE+C,YAAY,CAACH,GAAG,CAAC7C,IAAI,CAAC,CAAC+C,IAAI,CAACF,GAAG,CAAC5C,OAAO,CAAC;YAC3FgD,mBAAmB,CAACJ,GAAG,CAAC7C,IAAI,CAAC,CAAC+C,IAAI,CAACjE,WAAW,CAACI,SAAS,CAAC;YACzD;UACF;UACA8D,YAAY,CAACH,GAAG,CAAC7C,IAAI,CAAC,GAAG,CAAC6C,GAAG,CAAC5C,OAAO,CAAC;UACtCgD,mBAAmB,CAACJ,GAAG,CAAC7C,IAAI,CAAC,GAAG,CAAClB,WAAW,CAACI,SAAS,CAAC;QACzD,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,MAAMiE,qBAAqB,GAAGjG,MAAM,CAACkG,IAAI,CAACb,eAAe,CAAC;IAC1D,MAAMc,kBAAkB,GAAGnG,MAAM,CAACkG,IAAI,CAACJ,YAAY,CAAC;IACpD,IAAI,CAACG,qBAAqB,CAACG,MAAM,IAAI,CAACD,kBAAkB,CAACC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE1E,MAAM7C,eAAe,GAAG,IAAI,CAAClC,MAAM,CAACkC,eAAe;IACnD,IAAI,CAACA,eAAe,EAAE,MAAM,IAAIC,KAAK,CAAE,qEAAoE,CAAC;IAC5G,MAAM6C,WAAW,GAAG9C,eAAe,CAAC+C,UAAU,CAACC,iBAAiB,CAACC,8CAAwB,CAACC,EAAE,CAAC;IAC7F,MAAMhB,MAAM,GAAGY,WAAW,EAAEhF,MAAM,CAACoE,MAAM;IACzC,IAAI,CAACA,MAAM,EAAE;MACX,OAAO,CAAC,CAAC;IACX;;IAEA;IACA,MAAMiB,oBAAoB,GAAG,CAAC,CAAC;IAC/BT,qBAAqB,CAACtE,OAAO,CAAEgF,OAAO,IAAK;MACzC,IAAItB,eAAe,CAACsB,OAAO,CAAC,CAACP,MAAM,GAAG,CAAC,EAAE;QACvC;QACA;MACF;MACAV,gCAAmB,CAAC/D,OAAO,CAAEkB,QAAQ,IAAK;QACxC,IAAI,CAAC4C,MAAM,CAAC5C,QAAQ,CAAC,GAAG8D,OAAO,CAAC,EAAE,OAAO,CAAC;QAC1C,MAAMC,UAAU,GAAGnB,MAAM,CAAC5C,QAAQ,CAAC,CAAC8D,OAAO,CAAC;QAC5C,MAAME,MAAM,GAAGxB,eAAe,CAACsB,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAIC,UAAU,KAAKC,MAAM,EAAE;QAC3BH,oBAAoB,CAACC,OAAO,CAAC,GAAG,CAACC,UAAU,EAAEC,MAAM,CAAC;QACpDpB,MAAM,CAAC5C,QAAQ,CAAC,CAAC8D,OAAO,CAAC,GAAGE,MAAM;QAClC,IAAI,CAACzF,MAAM,CAAC0D,KAAK,CACd,2BAA0B6B,OAAQ,SAAQC,UAAW,OAAMC,MAAO,mBAAkBvB,kBAAkB,CACrGqB,OAAO,CACR,CAACvD,IAAI,CAAC,IAAI,CAAE,EACf,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;;IAEF;IACA,MAAM0D,sBAAsB,GAAG;MAAEC,YAAY,EAAE,EAAE;MAAEC,gBAAgB,EAAE;IAAG,CAAC;IACzE,MAAMC,uCAAiD,GAAG,EAAE;IAC5Dd,kBAAkB,CAACxE,OAAO,CAAEgF,OAAO,IAAK;MACtC,IAAIb,YAAY,CAACa,OAAO,CAAC,CAACP,MAAM,GAAG,CAAC,EAAE;QACpC;QACA;MACF;MACA,MAAMc,WAAW,GAAGpB,YAAY,CAACa,OAAO,CAAC,CAAC,CAAC,CAAC;MAC5C,MAAM,GAAG3D,UAAU,EAAEC,QAAQ,CAAC,GAAGiE,WAAW,CAACC,KAAK,CAAC,IAAI,CAAC;MACxD;MACA,MAAMC,aAAa,GAAG,IAAAC,uCAAY,EAACpE,QAAQ,CAAC;MAC5CjC,cAAc,CAACW,OAAO,CAAEkB,QAAQ,IAAK;QACnC,IAAI,CAAC4C,MAAM,CAAC5C,QAAQ,CAAC,GAAG8D,OAAO,CAAC,EAAE;QAClC,MAAMW,kBAAkB,GAAG7B,MAAM,CAAC5C,QAAQ,CAAC,CAAC8D,OAAO,CAAC;QACpD,IAAI,CAACW,kBAAkB,EAAE;QACzB;QACAL,uCAAuC,CAACpB,IAAI,CAACc,OAAO,CAAC;QACrD,IAAIY,iBAAM,CAACC,SAAS,CAACJ,aAAa,EAAEE,kBAAkB,CAAC,EAAE;UACvD;UACA;QACF;QACAR,sBAAsB,CAACjE,QAAQ,CAAC,CAACgD,IAAI,CAAC;UACpC/C,IAAI,EAAE6D,OAAO;UACb5D,OAAO,EAAEmE,WAAW,CAACjD,OAAO,CAACjB,UAAU,EAAEsE,kBAAkB,CAAC;UAC5D1B,KAAK,EAAE;QACT,CAAC,CAAC;QACFqB,uCAAuC,CAACpB,IAAI,CAACc,OAAO,CAAC;QACrD,IAAI,CAACvF,MAAM,CAAC0D,KAAK,CACd,6BAA4B6B,OAAQ,aAAYW,kBAAmB,YAAWF,aAAc,mBAAkBrB,mBAAmB,CAChIY,OAAO,CACR,CAACvD,IAAI,CAAC,IAAI,CAAE,EACf,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;IACFpC,cAAc,CAACW,OAAO,CAAEkB,QAAQ,IAAK;MACnC,IAAI,IAAA4E,iBAAO,EAACX,sBAAsB,CAACjE,QAAQ,CAAC,CAAC,EAAE,OAAOiE,sBAAsB,CAACjE,QAAQ,CAAC;IACxF,CAAC,CAAC;IAEF,IAAIoE,uCAAuC,CAACb,MAAM,EAAE;MAClDlB,UAAU,CAACvD,OAAO,CAAE+F,MAAM,IAAK;QAC7B,IAAIA,MAAM,EAAE7F,QAAQ,EAAE;UACpB6D,gCAAmB,CAAC/D,OAAO,CAAEkB,QAAQ,IAAK;YACxC,IAAI,CAAC6E,MAAM,CAAC7F,QAAQ,GAAGgB,QAAQ,CAAC,EAAE;YAClC6E,MAAM,CAAC7F,QAAQ,CAACgB,QAAQ,CAAC,GAAG6E,MAAM,CAAC7F,QAAQ,GAAGgB,QAAQ,CAAC,CAAC8E,MAAM,CAC3DC,GAAG,IAAK,CAACX,uCAAuC,CAACjD,QAAQ,CAAC4D,GAAG,CAAC9E,IAAI,CACrE,CAAC;YACD,IAAI,CAAC4E,MAAM,CAAC7F,QAAQ,CAACgB,QAAQ,CAAC,CAACuD,MAAM,EAAE,OAAOsB,MAAM,CAAC7F,QAAQ,CAACgB,QAAQ,CAAC;UACzE,CAAC,CAAC;UACF,IAAI,IAAA4E,iBAAO,EAACC,MAAM,CAAC7F,QAAQ,CAAC,EAAE6F,MAAM,CAAC7F,QAAQ,GAAGS,SAAS;QAC3D;MACF,CAAC,CAAC;IACJ;IAEA,IAAItC,MAAM,CAACkG,IAAI,CAACQ,oBAAoB,CAAC,CAACN,MAAM,EAAE;MAC5C,MAAM7C,eAAe,CAACrB,KAAK,CAAC;QAAE2F,eAAe,EAAE;MAA8B,CAAC,CAAC;IACjF;IAEA,IAAI,CAACzG,MAAM,CAAC0D,KAAK,CAAC,+BAA+B,EAAE4B,oBAAoB,CAAC;IACxE,IAAI,CAACtF,MAAM,CAAC0D,KAAK,CAAC,iCAAiC,EAAEgC,sBAAsB,CAAC;IAE5E,OAAO;MACLgB,oBAAoB,EAAE9H,MAAM,CAACkG,IAAI,CAACQ,oBAAoB,CAAC,CAACN,MAAM,GAAGM,oBAAoB,GAAGpE,SAAS;MACjGF,sBAAsB,EAAEpC,MAAM,CAACkG,IAAI,CAACY,sBAAsB,CAAC,CAACV,MAAM,GAAGU,sBAAsB,GAAGxE;IAChG,CAAC;EACH;EAEA,MAAMyF,2BAA2BA,CAACC,UAA+B,EAAoD;IACnH,MAAMC,eAAe,GAAG,IAAI,CAAC3G,YAAY,CAAC4G,4BAA4B,CAAC,CAAC;IACxE,MAAMC,kBAAkB,GAAGF,eAAe,CAACG,OAAO,CAACC,MAAM,CAAC,CAACC,GAAG,EAAEC,OAAO,KAAK;MAC1ED,GAAG,CAACC,OAAO,CAACC,YAAY,CAAC,GAAGD,OAAO,CAACzI,KAAK,CAACiD,OAAO;MACjD,OAAOuF,GAAG;IACZ,CAAC,EAAE,CAAC,CAAC,CAAC;IACN,MAAMG,4BAAsD,GAAG,CAAC,CAAC;IACjET,UAAU,CAACrG,OAAO,CAAE+G,SAAS,IAAK;MAChC,MAAMC,IAAI,GAAG,IAAI,CAACrH,YAAY,CAACsH,kCAAkC,CAACF,SAAS,CAAC;MAC5EC,IAAI,CAAChH,OAAO,CAAEiG,GAAG,IAAK;QACpB,IAAIA,GAAG,CAACiB,MAAM,KAAK,MAAM,EAAE;QAC3B,MAAMC,KAAK,GAAGlB,GAAG,CAACmB,cAAc,GAAG,CAAC;QACpC,IAAI,CAACD,KAAK,EAAE,OAAO,CAAC;QACpB,IAAI,CAACX,kBAAkB,CAACW,KAAK,CAAC,EAAE;QAChC,IAAIX,kBAAkB,CAACW,KAAK,CAAC,KAAKlB,GAAG,CAAC7E,OAAO,EAAE;QAC/C,IAAI0F,4BAA4B,CAACK,KAAK,CAAC,EAAE9E,QAAQ,CAAC4D,GAAG,CAAC7E,OAAO,CAAC,EAAE;QAEhE,CAAC0F,4BAA4B,CAACK,KAAK,CAAC,KAAK,EAAE,EAAEjD,IAAI,CAAC+B,GAAG,CAAC7E,OAAO,CAAC;MAChE,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,MAAMiG,SAAS,GAAGhJ,MAAM,CAACkG,IAAI,CAACuC,4BAA4B,CAAC,CACxD7F,GAAG,CACDkG,KAAK,IACH,GAAEA,KAAM,kBAAiBX,kBAAkB,CAACW,KAAK,CAAE,iBAAgBL,4BAA4B,CAACK,KAAK,CAAC,CAAC1F,IAAI,CAC1G,IACF,CAAE,EACN,CAAC,CACAA,IAAI,CAAC,IAAI,CAAC;IACb,IAAI,CAAChC,MAAM,CAAC6H,IAAI,CAAE,iDAAgDD,SAAU,EAAC,CAAC;IAE9E,MAAME,aAAa,GAAGlJ,MAAM,CAACkG,IAAI,CAACuC,4BAA4B,CAAC,CAACJ,MAAM,CAAC,CAACC,GAAG,EAAEQ,KAAK,KAAK;MACrF;MACA,IAAIL,4BAA4B,CAACK,KAAK,CAAC,CAAC1C,MAAM,GAAG,CAAC,EAAE,OAAOkC,GAAG;MAC9DA,GAAG,CAACQ,KAAK,CAAC,GAAGL,4BAA4B,CAACK,KAAK,CAAC,CAAC,CAAC,CAAC;MACnD,OAAOR,GAAG;IACZ,CAAC,EAAE,CAAC,CAAC,CAAC;IAEN,IAAI,IAAAb,iBAAO,EAACyB,aAAa,CAAC,EAAE;MAC1B,OAAO5G,SAAS;IAClB;IAEA,MAAMwF,oBAA0C,GAAG,CAAC,CAAC;IACrD,MAAM1F,sBAA8C,GAAG;MAAE2E,YAAY,EAAE,EAAE;MAAEC,gBAAgB,EAAE;IAAG,CAAC;IAEjG,MAAMmC,IAAc,GAAG,EAAE;IAEzBnJ,MAAM,CAACkG,IAAI,CAACgD,aAAa,CAAC,CAACvH,OAAO,CAAEmH,KAAK,IAAK;MAC5C,MAAMM,YAAoB,GAAGF,aAAa,CAACJ,KAAK,CAAC;MACjD,MAAMO,UAAkB,GAAGlB,kBAAkB,CAACW,KAAK,CAAC;MACpD,MAAMQ,kBAAkB,GAAGC,OAAO,CAAChC,iBAAM,CAACiC,KAAK,CAACJ,YAAY,CAAC,CAAC;MAC9D,MAAMK,gBAAgB,GAAG,CAACH,kBAAkB,IAAIC,OAAO,CAAChC,iBAAM,CAACmC,UAAU,CAACN,YAAY,CAAC,CAAC;MAExF,MAAMO,kBAAkB,GAAIC,MAAc,IAAK;QAC7CT,IAAI,CAACtD,IAAI,CAAE,GAAEiD,KAAM,oBAAmBc,MAAO,EAAC,CAAC;MACjD,CAAC;MAED,IAAI,CAACN,kBAAkB,IAAI,CAACG,gBAAgB,EAAE;QAC5CE,kBAAkB,CAAE,sBAAqB,CAAC;QAC1C,OAAO,CAAC;MACV;MACA,MAAME,gBAAgB,GAAGN,OAAO,CAAChC,iBAAM,CAACiC,KAAK,CAACH,UAAU,CAAC,CAAC;MAC1D,MAAMS,cAAc,GAAG,CAACD,gBAAgB,IAAIN,OAAO,CAAChC,iBAAM,CAACmC,UAAU,CAACL,UAAU,CAAC,CAAC;MAClF,IAAI,CAACQ,gBAAgB,IAAI,CAACC,cAAc,EAAE;QACxCH,kBAAkB,CAAE,sBAAqB,CAAC;QAC1C,OAAO,CAAC;MACV;;MAEA;MACA,MAAMI,SAAS,GACb9B,eAAe,CAACG,OAAO,CAAC4B,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACzB,YAAY,KAAKM,KAAK,CAAC,EAAEoB,aAAa,KAAK,MAAM,GACnF,kBAAkB,GAClB,cAAc;MAEpB,MAAMC,WAAW,GAAIC,YAAqB,IAAK;QAC7C,IAAIA,YAAY,EAAE;UAChB;UACA,MAAMC,kBAAkB,GAAGhB,UAAU,CAAC,CAAC,CAAC;UACxC,MAAMiB,QAAQ,GAAGD,kBAAkB,GAAGjB,YAAY;UAClD,IAAI,CAAC7B,iBAAM,CAACmC,UAAU,CAACY,QAAQ,CAAC,EAAE;YAChC,MAAMC,OAAO,GAAI,4BAA2BF,kBAAmB,QAAOjB,YAAa,mCAAkC;YACrH,IAAI,CAAChI,MAAM,CAACoJ,IAAI,CAACD,OAAO,CAAC;YACzBZ,kBAAkB,CAACY,OAAO,CAAC;YAC3B;UACF;UACApB,IAAI,CAACtD,IAAI,CAAE,GAAEiD,KAAM,oBAAmBO,UAAW,OAAMiB,QAAS,wBAAuBlB,YAAa,GAAE,CAAC;UACvGtB,oBAAoB,CAACgB,KAAK,CAAC,GAAG,CAACO,UAAU,EAAEiB,QAAQ,CAAC;QACtD,CAAC,MAAM;UACLnB,IAAI,CAACtD,IAAI,CAAE,GAAEiD,KAAM,oBAAmBO,UAAW,OAAMD,YAAa,EAAC,CAAC;UACtEtB,oBAAoB,CAACgB,KAAK,CAAC,GAAG,CAACO,UAAU,EAAED,YAAY,CAAC;QAC1D;MACF,CAAC;MACD,MAAMqB,aAAa,GAAGA,CAAA,KAAM;QAC1BrI,sBAAsB,CAAC2H,SAAS,CAAC,CAAClE,IAAI,CAAC;UAAE/C,IAAI,EAAEgG,KAAK;UAAE/F,OAAO,EAAG,aAAYsG,UAAW,KAAID,YAAa;QAAE,CAAC,CAAC;QAC5GD,IAAI,CAACtD,IAAI,CAAE,GAAEiD,KAAM,sBAAqBO,UAAW,aAAYD,YAAa,EAAC,CAAC;MAChF,CAAC;;MAED;MACA,IAAIE,kBAAkB,IAAIO,gBAAgB,EAAE;QAC1C,IAAItC,iBAAM,CAACmD,EAAE,CAACtB,YAAY,EAAEC,UAAU,CAAC,EAAE;UACvCoB,aAAa,CAAC,CAAC;UACf;QACF;QACAd,kBAAkB,CAAE,uBAAsBN,UAAW,oBAAmBD,YAAa,YAAW,CAAC;QACjG;MACF;;MAEA;MACA,IAAIK,gBAAgB,IAAIK,cAAc,EAAE;QACtC,IAAI,IAAI,CAACa,gCAAgC,CAACvB,YAAY,EAAEC,UAAU,CAAC,EAAE;UACnEc,WAAW,CAAC,CAAC;UACb;QACF;QACAR,kBAAkB,CAAE,qBAAoBN,UAAW,oBAAmBD,YAAa,YAAW,CAAC;QAC/F;MACF;MAEA,IAAIE,kBAAkB,IAAIQ,cAAc,EAAE;QACxC,MAAMc,QAAQ,GAAGrD,iBAAM,CAACsD,UAAU,CAACxB,UAAU,CAAC;QAC9C,IAAI,CAACuB,QAAQ,EAAE;UACb,IAAI,CAACxJ,MAAM,CAACoJ,IAAI,CAAE,0CAAyCnB,UAAW,EAAC,CAAC;UACxEM,kBAAkB,CAAE,0CAAyCN,UAAW,UAAS,CAAC;UAClF;QACF;QACA,IAAI9B,iBAAM,CAACmD,EAAE,CAACE,QAAQ,EAAExB,YAAY,CAAC,EAAE;UACrCO,kBAAkB,CAAE,2BAA0BN,UAAW,oBAAmBD,YAAa,YAAW,CAAC;UACrG;QACF;QACA,IAAI7B,iBAAM,CAACC,SAAS,CAAC4B,YAAY,EAAEC,UAAU,CAAC,EAAE;UAC9Cc,WAAW,CAACd,UAAU,CAAC;UACvB;QACF;QACAoB,aAAa,CAAC,CAAC;QACf;MACF;MAEA,IAAIhB,gBAAgB,IAAII,gBAAgB,EAAE;QACxC,IAAItC,iBAAM,CAACC,SAAS,CAAC6B,UAAU,EAAED,YAAY,CAAC,EAAE;UAC9Ce,WAAW,CAAC,CAAC;UACb;QACF;QACA,MAAMW,UAAU,GAAGvD,iBAAM,CAACsD,UAAU,CAACzB,YAAY,CAAC;QAClD,IAAI,CAAC0B,UAAU,EAAE;UACf,IAAI,CAAC1J,MAAM,CAACoJ,IAAI,CAAE,0CAAyCM,UAAW,EAAC,CAAC;UACxEnB,kBAAkB,CAAE,0CAAyCmB,UAAW,YAAW,CAAC;UACpF;QACF;QACA,IAAIvD,iBAAM,CAACmD,EAAE,CAACI,UAAU,EAAEzB,UAAU,CAAC,EAAE;UACrCoB,aAAa,CAAC,CAAC;UACf;QACF;QACAd,kBAAkB,CAAE,6BAA4BmB,UAAW,iBAAgBzB,UAAW,UAAS,CAAC;MAClG;MACA,MAAM,IAAI7F,KAAK,CAAE,yBAAwB4F,YAAa,SAAQC,UAAW,EAAC,CAAC;IAC7E,CAAC,CAAC;IAEFrI,cAAc,CAACW,OAAO,CAAEkB,QAAQ,IAAK;MACnC,IAAI,IAAA4E,iBAAO,EAACrF,sBAAsB,CAACS,QAAQ,CAAC,CAAC,EAAE,OAAOT,sBAAsB,CAACS,QAAQ,CAAC;IACxF,CAAC,CAAC;IAEF,IAAI,CAACzB,MAAM,CAAC0D,KAAK,CAAE,+CAA8CqE,IAAI,CAAC/F,IAAI,CAAC,IAAI,CAAE,EAAC,CAAC;IACnF,IAAI,CAAChC,MAAM,CAAC0D,KAAK,CAAC,0CAA0C,EAAEgD,oBAAoB,CAAC;IACnF,IAAI,CAAC1G,MAAM,CAAC0D,KAAK,CAAE,mCAAkCiG,IAAI,CAACC,SAAS,CAAC5I,sBAAsB,EAAEE,SAAS,EAAE,CAAC,CAAE,EAAC,CAAC;IAE5G,MAAM,IAAI,CAAC2I,8BAA8B,CAACnD,oBAAoB,EAAEG,eAAe,CAAC;IAChF,IAAIiD,iCAAoD;IACxD,IAAI,CAAC,IAAAzD,iBAAO,EAACrF,sBAAsB,CAAC,EAAE;MACpC8I,iCAAiC,GAAG,MAAM,IAAI,CAAC/I,0CAA0C,CAACC,sBAAsB,CAAC;IACnH;IAEA,OAAO;MACL0F,oBAAoB,EAAE,IAAAL,iBAAO,EAACK,oBAAoB,CAAC,GAAGxF,SAAS,GAAGwF,oBAAoB;MACtF1F,sBAAsB,EAAE,IAAAqF,iBAAO,EAACrF,sBAAsB,CAAC,GAAGE,SAAS,GAAGF,sBAAsB;MAC5F8I,iCAAiC;MACjC/B;IACF,CAAC;EACH;EAEA,MAAc8B,8BAA8BA,CAACnD,oBAA0C,EAAEqD,QAAyB,EAAE;IAClH,IAAI,IAAA1D,iBAAO,EAACK,oBAAoB,CAAC,EAAE;IACnC,MAAMsD,YAAY,GAAItC,KAAa,IAAK;MACtC,MAAMiB,SAAS,GAAGoB,QAAQ,CAAC/C,OAAO,CAAC4B,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACzB,YAAY,KAAKM,KAAK,CAAC,EAAEoB,aAAa;MACvF,IAAI,CAACH,SAAS,EAAE,MAAM,IAAIvG,KAAK,CAAE,mCAAkCsF,KAAM,EAAC,CAAC;MAC3E,OAAOiB,SAAS;IAClB,CAAC;IAED,MAAMsB,yBAAiD,GAAGrL,MAAM,CAACkG,IAAI,CAAC4B,oBAAoB,CAAC,CAAClF,GAAG,CAAE+D,OAAO,IAAK;MAC3G,OAAO;QACL6B,YAAY,EAAE7B,OAAO;QACrBuD,aAAa,EAAEkB,YAAY,CAACzE,OAAO,CAAC;QACpC7G,KAAK,EAAE;UACLiD,OAAO,EAAE+E,oBAAoB,CAACnB,OAAO,CAAC,CAAC,CAAC;QAC1C;MACF,CAAC;IACH,CAAC,CAAC;IACF,IAAI,CAACrF,YAAY,CAACgK,eAAe,CAACD,yBAAyB,EAAE;MAC3DE,cAAc,EAAE;IAClB,CAAC,CAAC;IACF,MAAM,IAAI,CAACjK,YAAY,CAACkK,aAAa,CAAC,oCAAoC,CAAC;EAC7E;;EAEA;AACF;AACA;AACA;AACA;AACA;EACUb,gCAAgCA,CAACc,MAAc,EAAEC,MAAc,EAAE;IACvE,MAAMC,WAAW,GAAGpE,iBAAM,CAACsD,UAAU,CAACY,MAAM,CAAC;IAC7C,MAAMG,WAAW,GAAGrE,iBAAM,CAACsD,UAAU,CAACa,MAAM,CAAC;IAC7C,IAAI,CAACC,WAAW,IAAI,CAACC,WAAW,EAAE,OAAO,KAAK;IAC9C,OAAOrE,iBAAM,CAACmD,EAAE,CAACiB,WAAW,EAAEC,WAAW,CAAC;EAC5C;EAKA,aAAaC,QAAQA,CAAC,CAAC1K,SAAS,EAAEE,MAAM,EAAEyK,UAAU,EAAExK,YAAY,CAKjE,EAAE;IACD,MAAMF,MAAM,GAAG0K,UAAU,CAACC,YAAY,CAACC,kCAAkB,CAACvF,EAAE,CAAC;IAC7D,OAAO,IAAIxF,gBAAgB,CAACE,SAAS,EAAEC,MAAM,EAAEC,MAAM,EAAEC,YAAY,CAAC;EACtE;AACF;AAAC2K,OAAA,CAAAhL,gBAAA,GAAAA,gBAAA;AAAArB,eAAA,CAjdYqB,gBAAgB,WAqcZ,EAAE;AAAArB,eAAA,CArcNqB,gBAAgB,kBAscL,CAACiL,4BAAe,EAAEC,sBAAY,EAAEC,sBAAY,EAAE5F,8CAAwB,CAAC;AAAA5G,eAAA,CAtclFqB,gBAAgB,aAucVoL,kBAAW;AAY9BL,kCAAkB,CAACM,UAAU,CAACrL,gBAAgB,CAAC;AAAC,IAAAsL,QAAA,GAAAN,OAAA,CAAAtM,OAAA,GAEjCsB,gBAAgB","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/config-merger",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.94",
|
|
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.94"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"lodash": "4.17.21",
|
|
@@ -17,14 +17,14 @@
|
|
|
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/logger": "0.0.
|
|
24
|
-
"@teambit/cli": "0.0.
|
|
20
|
+
"@teambit/builder": "1.0.227",
|
|
21
|
+
"@teambit/dependency-resolver": "1.0.227",
|
|
22
|
+
"@teambit/envs": "1.0.227",
|
|
23
|
+
"@teambit/logger": "0.0.953",
|
|
24
|
+
"@teambit/cli": "0.0.860",
|
|
25
25
|
"@teambit/component-package-version": "0.0.433",
|
|
26
|
-
"@teambit/config": "0.0.
|
|
27
|
-
"@teambit/workspace": "1.0.
|
|
26
|
+
"@teambit/config": "0.0.978",
|
|
27
|
+
"@teambit/workspace": "1.0.227"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@types/lodash": "4.14.165",
|
|
@@ -32,10 +32,10 @@
|
|
|
32
32
|
"@types/fs-extra": "9.0.7",
|
|
33
33
|
"@types/mocha": "10.0.1",
|
|
34
34
|
"chai": "4.3.0",
|
|
35
|
-
"@teambit/harmony.envs.core-aspect-env": "0.0.
|
|
35
|
+
"@teambit/harmony.envs.core-aspect-env": "0.0.30"
|
|
36
36
|
},
|
|
37
37
|
"peerDependencies": {
|
|
38
|
-
"@teambit/legacy": "1.0.
|
|
38
|
+
"@teambit/legacy": "1.0.682"
|
|
39
39
|
},
|
|
40
40
|
"license": "Apache-2.0",
|
|
41
41
|
"optionalDependencies": {},
|
package/tsconfig.json
CHANGED
|
@@ -20,7 +20,8 @@
|
|
|
20
20
|
"emitDeclarationOnly": true,
|
|
21
21
|
"strict": true,
|
|
22
22
|
"strictPropertyInitialization": false,
|
|
23
|
-
"noImplicitAny": false
|
|
23
|
+
"noImplicitAny": false,
|
|
24
|
+
"composite": true
|
|
24
25
|
},
|
|
25
26
|
"exclude": [
|
|
26
27
|
"artifacts",
|
|
@@ -35,5 +36,25 @@
|
|
|
35
36
|
"include": [
|
|
36
37
|
"**/*",
|
|
37
38
|
"**/*.json"
|
|
39
|
+
],
|
|
40
|
+
"references": [
|
|
41
|
+
{
|
|
42
|
+
"path": "/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.pipelines_builder@1.0.227"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"path": "/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.envs_envs@1.0.227"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"path": "/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.harmony_logger@0.0.953"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"path": "/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.harmony_cli@0.0.860"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"path": "/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.harmony_config@0.0.978"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"path": "/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.workspace_workspace@1.0.227"
|
|
58
|
+
}
|
|
38
59
|
]
|
|
39
60
|
}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { ComponentID } from '@teambit/component-id';
|
|
2
|
-
import { Logger } from '@teambit/logger';
|
|
3
|
-
import { Lane } from '@teambit/legacy/dist/scope/models';
|
|
4
|
-
import { ExtensionDataList } from '@teambit/legacy/dist/consumer/config/extension-data';
|
|
5
|
-
import { MergeStrategy } from '@teambit/legacy/dist/consumer/versions-ops/merge-version';
|
|
6
|
-
import { ConfigMergeResult } from './config-merge-result';
|
|
7
|
-
export type GenericConfigOrRemoved = Record<string, any> | '-';
|
|
8
|
-
export declare const conflictIndicator = "CONFLICT::";
|
|
9
|
-
export type MergeStrategyResult = {
|
|
10
|
-
id: string;
|
|
11
|
-
mergedConfig?: GenericConfigOrRemoved;
|
|
12
|
-
conflict?: Record<string, any>;
|
|
13
|
-
};
|
|
14
|
-
/**
|
|
15
|
-
* perform 3-way merge of component configuration (aspects).
|
|
16
|
-
* normally this is needed when merging one lane into another. the component may have different aspects config in each lane.
|
|
17
|
-
* the baseAspects are the aspects of the component in the diversion point (the common ancestor of the two lanes).
|
|
18
|
-
* the currentAspects are the aspects of the component in the current lane.
|
|
19
|
-
* the otherAspects are the aspects of the component in the other lane. this is the lane we merge into the current lane.
|
|
20
|
-
*
|
|
21
|
-
* the basic merging strategy is a simple comparison between the aspect-configs, if they're different, we have a conflict.
|
|
22
|
-
* we have two special cases:
|
|
23
|
-
*
|
|
24
|
-
* 1. dependency-resolver: we do a deeper check for the policy, we compare each dependency separately. also, we take
|
|
25
|
-
* into account not only the config, but also the data. this is needed because some dependencies are automatically
|
|
26
|
-
* added by Bit (from the import statements in the code) and they're not in the config. the final config has the deps
|
|
27
|
-
* from both sources, the config and the data. The way we know to differentiate between them is by the "force" prop.
|
|
28
|
-
* the config has always force: true.
|
|
29
|
-
*
|
|
30
|
-
* 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
|
|
31
|
-
* in the deps-resolver (because the env is added as a devDependency) and also in the aspect itself (because
|
|
32
|
-
* teambit.envs/env has only the id and not the version). to make it simpler, we ignore the envs in the deps-resolver
|
|
33
|
-
* we ignore the individual aspect that is the env itself. we only show teambit.envs/env and we put the env id and
|
|
34
|
-
* version. later, when the component is loaded, we split the id and the version and put them in the correct places.
|
|
35
|
-
* see workspace.componentExtension / adjustEnvsOnConfigMerge for more details.
|
|
36
|
-
*/
|
|
37
|
-
export declare class ComponentConfigMerger {
|
|
38
|
-
private compIdStr;
|
|
39
|
-
private workspaceIds;
|
|
40
|
-
private currentAspects;
|
|
41
|
-
private baseAspects;
|
|
42
|
-
private otherAspects;
|
|
43
|
-
private currentLabel;
|
|
44
|
-
private otherLabel;
|
|
45
|
-
private logger;
|
|
46
|
-
private mergeStrategy;
|
|
47
|
-
private currentEnv;
|
|
48
|
-
private otherEnv;
|
|
49
|
-
private baseEnv?;
|
|
50
|
-
private handledExtIds;
|
|
51
|
-
private otherLaneIdsStr;
|
|
52
|
-
constructor(compIdStr: string, workspaceIds: ComponentID[], otherLane: Lane | undefined, currentAspects: ExtensionDataList, baseAspects: ExtensionDataList, otherAspects: ExtensionDataList, currentLabel: string, otherLabel: string, logger: Logger, mergeStrategy: MergeStrategy);
|
|
53
|
-
merge(): ConfigMergeResult;
|
|
54
|
-
private populateEnvs;
|
|
55
|
-
private envStrategy;
|
|
56
|
-
private areConfigsEqual;
|
|
57
|
-
private mergePerStrategy;
|
|
58
|
-
private basicConfigMerge;
|
|
59
|
-
private depResolverStrategy;
|
|
60
|
-
private isIdInWorkspaceOrOtherLane;
|
|
61
|
-
private getIdFromWorkspace;
|
|
62
|
-
private isEnv;
|
|
63
|
-
private getConfig;
|
|
64
|
-
private getPolicy;
|
|
65
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { MergeStrategyResult } from './component-config-merger';
|
|
2
|
-
export declare class ConfigMergeResult {
|
|
3
|
-
readonly compIdStr: string;
|
|
4
|
-
private currentLabel;
|
|
5
|
-
private otherLabel;
|
|
6
|
-
private results;
|
|
7
|
-
constructor(compIdStr: string, currentLabel: string, otherLabel: string, results: MergeStrategyResult[]);
|
|
8
|
-
hasConflicts(): boolean;
|
|
9
|
-
generateMergeConflictFile(): string | null;
|
|
10
|
-
getSuccessfullyMergedConfig(): Record<string, any>;
|
|
11
|
-
getDepsResolverResult(): MergeStrategyResult | undefined;
|
|
12
|
-
private generateConflictStringPerAspect;
|
|
13
|
-
private depsResolverConfigGenerator;
|
|
14
|
-
private basicConflictGenerator;
|
|
15
|
-
private formatConflict;
|
|
16
|
-
private concatenateConflicts;
|
|
17
|
-
}
|
|
18
|
-
export declare function parseVersionLineWithConflict(line: string): {
|
|
19
|
-
currentVal: string;
|
|
20
|
-
otherVal: string;
|
|
21
|
-
};
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { DependencyResolverMain, WorkspacePolicyConfigKeysNames } from '@teambit/dependency-resolver';
|
|
2
|
-
import { Workspace } from '@teambit/workspace';
|
|
3
|
-
import { Logger, LoggerMain } from '@teambit/logger';
|
|
4
|
-
import ConsumerComponent from '@teambit/legacy/dist/consumer/component';
|
|
5
|
-
import { ConfigMain } from '@teambit/config';
|
|
6
|
-
import { ConfigMergeResult } from './config-merge-result';
|
|
7
|
-
export type WorkspaceDepsUpdates = {
|
|
8
|
-
[pkgName: string]: [string, string];
|
|
9
|
-
};
|
|
10
|
-
export type WorkspaceDepsConflicts = Record<WorkspacePolicyConfigKeysNames, Array<{
|
|
11
|
-
name: string;
|
|
12
|
-
version: string;
|
|
13
|
-
}>>;
|
|
14
|
-
export type WorkspaceConfigUpdateResult = {
|
|
15
|
-
workspaceDepsUpdates?: WorkspaceDepsUpdates;
|
|
16
|
-
workspaceDepsConflicts?: WorkspaceDepsConflicts;
|
|
17
|
-
workspaceConfigConflictWriteError?: Error;
|
|
18
|
-
logs?: string[];
|
|
19
|
-
};
|
|
20
|
-
export declare class ConfigMergerMain {
|
|
21
|
-
private workspace;
|
|
22
|
-
private logger;
|
|
23
|
-
private config;
|
|
24
|
-
private depsResolver;
|
|
25
|
-
constructor(workspace: Workspace, logger: Logger, config: ConfigMain, depsResolver: DependencyResolverMain);
|
|
26
|
-
generateConfigMergeConflictFileForAll(allConfigMerge: ConfigMergeResult[]): Promise<void>;
|
|
27
|
-
writeWorkspaceJsoncWithConflictsGracefully(workspaceDepsConflicts: WorkspaceDepsConflicts): Promise<Error | undefined>;
|
|
28
|
-
private writeWorkspaceJsoncWithConflicts;
|
|
29
|
-
updateWorkspaceJsoncWithDepsIfNeeded(allConfigMerge: ConfigMergeResult[]): Promise<{
|
|
30
|
-
workspaceDepsUpdates?: WorkspaceDepsUpdates;
|
|
31
|
-
workspaceDepsConflicts?: WorkspaceDepsConflicts;
|
|
32
|
-
}>;
|
|
33
|
-
updateDepsInWorkspaceConfig(components: ConsumerComponent[]): Promise<WorkspaceConfigUpdateResult | undefined>;
|
|
34
|
-
private updateWsConfigWithGivenChanges;
|
|
35
|
-
/**
|
|
36
|
-
* if both versions are ranges, it's hard to check which one is bigger. sometimes it's even impossible.
|
|
37
|
-
* remember that a range can be something like `1.2 <1.2.9 || >2.0.0`.
|
|
38
|
-
* this check is naive in a way that it assumes the range is simple, such as "^1.2.3" or "~1.2.3.
|
|
39
|
-
* in this case, it's possible to check for the minimum version and compare it.
|
|
40
|
-
*/
|
|
41
|
-
private isRange1GreaterThanRange2Naively;
|
|
42
|
-
static slots: never[];
|
|
43
|
-
static dependencies: import("@teambit/harmony").Aspect[];
|
|
44
|
-
static runtime: import("@teambit/harmony").RuntimeDefinition;
|
|
45
|
-
static provider([workspace, config, loggerMain, depsResolver]: [
|
|
46
|
-
Workspace,
|
|
47
|
-
ConfigMain,
|
|
48
|
-
LoggerMain,
|
|
49
|
-
DependencyResolverMain
|
|
50
|
-
]): Promise<ConfigMergerMain>;
|
|
51
|
-
}
|
|
52
|
-
export default ConfigMergerMain;
|
package/dist/index.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { ConfigMergerAspect } from './config-merger.aspect';
|
|
2
|
-
export type { ConfigMergerMain, WorkspaceDepsUpdates, WorkspaceDepsConflicts, WorkspaceConfigUpdateResult, } from './config-merger.main.runtime';
|
|
3
|
-
export type { ConfigMergeResult } from './config-merge-result';
|
|
4
|
-
export { ComponentConfigMerger } from './component-config-merger';
|
|
5
|
-
export default ConfigMergerAspect;
|
|
6
|
-
export { ConfigMergerAspect };
|
|
File without changes
|