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.
- package/LICENSE +21 -0
- package/README.md +357 -2
- package/dist/angular.d.ts +38 -0
- package/dist/angular.js +90 -0
- package/dist/auto.d.ts +2 -0
- package/dist/auto.js +12 -0
- package/dist/chunk-2XF5BKV3.js +190 -0
- package/dist/chunk-6Y3VMWHH.js +181 -0
- package/dist/chunk-DXORSF4X.js +42 -0
- package/dist/chunk-GNPFWISJ.js +80 -0
- package/dist/chunk-HP6QWU6K.js +51 -0
- package/dist/chunk-NCONW6WS.js +606 -0
- package/dist/chunk-PX7PBCCT.js +89 -0
- package/dist/chunk-S5MZT5IT.js +20 -0
- package/dist/chunk-SFL6LTP3.js +56 -0
- package/dist/chunk-UTYAX6MU.js +152 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +88 -0
- package/dist/dedupe-IWFIXRWG.js +81 -0
- package/dist/devtools.d.ts +12 -0
- package/dist/devtools.js +86 -0
- package/dist/element.d.ts +88 -0
- package/dist/element.js +18 -0
- package/dist/errors-KKB8FGCz.d.ts +11 -0
- package/dist/events-DUdjhfps.d.ts +6 -0
- package/dist/expose-53BEJB34.js +14 -0
- package/dist/host-slot-Cz6EiGsB.d.ts +6 -0
- package/dist/iframe.d.ts +28 -0
- package/dist/iframe.js +236 -0
- package/dist/index.d.ts +186 -0
- package/dist/index.js +65 -0
- package/dist/navigate-BRG1WJUM.d.ts +9 -0
- package/dist/overrides-NZAIUGK5.js +15 -0
- package/dist/preact.d.ts +45 -0
- package/dist/preact.js +71 -0
- package/dist/react.d.ts +63 -0
- package/dist/react.js +167 -0
- package/dist/routes.d.ts +56 -0
- package/dist/routes.js +143 -0
- package/dist/shadow-MYRJQLLY.js +72 -0
- package/dist/slot-pB276oPt.d.ts +36 -0
- package/dist/solid.d.ts +47 -0
- package/dist/solid.js +83 -0
- package/dist/sri-BVKZNX5Q.js +114 -0
- package/dist/state-BDdCwc21.d.ts +4 -0
- package/dist/svelte.d.ts +43 -0
- package/dist/svelte.js +42 -0
- package/dist/testing.d.ts +28 -0
- package/dist/testing.js +52 -0
- package/dist/types-BV-hUrms.d.ts +265 -0
- package/dist/vite.d.ts +78 -0
- package/dist/vite.js +786 -0
- package/dist/vue.d.ts +133 -0
- package/dist/vue.js +148 -0
- 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.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
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
|
}
|