iobroker.shoppingroute 0.3.2 → 0.3.4

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 (47) hide show
  1. package/README.md +28 -17
  2. package/README_DE.md +31 -24
  3. package/admin/custom/assets/ShoppingRouteAdminSet__mf_v__runtimeInit__mf_v__-CSXtL_6m.js +10 -0
  4. package/admin/custom/assets/_commonjsHelpers-CqkleIqs.js +1 -0
  5. package/admin/custom/assets/hostInit-DprWdRSg.js +2 -0
  6. package/admin/custom/assets/index-EOeIS_7q.js +9 -0
  7. package/admin/custom/assets/preload-helper-Dp1pzeXC.js +1 -0
  8. package/admin/custom/assets/route-editor-components-FB3CfD4a.js +1 -0
  9. package/admin/custom/assets/virtualExposes-0pJrfiZw.js +2 -0
  10. package/admin/custom/markets/assets/ShoppingRouteMarketsSet__mf_v__runtimeInit__mf_v__-Dx7i8THH.js +10 -0
  11. package/admin/custom/markets/assets/_commonjsHelpers-CqkleIqs.js +1 -0
  12. package/admin/custom/markets/assets/hostInit-DeIlwHf1.js +2 -0
  13. package/admin/custom/markets/assets/index-EOeIS_7q.js +9 -0
  14. package/admin/custom/markets/assets/markets-editor-components-DbpDn4Ma.js +67 -0
  15. package/admin/custom/markets/assets/preload-helper-Dp1pzeXC.js +1 -0
  16. package/admin/custom/markets/assets/virtualExposes-HyPFqZfW.js +2 -0
  17. package/admin/custom/markets/marketsEditor.js +2 -0
  18. package/admin/custom/markets/mf-manifest.json +1 -0
  19. package/admin/custom/mf-manifest.json +1 -0
  20. package/admin/custom/productGroups/assets/ShoppingRouteProductGroupsSet__mf_v__runtimeInit__mf_v__-Be3p3_Gt.js +10 -0
  21. package/admin/custom/productGroups/assets/_commonjsHelpers-CqkleIqs.js +1 -0
  22. package/admin/custom/productGroups/assets/hostInit-BHEE7C9D.js +2 -0
  23. package/admin/custom/productGroups/assets/index-EOeIS_7q.js +9 -0
  24. package/admin/custom/productGroups/assets/preload-helper-Dp1pzeXC.js +1 -0
  25. package/admin/custom/productGroups/assets/product-groups-editor-components-DUHkQ08b.js +44 -0
  26. package/admin/custom/productGroups/assets/virtualExposes-BohEelXR.js +2 -0
  27. package/admin/custom/productGroups/mf-manifest.json +1 -0
  28. package/admin/custom/productGroups/productGroupsEditor.js +2 -0
  29. package/admin/custom/routeEditor.js +2 -4212
  30. package/admin/jsonConfig.json +277 -315
  31. package/build/lib/alexa-direct.js +201 -0
  32. package/build/lib/config-tools.js +102 -1
  33. package/build/lib/direct-sort-lifecycle.js +72 -0
  34. package/build/lib/market-plan.js +141 -1
  35. package/build/lib/metrics.js +44 -1
  36. package/build/lib/model.js +3 -1
  37. package/build/lib/parser.js +274 -1
  38. package/build/lib/prefix-sort.js +325 -0
  39. package/build/lib/review-tools.js +21 -0
  40. package/build/lib/sorter.js +157 -1
  41. package/build/lib/state-change.js +7 -0
  42. package/build/lib/statistics.js +53 -1
  43. package/build/main.js +1133 -1
  44. package/io-package.json +70 -48
  45. package/package.json +9 -6
  46. package/build/lib/buffered-sort.js +0 -1
  47. package/build/lib/compatibility.js +0 -1
package/README.md CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  ![ShoppingRoute](admin/shoppingroute.png)
4
4
 
5
- **Current version: 0.3.1**
5
+ **Current version: 0.3.4**
6
6
 
7
- ShoppingRoute sorts Alexa shopping-list entries by market, product group and each store's individual walking route. Normal shopping items are still sorted only by redistributing visible texts across existing Alexa IDs. Optionally, ShoppingRoute can use Alexa2 to create its own market headings such as `---- ALDI ----`. Once a market is no longer needed, ShoppingRoute completely deletes only that self-managed heading entry. Managed Alexa lists must be set to **Oldest to newest** in the Alexa app.
7
+ ShoppingRoute sorts Alexa shopping-list entries by market, product group and each store's individual walking route. It assigns visible two-digit keys such as `20> Bananas` and `40> ═════ ALDI ═════`; managed lists must therefore be set to **A–Z** in the Alexa app. ShoppingRoute reuses the local Alexa2 authentication for direct item updates, deletes and batch creates, while Alexa2 list states remain the external change trigger.
8
8
 
9
9
  ## User guide / Bedienungsanleitung
10
10
 
@@ -16,7 +16,7 @@ ShoppingRoute sorts Alexa shopping-list entries by market, product group and eac
16
16
  - multiple Alexa lists with per-list priority markets
17
17
  - global, per-list and temporary market priorities
18
18
  - market aliases and common market-name variants
19
- - optional automatically managed market headings such as `---- ALDI ----`
19
+ - optional automatically managed market headings such as `═════ ALDI ═════`
20
20
  - optional cross-market consolidation using a minimum-item threshold; explicit market requests are never moved
21
21
  - configurable product groups and store-specific routes
22
22
  - product catalogue with aliases, preferred and available markets
@@ -26,32 +26,43 @@ ShoppingRoute sorts Alexa shopping-list entries by market, product group and eac
26
26
  - automatic/review/off learning modes
27
27
  - category and alias suggestions
28
28
  - sorting preview before writes
29
- - API safe mode with write-rate limiting, batches and retry backoff
29
+ - incremental `00>`–`99>` prefix sorting with gap-preserving inserts and suffix-only rebuilds
30
+ - direct Amazon responses plus one final list read as write confirmation
31
+ - API Safe Mode with configurable write-rate limiting
30
32
  - local-only shopping statistics
31
33
  - configuration backup/restore
32
34
  - shareable market-route profiles
33
- - npm beta version check
34
35
  - privacy-safe diagnostic/feedback report
35
- - Alexa2/alexa-remote2 write compatibility guard
36
+ - Alexa2/alexa-remote2 direct-session diagnostics
36
37
  - Dry Run safety mode
37
38
 
38
39
  See `README_DE.md` for the detailed German documentation.
39
40
 
40
41
  ## Changelog
41
42
 
42
- ### 0.3.2 (2026-08-11)
43
+ ### 0.3.4 (2026-08-14)
44
+
45
+ - Added Admin 8 compatibility for all custom Admin components and set the minimum Admin version to 8.0.0.
46
+ - Improved logging with an optional sort-summary message and made market headings clearer (`═════ MARKET ═════`).
47
+ - Fixed the review queue’s “Accept all” action and now process foreign Alexa2 states only when their values are acknowledged.
48
+ - Removed obsolete timing/API configuration options and the internal npm version check.
49
+ - Removed code obfuscation and obsolete package-preparation paths.
50
+ - Completed repository-review compatibility cleanup, including English runtime log/state texts and bounded `maxWritesPerMinute` handling.
43
51
 
44
- - List stability guard: after every Alexa2 list change, ShoppingRoute waits for at least 30 seconds with no further list change before sorting writes start. If a new active ID appears during a buffered sort, the confirmed sort path is rolled back while the new ID itself remains untouched. The `updatedDateTime` visible-order finalizer also aborts immediately on new IDs and replans only after another quiet window.
52
+ ### 0.3.3 (2026-08-13)
45
53
 
46
- - Alexa visible order is now finalized from `updatedDateTime` after the buffered content permutation. Only the minimum necessary items are touched again with their unchanged text; normal shopping items are still neither deleted nor recreated. This keeps the anti-duplication buffer protection while restoring the ShoppingRoute order in Alexa App “oldest to newest” view.
54
+ - New direct `00>`–`99>` prefix sorting for Alexa lists configured to A–Z.
55
+ - Added very fast incremental insertion into free numeric gaps; only the affected suffix is rebuilt when a gap is exhausted.
56
+ - Direct Amazon responses confirm each operation, followed by one final direct verification of the complete list result.
57
+ - Managed Alexa lists must be set to **A–Z** in the Alexa app.
47
58
 
48
- - Sorting target texts are now trimmed at their edges just like existing Alexa list values. This prevents invisible trailing whitespace (for example `Camembert `) from falsely failing the buffered permutation safety check.
59
+ ### 0.3.2 (2026-08-11)
49
60
 
50
- - Replaced direct sequential value redistribution with a buffered Euler-cycle transaction. A sort now uses one temporary buffer value per disconnected value circuit, so normal list items are not deleted/recreated and Amazon write traffic stays close to the number of actually changed slots.
51
- - Added a persistent local sort transaction journal (`info.sortTransaction`). Every confirmed step is recorded locally and interrupted transactions are reversed step-by-step after restart instead of treating an intermediate Alexa list as the new source of truth.
52
- - Added per-step Alexa2 confirmation and a safety stop for ambiguous remote write states. If new active items appear during a running transaction, the current buffered sort is aborted safely and replanned only after another 30-second quiet synchronization window.
53
- - Fixed Admin configuration handling for independent market routes, newly added markets/product groups, alternative-market multi-selection in Products and Review, and the Review action “Accept all”.
54
- - Documented that ShoppingRoute can only process the list state currently supplied by Alexa2; a stale Alexa2 list synchronization can therefore delay newly added app items until Alexa2 has synchronized them.
61
+ - Replaced the former buffered/marker/`updatedDateTime` sorter with one direct `00>`–`99>` prefix architecture for Alexa A–Z lists.
62
+ - Added midpoint insertion into existing numeric gaps; if a gap is exhausted, only the smallest necessary suffix is deleted serially and recreated with one batch request.
63
+ - Reuses Alexa2 credentials locally without logging secrets or writing Alexa2 item states. Direct Amazon responses confirm each operation and one final direct list read verifies the complete apply.
64
+ - Added a simple exclusive `IDLE`/`COLLECTING`/`APPLYING` lifecycle: one new item waits at most five seconds, while a second new item starts the collected run immediately.
65
+ - Replaced the old marker transaction with a compact persistent direct-apply journal and a safety stop for incomplete or ambiguous remote results.
55
66
 
56
67
  ### 0.3.1 (2026-08-10)
57
68
 
@@ -59,7 +70,7 @@ See `README_DE.md` for the detailed German documentation.
59
70
 
60
71
  ### 0.3.0 (2026-08-10)
61
72
 
62
- - Added optional `---- MARKET ----` headings.
73
+ - Added optional market headings (now formatted as `═════ MARKET ═════`).
63
74
  - A heading stays active until the last real item for that market is completed and is then deleted completely instead of remaining among completed items.
64
75
  - Added configurable minimum-items-per-market consolidation for flexible articles.
65
76
  - Explicit market phrases always remain assigned to the requested market.
@@ -69,7 +80,7 @@ See `README_DE.md` for the detailed German documentation.
69
80
 
70
81
  - First stable release of ShoppingRoute.
71
82
  - Completed Admin translations for all supported ioBroker languages and fixed the walking-route market help text.
72
- - Added protected stable publishing through GitHub Actions, npm Trusted Publishing/OIDC and an obfuscated runtime build.
83
+ - Added protected stable publishing through GitHub Actions and npm Trusted Publishing/OIDC.
73
84
  - Verified `updateListItem` compatibility with Alexa2 3.28.3 and alexa-remote2 8.1.0 without local modifications to foreign modules.
74
85
 
75
86
  ### 0.2.0-beta.12 (2026-08-09)
package/README_DE.md CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  ![ShoppingRoute](admin/shoppingroute.png)
4
4
 
5
- **Aktuelle Version: 0.3.1**
5
+ **Aktuelle Version: 0.3.4**
6
6
 
7
- ShoppingRoute sortiert Alexa-Einkaufslisteneinträge nach Markt, Produktgruppe und dem individuellen Laufweg durch den jeweiligen Markt. Normale Einkaufsartikel werden weiterhin ausschließlich über ihre vorhandenen Alexa-IDs und sichtbaren Texte sortiert. Optional kann ShoppingRoute über Alexa2 eigene Marktüberschriften wie `---- ALDI ----` anlegen. Sobald ein Markt nicht mehr benötigt wird, löscht ShoppingRoute ausschließlich diesen selbst verwalteten Überschriftseintrag wieder vollständig. Die Alexa-App muss für verwaltete Listen auf **„Älteste bis neueste“** gestellt sein.
7
+ 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
8
 
9
9
  ## Bedienungsanleitung / User guide
10
10
 
@@ -16,7 +16,7 @@ ShoppingRoute sortiert Alexa-Einkaufslisteneinträge nach Markt, Produktgruppe u
16
16
  - mehrere Alexa-Einkaufslisten mit eigenem Prioritätsmarkt
17
17
  - globale, listenbezogene und temporäre Marktpriorität
18
18
  - Markt-Aliase und automatische Erkennung häufiger Marktvarianten
19
- - optionale, automatisch verwaltete Marktüberschriften wie `---- ALDI ----`
19
+ - optionale, automatisch verwaltete Marktüberschriften wie `═════ ALDI ═════`
20
20
  - optionale marktübergreifende Zusammenlegung anhand einer Mindestanzahl von Artikeln pro zusätzlichem Markt; explizite Marktangaben bleiben unverändert
21
21
  - frei pflegbare Produktgruppen und marktbezogene Laufwege
22
22
  - Laufweg nach Tabellenreihenfolge; Reihenfolgen werden automatisch neu nummeriert
@@ -28,13 +28,14 @@ ShoppingRoute sortiert Alexa-Einkaufslisteneinträge nach Markt, Produktgruppe u
28
28
  - intelligente Kategorie-Vorschläge aus Regeln und bereits bekannten Artikeln
29
29
  - Alias-Vorschläge für erkannte Schreibvarianten
30
30
  - Sortiervorschau vor Alexa-Schreibzugriffen
31
- - API-Schonmodus mit Rate-Limit, Blöcken und Retry-Backoff
31
+ - inkrementelle Präfixsortierung `00>`–`99>` mit Lückenerhalt und Suffix-Fallback
32
+ - direkte Amazon-Antworten plus ein abschließender Listenabruf als Bestätigung
33
+ - API-Schonmodus mit konfigurierbarem Schreibzugriffs-Limit
32
34
  - lokale Einkaufsstatistik ohne Cloud-Telemetrie
33
35
  - Konfigurations-Export/Import
34
36
  - exportierbare/importierbare Marktprofile zum Teilen von Laufwegen
35
- - npm-Beta-Versionsprüfung im Adapter
36
37
  - datenschutzfreundlicher Diagnose-/Feedbackbericht
37
- - Alexa2/alexa-remote2-Kompatibilitätsprüfung vor echten Schreibzugriffen
38
+ - Alexa2/alexa-remote2-Diagnose der direkten Sitzung
38
39
  - Dry-Run für sichere Tests
39
40
 
40
41
  ## Prioritätslogik
@@ -60,35 +61,41 @@ Anschließend kann 0.3.0 flexible Artikel marktübergreifend zusammenlegen, wenn
60
61
  - `info.sortTransaction` – lokales Wiederherstellungsjournal einer laufenden Sortierung; im Normalzustand `{}`
61
62
  - `info.configExport` – komplette Konfigurationssicherung
62
63
  - `info.marketProfiles` – teilbare Marktprofile
63
- - `info.versionInstalled`, `info.versionBeta`, `info.updateAvailable` – Versionsstatus
64
+ - `info.versionInstalled` – installierte Adapterversion
64
65
  - `info.feedbackReport` – bereinigter Diagnose-/Feedbackbericht ohne Einkaufsinhalte
65
66
  - `control.temporaryPriorityMarket` – temporärer Markt für den aktuellen Einkauf
66
67
  - `control.importConfigJson` – Konfiguration importieren
67
68
  - `control.marketProfileImport` – Marktprofil importieren
68
69
 
69
- ## Hinweis zur ioBroker-Adapterkarte
70
-
71
- Solange ShoppingRoute noch nicht im offiziellen ioBroker-Repository geführt wird, kann ioBroker Admin bei **„Verfügbare Version“** generisch **„nicht gewartet“** anzeigen. Das ist keine Aussage des laufenden Adapters. ShoppingRoute zeigt deshalb seinen eigenen npm-Versionsstatus über die `info.version*`-Datenpunkte an.
72
-
73
- ## Lizenzierung der Beta-Versionen
70
+ ## Lizenz
74
71
 
75
- ShoppingRoute wird ab dieser Version unter der **MIT-Lizenz** veröffentlicht. Frühere bereits veröffentlichte Versionen bleiben unter der jeweils damals gültigen Lizenz.
72
+ ShoppingRoute wird unter der **MIT-Lizenz** veröffentlicht. Frühere bereits veröffentlichte Versionen bleiben unter der jeweils damals gültigen Lizenz.
76
73
 
