iobroker.shoppingroute 0.5.0 → 0.5.2

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.
Files changed (112) hide show
  1. package/README.md +65 -4
  2. package/README_DE.md +65 -2
  3. package/admin/custom/assets/_virtual_mf-localSharedImportMap___mfe_internal__ShoppingRouteAdminSet__mf_owner__1-u-WAs2m5.js +1 -0
  4. package/admin/custom/assets/_virtual_mf___mfe_internal__ShoppingRouteAdminSet__mf_owner__195137731327240__loadShare__shared-Cn8eOhIC.js +1 -0
  5. package/admin/custom/assets/helpers-rsP3EuoI.js +1 -0
  6. package/admin/custom/assets/hostInit-C9k-trSr.js +1 -0
  7. package/admin/custom/assets/{index-12xv0FYP.js → index-CWGnoEzs.js} +2 -2
  8. package/admin/custom/assets/{index-0cn00gCp.js → index-CqrYeeB9.js} +1 -1
  9. package/admin/custom/assets/pendingShares-BhyJ1VpE.js +2 -0
  10. package/admin/custom/assets/route-editor-components-Bl6m1_2H.js +64 -0
  11. package/admin/custom/catalogManager/assets/_virtual_mf-localSharedImportMap___mfe_internal__ShoppingRouteCatalogSet__mf_owner__1-CAPCB9Xc.js +1 -0
  12. package/admin/custom/catalogManager/assets/_virtual_mf___mfe_internal__ShoppingRouteCatalogSet__mf_owner__270978611965008__loadShare__shared-jSwkJZrB.js +1 -0
  13. package/admin/custom/catalogManager/assets/catalog-manager-components-0s0iqtJs.js +156 -0
  14. package/admin/custom/catalogManager/assets/helpers-rsP3EuoI.js +1 -0
  15. package/admin/custom/catalogManager/assets/hostInit-CHVxebwT.js +1 -0
  16. package/admin/custom/{productGroups/assets/index-12xv0FYP.js → catalogManager/assets/index-CWGnoEzs.js} +2 -2
  17. package/admin/custom/catalogManager/assets/{index-0cn00gCp.js → index-CqrYeeB9.js} +1 -1
  18. package/admin/custom/catalogManager/assets/pendingShares-CjAiEeBw.js +2 -0
  19. package/admin/custom/catalogManager/catalogManager.js +2 -2
  20. package/admin/custom/catalogManager/mf-manifest.json +1 -1
  21. package/admin/custom/catalogManager/mf-stats.json +1 -1
  22. package/admin/custom/markets/assets/_virtual_mf-localSharedImportMap___mfe_internal__ShoppingRouteMarketsSet__mf_owner__1-CzqI6H3Y.js +1 -0
  23. package/admin/custom/markets/assets/_virtual_mf___mfe_internal__ShoppingRouteMarketsSet__mf_owner__240489627525110__loadShare__shared-Ci7WxzQy.js +1 -0
  24. package/admin/custom/markets/assets/helpers-rsP3EuoI.js +1 -0
  25. package/admin/custom/markets/assets/hostInit-C2rD9w0N.js +1 -0
  26. package/admin/custom/{catalogManager/assets/index-12xv0FYP.js → markets/assets/index-CWGnoEzs.js} +2 -2
  27. package/admin/custom/markets/assets/{index-0cn00gCp.js → index-CqrYeeB9.js} +1 -1
  28. package/admin/custom/markets/assets/markets-editor-components-DFBAhACl.js +67 -0
  29. package/admin/custom/markets/assets/pendingShares-DQ3krbvN.js +2 -0
  30. package/admin/custom/markets/marketsEditor.js +2 -2
  31. package/admin/custom/markets/mf-manifest.json +1 -1
  32. package/admin/custom/markets/mf-stats.json +1 -1
  33. package/admin/custom/mf-manifest.json +1 -1
  34. package/admin/custom/mf-stats.json +1 -1
  35. package/admin/custom/productGroups/assets/_virtual_mf-localSharedImportMap___mfe_internal__ShoppingRouteProductGroupsSet__mf_owner__1-D92JU0oD.js +1 -0
  36. package/admin/custom/productGroups/assets/_virtual_mf___mfe_internal__ShoppingRouteProductGroupsSet__mf_owner__260837768108578__loadShare__shared-gSY_bOGR.js +1 -0
  37. package/admin/custom/productGroups/assets/helpers-rsP3EuoI.js +1 -0
  38. package/admin/custom/productGroups/assets/hostInit-D3L2o0WN.js +1 -0
  39. package/admin/custom/{markets/assets/index-12xv0FYP.js → productGroups/assets/index-CWGnoEzs.js} +2 -2
  40. package/admin/custom/productGroups/assets/{index-0cn00gCp.js → index-CqrYeeB9.js} +1 -1
  41. package/admin/custom/productGroups/assets/pendingShares-JH5TAaZe.js +2 -0
  42. package/admin/custom/productGroups/assets/product-groups-editor-components-B5P8jYvF.js +44 -0
  43. package/admin/custom/productGroups/mf-manifest.json +1 -1
  44. package/admin/custom/productGroups/mf-stats.json +1 -1
  45. package/admin/custom/productGroups/productGroupsEditor.js +2 -2
  46. package/admin/custom/review/assets/_virtual_mf-localSharedImportMap___mfe_internal__ShoppingRouteReviewSet__mf_owner__1-DxF4tUV2.js +1 -0
  47. package/admin/custom/review/assets/_virtual_mf___mfe_internal__ShoppingRouteReviewSet__mf_owner__252153816870476__loadShare__shared-BMk8_6UE.js +1 -0
  48. package/admin/custom/review/assets/helpers-rsP3EuoI.js +1 -0
  49. package/admin/custom/review/assets/hostInit-g6dZHhG7.js +1 -0
  50. package/admin/custom/review/assets/index-CWGnoEzs.js +7 -0
  51. package/admin/custom/review/assets/index-CqrYeeB9.js +1 -0
  52. package/admin/custom/review/assets/pendingShares-CEtt_VY7.js +2 -0
  53. package/admin/custom/review/assets/{review-editor-components-BD-k-o3i.js → review-editor-components-Fq4TZE0H.js} +1 -1
  54. package/admin/custom/review/mf-manifest.json +1 -1
  55. package/admin/custom/review/mf-stats.json +1 -1
  56. package/admin/custom/review/reviewEditor.js +2 -2
  57. package/admin/custom/routeEditor.js +2 -2
  58. package/admin/custom/shoppingList/assets/_virtual_mf-localSharedImportMap___mfe_internal__ShoppingRouteShoppingListSet__mf_owner__1-Cnw_rV5D.js +1 -0
  59. package/admin/custom/shoppingList/assets/_virtual_mf___mfe_internal__ShoppingRouteShoppingListSet__mf_owner__46505510294969__loadShare__shared-CsjZ4mES.js +1 -0
  60. package/admin/custom/shoppingList/assets/helpers-rsP3EuoI.js +1 -0
  61. package/admin/custom/shoppingList/assets/hostInit-DwkVTjxn.js +1 -0
  62. package/admin/custom/shoppingList/assets/index-CWGnoEzs.js +7 -0
  63. package/admin/custom/shoppingList/assets/index-CqrYeeB9.js +1 -0
  64. package/admin/custom/shoppingList/assets/pendingShares-Cezvw3_2.js +2 -0
  65. package/admin/custom/shoppingList/assets/shopping-list-editor-components-DkvnBuqv.js +73 -0
  66. package/admin/custom/shoppingList/mf-manifest.json +1 -1
  67. package/admin/custom/shoppingList/mf-stats.json +1 -1
  68. package/admin/custom/shoppingList/shoppingListEditor.js +2 -2
  69. package/build/lib/alexa-direct.js +21 -0
  70. package/build/lib/mobile-move.js +85 -0
  71. package/build/main.js +282 -31
  72. package/io-package.json +42 -41
  73. package/package.json +1 -1
  74. package/admin/custom/assets/_virtual_mf-localSharedImportMap___mfe_internal__ShoppingRouteAdminSet__mf_owner__1-DPLVD4vF.js +0 -1
  75. package/admin/custom/assets/_virtual_mf___mfe_internal__ShoppingRouteAdminSet__mf_owner__195137731327240__loadShare__react__loadShare__.js-BGCVGSz6.js +0 -1
  76. package/admin/custom/assets/helpers-CsVkgmeS.js +0 -1
  77. package/admin/custom/assets/hostInit-BOPgFMXR.js +0 -1
  78. package/admin/custom/assets/pendingShares-1oZLrQ_M.js +0 -2
  79. package/admin/custom/assets/route-editor-components-DXuRqdfo.js +0 -21
  80. package/admin/custom/catalogManager/assets/_virtual_mf-localSharedImportMap___mfe_internal__ShoppingRouteCatalogSet__mf_owner__1-DINIg-s7.js +0 -1
  81. package/admin/custom/catalogManager/assets/_virtual_mf___mfe_internal__ShoppingRouteCatalogSet__mf_owner__270978611965008__loadShare__react__loadShare__.js-Bw3vMJzu.js +0 -1
  82. package/admin/custom/catalogManager/assets/catalog-manager-components-D2quJvPg.js +0 -153
  83. package/admin/custom/catalogManager/assets/helpers-CsVkgmeS.js +0 -1
  84. package/admin/custom/catalogManager/assets/hostInit-CX4Yac1I.js +0 -1
  85. package/admin/custom/catalogManager/assets/pendingShares-iypADtDA.js +0 -2
  86. package/admin/custom/markets/assets/_virtual_mf-localSharedImportMap___mfe_internal__ShoppingRouteMarketsSet__mf_owner__1-DWD9ARvx.js +0 -1
  87. package/admin/custom/markets/assets/_virtual_mf___mfe_internal__ShoppingRouteMarketsSet__mf_owner__240489627525110__loadShare__react__loadShare__.js-Bdlvn8vS.js +0 -1
  88. package/admin/custom/markets/assets/helpers-CsVkgmeS.js +0 -1
  89. package/admin/custom/markets/assets/hostInit-O4vB_3aJ.js +0 -1
  90. package/admin/custom/markets/assets/markets-editor-components-BAsgTAV7.js +0 -67
  91. package/admin/custom/markets/assets/pendingShares-mvCLhLzv.js +0 -2
  92. package/admin/custom/productGroups/assets/_virtual_mf-localSharedImportMap___mfe_internal__ShoppingRouteProductGroupsSet__mf_owner__1-CuVRE3L9.js +0 -1
  93. package/admin/custom/productGroups/assets/_virtual_mf___mfe_internal__ShoppingRouteProductGroupsSet__mf_owner__260837768108578__loadShare__react__loadShare__.js-BZoDZKLb.js +0 -1
  94. package/admin/custom/productGroups/assets/helpers-CsVkgmeS.js +0 -1
  95. package/admin/custom/productGroups/assets/hostInit-BO6YEhS7.js +0 -1
  96. package/admin/custom/productGroups/assets/pendingShares-CnxCGNGe.js +0 -2
  97. package/admin/custom/productGroups/assets/product-groups-editor-components-B7aO0sA_.js +0 -44
  98. package/admin/custom/review/assets/_virtual_mf-localSharedImportMap___mfe_internal__ShoppingRouteReviewSet__mf_owner__1-FjU0cujc.js +0 -1
  99. package/admin/custom/review/assets/_virtual_mf___mfe_internal__ShoppingRouteReviewSet__mf_owner__252153816870476__loadShare__react__loadShare__.js-DKpQik0v.js +0 -1
  100. package/admin/custom/review/assets/helpers-CsVkgmeS.js +0 -1
  101. package/admin/custom/review/assets/hostInit-B25pGNwS.js +0 -1
  102. package/admin/custom/review/assets/index-0cn00gCp.js +0 -1
  103. package/admin/custom/review/assets/index-12xv0FYP.js +0 -7
  104. package/admin/custom/review/assets/pendingShares-DIMEss5x.js +0 -2
  105. package/admin/custom/shoppingList/assets/_virtual_mf-localSharedImportMap___mfe_internal__ShoppingRouteShoppingListSet__mf_owner__1-a7n9bT1O.js +0 -1
  106. package/admin/custom/shoppingList/assets/_virtual_mf___mfe_internal__ShoppingRouteShoppingListSet__mf_owner__46505510294969__loadShare__react__loadShare__.js-onup3LN4.js +0 -1
  107. package/admin/custom/shoppingList/assets/helpers-CsVkgmeS.js +0 -1
  108. package/admin/custom/shoppingList/assets/hostInit-D9RbSpMP.js +0 -1
  109. package/admin/custom/shoppingList/assets/index-0cn00gCp.js +0 -1
  110. package/admin/custom/shoppingList/assets/index-12xv0FYP.js +0 -7
  111. package/admin/custom/shoppingList/assets/pendingShares-CrfC535i.js +0 -2
  112. package/admin/custom/shoppingList/assets/shopping-list-editor-components-Q9aad4al.js +0 -27
package/README.md CHANGED
@@ -17,12 +17,12 @@
17
17
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="MIT license"></a>
18
18
  </p>
19
19
 
20
- > **Current version: 0.4.4**
20
+ > **Next version under preparation: 0.5.2 (not published)**
21
21
  > ShoppingRoute is available in the ioBroker **latest** repository.
22
22
 
23
23
  ## What ShoppingRoute does
24
24
 
25
- ShoppingRoute turns an ordinary Alexa shopping list into a list that follows the way you actually shop.
25
+ ShoppingRoute turns an ordinary Alexa shopping list into a practical shopping assistant. **All stores can share one Alexa list, or you can deliberately split them across several lists.** Its key feature is configurable **market routing**: for every store, you define your own walking order through the sections. ShoppingRoute then arranges the list to match the way you actually move through the shop — reducing backtracking and searching for **faster, more efficient shopping**.
26
26
 
27
27
  Instead of keeping items only in the order Alexa received them, the adapter can assign them to stores, product groups and a configurable walking route inside each store. It uses visible two-digit prefixes such as `20> Bananas` and optional market headings such as `40> ═════ ALDI ═════`.
28
28
 
@@ -53,15 +53,45 @@ Choose your language:
53
53
 
54
54
  Community and support:
55
55
 
