vitral 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/angular.d.ts +3 -2
- package/dist/angular.js +7 -6
- package/dist/auto.js +7 -6
- package/dist/capture-TT5WBLJ6.js +42 -0
- package/dist/channel-2YPYGX3J.js +95 -0
- package/dist/chunk-463H6B56.js +50 -0
- package/dist/chunk-54CBIZES.js +105 -0
- package/dist/chunk-6EX5KYT5.js +64 -0
- package/dist/{chunk-6Y3VMWHH.js → chunk-BCC25ANK.js} +11 -5
- package/dist/{chunk-2XF5BKV3.js → chunk-EMSB2NVX.js} +26 -13
- package/dist/{chunk-HP6QWU6K.js → chunk-IH3ZT3QU.js} +2 -2
- package/dist/{chunk-PX7PBCCT.js → chunk-TW7KYJQ6.js} +7 -17
- package/dist/{chunk-S5MZT5IT.js → chunk-UYOPJ4XQ.js} +1 -1
- package/dist/{chunk-UTYAX6MU.js → chunk-W6322KGP.js} +2 -2
- package/dist/{chunk-NCONW6WS.js → chunk-WD4CDGDZ.js} +73 -44
- package/dist/cli.js +1196 -31
- package/dist/contract-46EZFQPQ.js +17 -0
- package/dist/{dedupe-IWFIXRWG.js → dedupe-S7BHQMOZ.js} +4 -3
- package/dist/devtools.d.ts +32 -2
- package/dist/devtools.js +27 -12
- package/dist/element.d.ts +13 -4
- package/dist/element.js +7 -6
- package/dist/embed.js +2 -0
- package/dist/{errors-KKB8FGCz.d.ts → errors-kjBv6IH_.d.ts} +7 -1
- package/dist/{events-DUdjhfps.d.ts → events-Dkpkw_Sv.d.ts} +1 -1
- package/dist/expose-OVWTPHH5.js +15 -0
- package/dist/federation.d.ts +89 -0
- package/dist/federation.js +101 -0
- package/dist/iframe.d.ts +1 -1
- package/dist/iframe.js +13 -10
- package/dist/index.d.ts +23 -21
- package/dist/index.js +5 -4
- package/dist/otel.d.ts +44 -0
- package/dist/otel.js +27 -0
- package/dist/overrides-NP754HY7.js +27 -0
- package/dist/preact.d.ts +5 -5
- package/dist/preact.js +6 -5
- package/dist/react.d.ts +12 -4
- package/dist/react.js +11 -6
- package/dist/routes.d.ts +3 -3
- package/dist/routes.js +5 -4
- package/dist/sentry.d.ts +25 -0
- package/dist/sentry.js +11 -0
- package/dist/shadow-PVSETNMZ.js +159 -0
- package/dist/single-spa.d.ts +40 -0
- package/dist/single-spa.js +52 -0
- package/dist/{slot-pB276oPt.d.ts → slot-UPg6ob9v.d.ts} +2 -2
- package/dist/solid.d.ts +4 -4
- package/dist/solid.js +6 -5
- package/dist/{sri-BVKZNX5Q.js → sri-M7ZRU57G.js} +43 -11
- package/dist/svelte.d.ts +5 -5
- package/dist/svelte.js +6 -5
- package/dist/testing.d.ts +2 -1
- package/dist/testing.js +5 -4
- package/dist/{types-BV-hUrms.d.ts → types-CA2p9KHC.d.ts} +174 -4
- package/dist/vite.d.ts +26 -0
- package/dist/vite.js +686 -51
- package/dist/vue.d.ts +11 -4
- package/dist/vue.js +10 -5
- package/package.json +115 -23
- package/dist/chunk-DXORSF4X.js +0 -42
- package/dist/chunk-SFL6LTP3.js +0 -56
- package/dist/expose-53BEJB34.js +0 -14
- package/dist/overrides-NZAIUGK5.js +0 -15
- package/dist/shadow-MYRJQLLY.js +0 -72
|
@@ -3,15 +3,21 @@ import {
|
|
|
3
3
|
loadFile,
|
|
4
4
|
registerSrc,
|
|
5
5
|
resolveEntry
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-EMSB2NVX.js";
|
|
7
7
|
import {
|
|
8
8
|
injectStyles
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-6EX5KYT5.js";
|
|
10
|
+
import {
|
|
11
|
+
metric
|
|
12
|
+
} from "./chunk-TW7KYJQ6.js";
|
|
10
13
|
import {
|
|
11
14
|
RemoteError,
|
|
15
|
+
ctxHooks,
|
|
16
|
+
fail,
|
|
12
17
|
isRemoteError,
|
|
13
|
-
|
|
14
|
-
|
|
18
|
+
mounted,
|
|
19
|
+
report
|
|
20
|
+
} from "./chunk-463H6B56.js";
|
|
15
21
|
import {
|
|
16
22
|
protocol
|
|
17
23
|
} from "./chunk-GNPFWISJ.js";
|
|
@@ -42,9 +48,6 @@ function scopedEvents() {
|
|
|
42
48
|
};
|
|
43
49
|
}
|
|
44
50
|
|
|
45
|
-
// src/core/hooks.ts
|
|
46
|
-
var ctxHooks = {};
|
|
47
|
-
|
|
48
51
|
// src/core/navigate.ts
|
|
49
52
|
function navigate(url, options = {}) {
|
|
50
53
|
const target = new URL(url, location.href);
|
|
@@ -60,27 +63,44 @@ function navigate(url, options = {}) {
|
|
|
60
63
|
|
|
61
64
|
// src/core/updates.ts
|
|
62
65
|
var versions = /* @__PURE__ */ new Map();
|
|
63
|
-
|
|
64
|
-
|
|
66
|
+
var live = /* @__PURE__ */ new Map();
|
|
67
|
+
function track(name, loaded) {
|
|
68
|
+
versions.set(name, loaded.entry);
|
|
69
|
+
mounted.set(name, loaded);
|
|
70
|
+
live.set(name, (live.get(name) ?? 0) + 1);
|
|
71
|
+
return () => {
|
|
72
|
+
const n = live.get(name) - 1;
|
|
73
|
+
if (n) live.set(name, n);
|
|
74
|
+
else live.delete(name), versions.delete(name), mounted.delete(name);
|
|
75
|
+
};
|
|
65
76
|
}
|
|
77
|
+
var swaps = null;
|
|
66
78
|
async function refresh(name) {
|
|
67
79
|
const p = protocol();
|
|
68
80
|
await p.pending();
|
|
69
81
|
const entry = p.entry(name);
|
|
70
82
|
if (entry) p.register(name, entry);
|
|
71
83
|
await loadFile(name);
|
|
84
|
+
const started = swaps = [];
|
|
72
85
|
events.emit("vitral:refresh", name);
|
|
86
|
+
swaps = null;
|
|
87
|
+
await Promise.all(started);
|
|
73
88
|
}
|
|
74
89
|
function refreshable(current, name, props, remount) {
|
|
90
|
+
let gen = 0;
|
|
75
91
|
const off = events.on("vitral:refresh", (n) => {
|
|
76
|
-
if (n
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
92
|
+
if (n !== name && !name.startsWith(n + "/")) return;
|
|
93
|
+
const mine = ++gen;
|
|
94
|
+
const used = props;
|
|
95
|
+
const swap = remount(used).then((next) => {
|
|
96
|
+
if (current.unmount === noop || mine !== gen) return next.unmount();
|
|
97
|
+
const old = current;
|
|
98
|
+
current = next;
|
|
99
|
+
old.unmount();
|
|
100
|
+
if (props !== used) next.update?.(props);
|
|
101
|
+
});
|
|
102
|
+
if (swaps) swaps.push(swap);
|
|
103
|
+
else swap.catch(console.error);
|
|
84
104
|
});
|
|
85
105
|
return {
|
|
86
106
|
update(next) {
|
|
@@ -99,10 +119,13 @@ var noop = () => {
|
|
|
99
119
|
async function checkUpdates() {
|
|
100
120
|
const p = protocol();
|
|
101
121
|
const found = [];
|
|
102
|
-
const { splitName } = await import("./expose-
|
|
122
|
+
const { splitName } = await import("./expose-OVWTPHH5.js");
|
|
103
123
|
const remotes = /* @__PURE__ */ new Map();
|
|
104
|
-
for (const
|
|
105
|
-
|
|
124
|
+
for (const name of live.keys()) {
|
|
125
|
+
const root = splitName(name)[0];
|
|
126
|
+
const entry = versions.get(root) ?? versions.get(name);
|
|
127
|
+
if (entry) remotes.set(root, entry);
|
|
128
|
+
}
|
|
106
129
|
for (const [name, entry] of remotes) versions.set(name, entry);
|
|
107
130
|
await Promise.all(
|
|
108
131
|
[...remotes].map(
|
|
@@ -141,26 +164,28 @@ async function mountOnce(target, name, props, options) {
|
|
|
141
164
|
const p = protocol();
|
|
142
165
|
await p.pending();
|
|
143
166
|
if ((options.isolate ?? registered(name)?.isolate ?? p.settings().isolate) === "iframe") {
|
|
144
|
-
if (!frames) throw new RemoteError("MOUNT_FAILED", name, 'isolate="iframe" precisa de enableIframe(), de vitral/iframe');
|
|
145
|
-
return frames(target, name, props, options);
|
|
167
|
+
if (!frames) throw report(new RemoteError("MOUNT_FAILED", name, 'isolate="iframe" precisa de enableIframe(), de vitral/iframe'));
|
|
168
|
+
return frames(target, name, props, options).catch(fail);
|
|
146
169
|
}
|
|
147
170
|
const { module: mod, ...resolved } = await load(name, options.isolate, options.priority);
|
|
148
|
-
track(name, resolved
|
|
171
|
+
const untrack = track(name, resolved);
|
|
172
|
+
ctxHooks.watch?.(name);
|
|
149
173
|
const isolate = options.isolate ?? resolved.isolate ?? protocol().settings().isolate;
|
|
150
174
|
const label = resolved.name ?? name;
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
shadowRoot.appendChild(el);
|
|
159
|
-
} else {
|
|
160
|
-
target.appendChild(el);
|
|
161
|
-
}
|
|
175
|
+
const make = (options2) => {
|
|
176
|
+
const el2 = document.createElement("div", options2);
|
|
177
|
+
el2.setAttribute("data-vitral-root", label);
|
|
178
|
+
if (resolved.scope) el2.setAttribute("data-vitral-scope", resolved.scope);
|
|
179
|
+
el2.style.display = "contents";
|
|
180
|
+
return el2;
|
|
181
|
+
};
|
|
162
182
|
let t = performance.now();
|
|
163
|
-
const release =
|
|
183
|
+
const [release, portal = document.body, shadowRoot = null, registry = customElements, el = target.appendChild(make())] = await injectStyles(
|
|
184
|
+
resolved,
|
|
185
|
+
isolate === "shadow" && target,
|
|
186
|
+
make,
|
|
187
|
+
options.styles
|
|
188
|
+
);
|
|
164
189
|
metric(name, "css", t);
|
|
165
190
|
t = performance.now();
|
|
166
191
|
const scoped = scopedEvents();
|
|
@@ -170,8 +195,10 @@ async function mountOnce(target, name, props, options) {
|
|
|
170
195
|
baseUrl: new URL(".", resolved.entry).href,
|
|
171
196
|
events: scoped.bus,
|
|
172
197
|
shadowRoot,
|
|
198
|
+
portalContainer: portal,
|
|
199
|
+
customElements: registry,
|
|
173
200
|
reportError(e) {
|
|
174
|
-
const err = isRemoteError(e) ? e : new RemoteError("RENDER_FAILED", label, String(e?.message ?? e), e);
|
|
201
|
+
const err = report(isRemoteError(e) ? e : new RemoteError("RENDER_FAILED", label, String(e?.message ?? e), e), resolved);
|
|
175
202
|
if (options.onError) options.onError(err);
|
|
176
203
|
else console.error(err);
|
|
177
204
|
},
|
|
@@ -181,27 +208,29 @@ async function mountOnce(target, name, props, options) {
|
|
|
181
208
|
onDeactivate: on("vitral:deactivate")
|
|
182
209
|
};
|
|
183
210
|
if (ctxHooks.shared) ctx.shared = ctxHooks.shared(name, scoped.track);
|
|
184
|
-
let
|
|
211
|
+
let mounted2;
|
|
185
212
|
try {
|
|
186
|
-
|
|
213
|
+
mounted2 = await mod.mount(el, props, ctx);
|
|
187
214
|
metric(name, "mount", t);
|
|
188
215
|
} catch (e) {
|
|
216
|
+
untrack();
|
|
189
217
|
scoped.dispose();
|
|
190
218
|
release();
|
|
191
219
|
el.remove();
|
|
192
|
-
throw new RemoteError("MOUNT_FAILED", label, "erro ao montar", e);
|
|
220
|
+
throw report(new RemoteError("MOUNT_FAILED", label, "erro ao montar", e), resolved);
|
|
193
221
|
}
|
|
194
222
|
let alive = true;
|
|
195
223
|
return {
|
|
196
224
|
update(next) {
|
|
197
|
-
if (alive)
|
|
225
|
+
if (alive) mounted2.update?.(next);
|
|
198
226
|
},
|
|
199
227
|
unmount() {
|
|
200
228
|
if (!alive) return;
|
|
201
229
|
alive = false;
|
|
202
230
|
try {
|
|
203
|
-
|
|
231
|
+
mounted2.unmount();
|
|
204
232
|
} finally {
|
|
233
|
+
untrack();
|
|
205
234
|
scoped.dispose();
|
|
206
235
|
release();
|
|
207
236
|
el.remove();
|
|
@@ -244,17 +273,17 @@ function createSlot(target, options) {
|
|
|
244
273
|
holder.setAttribute("data-vitral-slot", name);
|
|
245
274
|
target.appendChild(holder);
|
|
246
275
|
setStatus("loading");
|
|
247
|
-
const
|
|
276
|
+
const fail2 = (e) => {
|
|
248
277
|
if (my !== token) return;
|
|
249
278
|
setStatus("error", isRemoteError(e) ? e : new RemoteError("MOUNT_FAILED", name, String(e), e));
|
|
250
279
|
};
|
|
251
280
|
const initial = props;
|
|
252
|
-
mountRemote(holder, name, props, { isolate, priority: options.priority, styles: options.styles, onError:
|
|
281
|
+
mountRemote(holder, name, props, { isolate, priority: options.priority, styles: options.styles, onError: fail2 }).then((h) => {
|
|
253
282
|
if (my !== token) return h.unmount();
|
|
254
283
|
handle2 = h;
|
|
255
284
|
if (props !== initial) h.update?.(props);
|
|
256
285
|
setStatus("ready");
|
|
257
|
-
},
|
|
286
|
+
}, fail2);
|
|
258
287
|
};
|
|
259
288
|
mount();
|
|
260
289
|
return {
|