77
74
  ## Changelog
78
75
 
79
- ### 0.3.2 (2026-08-11)
76
+ ### 0.3.4 (2026-08-14)
77
+
78
+ - Admin-8-Kompatibilität für alle benutzerdefinierten Admin-Komponenten ergänzt und die Admin-Mindestversion auf 8.0.0 gesetzt.
79
+ - Logging mit optionaler Sortier-Abschlussmeldung verbessert und Marktüberschriften deutlicher gestaltet (`═════ MARKT ═════`).
80
+ - Prüflisten-Funktion „Alle auf Übernehmen stellen“ repariert; fremde Alexa2-States werden nur noch bei bestätigten Werten verarbeitet.
81
+ - Veraltete Timing-/API-Konfigurationsoptionen und die interne npm-Versionsprüfung entfernt.
82
+ - Code-Obfuscation und überholte Paketvorbereitungswege entfernt.
83
+ - Repository-Review- und Kompatibilitätsbereinigung abgeschlossen, einschließlich englischer Runtime-Log-/State-Texte und begrenzter `maxWritesPerMinute`-Verarbeitung.
80
84
 
81
- - List-Stability-Guard: Nach jeder Alexa2-Listenänderung wartet ShoppingRoute mindestens 30 Sekunden ohne weitere Listenänderung, bevor Sortierschreibzugriffe beginnen. Taucht während einer gepufferten Sortierung eine neue aktive ID auf, wird der bestätigte Sortierpfad rückwärts zurückgesetzt; die neue ID selbst bleibt unangetastet. Auch die `updatedDateTime`-Finalisierung bricht bei neuen IDs sofort ab und plant erst nach erneuter Synchronisationsruhe neu.
85
+ ### 0.3.3 (2026-08-13)
82
86
 
83
- - Die sichtbare Alexa-Reihenfolge wird nach der gepufferten Inhalts-Permutation jetzt anhand von `updatedDateTime` finalisiert. Dafür werden nur die minimal notwendigen Einträge mit ihrem unveränderten Text erneut bestätigt; normale Einkaufsartikel werden weiterhin weder gelöscht noch neu angelegt. Dadurch bleibt der Puffer-Schutz gegen Artikelvervielfältigung erhalten, während „Älteste bis neueste“ in der Alexa-App wieder dem ShoppingRoute-Sortierplan entspricht.
87
+ - Neue direkte `00>`–`99>`-Präfixsortierung für Alexa-Listen in A–Z.
88
+ - Sehr schnelle inkrementelle Einfügungen in freie Nummernlücken; nur bei ausgeschöpfter Lücke wird das betroffene Suffix neu aufgebaut.
89
+ - Direkte Amazon-Antworten bestätigen jede Operation, anschließend verifiziert genau ein direkter Kontrollabruf das vollständige Listenergebnis.
90
+ - Verwaltete Alexa-Listen müssen in der Alexa-App auf **A–Z** gestellt sein.
84
91
 
85
- - Zieltexte der Sortierplanung werden jetzt genauso wie die vorhandenen Alexa-Listentexte an den Rändern bereinigt. Dadurch kann ein unsichtbares nachgestelltes Leerzeichen (z. B. `Camembert `) die gepufferte Permutationsprüfung nicht mehr fälschlich blockieren.
92
+ ### 0.3.2 (2026-08-11)
86
93
 
87
- - Die direkte, schrittweise Textumverteilung wurde durch eine gepufferte Euler-Kreis-Transaktion ersetzt. Pro getrenntem Wertekreis wird genau ein temporärer Pufferwert verwendet; normale Einkaufsartikel werden weder gelöscht noch neu angelegt und der Amazon-Schreibverkehr bleibt nahe an der Zahl der tatsächlich geänderten Listenplätze.
88
- - Ein dauerhaftes lokales Sortierjournal (`info.sortTransaction`) wurde ergänzt. Jeder bestätigte Schritt wird lokal festgehalten; nach einem Neustart wird eine unterbrochene Transaktion Schritt für Schritt rückwärts aufgelöst, statt einen Zwischenstand der Alexa-Liste als neue Wahrheit zu übernehmen.
89
- - Jeder Sortierschritt wird von Alexa2 bestätigt. Bei einem nicht eindeutig auflösbaren Schreibstatus greift ein Sicherheitsstopp. Tauchen während einer laufenden Transaktion neue aktive Artikel auf, wird die gepufferte Sortierung sicher abgebrochen und erst nach einer erneuten 30-sekündigen Synchronisationsruhe neu geplant.
90
- - Admin-Korrekturen für voneinander unabhängige Marktlaufwege, neu angelegte Märkte/Produktgruppen, die Mehrfachauswahl alternativer Märkte in Artikel- und Prüfliste sowie „Alle übernehmen“ dokumentiert und abgesichert.
91
- - Dokumentiert, dass ShoppingRoute ausschließlich den von Alexa2 aktuell gelieferten Listenstand verarbeiten kann. Bei einer festhängenden Alexa2-Listensynchronisierung erscheinen neue App-Einträge deshalb erst nach der erneuten Alexa2-Synchronisierung in ShoppingRoute.
94
+ - Den bisherigen Puffer-/Marker-/`updatedDateTime`-Sortierer durch genau eine direkte `00>`–`99>`-Präfixarchitektur für Alexa-Listen in A–Z ersetzt.
95
+ - Neue Artikel werden mittig in freie Nummernlücken eingesetzt; reicht eine Lücke nicht, wird nur das kleinste notwendige Suffix seriell gelöscht und mit einem Batch neu erzeugt.
96
+ - Die Alexa2-Anmeldedaten werden lokal wiederverwendet, ohne Secrets zu loggen oder Alexa2-Itemstates zu beschreiben. Direkte Amazon-Antworten bestätigen jede Operation; genau ein direkter Listenabruf prüft anschließend den Gesamtlauf.
97
+ - Einfachen exklusiven Lebenszyklus `IDLE`/`COLLECTING`/`APPLYING` ergänzt: Ein neuer Artikel wartet höchstens fünf Sekunden, der zweite startet den gemeinsamen Lauf sofort.
98
+ - Die alte Marker-Transaktion wurde durch ein kompaktes persistentes Direkt-Apply-Journal und Sicherheitsstopp bei unvollständigem oder uneindeutigem Remote-Ergebnis ersetzt.
92
99
 
93
100
  ### 0.3.1 (2026-08-10)
94
101
 
@@ -96,11 +103,11 @@ ShoppingRoute wird ab dieser Version unter der **MIT-Lizenz** veröffentlicht. F
96
103
 
97
104
  ### 0.3.0 (2026-08-10)
98
105
 
99
- - Optionale Marktüberschriften im Format `---- MARKT ----` ergänzt.
106
+ - Optionale Marktüberschriften ergänzt (jetziges Format: `═════ MARKT ═════`).
100
107
  - Überschriften bleiben aktiv, solange mindestens ein echter Artikel des Marktes offen ist, und werden danach vollständig gelöscht statt unter erledigten Artikeln stehen zu bleiben.
101
108
  - Marktübergreifende Zusammenlegung anhand einer konfigurierbaren Mindestanzahl ergänzt.
102
109
  - Explizite Marktangaben bleiben von der Zusammenlegung ausnahmslos unberührt.
103
- - Header-Verwaltung nutzt ausschließlich Alexa2-Datenpunkte (`#New`, `#delete`) und erzeugt keine zweite Amazon-Sitzung; normale Einkaufsartikel werden niemals automatisch gelöscht oder erledigt.
110
+ - Die damalige Header-Verwaltung nutzte Alexa2-Datenpunkte (`#New`, `#delete`). Ab 0.3.2 werden Header als normale präfixierte Items über die direkte, lokal authentifizierte Sitzung verwaltet.
104
111
 
105
112
  ### 0.2.0 (2026-08-09)
106
113
 