56
- - 🧪 [ioBroker tester forum – ShoppingRoute v0.4.4](https://forum.iobroker.net/topic/85510/test-adapter-shoppingroute-v0.4.4)
56
+ - 🧪 [ioBroker tester forum – ShoppingRoute](https://forum.iobroker.net/topic/85510/test-adapter-shoppingroute-v0.4.4)
57
57
  - 🐞 [GitHub issues](https://github.com/RaviniZib/ioBroker.shoppingroute/issues)
58
58
 
59
- The Admin interface itself supports all 11 standard ioBroker Admin languages.
59
+ Adapter settings and the backup utility include all 11 standard ioBroker Admin languages. Shopping-list feedback is available in German and English.
60
+
61
+ ## What's new in 0.5.2 (unpublished)
62
+
63
+ **Control market assignments from the regular Alexa shopping list on your phone — no extra app and no access to the ioBroker Admin interface required.**
64
+
65
+ **Four mobile commands:** `13WNETTO` moves item 13 **temporarily** to NETTO, while `13DNETTO` assigns it there **permanently**. `25H3` moves item 25 **three real product positions up**, and `25R3` moves it **three down**, within the same store only. Store headings are not counted; H/R do not modify stored walking routes or product groups.
66
+
67
+ Add a temporary command as a normal list item using `NNWMARKET`, for example `13WNETTO`: `13` is the two-digit prefix currently shown before the product, `W` means move, and `NETTO` is a configured destination market. Several commands may be entered before the next sort. Case does not matter; unambiguous small typos in market names are corrected.
68
+
69
+ **Please be patient:** A new sort **never happens immediately**. Depending on internet connection, speed and Alexa processing, it may take **up to five minutes**. It is normal for the command to remain visible while processing. **If it is still present after five minutes**, check the internet/Alexa connection and the item number and store name. Mark an incorrect command completed in Alexa and enter it again correctly.
70
+
71
+ The move affects only the current shopping item, **not** its learned default market or catalogue assignment. Successfully processed commands disappear from the Alexa list. If a command remains, check the number and market; mark the incorrect command as completed in Alexa and enter a corrected one. **Market-heading numbers cannot be used to move products.** Ambiguous or invalid commands are never guessed.
72
+
73
+ This functionality is being prepared in 0.5.2; the released 0.5.1 remains unchanged on npm.
74
+
75
+ ## What's new in 0.5.1
76
+
77
+ This release fixes the saving and moving problems reported with the new management page and makes shopping from a phone more comfortable:
78
+
79
+ - **Create usable Alexa lists:** a new list is created and confirmed in Alexa before ShoppingRoute uses it. An invalid new binding is rejected before it can affect healthy lists.
80
+ - **Add items while shopping:** add an item directly on the Shopping list page, including to an empty list.
81
+ - **Move to the end and back:** dedicated end-drop areas, touch drag handles, corrected insertion positions and empty return markets make moves easier. Use “Show other markets as drop targets” to reveal additional destinations.
82
+ - **Understand longer updates:** a visible message explains the pending Alexa update immediately. The adapter reports the final result separately, so a longer operation is not mistaken for an immediate failure.
83
+ - **Keep catalogue changes:** deletions, ordering changes and selections on the management page save automatically. Typed edits wait for the **Save** button; **Add** submits a new entry. Saved data survives reopening the page.
84
+ - **Avoid interrupted saves:** local catalogue saves no longer make unnecessary Amazon checks, and learned catalogue data no longer causes an instance restart. Rapid edits are queued, and unsuccessful saves retain your changes for retry.
85
+ - **Move an item back after an Alexa rebuild:** changed Amazon item IDs can be resolved by an unambiguous item name. Duplicate names are never guessed.
86
+
87
+ Open **ShoppingRoute** in the ioBroker sidebar on your phone. Use the `⋮⋮` handle to drag, or use the arrow buttons and market selector. After updating, fully reload the management page once to load the new interface. Alexa list writes still use the configured rate limits, Dry Run and verification safeguards.
60
88
 
61
89
  ## Main features
62
90
 
63
91
  - dedicated **ShoppingRoute management page** in the ioBroker sidebar for shopping list, products, markets, product groups, routes, lists and review items
64
92
  - catalogue changes are persisted at runtime and do not require an adapter restart
93
+ - create confirmed Alexa lists and add shopping items directly from the phone
94
+ - automatic saving of structural changes, with explicit Save for typed edits
65
95
  - market names are always stored in **UPPERCASE**, regardless of how they are entered, with all references normalized consistently
66
96
  - defensive protection against accidental catalogue resets during Admin/update flows
67
97
 
@@ -76,6 +106,21 @@ The Admin interface itself supports all 11 standard ioBroker Admin languages.
76
106
  - optional cross-market consolidation using a minimum-item threshold
77
107
  - explicit market requests are never moved to another store
78
108
 
109
+ #### Smart store consolidation – fewer stops, shorter shopping trips
110
+
111
+ ShoppingRoute does more than sort products by store and in-store walking route: it can also **avoid unnecessary extra store visits**. When a store falls below the configured minimum item count, optional cross-store consolidation checks whether its flexible products are available at a store already on the shopping route. Only **alternative available stores explicitly configured in the product catalogue** are considered.
112
+
113
+ **Example:**
114
+
115
+ | Store | Items before consolidation |
116
+ | --- | --- |
117
+ | ALDI | Milk, butter, bread, eggs, cheese |
118
+ | REWE | Sugar |
119
+
120
+ If **ALDI is configured as an available alternative store for sugar**, and the configured minimum-item rule applies, ShoppingRoute can move sugar to ALDI: **6 items at ALDI, no extra REWE stop needed.**
121
+
122
+ This optimization is optional and depends on the minimum-item setting and permitted alternative stores. **Explicit store requests**, such as `milk from LIDL` or `eggs at ALDI`, always take precedence and are never moved automatically.
123
+
79
124
  ### Smart product handling
80
125
 
81
126
  - product catalogue with aliases
@@ -157,6 +202,22 @@ Please use the [ioBroker tester thread](https://forum.iobroker.net/topic/85510/t
157
202
 
158
203
  ## Changelog
159
204
 
205
+ ### 0.5.2 (2026-10-16, unpublished)
206
+
207
+ - Add temporary market moves directly from the standard Alexa mobile shopping list via `NNWMARKET`.
208
+ - Process multiple commands, correct unambiguous market typos, and protect market headings and ambiguous item numbers.
209
+ - Keep permanent product learning and existing sorting behavior unchanged.
210
+
211
+
212
+ ### 0.5.1 (2026-10-07)
213
+ - Create new lists in Alexa and verify them before saving their bindings; add shopping items directly, including to empty lists.
214
+ - Show immediate, readable progress for Alexa moves, retain optimistic positions while waiting, and track long operations without the previous UI timeout failure.
215
+ - Fix end-drop targets, row insertion positions, touch dragging and empty return markets in the shopping list; restore drag ordering for markets, product groups and walking routes.
216
+ - Save deletions, ordering and selections immediately on the management page; preserve typed drafts until Save and queue rapid structural changes without a retry loop.
217
+ - Keep local saves independent of unnecessary Amazon list checks; persist learned catalogues in runtime data instead of restarting the instance through native-object writes.
218
+ - Safely resolve uniquely named items after Amazon replaces their IDs, retaining rejection for ambiguous duplicate names and all write safeguards.
219
+ - Provide German and English shopping feedback, a language-aware help button and updated user guides and READMEs.
220
+
160
221
  ### 0.5.0 (2026-10-05)
161
222
  - Add a dedicated ShoppingRoute management page in the ioBroker sidebar with a fixed header and direct management of shopping list, products, markets, product groups, routes, lists and review queue.
162
223
  - Persist large catalogue data outside normal instance configuration so catalogue edits no longer require an adapter restart.
package/README_DE.md CHANGED
@@ -2,7 +2,9 @@
2
2
 
3
3
  ![ShoppingRoute](admin/shoppingroute.png)
4
4
 
5
- **Aktuelle Version: 0.5.0**
5
+ **Nächste Version in Vorbereitung: 0.5.2 (noch nicht veröffentlicht)**
6
+
7
+ ShoppingRoute macht aus einer normalen Alexa-Einkaufsliste eine praktische Einkaufshilfe: **Alle Märkte können gemeinsam in einer einzigen Liste geführt oder bewusst auf mehrere Listen verteilt werden.** Das besondere Merkmal ist das frei einstellbare **Marktrouting**: Für jeden Markt legst du deinen persönlichen Laufweg durch die Abteilungen fest. Dadurch steht die Einkaufsliste in der Reihenfolge, in der du tatsächlich durch den Laden gehst – für weniger Zurücklaufen, weniger Suchen und **schnelleres, effizienteres Einkaufen**.
6
8
 
7
9
  ShoppingRoute sortiert Alexa-Einkaufslisteneinträge nach Markt, Produktgruppe und dem individuellen Laufweg durch den jeweiligen Markt. Dazu vergibt es sichtbare zweistellige Schlüssel wie `20> Bananen` und `40> ═════ ALDI ═════`; verwaltete Listen müssen deshalb in der Alexa-App auf **A–Z** stehen. ShoppingRoute übernimmt lokal die Alexa2-Authentifizierung für direkte Updates, Deletes und Batch-Creates; Alexa2-Listenstates bleiben die Triggerquelle für externe Änderungen.
8
10
 
@@ -11,10 +13,42 @@ ShoppingRoute sortiert Alexa-Einkaufslisteneinträge nach Markt, Produktgruppe u
11
13
  🇩🇪 [**Deutsche Bedienungsanleitung**](BEDIENUNGSANLEITUNG_DE.md)
12
14
  🇬🇧 [**English user guide**](USER_GUIDE_EN.md)
13
15
 
16
+ ## Neu in 0.5.2 (noch nicht veröffentlicht): Direktsteuerung in der Alexa-App
17
+
18
+ **Marktwechsel direkt in der normalen Alexa-Einkaufsliste auf dem Handy – ohne zusätzliche App und ohne Zugriff auf die ioBroker-Verwaltung.**
19
+
20
+ **Vier Handy-Befehle:** `13WNETTO` wechselt Artikel 13 **vorübergehend** zu NETTO, `13DNETTO` ordnet ihn **dauerhaft** NETTO zu. `25H3` verschiebt Artikel 25 **drei echte Artikelpositionen nach oben**, `25R3` **drei nach unten** – jeweils nur innerhalb desselben Marktes, ohne Marktüberschriften mitzuzählen. H/R verändern keine gespeicherten Laufwege oder Produktgruppen.
21
+
22
+ Füge einen Steuerbefehl wie `13WNETTO` als normalen Listeneintrag hinzu: `13` ist die **aktuell sichtbare zweistellige Nummer vor dem Artikel**, `W` bedeutet Wechsel und `NETTO` ist ein bereits angelegter Zielmarkt. Du kannst mehrere Befehle hintereinander eingeben. Groß-/Kleinschreibung ist egal; eindeutige kleine Tippfehler im Marktnamen werden korrigiert.
23
+
24
+ **Bitte Geduld:** Ein neuer Sortiervorgang erfolgt **niemals sofort**. Abhängig von Internetverbindung, Geschwindigkeit und Alexa kann es **bis zu fünf Minuten** dauern. Solange der Befehl noch in der Einkaufsliste steht, ist das zunächst normal. **Erst nach fünf Minuten** Internet-/Alexa-Verbindung sowie Artikelnummer und Marktnamen prüfen. Bei einem Eingabefehler den Befehl in Alexa abhaken und korrigiert neu eingeben.
25
+
26
+ Der Marktwechsel gilt **nur für diesen Einkauf**. Die gespeicherte Produktzuordnung und die Lernfunktion bleiben unverändert. Erfolgreiche Steuerbefehle verschwinden aus der Liste. Bleibt ein Befehl stehen, Nummer und Markt prüfen, den falschen Befehl in Alexa abhaken und richtig neu eingeben. **Nummern vor Marktüberschriften können nicht zum Verschieben von Artikeln verwendet werden.** Bei mehrdeutigen Befehlen wird nichts geraten.
27
+
28
+ Die Funktion ist für 0.5.2 vorbereitet; die veröffentlichte 0.5.1 bleibt auf npm unverändert.
29
+
30
+ ## Neu in 0.5.1: bequem am Handy einkaufen
31
+
32
+ Diese Version behebt die gemeldeten Speicher- und Verschiebefehler der neuen Verwaltungsseite. Im Mittelpunkt steht die Bedienung am Handy während des Einkaufs:
33
+
34
+ - **Neue Listen tatsächlich in Alexa anlegen:** ShoppingRoute erstellt und bestätigt die Liste in Alexa, bevor sie verwendet wird. Eine ungültige neue Listenverknüpfung wird vor dem Speichern zurückgewiesen und beeinträchtigt keine funktionierenden Listen.
35
+ - **Artikel direkt hinzufügen:** Auf der Seite **Einkaufsliste** kannst du neue Artikel eintragen, auch wenn die Alexa-Liste noch leer ist.
36
+ - **Bis ans Ende und wieder zurück verschieben:** Eigene Ablageflächen am Listenende, Touch-Griffe, korrigierte Einfügepositionen und leere Rückkehr-Märkte erleichtern das Verschieben. Mit **Weitere Märkte als Ablageziel anzeigen** werden zusätzliche Zielmärkte eingeblendet.
37
+ - **Längere Vorgänge verstehen:** Ein gut lesbarer Hinweis erklärt sofort, dass Alexa gerade aktualisiert wird. Das endgültige Ergebnis wird gesondert abgefragt; ein längerer Vorgang wird nicht mehr durch den bisherigen Oberflächen-Timeout als fehlgeschlagen angezeigt.
38
+ - **Änderungen behalten:** Löschen, Umordnen und Auswahlen auf der Verwaltungsseite werden sofort gespeichert. Texteingaben bleiben bis zum Druck auf **Speichern** ein Entwurf; **Hinzufügen** übernimmt einen neuen Eintrag. Gespeicherte Änderungen bleiben beim erneuten Öffnen erhalten.
39
+ - **Unterbrochene Speicheraktionen vermeiden:** Lokale Katalogänderungen benötigen keine unnötige Amazon-Abfrage mehr. Lerndaten werden ohne Adapter-Neustart gespeichert. Schnelle Änderungen werden nacheinander verarbeitet; bei einem echten Speicherfehler bleiben die Eingaben für einen erneuten Versuch erhalten.
40
+ - **Artikel nach einer Alexa-Neunummerierung zurückschieben:** Geänderte Amazon-Artikel-IDs werden bei eindeutigem Artikelnamen sicher zugeordnet. Bei gleichnamigen Artikeln wird keine Zuordnung geraten.
41
+
42
+ Öffne **ShoppingRoute** in der ioBroker-Seitenleiste auf dem Handy. Zum Ziehen verwendest du den Griff `⋮⋮`; Pfeiltasten und Marktauswahl stehen weiterhin zur Verfügung. Nach dem Update bitte die Verwaltungsseite einmal vollständig neu laden. Alexa-Schreibzugriffe verwenden weiterhin die eingestellten Limits, Dry-Run und Ergebnisprüfungen.
43
+
44
+ Rückmeldungen zu 0.5.1 bitte im bestehenden [Tester-Thread](https://forum.iobroker.net/topic/85510/test-adapter-shoppingroute-v0.4.4) oder als [GitHub-Issue](https://github.com/RaviniZib/ioBroker.shoppingroute/issues) melden.
45
+
14
46
  ## Funktionen
15
47
 
16
48
  - eigene **ShoppingRoute-Verwaltungsseite** in der ioBroker-Seitenleiste für Einkaufsliste, Artikel, Märkte, Produktgruppen, Laufwege, Listen und Prüfung
17
49
  - Katalogänderungen werden zur Laufzeit gespeichert und benötigen keinen Adapter-Neustart
50
+ - bestätigte Alexa-Listen und neue Einkaufsartikel direkt am Handy anlegen
51
+ - sofortiges Speichern von Strukturänderungen; Texteingaben über den Button **Speichern** übernehmen
18
52
  - Marktnamen werden unabhängig von der Eingabe automatisch in **GROSSBUCHSTABEN** gespeichert; alle Marktverweise werden konsistent mit normalisiert
19
53
  - Schutz vor versehentlichem Zurücksetzen großer Katalogdaten durch Admin-/Update-Vorgänge
20
54
 
@@ -55,7 +89,20 @@ Bei der Marktzuordnung gilt:
55
89
  6. erster erlaubter Markt aus „Verfügbare Märkte“
56
90
  7. Fallback-Markt
57
91
 
58
- Anschließend kann 0.3.0 flexible Artikel marktübergreifend zusammenlegen, wenn ein zusätzlicher Markt die konfigurierte Mindestanzahl nicht erreicht. Dafür werden ausschließlich im Artikelstamm hinterlegte alternative verfügbare Märkte verwendet. Explizite Angaben wie `Milch von LIDL` oder `Eier bei ALDI` werden niemals verschoben.
92
+ ### Intelligente Marktoptimierung – weniger Geschäfte, kürzere Einkaufswege
93
+
94
+ ShoppingRoute sortiert nicht nur Artikel nach Märkten und Laufwegen, sondern kann auch **unnötige zusätzliche Marktbesuche vermeiden**. Wird die konfigurierte Mindestanzahl an Artikeln für einen Markt unterschritten, prüft die optionale marktübergreifende Zusammenlegung, ob die betroffenen Artikel in ohnehin besuchten Märkten erhältlich sind. Dafür berücksichtigt ShoppingRoute ausschließlich die im Artikelstamm hinterlegten **alternativen verfügbaren Märkte**.
95
+
96
+ **Beispiel:**
97
+
98
+ | Markt | Artikel vor der Optimierung |
99
+ | --- | --- |
100
+ | ALDI | Milch, Butter, Brot, Eier, Käse |
101
+ | REWE | Zucker |
102
+
103
+ Ist **ALDI für Zucker als verfügbarer Alternativmarkt** eingetragen und greift die konfigurierte Mindestartikel-Regel, kann ShoppingRoute Zucker dem ALDI-Einkauf zuordnen. Das Ergebnis: **6 Artikel bei ALDI, kein zusätzlicher REWE-Besuch nötig.**
104
+
105
+ Die Optimierung ist optional und abhängig von der eingestellten Mindestartikelzahl und den erlaubten Alternativmärkten. **Explizite Marktangaben** wie `Milch von LIDL` oder `Eier bei ALDI` bleiben verbindlich und werden niemals automatisch in einen anderen Markt verschoben.
59
106
 
60
107
  ## Wichtige Datenpunkte
61
108
 
@@ -78,6 +125,22 @@ ShoppingRoute wird unter der **[MIT-Lizenz](LICENSE)** veröffentlicht. Frühere
78
125
 
79
126
  ## Changelog
80
127
 
128
+ ### 0.5.2 (2026-10-16, noch nicht veröffentlicht)
129
+
130
+ - Temporärer Marktwechsel über `NNWMARKT` direkt in der normalen Alexa-Handy-App.
131
+ - Mehrere Befehle pro Sortierlauf, eindeutige Tippfehlerkorrektur und Schutz vor ungültigen Artikelnummern.
132
+ - Dauerhafte Artikelzuordnungen, Lernfunktion und bisherige Sortierlogik bleiben erhalten.
133
+
134
+
135
+ ### 0.5.1 (2026-10-07)
136
+ - Neue Listen werden in Alexa angelegt und vor dem Speichern ihrer Verknüpfung bestätigt; Einkaufsartikel können direkt hinzugefügt werden, auch in leeren Listen.
137
+ - Alexa-Verschiebungen zeigen sofort eine gut lesbare Rückmeldung. Die gewählte Position bleibt während des Wartens sichtbar; lange Vorgänge werden ohne den bisherigen Oberflächen-Timeout verfolgt.
138
+ - Ablageflächen am Listenende, Einfügepositionen, Touch-Ziehen und leere Rückkehr-Märkte in der Einkaufsliste korrigiert; Drag & Drop für Märkte, Produktgruppen und Laufwege wiederhergestellt.
139
+ - Löschen, Umordnen und Auswahlen auf der Verwaltungsseite werden sofort gespeichert. Texteingaben bleiben bis zum Speichern erhalten; schnelle Strukturänderungen werden ohne Wiederholungsschleife verarbeitet.
140
+ - Unnötige Amazon-Listenprüfungen bei lokalen Speicheraktionen entfernt. Lerndaten werden als Laufzeitdaten gespeichert und lösen keine Neustarts über das Instanzobjekt mehr aus.
141
+ - Eindeutig benannte Artikel werden nach geänderten Amazon-IDs sicher wiedererkannt. Mehrdeutige Zuordnungen bleiben gesperrt; Schutzmechanismen für Alexa-Schreibzugriffe bleiben erhalten.
142
+ - Deutsche und englische Einkaufslisten-Rückmeldungen, sprachabhängigen Hilfe-Button, Bedienungsanleitungen und beide READMEs aktualisiert.
143
+
81
144
  ### 0.5.0 (2026-10-05)
82
145
  - Neue eigenständige ShoppingRoute-Verwaltungsseite in der ioBroker-Seitenleiste mit fester Kopfzeile sowie Einkaufsliste, Artikel-, Markt-, Produktgruppen-, Laufweg-, Listen- und Prüfverwaltung.
83
146
  - Große Katalogdaten werden außerhalb der normalen Instanzkonfiguration als Laufzeitdaten gespeichert; Änderungen benötigen keinen Adapter-Neustart mehr.
@@ -0,0 +1 @@
1
+ import"./index-CqrYeeB9.js";import"./index-CWGnoEzs.js";const s=e=>{let t=e;for(let a=0;a<5;a++){const r=t==null?void 0:t.default;if(!r||typeof r!="object"||Object.keys(r).length===0)break;const n=Object.getPrototypeOf(r);if(n!==null&&n!==Object.prototype)break;const i=Object.keys(t).filter(o=>o!=="default").map(o=>t[o]);if(i.length>0&&i.some(o=>o!==void 0))break;t=r}return t},u={react:async()=>await import("./_virtual_mf___mfe_internal__ShoppingRouteAdminSet__mf_owner__195137731327240__prebuild__react__prebuild__-Dj6dAy_K.js")},d={react:{name:"react",version:"18.3.1",scope:["default"],loaded:!1,materialize:!0,eager:!1,from:"ShoppingRouteAdminSet",canLiveRebind:!0,get(){const e=d.react;return e.lib?e.lib:(e.loading||(e.loading=(async()=>{try{const{react:t}=u,a=await t(),r=s({...a});return r.__esModule!==!0&&Object.defineProperty(r,"__esModule",{value:!0,enumerable:!1}),e.lib=function(){return r},e.loaded=!0,e.lib}finally{e.loading=void 0}})()),e.loading)},shareConfig:{singleton:!0,requiredVersion:">=18",strictVersion:!1,eager:!1}}},m=[];export{m as usedRemotes,d as usedShared};
@@ -0,0 +1 @@
1
+ import{_ as re}from"./vite-preload-helper-Dp1pzeXC.js";function ne(e,t){for(var r=0;r<t.length;r++){const n=t[r];if(typeof n!="string"&&!Array.isArray(n)){for(const _ in n)if(_!=="default"&&!(_ in e)){const a=Object.getOwnPropertyDescriptor(n,_);a&&Object.defineProperty(e,_,a.get?a:{enumerable:!0,get:()=>n[_]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}const g=(e,t)=>{const r=e[t.canonical];if(r!==void 0)return r;const n=t.aliases||[];for(const _ of n){if(!Object.prototype.hasOwnProperty.call(e,_))continue;const a=e[_];if(a!==void 0)return e[t.canonical]=a,a}},u=Symbol.for("module-federation.shared-cache-listeners"),_e=e=>{let t=e[u];return t===void 0&&(t=Object.create(null),Object.defineProperty(e,u,{value:t,enumerable:!1,configurable:!1,writable:!1})),t},ae=(e,t,r)=>{const n=_e(e);(n[t.canonical]||=new Set).add(r)},c=Symbol.for("module-federation.shared-cache-owners"),se=e=>{let t=e[c];return t===void 0&&(t=Object.create(null),Object.defineProperty(e,c,{value:t,enumerable:!1,configurable:!1,writable:!1})),t},S=e=>{const t=[e,e==null?void 0:e.default];for(const r of t)if(!(!r||typeof r!="object")){for(const n of["__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE","__TEST_INTERNALS","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED"]){const _=r[n];if(_&&typeof _=="object")return{internals:_}}if(typeof r.useState=="function")return{hook:r.useState}}},le=(e,t)=>{if(e===t)return!0;const r=S(e),n=S(t);if(!r||!n)return!1;const _=r.internals,a=n.internals;return _!==void 0||a!==void 0?_!==void 0&&_===a:typeof r.hook=="function"&&r.hook===n.hook},fe=(e,t,r,n)=>{var h;const _=g(e,t);if(_!==void 0&&le(_,r))return r;e[t.canonical]=r;const a=t.aliases||[];for(const i of a)Object.defineProperty(e,i,{value:r,enumerable:!0,configurable:!0,writable:!0});e[c],se(e)[t.canonical]=n;const l=(h=e[u])==null?void 0:h[t.canonical];if(l)for(const i of l)i(r);return r},b="__mf_init__virtual:mf:__mfe_internal__ShoppingRouteAdminSet__mf_owner__195137731327240__mf_v__runtimeInit__mf_v__.js__";let m=globalThis[b];if(!m){let e,t;const r=new Promise((n,_)=>{e=n,t=_});m=globalThis[b]={initPromise:r,initResolve:e,initReject:t}}const oe=m.initPromise,o="__mf_module_cache__";globalThis[o]||={share:{},remote:{}};globalThis[o].share||={};globalThis[o].remote||={};const s=globalThis[o],ie=e=>{const t=s.pendingShareLoads||=[];t.push(e);const r=()=>{const n=t.indexOf(e);n!==-1&&t.splice(n,1)};return e.then(r,r),e};for(const e of Object.keys(s.share))if(e.startsWith("default:")){const t=e.slice(8);s.share[t]===void 0&&(s.share[t]=s.share[e])}else if(!e.includes(":")){const t="default:"+e;s.share[t]===void 0&&(s.share[t]=s.share[e])}const ue=e=>{const t=(()=>{let r=e;for(let n=0;n<5;n++){const _=r==null?void 0:r.default;if(!_||typeof _!="object")break;const a=Object.keys(r).filter(l=>l!=="default").map(l=>r[l]);if(a.length>0&&a.some(l=>l!==void 0))break;r=_}return r})();return t&&Object.getPrototypeOf(t)===null?Object.assign({},t):t};let E,y,p,O,R,T,C,I,P,L,N,j,D,w,x,A,k,v,M,U,V,F,K,z,G,W,Y,B,H,J,q,Q,X,Z,$,ee,te;const d=e=>{y=e.Children,p=e.Component,O=e.Fragment,R=e.Profiler,T=e.PureComponent,C=e.StrictMode,I=e.Suspense,P=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,L=e.act,N=e.cloneElement,j=e.createContext,D=e.createElement,w=e.createFactory,x=e.createRef,A=e.forwardRef,k=e.isValidElement,v=e.lazy,M=e.memo,U=e.startTransition,V=e.unstable_act,F=e.useCallback,K=e.useContext,z=e.useDebugValue,G=e.useDeferredValue,W=e.useEffect,Y=e.useId,B=e.useImperativeHandle,H=e.useInsertionEffect,J=e.useLayoutEffect,q=e.useMemo,Q=e.useReducer,X=e.useRef,Z=e.useState,$=e.useSyncExternalStore,ee=e.useTransition,te=e.version,E=e.default??e};ae(s.share,{canonical:"default:react"},d);let f=g(s.share,{canonical:"default:react",aliases:["react"]});f===void 0?ie(oe.then(()=>{if(f=g(s.share,{canonical:"default:react",aliases:["react"]}),f!==void 0){d(f);return}return re(()=>import("./_virtual_mf___mfe_internal__ShoppingRouteAdminSet__mf_owner__195137731327240__prebuild__react__prebuild__-Dj6dAy_K.js"),[],import.meta.url).then(e=>{f=ue(e),fe(s.share,{canonical:"default:react",aliases:["react"]},f,"ShoppingRouteAdminSet")})})):d(f);const ce=f,de=ne({__proto__:null,get Children(){return y},get Component(){return p},get Fragment(){return O},get Profiler(){return R},get PureComponent(){return T},get StrictMode(){return C},get Suspense(){return I},get __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(){return P},get act(){return L},get cloneElement(){return N},get createContext(){return j},get createElement(){return D},get createFactory(){return w},get createRef(){return x},get default(){return E},get forwardRef(){return A},get isValidElement(){return k},get lazy(){return v},get memo(){return M},get startTransition(){return U},get unstable_act(){return V},get useCallback(){return F},get useContext(){return K},get useDebugValue(){return z},get useDeferredValue(){return G},get useEffect(){return W},get useId(){return Y},get useImperativeHandle(){return B},get useInsertionEffect(){return H},get useLayoutEffect(){return J},get useMemo(){return q},get useReducer(){return Q},get useRef(){return X},get useState(){return Z},get useSyncExternalStore(){return $},get useTransition(){return ee},get version(){return te}},[ce]);export{de as _,E as a};
@@ -0,0 +1 @@
1
+ import{h as s}from"./index-CWGnoEzs.js";const e=s.share;export{e as s};
@@ -0,0 +1 @@
1
+ import{_ as G}from"./vite-preload-helper-Dp1pzeXC.js";import{s as $}from"./helpers-rsP3EuoI.js";import"./index-CWGnoEzs.js";const j="__mf_module_cache__";globalThis[j]||={share:{},remote:{}};globalThis[j].share||={};globalThis[j].remote||={};const _=globalThis[j];for(const m of Object.keys(_.share))if(m.startsWith("default:")){const h=m.slice(8);_.share[h]===void 0&&(_.share[h]=_.share[m])}else if(!m.includes(":")){const h="default:"+m;_.share[h]===void 0&&(_.share[h]=_.share[m])}let R;async function ee(){return R||(R=(async()=>{const m=(n,t,e,o)=>{const s=(Array.isArray(o)?o[0]:o)||"default",a=t||!e?n:n+"@"+e,c={canonical:s+":"+a};return s==="default"&&(c.aliases=[a]),c},h=(n,t)=>{const e=n[t.canonical];if(e!==void 0)return e;const o=t.aliases||[];for(const r of o){if(!Object.prototype.hasOwnProperty.call(n,r))continue;const s=n[r];if(s!==void 0)return n[t.canonical]=s,s}},U=Symbol.for("module-federation.shared-cache-listeners"),N=Symbol.for("module-federation.shared-cache-owners"),z=n=>{let t=n[N];return t===void 0&&(t=Object.create(null),Object.defineProperty(n,N,{value:t,enumerable:!1,configurable:!1,writable:!1})),t},B=(n,t)=>{var e;return(e=n[N])==null?void 0:e[t.canonical]},T=n=>{const t=[n,n==null?void 0:n.default];for(const e of t)if(!(!e||typeof e!="object")){for(const o of["__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE","__TEST_INTERNALS","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED"]){const r=e[o];if(r&&typeof r=="object")return{internals:r}}if(typeof e.useState=="function")return{hook:e.useState}}},W=(n,t)=>{if(n===t)return!0;const e=T(n),o=T(t);if(!e||!o)return!1;const r=e.internals,s=o.internals;return r!==void 0||s!==void 0?r!==void 0&&r===s:typeof e.hook=="function"&&e.hook===o.hook},x=(n,t,e,o)=>{var c;const r=h(n,t);if(r!==void 0&&W(r,e))return e;n[t.canonical]=e;const s=t.aliases||[];for(const l of s)Object.defineProperty(n,l,{value:e,enumerable:!0,configurable:!0,writable:!0});n[N],z(n)[t.canonical]=o;const a=(c=n[U])==null?void 0:c[t.canonical];if(a)for(const l of a)l(e);return e},d=await(await import("../routeEditor.js")).init(),{usedShared:F}=await G(async()=>{const{usedShared:n}=await import("./_virtual_mf-localSharedImportMap___mfe_internal__ShoppingRouteAdminSet__mf_owner__1-u-WAs2m5.js");return{usedShared:n}},[],import.meta.url),Y=n=>{let t=n;for(let e=0;e<5;e++){const o=t==null?void 0:t.default;if(!o||typeof o!="object"||Object.keys(o).length===0)break;const r=Object.getPrototypeOf(o);if(r!==null&&r!==Object.prototype)break;const s=Object.keys(t).filter(a=>a!=="default").map(a=>t[a]);if(s.length>0&&s.some(a=>a!==void 0))break;t=o}return t},q=(n,t)=>I(t).some(e=>{var o,r;return Object.keys(((r=(o=d.shareScopeMap)==null?void 0:o[e])==null?void 0:r[n])||{}).some(s=>s!==t.version)}),J=[["react"]],A=Symbol("mf.originalSharedProvider"),Q={emit:n=>n},I=n=>Array.isArray(n.scope)?n.scope:[n.scope||"default"],X=(n,t)=>{const e={};for(const[o,r]of Object.entries(n))e[o]=Object.assign({},r,{[A]:r});return e},Z=(n,t,e,o)=>{var g;if(!n||!e)return;const r=Object.fromEntries(Object.entries(n).filter(([,S])=>{var y;return((y=S==null?void 0:S.shareConfig)==null?void 0:y.import)!==!1}));if(Object.keys(r).length===0)return;const s=I(e),a=X(r),c={};for(const S of s)c[S||"default"]={[t]:a};const l=(g=$.getRegisteredShare(c,t,{...e,scope:s,strategy:o},Q))==null?void 0:g.shared;return(l==null?void 0:l[A])||l},P=(n,t,e,o)=>{var r;return(r=e.shareConfig)!=null&&r.singleton?Object.values(n||{}).some(s=>{var a;return((a=s==null?void 0:s.shareConfig)==null?void 0:a.import)!==!1}):!!Z(n,t,{...e,scope:[o]},"version-first")};for(const n of J)await Promise.all(n.map(async t=>{var r,s,a,c,l,g,S,y,w,D,L,K,M,v;const e=F[t];if(!e||e.materialize===!1&&!e.lazy||e.treeShaking)return;const o=m(t,(r=e.shareConfig)==null?void 0:r.singleton,e.version,e.scope);if(!(h(_.share,o)!==void 0&&(!((s=e.shareConfig)!=null&&s.singleton)&&B(_.share,o)==="ShoppingRouteAdminSet"||(a=e.shareConfig)!=null&&a.singleton&&!q(t,e)))){if(((c=e.shareConfig)==null?void 0:c.import)===!1){const p=I(e),C=f=>{var i,u;return!P((u=(i=d.shareScopeMap)==null?void 0:i[f])==null?void 0:u[t],t,e,f)};if(p.some(C)){d.__mfKeepAdoptedProviders||(d.__mfKeepAdoptedProviders=!0,(w=(y=(S=(g=(l=d.sharedHandler)==null?void 0:l.hooks)==null?void 0:g.lifecycle)==null?void 0:S.afterRegisterShare)==null?void 0:y.on)==null||w.call(y,f=>{var O,H,V,k;const{shared:i,previousShared:u,registeredShared:E}=f||{};if(((O=i==null?void 0:i.shareConfig)==null?void 0:O.import)!==!1||E!==i||!u||((H=u.shareConfig)==null?void 0:H.import)===!1)return;const b=(k=(V=d.shareScopeMap)==null?void 0:V[f.scope])==null?void 0:k[f.pkgName];b&&b[i.version]===i&&(b[i.version]=u)}));for(const f of((D=globalThis.__FEDERATION__)==null?void 0:D.__INSTANCES__)||[])for(const i of p){const u=(K=(L=f==null?void 0:f.shareScopeMap)==null?void 0:L[i])==null?void 0:K[t];if(!P(u,t,e,i)||!C(i))continue;const E=(d.shareScopeMap[i]||={})[t]||={};for(const[b,O]of Object.entries(u))((M=O==null?void 0:O.shareConfig)==null?void 0:M.import)!==!1&&(E[b]&&((v=E[b].shareConfig)==null?void 0:v.import)!==!1||(E[b]=O))}}if(p.every(C))return}await d.loadShare(t,{customShareInfo:{shareConfig:e.shareConfig}}).then(async p=>{if(p===!1)return;const C=typeof p=="function"?p():p;let f=Y(await Promise.resolve(C));x(_.share,o,f,"ShoppingRouteAdminSet")})}}));return d})()),R}R=ee();export{R as hostInitPromise,ee as initHost};
@@ -3,5 +3,5 @@ const Ct=".json",Gt="FEDERATION_DEBUG";let we=(function(e){return e[e.UNKNOWN=1]
3
3
  ${r.slice(0,5).join(`
4
4
  `)}`:void 0}catch{return}}var tt=class{constructor(e,t=z){this.prefix=e,this.delegate=t??z}setPrefix(e){this.prefix=e}setDelegate(e){this.delegate=e??z}emit(e,t){const r=this.delegate,n=$e()?Kt():void 0,o=n?[...t,n]:t,s=(()=>{switch(e){case"log":return["log","info"];case"info":return["info","log"];case"warn":return["warn","info","log"];case"error":return["error","warn","log"];default:return["debug","log"]}})();for(const i of s){const a=r[i];if(typeof a=="function"){a.call(r,this.prefix,...o);return}}for(const i of s){const a=z[i];if(typeof a=="function"){a.call(z,this.prefix,...o);return}}}log(...e){this.emit("log",e)}warn(...e){this.emit("warn",e)}error(...e){this.emit("error",e)}success(...e){this.emit("info",e)}info(...e){this.emit("info",e)}ready(...e){this.emit("info",e)}debug(...e){$e()&&this.emit("debug",e)}};function zt(e){return new tt(e)}function Jt(e){const t=new tt(e);return Object.defineProperty(t,"__mf_infrastructure_logger__",{value:!0,enumerable:!1,configurable:!1}),t}Jt(jt);async function rt(e,t){try{return await e()}catch(r){Ye(r);return}}function Ae(e,t){const r=/^(https?:)?\/\//i;return e.replace(r,"").replace(/\/$/,"")===t.replace(r,"").replace(/\/$/,"")}function ot(e){let t=null,r=!0,n=2e4,o;const s=document.getElementsByTagName("script");for(let l=0;l<s.length;l++){const f=s[l],u=f.getAttribute("src");if(u&&Ae(u,e.url)){t=f,r=!1;break}}if(!t){const l=e.attrs;t=document.createElement("script"),t.type=(l==null?void 0:l.type)==="module"?"module":"text/javascript";let f;e.createScriptHook&&(f=e.createScriptHook(e.url,e.attrs),f instanceof HTMLScriptElement?t=f:typeof f=="object"&&("script"in f&&f.script&&(t=f.script),"timeout"in f&&f.timeout&&(n=f.timeout))),t.src||(t.src=e.url),l&&!f&&Object.keys(l).forEach(u=>{t&&(u==="async"||u==="defer"?t[u]=l[u]:t.getAttribute(u)||t.setAttribute(u,l[u]))})}let i=null;const a=typeof window<"u"?l=>{if(l.filename&&Ae(l.filename,e.url)){const f=new Error(`ScriptExecutionError: Script "${e.url}" loaded but threw a runtime error during execution: ${l.message} (${l.filename}:${l.lineno}:${l.colno})`);f.name="ScriptExecutionError",i=f}}:null;a&&window.addEventListener("error",a);const c=async(l,f)=>{clearTimeout(o),a&&window.removeEventListener("error",a);const u=()=>{if((f==null?void 0:f.type)==="error"){const h=new Error(f!=null&&f.isTimeout?`ScriptNetworkError: Script "${e.url}" timed out.`:`ScriptNetworkError: Failed to load script "${e.url}" - the script URL is unreachable or the server returned an error (network failure, 404, CORS, etc.)`);h.name="ScriptNetworkError",e!=null&&e.onErrorCallback&&(e==null||e.onErrorCallback(h))}else i?e!=null&&e.onErrorCallback&&(e==null||e.onErrorCallback(i)):e!=null&&e.cb&&(e==null||e.cb())};if(t&&(t.onerror=null,t.onload=null,rt(()=>{const{needDeleteScript:h=!0}=e;h&&t!=null&&t.parentNode&&t.parentNode.removeChild(t)}),l&&typeof l=="function")){const h=l(f);if(h instanceof Promise){const m=await h;return u(),m}return u(),h}u()};return t.onerror=c.bind(null,t.onerror),t.onload=c.bind(null,t.onload),o=setTimeout(()=>{c(null,{type:"error",isTimeout:!0})},n),{script:t,needAttach:r}}function Zt(e){let t=null,r=!0,n=2e4,o;const s=document.getElementsByTagName("link");for(let a=0;a<s.length;a++){const c=s[a],l=c.getAttribute("href"),f=c.getAttribute("rel");if(l&&Ae(l,e.url)&&f===e.attrs.rel){t=c,r=!1;break}}if(!t){t=document.createElement("link"),t.setAttribute("href",e.url);let a,c=!0;const l=e.attrs;e.createLinkHook&&(a=e.createLinkHook(e.url,l),a instanceof HTMLLinkElement?(t=a,c=!1):typeof a=="object"&&("link"in a&&a.link&&(t=a.link,c=!1),"timeout"in a&&a.timeout&&(n=a.timeout))),l&&c&&Object.keys(l).forEach(f=>{t&&!t.getAttribute(f)&&t.setAttribute(f,l[f])})}if(!r)return Promise.resolve().then(()=>{e!=null&&e.cb&&(e==null||e.cb())}),{link:t,needAttach:r};const i=(a,c)=>{o&&clearTimeout(o);const l=()=>{if((c==null?void 0:c.type)==="error"){const f=new Error(c!=null&&c.isTimeout?`LinkNetworkError: Link "${e.url}" timed out.`:`LinkNetworkError: Failed to load link "${e.url}" - the URL is unreachable or the server returned an error.`);f.name="LinkNetworkError",e!=null&&e.onErrorCallback&&(e==null||e.onErrorCallback(f))}else e!=null&&e.cb&&(e==null||e.cb())};if(t&&(t.onerror=null,t.onload=null,rt(()=>{const{needDeleteLink:f=!0}=e;f&&t!=null&&t.parentNode&&t.parentNode.removeChild(t)}),a)){const f=a(c);return l(),f}l()};return t.onerror=i.bind(null,t.onerror),t.onload=i.bind(null,t.onload),o=setTimeout(()=>{i(null,{type:"error",isTimeout:!0})},n),{link:t,needAttach:r}}function Xt(e,t){const{attrs:r={},createScriptHook:n}=t;return new Promise((o,s)=>{const{script:i,needAttach:a}=ot({url:e,cb:o,onErrorCallback:s,attrs:{fetchpriority:"high",...r},createScriptHook:n,needDeleteScript:!0});a&&document.head.appendChild(i)})}const Yt=e=>`View the docs to see how to solve: https://module-federation.io/guide/troubleshooting/${e.split("-")[0].toLowerCase()}#${e.toLowerCase()}`,nt=(e,t,r,n)=>{const o=[`${[t[e]]} #${e}`];return r&&o.push(`args: ${JSON.stringify(r)}`),o.push(Yt(e)),n&&o.push(`Original Error Message:
5
5
  ${n}`),o.join(`
6
- `)};function Qt(e,t,r,n,o,s){return n(nt(e,t,r,o))}const x="[ Federation Runtime ]",ve=zt(x);function M(e,t,r,n,o){e||R(t)}function R(e,t,r,n,o){if(t!==void 0)return Qt(e,t,r??{},i=>{throw new Error(`${x}: ${i}`)},n);const s=e;throw s instanceof Error?(s.message.startsWith(x)||(s.message=`${x}: ${s.message}`),s):new Error(`${x}: ${s}`)}function Q(e){e instanceof Error&&(e.message.startsWith(x)||(e.message=`${x}: ${e.message}`)),ve.warn(e)}function er(e,t){return e.findIndex(r=>r===t)===-1&&e.push(t),e}function ee(e){return"version"in e&&e.version?`${e.name}:${e.version}`:"entry"in e&&e.entry?`${e.name}:${e.entry}`:`${e.name}`}function ke(e){return typeof e.entry<"u"}function st(e){return!e.entry.includes(".json")}function Le(e){return e&&typeof e=="object"}const tr=Object.prototype.toString;function it(e){return tr.call(e)==="[object Object]"}function at(e){return Array.isArray(e)?e:[e]}function ct(e){const t={url:"",type:"global",globalName:""};return"remoteEntry"in e?{url:e.remoteEntry,type:e.remoteEntryType,globalName:e.globalName}:t}const rr=(e,t)=>{let r;return e.endsWith("/")?r=e.slice(0,-1):r=e,t.startsWith(".")&&(t=t.slice(1)),r=r+t,r},or=2e3,I=typeof globalThis=="object"?globalThis:window,P=(()=>{try{return document.defaultView}catch{return I}})(),me=P;function ce(e,t,r){Object.defineProperty(e,t,{value:r,configurable:!1,writable:!0})}function le(e,t){return Object.hasOwnProperty.call(e,t)}le(I,"__GLOBAL_LOADING_REMOTE_ENTRY__")||ce(I,"__GLOBAL_LOADING_REMOTE_ENTRY__",{});const G=I.__GLOBAL_LOADING_REMOTE_ENTRY__;function lt(e){le(e,"__VMOK__")&&!le(e,"__FEDERATION__")&&ce(e,"__FEDERATION__",e.__VMOK__),le(e,"__FEDERATION__")||(ce(e,"__FEDERATION__",{__GLOBAL_PLUGIN__:[],__INSTANCES__:[],moduleInfo:{},__SHARE__:{},__MANIFEST_LOADING__:{},__PRELOADED_MAP__:new Map,__PRELOADED_ASSETS__:new Set}),ce(e,"__VMOK__",e.__FEDERATION__)),e.__FEDERATION__.__GLOBAL_PLUGIN__??=[],e.__FEDERATION__.__INSTANCES__??=[],e.__FEDERATION__.moduleInfo??={},e.__FEDERATION__.__SHARE__??={},e.__FEDERATION__.__MANIFEST_LOADING__??={},e.__FEDERATION__.__PRELOADED_MAP__??=new Map,e.__FEDERATION__.__PRELOADED_ASSETS__??=new Set}lt(I);lt(P);function wo(e){I.__FEDERATION__.__INSTANCES__.push(e)}function $o(){return I.__FEDERATION__.__DEBUG_CONSTRUCTOR__}function To(e,t=$e()){t&&(I.__FEDERATION__.__DEBUG_CONSTRUCTOR__=e,I.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__="2.9.0")}function B(e,t){if(typeof t=="string"){if(e[t])return{value:e[t],key:t};{const r=Object.keys(e);for(const n of r){const[o,s]=n.split(":"),i=`${o}:${t}`,a=e[i];if(a)return{value:a,key:i}}return{value:void 0,key:t}}}else R(`getInfoWithoutType: "key" must be a string, got ${typeof t} (${JSON.stringify(t)}).`)}const Ce=()=>P.__FEDERATION__.moduleInfo,nr=(e,t)=>{const r=B(t,ee(e)).value;if(r&&!r.version&&"version"in e&&e.version&&(r.version=e.version),r)return r;if("version"in e&&e.version){const{version:n,...o}=e,s=ee(o),i=B(P.__FEDERATION__.moduleInfo,s).value;if((i==null?void 0:i.version)===n)return i}},fe=e=>nr(e,P.__FEDERATION__.moduleInfo),Ge=(e,t)=>{const r=ee(e);return P.__FEDERATION__.moduleInfo[r]=t,P.__FEDERATION__.moduleInfo},sr=e=>(P.__FEDERATION__.moduleInfo={...P.__FEDERATION__.moduleInfo,...e},()=>{const t=Object.keys(e);for(const r of t)delete P.__FEDERATION__.moduleInfo[r]}),ft=(e,t)=>{const r=t||`__FEDERATION_${e}:custom__`;return{remoteEntryKey:r,entryExports:I[r]}},ir=()=>P.__FEDERATION__.__GLOBAL_PLUGIN__,ar=e=>I.__FEDERATION__.__PRELOADED_MAP__.get(e),cr=e=>I.__FEDERATION__.__PRELOADED_MAP__.set(e,!0),lr=e=>I.__FEDERATION__.__PRELOADED_ASSETS__.has(e),fr=e=>{const t=I.__FEDERATION__.__PRELOADED_ASSETS__;if(t.add(e),t.size>or){const r=t.values().next().value;r!==void 0&&t.delete(r)}},xe="[0-9A-Za-z-]+",Me=`(?:\\+(${xe}(?:\\.${xe})*))`,X="0|[1-9]\\d*",ue="[0-9]+",ut="\\d*[a-zA-Z-][a-zA-Z0-9-]*",Ue=`(?:${ue}|${ut})`,ur=`(?:-?(${Ue}(?:\\.${Ue})*))`,Be=`(?:${X}|${ut})`,ht=`(?:-(${Be}(?:\\.${Be})*))`,_e=`${X}|x|X|\\*`,K=`[v=\\s]*(${_e})(?:\\.(${_e})(?:\\.(${_e})(?:${ht})?${Me}?)?)?`,hr=`^\\s*(${K})\\s+-\\s+(${K})\\s*$`,dr=`[v=\\s]*${`(${ue})\\.(${ue})\\.(${ue})`}${ur}?${Me}?`,Pe="((?:<|>)?=?)",mr=`(\\s*)${Pe}\\s*(${dr}|${K})`,dt="(?:~>?)",pr=`(\\s*)${dt}\\s+`,mt="(?:\\^)",yr=`(\\s*)${mt}\\s+`,Er="(<|>)?=?\\s*\\*",gr=`^${mt}${K}$`,_r=`v?${`(${X})\\.(${X})\\.(${X})`}${ht}?${Me}?`,Sr=`^${dt}${K}$`,Rr=`^${Pe}\\s*${K}$`,br=`^${Pe}\\s*(${_r})$|^$`,Ir="^\\s*>=\\s*0.0.0\\s*$";function O(e){return new RegExp(e)}function N(e){return!e||e.toLowerCase()==="x"||e==="*"}function pt(...e){return t=>e.reduce((r,n)=>n(r),t)}function We(e){return e.match(O(br))}function Ve(e,t,r,n){const o=`${e}.${t}.${r}`;return n?`${o}-${n}`:o}function wr(e){return e.replace(O(hr),(t,r,n,o,s,i,a,c,l,f,u,h)=>(N(n)?r="":N(o)?r=`>=${n}.0.0`:N(s)?r=`>=${n}.${o}.0`:r=`>=${r}`,N(l)?c="":N(f)?c=`<${Number(l)+1}.0.0-0`:N(u)?c=`<${l}.${Number(f)+1}.0-0`:h?c=`<=${l}.${f}.${u}-${h}`:c=`<=${c}`,`${r} ${c}`.trim()))}function $r(e){return e.replace(O(mr),"$1$2$3")}function Tr(e){return e.replace(O(pr),"$1~")}function Ar(e){return e.replace(O(yr),"$1^")}function vr(e){return e.trim().split(/\s+/).map(t=>t.replace(O(gr),(r,n,o,s,i)=>N(n)?"":N(o)?`>=${n}.0.0 <${Number(n)+1}.0.0-0`:N(s)?n==="0"?`>=${n}.${o}.0 <${n}.${Number(o)+1}.0-0`:`>=${n}.${o}.0 <${Number(n)+1}.0.0-0`:i?n==="0"?o==="0"?`>=${n}.${o}.${s}-${i} <${n}.${o}.${Number(s)+1}-0`:`>=${n}.${o}.${s}-${i} <${n}.${Number(o)+1}.0-0`:`>=${n}.${o}.${s}-${i} <${Number(n)+1}.0.0-0`:n==="0"?o==="0"?`>=${n}.${o}.${s} <${n}.${o}.${Number(s)+1}-0`:`>=${n}.${o}.${s} <${n}.${Number(o)+1}.0-0`:`>=${n}.${o}.${s} <${Number(n)+1}.0.0-0`)).join(" ")}function Nr(e){return e.trim().split(/\s+/).map(t=>t.replace(O(Sr),(r,n,o,s,i)=>N(n)?"":N(o)?`>=${n}.0.0 <${Number(n)+1}.0.0-0`:N(s)?`>=${n}.${o}.0 <${n}.${Number(o)+1}.0-0`:i?`>=${n}.${o}.${s}-${i} <${n}.${Number(o)+1}.0-0`:`>=${n}.${o}.${s} <${n}.${Number(o)+1}.0-0`)).join(" ")}function kr(e){return e.split(/\s+/).map(t=>t.trim().replace(O(Rr),(r,n,o,s,i,a)=>{const c=N(o),l=c||N(s),f=l||N(i);return n==="="&&f&&(n=""),a="",c?n===">"||n==="<"?"<0.0.0-0":"*":n&&f?(l&&(s=0),i=0,n===">"?(n=">=",l?(o=Number(o)+1,s=0,i=0):(s=Number(s)+1,i=0)):n==="<="&&(n="<",l?o=Number(o)+1:s=Number(s)+1),n==="<"&&(a="-0"),`${n+o}.${s}.${i}${a}`):l?`>=${o}.0.0${a} <${Number(o)+1}.0.0-0`:f?`>=${o}.${s}.0${a} <${o}.${Number(s)+1}.0-0`:r})).join(" ")}function Lr(e){return e.trim().replace(O(Er),"")}function Mr(e){return e.trim().replace(O(Ir),"")}function he(e,t){return e=Number(e)||e,t=Number(t)||t,e>t?1:e===t?0:-1}function Pr(e,t){const{preRelease:r}=e,{preRelease:n}=t;if(r===void 0&&n)return 1;if(r&&n===void 0)return-1;if(r===void 0&&n===void 0)return 0;for(let o=0,s=r.length;o<=s;o++){const i=r[o],a=n[o];if(i!==a)return i===void 0&&a===void 0?0:i?a?he(i,a):-1:1}return 0}function ne(e,t){return he(e.major,t.major)||he(e.minor,t.minor)||he(e.patch,t.patch)||Pr(e,t)}function Se(e,t){return e.version===t.version}function Or(e,t){switch(e.operator){case"":case"=":return Se(e,t);case">":return ne(e,t)<0;case">=":return Se(e,t)||ne(e,t)<0;case"<":return ne(e,t)>0;case"<=":return Se(e,t)||ne(e,t)>0;case void 0:return!0;default:return!1}}function Dr(e){return pt(vr,Nr,kr,Lr)(e)}function Hr(e){return pt(wr,$r,Tr,Ar)(e.trim()).split(/\s+/).join(" ")}function Z(e,t){if(!e)return!1;const r=We(e);if(!r)return!1;const[,n,,o,s,i,a]=r,c={operator:n,version:Ve(o,s,i,a),major:o,minor:s,patch:i,preRelease:a==null?void 0:a.split(".")},l=t.split("||");for(const f of l){const u=f.trim();if(!u||u==="*"||u==="x")return!0;try{const h=Hr(u);if(!h.trim())return!0;const m=h.split(" ").map(y=>Dr(y)).join(" ");if(!m.trim())return!0;const d=m.split(/\s+/).map(y=>Mr(y)).filter(Boolean);if(d.length===0)continue;let p=!0;for(const y of d){const E=We(y);if(!E){p=!1;break}const[,_,,g,S,b,$]=E;if(!Or({operator:_,version:Ve(g,S,b,$),major:g,minor:S,patch:b,preRelease:$==null?void 0:$.split(".")},c)){p=!1;break}}if(p)return!0}catch(h){console.error(`[semver] Error processing range part "${u}":`,h);continue}}return!1}const oe="default",yt="global";function Fr(e,t,r,n){var s,i;let o;return"get"in e?o=e.get:"lib"in e?o=()=>Promise.resolve(e.lib):o=()=>Promise.resolve(()=>{R(`Cannot get shared "${r}" from "${t}": neither "get" nor "lib" is provided in the share config.`)}),(s=e.shareConfig)!=null&&s.eager&&((i=e.treeShaking)!=null&&i.mode)&&R(`Invalid shared config for "${r}" from "${t}": cannot use both "eager: true" and "treeShaking.mode" simultaneously. Choose one strategy.`),{deps:[],useIn:[],from:t,loading:null,...e,shareConfig:{requiredVersion:`^${e.version}`,singleton:!1,eager:!1,strictVersion:!1,...e.shareConfig},get:o,loaded:e!=null&&e.loaded||"lib"in e?!0:void 0,version:e.version??"0",scope:Array.isArray(e.scope)?e.scope:[e.scope??"default"],strategy:(e.strategy??n)||"version-first",treeShaking:e.treeShaking?{...e.treeShaking,mode:e.treeShaking.mode??"server-calc",status:e.treeShaking.status??we.UNKNOWN,useIn:[]}:void 0}}function Et(e,t){const r=t.shared||{},n=t.name,o=Object.keys(r).reduce((i,a)=>{const c=at(r[a]);return i[a]=i[a]||[],c.forEach(l=>{i[a].push(Fr(l,n,a,t.shareStrategy))}),i},{}),s={...e.shared};return Object.keys(o).forEach(i=>{s[i]?o[i].forEach(a=>{s[i].find(c=>c.version===a.version)||s[i].push(a)}):s[i]=o[i]}),{allShareInfos:s,newShareInfos:o}}function te(e,t){if(!e)return!1;const{status:r,mode:n}=e;return r===we.NO_USE?!1:r===we.CALCULATED?!0:n==="runtime-infer"?t?Gr(e,t):!0:!1}function U(e,t){const r=n=>{if(!Number.isNaN(Number(n))){const o=n.split(".");let s=n;for(let i=0;i<3-o.length;i++)s+=".0";return s}return n};return!!Z(r(e),`<=${r(t)}`)}const re=(e,t)=>{const r=t||function(n,o){return U(n,o)};return Object.keys(e).reduce((n,o)=>!n||r(n,o)||n==="0"?o:n,0)},de=e=>!!e.loaded||typeof e.lib=="function",Cr=e=>!!e.loading,Gr=(e,t)=>{if(!e||!t)return!1;const{usedExports:r}=e;return r?!!t.every(n=>r.includes(n)):!1};function xr(e,t,r,n){const o=e[t][r];let s="",i=te(n);const a=function(c,l){return i?o[c].treeShaking?o[l].treeShaking?!de(o[c].treeShaking)&&U(c,l):!1:!0:!de(o[c])&&U(c,l)};if(i){if(s=re(e[t][r],a),s)return{version:s,useTreesShaking:i};i=!1}return{version:re(e[t][r],a),useTreesShaking:i}}const W=e=>de(e)||Cr(e);function Ur(e,t,r,n){const o=e[t][r];let s="",i=te(n);const a=function(c,l){if(i){if(!o[c].treeShaking)return!0;if(!o[l].treeShaking)return!1;if(W(o[l].treeShaking))return W(o[c].treeShaking)?!!U(c,l):!0;if(W(o[c].treeShaking))return!1}return W(o[l])?W(o[c])?!!U(c,l):!0:W(o[c])?!1:U(c,l)};if(i){if(s=re(e[t][r],a),s)return{version:s,useTreesShaking:i};i=!1}return{version:re(e[t][r],a),useTreesShaking:i}}function Br(e){return e==="loaded-first"?Ur:xr}function Y(e,t,r,n,o){if(!e)return;const{shareConfig:s,scope:i=oe,strategy:a,treeShaking:c}=r,l=Array.isArray(i)?i:[i];for(const f of l)if(s&&e[f]&&e[f][t]){const{requiredVersion:u}=s,{version:h,useTreesShaking:m}=Br(a)(e,f,t,c),d=()=>{const y=e[f][t][h];if(s.singleton){if(typeof u=="string"&&!Z(h,u)){const E=`Version ${h} from ${h&&y.from} of shared singleton module ${t} does not satisfy the requirement of ${r.from} which needs ${u})`;s.strictVersion?R(E):Q(E)}return{shared:y,useTreesShaking:m}}else{if(u===!1||u==="*")return{shared:y,useTreesShaking:m};if(Z(h,u))return{shared:y,useTreesShaking:m};const E=te(c);if(E){for(const[_,g]of Object.entries(e[f][t]))if(te(g.treeShaking,c==null?void 0:c.usedExports)&&Z(_,u))return{shared:g,useTreesShaking:E}}for(const[_,g]of Object.entries(e[f][t]))if(Z(_,u))return{shared:g,useTreesShaking:!1}}},p={shareScopeMap:e,scope:f,pkgName:t,version:h,GlobalFederation:me.__FEDERATION__,shareInfo:r,resolver:d,loadContext:o};return(n.emit(p)||p).resolver()}}function Oe(){return me.__FEDERATION__.__SHARE__}function je(e){const{pkgName:t,extraOptions:r,shareInfos:n}=e,o=c=>{if(!c)return;const l={};return c.forEach(u=>{l[u.version]=u}),l[re(l,function(u,h){return!de(l[u])&&U(u,h)})]},s=(r==null?void 0:r.resolver)??o,i=c=>c!==null&&typeof c=="object"&&!Array.isArray(c),a=(...c)=>{const l={};for(const f of c)if(f)for(const[u,h]of Object.entries(f)){const m=l[u];i(m)&&i(h)?l[u]=a(m,h):h!==void 0&&(l[u]=h)}return l};return a(s(n[t]),r==null?void 0:r.customShareInfo)}const V=(e,t)=>{e.useIn||(e.useIn=[]),er(e.useIn,t)};function se(e,t){return t&&e.treeShaking?e.treeShaking:e}function De(e,t){return!t||t==="."?e:`${e}/${t.replace(/^\.\//,"")}`}function qe(e,t){for(const r of e){const n=t.startsWith(r.name);let o=t.replace(r.name,"");if(n){if(o.startsWith("/")){const a=r.name;return o=`.${o}`,{pkgNameOrAlias:a,expose:o,remote:r}}else if(o==="")return{pkgNameOrAlias:r.name,expose:".",remote:r}}const s=r.alias&&t.startsWith(r.alias);let i=r.alias&&t.replace(r.alias,"");if(r.alias&&s){if(i&&i.startsWith("/")){const a=r.alias;return i=`.${i}`,{pkgNameOrAlias:a,expose:i,remote:r}}else if(i==="")return{pkgNameOrAlias:r.alias,expose:".",remote:r}}}}function Wr(e,t){for(const r of e)if(t===r.name||r.alias&&t===r.alias)return r}const gt="RUNTIME-001",_t="RUNTIME-002",St="RUNTIME-003",Rt="RUNTIME-004",bt="RUNTIME-005",Ne="RUNTIME-006",It="RUNTIME-007",pe="RUNTIME-008",Vr="RUNTIME-009",wt="RUNTIME-010",$t="RUNTIME-011",jr="RUNTIME-012",Tt="RUNTIME-013",At="RUNTIME-014",vt="RUNTIME-015",k={[gt]:"Failed to get remoteEntry exports.",[_t]:'The remote entry interface does not contain "init"',[St]:"Failed to get manifest.",[Rt]:"Failed to locate remote.",[bt]:"Invalid loadShareSync function call from bundler runtime",[Ne]:"Invalid loadShareSync function call from runtime",[It]:"Failed to get remote snapshot.",[pe]:"Failed to load script resources.",[Vr]:"Please call createInstance first.",[wt]:'The name option cannot be changed after initialization. If you want to create a new instance with a different name, please use "createInstance" api.',[$t]:"The remoteEntry URL is missing from the remote snapshot.",[jr]:'The getter for the shared module is not a function. This may be caused by setting "shared.import: false" without the host providing the corresponding lib.',[Tt]:"The manifest is not a valid Module Federation manifest.",[At]:"The remote does not expose the requested module.",[vt]:"Remote container initialization failed."};({...k});const Nt=".then(callbacks[0]).catch(callbacks[1])",Ke=new WeakMap,qr=["Failed to fetch dynamically imported module","Importing a module script failed","error loading dynamically imported module"];function Kr(e){return e instanceof TypeError?qr.some(t=>e.message.includes(t)):!1}function kt(e){return e==="esm"||e==="module"}async function zr({entry:e,remoteEntryExports:t,name:r,getEntryUrl:n}){return new Promise((o,s)=>{const i=c=>{if(Kr(c)){const l=c instanceof Error?c.message:String(c);try{R(pe,k,{remoteName:r,resourceUrl:a},l)}catch(f){s(f);return}}s(c)},a=n?n(e):e;try{t?o(t):typeof FEDERATION_ALLOW_NEW_FUNCTION<"u"?new Function("callbacks",`import("${a}")${Nt}`)([o,i]):import(a).then(o).catch(i)}catch(c){R(`Failed to load ESM entry from "${a}". ${c instanceof Error?c.message:String(c)}`)}})}async function Jr({entry:e,remoteEntryExports:t}){return new Promise((r,n)=>{try{t?r(t):typeof __system_context__>"u"?System.import(e).then(r).catch(n):new Function("callbacks",`System.import("${e}")${Nt}`)([r,n])}catch(o){R(`Failed to load SystemJS entry from "${e}". ${o instanceof Error?o.message:String(o)}`)}})}function Zr(e,t,r){const{remoteEntryKey:n,entryExports:o}=ft(e,t);return o||R(gt,k,{remoteName:e,remoteEntryUrl:r,remoteEntryKey:n}),o}async function Xr({name:e,globalName:t,entry:r,remoteInfo:n,loaderHook:o,getEntryUrl:s,resourceContext:i}){const{entryExports:a}=ft(e,t);if(a)return a;const c=s?s(r):r;return Xt(c,{attrs:{},createScriptHook:(l,f)=>{const u=o.lifecycle.createScript.emit({url:l,attrs:f,remoteInfo:n,resourceContext:i?{...i,url:l}:void 0});if(u&&(u instanceof HTMLScriptElement||"script"in u||"timeout"in u))return u}}).then(()=>Zr(e,t,r),l=>{const f=l instanceof Error?l.message:String(l);R(pe,k,{remoteName:e,resourceUrl:c},f)})}async function Yr({remoteInfo:e,remoteEntryExports:t,loaderHook:r,getEntryUrl:n,resourceContext:o}){const{entry:s,entryGlobalName:i,name:a,type:c}=e;return kt(c)?zr({entry:s,remoteEntryExports:t,name:a,getEntryUrl:n}):c==="system"?Jr({entry:s,remoteEntryExports:t}):Xr({entry:s,globalName:i,name:a,remoteInfo:e,loaderHook:r,getEntryUrl:n,resourceContext:o})}function Lt(e){const{entry:t,name:r}=e;return Xe(r,t)}async function He(e){const{origin:t,remoteEntryExports:r,remoteInfo:n,getEntryUrl:o,resourceContext:s,_inErrorHandling:i=!1}=e,a=Lt(n);if(r)return await t.loaderHook.lifecycle.afterLoadEntry.emit({origin:t,remoteInfo:n,remoteEntryExports:r,resourceContext:s,cached:!0}),r;if(!G[a]){const l=t.remoteHandler.hooks.lifecycle.loadEntry,f=t.loaderHook;G[a]=l.emit({origin:t,loaderHook:f,remoteInfo:n,remoteEntryExports:r,resourceContext:s}).then(u=>u||Yr({remoteInfo:n,remoteEntryExports:r,loaderHook:f,getEntryUrl:o,resourceContext:s})).then(async u=>(await t.loaderHook.lifecycle.afterLoadEntry.emit({origin:t,remoteInfo:n,remoteEntryExports:u,resourceContext:s}),u)).catch(async u=>{const h=u instanceof Error&&u.message.includes("ScriptExecutionError");if(u instanceof Error&&u.message.includes(pe)&&!h&&!i){const m=p=>He({...p,_inErrorHandling:!0}),d=await t.loaderHook.lifecycle.loadEntryError.emit({getRemoteEntry:m,origin:t,remoteInfo:n,remoteEntryExports:r,globalLoading:G,uniqueKey:a});if(d)return await t.loaderHook.lifecycle.afterLoadEntry.emit({origin:t,remoteInfo:n,remoteEntryExports:d,resourceContext:s,error:u,recovered:!0}),d}throw await t.loaderHook.lifecycle.afterLoadEntry.emit({origin:t,remoteInfo:n,resourceContext:s,error:u}),u}),Ke.set(G[a],t)}const c=G[a];if(Ke.get(c)!==t)try{const l=await c;return await t.loaderHook.lifecycle.afterLoadEntry.emit({origin:t,remoteInfo:n,remoteEntryExports:l,resourceContext:s}),l}catch(l){throw await t.loaderHook.lifecycle.afterLoadEntry.emit({origin:t,remoteInfo:n,resourceContext:s,error:l}),l}return c}function j(e){return{...e,entry:"entry"in e?e.entry:"",type:e.type||yt,entryGlobalName:e.entryGlobalName||e.name,shareScope:e.shareScope||oe}}function Qr(){return typeof FEDERATION_BUILD_IDENTIFIER<"u"?FEDERATION_BUILD_IDENTIFIER:""}function eo(e){const t=new Map;return[...e||[],...ir()].forEach(r=>{r&&(M(it(r),"Plugin configuration is invalid."),M(r.name,"A name must be provided by the plugin."),t.has(r.name)||t.set(r.name,r))}),Array.from(t.values())}function to(e,t){return t===void 0?e:{...t,name:e.name,version:e.version}}function ro(e,t){const r=new Map;t.options.plugins.forEach(o=>{o&&r.set(o.name,o)});const n=[t.hooks,t.remoteHandler.hooks,t.sharedHandler.hooks,t.snapshotHandler.hooks,t.loaderHook,t.bridgeHook];return eo(e).forEach(o=>{var i;if(r.set(o.name,o),t.hooks.registerPlugins[o.name])return;const s=to(o,(i=o.apply)==null?void 0:i.call(o,t));n.forEach(a=>{a.applyPlugin(s)})}),Array.from(r.values())}function oo(e){return{name:e.name,alias:e.alias,entry:"entry"in e?e.entry:void 0,version:"version"in e?e.version:void 0,type:e.type,entryGlobalName:e.entryGlobalName,shareScope:e.shareScope}}function D(e){var r,n,o,s,i,a;const t={};for(const[c,l]of Object.entries(e.shared)){const f=l[0];f&&(t[c]={version:f.version,singleton:(r=f.shareConfig)==null?void 0:r.singleton,requiredVersion:((n=f.shareConfig)==null?void 0:n.requiredVersion)===!1?!1:(o=f.shareConfig)==null?void 0:o.requiredVersion,eager:f.eager,strictVersion:(s=f.shareConfig)==null?void 0:s.strictVersion})}return{project:{name:e.name,mfRole:((i=e.remotes)==null?void 0:i.length)>0?"host":"unknown"},mfConfig:{name:e.name,remotes:((a=e.remotes)==null?void 0:a.map(oo))??[],shared:t}}}function Mt(e){return{resourceCategory:"sync",share:!0,depsRemote:!0,recordPreloadedAssets:!0,...e}}function no(e,t){return t.map(r=>{const n=Wr(e,r.nameOrAlias);return M(n,`Unable to preload ${r.nameOrAlias} as it is not included in ${!n&&Qe({remoteInfo:n,remotes:e})}`),{remote:n,preloadConfig:Mt(r)}})}function so(e){return e?e.map(t=>t==="."?t:t.startsWith("./")?t.replace("./",""):t):[]}function Fe(e){return e instanceof Error?e.message.includes("timed out")||e.name.includes("Timeout"):!1}function C(e,t,r,n){return{url:t,status:r,resourceType:e.resourceType,initiator:e.initiator,id:e.id,error:n}}function Re(e,t,r,n){return r?lr(t)?Promise.resolve(C(e,t,"cached")):(fr(t),n()):n()}async function io(e,t,r,n){const o=e.moduleCache.get(r.name),s=r.entry;if(o!=null&&o.remoteEntryExports)return C(n,s,"cached");try{if(!await He({origin:e,remoteInfo:r,remoteEntryExports:o==null?void 0:o.remoteEntryExports,resourceContext:{...n,url:s}}))throw new Error(`Failed to load remoteEntry "${s}".`);return C(n,s,"success")}catch(i){return C(n,s,Fe(i)?"timeout":"error",i)}}function ie({host:e,remoteInfo:t,url:r,attrs:n,context:o,needDeleteLink:s}){return new Promise(i=>{const{link:a,needAttach:c}=Zt({url:r,cb:()=>{i(C(o,r,c?"success":"cached"))},onErrorCallback:l=>{i(C(o,r,Fe(l)?"timeout":"error",l))},attrs:n,createLinkHook:(l,f)=>{const u=e.loaderHook.lifecycle.createLink.emit({url:l,attrs:f,remoteInfo:t,resourceContext:{...o,url:l}});return u instanceof HTMLLinkElement,u},needDeleteLink:s});c&&document.head.appendChild(a)})}function ao({host:e,remoteInfo:t,url:r,attrs:n,context:o}){return new Promise(s=>{const{script:i,needAttach:a}=ot({url:r,cb:()=>{s(C(o,r,a?"success":"cached"))},onErrorCallback:c=>{s(C(o,r,Fe(c)?"timeout":"error",c))},attrs:n,createScriptHook:(c,l)=>{const f=e.loaderHook.lifecycle.createScript.emit({url:c,attrs:l,remoteInfo:t,resourceContext:{...o,url:c}});return f instanceof HTMLScriptElement,f},needDeleteScript:!0});a&&document.head.appendChild(i)})}function ae(e,t){return{...e,resourceType:t}}function Pt(e,t,r,n=!0,o={initiator:"preloadRemote",id:e.name},s=!0){const{cssAssets:i,jsAssetsWithoutEntry:a,entryAssets:c}=r,l=[];if(t.options.inBrowser){if(c.forEach(h=>{const{moduleInfo:m}=h;l.push(io(t,e,m,ae(o,"remoteEntry")))}),n){const h={rel:"preload",as:"style"};i.forEach(m=>{const d=ae(o,"css");l.push(Re(d,m,s,()=>ie({host:t,remoteInfo:e,url:m,attrs:h,context:d})))})}else{const h={rel:"stylesheet",type:"text/css"};i.forEach(m=>{const d=ae(o,"css");l.push(Re(d,m,s,()=>ie({host:t,remoteInfo:e,url:m,attrs:h,needDeleteLink:!1,context:d})))})}let f=ao,u={fetchpriority:"high",type:"text/javascript"};n?(f=ie,u={rel:"preload",as:"script"}):kt(e.type)&&(f=ie,u={rel:"modulepreload",fetchpriority:"high"}),a.forEach(h=>{const m=ae(o,"js");l.push(Re(m,h,s,()=>f({host:t,remoteInfo:e,url:h,attrs:u,context:m})))})}return Promise.all(l)}const co={getRegisteredShare:Y,getGlobalShareScope:Oe};var lo={share:co};function fo(e){if(!e||!("modules"in e)||!Array.isArray(e.modules))return;const t=e.modules.map(r=>r.moduleName).filter(Boolean);return t.length?t.join(","):void 0}function uo(e,t,r){const n=t,o=Array.isArray(e.shareScope)?e.shareScope:[e.shareScope];o.length||o.push("default"),o.forEach(i=>{n[i]||(n[i]={})});const s={version:e.version||"",shareScopeKeys:Array.isArray(e.shareScope)?o:e.shareScope||"default"};return Object.defineProperty(s,"shareScopeMap",{value:n,enumerable:!1}),{remoteEntryInitOptions:s,shareScope:n[o[0]],initScope:r??[]}}var ze=class{constructor({remoteInfo:e,host:t}){this.inited=!1,this.initing=!1,this.lib=void 0,this.remoteInfo=e,this.host=t}async getEntry(e,t){const r=t||{initiator:"loadRemote",id:De(this.remoteInfo.name,e),resourceType:"remoteEntry",url:this.remoteInfo.entry,expose:e},n=await He({origin:this.host,remoteInfo:this.remoteInfo,remoteEntryExports:this.remoteEntryExports,resourceContext:r});return M(n,`remoteEntryExports is undefined
7
- ${Qe(this.remoteInfo)}`),this.remoteEntryExports=n,this.remoteEntryExports}async init(e,t,r,n,o){const s=await this.getEntry(n,o);if(this.inited)return await this.host.loaderHook.lifecycle.afterInitRemote.emit({id:e,remoteInfo:this.remoteInfo,remoteSnapshot:t,remoteEntryExports:s,cached:!0,origin:this.host}),s;if(this.initPromise){try{await this.initPromise,await this.host.loaderHook.lifecycle.afterInitRemote.emit({id:e,remoteInfo:this.remoteInfo,remoteSnapshot:t,remoteEntryExports:s,cached:!0,origin:this.host})}catch(i){throw await this.host.loaderHook.lifecycle.afterInitRemote.emit({id:e,remoteInfo:this.remoteInfo,remoteSnapshot:t,remoteEntryExports:s,error:i,cached:!0,origin:this.host}),i}return s}this.initing=!0,this.initPromise=(async()=>{await this.host.loaderHook.lifecycle.beforeInitRemote.emit({id:e,remoteInfo:this.remoteInfo,remoteSnapshot:t,origin:this.host});const{remoteEntryInitOptions:i,shareScope:a,initScope:c}=uo(this.remoteInfo,this.host.shareScopeMap,r),l=await this.host.hooks.lifecycle.beforeInitContainer.emit({shareScope:a,remoteEntryInitOptions:i,initScope:c,remoteInfo:this.remoteInfo,origin:this.host});typeof(s==null?void 0:s.init)>"u"&&R(_t,k,{hostName:this.host.name,remoteName:this.remoteInfo.name,remoteEntryUrl:this.remoteInfo.entry,remoteEntryKey:this.remoteInfo.entryGlobalName},void 0,D(this.host.options));try{await s.init(l.shareScope,l.initScope,l.remoteEntryInitOptions)}catch(f){R(vt,k,{hostName:this.host.name,remoteName:this.remoteInfo.name,remoteEntryUrl:this.remoteInfo.entry,remoteEntryKey:this.remoteInfo.entryGlobalName,shareScope:this.remoteInfo.shareScope},`${f}`,D(this.host.options))}await this.host.hooks.lifecycle.initContainer.emit({...l,id:e,remoteSnapshot:t,remoteEntryExports:s}),this.inited=!0})();try{await this.initPromise,await this.host.loaderHook.lifecycle.afterInitRemote.emit({id:e,remoteInfo:this.remoteInfo,remoteSnapshot:t,remoteEntryExports:s,origin:this.host})}catch(i){throw await this.host.loaderHook.lifecycle.afterInitRemote.emit({id:e,remoteInfo:this.remoteInfo,remoteSnapshot:t,remoteEntryExports:s,error:i,origin:this.host}),i}finally{this.initing=!1,this.initPromise=void 0}return s}async get(e,t,r,n){const{loadFactory:o=!0}=r||{loadFactory:!0},s=await this.init(e,n,void 0,t);this.lib=s,await this.host.loaderHook.lifecycle.beforeGetExpose.emit({id:e,expose:t,moduleInfo:this.remoteInfo,remoteEntryExports:s,origin:this.host});let i;try{const l=await this.host.loaderHook.lifecycle.getModuleFactory.emit({remoteEntryExports:s,expose:t,moduleInfo:this.remoteInfo});i=typeof l=="function"?l:void 0,i||(i=await s.get(t)),i||R(At,k,{hostName:this.host.name,remoteName:this.remoteInfo.name,remoteEntryUrl:this.remoteInfo.entry,expose:t,requestId:e,availableExposes:fo(n)},void 0,D(this.host.options)),await this.host.loaderHook.lifecycle.afterGetExpose.emit({id:e,expose:t,moduleInfo:this.remoteInfo,remoteEntryExports:s,moduleFactory:i,origin:this.host})}catch(l){throw await this.host.loaderHook.lifecycle.afterGetExpose.emit({id:e,expose:t,moduleInfo:this.remoteInfo,remoteEntryExports:s,error:l,origin:this.host}),l}const a=rr(this.remoteInfo.name,t),c=this.wraperFactory(i,a);if(!o)return c;await this.host.loaderHook.lifecycle.beforeExecuteFactory.emit({id:e,expose:t,moduleInfo:this.remoteInfo,loadFactory:o,origin:this.host});try{const l=await c();return await this.host.loaderHook.lifecycle.afterExecuteFactory.emit({id:e,expose:t,moduleInfo:this.remoteInfo,loadFactory:o,exposeModule:l,origin:this.host}),l}catch(l){throw await this.host.loaderHook.lifecycle.afterExecuteFactory.emit({id:e,expose:t,moduleInfo:this.remoteInfo,loadFactory:o,error:l,origin:this.host}),l}}wraperFactory(e,t){function r(n,o){n&&typeof n=="object"&&Object.isExtensible(n)&&!Object.getOwnPropertyDescriptor(n,Symbol.for("mf_module_id"))&&Object.defineProperty(n,Symbol.for("mf_module_id"),{value:o,enumerable:!1})}return()=>{const n=e();return n instanceof Promise?n.then(o=>(r(o,t),o)):(r(n,t),n)}}},H=class{constructor(e){this.registerPlugins={},this.lifecycle=e,this.lifecycleKeys=Object.keys(e)}applyPlugin(e){M(it(e),"Plugin configuration is invalid.");const t=e.name;M(t,"A name must be provided by the plugin."),this.registerPlugins[t]||(this.registerPlugins[t]=e,this.lifecycleKeys.forEach(r=>{const n=e[r];n&&this.lifecycle[r].on(n)}))}removePlugin(e){M(e,"A name is required.");const t=this.registerPlugins[e];M(t,`The plugin "${e}" is not registered.`),this.lifecycleKeys.forEach(r=>{const n=t[r];n&&this.lifecycle[r].remove(n)}),delete this.registerPlugins[e]}},v=class{constructor(e){this.type="",this.listeners=new Set,e&&(this.type=e)}on(e){typeof e=="function"&&this.listeners.add(e)}once(e){const t=this;this.on(function r(...n){return t.remove(r),e.apply(null,n)})}emit(...e){let t;return this.listeners.size>0&&this.listeners.forEach(r=>{const n=r(...e);n!==void 0&&(t=n)}),t}remove(e){this.listeners.delete(e)}removeAll(){this.listeners.clear()}},w=class extends v{emit(...e){let t;const r=Array.from(this.listeners);if(r.length>0){let n=0;const o=s=>s===!1?!1:n<r.length?Promise.resolve(r[n++].apply(null,e)).then(i=>i===void 0||e.length===1&&i===e[0]?o(s):o(i)):s;t=o()}return Promise.resolve(t)}};function Ot(e,t){if(!Le(t))return!1;if(e!==t){for(const r in e)if(!(r in t))return!1}return!0}var q=class extends v{constructor(e){super(),this.onerror=R,this.type=e}emit(e){Le(e)||R(`The data for the "${this.type}" hook should be an object.`);for(const t of this.listeners)try{const r=t(e);if(r===void 0)continue;if(Ot(e,r))e=r;else{this.onerror(`A plugin returned an unacceptable value for the "${this.type}" type.`);break}}catch(r){Q(r),this.onerror(r)}return e}},F=class extends v{constructor(e){super(),this.onerror=R,this.type=e}emit(e){Le(e)||R(`The response data for the "${this.type}" hook must be an object.`);const t=Array.from(this.listeners);if(t.length>0){let r=0;const n=s=>(Q(s),this.onerror(s),e),o=s=>{if(s!==void 0&&Ot(e,s))e=s;else if(s!==void 0)return this.onerror(`A plugin returned an incorrect value for the "${this.type}" type.`),e;if(r<t.length)try{return Promise.resolve(t[r++](e)).then(o,n)}catch(i){return n(i)}return e};return Promise.resolve(o(e))}return Promise.resolve(e)}};const J="Remote loading is disabled by experiments.optimization.disableRemote.";var ho=class{constructor(){this.hooks=new H({})}formatAndRegisterRemote(){return[]}loadRemote(){throw new Error(J)}preloadRemote(){throw new Error(J)}registerRemotes(){throw new Error(J)}getRemoteModuleAndOptions(){throw new Error(J)}initRawContainer(){throw new Error(J)}};function Dt(e,t){const r=ct(t);r.url||R($t,k,{remoteName:e.name});let n=Te(t,r.url);e.type=r.type,e.entryGlobalName=r.globalName,e.entry=n,e.version=t.version,e.buildVersion=t.buildVersion}function mo(){return{name:"snapshot-plugin",async afterResolve(e){const{remote:t,pkgNameOrAlias:r,expose:n,origin:o,remoteInfo:s,id:i}=e;if(!ke(t)||!st(t)){const{remoteSnapshot:a,globalSnapshot:c}=await o.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:t,id:De(t.name,n)});Dt(s,a);const l=[{nameOrAlias:r,exposes:[n],resourceCategory:"sync",share:!1,depsRemote:!1,recordPreloadedAssets:!0}];await o.remoteHandler.hooks.lifecycle.beforePreloadRemote.emit({preloadOps:l,options:o.options,origin:o});const[f]=l;if(f){const u={remote:t,preloadConfig:f},h=await o.remoteHandler.hooks.lifecycle.generatePreloadAssets.emit({origin:o,preloadOptions:u,remoteInfo:s,remote:t,remoteSnapshot:a,globalSnapshot:c});h&&Pt(s,o,h,!1,{initiator:"loadRemote",id:i},f.recordPreloadedAssets).catch(()=>{})}return{...e,remoteSnapshot:a}}return e}}}function po(e){const t=e.split(":");return t.length===1?{name:t[0],version:void 0}:t.length===2?{name:t[0],version:t[1]}:{name:t[1],version:t[2]}}function Ht(e,t,r,n,o={},s){const{value:i}=B(e,ee(t)),a=s||i;if(a&&!et(a)&&(r(a,t,n),a.remotesInfo)){const c=Object.keys(a.remotesInfo);for(const l of c){if(o[l])continue;o[l]=!0;const f=po(l),u=a.remotesInfo[l];Ht(e,{name:f.name,version:u.matchedVersion},r,!1,o,void 0)}}}const be=(e,t)=>document.querySelector(`${e}[${e==="link"?"href":"src"}="${t}"]`);function yo(e,t,r,n,o){const s=[],i=[],a=[],c=new Set,l=new Set,{options:f}=e,{preloadConfig:u}=t,{depsRemote:h}=u;if(Ht(n,r,(d,p,y)=>{var $;let E;if(y)E=u;else if(Array.isArray(h)){const A=h.find(T=>T.nameOrAlias===p.name||T.nameOrAlias===p.alias);if(!A)return;E=Mt(A)}else if(h===!0)E=u;else return;const _=Te(d,ct(d).url);_&&a.push({name:p.name,moduleInfo:{name:p.name,entry:_,type:"remoteEntryType"in d?d.remoteEntryType:"global",entryGlobalName:"globalName"in d?d.globalName:p.name,shareScope:"",version:"version"in d?d.version:void 0},url:_});let g="modules"in d?d.modules:[];const S=so(E.exposes);S.length&&"modules"in d&&(g=($=d==null?void 0:d.modules)==null?void 0:$.reduce((A,T)=>((S==null?void 0:S.indexOf(T.moduleName))!==-1&&A.push(T),A),[]));function b(A){const T=A.map(L=>Te(d,L));return E.filter?T.filter(E.filter):T}if(g){const A=g.length;for(let T=0;T<A;T++){const L=g[T],ye=`${p.name}/${L.moduleName}`;e.remoteHandler.hooks.lifecycle.handlePreloadModule.emit({id:L.moduleName==="."?p.name:ye,name:p.name,remoteSnapshot:d,preloadConfig:E,remote:p,origin:e}),!ar(ye)&&(E.resourceCategory==="all"?(s.push(...b(L.assets.css.async)),s.push(...b(L.assets.css.sync)),i.push(...b(L.assets.js.async)),i.push(...b(L.assets.js.sync))):E.resourceCategory==="sync"&&(s.push(...b(L.assets.css.sync)),i.push(...b(L.assets.js.sync))),cr(ye))}}},!0,{},o),o.shared&&o.shared.length>0){const d=(p,y)=>{const{shared:E}=Y(e.shareScopeMap,y.sharedName,p,e.sharedHandler.hooks.lifecycle.resolveShare)||{};E&&typeof E.lib=="function"&&(y.assets.js.sync.forEach(_=>{c.add(_)}),y.assets.css.sync.forEach(_=>{l.add(_)}))};o.shared.forEach(p=>{var _;const y=(_=f.shared)==null?void 0:_[p.sharedName];if(!y)return;const E=p.version?y.find(g=>g.version===p.version):y;E&&at(E).forEach(g=>{d(g,p)})})}const m=i.filter(d=>!c.has(d)&&!be("script",d));return{cssAssets:s.filter(d=>!l.has(d)&&!be("link",d)),jsAssetsWithoutEntry:m,entryAssets:a.filter(d=>!be("script",d.url))}}const Eo=function(){return{name:"generate-preload-assets-plugin",async generatePreloadAssets(e){const{origin:t,preloadOptions:r,remoteInfo:n,remote:o,globalSnapshot:s,remoteSnapshot:i}=e;return ke(o)&&st(o)?{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[{name:o.name,url:o.entry,moduleInfo:{name:n.name,entry:o.entry,type:n.type||"global",entryGlobalName:"",shareScope:""}}]}:(Dt(n,i),yo(t,r,n,s,i))}}};function Ft(e,t){const r=fe({name:t.name,version:t.options.version}),n=r&&"remotesInfo"in r&&r.remotesInfo&&B(r.remotesInfo,e.name).value;return n&&n.matchedVersion?{hostGlobalSnapshot:r,globalSnapshot:Ce(),remoteSnapshot:fe({name:e.name,version:n.matchedVersion})}:{hostGlobalSnapshot:void 0,globalSnapshot:Ce(),remoteSnapshot:fe({name:e.name,version:"version"in e?e.version:void 0})}}var go=class{constructor(e){this.loadingHostSnapshot=null,this.manifestCache=new Map,this.hooks=new H({beforeLoadRemoteSnapshot:new w("beforeLoadRemoteSnapshot"),loadSnapshot:new F("loadGlobalSnapshot"),loadRemoteSnapshot:new F("loadRemoteSnapshot"),afterLoadSnapshot:new F("afterLoadSnapshot"),beforeLoadManifest:new w("beforeLoadManifest"),afterLoadManifest:new w("afterLoadManifest")}),this.manifestLoading=me.__FEDERATION__.__MANIFEST_LOADING__,this.HostInstance=e,this.loaderHook=e.loaderHook}async loadRemoteSnapshotInfo({moduleInfo:e,id:t,initiator:r="loadRemote"}){const{options:n}=this.HostInstance;await this.hooks.lifecycle.beforeLoadRemoteSnapshot.emit({options:n,moduleInfo:e,origin:this.HostInstance});let o=fe({name:this.HostInstance.options.name,version:this.HostInstance.options.version});o||(o={version:this.HostInstance.options.version||"",remoteEntry:"",remotesInfo:{}},sr({[this.HostInstance.options.name]:o})),o&&"remotesInfo"in o&&!B(o.remotesInfo,e.name).value&&("version"in e||"entry"in e)&&(o.remotesInfo={...o==null?void 0:o.remotesInfo,[e.name]:{matchedVersion:"version"in e?e.version:e.entry}});const{hostGlobalSnapshot:s,remoteSnapshot:i,globalSnapshot:a}=this.getGlobalRemoteInfo(e),{remoteSnapshot:c,globalSnapshot:l}=await this.hooks.lifecycle.loadSnapshot.emit({options:n,moduleInfo:e,hostGlobalSnapshot:s,remoteSnapshot:i,globalSnapshot:a});let f,u;if(c)if(et(c)){const h=c.remoteEntry,m=await this.loadManifestSnapshot(h,e,{},{initiator:r,id:t||e.name}),d=Ge({...e,entry:h},m);f=m,u=d}else{const{remoteSnapshot:h}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:e,remoteSnapshot:c,from:"global"});f=h,u=l}else if(ke(e)){const h=await this.loadManifestSnapshot(e.entry,e,{},{initiator:r,id:t||e.name}),m=Ge(e,h);f=h,u=m}else R(It,k,{remoteName:e.name,remoteVersion:e.version,hostName:this.HostInstance.options.name,globalSnapshot:JSON.stringify(l)},void 0,D(this.HostInstance.options));return await this.hooks.lifecycle.afterLoadSnapshot.emit({id:t,host:this.HostInstance,options:n,moduleInfo:e,remoteSnapshot:f}),{remoteSnapshot:f,globalSnapshot:u}}getGlobalRemoteInfo(e){return Ft(e,this.HostInstance)}async getManifestJson(e,t,r,n){return(async()=>{const s=j(t);let i=this.manifestCache.get(e);if(i)return await this.hooks.lifecycle.afterLoadManifest.emit({manifestUrl:e,moduleInfo:t,resourceOptions:n,manifestJson:i,cached:!0,origin:this.HostInstance}),i;await this.hooks.lifecycle.beforeLoadManifest.emit({manifestUrl:e,moduleInfo:t,resourceOptions:n,origin:this.HostInstance});let a,c,l=!1;try{let h=await this.loaderHook.lifecycle.fetch.emit(e,{},s,n?{...n,url:e,resourceType:"manifest"}:void 0);(!h||!(h instanceof Response))&&(h=await fetch(e,{})),a=h,i=await h.json()}catch(h){c=h,i=await this.HostInstance.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:h,from:"runtime",lifecycle:"afterResolve",remote:s,origin:this.HostInstance}),i||(delete this.manifestLoading[e],await this.hooks.lifecycle.afterLoadManifest.emit({manifestUrl:e,moduleInfo:t,resourceOptions:n,response:a,error:h,origin:this.HostInstance}),R(St,k,{manifestUrl:e,moduleName:t.name,hostName:this.HostInstance.options.name},`${h}`,D(this.HostInstance.options))),l=!0}const f=[!i.metaData&&"metaData",!i.exposes&&"exposes",!i.shared&&"shared"].filter(Boolean),u=f.length>0?new Error(`"${e}" is not a valid federation manifest for remote "${t.name}". Missing required fields: ${f.join(", ")}.`):void 0;return u&&await this.HostInstance.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:u,from:"runtime",lifecycle:"afterResolve",remote:s,origin:this.HostInstance}),await this.hooks.lifecycle.afterLoadManifest.emit({manifestUrl:e,moduleInfo:t,resourceOptions:n,manifestJson:i,response:a,error:u||c,recovered:u?void 0:l||void 0,origin:this.HostInstance}),u&&R(Tt,k,{manifestUrl:e,moduleName:t.name,hostName:this.HostInstance.options.name,missingFields:f.join(",")},void 0,D(this.HostInstance.options)),this.manifestCache.set(e,i),i})()}async loadManifestSnapshot(e,t,r,n){const o=async()=>{const s=await this.getManifestJson(e,t,r,n),i=Vt(s,{version:e}),{remoteSnapshot:a}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:t,manifestJson:s,remoteSnapshot:i,manifestUrl:e,from:"manifest"});return a};return this.manifestLoading[e]||(this.manifestLoading[e]=o().then(s=>s)),this.manifestLoading[e]}},_o=class{constructor(){this.hooks=new H({})}},So=class{constructor(e){this.hooks=new H({beforeRegisterShare:new q("beforeRegisterShare"),afterRegisterShare:new v("afterRegisterShare"),afterResolve:new F("afterResolve"),beforeLoadShare:new F("beforeLoadShare"),loadShare:new w,afterLoadShare:new v("afterLoadShare"),errorLoadShare:new v("errorLoadShare"),resolveShare:new q("resolveShare"),initContainerShareScopeMap:new q("initContainerShareScopeMap")}),this.host=e,this.shareScopeMap={},this.initTokens={},this._setGlobalShareScopeMap(e.options)}emitAfterRegisterShare(e,t){this.hooks.lifecycle.afterRegisterShare.emit({pkgName:e,...t,shareScopeMap:this.shareScopeMap,origin:this.host})}emitAfterLoadShare({lifecycle:e,pkgName:t,shareInfo:r,selectedShared:n,loadContext:o}){try{this.hooks.lifecycle.afterLoadShare.emit({pkgName:t,shareInfo:r,selectedShared:n,shared:this.host.options.shared,shareScopeMap:this.shareScopeMap,lifecycle:e,loadContext:o,origin:this.host})}catch(s){Q(s)}}emitErrorLoadShare({lifecycle:e,pkgName:t,shareInfo:r,error:n,recovered:o,loadContext:s}){try{this.hooks.lifecycle.errorLoadShare.emit({pkgName:t,shareInfo:r,shared:this.host.options.shared,shareScopeMap:this.shareScopeMap,lifecycle:e,origin:this.host,error:n,recovered:o,loadContext:s})}catch(i){Q(i)}}registerShared(e,t){const{newShareInfos:r,allShareInfos:n}=Et(e,t);return Object.keys(r).forEach(o=>{r[o].forEach(s=>{s.scope.forEach(i=>{var l,f,u;this.hooks.lifecycle.beforeRegisterShare.emit({origin:this.host,pkgName:o,shared:s});const a=(l=this.shareScopeMap[i])==null?void 0:l[o],c=a==null?void 0:a[s.version];a||this.setShared({pkgName:o,lib:s.lib,get:s.get,loaded:s.loaded||!!s.lib,shared:s,from:t.name}),this.emitAfterRegisterShare(o,{scope:i,shared:s,previousShared:c,registeredShared:(u=(f=this.shareScopeMap[i])==null?void 0:f[o])==null?void 0:u[s.version],trigger:"runtime"})})})}),{newShareInfos:r,allShareInfos:n}}async loadShare(e,t){const{host:r}=this;let n=t==null?void 0:t.context;const o=je({pkgName:e,extraOptions:t,shareInfos:r.options.shared});let s=o;try{o!=null&&o.scope&&await Promise.all(o.scope.map(async f=>{await Promise.all(this.initializeSharing(f,{strategy:o.strategy,context:n}))}));const i=await this.hooks.lifecycle.beforeLoadShare.emit({pkgName:e,shareInfo:o,shared:r.options.shared,origin:r,loadContext:n});s=i.shareInfo,n=i.loadContext||n,M(s,`Cannot find shared "${e}" in host "${r.options.name}". Ensure the shared config for "${e}" is declared in the federation plugin options and the host has been initialized before loading shares.`);const a=s,{shared:c,useTreesShaking:l}=Y(this.shareScopeMap,e,s,this.hooks.lifecycle.resolveShare,n)||{};if(c){const f=se(c,l);if(f.lib)return V(f,r.options.name),this.emitAfterLoadShare({lifecycle:"loadShare",pkgName:e,shareInfo:a,selectedShared:c,loadContext:n}),f.lib;if(f.loading&&!f.loaded){const u=await f.loading;return f.loaded=!0,f.lib||(f.lib=u),V(f,r.options.name),this.emitAfterLoadShare({lifecycle:"loadShare",pkgName:e,shareInfo:a,selectedShared:c,loadContext:n}),u}else{const h=(async()=>{const d=await f.get();return V(f,r.options.name),f.loaded=!0,f.lib=d,d})();this.setShared({pkgName:e,loaded:!1,shared:c,from:r.options.name,lib:null,loading:h,treeShaking:l?f:void 0});const m=await h;return this.emitAfterLoadShare({lifecycle:"loadShare",pkgName:e,shareInfo:a,selectedShared:c,loadContext:n}),m}}else{if(t!=null&&t.customShareInfo)return this.emitErrorLoadShare({lifecycle:"loadShare",pkgName:e,shareInfo:a,recovered:!0,loadContext:n}),!1;const f=te(a.treeShaking),u=se(a,f),m=(async()=>{const p=await u.get();u.lib=p,u.loaded=!0,V(u,r.options.name);const{shared:y,useTreesShaking:E}=Y(this.shareScopeMap,e,a,this.hooks.lifecycle.resolveShare,n)||{};if(y){const _=se(y,E);_.lib=p,_.loaded=!0,y.from=a.from}return p})();this.setShared({pkgName:e,loaded:!1,shared:a,from:r.options.name,lib:null,loading:m,treeShaking:f?u:void 0});const d=await m;return this.emitAfterLoadShare({lifecycle:"loadShare",pkgName:e,shareInfo:a,selectedShared:a,loadContext:n}),d}}catch(i){throw this.emitErrorLoadShare({lifecycle:"loadShare",pkgName:e,shareInfo:s,error:i,loadContext:n}),i}}initializeSharing(e=oe,t){var m;const{host:r}=this,n=t==null?void 0:t.from,o=t==null?void 0:t.strategy,s=((m=t==null?void 0:t.context)==null?void 0:m.trigger)||n||"runtime";let i=t==null?void 0:t.initScope;const a=[];if(n!=="build"){const{initTokens:d}=this;i||(i=[]);let p=d[e];if(p||(p=d[e]={from:this.host.name}),i.indexOf(p)>=0)return a;i.push(p)}const c=this.shareScopeMap,l=r.options.name;c[e]||(c[e]={});const f=c[e],u=(d,p)=>{var $;const{version:y,eager:E}=p;f[d]=f[d]||{};const _=f[d],g=_[y],S=g&&se(g),b=!!(S&&("eager"in S&&S.eager||"shareConfig"in S&&(($=S.shareConfig)!=null&&$.eager)));(!S||S.strategy!=="loaded-first"&&!S.loaded&&(!E!=!b?E:l>_[y].from))&&(_[y]=p),this.emitAfterRegisterShare(d,{scope:e,shared:p,previousShared:g,registeredShared:_[y],trigger:s})},h=async d=>{const{module:p}=await r.remoteHandler.getRemoteModuleAndOptions({id:d});let y;const E={initiator:"loadShare",id:d,resourceType:"remoteEntry",url:p.remoteInfo.entry};try{y=await p.getEntry(void 0,E)}catch(_){if(y=await r.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:d,error:_,from:"runtime",lifecycle:"beforeLoadShare",remote:p.remoteInfo,origin:r}),!y)return}finally{y!=null&&y.init&&!p.initing&&(p.remoteEntryExports=y,await p.init(void 0,void 0,i,void 0,E))}};return Object.keys(r.options.shared).forEach(d=>{r.options.shared[d].forEach(p=>{p.scope.includes(e)&&u(d,p)})}),(r.options.shareStrategy==="version-first"||o==="version-first")&&r.options.remotes.forEach(d=>{d.shareScope===e&&a.push(h(d.name))}),a}loadShareSync(e,t){const{host:r}=this,n=t==null?void 0:t.context,o=je({pkgName:e,extraOptions:t,shareInfos:r.options.shared});try{o!=null&&o.scope&&o.scope.forEach(i=>{this.initializeSharing(i,{strategy:o.strategy,from:t==null?void 0:t.from,context:n})});const{shared:s}=Y(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare,n)||{};if(s){if(typeof s.lib=="function")return V(s,r.options.name),s.loaded||(s.loaded=!0,s.from===r.options.name&&(o.loaded=!0)),this.emitAfterLoadShare({lifecycle:"loadShareSync",pkgName:e,shareInfo:o,selectedShared:s,loadContext:n}),s.lib;if(typeof s.get=="function"){const i=s.get();if(!(i instanceof Promise))return V(s,r.options.name),this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:i,shared:s}),this.emitAfterLoadShare({lifecycle:"loadShareSync",pkgName:e,shareInfo:o,selectedShared:s,loadContext:n}),i}}if(o.lib)return o.loaded||(o.loaded=!0),this.emitAfterLoadShare({lifecycle:"loadShareSync",pkgName:e,shareInfo:o,selectedShared:o,loadContext:n}),o.lib;if(o.get){const i=o.get();return i instanceof Promise&&R((t==null?void 0:t.from)==="build"?bt:Ne,k,{hostName:r.options.name,sharedPkgName:e},void 0,D(r.options)),o.lib=i,this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:o.lib,shared:o}),this.emitAfterLoadShare({lifecycle:"loadShareSync",pkgName:e,shareInfo:o,selectedShared:o,loadContext:n}),o.lib}R(Ne,k,{hostName:r.options.name,sharedPkgName:e},void 0,D(r.options))}catch(s){throw this.emitErrorLoadShare({lifecycle:"loadShareSync",pkgName:e,shareInfo:o,error:s,loadContext:n}),s}}initShareScopeMap(e,t,r={}){const{host:n}=this;this.shareScopeMap[e]=t,this.hooks.lifecycle.initContainerShareScopeMap.emit({shareScope:t,options:n.options,origin:n,scopeName:e,hostShareScopeMap:r.hostShareScopeMap})}setShared({pkgName:e,shared:t,from:r,lib:n,loading:o,loaded:s,get:i,treeShaking:a}){const{version:c,scope:l="default",...f}=t,u=Array.isArray(l)?l:[l],h=m=>{const d=(y,E,_)=>{_&&!y[E]&&(y[E]=_)},p=a?m.treeShaking:m;d(p,"loaded",s),d(p,"loading",o),d(p,"get",i),d(p,"lib",n)};u.forEach(m=>{this.shareScopeMap[m]||(this.shareScopeMap[m]={}),this.shareScopeMap[m][e]||(this.shareScopeMap[m][e]={}),this.shareScopeMap[m][e][c]||(this.shareScopeMap[m][e][c]={version:c,scope:[m],...f,lib:n});const d=this.shareScopeMap[m][e][c];h(d),r&&d.from!==r&&(d.from=r)})}_setGlobalShareScopeMap(e){const t=Oe(),r=e.id||e.name;r&&!t[r]&&(t[r]=this.shareScopeMap)}},Ro=class{constructor(){this.shareScopeMap={},this.hooks=new H({afterResolve:new F("afterResolve")})}registerShared(){return{newShareInfos:{},allShareInfos:{}}}loadShare(){throw new Error("Shared dependency loading is disabled by experiments.optimization.disableShared.")}loadShareSync(){throw new Error("Shared dependency loading is disabled by experiments.optimization.disableShared.")}initializeSharing(){return[]}initShareScopeMap(e,t){this.shareScopeMap[e]=t}},bo=class{constructor(e){this.hooks=new H({beforeRegisterRemote:new q("beforeRegisterRemote"),registerRemote:new q("registerRemote"),beforeRequest:new F("beforeRequest"),afterMatchRemote:new w("afterMatchRemote"),onLoad:new w("onLoad"),afterLoadRemote:new w("afterLoadRemote"),handlePreloadModule:new v("handlePreloadModule"),errorLoadRemote:new w("errorLoadRemote"),beforePreloadRemote:new w("beforePreloadRemote"),generatePreloadAssets:new w("generatePreloadAssets"),afterPreloadRemote:new w("afterPreloadRemote"),loadEntry:new w}),this.host=e,this.idToRemoteMap={}}formatAndRegisterRemote(e,t){return(t.remotes||[]).reduce((r,n)=>(this.registerRemote(n,r,{force:!1}),r),e.remotes)}setIdToRemoteMap(e,t){const{remote:r,expose:n}=t,{name:o,alias:s}=r;if(this.idToRemoteMap[e]={name:r.name,expose:n},s&&e.startsWith(o)){const i=e.replace(o,s);this.idToRemoteMap[i]={name:r.name,expose:n};return}if(s&&e.startsWith(s)){const i=e.replace(s,o);this.idToRemoteMap[i]={name:r.name,expose:n}}}async loadRemote(e,t){const{host:r}=this,n=qe(r.options.remotes,e);let o=e,s=n==null?void 0:n.expose,i=n?j(n.remote):void 0,a;try{const{loadFactory:c=!0}=t||{loadFactory:!0},{module:l,moduleOptions:f,remoteMatchInfo:u}=await this.getRemoteModuleAndOptions({id:e}),{pkgNameOrAlias:h,remote:m,expose:d,id:p,remoteSnapshot:y}=u;o=p,s=d,i=j(m);const E=await l.get(p,d,t,y),_=await this.hooks.lifecycle.onLoad.emit({id:p,pkgNameOrAlias:h,expose:d,exposeModule:c?E:void 0,exposeModuleFactory:c?void 0:E,remote:m,options:f,moduleInstance:l,origin:r});return this.setIdToRemoteMap(e,u),a={id:o,expose:s,remote:i,options:t,origin:r},typeof _=="function"?_:E}catch(c){const{from:l="runtime"}=t||{from:"runtime"};let f;try{f=await this.hooks.lifecycle.errorLoadRemote.emit({id:e,error:c,from:l,lifecycle:"onLoad",expose:s,remote:i,origin:r})}catch(u){throw a={id:o,expose:s,remote:i,options:t,error:u,origin:r},u}if(!f)throw a={id:o,expose:s,remote:i,options:t,error:c,origin:r},c;return a={id:o,expose:s,remote:i,options:t,error:c,origin:r,recovered:!0},f}finally{a&&await this.hooks.lifecycle.afterLoadRemote.emit(a)}}async preloadRemote(e){const{host:t}=this,r=[];await this.hooks.lifecycle.beforePreloadRemote.emit({preloadOps:e,options:t.options,origin:t});const n=no(t.options.remotes,e),o=a=>{const{preloadConfig:c,remote:l}=a,f=c.exposes||[];return f.length?f.map(u=>({ops:{...a,preloadConfig:{...c,exposes:[u]}},id:De(l.name,u)})):[{ops:a,id:`${l.name}/*`}]};let s;await Promise.all(n.flatMap(o).map(async a=>{const{ops:c,id:l}=a,{remote:f,preloadConfig:u}=c,h=j(f);try{const{globalSnapshot:m,remoteSnapshot:d}=await t.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:f,id:l,initiator:"preloadRemote"}),p=await this.hooks.lifecycle.generatePreloadAssets.emit({origin:t,preloadOptions:c,remote:f,remoteInfo:h,globalSnapshot:m,remoteSnapshot:d});if(!p)return;const y=await Pt(h,t,p,!0,{initiator:"preloadRemote",id:l},u.recordPreloadedAssets);r.push({remote:f,remoteInfo:h,preloadConfig:u,id:l,results:y})}catch(m){r.push({remote:f,remoteInfo:h,preloadConfig:u,id:l,results:[{url:h.entry,status:"error",resourceType:/\.json(?:$|[?#])/i.test(h.entry)?"manifest":"remoteEntry",initiator:"preloadRemote",id:l,error:m}]})}}));const i=r.flatMap(a=>a.results.filter(c=>c.status==="error"||c.status==="timeout"));if(i.length>0&&(s=new Error(`preloadRemote failed to load ${i.length} resource(s).`),Object.assign(s,{results:r,failedResults:i})),await this.hooks.lifecycle.afterPreloadRemote.emit({preloadOps:e,options:t.options,origin:t,results:r,error:s}),s)throw s}registerRemotes(e,t){const{host:r}=this;e.forEach(n=>{this.registerRemote(n,r.options.remotes,{force:t==null?void 0:t.force})})}initRawContainer(e,t,r){const{host:n}=this,o=new ze({host:n,remoteInfo:j({name:e,entry:t})});return o.remoteEntryExports=r,n.moduleCache.set(e,o),o}async getRemoteModuleAndOptions(e){const{host:t}=this,{id:r}=e;let n;try{n=await this.hooks.lifecycle.beforeRequest.emit({id:r,options:t.options,origin:t})}catch(m){if(n=await this.hooks.lifecycle.errorLoadRemote.emit({id:r,options:t.options,origin:t,from:"runtime",error:m,lifecycle:"beforeRequest"}),!n)throw m}const{id:o}=n,s=qe(t.options.remotes,o);if(!s)try{R(Rt,k,{hostName:t.options.name,requestId:o},void 0,D(t.options))}catch(m){throw await this.hooks.lifecycle.afterMatchRemote.emit({id:o,options:t.options,error:m,origin:t}),m}const{remote:i}=s,a=j(i);await this.hooks.lifecycle.afterMatchRemote.emit({id:o,...s,options:t.options,remoteInfo:a,origin:t});const c=await t.sharedHandler.hooks.lifecycle.afterResolve.emit({id:o,...s,options:t.options,origin:t,remoteInfo:a}),{remote:l,expose:f}=c;M(l&&f,`The 'beforeRequest' hook was executed, but it failed to return the correct 'remote' and 'expose' values while loading ${o}.`);let u=t.moduleCache.get(l.name);const h={host:t,remoteInfo:a};return u||(u=new ze(h),t.moduleCache.set(l.name,u)),{module:u,moduleOptions:h,remoteMatchInfo:c}}registerRemote(e,t,r){const{host:n}=this,o=()=>{if(e.alias){const i=t.find(a=>{var c;return e.alias&&(a.name.startsWith(e.alias)||((c=a.alias)==null?void 0:c.startsWith(e.alias)))});M(!i,`The alias ${e.alias} of remote ${e.name} is not allowed to be the prefix of ${i&&i.name} name or alias`)}"entry"in e&&typeof window<"u"&&!e.entry.startsWith("http")&&(e.entry=new URL(e.entry,window.location.origin).href),e.shareScope||(e.shareScope=oe),e.type||(e.type=yt)};this.hooks.lifecycle.beforeRegisterRemote.emit({remote:e,origin:n});const s=t.find(i=>i.name===e.name);if(!s)o(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:n});else{const i=[`The remote "${e.name}" is already registered.`,"Please note that overriding it may cause unexpected errors."];r!=null&&r.force&&(this.removeRemote(s),o(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:n}),Ye(i.join(" ")))}}removeRemote(e){var t;try{const{host:r}=this,{name:n}=e,o=r.options.remotes.findIndex(c=>c.name===n);o!==-1&&r.options.remotes.splice(o,1);const s=B(I.__FEDERATION__.moduleInfo,ee(e)).key;delete I.__FEDERATION__.moduleInfo[s],"entry"in e&&(r.snapshotHandler.manifestCache.delete(e.entry),delete me.__FEDERATION__.__MANIFEST_LOADING__[e.entry]);const{hostGlobalSnapshot:i}=Ft(e,r);if(i){const c=i&&"remotesInfo"in i&&i.remotesInfo&&B(i.remotesInfo,e.name).key;c&&delete i.remotesInfo[c]}const a=r.moduleCache.get(e.name);if(a){const c=a.remoteInfo,l=c.entryGlobalName;I[l]&&((t=Object.getOwnPropertyDescriptor(I,l))!=null&&t.configurable?delete I[l]:I[l]=void 0);const f=Lt(a.remoteInfo);G[f]&&delete G[f];let u=c.buildVersion?Xe(c.name,c.buildVersion):c.name;const h=I.__FEDERATION__.__INSTANCES__.findIndex(m=>c.buildVersion?m.options.id===u:m.name===u);if(h!==-1){const m=I.__FEDERATION__.__INSTANCES__[h];u=m.options.id||u;const d=Oe();let p=!0;const y=[];Object.keys(d).forEach(E=>{const _=d[E];_&&Object.keys(_).forEach(g=>{const S=_[g];S&&Object.keys(S).forEach(b=>{const $=S[b];$&&Object.keys($).forEach(A=>{const T=$[A];T&&typeof T=="object"&&T.from===c.name&&(T.loaded||T.loading?(T.useIn=T.useIn.filter(L=>L!==c.name),T.useIn.length?p=!1:y.push([E,g,b,A])):y.push([E,g,b,A]))})})})}),p&&(m.shareScopeMap={},delete d[u]),y.forEach(([E,_,g,S])=>{var b,$,A;(A=($=(b=d[E])==null?void 0:b[_])==null?void 0:$[g])==null||delete A[S]}),I.__FEDERATION__.__INSTANCES__.splice(h,1)}r.moduleCache.delete(e.name)}}catch(r){ve.error(`removeRemote failed: ${r instanceof Error?r.message:String(r)}`)}}};const Io=typeof FEDERATION_OPTIMIZE_NO_SNAPSHOT_PLUGIN=="boolean"?!FEDERATION_OPTIMIZE_NO_SNAPSHOT_PLUGIN:!0,Ie=typeof FEDERATION_OPTIMIZE_NO_REMOTE=="boolean"?!FEDERATION_OPTIMIZE_NO_REMOTE:!0,Je=typeof FEDERATION_OPTIMIZE_NO_SHARED=="boolean"?!FEDERATION_OPTIMIZE_NO_SHARED:!0;var Ao=class{constructor(e){this.hooks=new H({beforeInit:new q("beforeInit"),init:new v,beforeInitContainer:new F("beforeInitContainer"),initContainer:new F("initContainer")}),this.version="2.9.0",this.moduleCache=new Map,this.loaderHook=new H({getModuleInfo:new v,createScript:new v,createLink:new v,fetch:new w,loadEntryError:new w,afterLoadEntry:new w("afterLoadEntry"),beforeInitRemote:new w("beforeInitRemote"),afterInitRemote:new w("afterInitRemote"),beforeGetExpose:new w("beforeGetExpose"),afterGetExpose:new w("afterGetExpose"),beforeExecuteFactory:new w("beforeExecuteFactory"),afterExecuteFactory:new w("afterExecuteFactory"),getModuleFactory:new w}),this.bridgeHook=new H({beforeBridgeRender:new v,afterBridgeRender:new v,beforeBridgeDestroy:new v,afterBridgeDestroy:new v,afterBridgeRouteSync:new v});const t=Ie&&Io?[mo(),Eo()]:[],r={id:Qr(),name:e.name,plugins:t,remotes:[],shared:{},inBrowser:Ze};this.name=e.name,this.options=r,this.snapshotHandler=Ie?new go(this):new _o,this.sharedHandler=Je?new So(this):new Ro,this.remoteHandler=Ie?new bo(this):new ho,this.shareScopeMap=this.sharedHandler.shareScopeMap,this.registerPlugins([...r.plugins,...e.plugins||[]]),this.options=this.formatOptions(r,e)}initOptions(e){e.name&&e.name!==this.options.name&&R(nt(wt,k)),this.registerPlugins(e.plugins);const t=this.formatOptions(this.options,e);return this.options=t,t}async loadShare(e,t){return this.sharedHandler.loadShare(e,t)}loadShareSync(e,t){return this.sharedHandler.loadShareSync(e,t)}initializeSharing(e=oe,t){return this.sharedHandler.initializeSharing(e,t)}initRawContainer(e,t,r){return this.remoteHandler.initRawContainer(e,t,r)}async loadRemote(e,t){return this.remoteHandler.loadRemote(e,t)}async preloadRemote(e){return this.remoteHandler.preloadRemote(e)}initShareScopeMap(e,t,r={}){this.sharedHandler.initShareScopeMap(e,t,r)}formatOptions(e,t){const r=Je?Et(e,t).allShareInfos:{},{userOptions:n,options:o}=this.hooks.lifecycle.beforeInit.emit({origin:this,userOptions:t,options:e,shareInfo:r}),s=this.remoteHandler.formatAndRegisterRemote(o,n),{allShareInfos:i}=this.sharedHandler.registerShared(o,n),a=[...o.plugins];n.plugins&&n.plugins.forEach(l=>{a.includes(l)||a.push(l)});const c={...e,...t,plugins:a,remotes:s,shared:i,id:n.id||e.id};return this.hooks.lifecycle.init.emit({origin:this,options:c}),c}registerPlugins(e){this.options.plugins=ro(e,this)}registerRemotes(e,t){return this.remoteHandler.registerRemotes(e,t)}registerShared(e){this.sharedHandler.registerShared(this.options,{...this.options,shared:e})}};const vo=lo;export{I as C,Ao as M,To as a,$o as g,vo as h,wo as s};
6
+ `)};function Qt(e,t,r,n,o,s){return n(nt(e,t,r,o))}const x="[ Federation Runtime ]",ve=zt(x);function M(e,t,r,n,o){e||R(t)}function R(e,t,r,n,o){if(t!==void 0)return Qt(e,t,r??{},i=>{throw new Error(`${x}: ${i}`)},n);const s=e;throw s instanceof Error?(s.message.startsWith(x)||(s.message=`${x}: ${s.message}`),s):new Error(`${x}: ${s}`)}function Q(e){e instanceof Error&&(e.message.startsWith(x)||(e.message=`${x}: ${e.message}`)),ve.warn(e)}function er(e,t){return e.findIndex(r=>r===t)===-1&&e.push(t),e}function ee(e){return"version"in e&&e.version?`${e.name}:${e.version}`:"entry"in e&&e.entry?`${e.name}:${e.entry}`:`${e.name}`}function ke(e){return typeof e.entry<"u"}function st(e){return!e.entry.includes(".json")}function Le(e){return e&&typeof e=="object"}const tr=Object.prototype.toString;function it(e){return tr.call(e)==="[object Object]"}function at(e){return Array.isArray(e)?e:[e]}function ct(e){const t={url:"",type:"global",globalName:""};return"remoteEntry"in e?{url:e.remoteEntry,type:e.remoteEntryType,globalName:e.globalName}:t}const rr=(e,t)=>{let r;return e.endsWith("/")?r=e.slice(0,-1):r=e,t.startsWith(".")&&(t=t.slice(1)),r=r+t,r},or=2e3,I=typeof globalThis=="object"?globalThis:window,P=(()=>{try{return document.defaultView}catch{return I}})(),me=P;function ce(e,t,r){Object.defineProperty(e,t,{value:r,configurable:!1,writable:!0})}function le(e,t){return Object.hasOwnProperty.call(e,t)}le(I,"__GLOBAL_LOADING_REMOTE_ENTRY__")||ce(I,"__GLOBAL_LOADING_REMOTE_ENTRY__",{});const C=I.__GLOBAL_LOADING_REMOTE_ENTRY__;function lt(e){le(e,"__VMOK__")&&!le(e,"__FEDERATION__")&&ce(e,"__FEDERATION__",e.__VMOK__),le(e,"__FEDERATION__")||(ce(e,"__FEDERATION__",{__GLOBAL_PLUGIN__:[],__INSTANCES__:[],moduleInfo:{},__SHARE__:{},__MANIFEST_LOADING__:{},__PRELOADED_MAP__:new Map,__PRELOADED_ASSETS__:new Set}),ce(e,"__VMOK__",e.__FEDERATION__)),e.__FEDERATION__.__GLOBAL_PLUGIN__??=[],e.__FEDERATION__.__INSTANCES__??=[],e.__FEDERATION__.moduleInfo??={},e.__FEDERATION__.__SHARE__??={},e.__FEDERATION__.__MANIFEST_LOADING__??={},e.__FEDERATION__.__PRELOADED_MAP__??=new Map,e.__FEDERATION__.__PRELOADED_ASSETS__??=new Set}lt(I);lt(P);function wo(e){I.__FEDERATION__.__INSTANCES__.push(e)}function $o(){return I.__FEDERATION__.__DEBUG_CONSTRUCTOR__}function To(e,t=$e()){t&&(I.__FEDERATION__.__DEBUG_CONSTRUCTOR__=e,I.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__="2.9.2")}function B(e,t){if(typeof t=="string"){if(e[t])return{value:e[t],key:t};{const r=Object.keys(e);for(const n of r){const[o,s]=n.split(":"),i=`${o}:${t}`,a=e[i];if(a)return{value:a,key:i}}return{value:void 0,key:t}}}else R(`getInfoWithoutType: "key" must be a string, got ${typeof t} (${JSON.stringify(t)}).`)}const Ce=()=>P.__FEDERATION__.moduleInfo,nr=(e,t)=>{const r=B(t,ee(e)).value;if(r&&!r.version&&"version"in e&&e.version&&(r.version=e.version),r)return r;if("version"in e&&e.version){const{version:n,...o}=e,s=ee(o),i=B(P.__FEDERATION__.moduleInfo,s).value;if((i==null?void 0:i.version)===n)return i}},fe=e=>nr(e,P.__FEDERATION__.moduleInfo),Ge=(e,t)=>{const r=ee(e);return P.__FEDERATION__.moduleInfo[r]=t,P.__FEDERATION__.moduleInfo},sr=e=>(P.__FEDERATION__.moduleInfo={...P.__FEDERATION__.moduleInfo,...e},()=>{const t=Object.keys(e);for(const r of t)delete P.__FEDERATION__.moduleInfo[r]}),ft=(e,t)=>{const r=t||`__FEDERATION_${e}:custom__`;return{remoteEntryKey:r,entryExports:I[r]}},ir=()=>P.__FEDERATION__.__GLOBAL_PLUGIN__,ar=e=>I.__FEDERATION__.__PRELOADED_MAP__.get(e),cr=e=>I.__FEDERATION__.__PRELOADED_MAP__.set(e,!0),lr=e=>I.__FEDERATION__.__PRELOADED_ASSETS__.has(e),fr=e=>{const t=I.__FEDERATION__.__PRELOADED_ASSETS__;if(t.add(e),t.size>or){const r=t.values().next().value;r!==void 0&&t.delete(r)}},xe="[0-9A-Za-z-]+",Me=`(?:\\+(${xe}(?:\\.${xe})*))`,X="0|[1-9]\\d*",ue="[0-9]+",ut="\\d*[a-zA-Z-][a-zA-Z0-9-]*",Ue=`(?:${ue}|${ut})`,ur=`(?:-?(${Ue}(?:\\.${Ue})*))`,Be=`(?:${X}|${ut})`,ht=`(?:-(${Be}(?:\\.${Be})*))`,_e=`${X}|x|X|\\*`,K=`[v=\\s]*(${_e})(?:\\.(${_e})(?:\\.(${_e})(?:${ht})?${Me}?)?)?`,hr=`^\\s*(${K})\\s+-\\s+(${K})\\s*$`,dr=`[v=\\s]*${`(${ue})\\.(${ue})\\.(${ue})`}${ur}?${Me}?`,Pe="((?:<|>)?=?)",mr=`(\\s*)${Pe}\\s*(${dr}|${K})`,dt="(?:~>?)",pr=`(\\s*)${dt}\\s+`,mt="(?:\\^)",yr=`(\\s*)${mt}\\s+`,Er="(<|>)?=?\\s*\\*",gr=`^${mt}${K}$`,_r=`v?${`(${X})\\.(${X})\\.(${X})`}${ht}?${Me}?`,Sr=`^${dt}${K}$`,Rr=`^${Pe}\\s*${K}$`,br=`^${Pe}\\s*(${_r})$|^$`,Ir="^\\s*>=\\s*0.0.0\\s*$";function O(e){return new RegExp(e)}function N(e){return!e||e.toLowerCase()==="x"||e==="*"}function pt(...e){return t=>e.reduce((r,n)=>n(r),t)}function We(e){return e.match(O(br))}function Ve(e,t,r,n){const o=`${e}.${t}.${r}`;return n?`${o}-${n}`:o}function wr(e){return e.replace(O(hr),(t,r,n,o,s,i,a,c,l,f,u,h)=>(N(n)?r="":N(o)?r=`>=${n}.0.0`:N(s)?r=`>=${n}.${o}.0`:r=`>=${r}`,N(l)?c="":N(f)?c=`<${Number(l)+1}.0.0-0`:N(u)?c=`<${l}.${Number(f)+1}.0-0`:h?c=`<=${l}.${f}.${u}-${h}`:c=`<=${c}`,`${r} ${c}`.trim()))}function $r(e){return e.replace(O(mr),"$1$2$3")}function Tr(e){return e.replace(O(pr),"$1~")}function Ar(e){return e.replace(O(yr),"$1^")}function vr(e){return e.trim().split(/\s+/).map(t=>t.replace(O(gr),(r,n,o,s,i)=>N(n)?"":N(o)?`>=${n}.0.0 <${Number(n)+1}.0.0-0`:N(s)?n==="0"?`>=${n}.${o}.0 <${n}.${Number(o)+1}.0-0`:`>=${n}.${o}.0 <${Number(n)+1}.0.0-0`:i?n==="0"?o==="0"?`>=${n}.${o}.${s}-${i} <${n}.${o}.${Number(s)+1}-0`:`>=${n}.${o}.${s}-${i} <${n}.${Number(o)+1}.0-0`:`>=${n}.${o}.${s}-${i} <${Number(n)+1}.0.0-0`:n==="0"?o==="0"?`>=${n}.${o}.${s} <${n}.${o}.${Number(s)+1}-0`:`>=${n}.${o}.${s} <${n}.${Number(o)+1}.0-0`:`>=${n}.${o}.${s} <${Number(n)+1}.0.0-0`)).join(" ")}function Nr(e){return e.trim().split(/\s+/).map(t=>t.replace(O(Sr),(r,n,o,s,i)=>N(n)?"":N(o)?`>=${n}.0.0 <${Number(n)+1}.0.0-0`:N(s)?`>=${n}.${o}.0 <${n}.${Number(o)+1}.0-0`:i?`>=${n}.${o}.${s}-${i} <${n}.${Number(o)+1}.0-0`:`>=${n}.${o}.${s} <${n}.${Number(o)+1}.0-0`)).join(" ")}function kr(e){return e.split(/\s+/).map(t=>t.trim().replace(O(Rr),(r,n,o,s,i,a)=>{const c=N(o),l=c||N(s),f=l||N(i);return n==="="&&f&&(n=""),a="",c?n===">"||n==="<"?"<0.0.0-0":"*":n&&f?(l&&(s=0),i=0,n===">"?(n=">=",l?(o=Number(o)+1,s=0,i=0):(s=Number(s)+1,i=0)):n==="<="&&(n="<",l?o=Number(o)+1:s=Number(s)+1),n==="<"&&(a="-0"),`${n+o}.${s}.${i}${a}`):l?`>=${o}.0.0${a} <${Number(o)+1}.0.0-0`:f?`>=${o}.${s}.0${a} <${o}.${Number(s)+1}.0-0`:r})).join(" ")}function Lr(e){return e.trim().replace(O(Er),"")}function Mr(e){return e.trim().replace(O(Ir),"")}function he(e,t){return e=Number(e)||e,t=Number(t)||t,e>t?1:e===t?0:-1}function Pr(e,t){const{preRelease:r}=e,{preRelease:n}=t;if(r===void 0&&n)return 1;if(r&&n===void 0)return-1;if(r===void 0&&n===void 0)return 0;for(let o=0,s=r.length;o<=s;o++){const i=r[o],a=n[o];if(i!==a)return i===void 0&&a===void 0?0:i?a?he(i,a):-1:1}return 0}function ne(e,t){return he(e.major,t.major)||he(e.minor,t.minor)||he(e.patch,t.patch)||Pr(e,t)}function Se(e,t){return e.version===t.version}function Or(e,t){switch(e.operator){case"":case"=":return Se(e,t);case">":return ne(e,t)<0;case">=":return Se(e,t)||ne(e,t)<0;case"<":return ne(e,t)>0;case"<=":return Se(e,t)||ne(e,t)>0;case void 0:return!0;default:return!1}}function Dr(e){return pt(vr,Nr,kr,Lr)(e)}function Hr(e){return pt(wr,$r,Tr,Ar)(e.trim()).split(/\s+/).join(" ")}function Z(e,t){if(!e)return!1;const r=We(e);if(!r)return!1;const[,n,,o,s,i,a]=r,c={operator:n,version:Ve(o,s,i,a),major:o,minor:s,patch:i,preRelease:a==null?void 0:a.split(".")},l=t.split("||");for(const f of l){const u=f.trim();if(!u||u==="*"||u==="x")return!0;try{const h=Hr(u);if(!h.trim())return!0;const m=h.split(" ").map(y=>Dr(y)).join(" ");if(!m.trim())return!0;const d=m.split(/\s+/).map(y=>Mr(y)).filter(Boolean);if(d.length===0)continue;let p=!0;for(const y of d){const E=We(y);if(!E){p=!1;break}const[,_,,g,S,b,$]=E;if(!Or({operator:_,version:Ve(g,S,b,$),major:g,minor:S,patch:b,preRelease:$==null?void 0:$.split(".")},c)){p=!1;break}}if(p)return!0}catch(h){console.error(`[semver] Error processing range part "${u}":`,h);continue}}return!1}const oe="default",yt="global";function Fr(e,t,r,n){var s,i;let o;return"get"in e?o=e.get:"lib"in e?o=()=>Promise.resolve(e.lib):o=()=>Promise.resolve(()=>{R(`Cannot get shared "${r}" from "${t}": neither "get" nor "lib" is provided in the share config.`)}),(s=e.shareConfig)!=null&&s.eager&&((i=e.treeShaking)!=null&&i.mode)&&R(`Invalid shared config for "${r}" from "${t}": cannot use both "eager: true" and "treeShaking.mode" simultaneously. Choose one strategy.`),{deps:[],useIn:[],from:t,loading:null,...e,shareConfig:{requiredVersion:`^${e.version}`,singleton:!1,eager:!1,strictVersion:!1,...e.shareConfig},get:o,loaded:e!=null&&e.loaded||"lib"in e?!0:void 0,version:e.version??"0",scope:Array.isArray(e.scope)?e.scope:[e.scope??"default"],strategy:(e.strategy??n)||"version-first",treeShaking:e.treeShaking?{...e.treeShaking,mode:e.treeShaking.mode??"server-calc",status:e.treeShaking.status??we.UNKNOWN,useIn:[]}:void 0}}function Et(e,t){const r=t.shared||{},n=t.name,o=Object.keys(r).reduce((i,a)=>{const c=at(r[a]);return i[a]=i[a]||[],c.forEach(l=>{i[a].push(Fr(l,n,a,t.shareStrategy))}),i},{}),s={...e.shared};return Object.keys(o).forEach(i=>{s[i]?o[i].forEach(a=>{s[i].find(c=>c.version===a.version)||s[i].push(a)}):s[i]=o[i]}),{allShareInfos:s,newShareInfos:o}}function te(e,t){if(!e)return!1;const{status:r,mode:n}=e;return r===we.NO_USE?!1:r===we.CALCULATED?!0:n==="runtime-infer"?t?Gr(e,t):!0:!1}function U(e,t){const r=n=>{if(!Number.isNaN(Number(n))){const o=n.split(".");let s=n;for(let i=0;i<3-o.length;i++)s+=".0";return s}return n};return!!Z(r(e),`<=${r(t)}`)}const re=(e,t)=>{const r=t||function(n,o){return U(n,o)};return Object.keys(e).reduce((n,o)=>!n||r(n,o)||n==="0"?o:n,0)},de=e=>!!e.loaded||typeof e.lib=="function",Cr=e=>!!e.loading,Gr=(e,t)=>{if(!e||!t)return!1;const{usedExports:r}=e;return r?!!t.every(n=>r.includes(n)):!1};function xr(e,t,r,n){const o=e[t][r];let s="",i=te(n);const a=function(c,l){return i?o[c].treeShaking?o[l].treeShaking?!de(o[c].treeShaking)&&U(c,l):!1:!0:!de(o[c])&&U(c,l)};if(i){if(s=re(e[t][r],a),s)return{version:s,useTreesShaking:i};i=!1}return{version:re(e[t][r],a),useTreesShaking:i}}const W=e=>de(e)||Cr(e);function Ur(e,t,r,n){const o=e[t][r];let s="",i=te(n);const a=function(c,l){if(i){if(!o[c].treeShaking)return!0;if(!o[l].treeShaking)return!1;if(W(o[l].treeShaking))return W(o[c].treeShaking)?!!U(c,l):!0;if(W(o[c].treeShaking))return!1}return W(o[l])?W(o[c])?!!U(c,l):!0:W(o[c])?!1:U(c,l)};if(i){if(s=re(e[t][r],a),s)return{version:s,useTreesShaking:i};i=!1}return{version:re(e[t][r],a),useTreesShaking:i}}function Br(e){return e==="loaded-first"?Ur:xr}function Y(e,t,r,n,o){if(!e)return;const{shareConfig:s,scope:i=oe,strategy:a,treeShaking:c}=r,l=Array.isArray(i)?i:[i];for(const f of l)if(s&&e[f]&&e[f][t]){const{requiredVersion:u}=s,{version:h,useTreesShaking:m}=Br(a)(e,f,t,c),d=()=>{const y=e[f][t][h];if(s.singleton){if(typeof u=="string"&&!Z(h,u)){const E=`Version ${h} from ${h&&y.from} of shared singleton module ${t} does not satisfy the requirement of ${r.from} which needs ${u})`;s.strictVersion?R(E):Q(E)}return{shared:y,useTreesShaking:m}}else{if(u===!1||u==="*")return{shared:y,useTreesShaking:m};if(Z(h,u))return{shared:y,useTreesShaking:m};const E=te(c);if(E){for(const[_,g]of Object.entries(e[f][t]))if(te(g.treeShaking,c==null?void 0:c.usedExports)&&Z(_,u))return{shared:g,useTreesShaking:E}}for(const[_,g]of Object.entries(e[f][t]))if(Z(_,u))return{shared:g,useTreesShaking:!1}}},p={shareScopeMap:e,scope:f,pkgName:t,version:h,GlobalFederation:me.__FEDERATION__,shareInfo:r,resolver:d,loadContext:o};return(n.emit(p)||p).resolver()}}function Oe(){return me.__FEDERATION__.__SHARE__}function je(e){const{pkgName:t,extraOptions:r,shareInfos:n}=e,o=c=>{if(!c)return;const l={};return c.forEach(u=>{l[u.version]=u}),l[re(l,function(u,h){return!de(l[u])&&U(u,h)})]},s=(r==null?void 0:r.resolver)??o,i=c=>c!==null&&typeof c=="object"&&!Array.isArray(c),a=(...c)=>{const l={};for(const f of c)if(f)for(const[u,h]of Object.entries(f)){const m=l[u];i(m)&&i(h)?l[u]=a(m,h):h!==void 0&&(l[u]=h)}return l};return a(s(n[t]),r==null?void 0:r.customShareInfo)}const V=(e,t)=>{e.useIn||(e.useIn=[]),er(e.useIn,t)};function se(e,t){return t&&e.treeShaking?e.treeShaking:e}function De(e,t){return!t||t==="."?e:`${e}/${t.replace(/^\.\//,"")}`}function qe(e,t){for(const r of e){const n=t.startsWith(r.name);let o=t.replace(r.name,"");if(n){if(o.startsWith("/")){const a=r.name;return o=`.${o}`,{pkgNameOrAlias:a,expose:o,remote:r}}else if(o==="")return{pkgNameOrAlias:r.name,expose:".",remote:r}}const s=r.alias&&t.startsWith(r.alias);let i=r.alias&&t.replace(r.alias,"");if(r.alias&&s){if(i&&i.startsWith("/")){const a=r.alias;return i=`.${i}`,{pkgNameOrAlias:a,expose:i,remote:r}}else if(i==="")return{pkgNameOrAlias:r.alias,expose:".",remote:r}}}}function Wr(e,t){for(const r of e)if(t===r.name||r.alias&&t===r.alias)return r}const gt="RUNTIME-001",_t="RUNTIME-002",St="RUNTIME-003",Rt="RUNTIME-004",bt="RUNTIME-005",Ne="RUNTIME-006",It="RUNTIME-007",pe="RUNTIME-008",Vr="RUNTIME-009",wt="RUNTIME-010",$t="RUNTIME-011",jr="RUNTIME-012",Tt="RUNTIME-013",At="RUNTIME-014",vt="RUNTIME-015",k={[gt]:"Failed to get remoteEntry exports.",[_t]:'The remote entry interface does not contain "init"',[St]:"Failed to get manifest.",[Rt]:"Failed to locate remote.",[bt]:"Invalid loadShareSync function call from bundler runtime",[Ne]:"Invalid loadShareSync function call from runtime",[It]:"Failed to get remote snapshot.",[pe]:"Failed to load script resources.",[Vr]:"Please call createInstance first.",[wt]:'The name option cannot be changed after initialization. If you want to create a new instance with a different name, please use "createInstance" api.',[$t]:"The remoteEntry URL is missing from the remote snapshot.",[jr]:'The getter for the shared module is not a function. This may be caused by setting "shared.import: false" without the host providing the corresponding lib.',[Tt]:"The manifest is not a valid Module Federation manifest.",[At]:"The remote does not expose the requested module.",[vt]:"Remote container initialization failed."};({...k});const Nt=".then(callbacks[0]).catch(callbacks[1])",Ke=new WeakMap,qr=["Failed to fetch dynamically imported module","Importing a module script failed","error loading dynamically imported module"];function Kr(e){return e instanceof TypeError?qr.some(t=>e.message.includes(t)):!1}function kt(e){return e==="esm"||e==="module"}async function zr({entry:e,remoteEntryExports:t,name:r,getEntryUrl:n}){return new Promise((o,s)=>{const i=c=>{if(Kr(c)){const l=c instanceof Error?c.message:String(c);try{R(pe,k,{remoteName:r,resourceUrl:a},l)}catch(f){s(f);return}}s(c)},a=n?n(e):e;try{t?o(t):typeof FEDERATION_ALLOW_NEW_FUNCTION<"u"?new Function("callbacks",`import("${a}")${Nt}`)([o,i]):import(a).then(o).catch(i)}catch(c){R(`Failed to load ESM entry from "${a}". ${c instanceof Error?c.message:String(c)}`)}})}async function Jr({entry:e,remoteEntryExports:t}){return new Promise((r,n)=>{try{t?r(t):typeof __system_context__>"u"?System.import(e).then(r).catch(n):new Function("callbacks",`System.import("${e}")${Nt}`)([r,n])}catch(o){R(`Failed to load SystemJS entry from "${e}". ${o instanceof Error?o.message:String(o)}`)}})}function Zr(e,t,r){const{remoteEntryKey:n,entryExports:o}=ft(e,t);return o||R(gt,k,{remoteName:e,remoteEntryUrl:r,remoteEntryKey:n}),o}async function Xr({name:e,globalName:t,entry:r,remoteInfo:n,loaderHook:o,getEntryUrl:s,resourceContext:i}){const{entryExports:a}=ft(e,t);if(a)return a;const c=s?s(r):r;return Xt(c,{attrs:{},createScriptHook:(l,f)=>{const u=o.lifecycle.createScript.emit({url:l,attrs:f,remoteInfo:n,resourceContext:i?{...i,url:l}:void 0});if(u&&(u instanceof HTMLScriptElement||"script"in u||"timeout"in u))return u}}).then(()=>Zr(e,t,r),l=>{const f=l instanceof Error?l.message:String(l);R(pe,k,{remoteName:e,resourceUrl:c},f)})}async function Yr({remoteInfo:e,remoteEntryExports:t,loaderHook:r,getEntryUrl:n,resourceContext:o}){const{entry:s,entryGlobalName:i,name:a,type:c}=e;return kt(c)?zr({entry:s,remoteEntryExports:t,name:a,getEntryUrl:n}):c==="system"?Jr({entry:s,remoteEntryExports:t}):Xr({entry:s,globalName:i,name:a,remoteInfo:e,loaderHook:r,getEntryUrl:n,resourceContext:o})}function Lt(e){const{entry:t,name:r}=e;return Xe(r,t)}async function He(e){const{origin:t,remoteEntryExports:r,remoteInfo:n,getEntryUrl:o,resourceContext:s,_inErrorHandling:i=!1}=e,a=Lt(n);if(r)return await t.loaderHook.lifecycle.afterLoadEntry.emit({origin:t,remoteInfo:n,remoteEntryExports:r,resourceContext:s,cached:!0}),r;if(!C[a]){const l=t.remoteHandler.hooks.lifecycle.loadEntry,f=t.loaderHook,u=l.emit({origin:t,loaderHook:f,remoteInfo:n,remoteEntryExports:r,resourceContext:s}).then(h=>h||Yr({remoteInfo:n,remoteEntryExports:r,loaderHook:f,getEntryUrl:o,resourceContext:s})).then(async h=>(await t.loaderHook.lifecycle.afterLoadEntry.emit({origin:t,remoteInfo:n,remoteEntryExports:h,resourceContext:s}),h)).catch(async h=>{const m=h instanceof Error&&h.message.includes("ScriptExecutionError");if(h instanceof Error&&h.message.includes(pe)&&!m&&!i){const d=y=>He({...y,_inErrorHandling:!0}),p=await t.loaderHook.lifecycle.loadEntryError.emit({getRemoteEntry:d,origin:t,remoteInfo:n,remoteEntryExports:r,globalLoading:C,uniqueKey:a});if(p)return await t.loaderHook.lifecycle.afterLoadEntry.emit({origin:t,remoteInfo:n,remoteEntryExports:p,resourceContext:s,error:h,recovered:!0}),p}throw await t.loaderHook.lifecycle.afterLoadEntry.emit({origin:t,remoteInfo:n,resourceContext:s,error:h}),h});C[a]=u,u.then(void 0,()=>{C[a]===u&&delete C[a]}),Ke.set(u,t)}const c=C[a];if(Ke.get(c)!==t)try{const l=await c;return await t.loaderHook.lifecycle.afterLoadEntry.emit({origin:t,remoteInfo:n,remoteEntryExports:l,resourceContext:s}),l}catch(l){throw await t.loaderHook.lifecycle.afterLoadEntry.emit({origin:t,remoteInfo:n,resourceContext:s,error:l}),l}return c}function j(e){return{...e,entry:"entry"in e?e.entry:"",type:e.type||yt,entryGlobalName:e.entryGlobalName||e.name,shareScope:e.shareScope||oe}}function Qr(){return typeof FEDERATION_BUILD_IDENTIFIER<"u"?FEDERATION_BUILD_IDENTIFIER:""}function eo(e){const t=new Map;return[...e||[],...ir()].forEach(r=>{r&&(M(it(r),"Plugin configuration is invalid."),M(r.name,"A name must be provided by the plugin."),t.has(r.name)||t.set(r.name,r))}),Array.from(t.values())}function to(e,t){return t===void 0?e:{...t,name:e.name,version:e.version}}function ro(e,t){const r=new Map;t.options.plugins.forEach(o=>{o&&r.set(o.name,o)});const n=[t.hooks,t.remoteHandler.hooks,t.sharedHandler.hooks,t.snapshotHandler.hooks,t.loaderHook,t.bridgeHook];return eo(e).forEach(o=>{var i;if(r.set(o.name,o),t.hooks.registerPlugins[o.name])return;const s=to(o,(i=o.apply)==null?void 0:i.call(o,t));n.forEach(a=>{a.applyPlugin(s)})}),Array.from(r.values())}function oo(e){return{name:e.name,alias:e.alias,entry:"entry"in e?e.entry:void 0,version:"version"in e?e.version:void 0,type:e.type,entryGlobalName:e.entryGlobalName,shareScope:e.shareScope}}function D(e){var r,n,o,s,i,a;const t={};for(const[c,l]of Object.entries(e.shared)){const f=l[0];f&&(t[c]={version:f.version,singleton:(r=f.shareConfig)==null?void 0:r.singleton,requiredVersion:((n=f.shareConfig)==null?void 0:n.requiredVersion)===!1?!1:(o=f.shareConfig)==null?void 0:o.requiredVersion,eager:f.eager,strictVersion:(s=f.shareConfig)==null?void 0:s.strictVersion})}return{project:{name:e.name,mfRole:((i=e.remotes)==null?void 0:i.length)>0?"host":"unknown"},mfConfig:{name:e.name,remotes:((a=e.remotes)==null?void 0:a.map(oo))??[],shared:t}}}function Mt(e){return{resourceCategory:"sync",share:!0,depsRemote:!0,recordPreloadedAssets:!0,...e}}function no(e,t){return t.map(r=>{const n=Wr(e,r.nameOrAlias);return M(n,`Unable to preload ${r.nameOrAlias} as it is not included in ${!n&&Qe({remoteInfo:n,remotes:e})}`),{remote:n,preloadConfig:Mt(r)}})}function so(e){return e?e.map(t=>t==="."?t:t.startsWith("./")?t.replace("./",""):t):[]}function Fe(e){return e instanceof Error?e.message.includes("timed out")||e.name.includes("Timeout"):!1}function G(e,t,r,n){return{url:t,status:r,resourceType:e.resourceType,initiator:e.initiator,id:e.id,error:n}}function Re(e,t,r,n){return r?lr(t)?Promise.resolve(G(e,t,"cached")):(fr(t),n()):n()}async function io(e,t,r,n){const o=e.moduleCache.get(r.name),s=r.entry;if(o!=null&&o.remoteEntryExports)return G(n,s,"cached");try{if(!await He({origin:e,remoteInfo:r,remoteEntryExports:o==null?void 0:o.remoteEntryExports,resourceContext:{...n,url:s}}))throw new Error(`Failed to load remoteEntry "${s}".`);return G(n,s,"success")}catch(i){return G(n,s,Fe(i)?"timeout":"error",i)}}function ie({host:e,remoteInfo:t,url:r,attrs:n,context:o,needDeleteLink:s}){return new Promise(i=>{const{link:a,needAttach:c}=Zt({url:r,cb:()=>{i(G(o,r,c?"success":"cached"))},onErrorCallback:l=>{i(G(o,r,Fe(l)?"timeout":"error",l))},attrs:n,createLinkHook:(l,f)=>{const u=e.loaderHook.lifecycle.createLink.emit({url:l,attrs:f,remoteInfo:t,resourceContext:{...o,url:l}});return u instanceof HTMLLinkElement,u},needDeleteLink:s});c&&document.head.appendChild(a)})}function ao({host:e,remoteInfo:t,url:r,attrs:n,context:o}){return new Promise(s=>{const{script:i,needAttach:a}=ot({url:r,cb:()=>{s(G(o,r,a?"success":"cached"))},onErrorCallback:c=>{s(G(o,r,Fe(c)?"timeout":"error",c))},attrs:n,createScriptHook:(c,l)=>{const f=e.loaderHook.lifecycle.createScript.emit({url:c,attrs:l,remoteInfo:t,resourceContext:{...o,url:c}});return f instanceof HTMLScriptElement,f},needDeleteScript:!0});a&&document.head.appendChild(i)})}function ae(e,t){return{...e,resourceType:t}}function Pt(e,t,r,n=!0,o={initiator:"preloadRemote",id:e.name},s=!0){const{cssAssets:i,jsAssetsWithoutEntry:a,entryAssets:c}=r,l=[];if(t.options.inBrowser){if(c.forEach(h=>{const{moduleInfo:m}=h;l.push(io(t,e,m,ae(o,"remoteEntry")))}),n){const h={rel:"preload",as:"style"};i.forEach(m=>{const d=ae(o,"css");l.push(Re(d,m,s,()=>ie({host:t,remoteInfo:e,url:m,attrs:h,context:d})))})}else{const h={rel:"stylesheet",type:"text/css"};i.forEach(m=>{const d=ae(o,"css");l.push(Re(d,m,s,()=>ie({host:t,remoteInfo:e,url:m,attrs:h,needDeleteLink:!1,context:d})))})}let f=ao,u={fetchpriority:"high",type:"text/javascript"};n?(f=ie,u={rel:"preload",as:"script"}):kt(e.type)&&(f=ie,u={rel:"modulepreload",fetchpriority:"high"}),a.forEach(h=>{const m=ae(o,"js");l.push(Re(m,h,s,()=>f({host:t,remoteInfo:e,url:h,attrs:u,context:m})))})}return Promise.all(l)}const co={getRegisteredShare:Y,getGlobalShareScope:Oe};var lo={share:co};function fo(e){if(!e||!("modules"in e)||!Array.isArray(e.modules))return;const t=e.modules.map(r=>r.moduleName).filter(Boolean);return t.length?t.join(","):void 0}function uo(e,t,r){const n=t,o=Array.isArray(e.shareScope)?e.shareScope:[e.shareScope];o.length||o.push("default"),o.forEach(i=>{n[i]||(n[i]={})});const s={version:e.version||"",shareScopeKeys:Array.isArray(e.shareScope)?o:e.shareScope||"default"};return Object.defineProperty(s,"shareScopeMap",{value:n,enumerable:!1}),{remoteEntryInitOptions:s,shareScope:n[o[0]],initScope:r??[]}}var ze=class{constructor({remoteInfo:e,host:t}){this.inited=!1,this.initing=!1,this.lib=void 0,this.remoteInfo=e,this.host=t}async getEntry(e,t){const r=t||{initiator:"loadRemote",id:De(this.remoteInfo.name,e),resourceType:"remoteEntry",url:this.remoteInfo.entry,expose:e},n=await He({origin:this.host,remoteInfo:this.remoteInfo,remoteEntryExports:this.remoteEntryExports,resourceContext:r});return M(n,`remoteEntryExports is undefined
7
+ ${Qe(this.remoteInfo)}`),this.remoteEntryExports=n,this.remoteEntryExports}async init(e,t,r,n,o){const s=await this.getEntry(n,o);if(this.inited)return await this.host.loaderHook.lifecycle.afterInitRemote.emit({id:e,remoteInfo:this.remoteInfo,remoteSnapshot:t,remoteEntryExports:s,cached:!0,origin:this.host}),s;if(this.initPromise){try{await this.initPromise,await this.host.loaderHook.lifecycle.afterInitRemote.emit({id:e,remoteInfo:this.remoteInfo,remoteSnapshot:t,remoteEntryExports:s,cached:!0,origin:this.host})}catch(i){throw await this.host.loaderHook.lifecycle.afterInitRemote.emit({id:e,remoteInfo:this.remoteInfo,remoteSnapshot:t,remoteEntryExports:s,error:i,cached:!0,origin:this.host}),i}return s}this.initing=!0,this.initPromise=(async()=>{await this.host.loaderHook.lifecycle.beforeInitRemote.emit({id:e,remoteInfo:this.remoteInfo,remoteSnapshot:t,origin:this.host});const{remoteEntryInitOptions:i,shareScope:a,initScope:c}=uo(this.remoteInfo,this.host.shareScopeMap,r),l=await this.host.hooks.lifecycle.beforeInitContainer.emit({shareScope:a,remoteEntryInitOptions:i,initScope:c,remoteInfo:this.remoteInfo,origin:this.host});typeof(s==null?void 0:s.init)>"u"&&R(_t,k,{hostName:this.host.name,remoteName:this.remoteInfo.name,remoteEntryUrl:this.remoteInfo.entry,remoteEntryKey:this.remoteInfo.entryGlobalName},void 0,D(this.host.options));try{await s.init(l.shareScope,l.initScope,l.remoteEntryInitOptions)}catch(f){R(vt,k,{hostName:this.host.name,remoteName:this.remoteInfo.name,remoteEntryUrl:this.remoteInfo.entry,remoteEntryKey:this.remoteInfo.entryGlobalName,shareScope:this.remoteInfo.shareScope},`${f}`,D(this.host.options))}await this.host.hooks.lifecycle.initContainer.emit({...l,id:e,remoteSnapshot:t,remoteEntryExports:s}),this.inited=!0})();try{await this.initPromise,await this.host.loaderHook.lifecycle.afterInitRemote.emit({id:e,remoteInfo:this.remoteInfo,remoteSnapshot:t,remoteEntryExports:s,origin:this.host})}catch(i){throw await this.host.loaderHook.lifecycle.afterInitRemote.emit({id:e,remoteInfo:this.remoteInfo,remoteSnapshot:t,remoteEntryExports:s,error:i,origin:this.host}),i}finally{this.initing=!1,this.initPromise=void 0}return s}async get(e,t,r,n){const{loadFactory:o=!0}=r||{loadFactory:!0},s=await this.init(e,n,void 0,t);this.lib=s,await this.host.loaderHook.lifecycle.beforeGetExpose.emit({id:e,expose:t,moduleInfo:this.remoteInfo,remoteEntryExports:s,origin:this.host});let i;try{const l=await this.host.loaderHook.lifecycle.getModuleFactory.emit({remoteEntryExports:s,expose:t,moduleInfo:this.remoteInfo});i=typeof l=="function"?l:void 0,i||(i=await s.get(t)),i||R(At,k,{hostName:this.host.name,remoteName:this.remoteInfo.name,remoteEntryUrl:this.remoteInfo.entry,expose:t,requestId:e,availableExposes:fo(n)},void 0,D(this.host.options)),await this.host.loaderHook.lifecycle.afterGetExpose.emit({id:e,expose:t,moduleInfo:this.remoteInfo,remoteEntryExports:s,moduleFactory:i,origin:this.host})}catch(l){throw await this.host.loaderHook.lifecycle.afterGetExpose.emit({id:e,expose:t,moduleInfo:this.remoteInfo,remoteEntryExports:s,error:l,origin:this.host}),l}const a=rr(this.remoteInfo.name,t),c=this.wraperFactory(i,a);if(!o)return c;await this.host.loaderHook.lifecycle.beforeExecuteFactory.emit({id:e,expose:t,moduleInfo:this.remoteInfo,loadFactory:o,origin:this.host});try{const l=await c();return await this.host.loaderHook.lifecycle.afterExecuteFactory.emit({id:e,expose:t,moduleInfo:this.remoteInfo,loadFactory:o,exposeModule:l,origin:this.host}),l}catch(l){throw await this.host.loaderHook.lifecycle.afterExecuteFactory.emit({id:e,expose:t,moduleInfo:this.remoteInfo,loadFactory:o,error:l,origin:this.host}),l}}wraperFactory(e,t){function r(n,o){n&&typeof n=="object"&&Object.isExtensible(n)&&!Object.getOwnPropertyDescriptor(n,Symbol.for("mf_module_id"))&&Object.defineProperty(n,Symbol.for("mf_module_id"),{value:o,enumerable:!1})}return()=>{const n=e();return n instanceof Promise?n.then(o=>(r(o,t),o)):(r(n,t),n)}}},H=class{constructor(e){this.registerPlugins={},this.lifecycle=e,this.lifecycleKeys=Object.keys(e)}applyPlugin(e){M(it(e),"Plugin configuration is invalid.");const t=e.name;M(t,"A name must be provided by the plugin."),this.registerPlugins[t]||(this.registerPlugins[t]=e,this.lifecycleKeys.forEach(r=>{const n=e[r];n&&this.lifecycle[r].on(n)}))}removePlugin(e){M(e,"A name is required.");const t=this.registerPlugins[e];M(t,`The plugin "${e}" is not registered.`),this.lifecycleKeys.forEach(r=>{const n=t[r];n&&this.lifecycle[r].remove(n)}),delete this.registerPlugins[e]}},v=class{constructor(e){this.type="",this.listeners=new Set,e&&(this.type=e)}on(e){typeof e=="function"&&this.listeners.add(e)}once(e){const t=this;this.on(function r(...n){return t.remove(r),e.apply(null,n)})}emit(...e){let t;return this.listeners.size>0&&this.listeners.forEach(r=>{const n=r(...e);n!==void 0&&(t=n)}),t}remove(e){this.listeners.delete(e)}removeAll(){this.listeners.clear()}},w=class extends v{emit(...e){let t;const r=Array.from(this.listeners);if(r.length>0){let n=0;const o=s=>s===!1?!1:n<r.length?Promise.resolve(r[n++].apply(null,e)).then(i=>i===void 0||e.length===1&&i===e[0]?o(s):o(i)):s;t=o()}return Promise.resolve(t)}};function Ot(e,t){if(!Le(t))return!1;if(e!==t){for(const r in e)if(!(r in t))return!1}return!0}var q=class extends v{constructor(e){super(),this.onerror=R,this.type=e}emit(e){Le(e)||R(`The data for the "${this.type}" hook should be an object.`);for(const t of this.listeners)try{const r=t(e);if(r===void 0)continue;if(Ot(e,r))e=r;else{this.onerror(`A plugin returned an unacceptable value for the "${this.type}" type.`);break}}catch(r){Q(r),this.onerror(r)}return e}},F=class extends v{constructor(e){super(),this.onerror=R,this.type=e}emit(e){Le(e)||R(`The response data for the "${this.type}" hook must be an object.`);const t=Array.from(this.listeners);if(t.length>0){let r=0;const n=s=>(Q(s),this.onerror(s),e),o=s=>{if(s!==void 0&&Ot(e,s))e=s;else if(s!==void 0)return this.onerror(`A plugin returned an incorrect value for the "${this.type}" type.`),e;if(r<t.length)try{return Promise.resolve(t[r++](e)).then(o,n)}catch(i){return n(i)}return e};return Promise.resolve(o(e))}return Promise.resolve(e)}};const J="Remote loading is disabled by experiments.optimization.disableRemote.";var ho=class{constructor(){this.hooks=new H({})}formatAndRegisterRemote(){return[]}loadRemote(){throw new Error(J)}preloadRemote(){throw new Error(J)}registerRemotes(){throw new Error(J)}getRemoteModuleAndOptions(){throw new Error(J)}initRawContainer(){throw new Error(J)}};function Dt(e,t){const r=ct(t);r.url||R($t,k,{remoteName:e.name});let n=Te(t,r.url);e.type=r.type,e.entryGlobalName=r.globalName,e.entry=n,e.version=t.version,e.buildVersion=t.buildVersion}function mo(){return{name:"snapshot-plugin",async afterResolve(e){const{remote:t,pkgNameOrAlias:r,expose:n,origin:o,remoteInfo:s,id:i}=e;if(!ke(t)||!st(t)){const{remoteSnapshot:a,globalSnapshot:c}=await o.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:t,id:De(t.name,n)});Dt(s,a);const l=[{nameOrAlias:r,exposes:[n],resourceCategory:"sync",share:!1,depsRemote:!1,recordPreloadedAssets:!0}];await o.remoteHandler.hooks.lifecycle.beforePreloadRemote.emit({preloadOps:l,options:o.options,origin:o});const[f]=l;if(f){const u={remote:t,preloadConfig:f},h=await o.remoteHandler.hooks.lifecycle.generatePreloadAssets.emit({origin:o,preloadOptions:u,remoteInfo:s,remote:t,remoteSnapshot:a,globalSnapshot:c});h&&Pt(s,o,h,!1,{initiator:"loadRemote",id:i},f.recordPreloadedAssets).catch(()=>{})}return{...e,remoteSnapshot:a}}return e}}}function po(e){const t=e.split(":");return t.length===1?{name:t[0],version:void 0}:t.length===2?{name:t[0],version:t[1]}:{name:t[1],version:t[2]}}function Ht(e,t,r,n,o={},s){const{value:i}=B(e,ee(t)),a=s||i;if(a&&!et(a)&&(r(a,t,n),a.remotesInfo)){const c=Object.keys(a.remotesInfo);for(const l of c){if(o[l])continue;o[l]=!0;const f=po(l),u=a.remotesInfo[l];Ht(e,{name:f.name,version:u.matchedVersion},r,!1,o,void 0)}}}const be=(e,t)=>document.querySelector(`${e}[${e==="link"?"href":"src"}="${t}"]`);function yo(e,t,r,n,o){const s=[],i=[],a=[],c=new Set,l=new Set,{options:f}=e,{preloadConfig:u}=t,{depsRemote:h}=u;if(Ht(n,r,(d,p,y)=>{var $;let E;if(y)E=u;else if(Array.isArray(h)){const A=h.find(T=>T.nameOrAlias===p.name||T.nameOrAlias===p.alias);if(!A)return;E=Mt(A)}else if(h===!0)E=u;else return;const _=Te(d,ct(d).url);_&&a.push({name:p.name,moduleInfo:{name:p.name,entry:_,type:"remoteEntryType"in d?d.remoteEntryType:"global",entryGlobalName:"globalName"in d?d.globalName:p.name,shareScope:"",version:"version"in d?d.version:void 0},url:_});let g="modules"in d?d.modules:[];const S=so(E.exposes);S.length&&"modules"in d&&(g=($=d==null?void 0:d.modules)==null?void 0:$.reduce((A,T)=>((S==null?void 0:S.indexOf(T.moduleName))!==-1&&A.push(T),A),[]));function b(A){const T=A.map(L=>Te(d,L));return E.filter?T.filter(E.filter):T}if(g){const A=g.length;for(let T=0;T<A;T++){const L=g[T],ye=`${p.name}/${L.moduleName}`;e.remoteHandler.hooks.lifecycle.handlePreloadModule.emit({id:L.moduleName==="."?p.name:ye,name:p.name,remoteSnapshot:d,preloadConfig:E,remote:p,origin:e}),!ar(ye)&&(E.resourceCategory==="all"?(s.push(...b(L.assets.css.async)),s.push(...b(L.assets.css.sync)),i.push(...b(L.assets.js.async)),i.push(...b(L.assets.js.sync))):E.resourceCategory==="sync"&&(s.push(...b(L.assets.css.sync)),i.push(...b(L.assets.js.sync))),cr(ye))}}},!0,{},o),o.shared&&o.shared.length>0){const d=(p,y)=>{const{shared:E}=Y(e.shareScopeMap,y.sharedName,p,e.sharedHandler.hooks.lifecycle.resolveShare)||{};E&&typeof E.lib=="function"&&(y.assets.js.sync.forEach(_=>{c.add(_)}),y.assets.css.sync.forEach(_=>{l.add(_)}))};o.shared.forEach(p=>{var _;const y=(_=f.shared)==null?void 0:_[p.sharedName];if(!y)return;const E=p.version?y.find(g=>g.version===p.version):y;E&&at(E).forEach(g=>{d(g,p)})})}const m=i.filter(d=>!c.has(d)&&!be("script",d));return{cssAssets:s.filter(d=>!l.has(d)&&!be("link",d)),jsAssetsWithoutEntry:m,entryAssets:a.filter(d=>!be("script",d.url))}}const Eo=function(){return{name:"generate-preload-assets-plugin",async generatePreloadAssets(e){const{origin:t,preloadOptions:r,remoteInfo:n,remote:o,globalSnapshot:s,remoteSnapshot:i}=e;return ke(o)&&st(o)?{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[{name:o.name,url:o.entry,moduleInfo:{name:n.name,entry:o.entry,type:n.type||"global",entryGlobalName:"",shareScope:""}}]}:(Dt(n,i),yo(t,r,n,s,i))}}};function Ft(e,t){const r=fe({name:t.name,version:t.options.version}),n=r&&"remotesInfo"in r&&r.remotesInfo&&B(r.remotesInfo,e.name).value;return n&&n.matchedVersion?{hostGlobalSnapshot:r,globalSnapshot:Ce(),remoteSnapshot:fe({name:e.name,version:n.matchedVersion})}:{hostGlobalSnapshot:void 0,globalSnapshot:Ce(),remoteSnapshot:fe({name:e.name,version:"version"in e?e.version:void 0})}}var go=class{constructor(e){this.loadingHostSnapshot=null,this.manifestCache=new Map,this.hooks=new H({beforeLoadRemoteSnapshot:new w("beforeLoadRemoteSnapshot"),loadSnapshot:new F("loadGlobalSnapshot"),loadRemoteSnapshot:new F("loadRemoteSnapshot"),afterLoadSnapshot:new F("afterLoadSnapshot"),beforeLoadManifest:new w("beforeLoadManifest"),afterLoadManifest:new w("afterLoadManifest")}),this.manifestLoading=me.__FEDERATION__.__MANIFEST_LOADING__,this.HostInstance=e,this.loaderHook=e.loaderHook}async loadRemoteSnapshotInfo({moduleInfo:e,id:t,initiator:r="loadRemote"}){const{options:n}=this.HostInstance;await this.hooks.lifecycle.beforeLoadRemoteSnapshot.emit({options:n,moduleInfo:e,origin:this.HostInstance});let o=fe({name:this.HostInstance.options.name,version:this.HostInstance.options.version});o||(o={version:this.HostInstance.options.version||"",remoteEntry:"",remotesInfo:{}},sr({[this.HostInstance.options.name]:o})),o&&"remotesInfo"in o&&!B(o.remotesInfo,e.name).value&&("version"in e||"entry"in e)&&(o.remotesInfo={...o==null?void 0:o.remotesInfo,[e.name]:{matchedVersion:"version"in e?e.version:e.entry}});const{hostGlobalSnapshot:s,remoteSnapshot:i,globalSnapshot:a}=this.getGlobalRemoteInfo(e),{remoteSnapshot:c,globalSnapshot:l}=await this.hooks.lifecycle.loadSnapshot.emit({options:n,moduleInfo:e,hostGlobalSnapshot:s,remoteSnapshot:i,globalSnapshot:a});let f,u;if(c)if(et(c)){const h=c.remoteEntry,m=await this.loadManifestSnapshot(h,e,{},{initiator:r,id:t||e.name}),d=Ge({...e,entry:h},m);f=m,u=d}else{const{remoteSnapshot:h}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:e,remoteSnapshot:c,from:"global"});f=h,u=l}else if(ke(e)){const h=await this.loadManifestSnapshot(e.entry,e,{},{initiator:r,id:t||e.name}),m=Ge(e,h);f=h,u=m}else R(It,k,{remoteName:e.name,remoteVersion:e.version,hostName:this.HostInstance.options.name,globalSnapshot:JSON.stringify(l)},void 0,D(this.HostInstance.options));return await this.hooks.lifecycle.afterLoadSnapshot.emit({id:t,host:this.HostInstance,options:n,moduleInfo:e,remoteSnapshot:f}),{remoteSnapshot:f,globalSnapshot:u}}getGlobalRemoteInfo(e){return Ft(e,this.HostInstance)}async getManifestJson(e,t,r,n){return(async()=>{const s=j(t);let i=this.manifestCache.get(e);if(i)return await this.hooks.lifecycle.afterLoadManifest.emit({manifestUrl:e,moduleInfo:t,resourceOptions:n,manifestJson:i,cached:!0,origin:this.HostInstance}),i;await this.hooks.lifecycle.beforeLoadManifest.emit({manifestUrl:e,moduleInfo:t,resourceOptions:n,origin:this.HostInstance});let a,c,l=!1;try{let h=await this.loaderHook.lifecycle.fetch.emit(e,{},s,n?{...n,url:e,resourceType:"manifest"}:void 0);(!h||!(h instanceof Response))&&(h=await fetch(e,{})),a=h,i=await h.json()}catch(h){c=h,i=await this.HostInstance.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:h,from:"runtime",lifecycle:"afterResolve",remote:s,origin:this.HostInstance}),i||(delete this.manifestLoading[e],await this.hooks.lifecycle.afterLoadManifest.emit({manifestUrl:e,moduleInfo:t,resourceOptions:n,response:a,error:h,origin:this.HostInstance}),R(St,k,{manifestUrl:e,moduleName:t.name,hostName:this.HostInstance.options.name},`${h}`,D(this.HostInstance.options))),l=!0}const f=[!i.metaData&&"metaData",!i.exposes&&"exposes",!i.shared&&"shared"].filter(Boolean),u=f.length>0?new Error(`"${e}" is not a valid federation manifest for remote "${t.name}". Missing required fields: ${f.join(", ")}.`):void 0;return u&&await this.HostInstance.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:u,from:"runtime",lifecycle:"afterResolve",remote:s,origin:this.HostInstance}),await this.hooks.lifecycle.afterLoadManifest.emit({manifestUrl:e,moduleInfo:t,resourceOptions:n,manifestJson:i,response:a,error:u||c,recovered:u?void 0:l||void 0,origin:this.HostInstance}),u&&R(Tt,k,{manifestUrl:e,moduleName:t.name,hostName:this.HostInstance.options.name,missingFields:f.join(",")},void 0,D(this.HostInstance.options)),this.manifestCache.set(e,i),i})()}async loadManifestSnapshot(e,t,r,n){const o=async()=>{const s=await this.getManifestJson(e,t,r,n),i=Vt(s,{version:e}),{remoteSnapshot:a}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:t,manifestJson:s,remoteSnapshot:i,manifestUrl:e,from:"manifest"});return a};return this.manifestLoading[e]||(this.manifestLoading[e]=o().then(s=>s)),this.manifestLoading[e]}},_o=class{constructor(){this.hooks=new H({})}},So=class{constructor(e){this.hooks=new H({beforeRegisterShare:new q("beforeRegisterShare"),afterRegisterShare:new v("afterRegisterShare"),afterResolve:new F("afterResolve"),beforeLoadShare:new F("beforeLoadShare"),loadShare:new w,afterLoadShare:new v("afterLoadShare"),errorLoadShare:new v("errorLoadShare"),resolveShare:new q("resolveShare"),initContainerShareScopeMap:new q("initContainerShareScopeMap")}),this.host=e,this.shareScopeMap={},this.initTokens={},this._setGlobalShareScopeMap(e.options)}emitAfterRegisterShare(e,t){this.hooks.lifecycle.afterRegisterShare.emit({pkgName:e,...t,shareScopeMap:this.shareScopeMap,origin:this.host})}emitAfterLoadShare({lifecycle:e,pkgName:t,shareInfo:r,selectedShared:n,loadContext:o}){try{this.hooks.lifecycle.afterLoadShare.emit({pkgName:t,shareInfo:r,selectedShared:n,shared:this.host.options.shared,shareScopeMap:this.shareScopeMap,lifecycle:e,loadContext:o,origin:this.host})}catch(s){Q(s)}}emitErrorLoadShare({lifecycle:e,pkgName:t,shareInfo:r,error:n,recovered:o,loadContext:s}){try{this.hooks.lifecycle.errorLoadShare.emit({pkgName:t,shareInfo:r,shared:this.host.options.shared,shareScopeMap:this.shareScopeMap,lifecycle:e,origin:this.host,error:n,recovered:o,loadContext:s})}catch(i){Q(i)}}registerShared(e,t){const{newShareInfos:r,allShareInfos:n}=Et(e,t);return Object.keys(r).forEach(o=>{r[o].forEach(s=>{s.scope.forEach(i=>{var l,f,u;this.hooks.lifecycle.beforeRegisterShare.emit({origin:this.host,pkgName:o,shared:s});const a=(l=this.shareScopeMap[i])==null?void 0:l[o],c=a==null?void 0:a[s.version];a||this.setShared({pkgName:o,lib:s.lib,get:s.get,loaded:s.loaded||!!s.lib,shared:s,from:t.name}),this.emitAfterRegisterShare(o,{scope:i,shared:s,previousShared:c,registeredShared:(u=(f=this.shareScopeMap[i])==null?void 0:f[o])==null?void 0:u[s.version],trigger:"runtime"})})})}),{newShareInfos:r,allShareInfos:n}}async loadShare(e,t){const{host:r}=this;let n=t==null?void 0:t.context;const o=je({pkgName:e,extraOptions:t,shareInfos:r.options.shared});let s=o;try{o!=null&&o.scope&&await Promise.all(o.scope.map(async f=>{await Promise.all(this.initializeSharing(f,{strategy:o.strategy,context:n}))}));const i=await this.hooks.lifecycle.beforeLoadShare.emit({pkgName:e,shareInfo:o,shared:r.options.shared,origin:r,loadContext:n});s=i.shareInfo,n=i.loadContext||n,M(s,`Cannot find shared "${e}" in host "${r.options.name}". Ensure the shared config for "${e}" is declared in the federation plugin options and the host has been initialized before loading shares.`);const a=s,{shared:c,useTreesShaking:l}=Y(this.shareScopeMap,e,s,this.hooks.lifecycle.resolveShare,n)||{};if(c){const f=se(c,l);if(f.lib)return V(f,r.options.name),this.emitAfterLoadShare({lifecycle:"loadShare",pkgName:e,shareInfo:a,selectedShared:c,loadContext:n}),f.lib;if(f.loading&&!f.loaded){const u=await f.loading;return f.loaded=!0,f.lib||(f.lib=u),V(f,r.options.name),this.emitAfterLoadShare({lifecycle:"loadShare",pkgName:e,shareInfo:a,selectedShared:c,loadContext:n}),u}else{const h=(async()=>{const d=await f.get();return V(f,r.options.name),f.loaded=!0,f.lib=d,d})();this.setShared({pkgName:e,loaded:!1,shared:c,from:r.options.name,lib:null,loading:h,treeShaking:l?f:void 0});const m=await h;return this.emitAfterLoadShare({lifecycle:"loadShare",pkgName:e,shareInfo:a,selectedShared:c,loadContext:n}),m}}else{if(t!=null&&t.customShareInfo)return this.emitErrorLoadShare({lifecycle:"loadShare",pkgName:e,shareInfo:a,recovered:!0,loadContext:n}),!1;const f=te(a.treeShaking),u=se(a,f),m=(async()=>{const p=await u.get();u.lib=p,u.loaded=!0,V(u,r.options.name);const{shared:y,useTreesShaking:E}=Y(this.shareScopeMap,e,a,this.hooks.lifecycle.resolveShare,n)||{};if(y){const _=se(y,E);_.lib=p,_.loaded=!0,y.from=a.from}return p})();this.setShared({pkgName:e,loaded:!1,shared:a,from:r.options.name,lib:null,loading:m,treeShaking:f?u:void 0});const d=await m;return this.emitAfterLoadShare({lifecycle:"loadShare",pkgName:e,shareInfo:a,selectedShared:a,loadContext:n}),d}}catch(i){throw this.emitErrorLoadShare({lifecycle:"loadShare",pkgName:e,shareInfo:s,error:i,loadContext:n}),i}}initializeSharing(e=oe,t){var m;const{host:r}=this,n=t==null?void 0:t.from,o=t==null?void 0:t.strategy,s=((m=t==null?void 0:t.context)==null?void 0:m.trigger)||n||"runtime";let i=t==null?void 0:t.initScope;const a=[];if(n!=="build"){const{initTokens:d}=this;i||(i=[]);let p=d[e];if(p||(p=d[e]={from:this.host.name}),i.indexOf(p)>=0)return a;i.push(p)}const c=this.shareScopeMap,l=r.options.name;c[e]||(c[e]={});const f=c[e],u=(d,p)=>{var $;const{version:y,eager:E}=p;f[d]=f[d]||{};const _=f[d],g=_[y],S=g&&se(g),b=!!(S&&("eager"in S&&S.eager||"shareConfig"in S&&(($=S.shareConfig)!=null&&$.eager)));(!S||S.strategy!=="loaded-first"&&!S.loaded&&(!E!=!b?E:l>_[y].from))&&(_[y]=p),this.emitAfterRegisterShare(d,{scope:e,shared:p,previousShared:g,registeredShared:_[y],trigger:s})},h=async d=>{const{module:p}=await r.remoteHandler.getRemoteModuleAndOptions({id:d});let y;const E={initiator:"loadShare",id:d,resourceType:"remoteEntry",url:p.remoteInfo.entry};try{y=await p.getEntry(void 0,E)}catch(_){if(y=await r.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:d,error:_,from:"runtime",lifecycle:"beforeLoadShare",remote:p.remoteInfo,origin:r}),!y)return}finally{y!=null&&y.init&&!p.initing&&(p.remoteEntryExports=y,await p.init(void 0,void 0,i,void 0,E))}};return Object.keys(r.options.shared).forEach(d=>{r.options.shared[d].forEach(p=>{p.scope.includes(e)&&u(d,p)})}),(r.options.shareStrategy==="version-first"||o==="version-first")&&r.options.remotes.forEach(d=>{d.shareScope===e&&a.push(h(d.name))}),a}loadShareSync(e,t){const{host:r}=this,n=t==null?void 0:t.context,o=je({pkgName:e,extraOptions:t,shareInfos:r.options.shared});try{o!=null&&o.scope&&o.scope.forEach(i=>{this.initializeSharing(i,{strategy:o.strategy,from:t==null?void 0:t.from,context:n})});const{shared:s}=Y(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare,n)||{};if(s){if(typeof s.lib=="function")return V(s,r.options.name),s.loaded||(s.loaded=!0,s.from===r.options.name&&(o.loaded=!0)),this.emitAfterLoadShare({lifecycle:"loadShareSync",pkgName:e,shareInfo:o,selectedShared:s,loadContext:n}),s.lib;if(typeof s.get=="function"){const i=s.get();if(!(i instanceof Promise))return V(s,r.options.name),this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:i,shared:s}),this.emitAfterLoadShare({lifecycle:"loadShareSync",pkgName:e,shareInfo:o,selectedShared:s,loadContext:n}),i}}if(o.lib)return o.loaded||(o.loaded=!0),this.emitAfterLoadShare({lifecycle:"loadShareSync",pkgName:e,shareInfo:o,selectedShared:o,loadContext:n}),o.lib;if(o.get){const i=o.get();return i instanceof Promise&&R((t==null?void 0:t.from)==="build"?bt:Ne,k,{hostName:r.options.name,sharedPkgName:e},void 0,D(r.options)),o.lib=i,this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:o.lib,shared:o}),this.emitAfterLoadShare({lifecycle:"loadShareSync",pkgName:e,shareInfo:o,selectedShared:o,loadContext:n}),o.lib}R(Ne,k,{hostName:r.options.name,sharedPkgName:e},void 0,D(r.options))}catch(s){throw this.emitErrorLoadShare({lifecycle:"loadShareSync",pkgName:e,shareInfo:o,error:s,loadContext:n}),s}}initShareScopeMap(e,t,r={}){const{host:n}=this;this.shareScopeMap[e]=t,this.hooks.lifecycle.initContainerShareScopeMap.emit({shareScope:t,options:n.options,origin:n,scopeName:e,hostShareScopeMap:r.hostShareScopeMap})}setShared({pkgName:e,shared:t,from:r,lib:n,loading:o,loaded:s,get:i,treeShaking:a}){const{version:c,scope:l="default",...f}=t,u=Array.isArray(l)?l:[l],h=m=>{const d=(y,E,_)=>{_&&!y[E]&&(y[E]=_)},p=a?m.treeShaking:m;d(p,"loaded",s),d(p,"loading",o),d(p,"get",i),d(p,"lib",n)};u.forEach(m=>{this.shareScopeMap[m]||(this.shareScopeMap[m]={}),this.shareScopeMap[m][e]||(this.shareScopeMap[m][e]={}),this.shareScopeMap[m][e][c]||(this.shareScopeMap[m][e][c]={version:c,scope:[m],...f,lib:n});const d=this.shareScopeMap[m][e][c];h(d),r&&d.from!==r&&(d.from=r)})}_setGlobalShareScopeMap(e){const t=Oe(),r=e.id||e.name;r&&!t[r]&&(t[r]=this.shareScopeMap)}},Ro=class{constructor(){this.shareScopeMap={},this.hooks=new H({afterResolve:new F("afterResolve")})}registerShared(){return{newShareInfos:{},allShareInfos:{}}}loadShare(){throw new Error("Shared dependency loading is disabled by experiments.optimization.disableShared.")}loadShareSync(){throw new Error("Shared dependency loading is disabled by experiments.optimization.disableShared.")}initializeSharing(){return[]}initShareScopeMap(e,t){this.shareScopeMap[e]=t}},bo=class{constructor(e){this.hooks=new H({beforeRegisterRemote:new q("beforeRegisterRemote"),registerRemote:new q("registerRemote"),beforeRequest:new F("beforeRequest"),afterMatchRemote:new w("afterMatchRemote"),onLoad:new w("onLoad"),afterLoadRemote:new w("afterLoadRemote"),handlePreloadModule:new v("handlePreloadModule"),errorLoadRemote:new w("errorLoadRemote"),beforePreloadRemote:new w("beforePreloadRemote"),generatePreloadAssets:new w("generatePreloadAssets"),afterPreloadRemote:new w("afterPreloadRemote"),loadEntry:new w}),this.host=e,this.idToRemoteMap={}}formatAndRegisterRemote(e,t){return(t.remotes||[]).reduce((r,n)=>(this.registerRemote(n,r,{force:!1}),r),e.remotes)}setIdToRemoteMap(e,t){const{remote:r,expose:n}=t,{name:o,alias:s}=r;if(this.idToRemoteMap[e]={name:r.name,expose:n},s&&e.startsWith(o)){const i=e.replace(o,s);this.idToRemoteMap[i]={name:r.name,expose:n};return}if(s&&e.startsWith(s)){const i=e.replace(s,o);this.idToRemoteMap[i]={name:r.name,expose:n}}}async loadRemote(e,t){const{host:r}=this,n=qe(r.options.remotes,e);let o=e,s=n==null?void 0:n.expose,i=n?j(n.remote):void 0,a;try{const{loadFactory:c=!0}=t||{loadFactory:!0},{module:l,moduleOptions:f,remoteMatchInfo:u}=await this.getRemoteModuleAndOptions({id:e}),{pkgNameOrAlias:h,remote:m,expose:d,id:p,remoteSnapshot:y}=u;o=p,s=d,i=j(m);const E=await l.get(p,d,t,y),_=await this.hooks.lifecycle.onLoad.emit({id:p,pkgNameOrAlias:h,expose:d,exposeModule:c?E:void 0,exposeModuleFactory:c?void 0:E,remote:m,options:f,moduleInstance:l,origin:r});return this.setIdToRemoteMap(e,u),a={id:o,expose:s,remote:i,options:t,origin:r},typeof _=="function"?_:E}catch(c){const{from:l="runtime"}=t||{from:"runtime"};let f;try{f=await this.hooks.lifecycle.errorLoadRemote.emit({id:e,error:c,from:l,lifecycle:"onLoad",expose:s,remote:i,origin:r})}catch(u){throw a={id:o,expose:s,remote:i,options:t,error:u,origin:r},u}if(!f)throw a={id:o,expose:s,remote:i,options:t,error:c,origin:r},c;return a={id:o,expose:s,remote:i,options:t,error:c,origin:r,recovered:!0},f}finally{a&&await this.hooks.lifecycle.afterLoadRemote.emit(a)}}async preloadRemote(e){const{host:t}=this,r=[];await this.hooks.lifecycle.beforePreloadRemote.emit({preloadOps:e,options:t.options,origin:t});const n=no(t.options.remotes,e),o=a=>{const{preloadConfig:c,remote:l}=a,f=c.exposes||[];return f.length?f.map(u=>({ops:{...a,preloadConfig:{...c,exposes:[u]}},id:De(l.name,u)})):[{ops:a,id:`${l.name}/*`}]};let s;await Promise.all(n.flatMap(o).map(async a=>{const{ops:c,id:l}=a,{remote:f,preloadConfig:u}=c,h=j(f);try{const{globalSnapshot:m,remoteSnapshot:d}=await t.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:f,id:l,initiator:"preloadRemote"}),p=await this.hooks.lifecycle.generatePreloadAssets.emit({origin:t,preloadOptions:c,remote:f,remoteInfo:h,globalSnapshot:m,remoteSnapshot:d});if(!p)return;const y=await Pt(h,t,p,!0,{initiator:"preloadRemote",id:l},u.recordPreloadedAssets);r.push({remote:f,remoteInfo:h,preloadConfig:u,id:l,results:y})}catch(m){r.push({remote:f,remoteInfo:h,preloadConfig:u,id:l,results:[{url:h.entry,status:"error",resourceType:/\.json(?:$|[?#])/i.test(h.entry)?"manifest":"remoteEntry",initiator:"preloadRemote",id:l,error:m}]})}}));const i=r.flatMap(a=>a.results.filter(c=>c.status==="error"||c.status==="timeout"));if(i.length>0&&(s=new Error(`preloadRemote failed to load ${i.length} resource(s).`),Object.assign(s,{results:r,failedResults:i})),await this.hooks.lifecycle.afterPreloadRemote.emit({preloadOps:e,options:t.options,origin:t,results:r,error:s}),s)throw s}registerRemotes(e,t){const{host:r}=this;e.forEach(n=>{this.registerRemote(n,r.options.remotes,{force:t==null?void 0:t.force})})}initRawContainer(e,t,r){const{host:n}=this,o=new ze({host:n,remoteInfo:j({name:e,entry:t})});return o.remoteEntryExports=r,n.moduleCache.set(e,o),o}async getRemoteModuleAndOptions(e){const{host:t}=this,{id:r}=e;let n;try{n=await this.hooks.lifecycle.beforeRequest.emit({id:r,options:t.options,origin:t})}catch(m){if(n=await this.hooks.lifecycle.errorLoadRemote.emit({id:r,options:t.options,origin:t,from:"runtime",error:m,lifecycle:"beforeRequest"}),!n)throw m}const{id:o}=n,s=qe(t.options.remotes,o);if(!s)try{R(Rt,k,{hostName:t.options.name,requestId:o},void 0,D(t.options))}catch(m){throw await this.hooks.lifecycle.afterMatchRemote.emit({id:o,options:t.options,error:m,origin:t}),m}const{remote:i}=s,a=j(i);await this.hooks.lifecycle.afterMatchRemote.emit({id:o,...s,options:t.options,remoteInfo:a,origin:t});const c=await t.sharedHandler.hooks.lifecycle.afterResolve.emit({id:o,...s,options:t.options,origin:t,remoteInfo:a}),{remote:l,expose:f}=c;M(l&&f,`The 'beforeRequest' hook was executed, but it failed to return the correct 'remote' and 'expose' values while loading ${o}.`);let u=t.moduleCache.get(l.name);const h={host:t,remoteInfo:a};return u||(u=new ze(h),t.moduleCache.set(l.name,u)),{module:u,moduleOptions:h,remoteMatchInfo:c}}registerRemote(e,t,r){const{host:n}=this,o=()=>{if(e.alias){const i=t.find(a=>{var c;return e.alias&&(a.name.startsWith(e.alias)||((c=a.alias)==null?void 0:c.startsWith(e.alias)))});M(!i,`The alias ${e.alias} of remote ${e.name} is not allowed to be the prefix of ${i&&i.name} name or alias`)}"entry"in e&&typeof window<"u"&&!e.entry.startsWith("http")&&(e.entry=new URL(e.entry,window.location.origin).href),e.shareScope||(e.shareScope=oe),e.type||(e.type=yt)};this.hooks.lifecycle.beforeRegisterRemote.emit({remote:e,origin:n});const s=t.find(i=>i.name===e.name);if(!s)o(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:n});else{const i=[`The remote "${e.name}" is already registered.`,"Please note that overriding it may cause unexpected errors."];r!=null&&r.force&&(this.removeRemote(s),o(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:n}),Ye(i.join(" ")))}}removeRemote(e){var t;try{const{host:r}=this,{name:n}=e,o=r.options.remotes.findIndex(c=>c.name===n);o!==-1&&r.options.remotes.splice(o,1);const s=B(I.__FEDERATION__.moduleInfo,ee(e)).key;delete I.__FEDERATION__.moduleInfo[s],"entry"in e&&(r.snapshotHandler.manifestCache.delete(e.entry),delete me.__FEDERATION__.__MANIFEST_LOADING__[e.entry]);const{hostGlobalSnapshot:i}=Ft(e,r);if(i){const c=i&&"remotesInfo"in i&&i.remotesInfo&&B(i.remotesInfo,e.name).key;c&&delete i.remotesInfo[c]}const a=r.moduleCache.get(e.name);if(a){const c=a.remoteInfo,l=c.entryGlobalName;I[l]&&((t=Object.getOwnPropertyDescriptor(I,l))!=null&&t.configurable?delete I[l]:I[l]=void 0);const f=Lt(a.remoteInfo);C[f]&&delete C[f];let u=c.buildVersion?Xe(c.name,c.buildVersion):c.name;const h=I.__FEDERATION__.__INSTANCES__.findIndex(m=>c.buildVersion?m.options.id===u:m.name===u);if(h!==-1){const m=I.__FEDERATION__.__INSTANCES__[h];u=m.options.id||u;const d=Oe();let p=!0;const y=[];Object.keys(d).forEach(E=>{const _=d[E];_&&Object.keys(_).forEach(g=>{const S=_[g];S&&Object.keys(S).forEach(b=>{const $=S[b];$&&Object.keys($).forEach(A=>{const T=$[A];T&&typeof T=="object"&&T.from===c.name&&(T.loaded||T.loading?(T.useIn=T.useIn.filter(L=>L!==c.name),T.useIn.length?p=!1:y.push([E,g,b,A])):y.push([E,g,b,A]))})})})}),p&&(m.shareScopeMap={},delete d[u]),y.forEach(([E,_,g,S])=>{var b,$,A;(A=($=(b=d[E])==null?void 0:b[_])==null?void 0:$[g])==null||delete A[S]}),I.__FEDERATION__.__INSTANCES__.splice(h,1)}r.moduleCache.delete(e.name)}}catch(r){ve.error(`removeRemote failed: ${r instanceof Error?r.message:String(r)}`)}}};const Io=typeof FEDERATION_OPTIMIZE_NO_SNAPSHOT_PLUGIN=="boolean"?!FEDERATION_OPTIMIZE_NO_SNAPSHOT_PLUGIN:!0,Ie=typeof FEDERATION_OPTIMIZE_NO_REMOTE=="boolean"?!FEDERATION_OPTIMIZE_NO_REMOTE:!0,Je=typeof FEDERATION_OPTIMIZE_NO_SHARED=="boolean"?!FEDERATION_OPTIMIZE_NO_SHARED:!0;var Ao=class{constructor(e){this.hooks=new H({beforeInit:new q("beforeInit"),init:new v,beforeInitContainer:new F("beforeInitContainer"),initContainer:new F("initContainer")}),this.version="2.9.2",this.moduleCache=new Map,this.loaderHook=new H({getModuleInfo:new v,createScript:new v,createLink:new v,fetch:new w,loadEntryError:new w,afterLoadEntry:new w("afterLoadEntry"),beforeInitRemote:new w("beforeInitRemote"),afterInitRemote:new w("afterInitRemote"),beforeGetExpose:new w("beforeGetExpose"),afterGetExpose:new w("afterGetExpose"),beforeExecuteFactory:new w("beforeExecuteFactory"),afterExecuteFactory:new w("afterExecuteFactory"),getModuleFactory:new w}),this.bridgeHook=new H({beforeBridgeRender:new v,afterBridgeRender:new v,beforeBridgeDestroy:new v,afterBridgeDestroy:new v,afterBridgeRouteSync:new v});const t=Ie&&Io?[mo(),Eo()]:[],r={id:Qr(),name:e.name,plugins:t,remotes:[],shared:{},inBrowser:Ze};this.name=e.name,this.options=r,this.snapshotHandler=Ie?new go(this):new _o,this.sharedHandler=Je?new So(this):new Ro,this.remoteHandler=Ie?new bo(this):new ho,this.shareScopeMap=this.sharedHandler.shareScopeMap,this.registerPlugins([...r.plugins,...e.plugins||[]]),this.options=this.formatOptions(r,e)}initOptions(e){e.name&&e.name!==this.options.name&&R(nt(wt,k)),this.registerPlugins(e.plugins);const t=this.formatOptions(this.options,e);return this.options=t,t}async loadShare(e,t){return this.sharedHandler.loadShare(e,t)}loadShareSync(e,t){return this.sharedHandler.loadShareSync(e,t)}initializeSharing(e=oe,t){return this.sharedHandler.initializeSharing(e,t)}initRawContainer(e,t,r){return this.remoteHandler.initRawContainer(e,t,r)}async loadRemote(e,t){return this.remoteHandler.loadRemote(e,t)}async preloadRemote(e){return this.remoteHandler.preloadRemote(e)}initShareScopeMap(e,t,r={}){this.sharedHandler.initShareScopeMap(e,t,r)}formatOptions(e,t){const r=Je?Et(e,t).allShareInfos:{},{userOptions:n,options:o}=this.hooks.lifecycle.beforeInit.emit({origin:this,userOptions:t,options:e,shareInfo:r}),s=this.remoteHandler.formatAndRegisterRemote(o,n),{allShareInfos:i}=this.sharedHandler.registerShared(o,n),a=[...o.plugins];n.plugins&&n.plugins.forEach(l=>{a.includes(l)||a.push(l)});const c={...e,...t,plugins:a,remotes:s,shared:i,id:n.id||e.id};return this.hooks.lifecycle.init.emit({origin:this,options:c}),c}registerPlugins(e){this.options.plugins=ro(e,this)}registerRemotes(e,t){return this.remoteHandler.registerRemotes(e,t)}registerShared(e){this.sharedHandler.registerShared(this.options,{...this.options,shared:e})}};const vo=lo;export{I as C,Ao as M,To as a,$o as g,vo as h,wo as s};
@@ -1 +1 @@
1
- import{C as a,M as o,g as u,s,a as d}from"./index-12xv0FYP.js";function l(){return typeof FEDERATION_BUILD_IDENTIFIER<"u"?FEDERATION_BUILD_IDENTIFIER:""}function f(e,n){const t=l();return a.__FEDERATION__.__INSTANCES__.find(r=>!!(t&&r.options.id===t||r.options.name===e&&!r.options.version&&!n||r.options.name===e&&n&&r.options.version===n))}function I(e){const n=new(u()||o)({id:`${e.name}@${e.version||Date.now()}`,...e});return s(n),n}let i=null;function _(e){const n=f(e.name,e.version),t={...e,id:e.id||""};return n?(n.initOptions(t),i||(i=n),n):(i=I(t),i)}d(o);export{_ as i};
1
+ import{C as a,M as o,g as u,s,a as d}from"./index-CWGnoEzs.js";function l(){return typeof FEDERATION_BUILD_IDENTIFIER<"u"?FEDERATION_BUILD_IDENTIFIER:""}function f(e,n){const t=l();return a.__FEDERATION__.__INSTANCES__.find(r=>!!(t&&r.options.id===t||r.options.name===e&&!r.options.version&&!n||r.options.name===e&&n&&r.options.version===n))}function I(e){const n=new(u()||o)({id:`${e.name}@${e.version||Date.now()}`,...e});return s(n),n}let i=null;function _(e){const n=f(e.name,e.version),t={...e,id:e.id||""};return n?(n.initOptions(t),i||(i=n),n):(i=I(t),i)}d(o);export{_ as i};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-CqrYeeB9.js","./index-CWGnoEzs.js"])))=>i.map(i=>d[i]);
2
+ import{_ as h}from"./vite-preload-helper-Dp1pzeXC.js";const l="__mf_module_cache__";globalThis[l]||={share:{},remote:{}};globalThis[l].share||={};globalThis[l].remote||={};const s=globalThis[l];for(const e of Object.keys(s.share))if(e.startsWith("default:")){const a=e.slice(8);s.share[a]===void 0&&(s.share[a]=s.share[e])}else if(!e.includes(":")){const a="default:"+e;s.share[a]===void 0&&(s.share[a]=s.share[e])}const m=(e,a,o,r)=>{const t=(Array.isArray(r)?r[0]:r)||"default",n=a||!o?e:e+"@"+o,c={canonical:t+":"+n};return t==="default"&&(c.aliases=[n]),c},S=(e,a)=>{const o=e[a.canonical];if(o!==void 0)return o;const r=a.aliases||[];for(const i of r){if(!Object.prototype.hasOwnProperty.call(e,i))continue;const t=e[i];if(t!==void 0)return e[a.canonical]=t,t}},_=[["react",()=>h(()=>import("./_virtual_mf___mfe_internal__ShoppingRouteAdminSet__mf_owner__195137731327240__loadShare__shared-Cn8eOhIC.js").then(e=>e._),[],import.meta.url)]];async function p(){if(_.length===0)return;const e="react-dom/client",a="react-dom",{usedShared:o}=await h(async()=>{const{usedShared:r}=await import("./_virtual_mf-localSharedImportMap___mfe_internal__ShoppingRouteAdminSet__mf_owner__1-u-WAs2m5.js");return{usedShared:r}},__vite__mapDeps([0,1]),import.meta.url);await Promise.all(_.map(async([r,i])=>{var f,d;const t=o[r],n=t??(r===e?o[a]:void 0);if(!n||n.treeShaking||((f=n.shareConfig)==null?void 0:f.import)===!1||t&&t.materialize===!1&&r!==e)return;const c=m(r,(d=n.shareConfig)==null?void 0:d.singleton,n.version,n.scope);S(s.share,c)===void 0&&await i().catch(u=>console.warn("[module-federation] shared preload failed:",r,u))}))}export{p as preloadPendingShares};