@rxap/config 19.2.0-dev.3 → 19.3.0-dev.0
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/CHANGELOG.md +10 -0
- package/compodoc/changelog.html +7 -0
- package/compodoc/dependencies.html +2 -2
- package/compodoc/injectables/ConfigService.html +130 -87
- package/compodoc/interfaces/ConfigLoadOptions.html +149 -52
- package/compodoc/js/search/search_index.js +2 -2
- package/compodoc/miscellaneous/enumerations.html +53 -0
- package/compodoc/properties.html +1 -1
- package/docs/documentation.json +820 -656
- package/docs/html/assets/hierarchy.js +1 -1
- package/docs/html/assets/navigation.js +1 -1
- package/docs/html/assets/search.js +1 -1
- package/docs/html/classes/ConfigLoaderService.html +2 -2
- package/docs/html/classes/ConfigService.html +6 -6
- package/docs/html/classes/ConfigTestingService.html +2 -2
- package/docs/html/enums/ConfigLoadMethod.html +5 -0
- package/docs/html/enums/ConfigLoadingStrategy.html +2 -2
- package/docs/html/functions/ProvideConfig.html +1 -1
- package/docs/html/functions/dnsLookup.html +1 -1
- package/docs/html/functions/dnsResolver.html +1 -1
- package/docs/html/functions/fetchCidContent.html +1 -1
- package/docs/html/functions/fetchCidContentAsJson.html +1 -1
- package/docs/html/functions/fetchCidContentViaHttp.html +1 -1
- package/docs/html/functions/fetchContentViaHttp.html +1 -1
- package/docs/html/functions/raceSuccess.html +2 -2
- package/docs/html/hierarchy.html +1 -1
- package/docs/html/index.html +2 -2
- package/docs/html/interfaces/AppsNavigationConfig.html +2 -2
- package/docs/html/interfaces/Config.html +2 -2
- package/docs/html/interfaces/ConfigLoadOptions.html +10 -5
- package/docs/html/interfaces/LogoConfig.html +2 -2
- package/docs/html/interfaces/NavigationConfig.html +2 -2
- package/docs/html/interfaces/Oauth2Config.html +2 -2
- package/docs/html/interfaces/i18nConfig.html +2 -2
- package/docs/html/modules.html +1 -1
- package/docs/html/types/AnySchema.html +1 -1
- package/docs/html/types/Join.html +1 -1
- package/docs/html/types/LanguagesConfig.html +1 -1
- package/docs/html/types/Leaves.html +1 -1
- package/docs/html/types/NoInferType.html +1 -1
- package/docs/html/types/Paths.html +1 -1
- package/docs/html/variables/RXAP_CONFIG.html +1 -1
- package/docs/markdown/README.md +1 -1
- package/docs/markdown/classes/ConfigLoaderService.md +7 -7
- package/docs/markdown/classes/ConfigService.md +22 -22
- package/docs/markdown/classes/ConfigTestingService.md +8 -8
- package/docs/markdown/enumerations/ConfigLoadMethod.md +41 -0
- package/docs/markdown/enumerations/ConfigLoadingStrategy.md +4 -4
- package/docs/markdown/functions/ProvideConfig.md +2 -2
- package/docs/markdown/functions/dnsLookup.md +2 -2
- package/docs/markdown/functions/dnsResolver.md +2 -2
- package/docs/markdown/functions/fetchCidContent.md +2 -2
- package/docs/markdown/functions/fetchCidContentAsJson.md +2 -2
- package/docs/markdown/functions/fetchCidContentViaHttp.md +2 -2
- package/docs/markdown/functions/fetchContentViaHttp.md +2 -2
- package/docs/markdown/functions/raceSuccess.md +2 -2
- package/docs/markdown/globals.md +3 -2
- package/docs/markdown/interfaces/AppsNavigationConfig.md +12 -12
- package/docs/markdown/interfaces/Config.md +6 -6
- package/docs/markdown/interfaces/ConfigLoadOptions.md +27 -13
- package/docs/markdown/interfaces/LogoConfig.md +5 -5
- package/docs/markdown/interfaces/NavigationConfig.md +9 -9
- package/docs/markdown/interfaces/Oauth2Config.md +3 -3
- package/docs/markdown/interfaces/i18nConfig.md +4 -4
- package/docs/markdown/type-aliases/AnySchema.md +2 -2
- package/docs/markdown/type-aliases/Join.md +2 -2
- package/docs/markdown/type-aliases/LanguagesConfig.md +2 -2
- package/docs/markdown/type-aliases/Leaves.md +2 -2
- package/docs/markdown/type-aliases/NoInferType.md +2 -2
- package/docs/markdown/type-aliases/Paths.md +2 -2
- package/docs/markdown/variables/RXAP_CONFIG.md +2 -2
- package/docs/wiki/Class.ConfigLoaderService.md +6 -6
- package/docs/wiki/Class.ConfigService.md +21 -21
- package/docs/wiki/Class.ConfigTestingService.md +7 -7
- package/docs/wiki/Enumeration.ConfigLoadMethod.md +37 -0
- package/docs/wiki/Enumeration.ConfigLoadingStrategy.md +3 -3
- package/docs/wiki/Function.ProvideConfig.md +1 -1
- package/docs/wiki/Function.dnsLookup.md +1 -1
- package/docs/wiki/Function.dnsResolver.md +1 -1
- package/docs/wiki/Function.fetchCidContent.md +1 -1
- package/docs/wiki/Function.fetchCidContentAsJson.md +1 -1
- package/docs/wiki/Function.fetchCidContentViaHttp.md +1 -1
- package/docs/wiki/Function.fetchContentViaHttp.md +1 -1
- package/docs/wiki/Function.raceSuccess.md +1 -1
- package/docs/wiki/Interface.AppsNavigationConfig.md +11 -11
- package/docs/wiki/Interface.Config.md +5 -5
- package/docs/wiki/Interface.ConfigLoadOptions.md +26 -12
- package/docs/wiki/Interface.LogoConfig.md +4 -4
- package/docs/wiki/Interface.NavigationConfig.md +8 -8
- package/docs/wiki/Interface.Oauth2Config.md +2 -2
- package/docs/wiki/Interface.i18nConfig.md +3 -3
- package/docs/wiki/TypeAlias.AnySchema.md +1 -1
- package/docs/wiki/TypeAlias.Join.md +1 -1
- package/docs/wiki/TypeAlias.LanguagesConfig.md +1 -1
- package/docs/wiki/TypeAlias.Leaves.md +1 -1
- package/docs/wiki/TypeAlias.NoInferType.md +1 -1
- package/docs/wiki/TypeAlias.Paths.md +1 -1
- package/docs/wiki/Variable.RXAP_CONFIG.md +1 -1
- package/docs/wiki/_Sidebar.md +1 -0
- package/docs/wiki/globals.md +2 -1
- package/fesm2022/rxap-config.mjs +78 -57
- package/fesm2022/rxap-config.mjs.map +1 -1
- package/lib/config.service.d.ts +17 -0
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,16 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [19.3.0-dev.0](https://gitlab.com/rxap/packages/compare/@rxap/config@19.2.0...@rxap/config@19.3.0-dev.0) (2026-02-09)
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
- **config:** add configurable loading order for config sources ([6aac03b](https://gitlab.com/rxap/packages/commit/6aac03bec5dfc5b8c162f424b90fdd64bfc3899e))
|
|
11
|
+
|
|
12
|
+
# [19.2.0](https://gitlab.com/rxap/packages/compare/@rxap/config@19.2.0-dev.3...@rxap/config@19.2.0) (2026-01-23)
|
|
13
|
+
|
|
14
|
+
**Note:** Version bump only for package @rxap/config
|
|
15
|
+
|
|
6
16
|
# [19.2.0-dev.3](https://gitlab.com/rxap/packages/compare/@rxap/config@19.2.0-dev.2...@rxap/config@19.2.0-dev.3) (2026-01-19)
|
|
7
17
|
|
|
8
18
|
### Features
|
package/compodoc/changelog.html
CHANGED
|
@@ -85,6 +85,13 @@
|
|
|
85
85
|
<h1>Change Log</h1>
|
|
86
86
|
<p>All notable changes to this project will be documented in this file.
|
|
87
87
|
See <a href="https://conventionalcommits.org">Conventional Commits</a> for commit guidelines.</p>
|
|
88
|
+
<h1><a href="https://gitlab.com/rxap/packages/compare/@rxap/config@19.2.0...@rxap/config@19.3.0-dev.0">19.3.0-dev.0</a> (2026-02-09)</h1>
|
|
89
|
+
<h3>Features</h3>
|
|
90
|
+
<ul>
|
|
91
|
+
<li><strong>config:</strong> add configurable loading order for config sources (<a href="https://gitlab.com/rxap/packages/commit/6aac03bec5dfc5b8c162f424b90fdd64bfc3899e">6aac03b</a>)</li>
|
|
92
|
+
</ul>
|
|
93
|
+
<h1><a href="https://gitlab.com/rxap/packages/compare/@rxap/config@19.2.0-dev.3...@rxap/config@19.2.0">19.2.0</a> (2026-01-23)</h1>
|
|
94
|
+
<p><strong>Note:</strong> Version bump only for package @rxap/config</p>
|
|
88
95
|
<h1><a href="https://gitlab.com/rxap/packages/compare/@rxap/config@19.2.0-dev.2...@rxap/config@19.2.0-dev.3">19.2.0-dev.3</a> (2026-01-19)</h1>
|
|
89
96
|
<h3>Features</h3>
|
|
90
97
|
<ul>
|
|
@@ -117,9 +117,9 @@
|
|
|
117
117
|
<li>
|
|
118
118
|
<b>@angular/core</b> : ^19.2.1</li>
|
|
119
119
|
<li>
|
|
120
|
-
<b>@rxap/environment</b> : ^19.0
|
|
120
|
+
<b>@rxap/environment</b> : ^19.1.0</li>
|
|
121
121
|
<li>
|
|
122
|
-
<b>@rxap/utilities</b> : ^16.5.
|
|
122
|
+
<b>@rxap/utilities</b> : ^16.5.1-dev.0</li>
|
|
123
123
|
<li>
|
|
124
124
|
<b>rxjs</b> : ^7.8.1</li>
|
|
125
125
|
</ul>
|
|
@@ -260,7 +260,7 @@
|
|
|
260
260
|
</tr>
|
|
261
261
|
<tr>
|
|
262
262
|
<td class="col-md-4">
|
|
263
|
-
<div class="io-line">Defined in <a href="" data-line="
|
|
263
|
+
<div class="io-line">Defined in <a href="" data-line="101" class="link-to-prism">src/lib/config.service.ts:101</a></div>
|
|
264
264
|
</td>
|
|
265
265
|
</tr>
|
|
266
266
|
|
|
@@ -325,8 +325,8 @@
|
|
|
325
325
|
|
|
326
326
|
<tr>
|
|
327
327
|
<td class="col-md-4">
|
|
328
|
-
<div class="io-line">Defined in <a href="" data-line="
|
|
329
|
-
class="link-to-prism">src/lib/config.service.ts:
|
|
328
|
+
<div class="io-line">Defined in <a href="" data-line="547"
|
|
329
|
+
class="link-to-prism">src/lib/config.service.ts:547</a></div>
|
|
330
330
|
</td>
|
|
331
331
|
</tr>
|
|
332
332
|
|
|
@@ -364,8 +364,8 @@
|
|
|
364
364
|
|
|
365
365
|
<tr>
|
|
366
366
|
<td class="col-md-4">
|
|
367
|
-
<div class="io-line">Defined in <a href="" data-line="
|
|
368
|
-
class="link-to-prism">src/lib/config.service.ts:
|
|
367
|
+
<div class="io-line">Defined in <a href="" data-line="551"
|
|
368
|
+
class="link-to-prism">src/lib/config.service.ts:551</a></div>
|
|
369
369
|
</td>
|
|
370
370
|
</tr>
|
|
371
371
|
|
|
@@ -441,8 +441,8 @@
|
|
|
441
441
|
|
|
442
442
|
<tr>
|
|
443
443
|
<td class="col-md-4">
|
|
444
|
-
<div class="io-line">Defined in <a href="" data-line="
|
|
445
|
-
class="link-to-prism">src/lib/config.service.ts:
|
|
444
|
+
<div class="io-line">Defined in <a href="" data-line="552"
|
|
445
|
+
class="link-to-prism">src/lib/config.service.ts:552</a></div>
|
|
446
446
|
</td>
|
|
447
447
|
</tr>
|
|
448
448
|
|
|
@@ -530,8 +530,8 @@
|
|
|
530
530
|
|
|
531
531
|
<tr>
|
|
532
532
|
<td class="col-md-4">
|
|
533
|
-
<div class="io-line">Defined in <a href="" data-line="
|
|
534
|
-
class="link-to-prism">src/lib/config.service.ts:
|
|
533
|
+
<div class="io-line">Defined in <a href="" data-line="553"
|
|
534
|
+
class="link-to-prism">src/lib/config.service.ts:553</a></div>
|
|
535
535
|
</td>
|
|
536
536
|
</tr>
|
|
537
537
|
|
|
@@ -619,8 +619,8 @@
|
|
|
619
619
|
|
|
620
620
|
<tr>
|
|
621
621
|
<td class="col-md-4">
|
|
622
|
-
<div class="io-line">Defined in <a href="" data-line="
|
|
623
|
-
class="link-to-prism">src/lib/config.service.ts:
|
|
622
|
+
<div class="io-line">Defined in <a href="" data-line="485"
|
|
623
|
+
class="link-to-prism">src/lib/config.service.ts:485</a></div>
|
|
624
624
|
</td>
|
|
625
625
|
</tr>
|
|
626
626
|
|
|
@@ -721,8 +721,8 @@
|
|
|
721
721
|
|
|
722
722
|
<tr>
|
|
723
723
|
<td class="col-md-4">
|
|
724
|
-
<div class="io-line">Defined in <a href="" data-line="
|
|
725
|
-
class="link-to-prism">src/lib/config.service.ts:
|
|
724
|
+
<div class="io-line">Defined in <a href="" data-line="491"
|
|
725
|
+
class="link-to-prism">src/lib/config.service.ts:491</a></div>
|
|
726
726
|
</td>
|
|
727
727
|
</tr>
|
|
728
728
|
|
|
@@ -831,8 +831,8 @@
|
|
|
831
831
|
|
|
832
832
|
<tr>
|
|
833
833
|
<td class="col-md-4">
|
|
834
|
-
<div class="io-line">Defined in <a href="" data-line="
|
|
835
|
-
class="link-to-prism">src/lib/config.service.ts:
|
|
834
|
+
<div class="io-line">Defined in <a href="" data-line="557"
|
|
835
|
+
class="link-to-prism">src/lib/config.service.ts:557</a></div>
|
|
836
836
|
</td>
|
|
837
837
|
</tr>
|
|
838
838
|
|
|
@@ -908,8 +908,8 @@
|
|
|
908
908
|
|
|
909
909
|
<tr>
|
|
910
910
|
<td class="col-md-4">
|
|
911
|
-
<div class="io-line">Defined in <a href="" data-line="
|
|
912
|
-
class="link-to-prism">src/lib/config.service.ts:
|
|
911
|
+
<div class="io-line">Defined in <a href="" data-line="558"
|
|
912
|
+
class="link-to-prism">src/lib/config.service.ts:558</a></div>
|
|
913
913
|
</td>
|
|
914
914
|
</tr>
|
|
915
915
|
|
|
@@ -997,8 +997,8 @@
|
|
|
997
997
|
|
|
998
998
|
<tr>
|
|
999
999
|
<td class="col-md-4">
|
|
1000
|
-
<div class="io-line">Defined in <a href="" data-line="
|
|
1001
|
-
class="link-to-prism">src/lib/config.service.ts:
|
|
1000
|
+
<div class="io-line">Defined in <a href="" data-line="559"
|
|
1001
|
+
class="link-to-prism">src/lib/config.service.ts:559</a></div>
|
|
1002
1002
|
</td>
|
|
1003
1003
|
</tr>
|
|
1004
1004
|
|
|
@@ -1087,8 +1087,8 @@
|
|
|
1087
1087
|
|
|
1088
1088
|
<tr>
|
|
1089
1089
|
<td class="col-md-4">
|
|
1090
|
-
<div class="io-line">Defined in <a href="" data-line="
|
|
1091
|
-
class="link-to-prism">src/lib/config.service.ts:
|
|
1090
|
+
<div class="io-line">Defined in <a href="" data-line="121"
|
|
1091
|
+
class="link-to-prism">src/lib/config.service.ts:121</a></div>
|
|
1092
1092
|
</td>
|
|
1093
1093
|
</tr>
|
|
1094
1094
|
|
|
@@ -1173,8 +1173,8 @@
|
|
|
1173
1173
|
|
|
1174
1174
|
<tr>
|
|
1175
1175
|
<td class="col-md-4">
|
|
1176
|
-
<div class="io-line">Defined in <a href="" data-line="
|
|
1177
|
-
class="link-to-prism">src/lib/config.service.ts:
|
|
1176
|
+
<div class="io-line">Defined in <a href="" data-line="543"
|
|
1177
|
+
class="link-to-prism">src/lib/config.service.ts:543</a></div>
|
|
1178
1178
|
</td>
|
|
1179
1179
|
</tr>
|
|
1180
1180
|
|
|
@@ -1243,8 +1243,8 @@
|
|
|
1243
1243
|
|
|
1244
1244
|
<tr>
|
|
1245
1245
|
<td class="col-md-4">
|
|
1246
|
-
<div class="io-line">Defined in <a href="" data-line="
|
|
1247
|
-
class="link-to-prism">src/lib/config.service.ts:
|
|
1246
|
+
<div class="io-line">Defined in <a href="" data-line="466"
|
|
1247
|
+
class="link-to-prism">src/lib/config.service.ts:466</a></div>
|
|
1248
1248
|
</td>
|
|
1249
1249
|
</tr>
|
|
1250
1250
|
|
|
@@ -1353,7 +1353,7 @@
|
|
|
1353
1353
|
</tr>
|
|
1354
1354
|
<tr>
|
|
1355
1355
|
<td class="col-md-4">
|
|
1356
|
-
<div class="io-line">Defined in <a href="" data-line="
|
|
1356
|
+
<div class="io-line">Defined in <a href="" data-line="101" class="link-to-prism">src/lib/config.service.ts:101</a></div>
|
|
1357
1357
|
</td>
|
|
1358
1358
|
</tr>
|
|
1359
1359
|
|
|
@@ -1385,7 +1385,7 @@
|
|
|
1385
1385
|
</tr>
|
|
1386
1386
|
<tr>
|
|
1387
1387
|
<td class="col-md-4">
|
|
1388
|
-
<div class="io-line">Defined in <a href="" data-line="
|
|
1388
|
+
<div class="io-line">Defined in <a href="" data-line="80" class="link-to-prism">src/lib/config.service.ts:80</a></div>
|
|
1389
1389
|
</td>
|
|
1390
1390
|
</tr>
|
|
1391
1391
|
|
|
@@ -1417,7 +1417,7 @@
|
|
|
1417
1417
|
</tr>
|
|
1418
1418
|
<tr>
|
|
1419
1419
|
<td class="col-md-4">
|
|
1420
|
-
<div class="io-line">Defined in <a href="" data-line="
|
|
1420
|
+
<div class="io-line">Defined in <a href="" data-line="87" class="link-to-prism">src/lib/config.service.ts:87</a></div>
|
|
1421
1421
|
</td>
|
|
1422
1422
|
</tr>
|
|
1423
1423
|
|
|
@@ -1457,7 +1457,7 @@ the Urls array.</p>
|
|
|
1457
1457
|
</tr>
|
|
1458
1458
|
<tr>
|
|
1459
1459
|
<td class="col-md-4">
|
|
1460
|
-
<div class="io-line">Defined in <a href="" data-line="
|
|
1460
|
+
<div class="io-line">Defined in <a href="" data-line="95" class="link-to-prism">src/lib/config.service.ts:95</a></div>
|
|
1461
1461
|
</td>
|
|
1462
1462
|
</tr>
|
|
1463
1463
|
|
|
@@ -1483,7 +1483,7 @@ the Urls array.</p>
|
|
|
1483
1483
|
</tr>
|
|
1484
1484
|
<tr>
|
|
1485
1485
|
<td class="col-md-4">
|
|
1486
|
-
<div class="io-line">Defined in <a href="" data-line="
|
|
1486
|
+
<div class="io-line">Defined in <a href="" data-line="74" class="link-to-prism">src/lib/config.service.ts:74</a></div>
|
|
1487
1487
|
</td>
|
|
1488
1488
|
</tr>
|
|
1489
1489
|
|
|
@@ -1515,7 +1515,7 @@ the Urls array.</p>
|
|
|
1515
1515
|
</tr>
|
|
1516
1516
|
<tr>
|
|
1517
1517
|
<td class="col-md-4">
|
|
1518
|
-
<div class="io-line">Defined in <a href="" data-line="
|
|
1518
|
+
<div class="io-line">Defined in <a href="" data-line="77" class="link-to-prism">src/lib/config.service.ts:77</a></div>
|
|
1519
1519
|
</td>
|
|
1520
1520
|
</tr>
|
|
1521
1521
|
|
|
@@ -1541,7 +1541,7 @@ the Urls array.</p>
|
|
|
1541
1541
|
</tr>
|
|
1542
1542
|
<tr>
|
|
1543
1543
|
<td class="col-md-4">
|
|
1544
|
-
<div class="io-line">Defined in <a href="" data-line="
|
|
1544
|
+
<div class="io-line">Defined in <a href="" data-line="75" class="link-to-prism">src/lib/config.service.ts:75</a></div>
|
|
1545
1545
|
</td>
|
|
1546
1546
|
</tr>
|
|
1547
1547
|
|
|
@@ -1573,7 +1573,7 @@ the Urls array.</p>
|
|
|
1573
1573
|
</tr>
|
|
1574
1574
|
<tr>
|
|
1575
1575
|
<td class="col-md-4">
|
|
1576
|
-
<div class="io-line">Defined in <a href="" data-line="
|
|
1576
|
+
<div class="io-line">Defined in <a href="" data-line="78" class="link-to-prism">src/lib/config.service.ts:78</a></div>
|
|
1577
1577
|
</td>
|
|
1578
1578
|
</tr>
|
|
1579
1579
|
|
|
@@ -1605,7 +1605,7 @@ the Urls array.</p>
|
|
|
1605
1605
|
</tr>
|
|
1606
1606
|
<tr>
|
|
1607
1607
|
<td class="col-md-4">
|
|
1608
|
-
<div class="io-line">Defined in <a href="" data-line="
|
|
1608
|
+
<div class="io-line">Defined in <a href="" data-line="93" class="link-to-prism">src/lib/config.service.ts:93</a></div>
|
|
1609
1609
|
</td>
|
|
1610
1610
|
</tr>
|
|
1611
1611
|
|
|
@@ -1649,7 +1649,7 @@ value form the Defaults values or dynamic config files</p>
|
|
|
1649
1649
|
</tr>
|
|
1650
1650
|
<tr>
|
|
1651
1651
|
<td class="col-md-4">
|
|
1652
|
-
<div class="io-line">Defined in <a href="" data-line="
|
|
1652
|
+
<div class="io-line">Defined in <a href="" data-line="100" class="link-to-prism">src/lib/config.service.ts:100</a></div>
|
|
1653
1653
|
</td>
|
|
1654
1654
|
</tr>
|
|
1655
1655
|
|
|
@@ -1690,6 +1690,13 @@ export enum ConfigLoadingStrategy {
|
|
|
1690
1690
|
FIFO = 'fifo',
|
|
1691
1691
|
}
|
|
1692
1692
|
|
|
1693
|
+
export enum ConfigLoadMethod {
|
|
1694
|
+
FROM_URLS = 'fromUrls',
|
|
1695
|
+
FROM_LOCAL_STORAGE = 'fromLocalStorage',
|
|
1696
|
+
FROM_URL_PARAM = 'fromUrlParam',
|
|
1697
|
+
FROM_CID = 'fromCid',
|
|
1698
|
+
}
|
|
1699
|
+
|
|
1693
1700
|
export interface ConfigLoadOptions {
|
|
1694
1701
|
fromUrlParam?: string | boolean;
|
|
1695
1702
|
fromUrls?: boolean;
|
|
@@ -1713,6 +1720,14 @@ export interface ConfigLoadOptions {
|
|
|
1713
1720
|
fetchCidContent?: (cid: string, path?: string) => Promise<Blob | null>;
|
|
1714
1721
|
dnsServers?: string[];
|
|
1715
1722
|
strategy?: ConfigLoadingStrategy;
|
|
1723
|
+
/**
|
|
1724
|
+
* Defines the order and subset of config sources to load.
|
|
1725
|
+
* If not specified, defaults to: [FROM_URLS, FROM_LOCAL_STORAGE, FROM_URL_PARAM, FROM_CID]
|
|
1726
|
+
*
|
|
1727
|
+
* Note: static config is always merged first, and Overwrites are always merged last.
|
|
1728
|
+
* Note: fromDns is not a source itself - it resolves the CID for FROM_CID.
|
|
1729
|
+
*/
|
|
1730
|
+
order?: ConfigLoadMethod[];
|
|
1716
1731
|
}
|
|
1717
1732
|
|
|
1718
1733
|
@Injectable({
|
|
@@ -1785,81 +1800,60 @@ export class ConfigService<Config extends Record<string, any> = Re
|
|
|
1785
1800
|
}
|
|
1786
1801
|
}
|
|
1787
1802
|
|
|
1803
|
+
// Always merge static config first
|
|
1788
1804
|
config = deepMerge(config, options?.static ?? {});
|
|
1789
|
-
let done = false;
|
|
1790
1805
|
|
|
1791
|
-
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
|
|
1797
|
-
|
|
1798
|
-
if (options.strategy !== ConfigLoadingStrategy.FIFO) {
|
|
1799
|
-
console.error('Could not load config from urls', error);
|
|
1800
|
-
throw error;
|
|
1801
|
-
} else {
|
|
1802
|
-
console.warn('Could not load config from urls: ' + error.message + '. Will try next strategy.');
|
|
1803
|
-
}
|
|
1804
|
-
}
|
|
1805
|
-
}
|
|
1806
|
+
// Determine the order of config sources to load
|
|
1807
|
+
const order = options.order ?? [
|
|
1808
|
+
ConfigLoadMethod.FROM_URLS,
|
|
1809
|
+
ConfigLoadMethod.FROM_LOCAL_STORAGE,
|
|
1810
|
+
ConfigLoadMethod.FROM_URL_PARAM,
|
|
1811
|
+
ConfigLoadMethod.FROM_CID,
|
|
1812
|
+
];
|
|
1806
1813
|
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
|
|
1810
|
-
if (options.strategy === ConfigLoadingStrategy.FIFO) {
|
|
1811
|
-
done = true;
|
|
1812
|
-
}
|
|
1813
|
-
} catch (error: any) {
|
|
1814
|
-
if (options.strategy !== ConfigLoadingStrategy.FIFO) {
|
|
1815
|
-
console.error('Could not load config from local storage', error);
|
|
1816
|
-
throw error;
|
|
1817
|
-
} else {
|
|
1818
|
-
console.warn('Could not load config from local storage: ' + error.message + '. Will try next strategy.');
|
|
1819
|
-
}
|
|
1820
|
-
}
|
|
1814
|
+
// If fromDns is enabled and FROM_CID is in the order, resolve CID first
|
|
1815
|
+
if (options.fromDns && order.includes(ConfigLoadMethod.FROM_CID) && !options.fromCid) {
|
|
1816
|
+
await this.loadConfigFromDns(options as any);
|
|
1821
1817
|
}
|
|
1822
1818
|
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
}
|
|
1829
|
-
} catch (error: any) {
|
|
1830
|
-
if (options.strategy !== ConfigLoadingStrategy.FIFO) {
|
|
1831
|
-
console.error('Could not load config from url param', error);
|
|
1832
|
-
throw error;
|
|
1833
|
-
} else {
|
|
1834
|
-
console.warn('Could not load config from url param: ' + error.message + '. Will try next strategy.');
|
|
1835
|
-
}
|
|
1819
|
+
// Load configs from sources in the specified order
|
|
1820
|
+
let done = false;
|
|
1821
|
+
for (const method of order) {
|
|
1822
|
+
if (done) {
|
|
1823
|
+
break;
|
|
1836
1824
|
}
|
|
1837
|
-
}
|
|
1838
1825
|
|
|
1839
|
-
|
|
1840
|
-
|
|
1841
|
-
|
|
1826
|
+
// Check if the source is enabled
|
|
1827
|
+
if (!this.isSourceEnabled(options, method)) {
|
|
1828
|
+
continue;
|
|
1829
|
+
}
|
|
1842
1830
|
|
|
1843
|
-
if (!done && options?.fromCid) {
|
|
1844
1831
|
try {
|
|
1845
|
-
|
|
1832
|
+
const loadedConfig = await this.loadConfigFromMethod(method, options, environment);
|
|
1833
|
+
if (loadedConfig) {
|
|
1834
|
+
config = deepMerge(config, loadedConfig);
|
|
1835
|
+
}
|
|
1836
|
+
|
|
1837
|
+
// If using FIFO strategy, stop after first successful load
|
|
1846
1838
|
if (options.strategy === ConfigLoadingStrategy.FIFO) {
|
|
1847
1839
|
done = true;
|
|
1848
1840
|
}
|
|
1849
1841
|
} catch (error: any) {
|
|
1842
|
+
const methodName = this.getMethodName(method);
|
|
1850
1843
|
if (options.strategy !== ConfigLoadingStrategy.FIFO) {
|
|
1851
|
-
console.error(&#
|
|
1844
|
+
console.error(`Could not load config from ${methodName}`, error);
|
|
1852
1845
|
throw error;
|
|
1853
1846
|
} else {
|
|
1854
|
-
console.warn(&#
|
|
1847
|
+
console.warn(`Could not load config from ${methodName}: ${error.message}. Will try next strategy.`);
|
|
1855
1848
|
}
|
|
1856
1849
|
}
|
|
1857
1850
|
}
|
|
1858
1851
|
|
|
1859
|
-
if (!done) {
|
|
1852
|
+
if (!done && order.length > 0) {
|
|
1860
1853
|
console.warn('No config loading strategy succeeded. Using default config.');
|
|
1861
1854
|
}
|
|
1862
1855
|
|
|
1856
|
+
// Always merge overwrites last
|
|
1863
1857
|
config = deepMerge(config, this.Overwrites);
|
|
1864
1858
|
|
|
1865
1859
|
console.debug('app config', config);
|
|
@@ -1867,6 +1861,55 @@ export class ConfigService<Config extends Record<string, any> = Re
|
|
|
1867
1861
|
this.Config = config;
|
|
1868
1862
|
}
|
|
1869
1863
|
|
|
1864
|
+
private static isSourceEnabled(options: ConfigLoadOptions, method: ConfigLoadMethod): boolean {
|
|
1865
|
+
switch (method) {
|
|
1866
|
+
case ConfigLoadMethod.FROM_URLS:
|
|
1867
|
+
return options.fromUrls !== false;
|
|
1868
|
+
case ConfigLoadMethod.FROM_LOCAL_STORAGE:
|
|
1869
|
+
return options.fromLocalStorage !== false;
|
|
1870
|
+
case ConfigLoadMethod.FROM_URL_PARAM:
|
|
1871
|
+
return !!options.fromUrlParam;
|
|
1872
|
+
case ConfigLoadMethod.FROM_CID:
|
|
1873
|
+
return !!options.fromCid;
|
|
1874
|
+
default:
|
|
1875
|
+
return false;
|
|
1876
|
+
}
|
|
1877
|
+
}
|
|
1878
|
+
|
|
1879
|
+
private static async loadConfigFromMethod(
|
|
1880
|
+
method: ConfigLoadMethod,
|
|
1881
|
+
options: ConfigLoadOptions,
|
|
1882
|
+
environment?: Environment,
|
|
1883
|
+
): Promise<any> {
|
|
1884
|
+
switch (method) {
|
|
1885
|
+
case ConfigLoadMethod.FROM_URLS:
|
|
1886
|
+
return await this.loadConfigFromUrls(options, environment);
|
|
1887
|
+
case ConfigLoadMethod.FROM_LOCAL_STORAGE:
|
|
1888
|
+
return this.loadConfigFromLocalStorage(options);
|
|
1889
|
+
case ConfigLoadMethod.FROM_URL_PARAM:
|
|
1890
|
+
return this.loadConfigFromUrlParam(options as any);
|
|
1891
|
+
case ConfigLoadMethod.FROM_CID:
|
|
1892
|
+
return await this.loadConfigFromCid(options as any);
|
|
1893
|
+
default:
|
|
1894
|
+
return null;
|
|
1895
|
+
}
|
|
1896
|
+
}
|
|
1897
|
+
|
|
1898
|
+
private static getMethodName(method: ConfigLoadMethod): string {
|
|
1899
|
+
switch (method) {
|
|
1900
|
+
case ConfigLoadMethod.FROM_URLS:
|
|
1901
|
+
return 'urls';
|
|
1902
|
+
case ConfigLoadMethod.FROM_LOCAL_STORAGE:
|
|
1903
|
+
return 'local storage';
|
|
1904
|
+
case ConfigLoadMethod.FROM_URL_PARAM:
|
|
1905
|
+
return 'url param';
|
|
1906
|
+
case ConfigLoadMethod.FROM_CID:
|
|
1907
|
+
return 'cid';
|
|
1908
|
+
default:
|
|
1909
|
+
return 'unknown';
|
|
1910
|
+
}
|
|
1911
|
+
}
|
|
1912
|
+
|
|
1870
1913
|
private static loadConfigFromUrlParam(options: ConfigLoadOptions & { fromUrlParam: string | true }) {
|
|
1871
1914
|
const param = typeof options.fromUrlParam === 'string' ? options.fromUrlParam : 'config';
|
|
1872
1915
|
return this.LoadConfigDefaultFromUrlParam(param);
|