@@ -0,0 +1,10 @@
1
+ var index_cjs$3={},index_cjs$2={},polyfills_cjs$1={};function _extends$2(){return _extends$2=Object.assign||function(i){for(var d=1;d<arguments.length;d++){var u=arguments[d];for(var p in u)Object.prototype.hasOwnProperty.call(u,p)&&(i[p]=u[p])}return i},_extends$2.apply(this,arguments)}function _object_without_properties_loose(o,i){if(o==null)return{};var d={},u=Object.keys(o),p,S;for(S=0;S<u.length;S++)p=u[S],!(i.indexOf(p)>=0)&&(d[p]=o[p]);return d}polyfills_cjs$1._extends=_extends$2;polyfills_cjs$1._object_without_properties_loose=_object_without_properties_loose;var index_cjs$1={},__defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__export=(o,i)=>{for(var d in i)__defProp(o,d,{get:i[d],enumerable:!0})},__copyProps=(o,i,d,u)=>{if(i&&typeof i=="object"||typeof i=="function")for(let p of __getOwnPropNames(i))!__hasOwnProp.call(o,p)&&p!==d&&__defProp(o,p,{get:()=>i[p],enumerable:!(u=__getOwnPropDesc(i,p))||u.enumerable});return o},__toCommonJS=o=>__copyProps(__defProp({},"__esModule",{value:!0}),o),browser_exports={};__export(browser_exports,{createLogger:()=>createLogger2,logger:()=>logger$1});var browser=__toCommonJS(browser_exports),supportsSubstitutions=void 0,supportColor=()=>{if(typeof supportsSubstitutions<"u")return supportsSubstitutions;const o=console.log;try{const i="color test",d="color: red;";supportsSubstitutions=!1,console.log=(...u)=>{u[0]===`%c${i}`&&u[1]===d&&(supportsSubstitutions=!0)},console.log(`%c${i}`,d)}catch{supportsSubstitutions=!1}finally{console.log=o}return supportsSubstitutions},ansiToCss={bold:"font-weight: bold;",red:"color: red;",green:"color: green;",orange:"color: orange;",dodgerblue:"color: dodgerblue;",magenta:"color: magenta;",gray:"color: gray;"},formatter=o=>supportColor()?i=>{if(Array.isArray(i)){const[d,u]=i;return[`%c${d.replace("%c","")}`,u?`${ansiToCss[o]}${u}`:`${ansiToCss[o]||""}`]}return[`%c${String(i).replace("%c","")}`,ansiToCss[o]||""]}:i=>[String(i)],bold=formatter("bold"),red=formatter("red"),green=formatter("green"),orange=formatter("orange"),dodgerblue=formatter("dodgerblue"),magenta=formatter("magenta");formatter("gray");function getLabel(o,i,d){let u=[""];if("label"in i)if(u=[(o!=="log"?d[o]:void 0)||i.label||""],i.color){const S=i.color(u[0]);Array.isArray(S)&&S.length===2?u=bold([S[0],S[1]]):u=bold(S[0]||"")}else u=bold(u[0]);return u=u.filter(Boolean),u}function finalLog(o,i,d,u){o.length?Array.isArray(u)?console.log(...o,...u,...d):console.log(...o,i,...d):Array.isArray(u)?console.log(...u):console.log(i,...d)}var LOG_LEVEL={error:0,warn:1,info:2,log:3,verbose:4},errorStackRegExp=/at\s.*:\d+:\d+[\s\)]*$/,anonymousErrorStackRegExp=/at\s.*\(<anonymous>\)$/,isErrorStackMessage=o=>errorStackRegExp.test(o)||anonymousErrorStackRegExp.test(o);function validateOptions(o){const i={...o};if(o.labels&&typeof o.labels!="object")throw new Error("Labels must be an object");if(o.level&&typeof o.level!="string")throw new Error("Level must be a string");return i}var createLogger$1=(o={},{getLabel:i,handleError:d,finalLog:u,greet:p,LOG_TYPES:S})=>{const b=validateOptions(o);let m=b.level||"log",R=b.labels||{},T=(L,O,...G)=>{if(LOG_LEVEL[S[L].level]>LOG_LEVEL[m])return;if(O==null)return console.log();let Y=S[L],V="";const le=i(L,Y,R);if(O instanceof Error)if(O.stack){let[Z,...B]=O.stack.split(`
2
+ `);Z.startsWith("Error: ")&&(Z=Z.slice(7)),V=`${Z}
3
+ ${d(B.join(`
4
+ `))}`}else V=O.message;else Y.level==="error"&&typeof O=="string"?V=O.split(`
5
+ `).map(B=>isErrorStackMessage(B)?d(B):B).join(`
6
+ `):V=`${O}`;u(le,V,G,O)},w={greet:L=>T("log",p(L))};return Object.keys(S).forEach(L=>{w[L]=(...O)=>T(L,...O)}),Object.defineProperty(w,"level",{get:()=>m,set(L){m=L}}),Object.defineProperty(w,"labels",{get:()=>R,set(L){R=L}}),w.override=L=>{Object.assign(w,L)},w},startColor=[189,255,243],endColor=[74,194,154],isWord=o=>!/[\s\n]/.test(o);function gradient(o){if(!supportColor())return[o];const i=[...o],d=i.filter(isWord),u=d.length-1;if(u===0)return console.log(`%c${o}`,`color: rgb(${startColor.join(",")}); font-weight: bold;`),[o];let p="",S=[];return i.forEach(b=>{if(isWord(b)){const m=d.indexOf(b)/u,R=Math.round(startColor[0]+(endColor[0]-startColor[0])*m),T=Math.round(startColor[1]+(endColor[1]-startColor[1])*m),w=Math.round(startColor[2]+(endColor[2]-startColor[2])*m);p+=`%c${b}`,S.push(`color: rgb(${R},${T},${w}); font-weight: bold;`)}else p+=b}),[p,...S]}var LOG_TYPES={error:{label:"error",level:"error",color:red},warn:{label:"warn",level:"warn",color:orange},info:{label:"info",level:"info",color:dodgerblue},start:{label:"start",level:"info",color:dodgerblue},ready:{label:"ready",level:"info",color:green},success:{label:"success",level:"info",color:green},log:{level:"log"},debug:{label:"debug",level:"verbose",color:magenta}};function createLogger2(o={}){return createLogger$1(o,{handleError:i=>i,getLabel,finalLog,LOG_TYPES,greet:i=>gradient(i)})}var logger$1=createLogger2(),polyfills_cjs={};function _extends$1(){return _extends$1=Object.assign||function(i){for(var d=1;d<arguments.length;d++){var u=arguments[d];for(var p in u)Object.prototype.hasOwnProperty.call(u,p)&&(i[p]=u[p])}return i},_extends$1.apply(this,arguments)}polyfills_cjs._extends=_extends$1;var define_process_env_default={},isomorphicRslog=browser,polyfills=polyfills_cjs;const FederationModuleManifest="federation-manifest.json",MANIFEST_EXT=".json",BROWSER_LOG_KEY="FEDERATION_DEBUG",BROWSER_LOG_VALUE="1",NameTransformSymbol={AT:"@",HYPHEN:"-",SLASH:"/"},NameTransformMap={[NameTransformSymbol.AT]:"scope_",[NameTransformSymbol.HYPHEN]:"_",[NameTransformSymbol.SLASH]:"__"},EncodedNameTransformMap={[NameTransformMap[NameTransformSymbol.AT]]:NameTransformSymbol.AT,[NameTransformMap[NameTransformSymbol.HYPHEN]]:NameTransformSymbol.HYPHEN,[NameTransformMap[NameTransformSymbol.SLASH]]:NameTransformSymbol.SLASH},SEPARATOR=":",ManifestFileName="mf-manifest.json",StatsFileName="mf-stats.json",MFModuleType={NPM:"npm",APP:"app"},MODULE_DEVTOOL_IDENTIFIER="__MF_DEVTOOLS_MODULE_INFO__",ENCODE_NAME_PREFIX="ENCODE_NAME_PREFIX",TEMP_DIR=".federation",MFPrefetchCommon={identifier:"MFDataPrefetch",globalKey:"__PREFETCH__",library:"mf-data-prefetch",exportsKey:"__PREFETCH_EXPORTS__",fileName:"bootstrap.js"};var ContainerPlugin=Object.freeze({__proto__:null}),ContainerReferencePlugin=Object.freeze({__proto__:null}),ModuleFederationPlugin=Object.freeze({__proto__:null}),SharePlugin=Object.freeze({__proto__:null});function isBrowserEnv(){return typeof window<"u"}function isBrowserDebug(){try{if(isBrowserEnv()&&window.localStorage)return localStorage.getItem(BROWSER_LOG_KEY)===BROWSER_LOG_VALUE}catch{return!1}return!1}function isDebugMode(){return typeof process<"u"&&define_process_env_default&&define_process_env_default.FEDERATION_DEBUG?!!define_process_env_default.FEDERATION_DEBUG:typeof FEDERATION_DEBUG<"u"&&FEDERATION_DEBUG?!0:isBrowserDebug()}const getProcessEnv=function(){return typeof process<"u"&&define_process_env_default?define_process_env_default:{}},PREFIX="[ Module Federation ]";function setDebug(o){isDebugMode()&&(o.level="verbose")}function setPrefix(o,i){o.labels={warn:`${i} Warn`,error:`${i} Error`,success:`${i} Success`,info:`${i} Info`,ready:`${i} Ready`,debug:`${i} Debug`}}function createLogger(o){const i=isomorphicRslog.createLogger({labels:{warn:`${PREFIX} Warn`,error:`${PREFIX} Error`,success:`${PREFIX} Success`,info:`${PREFIX} Info`,ready:`${PREFIX} Ready`,debug:`${PREFIX} Debug`}});return setDebug(i),setPrefix(i,o),i}const logger=createLogger(PREFIX),LOG_CATEGORY="[ Federation Runtime ]",parseEntry=(o,i,d=SEPARATOR)=>{const u=o.split(d),p=getProcessEnv().NODE_ENV==="development"&&i,S="*",b=m=>m.startsWith("http")||m.includes(MANIFEST_EXT);if(u.length>=2){let[m,...R]=u;o.startsWith(d)&&(R=[p||u.slice(-1)[0]],m=u.slice(0,-1).join(d));let T=p||R.join(d);return b(T)?{name:m,entry:T}:{name:m,version:T||S}}else if(u.length===1){const[m]=u;return p&&b(p)?{name:m,entry:p}:{name:m,version:p||S}}else throw`Invalid entry value: ${o}`},composeKeyWithSeparator=function(...o){return o.length?o.reduce((i,d)=>d?i?`${i}${SEPARATOR}${d}`:d:i,""):""},encodeName=function(o,i="",d=!1){try{const u=d?".js":"";return`${i}${o.replace(new RegExp(`${NameTransformSymbol.AT}`,"g"),NameTransformMap[NameTransformSymbol.AT]).replace(new RegExp(`${NameTransformSymbol.HYPHEN}`,"g"),NameTransformMap[NameTransformSymbol.HYPHEN]).replace(new RegExp(`${NameTransformSymbol.SLASH}`,"g"),NameTransformMap[NameTransformSymbol.SLASH])}${u}`}catch(u){throw u}},decodeName=function(o,i,d){try{let u=o;if(i){if(!u.startsWith(i))return u;u=u.replace(new RegExp(i,"g"),"")}return u=u.replace(new RegExp(`${NameTransformMap[NameTransformSymbol.AT]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.AT]]).replace(new RegExp(`${NameTransformMap[NameTransformSymbol.SLASH]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.SLASH]]).replace(new RegExp(`${NameTransformMap[NameTransformSymbol.HYPHEN]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.HYPHEN]]),d&&(u=u.replace(".js","")),u}catch(u){throw u}},generateExposeFilename=(o,i)=>{if(!o)return"";let d=o;return d==="."&&(d="default_export"),d.startsWith("./")&&(d=d.replace("./","")),encodeName(d,"__federation_expose_",i)},generateShareFilename=(o,i)=>o?encodeName(o,"__federation_shared_",i):"",getResourceUrl=(o,i)=>{if("getPublicPath"in o){let d;return o.getPublicPath.startsWith("function")?d=new Function("return "+o.getPublicPath)()():d=new Function(o.getPublicPath)(),`${d}${i}`}else return"publicPath"in o?`${o.publicPath}${i}`:(console.warn("Cannot get resource URL. If in debug mode, please ignore.",o,i),"")},assert=(o,i)=>{o||error(i)},error=o=>{throw new Error(`${LOG_CATEGORY}: ${o}`)},warn=o=>{console.warn(`${LOG_CATEGORY}: ${o}`)};function safeToString(o){try{return JSON.stringify(o,null,2)}catch{return""}}const VERSION_PATTERN_REGEXP=/^([\d^=v<>~]|[*xX]$)/;function isRequiredVersion(o){return VERSION_PATTERN_REGEXP.test(o)}const simpleJoinRemoteEntry=(o,i)=>{if(!o)return i;const u=(p=>{if(p===".")return"";if(p.startsWith("./"))return p.replace("./","");if(p.startsWith("/")){const S=p.slice(1);return S.endsWith("/")?S.slice(0,-1):S}return p})(o);return u?u.endsWith("/")?`${u}${i}`:`${u}/${i}`:i};function inferAutoPublicPath(o){return o.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/")}function generateSnapshotFromManifest(o,i={}){var d,u;const{remotes:p={},overrides:S={},version:b}=i;let m;const R=()=>"publicPath"in o.metaData?o.metaData.publicPath==="auto"&&b?inferAutoPublicPath(b):o.metaData.publicPath:o.metaData.getPublicPath,T=Object.keys(S);let w={};if(!Object.keys(p).length){var L;w=((L=o.remotes)==null?void 0:L.reduce((v,x)=>{let C;const te=x.federationContainerName;return T.includes(te)?C=S[te]:"version"in x?C=x.version:C=x.entry,v[te]={matchedVersion:C},v},{}))||{}}Object.keys(p).forEach(v=>w[v]={matchedVersion:T.includes(v)?S[v]:p[v]});const{remoteEntry:{path:O,name:G,type:Y},types:V,buildInfo:{buildVersion:le},globalName:Z,ssrRemoteEntry:B}=o.metaData,{exposes:ce}=o;let ee={version:b||"",buildVersion:le,globalName:Z,remoteEntry:simpleJoinRemoteEntry(O,G),remoteEntryType:Y,remoteTypes:simpleJoinRemoteEntry(V.path,V.name),remoteTypesZip:V.zip||"",remoteTypesAPI:V.api||"",remotesInfo:w,shared:o==null?void 0:o.shared.map(v=>({assets:v.assets,sharedName:v.name,version:v.version})),modules:ce==null?void 0:ce.map(v=>({moduleName:v.name,modulePath:v.path,assets:v.assets}))};if((d=o.metaData)!=null&&d.prefetchInterface){const v=o.metaData.prefetchInterface;ee=polyfills._extends({},ee,{prefetchInterface:v})}if((u=o.metaData)!=null&&u.prefetchEntry){const{path:v,name:x,type:C}=o.metaData.prefetchEntry;ee=polyfills._extends({},ee,{prefetchEntry:simpleJoinRemoteEntry(v,x),prefetchEntryType:C})}if("publicPath"in o.metaData?m=polyfills._extends({},ee,{publicPath:R()}):m=polyfills._extends({},ee,{getPublicPath:R()}),B){const v=simpleJoinRemoteEntry(B.path,B.name);m.ssrRemoteEntry=v,m.ssrRemoteEntryType=B.type||"commonjs-module"}return m}function isManifestProvider(o){return!!("remoteEntry"in o&&o.remoteEntry.includes(MANIFEST_EXT))}async function safeWrapper(o,i){try{return await o()}catch(d){!i&&warn(d);return}}function isStaticResourcesEqual(o,i){const d=/^(https?:)?\/\//i,u=o.replace(d,"").replace(/\/$/,""),p=i.replace(d,"").replace(/\/$/,"");return u===p}function createScript(o){let i=null,d=!0,u=2e4,p;const S=document.getElementsByTagName("script");for(let m=0;m<S.length;m++){const R=S[m],T=R.getAttribute("src");if(T&&isStaticResourcesEqual(T,o.url)){i=R,d=!1;break}}if(!i){const m=o.attrs;i=document.createElement("script"),i.type=(m==null?void 0:m.type)==="module"?"module":"text/javascript";let R;o.createScriptHook&&(R=o.createScriptHook(o.url,o.attrs),R instanceof HTMLScriptElement?i=R:typeof R=="object"&&("script"in R&&R.script&&(i=R.script),"timeout"in R&&R.timeout&&(u=R.timeout))),i.src||(i.src=o.url),m&&!R&&Object.keys(m).forEach(T=>{i&&(T==="async"||T==="defer"?i[T]=m[T]:i.getAttribute(T)||i.setAttribute(T,m[T]))})}const b=async(m,R)=>{clearTimeout(p);const T=()=>{(R==null?void 0:R.type)==="error"?o!=null&&o.onErrorCallback&&(o==null||o.onErrorCallback(R)):o!=null&&o.cb&&(o==null||o.cb())};if(i&&(i.onerror=null,i.onload=null,safeWrapper(()=>{const{needDeleteScript:w=!0}=o;w&&i!=null&&i.parentNode&&i.parentNode.removeChild(i)}),m&&typeof m=="function")){const w=m(R);if(w instanceof Promise){const L=await w;return T(),L}return T(),w}T()};return i.onerror=b.bind(null,i.onerror),i.onload=b.bind(null,i.onload),p=setTimeout(()=>{b(null,new Error(`Remote script "${o.url}" time-outed.`))},u),{script:i,needAttach:d}}function createLink(o){let i=null,d=!0;const u=document.getElementsByTagName("link");for(let S=0;S<u.length;S++){const b=u[S],m=b.getAttribute("href"),R=b.getAttribute("ref");if(m&&isStaticResourcesEqual(m,o.url)&&R===o.attrs.ref){i=b,d=!1;break}}if(!i){i=document.createElement("link"),i.setAttribute("href",o.url);let S;const b=o.attrs;o.createLinkHook&&(S=o.createLinkHook(o.url,b),S instanceof HTMLLinkElement&&(i=S)),b&&!S&&Object.keys(b).forEach(m=>{i&&!i.getAttribute(m)&&i.setAttribute(m,b[m])})}const p=(S,b)=>{const m=()=>{(b==null?void 0:b.type)==="error"?o!=null&&o.onErrorCallback&&(o==null||o.onErrorCallback(b)):o!=null&&o.cb&&(o==null||o.cb())};if(i&&(i.onerror=null,i.onload=null,safeWrapper(()=>{const{needDeleteLink:R=!0}=o;R&&i!=null&&i.parentNode&&i.parentNode.removeChild(i)}),S)){const R=S(b);return m(),R}m()};return i.onerror=p.bind(null,i.onerror),i.onload=p.bind(null,i.onload),{link:i,needAttach:d}}function loadScript(o,i){const{attrs:d={},createScriptHook:u}=i;return new Promise((p,S)=>{const{script:b,needAttach:m}=createScript({url:o,cb:p,onErrorCallback:S,attrs:polyfills._extends({fetchpriority:"high"},d),createScriptHook:u,needDeleteScript:!0});m&&document.head.appendChild(b)})}function importNodeModule(o){if(!o)throw new Error("import specifier is required");return new Function("name","return import(name)")(o).then(d=>d).catch(d=>{throw console.error(`Error importing module ${o}:`,d),d})}const loadNodeFetch=async()=>{const o=await importNodeModule("node-fetch");return o.default||o},lazyLoaderHookFetch=async(o,i,d)=>{const p=await((S,b)=>d.lifecycle.fetch.emit(S,b))(o,i||{});return!p||!(p instanceof Response)?(typeof fetch>"u"?await loadNodeFetch():fetch)(o,i||{}):p};function createScriptNode(url,cb,attrs,loaderHook){if(loaderHook!=null&&loaderHook.createScriptHook){const o=loaderHook.createScriptHook(url);o&&typeof o=="object"&&"url"in o&&(url=o.url)}let urlObj;try{urlObj=new URL(url)}catch(o){console.error("Error constructing URL:",o),cb(new Error(`Invalid URL: ${o}`));return}const getFetch=async()=>loaderHook!=null&&loaderHook.fetch?(o,i)=>lazyLoaderHookFetch(o,i,loaderHook):typeof fetch>"u"?loadNodeFetch():fetch,handleScriptFetch=async(f,urlObj)=>{try{var _vm_constants;const res=await f(urlObj.href),data=await res.text(),[path,vm]=await Promise.all([importNodeModule("path"),importNodeModule("vm")]),scriptContext={exports:{},module:{exports:{}}},urlDirname=urlObj.pathname.split("/").slice(0,-1).join("/"),filename=path.basename(urlObj.pathname);var _vm_constants_USE_MAIN_CONTEXT_DEFAULT_LOADER;const script=new vm.Script(`(function(exports, module, require, __dirname, __filename) {${data}
7
+ })`,{filename,importModuleDynamically:(_vm_constants_USE_MAIN_CONTEXT_DEFAULT_LOADER=(_vm_constants=vm.constants)==null?void 0:_vm_constants.USE_MAIN_CONTEXT_DEFAULT_LOADER)!=null?_vm_constants_USE_MAIN_CONTEXT_DEFAULT_LOADER:importNodeModule});script.runInThisContext()(scriptContext.exports,scriptContext.module,eval("require"),urlDirname,filename);const exportedInterface=scriptContext.module.exports||scriptContext.exports;if(attrs&&exportedInterface&&attrs.globalName){const o=exportedInterface[attrs.globalName]||exportedInterface;cb(void 0,o);return}cb(void 0,exportedInterface)}catch(o){cb(o instanceof Error?o:new Error(`Script execution error: ${o}`))}};getFetch().then(async o=>{if((attrs==null?void 0:attrs.type)==="esm"||(attrs==null?void 0:attrs.type)==="module")return loadModule(urlObj.href,{fetch:o,vm:await importNodeModule("vm")}).then(async i=>{await i.evaluate(),cb(void 0,i.namespace)}).catch(i=>{cb(i instanceof Error?i:new Error(`Script execution error: ${i}`))});handleScriptFetch(o,urlObj)}).catch(o=>{cb(o)})}function loadScriptNode(o,i){return new Promise((d,u)=>{createScriptNode(o,(p,S)=>{if(p)u(p);else{var b,m;const R=(i==null||(b=i.attrs)==null?void 0:b.globalName)||`__FEDERATION_${i==null||(m=i.attrs)==null?void 0:m.name}:custom__`,T=globalThis[R]=S;d(T)}},i.attrs,i.loaderHook)})}async function loadModule(o,i){const{fetch:d,vm:u}=i,S=await(await d(o)).text(),b=new u.SourceTextModule(S,{importModuleDynamically:async(m,R)=>{const T=new URL(m,o).href;return loadModule(T,i)}});return await b.link(async m=>{const R=new URL(m,o).href;return await loadModule(R,i)}),b}function normalizeOptions(o,i,d){return function(u){if(u===!1)return!1;if(typeof u>"u")return o?i:!1;if(u===!0)return i;if(u&&typeof u=="object")return polyfills._extends({},i,u);throw new Error(`Unexpected type for \`${d}\`, expect boolean/undefined/object, got: ${typeof u}`)}}index_cjs$1.BROWSER_LOG_KEY=BROWSER_LOG_KEY;index_cjs$1.BROWSER_LOG_VALUE=BROWSER_LOG_VALUE;index_cjs$1.ENCODE_NAME_PREFIX=ENCODE_NAME_PREFIX;index_cjs$1.EncodedNameTransformMap=EncodedNameTransformMap;index_cjs$1.FederationModuleManifest=FederationModuleManifest;index_cjs$1.MANIFEST_EXT=MANIFEST_EXT;index_cjs$1.MFModuleType=MFModuleType;index_cjs$1.MFPrefetchCommon=MFPrefetchCommon;index_cjs$1.MODULE_DEVTOOL_IDENTIFIER=MODULE_DEVTOOL_IDENTIFIER;index_cjs$1.ManifestFileName=ManifestFileName;index_cjs$1.NameTransformMap=NameTransformMap;index_cjs$1.NameTransformSymbol=NameTransformSymbol;index_cjs$1.SEPARATOR=SEPARATOR;index_cjs$1.StatsFileName=StatsFileName;index_cjs$1.TEMP_DIR=TEMP_DIR;index_cjs$1.assert=assert;index_cjs$1.composeKeyWithSeparator=composeKeyWithSeparator;index_cjs$1.containerPlugin=ContainerPlugin;index_cjs$1.containerReferencePlugin=ContainerReferencePlugin;index_cjs$1.createLink=createLink;index_cjs$1.createLogger=createLogger;index_cjs$1.createScript=createScript;index_cjs$1.createScriptNode=createScriptNode;index_cjs$1.decodeName=decodeName;index_cjs$1.encodeName=encodeName;index_cjs$1.error=error;index_cjs$1.generateExposeFilename=generateExposeFilename;index_cjs$1.generateShareFilename=generateShareFilename;index_cjs$1.generateSnapshotFromManifest=generateSnapshotFromManifest;index_cjs$1.getProcessEnv=getProcessEnv;index_cjs$1.getResourceUrl=getResourceUrl;index_cjs$1.inferAutoPublicPath=inferAutoPublicPath;index_cjs$1.isBrowserEnv=isBrowserEnv;index_cjs$1.isDebugMode=isDebugMode;index_cjs$1.isManifestProvider=isManifestProvider;index_cjs$1.isRequiredVersion=isRequiredVersion;index_cjs$1.isStaticResourcesEqual=isStaticResourcesEqual;index_cjs$1.loadScript=loadScript;index_cjs$1.loadScriptNode=loadScriptNode;index_cjs$1.logger=logger;index_cjs$1.moduleFederationPlugin=ModuleFederationPlugin;index_cjs$1.normalizeOptions=normalizeOptions;index_cjs$1.parseEntry=parseEntry;index_cjs$1.safeToString=safeToString;index_cjs$1.safeWrapper=safeWrapper;index_cjs$1.sharePlugin=SharePlugin;index_cjs$1.simpleJoinRemoteEntry=simpleJoinRemoteEntry;index_cjs$1.warn=warn;var index_cjs={};const RUNTIME_001="RUNTIME-001",RUNTIME_002="RUNTIME-002",RUNTIME_003="RUNTIME-003",RUNTIME_004="RUNTIME-004",RUNTIME_005="RUNTIME-005",RUNTIME_006="RUNTIME-006",RUNTIME_007="RUNTIME-007",RUNTIME_008="RUNTIME-008",TYPE_001="TYPE-001",BUILD_001="BUILD-001",getDocsUrl=o=>`https://module-federation.io/guide/troubleshooting/${o.split("-")[0].toLowerCase()}/${o}`,getShortErrorMsg=(o,i,d,u)=>{const p=[`${[i[o]]} #${o}`];return d&&p.push(`args: ${JSON.stringify(d)}`),p.push(getDocsUrl(o)),u&&p.push(`Original Error Message:
8
+ ${u}`),p.join(`
9
+ `)};function _extends(){return _extends=Object.assign||function(i){for(var d=1;d<arguments.length;d++){var u=arguments[d];for(var p in u)Object.prototype.hasOwnProperty.call(u,p)&&(i[p]=u[p])}return i},_extends.apply(this,arguments)}const runtimeDescMap={[RUNTIME_001]:"Failed to get remoteEntry exports.",[RUNTIME_002]:'The remote entry interface does not contain "init"',[RUNTIME_003]:"Failed to get manifest.",[RUNTIME_004]:"Failed to locate remote.",[RUNTIME_005]:"Invalid loadShareSync function call from bundler runtime",[RUNTIME_006]:"Invalid loadShareSync function call from runtime",[RUNTIME_007]:"Failed to get remote snapshot.",[RUNTIME_008]:"Failed to load script resources."},typeDescMap={[TYPE_001]:"Failed to generate type declaration."},buildDescMap={[BUILD_001]:"Failed to find expose module."},errorDescMap=_extends({},runtimeDescMap,typeDescMap,buildDescMap);index_cjs.BUILD_001=BUILD_001;index_cjs.RUNTIME_001=RUNTIME_001;index_cjs.RUNTIME_002=RUNTIME_002;index_cjs.RUNTIME_003=RUNTIME_003;index_cjs.RUNTIME_004=RUNTIME_004;index_cjs.RUNTIME_005=RUNTIME_005;index_cjs.RUNTIME_006=RUNTIME_006;index_cjs.RUNTIME_007=RUNTIME_007;index_cjs.RUNTIME_008=RUNTIME_008;index_cjs.TYPE_001=TYPE_001;index_cjs.buildDescMap=buildDescMap;index_cjs.errorDescMap=errorDescMap;index_cjs.getShortErrorMsg=getShortErrorMsg;index_cjs.runtimeDescMap=runtimeDescMap;index_cjs.typeDescMap=typeDescMap;(function(o){var i=polyfills_cjs$1,d=index_cjs$1,u=index_cjs;const p="[ Federation Runtime ]",S=d.createLogger(p);function b(t,e){t||m(e)}function m(t){throw t instanceof Error?(t.message=`${p}: ${t.message}`,t):new Error(`${p}: ${t}`)}function R(t){t instanceof Error&&(t.message=`${p}: ${t.message}`),S.warn(t)}function T(t,e){return t.findIndex(r=>r===e)===-1&&t.push(e),t}function w(t){return"version"in t&&t.version?`${t.name}:${t.version}`:"entry"in t&&t.entry?`${t.name}:${t.entry}`:`${t.name}`}function L(t){return typeof t.entry<"u"}function O(t){return!t.entry.includes(".json")&&t.entry.includes(".js")}async function G(t,e){try{return await t()}catch(r){!e&&R(r);return}}function Y(t){return t&&typeof t=="object"}const V=Object.prototype.toString;function le(t){return V.call(t)==="[object Object]"}function Z(t,e){const r=/^(https?:)?\/\//i,n=t.replace(r,"").replace(/\/$/,""),s=e.replace(r,"").replace(/\/$/,"");return n===s}function B(t){return Array.isArray(t)?t:[t]}function ce(t){const e={url:"",type:"global",globalName:""};return d.isBrowserEnv()?"remoteEntry"in t?{url:t.remoteEntry,type:t.remoteEntryType,globalName:t.globalName}:e:"ssrRemoteEntry"in t?{url:t.ssrRemoteEntry||e.url,type:t.ssrRemoteEntryType||e.type,globalName:t.globalName}:e}const ee=(t,e)=>{let r;return t.endsWith("/")?r=t.slice(0,-1):r=t,e.startsWith(".")&&(e=e.slice(1)),r=r+e,r},v=typeof globalThis=="object"?globalThis:window,x=(()=>{try{return document.defaultView}catch{return v}})(),C=x;function te(t,e,r){Object.defineProperty(t,e,{value:r,configurable:!1,writable:!0})}function ye(t,e){return Object.hasOwnProperty.call(t,e)}ye(v,"__GLOBAL_LOADING_REMOTE_ENTRY__")||te(v,"__GLOBAL_LOADING_REMOTE_ENTRY__",{});const re=v.__GLOBAL_LOADING_REMOTE_ENTRY__;function xe(t){var e,r,n,s,c,a;ye(t,"__VMOK__")&&!ye(t,"__FEDERATION__")&&te(t,"__FEDERATION__",t.__VMOK__),ye(t,"__FEDERATION__")||(te(t,"__FEDERATION__",{__GLOBAL_PLUGIN__:[],__INSTANCES__:[],moduleInfo:{},__SHARE__:{},__MANIFEST_LOADING__:{},__PRELOADED_MAP__:new Map}),te(t,"__VMOK__",t.__FEDERATION__));var l;(l=(e=t.__FEDERATION__).__GLOBAL_PLUGIN__)!=null||(e.__GLOBAL_PLUGIN__=[]);var h;(h=(r=t.__FEDERATION__).__INSTANCES__)!=null||(r.__INSTANCES__=[]);var _;(_=(n=t.__FEDERATION__).moduleInfo)!=null||(n.moduleInfo={});var g;(g=(s=t.__FEDERATION__).__SHARE__)!=null||(s.__SHARE__={});var y;(y=(c=t.__FEDERATION__).__MANIFEST_LOADING__)!=null||(c.__MANIFEST_LOADING__={});var E;(E=(a=t.__FEDERATION__).__PRELOADED_MAP__)!=null||(a.__PRELOADED_MAP__=new Map)}xe(v),xe(x);function je(){v.__FEDERATION__.__GLOBAL_PLUGIN__=[],v.__FEDERATION__.__INSTANCES__=[],v.__FEDERATION__.moduleInfo={},v.__FEDERATION__.__SHARE__={},v.__FEDERATION__.__MANIFEST_LOADING__={},Object.keys(re).forEach(t=>{delete re[t]})}function ke(t){v.__FEDERATION__.__INSTANCES__.push(t)}function Ce(){return v.__FEDERATION__.__DEBUG_CONSTRUCTOR__}function He(t,e=d.isDebugMode()){e&&(v.__FEDERATION__.__DEBUG_CONSTRUCTOR__=t,v.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__="0.6.20")}function ne(t,e){if(typeof e=="string"){if(t[e])return{value:t[e],key:e};{const n=Object.keys(t);for(const s of n){const[c,a]=s.split(":"),l=`${c}:${e}`,h=t[l];if(h)return{value:h,key:l}}return{value:void 0,key:e}}}else throw new Error("key must be string")}const ge=()=>x.__FEDERATION__.moduleInfo,Ue=(t,e)=>{const r=w(t),n=ne(e,r).value;if(n&&!n.version&&"version"in t&&t.version&&(n.version=t.version),n)return n;if("version"in t&&t.version){const{version:s}=t,c=i._object_without_properties_loose(t,["version"]),a=w(c),l=ne(x.__FEDERATION__.moduleInfo,a).value;if((l==null?void 0:l.version)===s)return l}},ue=t=>Ue(t,x.__FEDERATION__.moduleInfo),$e=(t,e)=>{const r=w(t);return x.__FEDERATION__.moduleInfo[r]=e,x.__FEDERATION__.moduleInfo},Ne=t=>(x.__FEDERATION__.moduleInfo=i._extends({},x.__FEDERATION__.moduleInfo,t),()=>{const e=Object.keys(t);for(const r of e)delete x.__FEDERATION__.moduleInfo[r]}),fe=(t,e)=>{const r=e||`__FEDERATION_${t}:custom__`,n=v[r];return{remoteEntryKey:r,entryExports:n}},Ge=t=>{const{__GLOBAL_PLUGIN__:e}=x.__FEDERATION__;t.forEach(r=>{e.findIndex(n=>n.name===r.name)===-1?e.push(r):R(`The plugin ${r.name} has been registered.`)})},Be=()=>x.__FEDERATION__.__GLOBAL_PLUGIN__,Ve=t=>v.__FEDERATION__.__PRELOADED_MAP__.get(t),We=t=>v.__FEDERATION__.__PRELOADED_MAP__.set(t,!0),de="default",Xe="global",Ke="[0-9A-Za-z-]+",Ie=`(?:\\+(${Ke}(?:\\.${Ke})*))`,he="0|[1-9]\\d*",be="[0-9]+",qe="\\d*[a-zA-Z-][a-zA-Z0-9-]*",Ye=`(?:${be}|${qe})`,dt=`(?:-?(${Ye}(?:\\.${Ye})*))`,ze=`(?:${he}|${qe})`,Je=`(?:-(${ze}(?:\\.${ze})*))`,Te=`${he}|x|X|\\*`,ie=`[v=\\s]*(${Te})(?:\\.(${Te})(?:\\.(${Te})(?:${Je})?${Ie}?)?)?`,ht=`^\\s*(${ie})\\s+-\\s+(${ie})\\s*$`,_t=`[v=\\s]*${`(${be})\\.(${be})\\.(${be})`}${dt}?${Ie}?`,Oe="((?:<|>)?=?)",pt=`(\\s*)${Oe}\\s*(${_t}|${ie})`,Ze="(?:~>?)",mt=`(\\s*)${Ze}\\s+`,Qe="(?:\\^)",Et=`(\\s*)${Qe}\\s+`,yt="(<|>)?=?\\s*\\*",gt=`^${Qe}${ie}$`,bt=`v?${`(${he})\\.(${he})\\.(${he})`}${Je}?${Ie}?`,St=`^${Ze}${ie}$`,Rt=`^${Oe}\\s*${ie}$`,vt=`^${Oe}\\s*(${bt})$|^$`,$t="^\\s*>=\\s*0.0.0\\s*$";function z(t){return new RegExp(t)}function j(t){return!t||t.toLowerCase()==="x"||t==="*"}function et(...t){return e=>t.reduce((r,n)=>n(r),e)}function tt(t){return t.match(z(vt))}function rt(t,e,r,n){const s=`${t}.${e}.${r}`;return n?`${s}-${n}`:s}function Nt(t){return t.replace(z(ht),(e,r,n,s,c,a,l,h,_,g,y,E)=>(j(n)?r="":j(s)?r=`>=${n}.0.0`:j(c)?r=`>=${n}.${s}.0`:r=`>=${r}`,j(_)?h="":j(g)?h=`<${Number(_)+1}.0.0-0`:j(y)?h=`<${_}.${Number(g)+1}.0-0`:E?h=`<=${_}.${g}.${y}-${E}`:h=`<=${h}`,`${r} ${h}`.trim()))}function It(t){return t.replace(z(pt),"$1$2$3")}function Tt(t){return t.replace(z(mt),"$1~")}function Ot(t){return t.replace(z(Et),"$1^")}function Mt(t){return t.trim().split(/\s+/).map(e=>e.replace(z(gt),(r,n,s,c,a)=>j(n)?"":j(s)?`>=${n}.0.0 <${Number(n)+1}.0.0-0`:j(c)?n==="0"?`>=${n}.${s}.0 <${n}.${Number(s)+1}.0-0`:`>=${n}.${s}.0 <${Number(n)+1}.0.0-0`:a?n==="0"?s==="0"?`>=${n}.${s}.${c}-${a} <${n}.${s}.${Number(c)+1}-0`:`>=${n}.${s}.${c}-${a} <${n}.${Number(s)+1}.0-0`:`>=${n}.${s}.${c}-${a} <${Number(n)+1}.0.0-0`:n==="0"?s==="0"?`>=${n}.${s}.${c} <${n}.${s}.${Number(c)+1}-0`:`>=${n}.${s}.${c} <${n}.${Number(s)+1}.0-0`:`>=${n}.${s}.${c} <${Number(n)+1}.0.0-0`)).join(" ")}function Pt(t){return t.trim().split(/\s+/).map(e=>e.replace(z(St),(r,n,s,c,a)=>j(n)?"":j(s)?`>=${n}.0.0 <${Number(n)+1}.0.0-0`:j(c)?`>=${n}.${s}.0 <${n}.${Number(s)+1}.0-0`:a?`>=${n}.${s}.${c}-${a} <${n}.${Number(s)+1}.0-0`:`>=${n}.${s}.${c} <${n}.${Number(s)+1}.0-0`)).join(" ")}function At(t){return t.split(/\s+/).map(e=>e.trim().replace(z(Rt),(r,n,s,c,a,l)=>{const h=j(s),_=h||j(c),g=_||j(a);return n==="="&&g&&(n=""),l="",h?n===">"||n==="<"?"<0.0.0-0":"*":n&&g?(_&&(c=0),a=0,n===">"?(n=">=",_?(s=Number(s)+1,c=0,a=0):(c=Number(c)+1,a=0)):n==="<="&&(n="<",_?s=Number(s)+1:c=Number(c)+1),n==="<"&&(l="-0"),`${n+s}.${c}.${a}${l}`):_?`>=${s}.0.0${l} <${Number(s)+1}.0.0-0`:g?`>=${s}.${c}.0${l} <${s}.${Number(c)+1}.0-0`:r})).join(" ")}function wt(t){return t.trim().replace(z(yt),"")}function Lt(t){return t.trim().replace(z($t),"")}function Se(t,e){return t=Number(t)||t,e=Number(e)||e,t>e?1:t===e?0:-1}function Dt(t,e){const{preRelease:r}=t,{preRelease:n}=e;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 s=0,c=r.length;s<=c;s++){const a=r[s],l=n[s];if(a!==l)return a===void 0&&l===void 0?0:a?l?Se(a,l):-1:1}return 0}function Re(t,e){return Se(t.major,e.major)||Se(t.minor,e.minor)||Se(t.patch,e.patch)||Dt(t,e)}function Me(t,e){return t.version===e.version}function Ft(t,e){switch(t.operator){case"":case"=":return Me(t,e);case">":return Re(t,e)<0;case">=":return Me(t,e)||Re(t,e)<0;case"<":return Re(t,e)>0;case"<=":return Me(t,e)||Re(t,e)>0;case void 0:return!0;default:return!1}}function xt(t){return et(Mt,Pt,At,wt)(t)}function jt(t){return et(Nt,It,Tt,Ot)(t.trim()).split(/\s+/).join(" ")}function _e(t,e){if(!t)return!1;const s=jt(e).split(" ").map(E=>xt(E)).join(" ").split(/\s+/).map(E=>Lt(E)),c=tt(t);if(!c)return!1;const[,a,,l,h,_,g]=c,y={version:rt(l,h,_,g),major:l,minor:h,patch:_,preRelease:g==null?void 0:g.split(".")};for(const E of s){const $=tt(E);if(!$)return!1;const[,I,,P,N,M,F]=$,A={operator:I,version:rt(P,N,M,F),major:P,minor:N,patch:M,preRelease:F==null?void 0:F.split(".")};if(!Ft(A,y))return!1}return!0}function kt(t,e,r,n){let s;"get"in t?s=t.get:"lib"in t?s=()=>Promise.resolve(t.lib):s=()=>Promise.resolve(()=>{throw new Error(`Can not get shared '${r}'!`)}),t.strategy&&R('"shared.strategy is deprecated, please set in initOptions.shareStrategy instead!"');var c,a,l;return i._extends({deps:[],useIn:[],from:e,loading:null},t,{shareConfig:i._extends({requiredVersion:`^${t.version}`,singleton:!1,eager:!1,strictVersion:!1},t.shareConfig),get:s,loaded:t!=null&&t.loaded||"lib"in t?!0:void 0,version:(c=t.version)!=null?c:"0",scope:Array.isArray(t.scope)?t.scope:[(a=t.scope)!=null?a:"default"],strategy:((l=t.strategy)!=null?l:n)||"version-first"})}function nt(t,e){const r=e.shared||{},n=e.name,s=Object.keys(r).reduce((a,l)=>{const h=B(r[l]);return a[l]=a[l]||[],h.forEach(_=>{a[l].push(kt(_,n,l,e.shareStrategy))}),a},{}),c=i._extends({},t.shared);return Object.keys(s).forEach(a=>{c[a]?s[a].forEach(l=>{c[a].find(_=>_.version===l.version)||c[a].push(l)}):c[a]=s[a]}),{shared:c,shareInfos:s}}function pe(t,e){const r=n=>{if(!Number.isNaN(Number(n))){const c=n.split(".");let a=n;for(let l=0;l<3-c.length;l++)a+=".0";return a}return n};return!!_e(r(t),`<=${r(e)}`)}const Pe=(t,e)=>{const r=e||function(n,s){return pe(n,s)};return Object.keys(t).reduce((n,s)=>!n||r(n,s)||n==="0"?s:n,0)},Ae=t=>!!t.loaded||typeof t.lib=="function",Ct=t=>!!t.loading;function Ht(t,e,r){const n=t[e][r],s=function(c,a){return!Ae(n[c])&&pe(c,a)};return Pe(t[e][r],s)}function Ut(t,e,r){const n=t[e][r],s=function(c,a){const l=h=>Ae(h)||Ct(h);return l(n[a])?l(n[c])?!!pe(c,a):!0:l(n[c])?!1:pe(c,a)};return Pe(t[e][r],s)}function Gt(t){return t==="loaded-first"?Ut:Ht}function oe(t,e,r,n){if(!t)return;const{shareConfig:s,scope:c=de,strategy:a}=r,l=Array.isArray(c)?c:[c];for(const h of l)if(s&&t[h]&&t[h][e]){const{requiredVersion:_}=s,y=Gt(a)(t,h,e),E=()=>{if(s.singleton){if(typeof _=="string"&&!_e(y,_)){const P=`Version ${y} from ${y&&t[h][e][y].from} of shared singleton module ${e} does not satisfy the requirement of ${r.from} which needs ${_})`;s.strictVersion?m(P):R(P)}return t[h][e][y]}else{if(_===!1||_==="*"||_e(y,_))return t[h][e][y];for(const[P,N]of Object.entries(t[h][e]))if(_e(P,_))return N}},$={shareScopeMap:t,scope:h,pkgName:e,version:y,GlobalFederation:C.__FEDERATION__,resolver:E};return(n.emit($)||$).resolver()}}function we(){return C.__FEDERATION__.__SHARE__}function ot(t){const{pkgName:e,extraOptions:r,shareInfos:n}=t,s=l=>{if(!l)return;const h={};l.forEach(y=>{h[y.version]=y});const g=Pe(h,function(y,E){return!Ae(h[y])&&pe(y,E)});return h[g]};var c;const a=(c=r==null?void 0:r.resolver)!=null?c:s;return Object.assign({},a(n[e]),r==null?void 0:r.customShareInfo)}var Bt={global:{Global:C,nativeGlobal:x,resetFederationGlobalInfo:je,setGlobalFederationInstance:ke,getGlobalFederationConstructor:Ce,setGlobalFederationConstructor:He,getInfoWithoutType:ne,getGlobalSnapshot:ge,getTargetSnapshotInfoByModuleInfo:Ue,getGlobalSnapshotInfoByModuleInfo:ue,setGlobalSnapshotInfoByModuleInfo:$e,addGlobalSnapshot:Ne,getRemoteEntryExports:fe,registerGlobalPlugins:Ge,getGlobalHostPlugins:Be,getPreloaded:Ve,setPreloaded:We},share:{getRegisteredShare:oe,getGlobalShareScope:we}};function Vt(){return typeof FEDERATION_BUILD_IDENTIFIER<"u"?FEDERATION_BUILD_IDENTIFIER:""}function st(t,e){for(const r of t){const n=e.startsWith(r.name);let s=e.replace(r.name,"");if(n){if(s.startsWith("/")){const l=r.name;return s=`.${s}`,{pkgNameOrAlias:l,expose:s,remote:r}}else if(s==="")return{pkgNameOrAlias:r.name,expose:".",remote:r}}const c=r.alias&&e.startsWith(r.alias);let a=r.alias&&e.replace(r.alias,"");if(r.alias&&c){if(a&&a.startsWith("/")){const l=r.alias;return a=`.${a}`,{pkgNameOrAlias:l,expose:a,remote:r}}else if(a==="")return{pkgNameOrAlias:r.alias,expose:".",remote:r}}}}function Wt(t,e){for(const r of t)if(e===r.name||r.alias&&e===r.alias)return r}function Xt(t,e){const r=Be();return r.length>0&&r.forEach(n=>{t!=null&&t.find(s=>s.name!==n.name)&&t.push(n)}),t&&t.length>0&&t.forEach(n=>{e.forEach(s=>{s.applyPlugin(n)})}),t}async function Kt({entry:t,remoteEntryExports:e}){return new Promise((r,n)=>{try{e?r(e):typeof FEDERATION_ALLOW_NEW_FUNCTION<"u"?new Function("callbacks",`import("${t}").then(callbacks[0]).catch(callbacks[1])`)([r,n]):import(t).then(r).catch(n)}catch(s){n(s)}})}async function qt({entry:t,remoteEntryExports:e}){return new Promise((r,n)=>{try{e?r(e):typeof __system_context__>"u"?System.import(t).then(r).catch(n):new Function("callbacks",`System.import("${t}").then(callbacks[0]).catch(callbacks[1])`)([r,n])}catch(s){n(s)}})}async function Yt({name:t,globalName:e,entry:r,loaderHook:n}){const{entryExports:s}=fe(t,e);return s||d.loadScript(r,{attrs:{},createScriptHook:(c,a)=>{const l=n.lifecycle.createScript.emit({url:c,attrs:a});if(l&&(l instanceof HTMLScriptElement||"script"in l||"timeout"in l))return l}}).then(()=>{const{remoteEntryKey:c,entryExports:a}=fe(t,e);return b(a,u.getShortErrorMsg(u.RUNTIME_001,u.runtimeDescMap,{remoteName:t,remoteEntryUrl:r,remoteEntryKey:c})),a}).catch(c=>{throw b(void 0,u.getShortErrorMsg(u.RUNTIME_008,u.runtimeDescMap,{remoteName:t,resourceUrl:r})),c})}async function zt({remoteInfo:t,remoteEntryExports:e,loaderHook:r}){const{entry:n,entryGlobalName:s,name:c,type:a}=t;switch(a){case"esm":case"module":return Kt({entry:n,remoteEntryExports:e});case"system":return qt({entry:n,remoteEntryExports:e});default:return Yt({entry:n,globalName:s,name:c,loaderHook:r})}}async function Jt({remoteInfo:t,loaderHook:e}){const{entry:r,entryGlobalName:n,name:s,type:c}=t,{entryExports:a}=fe(s,n);return a||d.loadScriptNode(r,{attrs:{name:s,globalName:n,type:c},loaderHook:{createScriptHook:(l,h={})=>{const _=e.lifecycle.createScript.emit({url:l,attrs:h});if(_&&"url"in _)return _}}}).then(()=>{const{remoteEntryKey:l,entryExports:h}=fe(s,n);return b(h,u.getShortErrorMsg(u.RUNTIME_001,u.runtimeDescMap,{remoteName:s,remoteEntryUrl:r,remoteEntryKey:l})),h}).catch(l=>{throw l})}function Le(t){const{entry:e,name:r}=t;return d.composeKeyWithSeparator(r,e)}async function me({origin:t,remoteEntryExports:e,remoteInfo:r}){const n=Le(r);if(e)return e;if(!re[n]){const s=t.remoteHandler.hooks.lifecycle.loadEntry,c=t.loaderHook;re[n]=s.emit({loaderHook:c,remoteInfo:r,remoteEntryExports:e}).then(a=>a||(d.isBrowserEnv()?zt({remoteInfo:r,remoteEntryExports:e,loaderHook:c}):Jt({remoteInfo:r,loaderHook:c})))}return re[n]}function ve(t){return i._extends({},t,{entry:"entry"in t?t.entry:"",type:t.type||Xe,entryGlobalName:t.entryGlobalName||t.name,shareScope:t.shareScope||de})}let De=class{async getEntry(){if(this.remoteEntryExports)return this.remoteEntryExports;let e;try{e=await me({origin:this.host,remoteInfo:this.remoteInfo,remoteEntryExports:this.remoteEntryExports})}catch{const n=Le(this.remoteInfo);e=await this.host.loaderHook.lifecycle.loadEntryError.emit({getRemoteEntry:me,origin:this.host,remoteInfo:this.remoteInfo,remoteEntryExports:this.remoteEntryExports,globalLoading:re,uniqueKey:n})}return b(e,`remoteEntryExports is undefined
10
+ ${d.safeToString(this.remoteInfo)}`),this.remoteEntryExports=e,this.remoteEntryExports}async get(e,r,n,s){const{loadFactory:c=!0}=n||{loadFactory:!0},a=await this.getEntry();if(!this.inited){const y=this.host.shareScopeMap,E=this.remoteInfo.shareScope||"default";y[E]||(y[E]={});const $=y[E],I=[],P={version:this.remoteInfo.version||""};Object.defineProperty(P,"shareScopeMap",{value:y,enumerable:!1});const N=await this.host.hooks.lifecycle.beforeInitContainer.emit({shareScope:$,remoteEntryInitOptions:P,initScope:I,remoteInfo:this.remoteInfo,origin:this.host});typeof(a==null?void 0:a.init)>"u"&&m(u.getShortErrorMsg(u.RUNTIME_002,u.runtimeDescMap,{remoteName:name,remoteEntryUrl:this.remoteInfo.entry,remoteEntryKey:this.remoteInfo.entryGlobalName})),await a.init(N.shareScope,N.initScope,N.remoteEntryInitOptions),await this.host.hooks.lifecycle.initContainer.emit(i._extends({},N,{id:e,remoteSnapshot:s,remoteEntryExports:a}))}this.lib=a,this.inited=!0;let l;l=await this.host.loaderHook.lifecycle.getModuleFactory.emit({remoteEntryExports:a,expose:r,moduleInfo:this.remoteInfo}),l||(l=await a.get(r)),b(l,`${w(this.remoteInfo)} remote don't export ${r}.`);const h=ee(this.remoteInfo.name,r),_=this.wraperFactory(l,h);return c?await _():_}wraperFactory(e,r){function n(s,c){s&&typeof s=="object"&&Object.isExtensible(s)&&!Object.getOwnPropertyDescriptor(s,Symbol.for("mf_module_id"))&&Object.defineProperty(s,Symbol.for("mf_module_id"),{value:c,enumerable:!1})}return e instanceof Promise?async()=>{const s=await e();return n(s,r),s}:()=>{const s=e();return n(s,r),s}}constructor({remoteInfo:e,host:r}){this.inited=!1,this.lib=void 0,this.remoteInfo=e,this.host=r}};class W{on(e){typeof e=="function"&&this.listeners.add(e)}once(e){const r=this;this.on(function n(...s){return r.remove(n),e.apply(null,s)})}emit(...e){let r;return this.listeners.size>0&&this.listeners.forEach(n=>{r=n(...e)}),r}remove(e){this.listeners.delete(e)}removeAll(){this.listeners.clear()}constructor(e){this.type="",this.listeners=new Set,e&&(this.type=e)}}class K extends W{emit(...e){let r;const n=Array.from(this.listeners);if(n.length>0){let s=0;const c=a=>a===!1?!1:s<n.length?Promise.resolve(n[s++].apply(null,e)).then(c):a;r=c()}return Promise.resolve(r)}}function it(t,e){if(!Y(e))return!1;if(t!==e){for(const r in t)if(!(r in e))return!1}return!0}class Ee extends W{emit(e){Y(e)||m(`The data for the "${this.type}" hook should be an object.`);for(const r of this.listeners)try{const n=r(e);if(it(e,n))e=n;else{this.onerror(`A plugin returned an unacceptable value for the "${this.type}" type.`);break}}catch(n){R(n),this.onerror(n)}return e}constructor(e){super(),this.onerror=m,this.type=e}}class se extends W{emit(e){Y(e)||m(`The response data for the "${this.type}" hook must be an object.`);const r=Array.from(this.listeners);if(r.length>0){let n=0;const s=a=>(R(a),this.onerror(a),e),c=a=>{if(it(e,a)){if(e=a,n<r.length)try{return Promise.resolve(r[n++](e)).then(c,s)}catch(l){return s(l)}}else this.onerror(`A plugin returned an incorrect value for the "${this.type}" type.`);return e};return Promise.resolve(c(e))}return Promise.resolve(e)}constructor(e){super(),this.onerror=m,this.type=e}}class ae{applyPlugin(e){b(le(e),"Plugin configuration is invalid.");const r=e.name;b(r,"A name must be provided by the plugin."),this.registerPlugins[r]||(this.registerPlugins[r]=e,Object.keys(this.lifecycle).forEach(n=>{const s=e[n];s&&this.lifecycle[n].on(s)}))}removePlugin(e){b(e,"A name is required.");const r=this.registerPlugins[e];b(r,`The plugin "${e}" is not registered.`),Object.keys(r).forEach(n=>{n!=="name"&&this.lifecycle[n].remove(r[n])})}inherit({lifecycle:e,registerPlugins:r}){Object.keys(e).forEach(n=>{b(!this.lifecycle[n],`The hook "${n}" has a conflict and cannot be inherited.`),this.lifecycle[n]=e[n]}),Object.keys(r).forEach(n=>{b(!this.registerPlugins[n],`The plugin "${n}" has a conflict and cannot be inherited.`),this.applyPlugin(r[n])})}constructor(e){this.registerPlugins={},this.lifecycle=e,this.lifecycleKeys=Object.keys(e)}}function at(t){return i._extends({resourceCategory:"sync",share:!0,depsRemote:!0,prefetchInterface:!1},t)}function Zt(t,e){return e.map(r=>{const n=Wt(t,r.nameOrAlias);return b(n,`Unable to preload ${r.nameOrAlias} as it is not included in ${!n&&d.safeToString({remoteInfo:n,remotes:t})}`),{remote:n,preloadConfig:at(r)}})}function Qt(t){return t?t.map(e=>e==="."?e:e.startsWith("./")?e.replace("./",""):e):[]}function lt(t,e,r,n=!0){const{cssAssets:s,jsAssetsWithoutEntry:c,entryAssets:a}=r;if(e.options.inBrowser){if(a.forEach(l=>{const{moduleInfo:h}=l,_=e.moduleCache.get(t.name);me(_?{origin:e,remoteInfo:h,remoteEntryExports:_.remoteEntryExports}:{origin:e,remoteInfo:h,remoteEntryExports:void 0})}),n){const l={rel:"preload",as:"style"};s.forEach(h=>{const{link:_,needAttach:g}=d.createLink({url:h,cb:()=>{},attrs:l,createLinkHook:(y,E)=>{const $=e.loaderHook.lifecycle.createLink.emit({url:y,attrs:E});if($ instanceof HTMLLinkElement)return $}});g&&document.head.appendChild(_)})}else{const l={rel:"stylesheet",type:"text/css"};s.forEach(h=>{const{link:_,needAttach:g}=d.createLink({url:h,cb:()=>{},attrs:l,createLinkHook:(y,E)=>{const $=e.loaderHook.lifecycle.createLink.emit({url:y,attrs:E});if($ instanceof HTMLLinkElement)return $},needDeleteLink:!1});g&&document.head.appendChild(_)})}if(n){const l={rel:"preload",as:"script"};c.forEach(h=>{const{link:_,needAttach:g}=d.createLink({url:h,cb:()=>{},attrs:l,createLinkHook:(y,E)=>{const $=e.loaderHook.lifecycle.createLink.emit({url:y,attrs:E});if($ instanceof HTMLLinkElement)return $}});g&&document.head.appendChild(_)})}else{const l={fetchpriority:"high",type:(t==null?void 0:t.type)==="module"?"module":"text/javascript"};c.forEach(h=>{const{script:_,needAttach:g}=d.createScript({url:h,cb:()=>{},attrs:l,createScriptHook:(y,E)=>{const $=e.loaderHook.lifecycle.createScript.emit({url:y,attrs:E});if($ instanceof HTMLScriptElement)return $},needDeleteScript:!0});g&&document.head.appendChild(_)})}}}function ct(t,e){const r=ce(e);r.url||m(`The attribute remoteEntry of ${t.name} must not be undefined.`);let n=d.getResourceUrl(e,r.url);!d.isBrowserEnv()&&!n.startsWith("http")&&(n=`https:${n}`),t.type=r.type,t.entryGlobalName=r.globalName,t.entry=n,t.version=e.version,t.buildVersion=e.buildVersion}function er(){return{name:"snapshot-plugin",async afterResolve(t){const{remote:e,pkgNameOrAlias:r,expose:n,origin:s,remoteInfo:c}=t;if(!L(e)||!O(e)){const{remoteSnapshot:a,globalSnapshot:l}=await s.snapshotHandler.loadRemoteSnapshotInfo(e);ct(c,a);const h={remote:e,preloadConfig:{nameOrAlias:r,exposes:[n],resourceCategory:"sync",share:!1,depsRemote:!1}},_=await s.remoteHandler.hooks.lifecycle.generatePreloadAssets.emit({origin:s,preloadOptions:h,remoteInfo:c,remote:e,remoteSnapshot:a,globalSnapshot:l});return _&&lt(c,s,_,!1),i._extends({},t,{remoteSnapshot:a})}return t}}}function tr(t){const e=t.split(":");return e.length===1?{name:e[0],version:void 0}:e.length===2?{name:e[0],version:e[1]}:{name:e[1],version:e[2]}}function ut(t,e,r,n,s={},c){const a=w(e),{value:l}=ne(t,a),h=c||l;if(h&&!d.isManifestProvider(h)&&(r(h,e,n),h.remotesInfo)){const _=Object.keys(h.remotesInfo);for(const g of _){if(s[g])continue;s[g]=!0;const y=tr(g),E=h.remotesInfo[g];ut(t,{name:y.name,version:E.matchedVersion},r,!1,s,void 0)}}}function rr(t,e,r,n,s){const c=[],a=[],l=[],h=new Set,_=new Set,{options:g}=t,{preloadConfig:y}=e,{depsRemote:E}=y;if(ut(n,r,(N,M,F)=>{let A;if(F)A=y;else if(Array.isArray(E)){const q=E.find(X=>X.nameOrAlias===M.name||X.nameOrAlias===M.alias);if(!q)return;A=at(q)}else if(E===!0)A=y;else return;const D=d.getResourceUrl(N,ce(N).url);D&&l.push({name:M.name,moduleInfo:{name:M.name,entry:D,type:"remoteEntryType"in N?N.remoteEntryType:"global",entryGlobalName:"globalName"in N?N.globalName:M.name,shareScope:"",version:"version"in N?N.version:void 0},url:D});let H="modules"in N?N.modules:[];const U=Qt(A.exposes);if(U.length&&"modules"in N){var Q;H=N==null||(Q=N.modules)==null?void 0:Q.reduce((q,X)=>((U==null?void 0:U.indexOf(X.moduleName))!==-1&&q.push(X),q),[])}function k(q){const X=q.map(J=>d.getResourceUrl(N,J));return A.filter?X.filter(A.filter):X}if(H){const q=H.length;for(let X=0;X<q;X++){const J=H[X],Fe=`${M.name}/${J.moduleName}`;t.remoteHandler.hooks.lifecycle.handlePreloadModule.emit({id:J.moduleName==="."?M.name:Fe,name:M.name,remoteSnapshot:N,preloadConfig:A,remote:M,origin:t}),!Ve(Fe)&&(A.resourceCategory==="all"?(c.push(...k(J.assets.css.async)),c.push(...k(J.assets.css.sync)),a.push(...k(J.assets.js.async)),a.push(...k(J.assets.js.sync))):(A.resourceCategory="sync")&&(c.push(...k(J.assets.css.sync)),a.push(...k(J.assets.js.sync))),We(Fe))}}},!0,{},s),s.shared){const N=(M,F)=>{const A=oe(t.shareScopeMap,F.sharedName,M,t.sharedHandler.hooks.lifecycle.resolveShare);A&&typeof A.lib=="function"&&(F.assets.js.sync.forEach(D=>{h.add(D)}),F.assets.css.sync.forEach(D=>{_.add(D)}))};s.shared.forEach(M=>{var F;const A=(F=g.shared)==null?void 0:F[M.sharedName];if(!A)return;const D=M.version?A.find(U=>U.version===M.version):A;if(!D)return;B(D).forEach(U=>{N(U,M)})})}const I=a.filter(N=>!h.has(N));return{cssAssets:c.filter(N=>!_.has(N)),jsAssetsWithoutEntry:I,entryAssets:l}}const nr=function(){return{name:"generate-preload-assets-plugin",async generatePreloadAssets(t){const{origin:e,preloadOptions:r,remoteInfo:n,remote:s,globalSnapshot:c,remoteSnapshot:a}=t;return L(s)&&O(s)?{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[{name:s.name,url:s.entry,moduleInfo:{name:n.name,entry:s.entry,type:n.type||"global",entryGlobalName:"",shareScope:""}}]}:(ct(n,a),rr(e,r,n,c,a))}}};function ft(t,e){const r=ue({name:e.options.name,version:e.options.version}),n=r&&"remotesInfo"in r&&r.remotesInfo&&ne(r.remotesInfo,t.name).value;return n&&n.matchedVersion?{hostGlobalSnapshot:r,globalSnapshot:ge(),remoteSnapshot:ue({name:t.name,version:n.matchedVersion})}:{hostGlobalSnapshot:void 0,globalSnapshot:ge(),remoteSnapshot:ue({name:t.name,version:"version"in t?t.version:void 0})}}class or{async loadSnapshot(e){const{options:r}=this.HostInstance,{hostGlobalSnapshot:n,remoteSnapshot:s,globalSnapshot:c}=this.getGlobalRemoteInfo(e),{remoteSnapshot:a,globalSnapshot:l}=await this.hooks.lifecycle.loadSnapshot.emit({options:r,moduleInfo:e,hostGlobalSnapshot:n,remoteSnapshot:s,globalSnapshot:c});return{remoteSnapshot:a,globalSnapshot:l}}async loadRemoteSnapshotInfo(e){const{options:r}=this.HostInstance;await this.hooks.lifecycle.beforeLoadRemoteSnapshot.emit({options:r,moduleInfo:e});let n=ue({name:this.HostInstance.options.name,version:this.HostInstance.options.version});n||(n={version:this.HostInstance.options.version||"",remoteEntry:"",remotesInfo:{}},Ne({[this.HostInstance.options.name]:n})),n&&"remotesInfo"in n&&!ne(n.remotesInfo,e.name).value&&("version"in e||"entry"in e)&&(n.remotesInfo=i._extends({},n==null?void 0:n.remotesInfo,{[e.name]:{matchedVersion:"version"in e?e.version:e.entry}}));const{hostGlobalSnapshot:s,remoteSnapshot:c,globalSnapshot:a}=this.getGlobalRemoteInfo(e),{remoteSnapshot:l,globalSnapshot:h}=await this.hooks.lifecycle.loadSnapshot.emit({options:r,moduleInfo:e,hostGlobalSnapshot:s,remoteSnapshot:c,globalSnapshot:a});let _,g;if(l)if(d.isManifestProvider(l)){const y=d.isBrowserEnv()?l.remoteEntry:l.ssrRemoteEntry||l.remoteEntry||"",E=await this.getManifestJson(y,e,{}),$=$e(i._extends({},e,{entry:y}),E);_=E,g=$}else{const{remoteSnapshot:y}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:e,remoteSnapshot:l,from:"global"});_=y,g=h}else if(L(e)){const y=await this.getManifestJson(e.entry,e,{}),E=$e(e,y),{remoteSnapshot:$}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:e,remoteSnapshot:y,from:"global"});_=$,g=E}else m(u.getShortErrorMsg(u.RUNTIME_007,u.runtimeDescMap,{hostName:e.name,hostVersion:e.version,globalSnapshot:JSON.stringify(h)}));return await this.hooks.lifecycle.afterLoadSnapshot.emit({options:r,moduleInfo:e,remoteSnapshot:_}),{remoteSnapshot:_,globalSnapshot:g}}getGlobalRemoteInfo(e){return ft(e,this.HostInstance)}async getManifestJson(e,r,n){const s=async()=>{let a=this.manifestCache.get(e);if(a)return a;try{let l=await this.loaderHook.lifecycle.fetch.emit(e,{});(!l||!(l instanceof Response))&&(l=await fetch(e,{})),a=await l.json()}catch(l){a=await this.HostInstance.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:m,from:"runtime",lifecycle:"afterResolve",origin:this.HostInstance}),a||(delete this.manifestLoading[e],m(u.getShortErrorMsg(u.RUNTIME_003,u.runtimeDescMap,{manifestUrl:e,moduleName:r.name},`${l}`)))}return b(a.metaData&&a.exposes&&a.shared,`${e} is not a federation manifest`),this.manifestCache.set(e,a),a},c=async()=>{const a=await s(),l=d.generateSnapshotFromManifest(a,{version:e}),{remoteSnapshot:h}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:r,manifestJson:a,remoteSnapshot:l,manifestUrl:e,from:"manifest"});return h};return this.manifestLoading[e]||(this.manifestLoading[e]=c().then(a=>a)),this.manifestLoading[e]}constructor(e){this.loadingHostSnapshot=null,this.manifestCache=new Map,this.hooks=new ae({beforeLoadRemoteSnapshot:new K("beforeLoadRemoteSnapshot"),loadSnapshot:new se("loadGlobalSnapshot"),loadRemoteSnapshot:new se("loadRemoteSnapshot"),afterLoadSnapshot:new se("afterLoadSnapshot")}),this.manifestLoading=C.__FEDERATION__.__MANIFEST_LOADING__,this.HostInstance=e,this.loaderHook=e.loaderHook}}class sr{registerShared(e,r){const{shareInfos:n,shared:s}=nt(e,r);return Object.keys(n).forEach(a=>{n[a].forEach(h=>{!oe(this.shareScopeMap,a,h,this.hooks.lifecycle.resolveShare)&&h&&h.lib&&this.setShared({pkgName:a,lib:h.lib,get:h.get,loaded:!0,shared:h,from:r.name})})}),{shareInfos:n,shared:s}}async loadShare(e,r){const{host:n}=this,s=ot({pkgName:e,extraOptions:r,shareInfos:n.options.shared});s!=null&&s.scope&&await Promise.all(s.scope.map(async _=>{await Promise.all(this.initializeSharing(_,{strategy:s.strategy}))}));const c=await this.hooks.lifecycle.beforeLoadShare.emit({pkgName:e,shareInfo:s,shared:n.options.shared,origin:n}),{shareInfo:a}=c;b(a,`Cannot find ${e} Share in the ${n.options.name}. Please ensure that the ${e} Share parameters have been injected`);const l=oe(this.shareScopeMap,e,a,this.hooks.lifecycle.resolveShare),h=_=>{_.useIn||(_.useIn=[]),T(_.useIn,n.options.name)};if(l&&l.lib)return h(l),l.lib;if(l&&l.loading&&!l.loaded){const _=await l.loading;return l.loaded=!0,l.lib||(l.lib=_),h(l),_}else if(l){const g=(async()=>{const y=await l.get();a.lib=y,a.loaded=!0,h(a);const E=oe(this.shareScopeMap,e,a,this.hooks.lifecycle.resolveShare);return E&&(E.lib=y,E.loaded=!0),y})();return this.setShared({pkgName:e,loaded:!1,shared:l,from:n.options.name,lib:null,loading:g}),g}else{if(r!=null&&r.customShareInfo)return!1;const g=(async()=>{const y=await a.get();a.lib=y,a.loaded=!0,h(a);const E=oe(this.shareScopeMap,e,a,this.hooks.lifecycle.resolveShare);return E&&(E.lib=y,E.loaded=!0),y})();return this.setShared({pkgName:e,loaded:!1,shared:a,from:n.options.name,lib:null,loading:g}),g}}initializeSharing(e=de,r){const{host:n}=this,s=r==null?void 0:r.from,c=r==null?void 0:r.strategy;let a=r==null?void 0:r.initScope;const l=[];if(s!=="build"){const{initTokens:I}=this;a||(a=[]);let P=I[e];if(P||(P=I[e]={from:this.host.name}),a.indexOf(P)>=0)return l;a.push(P)}const h=this.shareScopeMap,_=n.options.name;h[e]||(h[e]={});const g=h[e],y=(I,P)=>{var N;const{version:M,eager:F}=P;g[I]=g[I]||{};const A=g[I],D=A[M],H=!!(D&&(D.eager||(N=D.shareConfig)!=null&&N.eager));(!D||D.strategy!=="loaded-first"&&!D.loaded&&(!F!=!H?F:_>D.from))&&(A[M]=P)},E=I=>I&&I.init&&I.init(h[e],a),$=async I=>{const{module:P}=await n.remoteHandler.getRemoteModuleAndOptions({id:I});if(P.getEntry){let N;try{N=await P.getEntry()}catch(M){N=await n.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:I,error:M,from:"runtime",lifecycle:"beforeLoadShare",origin:n})}P.inited||(await E(N),P.inited=!0)}};return Object.keys(n.options.shared).forEach(I=>{n.options.shared[I].forEach(N=>{N.scope.includes(e)&&y(I,N)})}),(n.options.shareStrategy==="version-first"||c==="version-first")&&n.options.remotes.forEach(I=>{I.shareScope===e&&l.push($(I.name))}),l}loadShareSync(e,r){const{host:n}=this,s=ot({pkgName:e,extraOptions:r,shareInfos:n.options.shared});s!=null&&s.scope&&s.scope.forEach(l=>{this.initializeSharing(l,{strategy:s.strategy})});const c=oe(this.shareScopeMap,e,s,this.hooks.lifecycle.resolveShare),a=l=>{l.useIn||(l.useIn=[]),T(l.useIn,n.options.name)};if(c){if(typeof c.lib=="function")return a(c),c.loaded||(c.loaded=!0,c.from===n.options.name&&(s.loaded=!0)),c.lib;if(typeof c.get=="function"){const l=c.get();if(!(l instanceof Promise))return a(c),this.setShared({pkgName:e,loaded:!0,from:n.options.name,lib:l,shared:c}),l}}if(s.lib)return s.loaded||(s.loaded=!0),s.lib;if(s.get){const l=s.get();if(l instanceof Promise){const h=(r==null?void 0:r.from)==="build"?u.RUNTIME_005:u.RUNTIME_006;throw new Error(u.getShortErrorMsg(h,u.runtimeDescMap,{hostName:n.options.name,sharedPkgName:e}))}return s.lib=l,this.setShared({pkgName:e,loaded:!0,from:n.options.name,lib:s.lib,shared:s}),s.lib}throw new Error(u.getShortErrorMsg(u.RUNTIME_006,u.runtimeDescMap,{hostName:n.options.name,sharedPkgName:e}))}initShareScopeMap(e,r,n={}){const{host:s}=this;this.shareScopeMap[e]=r,this.hooks.lifecycle.initContainerShareScopeMap.emit({shareScope:r,options:s.options,origin:s,scopeName:e,hostShareScopeMap:n.hostShareScopeMap})}setShared({pkgName:e,shared:r,from:n,lib:s,loading:c,loaded:a,get:l}){const{version:h,scope:_="default"}=r,g=i._object_without_properties_loose(r,["version","scope"]);(Array.isArray(_)?_:[_]).forEach(E=>{if(this.shareScopeMap[E]||(this.shareScopeMap[E]={}),this.shareScopeMap[E][e]||(this.shareScopeMap[E][e]={}),!this.shareScopeMap[E][e][h]){this.shareScopeMap[E][e][h]=i._extends({version:h,scope:["default"]},g,{lib:s,loaded:a,loading:c}),l&&(this.shareScopeMap[E][e][h].get=l);return}const $=this.shareScopeMap[E][e][h];c&&!$.loading&&($.loading=c)})}_setGlobalShareScopeMap(e){const r=we(),n=e.id||e.name;n&&!r[n]&&(r[n]=this.shareScopeMap)}constructor(e){this.hooks=new ae({afterResolve:new se("afterResolve"),beforeLoadShare:new se("beforeLoadShare"),loadShare:new K,resolveShare:new Ee("resolveShare"),initContainerShareScopeMap:new Ee("initContainerShareScopeMap")}),this.host=e,this.shareScopeMap={},this.initTokens={},this._setGlobalShareScopeMap(e.options)}}class ir{formatAndRegisterRemote(e,r){return(r.remotes||[]).reduce((s,c)=>(this.registerRemote(c,s,{force:!1}),s),e.remotes)}setIdToRemoteMap(e,r){const{remote:n,expose:s}=r,{name:c,alias:a}=n;if(this.idToRemoteMap[e]={name:n.name,expose:s},a&&e.startsWith(c)){const l=e.replace(c,a);this.idToRemoteMap[l]={name:n.name,expose:s};return}if(a&&e.startsWith(a)){const l=e.replace(a,c);this.idToRemoteMap[l]={name:n.name,expose:s}}}async loadRemote(e,r){const{host:n}=this;try{const{loadFactory:s=!0}=r||{loadFactory:!0},{module:c,moduleOptions:a,remoteMatchInfo:l}=await this.getRemoteModuleAndOptions({id:e}),{pkgNameOrAlias:h,remote:_,expose:g,id:y,remoteSnapshot:E}=l,$=await c.get(y,g,r,E),I=await this.hooks.lifecycle.onLoad.emit({id:y,pkgNameOrAlias:h,expose:g,exposeModule:s?$:void 0,exposeModuleFactory:s?void 0:$,remote:_,options:a,moduleInstance:c,origin:n});return this.setIdToRemoteMap(e,l),typeof I=="function"?I:$}catch(s){const{from:c="runtime"}=r||{from:"runtime"},a=await this.hooks.lifecycle.errorLoadRemote.emit({id:e,error:s,from:c,lifecycle:"onLoad",origin:n});if(!a)throw s;return a}}async preloadRemote(e){const{host:r}=this;await this.hooks.lifecycle.beforePreloadRemote.emit({preloadOps:e,options:r.options,origin:r});const n=Zt(r.options.remotes,e);await Promise.all(n.map(async s=>{const{remote:c}=s,a=ve(c),{globalSnapshot:l,remoteSnapshot:h}=await r.snapshotHandler.loadRemoteSnapshotInfo(c),_=await this.hooks.lifecycle.generatePreloadAssets.emit({origin:r,preloadOptions:s,remote:c,remoteInfo:a,globalSnapshot:l,remoteSnapshot:h});_&&lt(a,r,_)}))}registerRemotes(e,r){const{host:n}=this;e.forEach(s=>{this.registerRemote(s,n.options.remotes,{force:r==null?void 0:r.force})})}async getRemoteModuleAndOptions(e){const{host:r}=this,{id:n}=e;let s;try{s=await this.hooks.lifecycle.beforeRequest.emit({id:n,options:r.options,origin:r})}catch(I){if(s=await this.hooks.lifecycle.errorLoadRemote.emit({id:n,options:r.options,origin:r,from:"runtime",error:I,lifecycle:"beforeRequest"}),!s)throw I}const{id:c}=s,a=st(r.options.remotes,c);b(a,u.getShortErrorMsg(u.RUNTIME_004,u.runtimeDescMap,{hostName:r.options.name,requestId:c}));const{remote:l}=a,h=ve(l),_=await r.sharedHandler.hooks.lifecycle.afterResolve.emit(i._extends({id:c},a,{options:r.options,origin:r,remoteInfo:h})),{remote:g,expose:y}=_;b(g&&y,`The 'beforeRequest' hook was executed, but it failed to return the correct 'remote' and 'expose' values while loading ${c}.`);let E=r.moduleCache.get(g.name);const $={host:r,remoteInfo:h};return E||(E=new De($),r.moduleCache.set(g.name,E)),{module:E,moduleOptions:$,remoteMatchInfo:_}}registerRemote(e,r,n){const{host:s}=this,c=()=>{if(e.alias){const l=r.find(h=>{var _;return e.alias&&(h.name.startsWith(e.alias)||((_=h.alias)==null?void 0:_.startsWith(e.alias)))});b(!l,`The alias ${e.alias} of remote ${e.name} is not allowed to be the prefix of ${l&&l.name} name or alias`)}"entry"in e&&d.isBrowserEnv()&&!e.entry.startsWith("http")&&(e.entry=new URL(e.entry,window.location.origin).href),e.shareScope||(e.shareScope=de),e.type||(e.type=Xe)};this.hooks.lifecycle.beforeRegisterRemote.emit({remote:e,origin:s});const a=r.find(l=>l.name===e.name);if(!a)c(),r.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:s});else{const l=[`The remote "${e.name}" is already registered.`,"Please note that overriding it may cause unexpected errors."];n!=null&&n.force&&(this.removeRemote(a),c(),r.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:s}),d.warn(l.join(" ")))}}removeRemote(e){try{const{host:n}=this,{name:s}=e,c=n.options.remotes.findIndex(l=>l.name===s);c!==-1&&n.options.remotes.splice(c,1);const a=n.moduleCache.get(e.name);if(a){const l=a.remoteInfo,h=l.entryGlobalName;if(v[h]){var r;(r=Object.getOwnPropertyDescriptor(v,h))!=null&&r.configurable?delete v[h]:v[h]=void 0}const _=Le(a.remoteInfo);re[_]&&delete re[_],n.snapshotHandler.manifestCache.delete(l.entry);let g=l.buildVersion?d.composeKeyWithSeparator(l.name,l.buildVersion):l.name;const y=v.__FEDERATION__.__INSTANCES__.findIndex($=>l.buildVersion?$.options.id===g:$.name===g);if(y!==-1){const $=v.__FEDERATION__.__INSTANCES__[y];g=$.options.id||g;const I=we();let P=!0;const N=[];Object.keys(I).forEach(M=>{const F=I[M];F&&Object.keys(F).forEach(A=>{const D=F[A];D&&Object.keys(D).forEach(H=>{const U=D[H];U&&Object.keys(U).forEach(Q=>{const k=U[Q];k&&typeof k=="object"&&k.from===l.name&&(k.loaded||k.loading?(k.useIn=k.useIn.filter(q=>q!==l.name),k.useIn.length?P=!1:N.push([M,A,H,Q])):N.push([M,A,H,Q]))})})})}),P&&($.shareScopeMap={},delete I[g]),N.forEach(([M,F,A,D])=>{var H,U,Q;(Q=I[M])==null||(U=Q[F])==null||(H=U[A])==null||delete H[D]}),v.__FEDERATION__.__INSTANCES__.splice(y,1)}const{hostGlobalSnapshot:E}=ft(e,n);if(E){const $=E&&"remotesInfo"in E&&E.remotesInfo&&ne(E.remotesInfo,e.name).key;$&&(delete E.remotesInfo[$],C.__FEDERATION__.__MANIFEST_LOADING__[$]&&delete C.__FEDERATION__.__MANIFEST_LOADING__[$])}n.moduleCache.delete(e.name)}}catch(n){S.log("removeRemote fail: ",n)}}constructor(e){this.hooks=new ae({beforeRegisterRemote:new Ee("beforeRegisterRemote"),registerRemote:new Ee("registerRemote"),beforeRequest:new se("beforeRequest"),onLoad:new K("onLoad"),handlePreloadModule:new W("handlePreloadModule"),errorLoadRemote:new K("errorLoadRemote"),beforePreloadRemote:new K("beforePreloadRemote"),generatePreloadAssets:new K("generatePreloadAssets"),afterPreloadRemote:new K,loadEntry:new K}),this.host=e,this.idToRemoteMap={}}}class ar{initOptions(e){this.registerPlugins(e.plugins);const r=this.formatOptions(this.options,e);return this.options=r,r}async loadShare(e,r){return this.sharedHandler.loadShare(e,r)}loadShareSync(e,r){return this.sharedHandler.loadShareSync(e,r)}initializeSharing(e=de,r){return this.sharedHandler.initializeSharing(e,r)}initRawContainer(e,r,n){const s=ve({name:e,entry:r}),c=new De({host:this,remoteInfo:s});return c.remoteEntryExports=n,this.moduleCache.set(e,c),c}async loadRemote(e,r){return this.remoteHandler.loadRemote(e,r)}async preloadRemote(e){return this.remoteHandler.preloadRemote(e)}initShareScopeMap(e,r,n={}){this.sharedHandler.initShareScopeMap(e,r,n)}formatOptions(e,r){const{shared:n}=nt(e,r),{userOptions:s,options:c}=this.hooks.lifecycle.beforeInit.emit({origin:this,userOptions:r,options:e,shareInfo:n}),a=this.remoteHandler.formatAndRegisterRemote(c,s),{shared:l}=this.sharedHandler.registerShared(c,s),h=[...c.plugins];s.plugins&&s.plugins.forEach(g=>{h.includes(g)||h.push(g)});const _=i._extends({},e,r,{plugins:h,remotes:a,shared:l});return this.hooks.lifecycle.init.emit({origin:this,options:_}),_}registerPlugins(e){const r=Xt(e,[this.hooks,this.remoteHandler.hooks,this.sharedHandler.hooks,this.snapshotHandler.hooks,this.loaderHook,this.bridgeHook]);this.options.plugins=this.options.plugins.reduce((n,s)=>(s&&n&&!n.find(c=>c.name===s.name)&&n.push(s),n),r||[])}registerRemotes(e,r){return this.remoteHandler.registerRemotes(e,r)}constructor(e){this.hooks=new ae({beforeInit:new Ee("beforeInit"),init:new W,beforeInitContainer:new se("beforeInitContainer"),initContainer:new se("initContainer")}),this.version="0.6.20",this.moduleCache=new Map,this.loaderHook=new ae({getModuleInfo:new W,createScript:new W,createLink:new W,fetch:new K,loadEntryError:new K,getModuleFactory:new K}),this.bridgeHook=new ae({beforeBridgeRender:new W,afterBridgeRender:new W,beforeBridgeDestroy:new W,afterBridgeDestroy:new W});const r={id:Vt(),name:e.name,plugins:[er(),nr()],remotes:[],shared:{},inBrowser:d.isBrowserEnv()};this.name=e.name,this.options=r,this.snapshotHandler=new or(this),this.sharedHandler=new sr(this),this.remoteHandler=new ir(this),this.shareScopeMap=this.sharedHandler.shareScopeMap,this.registerPlugins([...r.plugins,...e.plugins||[]]),this.options=this.formatOptions(r,e)}}var lr=Object.freeze({__proto__:null});Object.defineProperty(o,"loadScript",{enumerable:!0,get:function(){return d.loadScript}}),Object.defineProperty(o,"loadScriptNode",{enumerable:!0,get:function(){return d.loadScriptNode}}),o.CurrentGlobal=v,o.FederationHost=ar,o.Global=C,o.Module=De,o.addGlobalSnapshot=Ne,o.assert=b,o.getGlobalFederationConstructor=Ce,o.getGlobalSnapshot=ge,o.getInfoWithoutType=ne,o.getRegisteredShare=oe,o.getRemoteEntry=me,o.getRemoteInfo=ve,o.helpers=Bt,o.isStaticResourcesEqual=Z,o.matchRemoteWithNameAndExpose=st,o.registerGlobalPlugins=Ge,o.resetFederationGlobalInfo=je,o.safeWrapper=G,o.satisfy=_e,o.setGlobalFederationConstructor=He,o.setGlobalFederationInstance=ke,o.types=lr})(index_cjs$2);var utils_cjs={},runtimeCore=index_cjs$2;function getBuilderId(){return typeof FEDERATION_BUILD_IDENTIFIER<"u"?FEDERATION_BUILD_IDENTIFIER:""}function getGlobalFederationInstance(o,i){const d=getBuilderId();return runtimeCore.CurrentGlobal.__FEDERATION__.__INSTANCES__.find(u=>!!(d&&u.options.id===getBuilderId()||u.options.name===o&&!u.options.version&&!i||u.options.name===o&&i&&u.options.version===i))}utils_cjs.getGlobalFederationInstance=getGlobalFederationInstance;(function(o){var i=index_cjs$2,d=utils_cjs;let u=null;function p(O){const G=d.getGlobalFederationInstance(O.name,O.version);if(G)return G.initOptions(O),u||(u=G),G;{const Y=i.getGlobalFederationConstructor()||i.FederationHost;return u=new Y(O),i.setGlobalFederationInstance(u),u}}function S(...O){return i.assert(u,"Please call init first"),u.loadRemote.apply(u,O)}function b(...O){return i.assert(u,"Please call init first"),u.loadShare.apply(u,O)}function m(...O){return i.assert(u,"Please call init first"),u.loadShareSync.apply(u,O)}function R(...O){return i.assert(u,"Please call init first"),u.preloadRemote.apply(u,O)}function T(...O){return i.assert(u,"Please call init first"),u.registerRemotes.apply(u,O)}function w(...O){return i.assert(u,"Please call init first"),u.registerPlugins.apply(u,O)}function L(){return u}i.setGlobalFederationConstructor(i.FederationHost),Object.defineProperty(o,"FederationHost",{enumerable:!0,get:function(){return i.FederationHost}}),Object.defineProperty(o,"Module",{enumerable:!0,get:function(){return i.Module}}),Object.defineProperty(o,"getRemoteEntry",{enumerable:!0,get:function(){return i.getRemoteEntry}}),Object.defineProperty(o,"getRemoteInfo",{enumerable:!0,get:function(){return i.getRemoteInfo}}),Object.defineProperty(o,"loadScript",{enumerable:!0,get:function(){return i.loadScript}}),Object.defineProperty(o,"loadScriptNode",{enumerable:!0,get:function(){return i.loadScriptNode}}),Object.defineProperty(o,"registerGlobalPlugins",{enumerable:!0,get:function(){return i.registerGlobalPlugins}}),o.getInstance=L,o.init=p,o.loadRemote=S,o.loadShare=b,o.loadShareSync=m,o.preloadRemote=R,o.registerPlugins=w,o.registerRemotes=T})(index_cjs$3);let initResolve;const initPromise=new Promise((o,i)=>{initResolve=o});var ShoppingRouteAdminSet__mf_v__runtimeInit__mf_v__={initPromise,initResolve};export{ShoppingRouteAdminSet__mf_v__runtimeInit__mf_v__ as S,index_cjs$3 as i};
@@ -0,0 +1 @@
1
+ function e(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}export{e as g};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../routeEditor.js","./ShoppingRouteAdminSet__mf_v__runtimeInit__mf_v__-CSXtL_6m.js","./virtualExposes-0pJrfiZw.js","./preload-helper-Dp1pzeXC.js"])))=>i.map(i=>d[i]);
2
+ import{_ as i}from"./preload-helper-Dp1pzeXC.js";const r=i(()=>import("../routeEditor.js"),__vite__mapDeps([0,1,2,3]),import.meta.url);Promise.resolve(r).then(e=>Promise.resolve(e.__tla).then(e.init).catch(e.init));
@@ -0,0 +1,9 @@
1
+ import{g as T}from"./_commonjsHelpers-CqkleIqs.js";function V(e,t){for(var n=0;n<t.length;n++){const u=t[n];if(typeof u!="string"&&!Array.isArray(u)){for(const o in u)if(o!=="default"&&!(o in e)){const i=Object.getOwnPropertyDescriptor(u,o);i&&Object.defineProperty(e,o,i.get?i:{enumerable:!0,get:()=>u[o]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}var g={exports:{}},r={};/**
2
+ * @license React
3
+ * react.production.min.js
4
+ *
5
+ * Copyright (c) Facebook, Inc. and its affiliates.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */var y=Symbol.for("react.element"),F=Symbol.for("react.portal"),U=Symbol.for("react.fragment"),q=Symbol.for("react.strict_mode"),L=Symbol.for("react.profiler"),M=Symbol.for("react.provider"),N=Symbol.for("react.context"),z=Symbol.for("react.forward_ref"),B=Symbol.for("react.suspense"),H=Symbol.for("react.memo"),W=Symbol.for("react.lazy"),k=Symbol.iterator;function G(e){return e===null||typeof e!="object"?null:(e=k&&e[k]||e["@@iterator"],typeof e=="function"?e:null)}var R={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},j=Object.assign,C={};function p(e,t,n){this.props=e,this.context=t,this.refs=C,this.updater=n||R}p.prototype.isReactComponent={};p.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};p.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function x(){}x.prototype=p.prototype;function v(e,t,n){this.props=e,this.context=t,this.refs=C,this.updater=n||R}var S=v.prototype=new x;S.constructor=v;j(S,p.prototype);S.isPureReactComponent=!0;var w=Array.isArray,O=Object.prototype.hasOwnProperty,E={current:null},P={key:!0,ref:!0,__self:!0,__source:!0};function I(e,t,n){var u,o={},i=null,s=null;if(t!=null)for(u in t.ref!==void 0&&(s=t.ref),t.key!==void 0&&(i=""+t.key),t)O.call(t,u)&&!P.hasOwnProperty(u)&&(o[u]=t[u]);var f=arguments.length-2;if(f===1)o.children=n;else if(1<f){for(var c=Array(f),a=0;a<f;a++)c[a]=arguments[a+2];o.children=c}if(e&&e.defaultProps)for(u in f=e.defaultProps,f)o[u]===void 0&&(o[u]=f[u]);return{$$typeof:y,type:e,key:i,ref:s,props:o,_owner:E.current}}function J(e,t){return{$$typeof:y,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}function b(e){return typeof e=="object"&&e!==null&&e.$$typeof===y}function K(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(n){return t[n]})}var $=/\/+/g;function m(e,t){return typeof e=="object"&&e!==null&&e.key!=null?K(""+e.key):t.toString(36)}function _(e,t,n,u,o){var i=typeof e;(i==="undefined"||i==="boolean")&&(e=null);var s=!1;if(e===null)s=!0;else switch(i){case"string":case"number":s=!0;break;case"object":switch(e.$$typeof){case y:case F:s=!0}}if(s)return s=e,o=o(s),e=u===""?"."+m(s,0):u,w(o)?(n="",e!=null&&(n=e.replace($,"$&/")+"/"),_(o,t,n,"",function(a){return a})):o!=null&&(b(o)&&(o=J(o,n+(!o.key||s&&s.key===o.key?"":(""+o.key).replace($,"$&/")+"/")+e)),t.push(o)),1;if(s=0,u=u===""?".":u+":",w(e))for(var f=0;f<e.length;f++){i=e[f];var c=u+m(i,f);s+=_(i,t,n,c,o)}else if(c=G(e),typeof c=="function")for(e=c.call(e),f=0;!(i=e.next()).done;)i=i.value,c=u+m(i,f++),s+=_(i,t,n,c,o);else if(i==="object")throw t=String(e),Error("Objects are not valid as a React child (found: "+(t==="[object Object]"?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.");return s}function d(e,t,n){if(e==null)return e;var u=[],o=0;return _(e,u,"","",function(i){return t.call(n,i,o++)}),u}function Q(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(n){(e._status===0||e._status===-1)&&(e._status=1,e._result=n)},function(n){(e._status===0||e._status===-1)&&(e._status=2,e._result=n)}),e._status===-1&&(e._status=0,e._result=t)}if(e._status===1)return e._result.default;throw e._result}var l={current:null},h={transition:null},X={ReactCurrentDispatcher:l,ReactCurrentBatchConfig:h,ReactCurrentOwner:E};function A(){throw Error("act(...) is not supported in production builds of React.")}r.Children={map:d,forEach:function(e,t,n){d(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return d(e,function(){t++}),t},toArray:function(e){return d(e,function(t){return t})||[]},only:function(e){if(!b(e))throw Error("React.Children.only expected to receive a single React element child.");return e}};r.Component=p;r.Fragment=U;r.Profiler=L;r.PureComponent=v;r.StrictMode=q;r.Suspense=B;r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=X;r.act=A;r.cloneElement=function(e,t,n){if(e==null)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var u=j({},e.props),o=e.key,i=e.ref,s=e._owner;if(t!=null){if(t.ref!==void 0&&(i=t.ref,s=E.current),t.key!==void 0&&(o=""+t.key),e.type&&e.type.defaultProps)var f=e.type.defaultProps;for(c in t)O.call(t,c)&&!P.hasOwnProperty(c)&&(u[c]=t[c]===void 0&&f!==void 0?f[c]:t[c])}var c=arguments.length-2;if(c===1)u.children=n;else if(1<c){f=Array(c);for(var a=0;a<c;a++)f[a]=arguments[a+2];u.children=f}return{$$typeof:y,type:e.type,key:o,ref:i,props:u,_owner:s}};r.createContext=function(e){return e={$$typeof:N,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null},e.Provider={$$typeof:M,_context:e},e.Consumer=e};r.createElement=I;r.createFactory=function(e){var t=I.bind(null,e);return t.type=e,t};r.createRef=function(){return{current:null}};r.forwardRef=function(e){return{$$typeof:z,render:e}};r.isValidElement=b;r.lazy=function(e){return{$$typeof:W,_payload:{_status:-1,_result:e},_init:Q}};r.memo=function(e,t){return{$$typeof:H,type:e,compare:t===void 0?null:t}};r.startTransition=function(e){var t=h.transition;h.transition={};try{e()}finally{h.transition=t}};r.unstable_act=A;r.useCallback=function(e,t){return l.current.useCallback(e,t)};r.useContext=function(e){return l.current.useContext(e)};r.useDebugValue=function(){};r.useDeferredValue=function(e){return l.current.useDeferredValue(e)};r.useEffect=function(e,t){return l.current.useEffect(e,t)};r.useId=function(){return l.current.useId()};r.useImperativeHandle=function(e,t,n){return l.current.useImperativeHandle(e,t,n)};r.useInsertionEffect=function(e,t){return l.current.useInsertionEffect(e,t)};r.useLayoutEffect=function(e,t){return l.current.useLayoutEffect(e,t)};r.useMemo=function(e,t){return l.current.useMemo(e,t)};r.useReducer=function(e,t,n){return l.current.useReducer(e,t,n)};r.useRef=function(e){return l.current.useRef(e)};r.useState=function(e){return l.current.useState(e)};r.useSyncExternalStore=function(e,t,n){return l.current.useSyncExternalStore(e,t,n)};r.useTransition=function(){return l.current.useTransition()};r.version="18.3.1";g.exports=r;var D=g.exports;const Y=T(D),ee=V({__proto__:null,default:Y},[D]);export{ee as i};
@@ -0,0 +1 @@
1
+ const y="modulepreload",w=function(f,a){return new URL(f,a).href},E={},g=function(a,u,d){let h=Promise.resolve();if(u&&u.length>0){let s=function(e){return Promise.all(e.map(r=>Promise.resolve(r).then(l=>({status:"fulfilled",value:l}),l=>({status:"rejected",reason:l}))))};const t=document.getElementsByTagName("link"),o=document.querySelector("meta[property=csp-nonce]"),v=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));h=s(u.map(e=>{if(e=w(e,d),e in E)return;E[e]=!0;const r=e.endsWith(".css"),l=r?'[rel="stylesheet"]':"";if(!!d)for(let i=t.length-1;i>=0;i--){const c=t[i];if(c.href===e&&(!r||c.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${e}"]${l}`))return;const n=document.createElement("link");if(n.rel=r?"stylesheet":y,r||(n.as="script"),n.crossOrigin="",n.href=e,v&&n.setAttribute("nonce",v),document.head.appendChild(n),r)return new Promise((i,c)=>{n.addEventListener("load",i),n.addEventListener("error",()=>c(new Error(`Unable to preload CSS for ${e}`)))})}))}function m(s){const t=new Event("vite:preloadError",{cancelable:!0});if(t.payload=s,window.dispatchEvent(t),!t.defaultPrevented)throw s}return h.then(s=>{for(const t of s||[])t.status==="rejected"&&m(t.reason);return a().catch(m)})};export{g as _};
@@ -0,0 +1 @@
1
+ import"./hostInit-DprWdRSg.js";import{i as j,S as L}from"./ShoppingRouteAdminSet__mf_v__runtimeInit__mf_v__-CSXtL_6m.js";import{g as O}from"./_commonjsHelpers-CqkleIqs.js";import"./preload-helper-Dp1pzeXC.js";function z(r,e){for(var t=0;t<e.length;t++){const o=e[t];if(typeof o!="string"&&!Array.isArray(o)){for(const s in o)if(s!=="default"&&!(s in r)){const a=Object.getOwnPropertyDescriptor(o,s);a&&Object.defineProperty(r,s,a.get?a:{enumerable:!0,get:()=>o[s]})}}}return Object.freeze(Object.defineProperty(r,Symbol.toStringTag,{value:"Module"}))}const{loadShare:E}=j,{initPromise:I}=L,T=I.then(r=>E("react",{customShareInfo:{shareConfig:{singleton:!0,strictVersion:!1,requiredVersion:">=18"}}})),D=await T.then(r=>r());var A=D;const w=O(A),F=z({__proto__:null,default:w},[A]);var b={exports:{}};const M=w||F,n=M.createElement,l=(r,e)=>(typeof navigator<"u"?String(navigator.language||"").toLowerCase():"de").startsWith("de")?r:e,p=r=>String(r||"").trim().toLocaleLowerCase("de"),R=(r,e)=>String(r||"").localeCompare(String(e||""),"de",{sensitivity:"base"}),v=(r,e)=>p(r)===p(e);function x(r){return(Array.isArray(r&&r.markets)?r.markets:[]).filter(e=>e&&e.name&&e.enabled!==!1).map(e=>String(e.name).trim()).filter(Boolean).filter((e,t,o)=>o.findIndex(s=>v(s,e))===t).sort(R)}function f(r,e){return(Array.isArray(r)?r:[]).map((t,o)=>({route:t,originalIndex:o})).filter(t=>t.route&&v(t.route.market,e)&&String(t.route.category||"").trim()).sort((t,o)=>{const s=Number(t.route.order)||999999,a=Number(o.route.order)||999999;return s-a||t.originalIndex-o.originalIndex}).map(t=>({...t.route,category:String(t.route.category).trim()}))}function $(r,e,t){const o=new Set(f(e,t).map(a=>p(a.category))),s=new Set;return(Array.isArray(r)?r:[]).map(a=>String(a&&a.name||"").trim()).filter(a=>{const c=p(a);return!c||o.has(c)||s.has(c)?!1:(s.add(c),!0)}).sort(R)}function _(r,e,t){const o=Array.isArray(r)?r:[],s=(Array.isArray(t)?t:[]).filter(u=>u&&String(u.category||"").trim()).map((u,m)=>({market:String(e||"").trim(),category:String(u.category).trim(),order:(m+1)*10})),a=[];let c=!1;for(const u of o){if(u&&v(u.market,e)){c||(a.push(...s),c=!0);continue}a.push(u)}return c||a.push(...s),a}function N(r,e,t,o){const s=f(r,e),a=t+o;return t<0||a<0||t>=s.length||a>=s.length?r:([s[t],s[a]]=[s[a],s[t]],_(r,e,s))}function W(r,e,t){const o=f(r,e);return t<0||t>=o.length?r:(o.splice(t,1),_(r,e,o))}function B(r,e,t){const o=String(t||"").trim();if(!o)return r;const s=f(r,e);return s.some(a=>p(a.category)===p(o))?r:(s.push({market:String(e||"").trim(),category:o,order:0}),_(r,e,s))}class G extends M.Component{constructor(e){super(e),this.state={selectedMarket:x(e.data)[0]||"",selectedAddCategory:""}}componentDidUpdate(e){if(e.data===this.props.data)return;const t=x(this.props.data);if(!t.some(o=>v(o,this.state.selectedMarket))){const o=t[0]||"";o!==this.state.selectedMarket&&this.setState({selectedMarket:o,selectedAddCategory:""})}}updateRoutes(e){this.props.onChange({...this.props.data||{},routes:e},!0)}move(e,t){this.updateRoutes(N(this.props.data&&this.props.data.routes,this.state.selectedMarket,e,t))}remove(e){this.updateRoutes(W(this.props.data&&this.props.data.routes,this.state.selectedMarket,e))}add(e){const t=e.some(o=>p(o)===p(this.state.selectedAddCategory))?this.state.selectedAddCategory:e[0];t&&(this.updateRoutes(B(this.props.data&&this.props.data.routes,this.state.selectedMarket,t)),this.setState({selectedAddCategory:""}))}render(){const e=this.props.data||{},t=x(e),o=this.state.selectedMarket,s=f(e.routes,o),a=$(e.productGroups,e.routes,o),c=a.some(i=>p(i)===p(this.state.selectedAddCategory))?this.state.selectedAddCategory:a[0]||"",u=new Set((Array.isArray(e.productGroups)?e.productGroups:[]).map(i=>p(i&&i.name)).filter(Boolean)),m=String(this.props.themeType||"").toLowerCase()==="dark",h=m?"#555":"#d5d5d5",S=m?"#2b2b2b":"#fff",y=m?"#bbb":"#666",k=m?"#3b3b3b":"#f4f4f4",C={minWidth:"240px",padding:"9px 12px",borderRadius:"4px",border:`1px solid ${h}`,background:S,color:"inherit"},g=[n("div",{key:"selector",style:{display:"flex",flexWrap:"wrap",gap:"12px",alignItems:"center",marginBottom:"18px"}},[n("label",{key:"label",htmlFor:"shoppingroute-route-market",style:{fontWeight:600}},l("Markt auswählen:","Select market:")),n("select",{key:"select",id:"shoppingroute-route-market",value:o,onChange:i=>this.setState({selectedMarket:i.target.value,selectedAddCategory:""}),style:C},t.map(i=>n("option",{key:i,value:i},i)))])];return t.length?(g.push(n("h3",{key:"route-title",style:{margin:"0 0 6px"}},l("Laufweg dieses Marktes","Walking route for this market"))),g.push(n("div",{key:"hint",style:{color:y,marginBottom:"10px",fontSize:"0.92rem"}},l("Oben beginnt der Laufweg. Änderungen betreffen ausschließlich den ausgewählten Markt.","The walking route starts at the top. Changes affect only the selected market."))),s.length?g.push(n("div",{key:"routes",style:{border:`1px solid ${h}`,borderRadius:"6px",overflow:"hidden",marginBottom:"18px"}},s.map((i,d)=>{const P=!u.has(p(i.category));return n("div",{key:`${i.market}-${i.category}-${d}`,style:{display:"grid",gridTemplateColumns:"48px minmax(160px, 1fr) 144px",alignItems:"center",gap:"8px",padding:"9px 12px",borderBottom:d<s.length-1?`1px solid ${h}`:"none",background:S}},[n("div",{key:"position",style:{color:y,textAlign:"right",paddingRight:"6px"}},String(d+1)),n("div",{key:"category",style:{fontWeight:500}},[String(i.category||""),P?n("div",{key:"historical",style:{color:y,fontSize:"0.8rem",fontWeight:400}},l("Nicht mehr im globalen Katalog","No longer in the global catalogue")):null]),n("div",{key:"buttons",style:{display:"flex",justifyContent:"flex-end",gap:"6px"}},[n("button",{key:"up",type:"button",disabled:d===0,title:l("Nach oben","Move up"),onClick:()=>this.move(d,-1),style:{width:"38px",height:"32px",border:`1px solid ${h}`,borderRadius:"4px",background:k,color:"inherit",cursor:d===0?"default":"pointer",opacity:d===0?.4:1}},"↑"),n("button",{key:"down",type:"button",disabled:d===s.length-1,title:l("Nach unten","Move down"),onClick:()=>this.move(d,1),style:{width:"38px",height:"32px",border:`1px solid ${h}`,borderRadius:"4px",background:k,color:"inherit",cursor:d===s.length-1?"default":"pointer",opacity:d===s.length-1?.4:1}},"↓"),n("button",{key:"remove",type:"button",title:l("Aus diesem Laufweg entfernen","Remove from this walking route"),onClick:()=>this.remove(d),style:{width:"38px",height:"32px",border:`1px solid ${h}`,borderRadius:"4px",background:k,color:"inherit",cursor:"pointer"}},"×")])])}))):g.push(n("div",{key:"no-routes",style:{color:y,padding:"12px 0",marginBottom:"18px"}},l("Für diesen Markt werden derzeit keine Produktgruppen verwendet.","No product groups are currently used for this market."))),g.push(n("h3",{key:"add-title",style:{margin:"0 0 8px"}},l("Produktgruppe hinzufügen","Add product group"))),a.length?g.push(n("div",{key:"add-controls",style:{display:"flex",flexWrap:"wrap",gap:"10px",alignItems:"center"}},[n("select",{key:"category",value:c,onChange:i=>this.setState({selectedAddCategory:i.target.value}),style:C},a.map(i=>n("option",{key:i,value:i},i))),n("button",{key:"add",type:"button",onClick:()=>this.add(a),style:{minHeight:"38px",padding:"7px 16px",border:`1px solid ${h}`,borderRadius:"4px",background:k,color:"inherit",cursor:"pointer",fontWeight:600}},l("Hinzufügen","Add"))])):g.push(n("div",{key:"no-available",style:{color:y,padding:"8px 0"}},l("Alle globalen Produktgruppen werden bereits in diesem Markt verwendet.","All global product groups are already used in this market."))),n("div",{style:{width:"100%"}},g)):(g.push(n("div",{key:"no-markets",style:{color:y,padding:"12px 0"}},l("Noch keine aktiven Märkte vorhanden.","No active markets configured yet."))),n("div",{style:{width:"100%"}},g))}}b.exports={Components:{RouteEditor:G},RouteEditorModel:{activeMarkets:x,marketRoutes:f,availableProductGroups:$,replaceMarketRoutes:_,moveMarketRoute:N,removeMarketRoute:W,addMarketRoute:B}};const H=(b.exports==null?{}:b.exports).default||b.exports,U=H.Components;export{U as default};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./route-editor-components-FB3CfD4a.js","./hostInit-DprWdRSg.js","./preload-helper-Dp1pzeXC.js","./ShoppingRouteAdminSet__mf_v__runtimeInit__mf_v__-CSXtL_6m.js","./_commonjsHelpers-CqkleIqs.js"])))=>i.map(i=>d[i]);
2
+ import{_ as o}from"./preload-helper-Dp1pzeXC.js";const a={"./Components":async()=>{const t=await o(()=>import("./route-editor-components-FB3CfD4a.js"),__vite__mapDeps([0,1,2,3,4]),import.meta.url),e={};return Object.assign(e,t),Object.defineProperty(e,"__esModule",{value:!0,enumerable:!1}),e}};export{a as default};