vitral 0.0.0-stage → 0.2.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.
Files changed (55) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +357 -2
  3. package/dist/angular.d.ts +38 -0
  4. package/dist/angular.js +90 -0
  5. package/dist/auto.d.ts +2 -0
  6. package/dist/auto.js +12 -0
  7. package/dist/chunk-2XF5BKV3.js +190 -0
  8. package/dist/chunk-6Y3VMWHH.js +181 -0
  9. package/dist/chunk-DXORSF4X.js +42 -0
  10. package/dist/chunk-GNPFWISJ.js +80 -0
  11. package/dist/chunk-HP6QWU6K.js +51 -0
  12. package/dist/chunk-NCONW6WS.js +606 -0
  13. package/dist/chunk-PX7PBCCT.js +89 -0
  14. package/dist/chunk-S5MZT5IT.js +20 -0
  15. package/dist/chunk-SFL6LTP3.js +56 -0
  16. package/dist/chunk-UTYAX6MU.js +152 -0
  17. package/dist/cli.d.ts +1 -0
  18. package/dist/cli.js +88 -0
  19. package/dist/dedupe-IWFIXRWG.js +81 -0
  20. package/dist/devtools.d.ts +12 -0
  21. package/dist/devtools.js +86 -0
  22. package/dist/element.d.ts +88 -0
  23. package/dist/element.js +18 -0
  24. package/dist/errors-KKB8FGCz.d.ts +11 -0
  25. package/dist/events-DUdjhfps.d.ts +6 -0
  26. package/dist/expose-53BEJB34.js +14 -0
  27. package/dist/host-slot-Cz6EiGsB.d.ts +6 -0
  28. package/dist/iframe.d.ts +28 -0
  29. package/dist/iframe.js +236 -0
  30. package/dist/index.d.ts +186 -0
  31. package/dist/index.js +65 -0
  32. package/dist/navigate-BRG1WJUM.d.ts +9 -0
  33. package/dist/overrides-NZAIUGK5.js +15 -0
  34. package/dist/preact.d.ts +45 -0
  35. package/dist/preact.js +71 -0
  36. package/dist/react.d.ts +63 -0
  37. package/dist/react.js +167 -0
  38. package/dist/routes.d.ts +56 -0
  39. package/dist/routes.js +143 -0
  40. package/dist/shadow-MYRJQLLY.js +72 -0
  41. package/dist/slot-pB276oPt.d.ts +36 -0
  42. package/dist/solid.d.ts +47 -0
  43. package/dist/solid.js +83 -0
  44. package/dist/sri-BVKZNX5Q.js +114 -0
  45. package/dist/state-BDdCwc21.d.ts +4 -0
  46. package/dist/svelte.d.ts +43 -0
  47. package/dist/svelte.js +42 -0
  48. package/dist/testing.d.ts +28 -0
  49. package/dist/testing.js +52 -0
  50. package/dist/types-BV-hUrms.d.ts +265 -0
  51. package/dist/vite.d.ts +78 -0
  52. package/dist/vite.js +786 -0
  53. package/dist/vue.d.ts +133 -0
  54. package/dist/vue.js +148 -0
  55. package/package.json +331 -3
