vitral 0.6.0 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -19
- package/dist/angular.d.ts +2 -2
- package/dist/angular.js +4 -4
- package/dist/auto.js +4 -4
- package/dist/{chunk-JBNITHPI.js → chunk-4NSPG6NK.js} +1 -1
- package/dist/{chunk-S7PIVPBX.js → chunk-72H4FXMD.js} +16 -5
- package/dist/{chunk-HIVMSPGM.js → chunk-O7DV3EVB.js} +4 -4
- package/dist/{chunk-UXLKRSOM.js → chunk-TXSHK3SK.js} +2 -2
- package/dist/{chunk-PLM7U7LR.js → chunk-V24ZNHUF.js} +4 -4
- package/dist/edge.d.ts +1 -1
- package/dist/element.d.ts +2 -2
- package/dist/element.js +4 -4
- package/dist/embed.js +2 -2
- package/dist/{events-0rxFlWJJ.d.ts → events-DLdbFqBM.d.ts} +1 -1
- package/dist/{expose-EQOWTJNC.js → expose-ZLYQZUP2.js} +2 -2
- package/dist/federation.d.ts +1 -1
- package/dist/{hydrate-R76V2I36.js → hydrate-NFZZMYWT.js} +3 -3
- package/dist/iframe.js +3 -3
- package/dist/index.d.ts +4 -4
- package/dist/index.js +2 -2
- package/dist/preact.d.ts +4 -4
- package/dist/preact.js +3 -3
- package/dist/prefetch.js +1 -1
- package/dist/react-server.d.ts +1 -1
- package/dist/react.d.ts +3 -3
- package/dist/react.js +3 -3
- package/dist/{reframe-MUV472OU.js → reframe-7K5S6JC6.js} +2 -2
- package/dist/routes.d.ts +2 -2
- package/dist/routes.js +3 -3
- package/dist/single-spa.d.ts +1 -1
- package/dist/{slot-D49L1rdU.d.ts → slot-Ddzp7AgL.d.ts} +1 -1
- package/dist/solid.d.ts +3 -3
- package/dist/solid.js +3 -3
- package/dist/stale-HFTCJASS.js +15 -0
- package/dist/svelte.d.ts +4 -4
- package/dist/svelte.js +3 -3
- package/dist/testing.d.ts +1 -1
- package/dist/testing.js +2 -2
- package/dist/{types-DUtcF3HO.d.ts → types-EOz1rOHs.d.ts} +8 -0
- package/dist/vite.d.ts +7 -0
- package/dist/vite.js +6 -4
- package/dist/vue.d.ts +3 -3
- package/dist/vue.js +3 -3
- package/package.json +20 -9
package/README.md
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
<p align="center"
|
|
2
|
-
|
|
3
|
-
<
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<picture>
|
|
3
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/joaogabriel15/vitral/main/docs/public/marca/banner-escuro.png">
|
|
4
|
+
<img src="https://raw.githubusercontent.com/joaogabriel15/vitral/main/docs/public/marca/banner.png" width="640" alt="vitral. Feito de partes. Visto como um todo.">
|
|
5
|
+
</picture>
|
|
6
|
+
</p>
|
|
6
7
|
|
|
7
8
|
<p align="center">
|
|
8
9
|
<a href="https://github.com/joaogabriel15/vitral/actions/workflows/ci.yml"><img src="https://github.com/joaogabriel15/vitral/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
|
|
@@ -11,15 +12,48 @@
|
|
|
11
12
|
<a href="https://github.com/joaogabriel15/vitral/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/vitral" alt="licença MIT"></a>
|
|
12
13
|
</p>
|
|
13
14
|
|
|
15
|
+
<p align="center">
|
|
16
|
+
<a href="https://joaogabriel15.github.io/vitral/">Documentação</a> ·
|
|
17
|
+
<a href="https://joaogabriel15.github.io/vitral/aprender/configurar">Começar</a> ·
|
|
18
|
+
<a href="https://joaogabriel15.github.io/vitral/por-que">Por que o vitral</a> ·
|
|
19
|
+
<a href="https://joaogabriel15.github.io/vitral/aprender/benchmark">Benchmark</a> ·
|
|
20
|
+
<a href="./README.en.md">English</a>
|
|
21
|
+
</p>
|
|
22
|
+
|
|
14
23
|
Junte micro-frontends de qualquer framework numa página só, sem configuração de build no host.
|
|
15
24
|
|
|
25
|
+
Cada equipe publica o próprio pedaço da página (um remote) com `vite build`. O host recebe a URL de cada remote e monta tudo no navegador. Não há plugin no host, não há versão de React para combinar entre equipes e um remote fora do ar não derruba a página.
|
|
26
|
+
|
|
16
27
|
```bash
|
|
17
28
|
npm install vitral
|
|
18
29
|
```
|
|
19
30
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
-
|
|
31
|
+
<p align="center">
|
|
32
|
+
<picture>
|
|
33
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/joaogabriel15/vitral/main/docs/public/marca/como-funciona-escuro.png">
|
|
34
|
+
<img src="https://raw.githubusercontent.com/joaogabriel15/vitral/main/docs/public/marca/como-funciona.png" width="900" alt="Três equipes (React, Vue, Angular) publicam um vitral.json cada uma num CDN. O host lê as URLs com configure e monta os três remotes na mesma página.">
|
|
35
|
+
</picture>
|
|
36
|
+
</p>
|
|
37
|
+
|
|
38
|
+
## Por que o vitral
|
|
39
|
+
|
|
40
|
+
| | Module Federation / single-spa | vitral |
|
|
41
|
+
|---|---|---|
|
|
42
|
+
| Build do host | Config combinada com cada remote | Nenhuma. Só `configure()` |
|
|
43
|
+
| Versões de React/Vue | `shared` e singletons, conflitos de versão | Cada remote leva a sua. Compartilhar é opcional |
|
|
44
|
+
| Remote fora do ar | Pode derrubar a página | Só aquele remote mostra erro |
|
|
45
|
+
| CSS | Vaza entre apps | Escopo automático ou Shadow DOM |
|
|
46
|
+
| Deploy novo | `ChunkLoadError` com cache velho | Arquivos com hash; só o `vitral.json` revalida |
|
|
47
|
+
| Conceitos | Containers, exposes, lifecycles, root config | `mount(el, props, ctx)` → `{ update, unmount }` |
|
|
48
|
+
|
|
49
|
+
Medido no [benchmark público](https://joaogabriel15.github.io/vitral/aprender/benchmark) (Chromium, rede Slow 4G, mediana de 7 visitas):
|
|
50
|
+
|
|
51
|
+
- **3,4 kB** de código de host mínimo, com brotli. O host do Module Federation tem 19,4 kB.
|
|
52
|
+
- **57% menos tempo** na primeira visita que o Module Federation com React compartilhado (1157 ms contra 2673 ms, 1 remote).
|
|
53
|
+
- **4,6 vezes mais rápido** para trocar de área que o Next.js Multi-Zones (184 ms contra 850 ms).
|
|
54
|
+
- **10 frameworks** cobertos por testes de ponta a ponta no CI, com host e remote de frameworks diferentes, em Chromium, Firefox, WebKit e mobile.
|
|
55
|
+
|
|
56
|
+
A página do benchmark também lista onde o vitral perde.
|
|
23
57
|
|
|
24
58
|
## Começo rápido
|
|
25
59
|
|
|
@@ -340,17 +374,6 @@ expect(carrinho.lastProps).toEqual({ itens: 2 })
|
|
|
340
374
|
failingRemote('recomendacoes') // testa a tela de erro
|
|
341
375
|
```
|
|
342
376
|
|
|
343
|
-
## Comparado com Module Federation e single-spa
|
|
344
|
-
|
|
345
|
-
| | Module Federation / single-spa | vitral |
|
|
346
|
-
|---|---|---|
|
|
347
|
-
| Build do host | Config combinada com cada remote | Nenhuma. Só `configure()` |
|
|
348
|
-
| Versões de React/Vue | `shared` e singletons, conflitos de versão | Cada remote leva a sua. Compartilhar é opcional |
|
|
349
|
-
| Remote fora do ar | Pode derrubar a página | Só aquele remote mostra erro |
|
|
350
|
-
| CSS | Vaza entre apps | Escopo automático ou Shadow DOM |
|
|
351
|
-
| Deploy novo | `ChunkLoadError` com cache velho | Arquivos com hash; só o `vitral.json` revalida |
|
|
352
|
-
| Conceitos | Containers, exposes, lifecycles, root config | `mount(el, props, ctx)` → `{ update, unmount }` |
|
|
353
|
-
|
|
354
377
|
## Links
|
|
355
378
|
|
|
356
379
|
- [Exemplos](https://github.com/joaogabriel15/vitral/tree/main/examples): o mesmo remote em 8 frameworks e 9 hosts.
|
package/dist/angular.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { InjectionToken, Type, ApplicationConfig, Signal, Provider, EnvironmentProviders } from '@angular/core';
|
|
2
|
-
import { R as RemoteContext, P as Props, a as RemoteModule, S as Shared, V as VitralConfig } from './types-
|
|
3
|
-
export { e as events } from './events-
|
|
2
|
+
import { R as RemoteContext, P as Props, a as RemoteModule, S as Shared, V as VitralConfig } from './types-EOz1rOHs.js';
|
|
3
|
+
export { e as events } from './events-DLdbFqBM.js';
|
|
4
4
|
export { n as navigate } from './navigate-BRG1WJUM.js';
|
|
5
5
|
import './errors-kjBv6IH_.js';
|
|
6
6
|
|
package/dist/angular.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
defineVitralElement
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-V24ZNHUF.js";
|
|
4
|
+
import "./chunk-TXSHK3SK.js";
|
|
5
5
|
import {
|
|
6
6
|
defineRemote,
|
|
7
7
|
events,
|
|
@@ -9,10 +9,10 @@ import {
|
|
|
9
9
|
navigate,
|
|
10
10
|
same,
|
|
11
11
|
shared
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-O7DV3EVB.js";
|
|
13
13
|
import {
|
|
14
14
|
configure
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-72H4FXMD.js";
|
|
16
16
|
import "./chunk-KU6HF2EW.js";
|
|
17
17
|
import "./chunk-TW7KYJQ6.js";
|
|
18
18
|
import "./chunk-463H6B56.js";
|
package/dist/auto.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
defineVitralElement
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-V24ZNHUF.js";
|
|
4
|
+
import "./chunk-TXSHK3SK.js";
|
|
5
|
+
import "./chunk-O7DV3EVB.js";
|
|
6
|
+
import "./chunk-72H4FXMD.js";
|
|
7
7
|
import "./chunk-KU6HF2EW.js";
|
|
8
8
|
import "./chunk-TW7KYJQ6.js";
|
|
9
9
|
import "./chunk-463H6B56.js";
|
|
@@ -79,13 +79,19 @@ function loadRemote(name) {
|
|
|
79
79
|
return load(name).then((r) => r.module);
|
|
80
80
|
}
|
|
81
81
|
function loadModule(name) {
|
|
82
|
-
return import("./expose-
|
|
82
|
+
return import("./expose-ZLYQZUP2.js").then((m) => m.resolveModule(name, (n) => loadFile(n))).catch(fail);
|
|
83
83
|
}
|
|
84
84
|
function preload(name) {
|
|
85
85
|
load(name).catch(() => {
|
|
86
86
|
});
|
|
87
87
|
}
|
|
88
88
|
var paths;
|
|
89
|
+
function warm() {
|
|
90
|
+
if (paths) return;
|
|
91
|
+
paths = import("./sri-576GTDIA.js").catch(() => null);
|
|
92
|
+
import("./dedupe-S7BHQMOZ.js").catch(() => {
|
|
93
|
+
});
|
|
94
|
+
}
|
|
89
95
|
function warmSsr(holder) {
|
|
90
96
|
paths ??= import("./sri-576GTDIA.js").catch(() => null);
|
|
91
97
|
if (holder.querySelector("script[data-vitral-manifest]")?.textContent?.includes('"dedupe"')) import("./dedupe-S7BHQMOZ.js").catch(() => {
|
|
@@ -93,12 +99,12 @@ function warmSsr(holder) {
|
|
|
93
99
|
}
|
|
94
100
|
function load(name, isolate, priority) {
|
|
95
101
|
const file = (n) => loadFile(n, isolate, priority);
|
|
96
|
-
return (protocol().entry(name) || !name.includes("/") ? file(name).then((r) => mountable(name, r)) : import("./expose-
|
|
102
|
+
return (protocol().entry(name) || !name.includes("/") ? file(name).then((r) => mountable(name, r)) : import("./expose-ZLYQZUP2.js").then((m) => m.resolveTarget(name, file))).catch(fail);
|
|
97
103
|
}
|
|
98
104
|
function loadFile(name, isolate, priority) {
|
|
99
105
|
const p = protocol();
|
|
100
106
|
return p.load(name, async () => {
|
|
101
|
-
|
|
107
|
+
warm();
|
|
102
108
|
let resolved;
|
|
103
109
|
try {
|
|
104
110
|
await p.pending();
|
|
@@ -122,7 +128,7 @@ function loadFile(name, isolate, priority) {
|
|
|
122
128
|
function devOverride(name) {
|
|
123
129
|
try {
|
|
124
130
|
const k = "vitral:overrides";
|
|
125
|
-
if (location.search
|
|
131
|
+
if (/[?&]vitral=/.test(location.search) || localStorage[k] || sessionStorage[k]) return import("./overrides-NP754HY7.js").then((m) => m.overrideFor(name));
|
|
126
132
|
} catch {
|
|
127
133
|
}
|
|
128
134
|
}
|
|
@@ -133,7 +139,7 @@ async function loadLocal(name, entry) {
|
|
|
133
139
|
}
|
|
134
140
|
async function resolveEntry(name, entry, priority) {
|
|
135
141
|
checkOrigin(name, entry.url);
|
|
136
|
-
const m = entry.manifest ?? (new URL(entry.url).pathname.endsWith(".json") ? await
|
|
142
|
+
const m = entry.manifest ?? (new URL(entry.url).pathname.endsWith(".json") ? await manifestOf(entry.url, name, priority) : { name, entry: entry.url });
|
|
137
143
|
if (m?.stable) return resolveEntry(name, await (await import("./channel-2YPYGX3J.js")).pick(name, entry, m), priority);
|
|
138
144
|
if (typeof m?.entry !== "string") throw new RemoteError("INVALID_MODULE", name, `manifesto inv\xE1lido em ${entry.url}`);
|
|
139
145
|
if (m.contract && (entry.contract || protocol().settings().contract)) {
|
|
@@ -173,6 +179,11 @@ async function resolveEntry(name, entry, priority) {
|
|
|
173
179
|
}
|
|
174
180
|
return resolved;
|
|
175
181
|
}
|
|
182
|
+
function manifestOf(url, name, priority) {
|
|
183
|
+
const { timeout, maxStale } = protocol().settings();
|
|
184
|
+
const fresh = fetchJson(url, timeout, name, { cache: "no-cache", priority });
|
|
185
|
+
return maxStale ? import("./stale-HFTCJASS.js").then((m) => m.stale(url, fresh, maxStale), () => fresh) : fresh;
|
|
186
|
+
}
|
|
176
187
|
async function importModule(name, r) {
|
|
177
188
|
const { timeout } = protocol().settings();
|
|
178
189
|
const run = (url) => withTimeout(timeout, name, import(
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
loadFile,
|
|
4
4
|
registerSrc,
|
|
5
5
|
resolveEntry
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-72H4FXMD.js";
|
|
7
7
|
import {
|
|
8
8
|
injectStyles
|
|
9
9
|
} from "./chunk-KU6HF2EW.js";
|
|
@@ -119,7 +119,7 @@ var noop = () => {
|
|
|
119
119
|
async function checkUpdates() {
|
|
120
120
|
const p = protocol();
|
|
121
121
|
const found = [];
|
|
122
|
-
const { splitName } = await import("./expose-
|
|
122
|
+
const { splitName } = await import("./expose-ZLYQZUP2.js");
|
|
123
123
|
const remotes = /* @__PURE__ */ new Map();
|
|
124
124
|
for (const name of live.keys()) {
|
|
125
125
|
const root = splitName(name)[0];
|
|
@@ -164,8 +164,8 @@ async function mountOnce(target, name, props, options) {
|
|
|
164
164
|
const p = protocol();
|
|
165
165
|
await p.pending();
|
|
166
166
|
const isolate = options.isolate ?? registered(name)?.isolate ?? p.settings().isolate;
|
|
167
|
-
if (isolate === "iframe") return (frames ?? (await import("./reframe-
|
|
168
|
-
const { module: mod, ...resolved } = await (isolate == "reframe" ? (await import("./reframe-
|
|
167
|
+
if (isolate === "iframe") return (frames ?? (await import("./reframe-7K5S6JC6.js")).noFrames)(target, name, props, options).catch(fail);
|
|
168
|
+
const { module: mod, ...resolved } = await (isolate == "reframe" ? (await import("./reframe-7K5S6JC6.js")).load : load)(name, isolate, options.priority);
|
|
169
169
|
const untrack = track(name, resolved);
|
|
170
170
|
ctxHooks.watch?.(name);
|
|
171
171
|
const label = resolved.name ?? name;
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import {
|
|
2
2
|
hostSlot,
|
|
3
3
|
timings
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-TXSHK3SK.js";
|
|
5
5
|
import {
|
|
6
6
|
defineRemote,
|
|
7
7
|
memoSelect,
|
|
8
8
|
same,
|
|
9
9
|
shared
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-O7DV3EVB.js";
|
|
11
11
|
import {
|
|
12
12
|
registerSrc,
|
|
13
13
|
warmSsr
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-72H4FXMD.js";
|
|
15
15
|
|
|
16
16
|
// src/element.ts
|
|
17
17
|
var Base = typeof HTMLElement === "undefined" ? class {
|
|
@@ -69,7 +69,7 @@ var VitralRemoteElement = class extends Base {
|
|
|
69
69
|
}
|
|
70
70
|
};
|
|
71
71
|
const ssr = true ? this.querySelector(":scope>[data-vitral-ssr]") : null;
|
|
72
|
-
if (ssr) warmSsr(ssr), import("./hydrate-
|
|
72
|
+
if (ssr) warmSsr(ssr), import("./hydrate-NFZZMYWT.js").then((m) => this.isConnected && !this.#slot && (this.#slot = m.hydrateSlot(this, ssr, { ...options, props: this.#props })));
|
|
73
73
|
else this.#slot = hostSlot(this, options);
|
|
74
74
|
}
|
|
75
75
|
/**
|
package/dist/edge.d.ts
CHANGED
package/dist/element.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { P as Props, S as Shared, a as RemoteModule } from './types-
|
|
2
|
-
import { S as SlotStatus } from './slot-
|
|
1
|
+
import { P as Props, S as Shared, a as RemoteModule } from './types-EOz1rOHs.js';
|
|
2
|
+
import { S as SlotStatus } from './slot-Ddzp7AgL.js';
|
|
3
3
|
import './errors-kjBv6IH_.js';
|
|
4
4
|
|
|
5
5
|
/**
|
package/dist/element.js
CHANGED
|
@@ -3,10 +3,10 @@ import {
|
|
|
3
3
|
VitralRemoteElement,
|
|
4
4
|
defineVitralElement,
|
|
5
5
|
elementRemote
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-V24ZNHUF.js";
|
|
7
|
+
import "./chunk-TXSHK3SK.js";
|
|
8
|
+
import "./chunk-O7DV3EVB.js";
|
|
9
|
+
import "./chunk-72H4FXMD.js";
|
|
10
10
|
import "./chunk-KU6HF2EW.js";
|
|
11
11
|
import "./chunk-TW7KYJQ6.js";
|
|
12
12
|
import "./chunk-463H6B56.js";
|
package/dist/embed.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(()=>{var
|
|
2
|
-
`),document.head.appendChild(c)}a.replaceSync(u);let p=[...e,t];return Promise.all(l.filter(c=>!p.includes(c)).map(c=>re(c,p))).then(c=>[...c.flat(),a])}).catch(()=>(dt.delete(t),[])),dt.set(t,n)),n}function ee(t){let e=document.documentElement,o=[],r=()=>{t.classList.remove(...o),o=[...e.classList].filter(a=>!t.classList.contains(a)),t.classList.add(...o);let s=e.getAttribute("data-theme");s===null?t.removeAttribute("data-theme"):t.setAttribute("data-theme",s)};r();let n=new MutationObserver(r);return n.observe(e,{attributeFilter:["class","data-theme"]}),()=>n.disconnect()}var dt,yo,Zt,vo,Eo,pt,mt,Qt,te,ht=h(()=>{"use strict";et();dt=new Map,yo=()=>{},Zt=new Set,vo=/url\(\s*(['"]?)(?![a-z]+:|\/\/|#)([^'")]+)\1\s*\)/gi,Eo=/@property\s+(--[\w-]+)\s*\{[^}]*\}|@font-face\s*\{[^}]*\}|@import\s+(?:url\(\s*)?(?:(['"])(.*?)\2|([^'"\s);]+))\s*\)?[^;]*;/gi;pt=new Map,mt=!1,Qt=t=>Object.getPrototypeOf(t)===customElements,te=new Map});function yt(t,e,o){let r=`${t} ${e??""}`,n=vt.get(r);return n||(n=q(t,d().settings().timeout,t,{integrity:e,priority:o}).then(s=>new TextDecoder().decode(s)),n.catch(()=>vt.delete(r)),vt.set(r,n)),n}function ie(t,e,o="auto"){if(e&&Po())Promise.resolve().then(()=>(ht(),gt)).then(r=>r.prefetch(t,o),se);else for(let r of t.css)document.querySelector(`link[href="${r}"]`)||C("preload",r,{as:"style",integrity:t.sri?.[r]??"",fetchPriority:o})}function ae(t,e,o,r){return e?Promise.resolve().then(()=>(ht(),gt)).then(n=>n.attachShadowRoot(e,o,t,d().settings().styles,r)):F(t.css,null,t.sri).then(()=>[se])}function F(t,e,o={}){let r=e??document,n=ne.get(r);n||ne.set(r,n=new Map);let s=e??document.head,a=d().settings().timeout;return Promise.all(t.map(i=>{let l=n.get(i);return l||(l=new Promise(u=>{let p=C("stylesheet",i,{integrity:o[i]??""},s);setTimeout(u,a),p.onload=()=>u(),p.onerror=()=>{p.remove(),n.delete(i),u()}}),n.set(i,l)),l}))}var ne,vt,se,Po,et=h(()=>{"use strict";R();k();ne=new WeakMap,vt=new Map,se=()=>{},Po=()=>typeof CSSStyleSheet<"u"&&"replaceSync"in CSSStyleSheet.prototype});var ue={};L(ue,{resolveModule:()=>Lo,resolveTarget:()=>xo,splitName:()=>le});function le(t){let e=d(),o=t.length;if(!e.entry(t))for(;(o=t.lastIndexOf("/",o-1))>0&&!e.entry(t.slice(0,o)););return o>0&&o<t.length?[t.slice(0,o),"."+t.slice(o)]:[t,null]}function xo(t,e){return ce(t,e).then(o=>Et(t,o))}function ce(t,e){let o=d();return o.entry(t)||!t.includes("/")?e(t):o.pending().then(async()=>{let[r,n]=le(t);if(!n)return e(t);let s=await e(r),a=s.exports?.exposes;if(!a?.[n])throw new f("NOT_EXPOSED",t,`${r} n\xE3o exp\xF5e ${n}. Expostos: ${Object.keys(a??{}).join(", ")}`);try{let i=a[n],l=await(typeof i=="function"?i():i);return{...s,module:l?.default??l,exports:l}}catch(i){throw new f("LOAD_FAILED",t,String(i),i)}})}async function Lo(t,e){let o=await ce(t,e);if(!o.exports)throw new f("INVALID_MODULE",t,"o remote foi carregado por uma c\xF3pia antiga da lib, que n\xE3o guarda os exports");return o.exports}var de=h(()=>{"use strict";w();ot();R()});async function me(t,e,o){let r=o.split(/\s+/).map(i=>/^sha(256|384|512)-([\w+/=-]+)/.exec(i)).filter(i=>!!i);if(!r.length)throw new f("INTEGRITY",t,`formato de integrity inv\xE1lido: ${o}`);let n=Math.max(...r.map(i=>+i[1])),s=btoa(String.fromCharCode(...new Uint8Array(await crypto.subtle.digest("SHA-"+n,e)))),a=r.filter(i=>+i[1]===n).map(i=>i[2]);if(!a.some(i=>pe(i)===pe(s)))throw new f("INTEGRITY",t,`o hash n\xE3o confere: esperado sha${n}-${a.join(" ou ")}, obtido sha${n}-${s}`)}var pe,fe=h(()=>{"use strict";w();pe=t=>t.replace(/-/g,"+").replace(/_/g,"/").replace(/=/g,"")});var Pe={};L(Pe,{importVerified:()=>Oo,verified:()=>Se});async function Oo(t,e,o,r){let{entry:n,integrity:s,priority:a}=e;if(!Rt.has(n))try{let p=await V(r,t,(async()=>{let c=await Se(e.split??{entry:n,chunks:[],sri:{[n]:s},priority:a},o);return c&&{ns:await o(c)}})());if(p)return p.ns}catch(u){if(Rt.add(n),u instanceof f&&u.code==="TIMEOUT")throw u}let i=await q(n,r,t,Rt.has(n)?{priority:a,cache:"reload"}:{priority:a});await me(t,i,s);let l=URL.createObjectURL(new Blob([i],{type:"text/javascript"}));try{return await o(l)}finally{URL.revokeObjectURL(l)}}async function To(t){if(wt)return await wt&&Re(t,!1);let e=!1;try{e=localStorage[ve]===navigator.userAgent}catch{}let o=await(wt=Re(t,!e));if(o&&!e)try{localStorage[ve]=navigator.userAgent}catch{}return o}async function Se(t,e){let{entry:o,chunks:r,sri:n,priority:s="auto",dedupe:a=[]}=t,i=a.flatMap(p=>[...p.chunks??[],p.file]);if(![o,...r,...i].every(p=>Mo.test(n[p]??"")))return;let l=globalThis[Symbol.for("vitral")],u=async p=>{if(!e||!a.length)return;let{shared:c}=await Promise.resolve().then(()=>(Q(),Z));for(let g of a)c(l)(g.name,g.range,{version:g.version,url:g.file,load:async()=>(p&&await Promise.all([...g.chunks??[],g.file].map(m=>St(m,n[m],s))),(await e(g.file)).default)})};if(he!==!1&&(he=await To(n))){await u();for(let p of r)fetch(p,{priority:s}).catch(()=>{});return o}if(await(ko??=Co()))return l.sri={...l.sri,...n},await u(!0),await Promise.all([...r,o].map(p=>St(p,n[p],s))),o}async function Re(t,e){if(!HTMLScriptElement.supports?.("importmap"))return!1;let o={};for(let s in t)!/\.css([?#]|$)/.test(s)&&!ye.has(s)&&(ye.add(s),o[s]=t[s]);let r=e?["export{}","export{}//"].map(s=>URL.createObjectURL(new Blob([s],{type:"text/javascript"}))):[];for(let s of r)o[s]=we;let n=!0;try{let s=document.createElement("script");s.type="importmap",s.nonce=document.querySelector("script[nonce]")?.nonce??"",s.onerror=()=>n=!1,s.addEventListener("securitypolicyviolation",()=>n=!1),s.textContent=JSON.stringify({integrity:o}),document.head.append(s),await Ee(),await Ee(),n&&e&&(n=await be(a=>import(a),r[0],r[1]))}catch{n=!1}for(let s of r)URL.revokeObjectURL(s);return n}function St(t,e,o="auto"){return new Promise((r,n)=>{let s=C("modulepreload",t,{integrity:e,fetchPriority:o});s.onload=r,s.onerror=n})}function Co(){return document.createElement("link").relList.supports("modulepreload")?be(t=>St(t,we),ge,ge+"//"):Promise.resolve(!1)}function be(t,e,o){return Promise.race([Promise.all([t(e).then(()=>!0,()=>!1),t(o).then(()=>!1,()=>!0)]).then(([r,n])=>r&&n),new Promise(r=>setTimeout(r,3e3,!1))])}var Rt,Mo,ge,we,he,ye,wt,ko,ve,Ee,xe=h(()=>{"use strict";fe();w();k();Rt=new Set;Mo=/^(sha(256|384|512)-[A-Za-z0-9+/]+={0,2}( +|$))+$/,ge="data:text/javascript,export{}",we="sha256-d3bjIZdvLjBurwdLwkSVOnEBPFFly+T1SR9r3VVHBGg=",ye=new Set,ve="vitral:sri-map";Ee=()=>new Promise(t=>{let e=new MessageChannel;e.port1.onmessage=()=>t(),e.port2.postMessage(0)})});var Ce={};L(Ce,{OVERRIDES_KEY:()=>rt,activeOverrides:()=>Te,clearOverrides:()=>Me,dropOverride:()=>$o,isRef:()=>bt,manifestUrl:()=>nt,overrideFor:()=>Do,overridesEnabled:()=>Oe,resolveOverride:()=>ke,storeOverride:()=>Ao,storedOverrides:()=>xt});function Oe(){return!!d().settings().devOverrides||typeof location<"u"&&/^(localhost|127\.0\.0\.1|\[::1\])$/.test(location.hostname)}function Ao(t,e){let o=xt();e?o[t]=bt(e)?e:nt(e):delete o[t],K(it,o)}function Io(){let t=Pt(st),e=new URLSearchParams(location.search).getAll("vitral").join(",").split(",");if(!e.some(Boolean))return t;for(let o of e){let r=o.indexOf("@");o==="off"?(Me(),Object.keys(t).forEach(n=>delete t[n])):r>0&&o.slice(r+1)==="off"?delete t[o.slice(0,r)]:r>0&&(t[o.slice(0,r)]=o.slice(r+1))}return K(st,t),t}function Me(){K(st,{}),K(it,{})}function $o(t){for(let e of[st,it]){let o=Pt(e);delete o[t],K(e,o)}}function ke(t,e){if(!bt(e))return new URL(nt(e),location.href).href;let o=d().settings().devOverrides,r=typeof o=="object"?o.preview:void 0;if(!r)return;let n=r.replace(/\{name\}/g,encodeURIComponent(t)).replace(/\{ref\}/g,encodeURIComponent(e));return new URL(nt(n),location.href).href}function Te(){let t=Io(),e={};for(let[o,r]of[["navegador",xt()],["aba",t]])for(let[n,s]of Object.entries(r))e[n]={name:n,value:s,url:ke(n,s),source:o};return Object.values(e)}function Do(t){if(!Oe())return;let e=Te().find(a=>a.name===t);if(!e)return;let o=!Le.has(t)&&Le.add(t);if(!e.url){o&&console.warn(`[vitral] override ${t}@${e.value} ignorado: falta configure({ devOverrides: { preview } })`);return}let r=d(),n=r.settings().trusted??[],s=new URL(e.url).origin;return n.includes(s)||r.configure({trusted:[...n,s]}),o&&console.warn(`[vitral] override ativo: ${t} \u2192 ${e.url} (${e.source}). Para limpar: ?vitral=off`),{url:e.url}}var rt,nt,bt,Pt,K,it,st,xt,Le,Ae=h(()=>{"use strict";R();rt="vitral:overrides";nt=t=>/\.(json|m?js)(\?|$)/.test(t)?t:t.replace(/\/?$/,"/vitral.json"),bt=t=>/^[\w.-]+$/.test(t),Pt=t=>{try{return JSON.parse(t().getItem(rt)??"{}")??{}}catch{return{}}},K=(t,e)=>{try{Object.keys(e).length?t().setItem(rt,JSON.stringify(e)):t().removeItem(rt)}catch{}},it=()=>localStorage,st=()=>sessionStorage,xt=()=>Pt(it);Le=new Set});var Ue={};L(Ue,{bucket:()=>He,pick:()=>Ho,resetChannels:()=>jo,versionUrl:()=>De});async function Ho(t,e,o){if(typeof o.stable!="string")throw new f("INVALID_MODULE",t,`canal inv\xE1lido em ${e.url}: falta "stable"`);O.watch=Uo;let r={name:t,bucket:He(t)},{canary:n,stable:s}=o,a=await e.resolve?.(o,r)??(n&&r.bucket<n.percent?n.version:s);return a!==s&&_e()[t]===a&&(a=s),a===s||e.rollback===!1?U.delete(t):U.get(t)?.from!==a&&U.set(t,{from:a,to:s,errors:0,mounts:0,max:{errors:3,mounts:20,...e.rollback}}),{...e,url:De(a,e.url),integrity:void 0,manifest:void 0}}function He(t){let e=d().settings().canaryKey??_o(),o=2166136261;for(let r of`${e}:${t}`)o=Math.imul(o^r.charCodeAt(0),16777619);return(o>>>0)%100}function _o(){try{_??=localStorage.getItem(Ie)??void 0}catch{}if(!_){_=Math.random().toString(36).slice(2);try{localStorage.setItem(Ie,_)}catch{}}return _}function _e(){try{return{...JSON.parse(sessionStorage.getItem($e)||"{}"),...G}}catch{return G}}function Uo(t,e){for(let[o,r]of U)t!==o&&!t.startsWith(o+"/")||(e?++r.errors>=r.max.errors&&No(o,r):++r.mounts>r.max.mounts&&(r.mounts=1,r.errors=0))}function No(t,e){U.delete(t),G={..._e(),[t]:e.from};try{sessionStorage.setItem($e,JSON.stringify(G))}catch{}console.warn(`[vitral] ${t}: ${e.errors} erros em ${e.mounts} montagens da vers\xE3o ${e.from}; voltando para ${e.to}`);try{d().settings().onRollback?.({name:t,from:e.from,to:e.to,errors:e.errors,mounts:e.mounts})}catch{}let o=d();o.register(t,o.entry(t)),o.events.emit("vitral:refresh",t)}function jo(){U.clear(),G={},_=void 0}var $e,Ie,U,G,_,De,Ne=h(()=>{"use strict";w();W();R();k();$e="vitral:rollback",Ie="vitral:id",U=new Map,G={};De=(t,e)=>b(/[/:]|\.(m?js|json)$/.test(t)?t:`${t}/vitral.json`,e)});var je={};L(je,{checkContract:()=>Bo});async function Bo(t,e=d().settings().contract){let{satisfies:o}=await Promise.resolve().then(()=>(Q(),Z));if(t.version&&!o(t.version,e))return`o host aceita contrato ${e}, o remote publica ${t.version}`;let r=d().settings().offered??{};for(let n in t.peers){let s=r[n];if(s&&!o(s,t.peers[n]))return`o remote espera ${n} ${t.peers[n]}, o host oferece ${s}`}}var Be=h(()=>{"use strict";R()});function Ve(t){Ot(t).catch(()=>{})}function Ot(t,e,o){let r=n=>Vo(n,e,o);return(d().entry(t)||!t.includes("/")?r(t).then(n=>Et(t,n)):Promise.resolve().then(()=>(de(),ue)).then(n=>n.resolveTarget(t,r))).catch(z)}function Vo(t,e,o){let r=d();return r.load(t,async()=>{qe??=Promise.resolve().then(()=>(xe(),Pe)).catch(()=>null);let n;try{await r.pending();let s=await Fe(t),a=s?{isolate:r.entry(t)?.isolate,...s}:r.entry(t);if(!a)throw new f("NOT_REGISTERED",t,"remote n\xE3o registrado. Use configure({ remotes }).");if(a.module)return await qo(t,a);let i=performance.now();n=await Lt(t,a,o),D(t,"manifest",i),ie(n,(e??n.isolate??r.settings().isolate)==="shadow",o),i=performance.now();let l=await Bt(r.settings().retries,()=>Fo(t,n));return D(t,"js",i),{...n,module:l?.default??l,exports:l}}catch(s){throw M(S(s)?s:new f("LOAD_FAILED",t,String(s?.message??s),s),n)}})}function Fe(t){try{let e="vitral:overrides";if(location.search.includes("vitral")||localStorage[e]||sessionStorage[e])return Promise.resolve().then(()=>(Ae(),Ce)).then(o=>o.overrideFor(t))}catch{}}async function qo(t,e){let o=e.module;return typeof o=="function"&&(o=await o()),{module:o?.default??o,exports:o,entry:typeof location<"u"?location.href:"http://localhost/",css:e.css??[],isolate:e.isolate}}async function Lt(t,e,o){tt(t,e.url);let r=e.manifest??(new URL(e.url).pathname.endsWith(".json")?await X(e.url,d().settings().timeout,t,{cache:"no-cache",priority:o}):{name:t,entry:e.url});if(r?.stable)return Lt(t,await(await Promise.resolve().then(()=>(Ne(),Ue))).pick(t,e,r),o);if(typeof r?.entry!="string")throw new f("INVALID_MODULE",t,`manifesto inv\xE1lido em ${e.url}`);if(r.contract&&(e.contract||d().settings().contract)){let i=await(await Promise.resolve().then(()=>(Be(),je))).checkContract(r.contract,e.contract);if(i)throw new f("CONTRACT_MISMATCH",t,i)}let n=i=>b(i,e.url),s={};for(let i in r.files??{})s[n(i)]=r.files[i];let a={entry:n(r.entry),css:[...r.css??[],...e.css??[]].map(n),shadow:r.shadow,integrity:e.integrity??r.integrity,isolate:e.isolate,scope:r.scope,version:r.version,sri:s,priority:o,split:r.split&&!e.integrity?{entry:n(r.split.entry),chunks:(r.split.chunks??[]).map(n),sri:s,priority:o,dedupe:r.dedupe?.map(i=>({...i,file:n(i.file),chunks:i.chunks?.map(n)}))}:void 0};tt(t,a.entry);for(let i of[a.split?.entry,...(a.split?.dedupe??[]).map(l=>l.file)])i&&tt(t,i);if(t===e.url&&r.name){let i=await Fe(r.name);if(i)return{...await Lt(t,i),name:r.name};a.name=r.name,d().entry(r.name)||d().register(r.name,e)}return a}async function Fo(t,e){let{timeout:o}=d().settings(),r=s=>V(o,t,import(s)).catch(a=>{throw S(a)?a:new f("LOAD_FAILED",t,`falha ao importar ${e.entry}`,a)});if(!e.integrity)return r(e.entry);let n=await qe;if(!n)throw new f("LOAD_FAILED",t,"n\xE3o foi poss\xEDvel carregar o verificador de integrity");return n.importVerified(t,e,r,o)}function Et(t,e){if(typeof e.module?.mount!="function")throw new f("INVALID_MODULE",t,"o m\xF3dulo n\xE3o exporta mount(). Use defineRemote(), ou loadModule() para m\xF3dulo sem UI.");return e}var qe,ot=h(()=>{"use strict";et();w();H();R();k()});var Mt={};L(Mt,{load:()=>Ze,noFrames:()=>Ko});function Ze(t){throw new f("MOUNT_FAILED",t,"isolate sem suporte no embed.js")}var Ko,kt=h(()=>{"use strict";w();Ko=(t,e)=>Ze(e)});H();et();w();R();var I={emit:(t,e)=>d().events.emit(t,e),on:(t,e)=>d().events.on(t,e),last:t=>d().events.last(t)};function Ke(){let t=new Set,e=o=>{let r=()=>(t.delete(r),o());return t.add(r),r};return{bus:{emit:(o,r)=>I.emit(o,r),last:o=>I.last(o),on:(o,r)=>e(I.on(o,r))},track:e,dispose(){for(let o of[...t])o()}}}W();ot();function Ge(t,e={}){let o=new URL(t,location.href);if(o.origin!==location.origin){location.assign(o.href);return}e.replace?history.replaceState(history.state,"",o.href):history.pushState(history.state,"",o.href),dispatchEvent(new PopStateEvent("popstate",{state:history.state})),I.emit("vitral:navigate",o.pathname+o.search+o.hash)}R();w();var Je=new Map,J=new Map;function ze(t,e){return Je.set(t,e.entry),$.set(t,e),J.set(t,(J.get(t)??0)+1),()=>{let o=J.get(t)-1;o?J.set(t,o):(J.delete(t),Je.delete(t),$.delete(t))}}var Ye=null;function Xe(t,e,o,r){let n=0,s=I.on("vitral:refresh",a=>{if(a!==e&&!e.startsWith(a+"/"))return;let i=++n,l=o,u=r(l).then(p=>{if(t.unmount===We||i!==n)return p.unmount();let c=t;t=p,c.unmount(),o!==l&&p.update?.(o)});Ye?Ye.push(u):u.catch(console.error)});return{update(a){o=a,t.update?.(a)},unmount(){s(),t.unmount(),t={unmount:We}}}}var We=()=>{};k();async function to(t,e,o,r={}){return Xe(await Qe(t,e,o,r),e,o,n=>Qe(t,e,n,r))}var Go;async function Qe(t,e,o,r){let n=d();await n.pending();let s=r.isolate??Jo(e)?.isolate??n.settings().isolate;if(s==="iframe")return(Go??(await Promise.resolve().then(()=>(kt(),Mt))).noFrames)(t,e,o,r).catch(z);let{module:a,...i}=await(s=="reframe"?(await Promise.resolve().then(()=>(kt(),Mt))).load:Ot)(e,s,r.priority),l=ze(e,i);O.watch?.(e);let u=i.name??e,p=E=>{let P=document.createElement("div",E);return P.setAttribute("data-vitral-root",u),i.scope&&P.setAttribute("data-vitral-scope",i.scope),P.style.display="contents",P},c=performance.now(),[g,m=document.body,y=null,x=customElements,v=t.appendChild(p())]=await ae(i,s>"q"&&t,p,r.styles);D(e,"css",c),c=performance.now();let Y=Ke(),It=E=>P=>(v.addEventListener(E,P),()=>v.removeEventListener(E,P)),$t={name:u,baseUrl:new URL(".",i.entry).href,events:Y.bus,shadowRoot:y,portalContainer:m,customElements:x,reportError(E){let P=M(S(E)?E:new f("RENDER_FAILED",u,String(E?.message??E),E),i);r.onError?r.onError(P):console.error(P)},navigate:Ge,protocol:n.protocol,onActivate:It("vitral:activate"),onDeactivate:It("vitral:deactivate")};O.shared&&($t.shared=O.shared(e,Y.track));let at;try{at=await a.mount(v,o,$t),D(e,"mount",c)}catch(E){throw l(),Y.dispose(),g(),v.remove(),M(new f("MOUNT_FAILED",u,"erro ao montar",E),i)}let lt=!0;return{update(E){lt&&at.update?.(E)},unmount(){if(lt){lt=!1;try{at.unmount()}finally{l(),Y.dispose(),g(),v.remove()}}}}}function Jo(t){let e=d(),o=t;for(;o&&!e.entry(o);)o=o.slice(0,Math.max(0,o.lastIndexOf("/")));return o?e.entry(o):void 0}w();H();function eo(t,e){let{isolate:o}=e,r=m=>m.src?A(m.src,m.name):m.name??"",n=r(e),s=e.props??{},a=null,i=null,l=0,u="loading",p=(m,y=null)=>{u=m,i&&(i.style.display=m==="error"?"none":""),e.onStatus?.(m,y)},c=()=>{a?.unmount(),a=null,i?.remove(),i=null},g=()=>{let m=++l;c(),i=document.createElement("div"),i.setAttribute("data-vitral-slot",n),t.appendChild(i),p("loading");let y=v=>{m===l&&p("error",S(v)?v:new f("MOUNT_FAILED",n,String(v),v))},x=s;to(i,n,s,{isolate:o,priority:e.priority,styles:e.styles,onError:y}).then(v=>{if(m!==l)return v.unmount();a=v,s!==x&&v.update?.(s),p("ready")},y)};return g(),{update(m){s=m,a?.update?.(m)},set(m){let y=m.src||m.name!==void 0?r(m):n,x=y!==n||"isolate"in m&&m.isolate!==o;n=y,"isolate"in m&&(o=m.isolate),x&&g()},retry:g,destroy(){l++,c()},get status(){return u}}}ot();H();var Tt=()=>{};function ro(t){let e={};if(typeof performance>"u"||!performance.getEntriesByName)return e;for(let o of["manifest","js","css","mount"]){let r=performance.getEntriesByName(`vitral:${t}:${o}`,"measure").pop();r&&(e[o]=Math.round(r.duration*10)/10)}return e}function oo(t,e,o){if(e==="lazy"||e==="visible"){if(typeof IntersectionObserver>"u")return o(),Tt;let r=new IntersectionObserver(n=>{n.some(s=>s.isIntersecting)&&(r.disconnect(),o())},{rootMargin:"200px"});return r.observe(t),()=>r.disconnect()}if(e==="idle"){if(typeof requestIdleCallback>"u"){let n=setTimeout(o,1);return()=>clearTimeout(n)}let r=requestIdleCallback(o,{timeout:2e3});return()=>cancelIdleCallback(r)}if(e==="hover"){let r=()=>(n(),o()),n=()=>{t.removeEventListener("pointerenter",r),t.removeEventListener("focusin",r)};return t.addEventListener("pointerenter",r),t.addEventListener("focusin",r),n}return o(),Tt}var T=new Map,N=null;function no(t,e){try{t.moveBefore(e,null)}catch{t.appendChild(e)}}function Ct(t,e){for(let o of t.querySelectorAll("*"))o.hasAttribute("data-vitral-root")&&o.dispatchEvent(new Event(e)),o.shadowRoot&&Ct(o.shadowRoot,e)}function Yo(t,e,o){T.get(t)?.slot.destroy(),T.delete(t),N?.isConnected||(N=document.createElement("div"),N.hidden=!0,N.setAttribute("data-vitral-keep-alive",""),document.body.appendChild(N)),no(N,e.box),Ct(e.box,"vitral:deactivate"),T.set(t,e);for(let[r,n]of T){if(T.size<=o)break;T.delete(r),n.slot.destroy(),n.box.remove()}}function so(t,e){let{props:o={},keepAlive:r}=e,n=c=>c.src?A(c.src,c.name):c.name??"",s=n(e),a="loading",i=null,l=(c,g)=>{a=c,e.onStatus?.(c,g)},u=e.prefetch?oo(t,e.prefetch,()=>Ve(s)):Tt,p=oo(t,e.loading,()=>{u();let c=r?T.get(s):void 0;if(c){T.delete(s),i=c,i.on=l,no(t,i.box),i.slot.update(o),Ct(i.box,"vitral:activate"),l(i.slot.status,null);return}let g=t;r&&(g=t.appendChild(document.createElement("div")),g.style.display="contents");let m={box:g,on:l,slot:null};m.slot=eo(g,{...e,name:s,src:void 0,props:o,onStatus:(y,x)=>m.on(y,x)}),i=m});return{update(c){o=c,i?.slot.update(c)},set(c){(c.src||c.name!==void 0)&&(s=n(c)),i?.slot.set({...c,src:void 0,name:s})},retry:()=>i?.slot.retry(),destroy(){p(),u(),i&&(r&&a==="ready"?Yo(s,i,r===!0?5:r):(i.slot.destroy(),i.box!==t&&i.box.remove()),i=null)},get status(){return a}}}H();var Wo=typeof HTMLElement>"u"?class{}:HTMLElement,At=class extends Wo{static{this.observedAttributes=["name","src","props","isolate"]}#t=null;#e={};get props(){return this.#e}set props(e){this.#e=e??{},this.#t?.update(this.#e)}get status(){return this.#t?.status??"loading"}retry(){this.#t?.retry()}connectedCallback(){if(this.#t)return;let e=this.#r();if(!e)return;this.hasAttribute("props")&&!Object.keys(this.#e).length&&(this.#e=io(this.getAttribute("props")));let o=this.getAttribute("keep-alive"),r={name:e,props:this.#e,isolate:this.getAttribute("isolate")||void 0,loading:this.getAttribute("loading"),prefetch:this.getAttribute("prefetch"),priority:this.getAttribute("priority")||void 0,keepAlive:o===null?!1:Number(o)||!0,styles:{inherit:this.getAttribute("inherit-styles")?.split(/\s+/).filter(Boolean)},onStatus:(s,a)=>{this.setAttribute("data-vitral-status",s),s==="loading"?this.setAttribute("aria-busy","true"):this.removeAttribute("aria-busy");let i=l=>{let u=this.querySelectorAll(`:scope > [slot="${l}"]`);for(let p of u)p.hidden=s!==(l==="fallback"?"loading":"error");return u.length>0};queueMicrotask(()=>{if(this.#t?.status!==s)return;let l={loading:i("fallback"),error:i("error"),ready:!0};this.#n(l[s]?null:s)}),s==="ready"&&this.dispatchEvent(new CustomEvent("vitral-ready",{bubbles:!0,detail:{timings:ro(e)}})),s==="error"&&this.dispatchEvent(new CustomEvent("vitral-error",{bubbles:!0,detail:{error:a}}))}},n=null;this.#t=so(this,r)}#r(){let e=this.getAttribute("src"),o=this.getAttribute("name");return e?A(e,o??void 0,!1):o}#o=null;#n(e){if(this.#o?.remove(),this.#o=null,!e)return;let o=document.createElement("div");if(o.setAttribute("data-vitral-default",e),e==="loading")o.setAttribute("role","status"),o.textContent="Carregando\u2026";else{o.setAttribute("role","alert");let r=document.createElement("button");r.type="button",r.textContent="Tentar de novo",r.onclick=()=>this.retry(),o.append("N\xE3o foi poss\xEDvel carregar. ",r)}this.prepend(this.#o=o)}disconnectedCallback(){queueMicrotask(()=>{this.isConnected||(this.#t?.destroy(),this.#t=null,this.#n(null))})}attributeChangedCallback(e,o,r){if(e==="props")return void(this.props=io(r));if(!this.#t)return void(this.isConnected&&this.connectedCallback());if(e==="name"||e==="src"){let n=this.#r();n&&this.#t.set({name:n})}e==="isolate"&&this.#t.set({isolate:r||void 0})}};function io(t){if(!t)return{};try{return JSON.parse(t)}catch{return console.error("[vitral] atributo props n\xE3o \xE9 JSON v\xE1lido:",t),{}}}function ao(t="vitral-remote"){typeof customElements<"u"&&!customElements.get(t)&&customElements.define(t,class extends At{})}R();k();var lo="data-vitral-embed";function co(t){let e=t.dataset;if(!e.remote||t.hasAttribute(lo))return null;let o=e.target?document.querySelector(e.target):t.closest("body")?t:document.body;if(!o)return document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>co(t),{once:!0}):console.error(`[vitral] data-target n\xE3o encontrado: ${e.target}`),null;t.setAttribute(lo,"");let r=b(e.remote);zo([new URL(r).origin,...e.origins?.split(/\s+/).filter(Boolean)??[]]),ao();let n=document.createElement("vitral-remote");return n.setAttribute("isolate",e.isolate||"shadow"),e.loading&&n.setAttribute("loading",e.loading),e.props&&n.setAttribute("props",e.props),e.name&&n.setAttribute("name",e.name),n.setAttribute("src",r),o===t?t.after(n):o.appendChild(n),n}function zo(t){let e=d(),o=e.settings().allowedOrigins??[B(),...e.origins()].filter(Boolean);ut({allowedOrigins:[...new Set([...o,...t])]})}var Xo=Symbol.for("vitral:embed"),Zo=globalThis[Xo]??=co;typeof document<"u"&&document.currentScript instanceof HTMLScriptElement&&Zo(document.currentScript);})();
|
|
1
|
+
"use strict";(()=>{var po=Object.defineProperty;var h=(t,e)=>()=>(t&&(e=t(t=0)),e);var x=(t,e)=>{for(var o in e)po(t,o,{get:e[o],enumerable:!0})};var O,X=h(()=>{"use strict";O={}});function Ht(){let t=new Map,e=new Map;return{emit(o,r){e.set(o,r);for(let n of[...t.get(o)??[]])try{n(r)}catch(s){console.error(`[vitral] handler de "${o}" falhou`,s)}},on(o,r){let n=t.get(o);return n||t.set(o,n=new Set),n.add(r),()=>n.delete(r)},last(o){return e.get(o)}}}var _t=h(()=>{"use strict"});function fo(){let t={timeout:15e3,retries:1,isolate:"none",allowedOrigins:null},e=new Map,o=new Map,r=Promise.resolve();return{protocol:jt,events:Ht(),settings:()=>t,configure(n){Object.assign(t,n)},register(n,s){e.set(n,s),o.delete(n)},entry:n=>e.get(n),origins:()=>[...e.values()].filter(n=>n.url).map(n=>new URL(n.url).origin),pending(n){return n&&(r=Promise.all([r,n])),r.then(()=>{})},load(n,s){let a=o.get(n);if(!a){a=s();let i=a;i.catch(()=>o.get(n)===i&&o.delete(n)),o.set(n,a)}return a}}}function d(){let t=Nt[Ut];return t&&typeof t.protocol=="number"&&t.protocol>=jt?t:Nt[Ut]=fo()}var jt,Ut,Nt,R=h(()=>{"use strict";_t();jt=1,Ut=Symbol.for("vitral"),Nt=globalThis});function M(t,e){if(S(t)&&!j.has(t)){j.add(t),t.cause instanceof Object&&j.add(t.cause),t.entry??=e?.entry??d().entry(t.remote)?.url,t.version??=e?.version;try{d().settings().onError?.(t)}catch{}O.watch?.(t.remote,t)}return t}var Bt,f,S,$,j,Z,w=h(()=>{"use strict";X();R();Bt="https://joaogabriel15.github.io/vitral/erros/",f=class extends Error{constructor(o,r,n,s){super(`[vitral] ${r}: ${n} (${Bt}${o})`);this.code=o;this.remote=r;this.cause=s;this.name="RemoteError",this.docs=`${Bt}${o}`,typeof location<"u"&&(this.route=location.pathname)}},S=t=>t?.name==="RemoteError",$=new Map,j=new WeakSet;Z=t=>{throw M(t)}});function B(){return typeof location<"u"?location.origin:null}function b(t,e){return new URL(t,e??(typeof location<"u"?location.href:void 0)).href}async function Vt(t,e){for(let o=0;;o++)try{return await e()}catch(r){if(!(S(r)&&(r.code==="LOAD_FAILED"||r.code==="TIMEOUT"))||o>=t)throw r;await new Promise(s=>setTimeout(s,200*2**o))}}function V(t,e,o){return new Promise((r,n)=>{let s=setTimeout(()=>n(new f("TIMEOUT",e,`n\xE3o respondeu em ${t}ms`)),t);o.then(r,n).finally(()=>clearTimeout(s))})}function q(t,e,o,r){let n=new AbortController,s=fetch(t,{signal:n.signal,credentials:"omit",...r}).then(a=>{if(!a.ok)throw new f("LOAD_FAILED",o,`HTTP ${a.status} em ${t}`);return a.arrayBuffer()},a=>{throw new f("LOAD_FAILED",o,`falha ao baixar ${t}`,a)});return V(e,o,s).catch(a=>{throw n.abort(),a})}async function Q(t,e,o,r){let n=new TextDecoder().decode(await q(t,e,o,r));try{return JSON.parse(n)}catch(s){throw new f("INVALID_MODULE",o,`JSON inv\xE1lido em ${t}`,s)}}function C(t,e,o={},r=document.head){return r.appendChild(Object.assign(document.createElement("link"),{rel:t,crossOrigin:"anonymous",href:e},o))}function D(t,e,o){try{let r=`vitral:${t}:${e}`;performance.clearMeasures(r),performance.measure(r,{start:o}),d().settings().onMetric?.({name:t,stage:e,start:o,duration:performance.now()-o})}catch{}}var k=h(()=>{"use strict";w();R()});var Jt={};x(Jt,{capture:()=>go,owner:()=>Kt});function go(){qt||typeof addEventListener>"u"||(qt=!0,addEventListener("error",t=>Ft(t.error,t.filename)),addEventListener("unhandledrejection",t=>Ft(t.reason)))}function Kt(t,e){let o=e||String(t?.stack??"").match(/(?:https?|file):\/\/[^\s)'"]+/)?.[0];if(!o)return;let r=[...document.querySelectorAll("script[src],link[rel=modulepreload]")].map(a=>a.src||a.href),n,s=0;for(let[a,{entry:i}]of $){let l=new URL(".",i).href;l.length>s&&o.startsWith(l)&&!r.some(u=>u.startsWith(l))&&(n=a,s=l.length)}return n}function Ft(t,e){if(!d().settings().captureGlobalErrors||S(t)||t instanceof Object&&j.has(t))return;let o=Kt(t,e);o&&M(new f("RENDER_FAILED",o,String(t?.message??t),t),$.get(o))}var qt,Gt=h(()=>{"use strict";w();R();qt=!1});function ct(t,e){if(e==="*")return!0;let[,o="",r=""]=/^(\^|~|>=|=)?(.*)$/.exec(e.trim());if(!o||o==="="||t.includes("-"))return t===r;let[n,s]=[t,r].map(i=>(i+".0.0").split(".",3).map(Number));for(let i=0;i<3;i++)if(n[i]!==s[i]){if(!(n[i]>s[i]))return!1;break}if(o===">=")return!0;let a=Math.min(r.split(".").length,o==="~"?2:s[0]?1:s[1]?2:3);return n.slice(0,a).join(".")===s.slice(0,a).join(".")}var Yt=h(()=>{"use strict"});var F={};x(F,{offer:()=>vo,satisfies:()=>ct,shared:()=>zt});function zt(t){if(!t.dedupe){let e=new Map,o=new Map,r=(s,a)=>s.includes(a)&&s.splice(s.indexOf(a),1),n=(s,a,i)=>(i.p||((i.p=i.load()).catch(()=>r(a,i)),i.url&&i.p.then(()=>yo(`${s}@${i.version}`,i.url),()=>{})),i.p);t.dedupe=(s,a,i)=>{let l=i,u=e.get(s)??[];e.set(s,u),l?.url&&o.get(s+l.url)?.(l);let m=u.find(c=>ct(c.version,a));if(!m&&l){m=u[u.push(l)-1];let c=l.url&&ho(`${s}@${l.version}`);c&&c!==l.url&&(l.p=new Promise(g=>{o.set(s+c,g),setTimeout(g,300,l)}).then(g=>(o.delete(s+c),g===l&&(l.p=void 0),n(s,u,g))),l.p.catch(()=>r(u,l)))}return m&&n(s,u,m)}}return t.dedupe}function vo(t,e){for(let o in e){let{version:r,modules:n}=e[o];zt(t)(o,r,{version:r,load:async()=>n}),t.configure({offered:{...t.settings().offered,[o]:r}})}}var Wt,ho,yo,K=h(()=>{"use strict";Yt();Wt="vitral:dedupe:",ho=t=>{try{return localStorage.getItem(Wt+t)}catch{return null}},yo=(t,e)=>{try{localStorage.setItem(Wt+t,e)}catch{}}});function ut(t){let e=d(),{remotes:o,dedupe:r,...n}=t;if(e.configure(n),n.captureGlobalErrors&&Promise.resolve().then(()=>(Gt(),Jt)).then(s=>s.capture()),r&&e.pending(Promise.resolve().then(()=>(K(),F)).then(s=>s.offer(e,r)).catch(()=>{})),typeof o=="string"){let s=b(o);e.pending(Q(s,e.settings().timeout,"remotes",{cache:"no-cache"}).then(a=>Xt(a,s))).catch(()=>{})}else o&&Xt(o)}function Zt(t,e){let o=typeof e=="string"?{url:e}:e;if(!o.url&&!o.module)throw new f("NOT_REGISTERED",t,"informe url ou module");if(!o.url)return d().register(t,o);let r=b(o.url);d().register(t,{...o,url:r});let{origin:n}=new URL(r);typeof document<"u"&&n!==B()&&n!=="null"&&!document.querySelector(`link[href="${n}"]`)&&C("preconnect",n)}function A(t,e,o=!0){let r=d(),n=b(t),s=e||n;r.entry(s)?.url!==n&&r.register(s,{url:n});let a=new URL(n).origin,i=r.settings().trusted??[];return o&&!i.includes(a)&&r.configure({trusted:[...i,a]}),s}function Xt(t,e){for(let[o,r]of Object.entries(t)){let n=typeof r=="string"?{url:r}:r;Zt(o,n.url?{...n,url:b(n.url,e)}:n)}}function tt(t,e){let o=d(),r=new URL(e).origin,{allowedOrigins:n,trusted:s=[]}=o.settings(),a=[...n??[B(),...o.origins()].filter(Boolean),...s];if(!(a.includes("*")||a.includes(r)||e.startsWith("blob:")))throw new f("ORIGIN_BLOCKED",t,`origem ${r} n\xE3o est\xE1 em allowedOrigins`)}var H=h(()=>{"use strict";w();R();k()});var gt={};x(gt,{attachShadowRoot:()=>bo,prefetch:()=>So,registryFor:()=>ft});function re({css:t,shadow:e}){let o=n=>new URL(n,t[0]).href,r=e?e.css.map(o):[];return[e?[...(e.imports??[]).map(o),...r,...t.slice(r.length)]:t,r,(e?.global??[]).map(o)]}function So(t,e){let[o,,r]=re(t);for(let n of o)yt(n,t.sri?.[n],e).catch(Eo);J(r,null,t.sri)}async function bo(t,e,o,r={},n={}){let s=e().getAttribute("data-vitral-root"),a=ft(s),i=t.shadowRoot;if(!i&&!te(a))try{i=t.attachShadow({mode:"open",customElementRegistry:a})}catch{pt=!0,mt.delete(s),a=ft(s)}i??=t.attachShadow({mode:"open"});let l=i.customElementRegistry??a,u=e();if(!te(l))try{u=e({customElementRegistry:l})}catch{}return u.isConnected||i.appendChild(u),[...await xo(i,u,o,r,n),i,l,u]}function ft(t){let e=mt.get(t);if(e)return e;let o=customElements;if(!pt&&"initialize"in CustomElementRegistry.prototype)try{o=new CustomElementRegistry}catch{pt=!0}let r=o===customElements,n=e=r?Object.create(o):o;if(r)for(let a of["get","getName","upgrade","whenDefined"])a in o&&(n[a]=o[a].bind(o));let s=o.define;return n.define=(a,i,l)=>{let u=o.get(a),m=ee.get(a);if(!u)return r&&ee.set(a,t),s.call(o,a,i,l);r&&u!==i&&m!==t&&Po()&&console.warn(`[vitral] ${t}: <${a}> j\xE1 foi definido por ${m??"outro c\xF3digo"}; fica essa defini\xE7\xE3o. Sem Scoped Custom Element Registries, os remotes dividem o registro global.`)},mt.set(t,e),e}function Po(){try{return process.env.NODE_ENV!=="production"}catch{return!1}}async function xo(t,e,o,r={},n={}){let s=o.sri??{},[a,i,l]=re(o),u=e.cloneNode();u.setAttribute("data-vitral-portal",""),e.after(u);let m=[...r.inherit??[],...n.inherit??[]].map(p=>new URL(p,document.baseURI).href).concat(a),c=J(l,null,s);if(typeof CSSStyleSheet<"u"&&"replaceSync"in CSSStyleSheet.prototype){let p=await Promise.all(m.map(y=>ne(y,[],s[y],i.includes(y)?!!o.shadow.rebase:void 0)));t.adoptedStyleSheets=[...new Set([...t.adoptedStyleSheets,...p.flat()])]}else await J(m,t,s);await c;let g=(n.mirrorTheme??r.mirrorTheme)===!1?[]:[oe(e),oe(u)];return[()=>(g.forEach(p=>p()),u.remove()),u]}function ne(t,e,o,r){let n=dt.get(t);return n||(n=yt(t,o).then(s=>{let a=new CSSStyleSheet;if(r!==!1&&(s=s.replace(Ro,(c,g,p)=>`url(${g}${new URL(p,t).href}${g})`)),r!=null)return a.replaceSync(s),[a];let i=[],l=[],u=s.replace(wo,(c,g,p,y,L)=>{let v=y??L;return v?l.push(new URL(v,t).href):Qt.has(g??c)||(Qt.add(g??c),i.push(c)),""});if(i.length){let c=document.createElement("style");c.setAttribute("data-vitral-properties",""),c.textContent=i.join(`
|
|
2
|
+
`),document.head.appendChild(c)}a.replaceSync(u);let m=[...e,t];return Promise.all(l.filter(c=>!m.includes(c)).map(c=>ne(c,m))).then(c=>[...c.flat(),a])}).catch(()=>(dt.delete(t),[])),dt.set(t,n)),n}function oe(t){let e=document.documentElement,o=[],r=()=>{t.classList.remove(...o),o=[...e.classList].filter(a=>!t.classList.contains(a)),t.classList.add(...o);let s=e.getAttribute("data-theme");s===null?t.removeAttribute("data-theme"):t.setAttribute("data-theme",s)};r();let n=new MutationObserver(r);return n.observe(e,{attributeFilter:["class","data-theme"]}),()=>n.disconnect()}var dt,Eo,Qt,Ro,wo,mt,pt,te,ee,ht=h(()=>{"use strict";et();dt=new Map,Eo=()=>{},Qt=new Set,Ro=/url\(\s*(['"]?)(?![a-z]+:|\/\/|#)([^'")]+)\1\s*\)/gi,wo=/@property\s+(--[\w-]+)\s*\{[^}]*\}|@font-face\s*\{[^}]*\}|@import\s+(?:url\(\s*)?(?:(['"])(.*?)\2|([^'"\s);]+))\s*\)?[^;]*;/gi;mt=new Map,pt=!1,te=t=>Object.getPrototypeOf(t)===customElements,ee=new Map});function yt(t,e,o){let r=`${t} ${e??""}`,n=vt.get(r);return n||(n=q(t,d().settings().timeout,t,{integrity:e,priority:o}).then(s=>new TextDecoder().decode(s)),n.catch(()=>vt.delete(r)),vt.set(r,n)),n}function ae(t,e,o="auto"){if(e&&Lo())Promise.resolve().then(()=>(ht(),gt)).then(r=>r.prefetch(t,o),ie);else for(let r of t.css)document.querySelector(`link[href="${r}"]`)||C("preload",r,{as:"style",integrity:t.sri?.[r]??"",fetchPriority:o})}function le(t,e,o,r){return e?Promise.resolve().then(()=>(ht(),gt)).then(n=>n.attachShadowRoot(e,o,t,d().settings().styles,r)):J(t.css,null,t.sri).then(()=>[ie])}function J(t,e,o={}){let r=e??document,n=se.get(r);n||se.set(r,n=new Map);let s=e??document.head,a=d().settings().timeout;return Promise.all(t.map(i=>{let l=n.get(i);return l||(l=new Promise(u=>{let m=C("stylesheet",i,{integrity:o[i]??""},s);setTimeout(u,a),m.onload=()=>u(),m.onerror=()=>{m.remove(),n.delete(i),u()}}),n.set(i,l)),l}))}var se,vt,ie,Lo,et=h(()=>{"use strict";R();k();se=new WeakMap,vt=new Map,ie=()=>{},Lo=()=>typeof CSSStyleSheet<"u"&&"replaceSync"in CSSStyleSheet.prototype});async function ue(t,e,o){let r=o.split(/\s+/).map(i=>/^sha(256|384|512)-([\w+/=-]+)/.exec(i)).filter(i=>!!i);if(!r.length)throw new f("INTEGRITY",t,`formato de integrity inv\xE1lido: ${o}`);let n=Math.max(...r.map(i=>+i[1])),s=btoa(String.fromCharCode(...new Uint8Array(await crypto.subtle.digest("SHA-"+n,e)))),a=r.filter(i=>+i[1]===n).map(i=>i[2]);if(!a.some(i=>ce(i)===ce(s)))throw new f("INTEGRITY",t,`o hash n\xE3o confere: esperado sha${n}-${a.join(" ou ")}, obtido sha${n}-${s}`)}var ce,de=h(()=>{"use strict";w();ce=t=>t.replace(/-/g,"+").replace(/_/g,"/").replace(/=/g,"")});var we={};x(we,{importVerified:()=>Oo,verified:()=>Ee});async function Oo(t,e,o,r){let{entry:n,integrity:s,priority:a}=e;if(!Et.has(n))try{let m=await V(r,t,(async()=>{let c=await Ee(e.split??{entry:n,chunks:[],sri:{[n]:s},priority:a},o);return c&&{ns:await o(c)}})());if(m)return m.ns}catch(u){if(Et.add(n),u instanceof f&&u.code==="TIMEOUT")throw u}let i=await q(n,r,t,Et.has(n)?{priority:a,cache:"reload"}:{priority:a});await ue(t,i,s);let l=URL.createObjectURL(new Blob([i],{type:"text/javascript"}));try{return await o(l)}finally{URL.revokeObjectURL(l)}}async function To(t){if(Rt)return await Rt&&ye(t,!1);let e=!1;try{e=localStorage[ge]===navigator.userAgent}catch{}let o=await(Rt=ye(t,!e));if(o&&!e)try{localStorage[ge]=navigator.userAgent}catch{}return o}async function Ee(t,e){let{entry:o,chunks:r,sri:n,priority:s="auto",dedupe:a=[]}=t,i=a.flatMap(m=>[...m.chunks??[],m.file]);if(![o,...r,...i].every(m=>Mo.test(n[m]??"")))return;let l=globalThis[Symbol.for("vitral")],u=async m=>{if(!e||!a.length)return;let{shared:c}=await Promise.resolve().then(()=>(K(),F));for(let g of a)c(l)(g.name,g.range,{version:g.version,url:g.file,load:async()=>(m&&await Promise.all([...g.chunks??[],g.file].map(p=>wt(p,n[p],s))),(await e(g.file)).default)})};if(pe!==!1&&(pe=await To(n))){await u();for(let m of r)fetch(m,{priority:s}).catch(()=>{});return o}if(await(ko??=Co()))return l.sri={...l.sri,...n},await u(!0),await Promise.all([...r,o].map(m=>wt(m,n[m],s))),o}async function ye(t,e){if(!HTMLScriptElement.supports?.("importmap"))return!1;let o={};for(let s in t)!/\.css([?#]|$)/.test(s)&&!fe.has(s)&&(fe.add(s),o[s]=t[s]);let r=e?["export{}","export{}//"].map(s=>URL.createObjectURL(new Blob([s],{type:"text/javascript"}))):[];for(let s of r)o[s]=ve;let n=!0;try{let s=document.createElement("script");s.type="importmap",s.nonce=document.querySelector("script[nonce]")?.nonce??"",s.onerror=()=>n=!1,s.addEventListener("securitypolicyviolation",()=>n=!1),s.textContent=JSON.stringify({integrity:o}),document.head.append(s),await he(),await he(),n&&e&&(n=await Re(a=>import(a),r[0],r[1]))}catch{n=!1}for(let s of r)URL.revokeObjectURL(s);return n}function wt(t,e,o="auto"){return new Promise((r,n)=>{let s=C("modulepreload",t,{integrity:e,fetchPriority:o});s.onload=r,s.onerror=n})}function Co(){return document.createElement("link").relList.supports("modulepreload")?Re(t=>wt(t,ve),me,me+"//"):Promise.resolve(!1)}function Re(t,e,o){return Promise.race([Promise.all([t(e).then(()=>!0,()=>!1),t(o).then(()=>!1,()=>!0)]).then(([r,n])=>r&&n),new Promise(r=>setTimeout(r,3e3,!1))])}var Et,Mo,me,ve,pe,fe,Rt,ko,ge,he,Se=h(()=>{"use strict";de();w();k();Et=new Set;Mo=/^(sha(256|384|512)-[A-Za-z0-9+/]+={0,2}( +|$))+$/,me="data:text/javascript,export{}",ve="sha256-d3bjIZdvLjBurwdLwkSVOnEBPFFly+T1SR9r3VVHBGg=",fe=new Set,ge="vitral:sri-map";he=()=>new Promise(t=>{let e=new MessageChannel;e.port1.onmessage=()=>t(),e.port2.postMessage(0)})});var xe={};x(xe,{resolveModule:()=>Io,resolveTarget:()=>Ao,splitName:()=>be});function be(t){let e=d(),o=t.length;if(!e.entry(t))for(;(o=t.lastIndexOf("/",o-1))>0&&!e.entry(t.slice(0,o)););return o>0&&o<t.length?[t.slice(0,o),"."+t.slice(o)]:[t,null]}function Ao(t,e){return Pe(t,e).then(o=>St(t,o))}function Pe(t,e){let o=d();return o.entry(t)||!t.includes("/")?e(t):o.pending().then(async()=>{let[r,n]=be(t);if(!n)return e(t);let s=await e(r),a=s.exports?.exposes;if(!a?.[n])throw new f("NOT_EXPOSED",t,`${r} n\xE3o exp\xF5e ${n}. Expostos: ${Object.keys(a??{}).join(", ")}`);try{let i=a[n],l=await(typeof i=="function"?i():i);return{...s,module:l?.default??l,exports:l}}catch(i){throw new f("LOAD_FAILED",t,String(i),i)}})}async function Io(t,e){let o=await Pe(t,e);if(!o.exports)throw new f("INVALID_MODULE",t,"o remote foi carregado por uma c\xF3pia antiga da lib, que n\xE3o guarda os exports");return o.exports}var Le=h(()=>{"use strict";w();ot();R()});var Ae={};x(Ae,{OVERRIDES_KEY:()=>rt,activeOverrides:()=>Ce,clearOverrides:()=>ke,dropOverride:()=>Ho,isRef:()=>bt,manifestUrl:()=>nt,overrideFor:()=>_o,overridesEnabled:()=>Me,resolveOverride:()=>Te,storeOverride:()=>$o,storedOverrides:()=>xt});function Me(){return!!d().settings().devOverrides||typeof location<"u"&&/^(localhost|127\.0\.0\.1|\[::1\])$/.test(location.hostname)}function $o(t,e){let o=xt();e?o[t]=bt(e)?e:nt(e):delete o[t],G(it,o)}function Do(){let t=Pt(st),e=new URLSearchParams(location.search).getAll("vitral").join(",").split(",");if(!e.some(Boolean))return t;for(let o of e){let r=o.indexOf("@");o==="off"?(ke(),Object.keys(t).forEach(n=>delete t[n])):r>0&&o.slice(r+1)==="off"?delete t[o.slice(0,r)]:r>0&&(t[o.slice(0,r)]=o.slice(r+1))}return G(st,t),t}function ke(){G(st,{}),G(it,{})}function Ho(t){for(let e of[st,it]){let o=Pt(e);delete o[t],G(e,o)}}function Te(t,e){if(!bt(e))return new URL(nt(e),location.href).href;let o=d().settings().devOverrides,r=typeof o=="object"?o.preview:void 0;if(!r)return;let n=r.replace(/\{name\}/g,encodeURIComponent(t)).replace(/\{ref\}/g,encodeURIComponent(e));return new URL(nt(n),location.href).href}function Ce(){let t=Do(),e={};for(let[o,r]of[["navegador",xt()],["aba",t]])for(let[n,s]of Object.entries(r))e[n]={name:n,value:s,url:Te(n,s),source:o};return Object.values(e)}function _o(t){if(!Me())return;let e=Ce().find(a=>a.name===t);if(!e)return;let o=!Oe.has(t)&&Oe.add(t);if(!e.url){o&&console.warn(`[vitral] override ${t}@${e.value} ignorado: falta configure({ devOverrides: { preview } })`);return}let r=d(),n=r.settings().trusted??[],s=new URL(e.url).origin;return n.includes(s)||r.configure({trusted:[...n,s]}),o&&console.warn(`[vitral] override ativo: ${t} \u2192 ${e.url} (${e.source}). Para limpar: ?vitral=off`),{url:e.url}}var rt,nt,bt,Pt,G,it,st,xt,Oe,Ie=h(()=>{"use strict";R();rt="vitral:overrides";nt=t=>/\.(json|m?js)(\?|$)/.test(t)?t:t.replace(/\/?$/,"/vitral.json"),bt=t=>/^[\w.-]+$/.test(t),Pt=t=>{try{return JSON.parse(t().getItem(rt)??"{}")??{}}catch{return{}}},G=(t,e)=>{try{Object.keys(e).length?t().setItem(rt,JSON.stringify(e)):t().removeItem(rt)}catch{}},it=()=>localStorage,st=()=>sessionStorage,xt=()=>Pt(it);Oe=new Set});var Ne={};x(Ne,{bucket:()=>_e,pick:()=>Uo,resetChannels:()=>Vo,versionUrl:()=>He});async function Uo(t,e,o){if(typeof o.stable!="string")throw new f("INVALID_MODULE",t,`canal inv\xE1lido em ${e.url}: falta "stable"`);O.watch=jo;let r={name:t,bucket:_e(t)},{canary:n,stable:s}=o,a=await e.resolve?.(o,r)??(n&&r.bucket<n.percent?n.version:s);return a!==s&&Ue()[t]===a&&(a=s),a===s||e.rollback===!1?U.delete(t):U.get(t)?.from!==a&&U.set(t,{from:a,to:s,errors:0,mounts:0,max:{errors:3,mounts:20,...e.rollback}}),{...e,url:He(a,e.url),integrity:void 0,manifest:void 0}}function _e(t){let e=d().settings().canaryKey??No(),o=2166136261;for(let r of`${e}:${t}`)o=Math.imul(o^r.charCodeAt(0),16777619);return(o>>>0)%100}function No(){try{_??=localStorage.getItem($e)??void 0}catch{}if(!_){_=Math.random().toString(36).slice(2);try{localStorage.setItem($e,_)}catch{}}return _}function Ue(){try{return{...JSON.parse(sessionStorage.getItem(De)||"{}"),...Y}}catch{return Y}}function jo(t,e){for(let[o,r]of U)t!==o&&!t.startsWith(o+"/")||(e?++r.errors>=r.max.errors&&Bo(o,r):++r.mounts>r.max.mounts&&(r.mounts=1,r.errors=0))}function Bo(t,e){U.delete(t),Y={...Ue(),[t]:e.from};try{sessionStorage.setItem(De,JSON.stringify(Y))}catch{}console.warn(`[vitral] ${t}: ${e.errors} erros em ${e.mounts} montagens da vers\xE3o ${e.from}; voltando para ${e.to}`);try{d().settings().onRollback?.({name:t,from:e.from,to:e.to,errors:e.errors,mounts:e.mounts})}catch{}let o=d();o.register(t,o.entry(t)),o.events.emit("vitral:refresh",t)}function Vo(){U.clear(),Y={},_=void 0}var De,$e,U,Y,_,He,je=h(()=>{"use strict";w();X();R();k();De="vitral:rollback",$e="vitral:id",U=new Map,Y={};He=(t,e)=>b(/[/:]|\.(m?js|json)$/.test(t)?t:`${t}/vitral.json`,e)});var Be={};x(Be,{checkContract:()=>qo});async function qo(t,e=d().settings().contract){let{satisfies:o}=await Promise.resolve().then(()=>(K(),F));if(t.version&&!o(t.version,e))return`o host aceita contrato ${e}, o remote publica ${t.version}`;let r=d().settings().offered??{};for(let n in t.peers){let s=r[n];if(s&&!o(s,t.peers[n]))return`o remote espera ${n} ${t.peers[n]}, o host oferece ${s}`}}var Ve=h(()=>{"use strict";R()});var qe={};x(qe,{stale:()=>Fo});function Fo(t,e,o){let r="vitral:manifest:"+t;e.then(n=>localStorage[r]=JSON.stringify({t:Date.now(),m:n})).catch(()=>{});try{let n=JSON.parse(localStorage[r]);if(Date.now()-n.t<o*1e3)return n.m}catch{}return e}var Fe=h(()=>{"use strict"});function Ke(t){Mt(t).catch(()=>{})}function Ko(){Lt||(Lt=Promise.resolve().then(()=>(Se(),we)).catch(()=>null),Promise.resolve().then(()=>(K(),F)).catch(()=>{}))}function Mt(t,e,o){let r=n=>Jo(n,e,o);return(d().entry(t)||!t.includes("/")?r(t).then(n=>St(t,n)):Promise.resolve().then(()=>(Le(),xe)).then(n=>n.resolveTarget(t,r))).catch(Z)}function Jo(t,e,o){let r=d();return r.load(t,async()=>{Ko();let n;try{await r.pending();let s=await Je(t),a=s?{isolate:r.entry(t)?.isolate,...s}:r.entry(t);if(!a)throw new f("NOT_REGISTERED",t,"remote n\xE3o registrado. Use configure({ remotes }).");if(a.module)return await Go(t,a);let i=performance.now();n=await Ot(t,a,o),D(t,"manifest",i),ae(n,(e??n.isolate??r.settings().isolate)==="shadow",o),i=performance.now();let l=await Vt(r.settings().retries,()=>Wo(t,n));return D(t,"js",i),{...n,module:l?.default??l,exports:l}}catch(s){throw M(S(s)?s:new f("LOAD_FAILED",t,String(s?.message??s),s),n)}})}function Je(t){try{let e="vitral:overrides";if(/[?&]vitral=/.test(location.search)||localStorage[e]||sessionStorage[e])return Promise.resolve().then(()=>(Ie(),Ae)).then(o=>o.overrideFor(t))}catch{}}async function Go(t,e){let o=e.module;return typeof o=="function"&&(o=await o()),{module:o?.default??o,exports:o,entry:typeof location<"u"?location.href:"http://localhost/",css:e.css??[],isolate:e.isolate}}async function Ot(t,e,o){tt(t,e.url);let r=e.manifest??(new URL(e.url).pathname.endsWith(".json")?await Yo(e.url,t,o):{name:t,entry:e.url});if(r?.stable)return Ot(t,await(await Promise.resolve().then(()=>(je(),Ne))).pick(t,e,r),o);if(typeof r?.entry!="string")throw new f("INVALID_MODULE",t,`manifesto inv\xE1lido em ${e.url}`);if(r.contract&&(e.contract||d().settings().contract)){let i=await(await Promise.resolve().then(()=>(Ve(),Be))).checkContract(r.contract,e.contract);if(i)throw new f("CONTRACT_MISMATCH",t,i)}let n=i=>b(i,e.url),s={};for(let i in r.files??{})s[n(i)]=r.files[i];let a={entry:n(r.entry),css:[...r.css??[],...e.css??[]].map(n),shadow:r.shadow,integrity:e.integrity??r.integrity,isolate:e.isolate,scope:r.scope,version:r.version,sri:s,priority:o,split:r.split&&!e.integrity?{entry:n(r.split.entry),chunks:(r.split.chunks??[]).map(n),sri:s,priority:o,dedupe:r.dedupe?.map(i=>({...i,file:n(i.file),chunks:i.chunks?.map(n)}))}:void 0};tt(t,a.entry);for(let i of[a.split?.entry,...(a.split?.dedupe??[]).map(l=>l.file)])i&&tt(t,i);if(t===e.url&&r.name){let i=await Je(r.name);if(i)return{...await Ot(t,i),name:r.name};a.name=r.name,d().entry(r.name)||d().register(r.name,e)}return a}function Yo(t,e,o){let{timeout:r,maxStale:n}=d().settings(),s=Q(t,r,e,{cache:"no-cache",priority:o});return n?Promise.resolve().then(()=>(Fe(),qe)).then(a=>a.stale(t,s,n),()=>s):s}async function Wo(t,e){let{timeout:o}=d().settings(),r=s=>V(o,t,import(s)).catch(a=>{throw S(a)?a:new f("LOAD_FAILED",t,`falha ao importar ${e.entry}`,a)});if(!e.integrity)return r(e.entry);let n=await Lt;if(!n)throw new f("LOAD_FAILED",t,"n\xE3o foi poss\xEDvel carregar o verificador de integrity");return n.importVerified(t,e,r,o)}function St(t,e){if(typeof e.module?.mount!="function")throw new f("INVALID_MODULE",t,"o m\xF3dulo n\xE3o exporta mount(). Use defineRemote(), ou loadModule() para m\xF3dulo sem UI.");return e}var Lt,ot=h(()=>{"use strict";et();w();H();R();k()});var kt={};x(kt,{load:()=>to,noFrames:()=>zo});function to(t){throw new f("MOUNT_FAILED",t,"isolate sem suporte no embed.js")}var zo,Tt=h(()=>{"use strict";w();zo=(t,e)=>to(e)});H();et();w();R();var I={emit:(t,e)=>d().events.emit(t,e),on:(t,e)=>d().events.on(t,e),last:t=>d().events.last(t)};function Ge(){let t=new Set,e=o=>{let r=()=>(t.delete(r),o());return t.add(r),r};return{bus:{emit:(o,r)=>I.emit(o,r),last:o=>I.last(o),on:(o,r)=>e(I.on(o,r))},track:e,dispose(){for(let o of[...t])o()}}}X();ot();function Ye(t,e={}){let o=new URL(t,location.href);if(o.origin!==location.origin){location.assign(o.href);return}e.replace?history.replaceState(history.state,"",o.href):history.pushState(history.state,"",o.href),dispatchEvent(new PopStateEvent("popstate",{state:history.state})),I.emit("vitral:navigate",o.pathname+o.search+o.hash)}R();w();var We=new Map,W=new Map;function Ze(t,e){return We.set(t,e.entry),$.set(t,e),W.set(t,(W.get(t)??0)+1),()=>{let o=W.get(t)-1;o?W.set(t,o):(W.delete(t),We.delete(t),$.delete(t))}}var ze=null;function Qe(t,e,o,r){let n=0,s=I.on("vitral:refresh",a=>{if(a!==e&&!e.startsWith(a+"/"))return;let i=++n,l=o,u=r(l).then(m=>{if(t.unmount===Xe||i!==n)return m.unmount();let c=t;t=m,c.unmount(),o!==l&&m.update?.(o)});ze?ze.push(u):u.catch(console.error)});return{update(a){o=a,t.update?.(a)},unmount(){s(),t.unmount(),t={unmount:Xe}}}}var Xe=()=>{};k();async function oo(t,e,o,r={}){return Qe(await eo(t,e,o,r),e,o,n=>eo(t,e,n,r))}var Xo;async function eo(t,e,o,r){let n=d();await n.pending();let s=r.isolate??Zo(e)?.isolate??n.settings().isolate;if(s==="iframe")return(Xo??(await Promise.resolve().then(()=>(Tt(),kt))).noFrames)(t,e,o,r).catch(Z);let{module:a,...i}=await(s=="reframe"?(await Promise.resolve().then(()=>(Tt(),kt))).load:Mt)(e,s,r.priority),l=Ze(e,i);O.watch?.(e);let u=i.name??e,m=E=>{let P=document.createElement("div",E);return P.setAttribute("data-vitral-root",u),i.scope&&P.setAttribute("data-vitral-scope",i.scope),P.style.display="contents",P},c=performance.now(),[g,p=document.body,y=null,L=customElements,v=t.appendChild(m())]=await le(i,s>"q"&&t,m,r.styles);D(e,"css",c),c=performance.now();let z=Ge(),$t=E=>P=>(v.addEventListener(E,P),()=>v.removeEventListener(E,P)),Dt={name:u,baseUrl:new URL(".",i.entry).href,events:z.bus,shadowRoot:y,portalContainer:p,customElements:L,reportError(E){let P=M(S(E)?E:new f("RENDER_FAILED",u,String(E?.message??E),E),i);r.onError?r.onError(P):console.error(P)},navigate:Ye,protocol:n.protocol,onActivate:$t("vitral:activate"),onDeactivate:$t("vitral:deactivate")};O.shared&&(Dt.shared=O.shared(e,z.track));let at;try{at=await a.mount(v,o,Dt),D(e,"mount",c)}catch(E){throw l(),z.dispose(),g(),v.remove(),M(new f("MOUNT_FAILED",u,"erro ao montar",E),i)}let lt=!0;return{update(E){lt&&at.update?.(E)},unmount(){if(lt){lt=!1;try{at.unmount()}finally{l(),z.dispose(),g(),v.remove()}}}}}function Zo(t){let e=d(),o=t;for(;o&&!e.entry(o);)o=o.slice(0,Math.max(0,o.lastIndexOf("/")));return o?e.entry(o):void 0}w();H();function ro(t,e){let{isolate:o}=e,r=p=>p.src?A(p.src,p.name):p.name??"",n=r(e),s=e.props??{},a=null,i=null,l=0,u="loading",m=(p,y=null)=>{u=p,i&&(i.style.display=p==="error"?"none":""),e.onStatus?.(p,y)},c=()=>{a?.unmount(),a=null,i?.remove(),i=null},g=()=>{let p=++l;c(),i=document.createElement("div"),i.setAttribute("data-vitral-slot",n),t.appendChild(i),m("loading");let y=v=>{p===l&&m("error",S(v)?v:new f("MOUNT_FAILED",n,String(v),v))},L=s;oo(i,n,s,{isolate:o,priority:e.priority,styles:e.styles,onError:y}).then(v=>{if(p!==l)return v.unmount();a=v,s!==L&&v.update?.(s),m("ready")},y)};return g(),{update(p){s=p,a?.update?.(p)},set(p){let y=p.src||p.name!==void 0?r(p):n,L=y!==n||"isolate"in p&&p.isolate!==o;n=y,"isolate"in p&&(o=p.isolate),L&&g()},retry:g,destroy(){l++,c()},get status(){return u}}}ot();H();var Ct=()=>{};function so(t){let e={};if(typeof performance>"u"||!performance.getEntriesByName)return e;for(let o of["manifest","js","css","mount"]){let r=performance.getEntriesByName(`vitral:${t}:${o}`,"measure").pop();r&&(e[o]=Math.round(r.duration*10)/10)}return e}function no(t,e,o){if(e==="lazy"||e==="visible"){if(typeof IntersectionObserver>"u")return o(),Ct;let r=new IntersectionObserver(n=>{n.some(s=>s.isIntersecting)&&(r.disconnect(),o())},{rootMargin:"200px"});return r.observe(t),()=>r.disconnect()}if(e==="idle"){if(typeof requestIdleCallback>"u"){let n=setTimeout(o,1);return()=>clearTimeout(n)}let r=requestIdleCallback(o,{timeout:2e3});return()=>cancelIdleCallback(r)}if(e==="hover"){let r=()=>(n(),o()),n=()=>{t.removeEventListener("pointerenter",r),t.removeEventListener("focusin",r)};return t.addEventListener("pointerenter",r),t.addEventListener("focusin",r),n}return o(),Ct}var T=new Map,N=null;function io(t,e){try{t.moveBefore(e,null)}catch{t.appendChild(e)}}function At(t,e){for(let o of t.querySelectorAll("*"))o.hasAttribute("data-vitral-root")&&o.dispatchEvent(new Event(e)),o.shadowRoot&&At(o.shadowRoot,e)}function Qo(t,e,o){T.get(t)?.slot.destroy(),T.delete(t),N?.isConnected||(N=document.createElement("div"),N.hidden=!0,N.setAttribute("data-vitral-keep-alive",""),document.body.appendChild(N)),io(N,e.box),At(e.box,"vitral:deactivate"),T.set(t,e);for(let[r,n]of T){if(T.size<=o)break;T.delete(r),n.slot.destroy(),n.box.remove()}}function ao(t,e){let{props:o={},keepAlive:r}=e,n=c=>c.src?A(c.src,c.name):c.name??"",s=n(e),a="loading",i=null,l=(c,g)=>{a=c,e.onStatus?.(c,g)},u=e.prefetch?no(t,e.prefetch,()=>Ke(s)):Ct,m=no(t,e.loading,()=>{u();let c=r?T.get(s):void 0;if(c){T.delete(s),i=c,i.on=l,io(t,i.box),i.slot.update(o),At(i.box,"vitral:activate"),l(i.slot.status,null);return}let g=t;r&&(g=t.appendChild(document.createElement("div")),g.style.display="contents");let p={box:g,on:l,slot:null};p.slot=ro(g,{...e,name:s,src:void 0,props:o,onStatus:(y,L)=>p.on(y,L)}),i=p});return{update(c){o=c,i?.slot.update(c)},set(c){(c.src||c.name!==void 0)&&(s=n(c)),i?.slot.set({...c,src:void 0,name:s})},retry:()=>i?.slot.retry(),destroy(){m(),u(),i&&(r&&a==="ready"?Qo(s,i,r===!0?5:r):(i.slot.destroy(),i.box!==t&&i.box.remove()),i=null)},get status(){return a}}}H();var tr=typeof HTMLElement>"u"?class{}:HTMLElement,It=class extends tr{static{this.observedAttributes=["name","src","props","isolate"]}#t=null;#e={};get props(){return this.#e}set props(e){this.#e=e??{},this.#t?.update(this.#e)}get status(){return this.#t?.status??"loading"}retry(){this.#t?.retry()}connectedCallback(){if(this.#t)return;let e=this.#r();if(!e)return;this.hasAttribute("props")&&!Object.keys(this.#e).length&&(this.#e=lo(this.getAttribute("props")));let o=this.getAttribute("keep-alive"),r={name:e,props:this.#e,isolate:this.getAttribute("isolate")||void 0,loading:this.getAttribute("loading"),prefetch:this.getAttribute("prefetch"),priority:this.getAttribute("priority")||void 0,keepAlive:o===null?!1:Number(o)||!0,styles:{inherit:this.getAttribute("inherit-styles")?.split(/\s+/).filter(Boolean)},onStatus:(s,a)=>{this.setAttribute("data-vitral-status",s),s==="loading"?this.setAttribute("aria-busy","true"):this.removeAttribute("aria-busy");let i=l=>{let u=this.querySelectorAll(`:scope > [slot="${l}"]`);for(let m of u)m.hidden=s!==(l==="fallback"?"loading":"error");return u.length>0};queueMicrotask(()=>{if(this.#t?.status!==s)return;let l={loading:i("fallback"),error:i("error"),ready:!0};this.#n(l[s]?null:s)}),s==="ready"&&this.dispatchEvent(new CustomEvent("vitral-ready",{bubbles:!0,detail:{timings:so(e)}})),s==="error"&&this.dispatchEvent(new CustomEvent("vitral-error",{bubbles:!0,detail:{error:a}}))}},n=null;this.#t=ao(this,r)}#r(){let e=this.getAttribute("src"),o=this.getAttribute("name");return e?A(e,o??void 0,!1):o}#o=null;#n(e){if(this.#o?.remove(),this.#o=null,!e)return;let o=document.createElement("div");if(o.setAttribute("data-vitral-default",e),e==="loading")o.setAttribute("role","status"),o.textContent="Carregando\u2026";else{o.setAttribute("role","alert");let r=document.createElement("button");r.type="button",r.textContent="Tentar de novo",r.onclick=()=>this.retry(),o.append("N\xE3o foi poss\xEDvel carregar. ",r)}this.prepend(this.#o=o)}disconnectedCallback(){queueMicrotask(()=>{this.isConnected||(this.#t?.destroy(),this.#t=null,this.#n(null))})}attributeChangedCallback(e,o,r){if(e==="props")return void(this.props=lo(r));if(!this.#t)return void(this.isConnected&&this.connectedCallback());if(e==="name"||e==="src"){let n=this.#r();n&&this.#t.set({name:n})}e==="isolate"&&this.#t.set({isolate:r||void 0})}};function lo(t){if(!t)return{};try{return JSON.parse(t)}catch{return console.error("[vitral] atributo props n\xE3o \xE9 JSON v\xE1lido:",t),{}}}function co(t="vitral-remote"){typeof customElements<"u"&&!customElements.get(t)&&customElements.define(t,class extends It{})}R();k();var uo="data-vitral-embed";function mo(t){let e=t.dataset;if(!e.remote||t.hasAttribute(uo))return null;let o=e.target?document.querySelector(e.target):t.closest("body")?t:document.body;if(!o)return document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>mo(t),{once:!0}):console.error(`[vitral] data-target n\xE3o encontrado: ${e.target}`),null;t.setAttribute(uo,"");let r=b(e.remote);er([new URL(r).origin,...e.origins?.split(/\s+/).filter(Boolean)??[]]),co();let n=document.createElement("vitral-remote");return n.setAttribute("isolate",e.isolate||"shadow"),e.loading&&n.setAttribute("loading",e.loading),e.props&&n.setAttribute("props",e.props),e.name&&n.setAttribute("name",e.name),n.setAttribute("src",r),o===t?t.after(n):o.appendChild(n),n}function er(t){let e=d(),o=e.settings().allowedOrigins??[B(),...e.origins()].filter(Boolean);ut({allowedOrigins:[...new Set([...o,...t])]})}var or=Symbol.for("vitral:embed"),rr=globalThis[or]??=mo;typeof document<"u"&&document.currentScript instanceof HTMLScriptElement&&rr(document.currentScript);})();
|
|
@@ -2,8 +2,8 @@ import {
|
|
|
2
2
|
resolveModule,
|
|
3
3
|
resolveTarget,
|
|
4
4
|
splitName
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-4NSPG6NK.js";
|
|
6
|
+
import "./chunk-72H4FXMD.js";
|
|
7
7
|
import "./chunk-KU6HF2EW.js";
|
|
8
8
|
import "./chunk-TW7KYJQ6.js";
|
|
9
9
|
import "./chunk-463H6B56.js";
|
package/dist/federation.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
hostSlot
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-TXSHK3SK.js";
|
|
4
4
|
import {
|
|
5
5
|
mountOnce,
|
|
6
6
|
navigate,
|
|
@@ -8,10 +8,10 @@ import {
|
|
|
8
8
|
registered,
|
|
9
9
|
scopedEvents,
|
|
10
10
|
track
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-O7DV3EVB.js";
|
|
12
12
|
import {
|
|
13
13
|
load
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-72H4FXMD.js";
|
|
15
15
|
import {
|
|
16
16
|
injectStyles
|
|
17
17
|
} from "./chunk-KU6HF2EW.js";
|
package/dist/iframe.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
splitName
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-4NSPG6NK.js";
|
|
4
4
|
import {
|
|
5
5
|
verifyIntegrity
|
|
6
6
|
} from "./chunk-UYOPJ4XQ.js";
|
|
@@ -9,10 +9,10 @@ import {
|
|
|
9
9
|
navigate,
|
|
10
10
|
setFrameMounter,
|
|
11
11
|
track
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-O7DV3EVB.js";
|
|
13
13
|
import {
|
|
14
14
|
resolveEntry
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-72H4FXMD.js";
|
|
16
16
|
import "./chunk-KU6HF2EW.js";
|
|
17
17
|
import {
|
|
18
18
|
fetchBytes,
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { V as VitralConfig, c as RemoteEntry, P as Props, a as RemoteModule, I as Isolation, d as StyleOptions, M as MountedRemote, E as EventBus, R as RemoteContext, e as SharedValue } from './types-
|
|
2
|
-
export { f as Channel, g as ChannelContext, C as CheckedProps, D as DevOverrides, H as Handler, h as McpAppBridge, i as PropsOf, j as ProvideOptions, k as ProvidedValue, l as RemoteContract, m as RemoteManifest, n as RemoteMetric, o as Remotes, p as RollbackInfo, S as Shared, q as SharedApi, b as SharedModules, r as SharedType, s as batch, t as provide, u as shared } from './types-
|
|
1
|
+
import { V as VitralConfig, c as RemoteEntry, P as Props, a as RemoteModule, I as Isolation, d as StyleOptions, M as MountedRemote, E as EventBus, R as RemoteContext, e as SharedValue } from './types-EOz1rOHs.js';
|
|
2
|
+
export { f as Channel, g as ChannelContext, C as CheckedProps, D as DevOverrides, H as Handler, h as McpAppBridge, i as PropsOf, j as ProvideOptions, k as ProvidedValue, l as RemoteContract, m as RemoteManifest, n as RemoteMetric, o as Remotes, p as RollbackInfo, S as Shared, q as SharedApi, b as SharedModules, r as SharedType, s as batch, t as provide, u as shared } from './types-EOz1rOHs.js';
|
|
3
3
|
import { R as RemoteError } from './errors-kjBv6IH_.js';
|
|
4
4
|
export { a as RemoteErrorCode } from './errors-kjBv6IH_.js';
|
|
5
|
-
export { R as RemoteSlot, a as SlotOptions, S as SlotStatus, c as createSlot } from './slot-
|
|
6
|
-
export { e as events } from './events-
|
|
5
|
+
export { R as RemoteSlot, a as SlotOptions, S as SlotStatus, c as createSlot } from './slot-Ddzp7AgL.js';
|
|
6
|
+
export { e as events } from './events-DLdbFqBM.js';
|
|
7
7
|
export { n as navigate } from './navigate-BRG1WJUM.js';
|
|
8
8
|
export { r as __reset } from './state-BDdCwc21.js';
|
|
9
9
|
|
package/dist/index.js
CHANGED
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
syncTabs,
|
|
18
18
|
unsafeHTML,
|
|
19
19
|
watchUpdates
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-O7DV3EVB.js";
|
|
21
21
|
import {
|
|
22
22
|
configure,
|
|
23
23
|
loadModule,
|
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
preload,
|
|
26
26
|
register,
|
|
27
27
|
registerSrc
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-72H4FXMD.js";
|
|
29
29
|
import "./chunk-KU6HF2EW.js";
|
|
30
30
|
import "./chunk-TW7KYJQ6.js";
|
|
31
31
|
import {
|
package/dist/preact.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as preact from 'preact';
|
|
2
2
|
import { VNode, ComponentType } from 'preact';
|
|
3
|
-
import { P as Props, I as Isolation, C as CheckedProps, a as RemoteModule, S as Shared } from './types-
|
|
4
|
-
export { R as RemoteContext } from './types-
|
|
3
|
+
import { P as Props, I as Isolation, C as CheckedProps, a as RemoteModule, S as Shared } from './types-EOz1rOHs.js';
|
|
4
|
+
export { R as RemoteContext } from './types-EOz1rOHs.js';
|
|
5
5
|
import { R as RemoteError } from './errors-kjBv6IH_.js';
|
|
6
|
-
import { S as SlotStatus } from './slot-
|
|
7
|
-
export { e as events } from './events-
|
|
6
|
+
import { S as SlotStatus } from './slot-Ddzp7AgL.js';
|
|
7
|
+
export { e as events } from './events-DLdbFqBM.js';
|
|
8
8
|
export { n as navigate } from './navigate-BRG1WJUM.js';
|
|
9
9
|
import { L as Loading, P as Prefetch } from './host-slot-Cz6EiGsB.js';
|
|
10
10
|
|
package/dist/preact.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
hostSlot
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-TXSHK3SK.js";
|
|
4
4
|
import {
|
|
5
5
|
defineRemote,
|
|
6
6
|
events,
|
|
@@ -8,8 +8,8 @@ import {
|
|
|
8
8
|
navigate,
|
|
9
9
|
same,
|
|
10
10
|
shared
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import "./chunk-
|
|
11
|
+
} from "./chunk-O7DV3EVB.js";
|
|
12
|
+
import "./chunk-72H4FXMD.js";
|
|
13
13
|
import "./chunk-KU6HF2EW.js";
|
|
14
14
|
import "./chunk-TW7KYJQ6.js";
|
|
15
15
|
import "./chunk-463H6B56.js";
|
package/dist/prefetch.js
CHANGED
package/dist/react-server.d.ts
CHANGED
package/dist/react.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { ReactNode, ComponentType } from 'react';
|
|
2
2
|
import { L as Loading, P as Prefetch } from './host-slot-Cz6EiGsB.js';
|
|
3
3
|
import * as JSXRuntime from 'react/jsx-runtime';
|
|
4
|
-
import { P as Props, I as Isolation, C as CheckedProps, a as RemoteModule, S as Shared, R as RemoteContext } from './types-
|
|
5
|
-
export { E as EventBus } from './types-
|
|
6
|
-
export { e as events } from './events-
|
|
4
|
+
import { P as Props, I as Isolation, C as CheckedProps, a as RemoteModule, S as Shared, R as RemoteContext } from './types-EOz1rOHs.js';
|
|
5
|
+
export { E as EventBus } from './types-EOz1rOHs.js';
|
|
6
|
+
export { e as events } from './events-DLdbFqBM.js';
|
|
7
7
|
import './errors-kjBv6IH_.js';
|
|
8
8
|
|
|
9
9
|
/**
|
package/dist/react.js
CHANGED
|
@@ -5,15 +5,15 @@ import {
|
|
|
5
5
|
} from "./chunk-B2MPYF4M.js";
|
|
6
6
|
import {
|
|
7
7
|
hostSlot
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-TXSHK3SK.js";
|
|
9
9
|
import {
|
|
10
10
|
defineRemote,
|
|
11
11
|
events,
|
|
12
12
|
memoSelect,
|
|
13
13
|
same,
|
|
14
14
|
shared
|
|
15
|
-
} from "./chunk-
|
|
16
|
-
import "./chunk-
|
|
15
|
+
} from "./chunk-O7DV3EVB.js";
|
|
16
|
+
import "./chunk-72H4FXMD.js";
|
|
17
17
|
import "./chunk-KU6HF2EW.js";
|
|
18
18
|
import "./chunk-TW7KYJQ6.js";
|
|
19
19
|
import "./chunk-463H6B56.js";
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
splitName
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-4NSPG6NK.js";
|
|
4
4
|
import {
|
|
5
5
|
verifyIntegrity
|
|
6
6
|
} from "./chunk-UYOPJ4XQ.js";
|
|
7
7
|
import {
|
|
8
8
|
resolveEntry
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-72H4FXMD.js";
|
|
10
10
|
import {
|
|
11
11
|
prefetchCss
|
|
12
12
|
} from "./chunk-KU6HF2EW.js";
|
package/dist/routes.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { R as Routes, a as RouteMatch } from './match-CMBM_jLW.js';
|
|
2
|
-
import { P as Props } from './types-
|
|
3
|
-
import { S as SlotStatus } from './slot-
|
|
2
|
+
import { P as Props } from './types-EOz1rOHs.js';
|
|
3
|
+
import { S as SlotStatus } from './slot-Ddzp7AgL.js';
|
|
4
4
|
import './errors-kjBv6IH_.js';
|
|
5
5
|
|
|
6
6
|
interface RoutesOptions {
|
package/dist/routes.js
CHANGED
|
@@ -4,10 +4,10 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
createSlot,
|
|
6
6
|
navigate
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-O7DV3EVB.js";
|
|
8
8
|
import {
|
|
9
9
|
warmSsr
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-72H4FXMD.js";
|
|
11
11
|
import "./chunk-KU6HF2EW.js";
|
|
12
12
|
import "./chunk-TW7KYJQ6.js";
|
|
13
13
|
import "./chunk-463H6B56.js";
|
|
@@ -115,7 +115,7 @@ var VitralOutletElement = class extends Base {
|
|
|
115
115
|
if (ssr?.getAttribute("data-vitral-slot") === name) {
|
|
116
116
|
this.#status("loading", null);
|
|
117
117
|
warmSsr(ssr);
|
|
118
|
-
import("./hydrate-
|
|
118
|
+
import("./hydrate-NFZZMYWT.js").then((m) => {
|
|
119
119
|
if (this.#route === name && !this.#slot) this.#slot = m.hydrateSlot(this, ssr, { ...options, props: this.#props });
|
|
120
120
|
else ssr.remove();
|
|
121
121
|
});
|
package/dist/single-spa.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { R as RemoteError } from './errors-kjBv6IH_.js';
|
|
2
|
-
import { P as Props, I as Isolation, d as StyleOptions } from './types-
|
|
2
|
+
import { P as Props, I as Isolation, d as StyleOptions } from './types-EOz1rOHs.js';
|
|
3
3
|
|
|
4
4
|
type SlotStatus = 'loading' | 'ready' | 'error';
|
|
5
5
|
interface SlotOptions<P extends Props = Props> {
|
package/dist/solid.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { JSX, Component, Accessor } from 'solid-js';
|
|
2
|
-
import { P as Props, I as Isolation, C as CheckedProps, a as RemoteModule, S as Shared } from './types-
|
|
3
|
-
export { R as RemoteContext } from './types-
|
|
2
|
+
import { P as Props, I as Isolation, C as CheckedProps, a as RemoteModule, S as Shared } from './types-EOz1rOHs.js';
|
|
3
|
+
export { R as RemoteContext } from './types-EOz1rOHs.js';
|
|
4
4
|
import { R as RemoteError } from './errors-kjBv6IH_.js';
|
|
5
|
-
export { e as events } from './events-
|
|
5
|
+
export { e as events } from './events-DLdbFqBM.js';
|
|
6
6
|
export { n as navigate } from './navigate-BRG1WJUM.js';
|
|
7
7
|
import { L as Loading, P as Prefetch } from './host-slot-Cz6EiGsB.js';
|
|
8
8
|
|
package/dist/solid.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
hostSlot
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-TXSHK3SK.js";
|
|
4
4
|
import {
|
|
5
5
|
defineRemote,
|
|
6
6
|
events,
|
|
@@ -8,8 +8,8 @@ import {
|
|
|
8
8
|
navigate,
|
|
9
9
|
same,
|
|
10
10
|
shared
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import "./chunk-
|
|
11
|
+
} from "./chunk-O7DV3EVB.js";
|
|
12
|
+
import "./chunk-72H4FXMD.js";
|
|
13
13
|
import "./chunk-KU6HF2EW.js";
|
|
14
14
|
import "./chunk-TW7KYJQ6.js";
|
|
15
15
|
import "./chunk-463H6B56.js";
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// src/core/stale.ts
|
|
2
|
+
function stale(url, fresh, maxStale) {
|
|
3
|
+
const key = "vitral:manifest:" + url;
|
|
4
|
+
fresh.then((m) => localStorage[key] = JSON.stringify({ t: Date.now(), m })).catch(() => {
|
|
5
|
+
});
|
|
6
|
+
try {
|
|
7
|
+
const saved = JSON.parse(localStorage[key]);
|
|
8
|
+
if (Date.now() - saved.t < maxStale * 1e3) return saved.m;
|
|
9
|
+
} catch {
|
|
10
|
+
}
|
|
11
|
+
return fresh;
|
|
12
|
+
}
|
|
13
|
+
export {
|
|
14
|
+
stale
|
|
15
|
+
};
|
package/dist/svelte.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Component } from 'svelte';
|
|
2
|
-
import { P as Props, I as Isolation, a as RemoteModule } from './types-
|
|
3
|
-
export { R as RemoteContext } from './types-
|
|
2
|
+
import { P as Props, I as Isolation, a as RemoteModule } from './types-EOz1rOHs.js';
|
|
3
|
+
export { R as RemoteContext } from './types-EOz1rOHs.js';
|
|
4
4
|
import { R as RemoteError } from './errors-kjBv6IH_.js';
|
|
5
|
-
import { S as SlotStatus } from './slot-
|
|
6
|
-
export { e as events } from './events-
|
|
5
|
+
import { S as SlotStatus } from './slot-Ddzp7AgL.js';
|
|
6
|
+
export { e as events } from './events-DLdbFqBM.js';
|
|
7
7
|
export { n as navigate } from './navigate-BRG1WJUM.js';
|
|
8
8
|
import { L as Loading, P as Prefetch } from './host-slot-Cz6EiGsB.js';
|
|
9
9
|
|
package/dist/svelte.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
hostSlot
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-TXSHK3SK.js";
|
|
4
4
|
import {
|
|
5
5
|
defineRemote,
|
|
6
6
|
events,
|
|
7
7
|
navigate
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-O7DV3EVB.js";
|
|
9
|
+
import "./chunk-72H4FXMD.js";
|
|
10
10
|
import "./chunk-KU6HF2EW.js";
|
|
11
11
|
import "./chunk-TW7KYJQ6.js";
|
|
12
12
|
import "./chunk-463H6B56.js";
|
package/dist/testing.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { P as Props, R as RemoteContext, a as RemoteModule } from './types-
|
|
1
|
+
import { P as Props, R as RemoteContext, a as RemoteModule } from './types-EOz1rOHs.js';
|
|
2
2
|
export { r as resetVitral } from './state-BDdCwc21.js';
|
|
3
3
|
import './errors-kjBv6IH_.js';
|
|
4
4
|
|
package/dist/testing.js
CHANGED
|
@@ -4,10 +4,10 @@ import {
|
|
|
4
4
|
harness,
|
|
5
5
|
verify
|
|
6
6
|
} from "./chunk-DAESKNQ6.js";
|
|
7
|
-
import "./chunk-
|
|
7
|
+
import "./chunk-O7DV3EVB.js";
|
|
8
8
|
import {
|
|
9
9
|
register
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-72H4FXMD.js";
|
|
11
11
|
import "./chunk-KU6HF2EW.js";
|
|
12
12
|
import "./chunk-TW7KYJQ6.js";
|
|
13
13
|
import "./chunk-463H6B56.js";
|
|
@@ -290,6 +290,14 @@ interface VitralConfig {
|
|
|
290
290
|
timeout?: number;
|
|
291
291
|
/** Tentativas extras se o download falhar. Padrão 1. */
|
|
292
292
|
retries?: number;
|
|
293
|
+
/**
|
|
294
|
+
* Usa o `vitral.json` salvo na última visita, se tiver até N segundos, sem
|
|
295
|
+
* esperar a rede; o manifesto novo baixa por trás e vale na visita seguinte.
|
|
296
|
+
* Poupa uma ida e volta por remote na visita de volta. Um deploy (ou um
|
|
297
|
+
* rollback) chega a quem já tinha a cópia salva uma visita depois. Padrão:
|
|
298
|
+
* desligado (sempre revalida).
|
|
299
|
+
*/
|
|
300
|
+
maxStale?: number;
|
|
293
301
|
/** Isolamento padrão para todos os remotes. Padrão `'none'`. */
|
|
294
302
|
isolate?: Isolation;
|
|
295
303
|
/**
|
package/dist/vite.d.ts
CHANGED
|
@@ -98,6 +98,13 @@ interface VitralViteOptions extends CssBuildOptions {
|
|
|
98
98
|
* (`canal.json`). Usa `version` (ou a do package.json). Padrão: false.
|
|
99
99
|
*/
|
|
100
100
|
versionDir?: boolean;
|
|
101
|
+
/**
|
|
102
|
+
* Põe o compile hint do V8 (`//# allFunctionsCalledOnLoad`) nos arquivos
|
|
103
|
+
* que rodam ao montar o remote, para o Chrome compilá-los de uma vez numa
|
|
104
|
+
* thread de fundo. Ajuda em CPU lenta e custa memória (veja o guia de
|
|
105
|
+
* carregamento). Os outros navegadores ignoram. Padrão: false.
|
|
106
|
+
*/
|
|
107
|
+
compileHints?: boolean;
|
|
101
108
|
}
|
|
102
109
|
declare function vitral(options?: VitralViteOptions): Plugin;
|
|
103
110
|
|
package/dist/vite.js
CHANGED
|
@@ -38,13 +38,15 @@ import { readFileSync, rmSync, writeFileSync } from "fs";
|
|
|
38
38
|
import { join, posix } from "path";
|
|
39
39
|
var SPLIT = "split/";
|
|
40
40
|
var sri = (file) => "sha384-" + createHash("sha384").update(readFileSync(file)).digest("base64");
|
|
41
|
-
function outputs(rolldown) {
|
|
41
|
+
function outputs(rolldown, hints = false) {
|
|
42
|
+
const banner = hints ? { banner: compileHint } : {};
|
|
42
43
|
return [
|
|
43
|
-
{ format: "es", ...rolldown ? { codeSplitting: false } : { inlineDynamicImports: true } },
|
|
44
|
+
{ format: "es", ...banner, ...rolldown ? { codeSplitting: false } : { inlineDynamicImports: true } },
|
|
44
45
|
// Os assets saem com o mesmo nome nas duas (o Vite só aceita um padrão).
|
|
45
|
-
{ format: "es", entryFileNames: `${SPLIT}remote-[hash].js`, chunkFileNames: `${SPLIT}[name]-[hash].js` }
|
|
46
|
+
{ format: "es", ...banner, entryFileNames: `${SPLIT}remote-[hash].js`, chunkFileNames: `${SPLIT}[name]-[hash].js` }
|
|
46
47
|
];
|
|
47
48
|
}
|
|
49
|
+
var compileHint = (chunk) => chunk.isEntry || !chunk.isDynamicEntry || chunk.name?.startsWith("_vitral") ? "//# allFunctionsCalledOnLoad" : "";
|
|
48
50
|
var isSplit = (bundle) => Object.values(bundle).some((f) => f.type === "chunk" && f.isEntry && f.fileName.startsWith(SPLIT));
|
|
49
51
|
var helper = (load = "import", base = "import.meta.url") => `function __vitralImport(u,d){var p=globalThis[Symbol.for("vitral")],s=p&&p.sri,a=d.concat(u).map(function(x){return new URL(x,${base}).href});return Promise.all(s?a.map(function(h){return new Promise(function(ok,no){if(!s[h])return no(new Error("vitral: arquivo sem integrity: "+h));var l=document.createElement("link");l.rel="modulepreload";l.crossOrigin="anonymous";l.integrity=s[h];l.href=h;l.onload=ok;l.onerror=function(){no(new Error("vitral: integrity n\xE3o confere: "+h))};document.head.appendChild(l)})}):[]).then(function(){return ${load}(a[a.length-1])})}`;
|
|
50
52
|
function collect(outDir, bundle) {
|
|
@@ -887,7 +889,7 @@ function vitral(options = {}) {
|
|
|
887
889
|
// Nomes com hash: cache eterno no CDN. Só o vitral.json muda a cada deploy.
|
|
888
890
|
lib: { entry: dedupe ? BOOT : options.exposes ? EXPOSES_ENTRY : options.adapter === false ? entry : ENTRY_ID, fileName: () => "remote-[hash].js", cssFileName: "remote" },
|
|
889
891
|
// Arquivo único (hosts antigos e caminho com blob:) e build dividido (manifesto v2).
|
|
890
|
-
rollupOptions: { external: options.shared ?? [], output: outputs(rolldown) },
|
|
892
|
+
rollupOptions: { external: options.shared ?? [], output: outputs(rolldown, !!options.compileHints) },
|
|
891
893
|
cssCodeSplit: false,
|
|
892
894
|
...dir && { outDir: dir }
|
|
893
895
|
}
|
package/dist/vue.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as vue from 'vue';
|
|
2
2
|
import { PropType, App, ShallowRef, WritableComputedRef, ComputedRef, Component } from 'vue';
|
|
3
|
-
import { P as Props, I as Isolation, R as RemoteContext, S as Shared, a as RemoteModule } from './types-
|
|
4
|
-
export { e as events } from './events-
|
|
3
|
+
import { P as Props, I as Isolation, R as RemoteContext, S as Shared, a as RemoteModule } from './types-EOz1rOHs.js';
|
|
4
|
+
export { e as events } from './events-DLdbFqBM.js';
|
|
5
5
|
import { L as Loading, P as Prefetch } from './host-slot-Cz6EiGsB.js';
|
|
6
6
|
import './errors-kjBv6IH_.js';
|
|
7
7
|
|
|
@@ -127,8 +127,8 @@ declare const VitralRemote: vue.DefineComponent<vue.ExtractPropTypes<{
|
|
|
127
127
|
onError?: ((...args: any[]) => any) | undefined;
|
|
128
128
|
onReady?: ((...args: any[]) => any) | undefined;
|
|
129
129
|
}>, {
|
|
130
|
-
name: string;
|
|
131
130
|
isolate: Isolation;
|
|
131
|
+
name: string;
|
|
132
132
|
priority: RequestPriority;
|
|
133
133
|
loading: Loading;
|
|
134
134
|
src: string;
|
package/dist/vue.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
hostSlot,
|
|
3
3
|
timings
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-TXSHK3SK.js";
|
|
5
5
|
import {
|
|
6
6
|
defineRemote,
|
|
7
7
|
events,
|
|
8
8
|
memoSelect,
|
|
9
9
|
same,
|
|
10
10
|
shared
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import "./chunk-
|
|
11
|
+
} from "./chunk-O7DV3EVB.js";
|
|
12
|
+
import "./chunk-72H4FXMD.js";
|
|
13
13
|
import "./chunk-KU6HF2EW.js";
|
|
14
14
|
import {
|
|
15
15
|
absolute
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vitral",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Micro-frontends
|
|
3
|
+
"version": "0.7.1",
|
|
4
|
+
"description": "Micro-frontends de qualquer framework numa página só, sem configuração de build no host. React, Next, Vue, Nuxt, Angular, Svelte, Solid, Preact, Lit e JS puro.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"micro-frontend",
|
|
7
7
|
"micro-frontends",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"web-components",
|
|
30
30
|
"typescript"
|
|
31
31
|
],
|
|
32
|
-
"homepage": "https://github.
|
|
32
|
+
"homepage": "https://joaogabriel15.github.io/vitral/",
|
|
33
33
|
"bugs": {
|
|
34
34
|
"url": "https://github.com/joaogabriel15/vitral/issues"
|
|
35
35
|
},
|
|
@@ -243,6 +243,7 @@
|
|
|
243
243
|
"./shadow-*",
|
|
244
244
|
"./reframe-*",
|
|
245
245
|
"./overrides-*",
|
|
246
|
+
"./stale-*",
|
|
246
247
|
"./sri-*",
|
|
247
248
|
"./dedupe-*",
|
|
248
249
|
"./contract-*",
|
|
@@ -251,7 +252,7 @@
|
|
|
251
252
|
"./channel-*",
|
|
252
253
|
"./hydrate-*"
|
|
253
254
|
],
|
|
254
|
-
"limit": "4.
|
|
255
|
+
"limit": "4.72 kB"
|
|
255
256
|
},
|
|
256
257
|
{
|
|
257
258
|
"name": "núcleo",
|
|
@@ -261,6 +262,7 @@
|
|
|
261
262
|
"./shadow-*",
|
|
262
263
|
"./reframe-*",
|
|
263
264
|
"./overrides-*",
|
|
265
|
+
"./stale-*",
|
|
264
266
|
"./sri-*",
|
|
265
267
|
"./dedupe-*",
|
|
266
268
|
"./contract-*",
|
|
@@ -302,6 +304,7 @@
|
|
|
302
304
|
"./shadow-*",
|
|
303
305
|
"./reframe-*",
|
|
304
306
|
"./overrides-*",
|
|
307
|
+
"./stale-*",
|
|
305
308
|
"./sri-*",
|
|
306
309
|
"./dedupe-*",
|
|
307
310
|
"./contract-*",
|
|
@@ -310,7 +313,7 @@
|
|
|
310
313
|
"./channel-*",
|
|
311
314
|
"./hydrate-*"
|
|
312
315
|
],
|
|
313
|
-
"limit": "5.
|
|
316
|
+
"limit": "5.42 kB"
|
|
314
317
|
},
|
|
315
318
|
{
|
|
316
319
|
"name": "host mínimo + store + persist + syncTabs",
|
|
@@ -320,6 +323,7 @@
|
|
|
320
323
|
"./shadow-*",
|
|
321
324
|
"./reframe-*",
|
|
322
325
|
"./overrides-*",
|
|
326
|
+
"./stale-*",
|
|
323
327
|
"./sri-*",
|
|
324
328
|
"./dedupe-*",
|
|
325
329
|
"./contract-*",
|
|
@@ -328,7 +332,7 @@
|
|
|
328
332
|
"./channel-*",
|
|
329
333
|
"./hydrate-*"
|
|
330
334
|
],
|
|
331
|
-
"limit": "5.
|
|
335
|
+
"limit": "5.64 kB"
|
|
332
336
|
},
|
|
333
337
|
{
|
|
334
338
|
"name": "reframe: JS em iframe oculto, DOM no Shadow DOM (sob demanda, além do núcleo e do Shadow DOM)",
|
|
@@ -365,6 +369,7 @@
|
|
|
365
369
|
"./shadow-*",
|
|
366
370
|
"./reframe-*",
|
|
367
371
|
"./overrides-*",
|
|
372
|
+
"./stale-*",
|
|
368
373
|
"./sri-*",
|
|
369
374
|
"./dedupe-*",
|
|
370
375
|
"./contract-*",
|
|
@@ -384,6 +389,7 @@
|
|
|
384
389
|
"./shadow-*",
|
|
385
390
|
"./reframe-*",
|
|
386
391
|
"./overrides-*",
|
|
392
|
+
"./stale-*",
|
|
387
393
|
"./sri-*",
|
|
388
394
|
"./dedupe-*",
|
|
389
395
|
"./contract-*",
|
|
@@ -402,6 +408,7 @@
|
|
|
402
408
|
"./shadow-*",
|
|
403
409
|
"./reframe-*",
|
|
404
410
|
"./overrides-*",
|
|
411
|
+
"./stale-*",
|
|
405
412
|
"./sri-*",
|
|
406
413
|
"./dedupe-*",
|
|
407
414
|
"./contract-*",
|
|
@@ -421,11 +428,12 @@
|
|
|
421
428
|
{
|
|
422
429
|
"name": "auto",
|
|
423
430
|
"path": "dist/auto.js",
|
|
424
|
-
"limit": "6.
|
|
431
|
+
"limit": "6.32 kB",
|
|
425
432
|
"ignore": [
|
|
426
433
|
"./shadow-*",
|
|
427
434
|
"./reframe-*",
|
|
428
435
|
"./overrides-*",
|
|
436
|
+
"./stale-*",
|
|
429
437
|
"./sri-*",
|
|
430
438
|
"./dedupe-*",
|
|
431
439
|
"./contract-*",
|
|
@@ -439,9 +447,10 @@
|
|
|
439
447
|
"name": "routes",
|
|
440
448
|
"path": "dist/routes.js",
|
|
441
449
|
"import": "{ routes }",
|
|
442
|
-
"limit": "9.
|
|
450
|
+
"limit": "9.37 kB",
|
|
443
451
|
"ignore": [
|
|
444
452
|
"./overrides-*",
|
|
453
|
+
"./stale-*",
|
|
445
454
|
"./channel-*",
|
|
446
455
|
"./reframe-*",
|
|
447
456
|
"./hydrate-*"
|
|
@@ -467,6 +476,7 @@
|
|
|
467
476
|
"ignore": [
|
|
468
477
|
"./shadow-*",
|
|
469
478
|
"./overrides-*",
|
|
479
|
+
"./stale-*",
|
|
470
480
|
"./sri-*",
|
|
471
481
|
"./dedupe-*",
|
|
472
482
|
"./contract-*",
|
|
@@ -482,6 +492,7 @@
|
|
|
482
492
|
"limit": "6 kB",
|
|
483
493
|
"ignore": [
|
|
484
494
|
"./overrides-*",
|
|
495
|
+
"./stale-*",
|
|
485
496
|
"./channel-*",
|
|
486
497
|
"./reframe-*",
|
|
487
498
|
"./hydrate-*"
|
|
@@ -490,7 +501,7 @@
|
|
|
490
501
|
{
|
|
491
502
|
"name": "embed (loader de sites de terceiros, arquivo único com Shadow DOM, SRI e canal)",
|
|
492
503
|
"path": "dist/embed.js",
|
|
493
|
-
"limit": "12.
|
|
504
|
+
"limit": "12.17 kB"
|
|
494
505
|
},
|
|
495
506
|
{
|
|
496
507
|
"name": "vitals (Web Vitals por remote)",
|