package/dist/vue.d.ts ADDED
@@ -0,0 +1,133 @@
1
+ import * as vue from 'vue';
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-BV-hUrms.js';
4
+ export { e as events } from './events-DUdjhfps.js';
5
+ import { L as Loading, P as Prefetch } from './host-slot-Cz6EiGsB.js';
6
+
7
+ interface VueRemoteOptions {
8
+ /** Instale plugins (router, pinia, i18n…) no app do remote. */
9
+ setup?: (app: App, ctx: RemoteContext) => void;
10
+ }
11
+ /** Transforma um componente Vue em um remote. */
12
+ declare function vueRemote<P extends Props>(component: Component, options?: VueRemoteOptions): RemoteModule<P>;
13
+ /** Dentro de um remote: dá acesso ao contexto (nome, eventos, baseUrl). */
14
+ declare function useVitral(): RemoteContext | null;
15
+ /** Assina um evento do barramento global enquanto o componente existir. */
16
+ declare function useEvent<T = unknown>(type: string, handler: (payload: T) => void): void;
17
+ /** Ref com o último valor emitido em `type`. */
18
+ declare function useEventValue<T = unknown>(type: string): ShallowRef<T | undefined>;
19
+ /**
20
+ * Ref de uma chave compartilhada (`provide`/`shared`). Sem seletor, a ref
21
+ * também escreve (`usuario.value = …` chama `set`, e `v-model` funciona). Com
22
+ * seletor, é só leitura e só muda quando o resultado muda (`Object.is`). A
23
+ * assinatura acaba junto com o componente (ou o `effectScope`).
24
+ *
25
+ * const usuario = useShared('usuario')
26
+ * const nome = useShared('usuario', (u) => u?.nome)
27
+ */
28
+ declare function useShared<K extends keyof Shared>(key: K): WritableComputedRef<Shared[K] | undefined>;
29
+ declare function useShared<K extends keyof Shared, S>(key: K, select: (value: Shared[K] | undefined) => S): ComputedRef<S>;
30
+ declare function useShared<T = unknown>(key: string): WritableComputedRef<T | undefined>;
31
+ declare function useShared<T, S>(key: string, select: (value: T | undefined) => S): ComputedRef<S>;
32
+
33
+ /**
34
+ * Renderiza um remote. No servidor (Nuxt SSR) renderiza só o slot `fallback`;
35
+ * o remote monta no cliente.
36
+ *
37
+ * Slots: `fallback` (carregando) e `error` ({ error, retry }).
38
+ */
39
+ declare const VitralRemote: vue.DefineComponent<vue.ExtractPropTypes<{
40
+ /** Nome registrado. Com `src`, o nome sob o qual a URL é registrada. */
41
+ name: {
42
+ type: StringConstructor;
43
+ default: undefined;
44
+ };
45
+ /** URL do `vitral.json`. Dispensa `configure()`. */
46
+ src: {
47
+ type: StringConstructor;
48
+ default: undefined;
49
+ };
50
+ props: {
51
+ type: PropType<Props>;
52
+ default: () => {};
53
+ };
54
+ isolate: {
55
+ type: PropType<Isolation>;
56
+ default: undefined;
57
+ };
58
+ /** `'lazy'`: monta perto de aparecer na tela; `'idle'`: com o navegador ocioso. */
59
+ loading: {
60
+ type: PropType<Loading>;
61
+ default: undefined;
62
+ };
63
+ /** Baixa antes de montar: `'hover'`, `'visible'` ou `'idle'`. */
64
+ prefetch: {
65
+ type: PropType<Prefetch>;
66
+ default: undefined;
67
+ };
68
+ /** `'high'` para o remote que aparece logo ao abrir a página. */
69
+ priority: {
70
+ type: PropType<RequestPriority>;
71
+ default: undefined;
72
+ };
73
+ /** Ao sair da página, guarda o remote montado (LRU, padrão 5) e na volta só atualiza as props. */
74
+ keepAlive: {
75
+ type: (NumberConstructor | BooleanConstructor)[];
76
+ default: boolean;
77
+ };
78
+ }>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
79
+ [key: string]: any;
80
+ }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, ("error" | "ready")[], "error" | "ready", vue.PublicProps, Readonly<vue.ExtractPropTypes<{
81
+ /** Nome registrado. Com `src`, o nome sob o qual a URL é registrada. */
82
+ name: {
83
+ type: StringConstructor;
84
+ default: undefined;
85
+ };
86
+ /** URL do `vitral.json`. Dispensa `configure()`. */
87
+ src: {
88
+ type: StringConstructor;
89
+ default: undefined;
90
+ };
91
+ props: {
92
+ type: PropType<Props>;
93
+ default: () => {};
94
+ };
95
+ isolate: {
96
+ type: PropType<Isolation>;
97
+ default: undefined;
98
+ };
99
+ /** `'lazy'`: monta perto de aparecer na tela; `'idle'`: com o navegador ocioso. */
100
+ loading: {
101
+ type: PropType<Loading>;
102
+ default: undefined;
103
+ };
104
+ /** Baixa antes de montar: `'hover'`, `'visible'` ou `'idle'`. */
105
+ prefetch: {
106
+ type: PropType<Prefetch>;
107
+ default: undefined;
108
+ };
109
+ /** `'high'` para o remote que aparece logo ao abrir a página. */
110
+ priority: {
111
+ type: PropType<RequestPriority>;
112
+ default: undefined;
113
+ };
114
+ /** Ao sair da página, guarda o remote montado (LRU, padrão 5) e na volta só atualiza as props. */
115
+ keepAlive: {
116
+ type: (NumberConstructor | BooleanConstructor)[];
117
+ default: boolean;
118
+ };
119
+ }>> & Readonly<{
120
+ onError?: ((...args: any[]) => any) | undefined;
121
+ onReady?: ((...args: any[]) => any) | undefined;
122
+ }>, {
123
+ isolate: Isolation;
124
+ name: string;
125
+ priority: RequestPriority;
126
+ loading: Loading;
127
+ src: string;
128
+ props: Props;
129
+ prefetch: Prefetch;
130
+ keepAlive: number | boolean;
131
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
132
+
133
+ export { VitralRemote, type VueRemoteOptions, useEvent, useEventValue, useShared, useVitral, vueRemote };
package/dist/vue.js ADDED
@@ -0,0 +1,148 @@
1
+ import {
2
+ hostSlot,
3
+ timings
4
+ } from "./chunk-UTYAX6MU.js";
5
+ import {
6
+ defineRemote,
7
+ events,
8
+ memoSelect,
9
+ same,
10
+ shared
11
+ } from "./chunk-NCONW6WS.js";
12
+ import "./chunk-2XF5BKV3.js";
13
+ import "./chunk-SFL6LTP3.js";
14
+ import {
15
+ absolute
16
+ } from "./chunk-PX7PBCCT.js";
17
+ import "./chunk-GNPFWISJ.js";
18
+
19
+ // src/vue.ts
20
+ import {
21
+ computed,
22
+ createApp,
23
+ defineComponent,
24
+ getCurrentScope,
25
+ h,
26
+ inject,
27
+ onBeforeUnmount,
28
+ onMounted,
29
+ onScopeDispose,
30
+ ref,
31
+ shallowReactive,
32
+ shallowRef,
33
+ watch
34
+ } from "vue";
35
+ var VitralKey = /* @__PURE__ */ Symbol("vitral");
36
+ function vueRemote(component, options = {}) {
37
+ return defineRemote({
38
+ mount(el, props, ctx) {
39
+ const state = shallowReactive({ ...props });
40
+ const app = createApp({ render: () => h(component, state) });
41
+ app.provide(VitralKey, ctx);
42
+ app.config.errorHandler = (e) => ctx.reportError(e);
43
+ options.setup?.(app, ctx);
44
+ app.mount(el);
45
+ return {
46
+ update(next) {
47
+ for (const k of Object.keys(state)) if (!(k in next)) delete state[k];
48
+ Object.assign(state, next);
49
+ },
50
+ unmount: () => app.unmount()
51
+ };
52
+ }
53
+ });
54
+ }
55
+ function useVitral() {
56
+ return inject(VitralKey, null);
57
+ }
58
+ function useEvent(type, handler) {
59
+ let off;
60
+ onMounted(() => off = events.on(type, handler));
61
+ onBeforeUnmount(() => off?.());
62
+ }
63
+ function useEventValue(type) {
64
+ const value = shallowRef(events.last(type));
65
+ useEvent(type, (v) => value.value = v);
66
+ return value;
67
+ }
68
+ function useShared(key, select) {
69
+ const handle = shared(key);
70
+ const pick = memoSelect();
71
+ const state = shallowRef();
72
+ const off = handle.subscribe((v) => state.value = pick(v, select ?? same));
73
+ if (getCurrentScope()) onScopeDispose(off);
74
+ return select ? computed(() => state.value) : computed({ get: () => state.value, set: handle.set });
75
+ }
76
+ var VitralRemote = defineComponent({
77
+ name: "VitralRemote",
78
+ props: {
79
+ /** Nome registrado. Com `src`, o nome sob o qual a URL é registrada. */
80
+ name: { type: String, default: void 0 },
81
+ /** URL do `vitral.json`. Dispensa `configure()`. */
82
+ src: { type: String, default: void 0 },
83
+ props: { type: Object, default: () => ({}) },
84
+ isolate: { type: String, default: void 0 },
85
+ /** `'lazy'`: monta perto de aparecer na tela; `'idle'`: com o navegador ocioso. */
86
+ loading: { type: String, default: void 0 },
87
+ /** Baixa antes de montar: `'hover'`, `'visible'` ou `'idle'`. */
88
+ prefetch: { type: String, default: void 0 },
89
+ /** `'high'` para o remote que aparece logo ao abrir a página. */
90
+ priority: { type: String, default: void 0 },
91
+ /** Ao sair da página, guarda o remote montado (LRU, padrão 5) e na volta só atualiza as props. */
92
+ keepAlive: { type: [Boolean, Number], default: false }
93
+ },
94
+ emits: ["error", "ready"],
95
+ setup(p, { slots, emit }) {
96
+ const target = ref(null);
97
+ const status = ref("loading");
98
+ const error = shallowRef(null);
99
+ let slot = null;
100
+ onMounted(() => {
101
+ slot = hostSlot(target.value, {
102
+ name: p.name,
103
+ src: p.src,
104
+ props: { ...p.props },
105
+ isolate: p.isolate,
106
+ loading: p.loading,
107
+ prefetch: p.prefetch,
108
+ priority: p.priority,
109
+ keepAlive: p.keepAlive,
110
+ onStatus(s, e) {
111
+ status.value = s;
112
+ error.value = e;
113
+ if (s === "ready") emit("ready", timings(p.name || absolute(p.src ?? "")));
114
+ if (e) {
115
+ emit("error", e);
116
+ if (!slots.error) console.error(e);
117
+ }
118
+ }
119
+ });
120
+ });
121
+ watch(() => [p.name, p.src, p.isolate], ([name, src, isolate]) => slot?.set({ name, src, isolate }), { flush: "post" });
122
+ watch(
123
+ () => p.props,
124
+ (next) => slot?.update({ ...next }),
125
+ { deep: true }
126
+ );
127
+ onBeforeUnmount(() => {
128
+ slot?.destroy();
129
+ slot = null;
130
+ });
131
+ const retry = () => slot?.retry();
132
+ return () => h("div", { "data-vitral": p.name ?? p.src, "data-vitral-status": status.value }, [
133
+ status.value === "loading" ? slots.fallback?.() : null,
134
+ status.value === "error" ? slots.error?.({ error: error.value, retry }) : null,
135
+ // O Vue nunca coloca filhos neste div: ele pertence ao remote.
136
+ h("div", { ref: target })
137
+ ]);
138
+ }
139
+ });
140
+ export {
141
+ VitralRemote,
142
+ events,
143
+ useEvent,
144
+ useEventValue,
145
+ useShared,
146
+ useVitral,
147
+ vueRemote
148
+ };
package/package.json CHANGED
@@ -1,6 +1,334 @@
1
1
  {
2
2
  "name": "vitral",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
3
+ "version": "0.2.0",
4
+ "description": "Micro-frontends sem burocracia: um contrato mount/unmount, carregamento em runtime e adaptadores para React, Next, Vue, Nuxt, Angular, Svelte, Solid, Preact, Lit e JS/TS puro.",
5
+ "keywords": [
6
+ "micro-frontend",
7
+ "microfrontends",
8
+ "module-federation",
9
+ "single-spa",
10
+ "react",
11
+ "nextjs",
12
+ "vue",
13
+ "nuxt",
14
+ "angular",
15
+ "svelte",
16
+ "solid",
17
+ "preact",
18
+ "lit",
19
+ "web-components",
20
+ "vite"
21
+ ],
22
+ "homepage": "https://github.com/joaogabriel15/vitral#readme",
23
+ "bugs": {
24
+ "url": "https://github.com/joaogabriel15/vitral/issues"
25
+ },
26
+ "repository": {
27
+ "type": "git",
28
+ "url": "git+https://github.com/joaogabriel15/vitral.git",
29
+ "directory": "packages/vitral"
30
+ },
31
+ "license": "MIT",
32
+ "author": "João (https://github.com/joaogabriel15)",
33
+ "type": "module",
34
+ "bin": {
35
+ "vitral": "./dist/cli.js"
36
+ },
37
+ "sideEffects": [
38
+ "./dist/auto.js"
39
+ ],
40
+ "engines": {
41
+ "node": ">=20.19"
42
+ },
43
+ "files": [
44
+ "dist",
45
+ "README.md",
46
+ "LICENSE"
47
+ ],
48
+ "exports": {
49
+ ".": {
50
+ "types": "./dist/index.d.ts",
51
+ "import": "./dist/index.js"
52
+ },
53
+ "./auto": {
54
+ "types": "./dist/auto.d.ts",
55
+ "import": "./dist/auto.js"
56
+ },
57
+ "./devtools": {
58
+ "types": "./dist/devtools.d.ts",
59
+ "import": "./dist/devtools.js"
60
+ },
61
+ "./element": {
62
+ "types": "./dist/element.d.ts",
63
+ "import": "./dist/element.js"
64
+ },
65
+ "./routes": {
66
+ "types": "./dist/routes.d.ts",
67
+ "import": "./dist/routes.js"
68
+ },
69
+ "./iframe": {
70
+ "types": "./dist/iframe.d.ts",
71
+ "import": "./dist/iframe.js"
72
+ },
73
+ "./react": {
74
+ "types": "./dist/react.d.ts",
75
+ "import": "./dist/react.js"
76
+ },
77
+ "./vue": {
78
+ "types": "./dist/vue.d.ts",
79
+ "import": "./dist/vue.js"
80
+ },
81
+ "./svelte": {
82
+ "types": "./dist/svelte.d.ts",
83
+ "import": "./dist/svelte.js"
84
+ },
85
+ "./preact": {
86
+ "types": "./dist/preact.d.ts",
87
+ "import": "./dist/preact.js"
88
+ },
89
+ "./solid": {
90
+ "types": "./dist/solid.d.ts",
91
+ "import": "./dist/solid.js"
92
+ },
93
+ "./angular": {
94
+ "types": "./dist/angular.d.ts",
95
+ "import": "./dist/angular.js"
96
+ },
97
+ "./vite": {
98
+ "types": "./dist/vite.d.ts",
99
+ "import": "./dist/vite.js"
100
+ },
101
+ "./testing": {
102
+ "types": "./dist/testing.d.ts",
103
+ "import": "./dist/testing.js"
104
+ }
105
+ },
106
+ "publishConfig": {
107
+ "access": "public",
108
+ "provenance": true
109
+ },
110
+ "dependencies": {
111
+ "postcss": "^8.5.30"
112
+ },
113
+ "peerDependencies": {
114
+ "@angular/core": ">=17",
115
+ "@angular/platform-browser": ">=17",
116
+ "preact": ">=10",
117
+ "react": ">=18",
118
+ "react-dom": ">=18",
119
+ "solid-js": ">=1.8",
120
+ "svelte": ">=5",
121
+ "typescript": ">=5",
122
+ "vite": ">=5",
123
+ "vue": ">=3.3"
124
+ },
125
+ "peerDependenciesMeta": {
126
+ "react": {
127
+ "optional": true
128
+ },
129
+ "react-dom": {
130
+ "optional": true
131
+ },
132
+ "vue": {
133
+ "optional": true
134
+ },
135
+ "svelte": {
136
+ "optional": true
137
+ },
138
+ "preact": {
139
+ "optional": true
140
+ },
141
+ "solid-js": {
142
+ "optional": true
143
+ },
144
+ "@angular/core": {
145
+ "optional": true
146
+ },
147
+ "@angular/platform-browser": {
148
+ "optional": true
149
+ },
150
+ "vite": {
151
+ "optional": true
152
+ },
153
+ "typescript": {
154
+ "optional": true
155
+ }
156
+ },
157
+ "devDependencies": {
158
+ "@angular/common": "^22.2.2",
159
+ "@angular/compiler": "^22.2.2",
160
+ "@angular/core": "^22.2.2",
161
+ "@angular/platform-browser": "^22.2.2",
162
+ "@arethetypeswrong/cli": "^0.18.5",
163
+ "@size-limit/preset-small-lib": "^11.2.0",
164
+ "@sveltejs/vite-plugin-svelte": "^7.3.1",
165
+ "@tailwindcss/vite": "^4.3.3",
166
+ "@testing-library/dom": "^10.4.2",
167
+ "@types/node": "^22.20.5",
168
+ "@types/react": "^19.0.0",
169
+ "@types/react-dom": "^19.0.0",
170
+ "@vitest/coverage-v8": "4.1.11",
171
+ "happy-dom": "^20.0.0",
172
+ "preact": "^10.29.8",
173
+ "publint": "^0.3.25",
174
+ "react": "^19.0.0",
175
+ "react-dom": "^19.0.0",
176
+ "rxjs": "^7.8.2",
177
+ "size-limit": "^11.2.0",
178
+ "solid-js": "^1.9.17",
179
+ "svelte": "^5.57.2",
180
+ "tailwindcss": "^4.3.3",
181
+ "tsup": "^8.5.0",
182
+ "typescript": "~5.9.0",
183
+ "vite": "^8.0.0",
184
+ "vitest": "^4.0.0",
185
+ "vue": "^3.5.0"
186
+ },
187
+ "size-limit": [
188
+ {
189
+ "name": "host mínimo",
190
+ "path": "dist/index.js",
191
+ "import": "{ configure, createSlot }",
192
+ "ignore": [
193
+ "./shadow-*",
194
+ "./overrides-*",
195
+ "./sri-*",
196
+ "./dedupe-*",
197
+ "./expose-*"
198
+ ],
199
+ "limit": "4.3 kB"
200
+ },
201
+ {
202
+ "name": "núcleo",
203
+ "path": "dist/index.js",
204
+ "import": "{ RemoteError, __reset, component, configure, createEventBus, createSlot, defineRemote, events, html, loadRemote, mountRemote, navigate, preload, register, render, unsafeHTML }",
205
+ "ignore": [
206
+ "./shadow-*",
207
+ "./sri-*",
208
+ "./dedupe-*",
209
+ "./expose-*"
210
+ ],
211
+ "limit": "5.4 kB"
212
+ },
213
+ {
214
+ "name": "SRI e dedupe (sob demanda, com as dependências)",
215
+ "path": "dist/sri-*.js",
216
+ "limit": "2.4 kB"
217
+ },
218
+ {
219
+ "name": "dedupe (sob demanda, para hosts que oferecem dependências)",
220
+ "path": "dist/dedupe-*.js",
221
+ "limit": "0.65 kB"
222
+ },
223
+ {
224
+ "name": "host mínimo + store",
225
+ "path": "dist/index.js",
226
+ "import": "{ configure, createSlot, provide, shared, batch }",
227
+ "ignore": [
228
+ "./shadow-*",
229
+ "./overrides-*",
230
+ "./sri-*",
231
+ "./dedupe-*",
232
+ "./expose-*"
233
+ ],
234
+ "limit": "5 kB"
235
+ },
236
+ {
237
+ "name": "host mínimo + store + persist + syncTabs",
238
+ "path": "dist/index.js",
239
+ "import": "{ configure, createSlot, provide, shared, batch, persist, syncTabs }",
240
+ "ignore": [
241
+ "./shadow-*",
242
+ "./overrides-*",
243
+ "./sri-*",
244
+ "./dedupe-*",
245
+ "./expose-*"
246
+ ],
247
+ "limit": "5.2 kB"
248
+ },
249
+ {
250
+ "name": "estilos do Shadow DOM (além do núcleo)",
251
+ "path": "dist/shadow-*.js",
252
+ "ignore": [
253
+ "./chunk-*"
254
+ ],
255
+ "limit": "1 kB"
256
+ },
257
+ {
258
+ "name": "react",
259
+ "path": "dist/react.js",
260
+ "import": "{ Remote, reactRemote }",
261
+ "ignore": [
262
+ "react",
263
+ "react-dom",
264
+ "./shadow-*",
265
+ "./sri-*",
266
+ "./dedupe-*",
267
+ "./expose-*"
268
+ ],
269
+ "limit": "6.2 kB"
270
+ },
271
+ {
272
+ "name": "vue",
273
+ "path": "dist/vue.js",
274
+ "import": "{ VitralRemote, vueRemote }",
275
+ "ignore": [
276
+ "vue",
277
+ "./shadow-*",
278
+ "./sri-*",
279
+ "./dedupe-*",
280
+ "./expose-*"
281
+ ],
282
+ "limit": "6 kB"
283
+ },
284
+ {
285
+ "name": "element",
286
+ "path": "dist/element.js",
287
+ "import": "{ defineVitralElement }",
288
+ "ignore": [
289
+ "./shadow-*",
290
+ "./sri-*",
291
+ "./dedupe-*",
292
+ "./expose-*"
293
+ ],
294
+ "limit": "6.1 kB"
295
+ },
296
+ {
297
+ "name": "devtools",
298
+ "path": "dist/devtools.js",
299
+ "import": "{ devtools }",
300
+ "limit": "2 kB"
301
+ },
302
+ {
303
+ "name": "auto",
304
+ "path": "dist/auto.js",
305
+ "limit": "6 kB",
306
+ "ignore": [
307
+ "./shadow-*",
308
+ "./overrides-*",
309
+ "./sri-*",
310
+ "./dedupe-*",
311
+ "./expose-*"
312
+ ]
313
+ },
314
+ {
315
+ "name": "routes",
316
+ "path": "dist/routes.js",
317
+ "import": "{ routes }",
318
+ "limit": "7.9 kB"
319
+ },
320
+ {
321
+ "name": "iframe",
322
+ "path": "dist/iframe.js",
323
+ "import": "{ enableIframe }",
324
+ "limit": "6 kB"
325
+ }
326
+ ],
327
+ "scripts": {
328
+ "build": "tsup",
329
+ "test": "vitest run --coverage",
330
+ "typecheck": "tsc --noEmit && tsc -p test/types",
331
+ "lint:pkg": "publint --strict && attw --pack --profile esm-only",
332
+ "size": "size-limit"
333
+ }
6
334
  }