@camstack/addon-auth 1.1.1 → 1.1.3
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/dist/{dist-JmuFs-U5.mjs → dist-mmJDfwXE.js} +335 -8
- package/dist/{dist-CXCR7sEk.js → dist-suALViLT.mjs} +276 -37
- package/dist/magic-link/auth-magic-link.addon.js +104 -30
- package/dist/magic-link/auth-magic-link.addon.mjs +104 -30
- package/dist/oidc/auth-oidc.addon.js +36 -8
- package/dist/oidc/auth-oidc.addon.mjs +36 -8
- package/dist/webauthn/_stub.js +568 -0
- package/dist/webauthn/_virtual_mf-localSharedImportMap___mfe_internal__addon_auth_webauthn_widgets-Bg_T1-iY.mjs +156 -0
- package/dist/webauthn/_virtual_mf___mfe_internal__addon_auth_webauthn_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-EnxrfqY5.mjs +26 -0
- package/dist/webauthn/_virtual_mf___mfe_internal__addon_auth_webauthn_widgets__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-CQ-aEQ9b.mjs +26 -0
- package/dist/webauthn/_virtual_mf___mfe_internal__addon_auth_webauthn_widgets__loadShare__react__loadShare__.js-BIIa6vDX.mjs +26 -0
- package/dist/webauthn/_virtual_mf___mfe_internal__addon_auth_webauthn_widgets__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-BL2etuqg.mjs +26 -0
- package/dist/webauthn/auth-webauthn.addon.js +141 -5
- package/dist/webauthn/auth-webauthn.addon.mjs +136 -37
- package/dist/webauthn/dist-CYZr2fwk.mjs +2726 -0
- package/dist/webauthn/hostInit-Boe91Eeg.mjs +129 -0
- package/dist/webauthn/remoteEntry.js +134 -0
- package/dist/webauthn/remoteEntry.ssr.js +33 -0
- package/dist/webauthn/virtualExposes-Ckj56FAf.mjs +27 -0
- package/dist/webauthn/virtual_mf-exposes-ssr___mfe_internal__addon_auth_webauthn_widgets__remoteEntry_js-C5AzEzK5.mjs +10 -0
- package/package.json +30 -5
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
//#region \0virtual:mf:__mfe_internal__addon_auth_webauthn_widgets__H_A_I__hostAutoInit__H_A_I__.js
|
|
2
|
+
var e = "__mf_module_cache__";
|
|
3
|
+
globalThis[e] ||= {
|
|
4
|
+
share: {},
|
|
5
|
+
remote: {}
|
|
6
|
+
}, globalThis[e].share ||= {}, globalThis[e].remote ||= {};
|
|
7
|
+
var t = globalThis[e], n;
|
|
8
|
+
async function r() {
|
|
9
|
+
return n ||= (async () => {
|
|
10
|
+
let e = await (await import("./remoteEntry.js")).init(), n = {
|
|
11
|
+
react: {
|
|
12
|
+
version: "19.2.7",
|
|
13
|
+
scope: "default",
|
|
14
|
+
shareConfig: {
|
|
15
|
+
singleton: !0,
|
|
16
|
+
requiredVersion: "*",
|
|
17
|
+
import: !1
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"react-dom": {
|
|
21
|
+
version: "19.2.7",
|
|
22
|
+
scope: "default",
|
|
23
|
+
shareConfig: {
|
|
24
|
+
singleton: !0,
|
|
25
|
+
requiredVersion: "*",
|
|
26
|
+
import: !1
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"react/jsx-runtime": {
|
|
30
|
+
version: "19.2.7",
|
|
31
|
+
scope: "default",
|
|
32
|
+
shareConfig: {
|
|
33
|
+
singleton: !0,
|
|
34
|
+
requiredVersion: "*",
|
|
35
|
+
import: !1
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"@camstack/types": {
|
|
39
|
+
version: "1.1.36",
|
|
40
|
+
scope: "default",
|
|
41
|
+
shareConfig: {
|
|
42
|
+
singleton: !0,
|
|
43
|
+
requiredVersion: "*",
|
|
44
|
+
import: !1
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"@camstack/sdk": {
|
|
48
|
+
version: "1.1.20",
|
|
49
|
+
scope: "default",
|
|
50
|
+
shareConfig: {
|
|
51
|
+
singleton: !0,
|
|
52
|
+
requiredVersion: "*",
|
|
53
|
+
import: !1
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"@tanstack/react-query": {
|
|
57
|
+
version: "5.101.0",
|
|
58
|
+
scope: "default",
|
|
59
|
+
shareConfig: {
|
|
60
|
+
singleton: !0,
|
|
61
|
+
requiredVersion: "*",
|
|
62
|
+
import: !1
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
"@trpc/client": {
|
|
66
|
+
version: "11.18.0",
|
|
67
|
+
scope: "default",
|
|
68
|
+
shareConfig: {
|
|
69
|
+
singleton: !0,
|
|
70
|
+
requiredVersion: "*",
|
|
71
|
+
import: !1
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
"@trpc/react-query": {
|
|
75
|
+
version: "11.18.0",
|
|
76
|
+
scope: "default",
|
|
77
|
+
shareConfig: {
|
|
78
|
+
singleton: !0,
|
|
79
|
+
requiredVersion: "*",
|
|
80
|
+
import: !1
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
"@camstack/ui-library": {
|
|
84
|
+
version: "1.1.31",
|
|
85
|
+
scope: "default",
|
|
86
|
+
shareConfig: {
|
|
87
|
+
singleton: !0,
|
|
88
|
+
requiredVersion: "*",
|
|
89
|
+
import: !1
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
"react-dom/client": {
|
|
93
|
+
version: "19.2.7",
|
|
94
|
+
scope: "default",
|
|
95
|
+
shareConfig: {
|
|
96
|
+
singleton: !0,
|
|
97
|
+
requiredVersion: "*",
|
|
98
|
+
import: !1
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}, r = (e, t, n, r) => {
|
|
102
|
+
let i = ((Array.isArray(r) ? r[0] : r) || "default") + ":";
|
|
103
|
+
return t || !n ? i + e : i + e + "@" + n;
|
|
104
|
+
}, i = (e) => {
|
|
105
|
+
let t = e;
|
|
106
|
+
for (let e = 0; e < 5; e++) {
|
|
107
|
+
let e = t?.default;
|
|
108
|
+
if (!e || typeof e != "object" || Object.keys(e).length === 0) break;
|
|
109
|
+
let n = Object.keys(t).filter((e) => e !== "default").map((e) => t[e]);
|
|
110
|
+
if (n.length > 0 && n.some((e) => e !== void 0)) break;
|
|
111
|
+
t = e;
|
|
112
|
+
}
|
|
113
|
+
return t;
|
|
114
|
+
};
|
|
115
|
+
for (let [a, o] of Object.entries(n)) {
|
|
116
|
+
let n = r(a, o.shareConfig?.singleton, o.version, o.scope);
|
|
117
|
+
t.share[n] === void 0 && await e.loadShare(a, { customShareInfo: { shareConfig: o.shareConfig } }).then((e) => {
|
|
118
|
+
let r = typeof e == "function" ? e() : e;
|
|
119
|
+
return Promise.resolve(r).then((e) => {
|
|
120
|
+
t.share[n] = i(e);
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
return await Promise.all([]), e;
|
|
125
|
+
})(), n;
|
|
126
|
+
}
|
|
127
|
+
n = r();
|
|
128
|
+
//#endregion
|
|
129
|
+
export { n as hostInitPromise, r as initHost };
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { t as e } from "./dist-CYZr2fwk.mjs";
|
|
2
|
+
//#region virtual:mf-REMOTE_ENTRY_ID:__mfe_internal__addon_auth_webauthn_widgets__remoteEntry_js
|
|
3
|
+
typeof __VUE_HMR_RUNTIME__ > "u" && (globalThis.__VUE_HMR_RUNTIME__ = {
|
|
4
|
+
createRecord() {},
|
|
5
|
+
rerender() {},
|
|
6
|
+
reload() {}
|
|
7
|
+
});
|
|
8
|
+
var t = "__mf_init__virtual:mf:__mfe_internal__addon_auth_webauthn_widgets__mf_v__runtimeInit__mf_v__.js__", n = globalThis[t];
|
|
9
|
+
if (!n) {
|
|
10
|
+
let e, r, i = new Promise((t, n) => {
|
|
11
|
+
e = t, r = n;
|
|
12
|
+
});
|
|
13
|
+
n = globalThis[t] = {
|
|
14
|
+
initPromise: i,
|
|
15
|
+
initResolve: e,
|
|
16
|
+
initReject: r
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
var r = n.initResolve, i = "__mf_module_cache__";
|
|
20
|
+
globalThis[i] ||= {
|
|
21
|
+
share: {},
|
|
22
|
+
remote: {}
|
|
23
|
+
}, globalThis[i].share ||= {}, globalThis[i].remote ||= {};
|
|
24
|
+
var a = globalThis[i], o = {}, s = "default", c = "addon_auth_webauthn_widgets", l, u;
|
|
25
|
+
async function d(e) {
|
|
26
|
+
for (let t = 0;; t++) try {
|
|
27
|
+
return await e();
|
|
28
|
+
} catch (e) {
|
|
29
|
+
throw e;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
async function f() {
|
|
33
|
+
return l ||= d(() => import("./_virtual_mf-localSharedImportMap___mfe_internal__addon_auth_webauthn_widgets-Bg_T1-iY.mjs")).catch((e) => {
|
|
34
|
+
throw l = void 0, e;
|
|
35
|
+
}), l;
|
|
36
|
+
}
|
|
37
|
+
async function p() {
|
|
38
|
+
return u ||= d(() => import("./virtualExposes-Ckj56FAf.mjs")).then((e) => e.default ?? e).catch((e) => {
|
|
39
|
+
throw u = void 0, e;
|
|
40
|
+
}), u;
|
|
41
|
+
}
|
|
42
|
+
async function m(t = {}, n = []) {
|
|
43
|
+
let i = (e, t, n, r) => {
|
|
44
|
+
let i = ((Array.isArray(r) ? r[0] : r) || "default") + ":";
|
|
45
|
+
return t || !n ? i + e : i + e + "@" + n;
|
|
46
|
+
}, { usedShared: l, usedRemotes: u } = await f();
|
|
47
|
+
try {
|
|
48
|
+
let e = globalThis.__FEDERATION__?.__SHARE__;
|
|
49
|
+
if (e) {
|
|
50
|
+
let t = (e) => {
|
|
51
|
+
let t = e;
|
|
52
|
+
for (let e = 0; e < 5; e++) {
|
|
53
|
+
let e = t?.default;
|
|
54
|
+
if (!e || typeof e != "object" || Object.keys(e).length === 0) break;
|
|
55
|
+
let n = Object.keys(t).filter((e) => e !== "default").map((e) => t[e]);
|
|
56
|
+
if (n.length > 0 && n.some((e) => e !== void 0)) break;
|
|
57
|
+
t = e;
|
|
58
|
+
}
|
|
59
|
+
return t;
|
|
60
|
+
};
|
|
61
|
+
for (let [, n] of Object.entries(e)) {
|
|
62
|
+
let e = n?.default;
|
|
63
|
+
if (e) for (let [n, r] of Object.entries(e)) for (let [e, o] of Object.entries(r)) {
|
|
64
|
+
if (!o.lib) continue;
|
|
65
|
+
let r = i(n, o.shareConfig?.singleton, e, "default");
|
|
66
|
+
if (a.share[r] !== void 0) continue;
|
|
67
|
+
let s = typeof o.lib == "function" ? o.lib() : o.lib, c = t(await Promise.resolve(s));
|
|
68
|
+
a.share[r] = c;
|
|
69
|
+
let u = l?.[n];
|
|
70
|
+
if (o.shareConfig?.singleton && u) {
|
|
71
|
+
let e = i(n, u.shareConfig?.singleton, u.version, u.scope);
|
|
72
|
+
a.share[e] === void 0 && (a.share[e] = c);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
} catch (e) {
|
|
78
|
+
console.error("[Module Federation] Failed to bridge external shared modules", e);
|
|
79
|
+
}
|
|
80
|
+
for (let [e, t] of Object.entries(l)) {
|
|
81
|
+
let n = i(e, t.shareConfig?.singleton, t.version, t.scope);
|
|
82
|
+
if (a.share[n] !== void 0) continue;
|
|
83
|
+
let r = i(e, !0, t.version, t.scope);
|
|
84
|
+
a.share[r] !== void 0 && (a.share[n] = a.share[r]);
|
|
85
|
+
}
|
|
86
|
+
let p = [], m = globalThis.window === void 0 ? await Promise.all([]) : [], h = e({
|
|
87
|
+
name: c,
|
|
88
|
+
remotes: u,
|
|
89
|
+
shared: l,
|
|
90
|
+
plugins: [...p, ...m],
|
|
91
|
+
shareStrategy: "version-first"
|
|
92
|
+
});
|
|
93
|
+
var g = o[s];
|
|
94
|
+
if (g ||= o[s] = { from: c }, !(n.indexOf(g) >= 0)) {
|
|
95
|
+
n.push(g), h.initShareScopeMap("default", t), r(h);
|
|
96
|
+
try {
|
|
97
|
+
await d(async () => {
|
|
98
|
+
await Promise.all(await h.initializeSharing("default", {
|
|
99
|
+
strategy: "version-first",
|
|
100
|
+
from: "build",
|
|
101
|
+
initScope: n
|
|
102
|
+
}));
|
|
103
|
+
});
|
|
104
|
+
} catch (e) {
|
|
105
|
+
console.error("[Module Federation]", e);
|
|
106
|
+
}
|
|
107
|
+
for (let [e, n] of Object.entries(l)) {
|
|
108
|
+
let r = i(e, n.shareConfig?.singleton, n.version, n.scope);
|
|
109
|
+
if (n.shareConfig?.import !== !1 || a.share[r] !== void 0) continue;
|
|
110
|
+
let o = (e) => {
|
|
111
|
+
let t = e;
|
|
112
|
+
for (let e = 0; e < 5; e++) {
|
|
113
|
+
let e = t?.default;
|
|
114
|
+
if (!e || typeof e != "object" || Object.keys(e).length === 0) break;
|
|
115
|
+
let n = Object.keys(t).filter((e) => e !== "default").map((e) => t[e]);
|
|
116
|
+
if (n.length > 0 && n.some((e) => e !== void 0)) break;
|
|
117
|
+
t = e;
|
|
118
|
+
}
|
|
119
|
+
return t;
|
|
120
|
+
}, s = t?.[e], c = s && s[Object.keys(s)[0]];
|
|
121
|
+
if (!c) continue;
|
|
122
|
+
let l = c.lib || (c.loading ? await c.loading : await c.get?.()), u = typeof l == "function" ? l() : l, d = await Promise.resolve(u);
|
|
123
|
+
a.share[r] = o(d);
|
|
124
|
+
}
|
|
125
|
+
return h;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
async function h(e) {
|
|
129
|
+
let t = await p();
|
|
130
|
+
if (!(e in t)) throw Error(`[Module Federation] Module ${e} does not exist in container.`);
|
|
131
|
+
return t[e]().then((e) => () => e);
|
|
132
|
+
}
|
|
133
|
+
//#endregion
|
|
134
|
+
export { h as get, m as init };
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { init as e } from "@module-federation/runtime";
|
|
2
|
+
//#region virtual:mf-REMOTE_ENTRY_SSR_ID:__mfe_internal__addon_auth_webauthn_widgets__remoteEntry_js
|
|
3
|
+
var t;
|
|
4
|
+
async function n() {
|
|
5
|
+
return t ??= import("./virtual_mf-exposes-ssr___mfe_internal__addon_auth_webauthn_widgets__remoteEntry_js-C5AzEzK5.mjs").then((e) => e.default ?? e), t;
|
|
6
|
+
}
|
|
7
|
+
async function r(t = {}, n = []) {
|
|
8
|
+
let r = e({
|
|
9
|
+
name: "addon_auth_webauthn_widgets",
|
|
10
|
+
remotes: [],
|
|
11
|
+
shared: {}
|
|
12
|
+
}), i = { from: "addon_auth_webauthn_widgets" };
|
|
13
|
+
if (!(n.indexOf(i) >= 0)) {
|
|
14
|
+
n.push(i), r.initShareScopeMap("default", t);
|
|
15
|
+
try {
|
|
16
|
+
await Promise.all(await r.initializeSharing("default", {
|
|
17
|
+
strategy: "version-first",
|
|
18
|
+
from: "build",
|
|
19
|
+
initScope: n
|
|
20
|
+
}));
|
|
21
|
+
} catch (e) {
|
|
22
|
+
console.error("[Module Federation SSR]", e);
|
|
23
|
+
}
|
|
24
|
+
return r;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
async function i(e) {
|
|
28
|
+
let t = await n();
|
|
29
|
+
if (!(e in t)) throw Error(`[Module Federation] Module ${e} does not exist in container.`);
|
|
30
|
+
return t[e]().then((e) => () => e);
|
|
31
|
+
}
|
|
32
|
+
//#endregion
|
|
33
|
+
export { i as get, r as init };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
//#region virtual:mf-exposes:__mfe_internal__addon_auth_webauthn_widgets__remoteEntry_js
|
|
2
|
+
var e = {}, t = /* @__PURE__ */ new Set(), n = Promise.resolve();
|
|
3
|
+
async function r(e) {
|
|
4
|
+
let t = n.then(e, e);
|
|
5
|
+
return n = t.then(() => void 0, () => void 0), t;
|
|
6
|
+
}
|
|
7
|
+
async function i(n) {
|
|
8
|
+
if (typeof document > "u") return;
|
|
9
|
+
let r = e[n] || [];
|
|
10
|
+
await Promise.all(r.map((e) => {
|
|
11
|
+
let n = new URL(e, import.meta.url).href;
|
|
12
|
+
return t.has(n) || (t.add(n), document.querySelector(`link[rel="stylesheet"][data-mf-href="${n}"]`)) ? Promise.resolve() : new Promise((e, t) => {
|
|
13
|
+
let r = document.createElement("link");
|
|
14
|
+
r.rel = "stylesheet", r.href = n, r.setAttribute("data-mf-href", n), r.onload = () => e(), r.onerror = () => t(/* @__PURE__ */ Error(`[Module Federation] Failed to load CSS asset: ${n}`)), document.head.appendChild(r);
|
|
15
|
+
});
|
|
16
|
+
}));
|
|
17
|
+
}
|
|
18
|
+
var a = { "./widgets": async () => {
|
|
19
|
+
await i("./widgets");
|
|
20
|
+
let e = await r(() => import("./_stub.js")), t = {};
|
|
21
|
+
return Object.assign(t, e), Object.defineProperty(t, "__esModule", {
|
|
22
|
+
value: !0,
|
|
23
|
+
enumerable: !1
|
|
24
|
+
}), t;
|
|
25
|
+
} };
|
|
26
|
+
//#endregion
|
|
27
|
+
export { a as default };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
//#region virtual:mf-exposes-ssr:__mfe_internal__addon_auth_webauthn_widgets__remoteEntry_js
|
|
2
|
+
var e = { "./widgets": async () => {
|
|
3
|
+
let e = await import("./_stub.js"), t = {};
|
|
4
|
+
return Object.assign(t, e), Object.defineProperty(t, "__esModule", {
|
|
5
|
+
value: !0,
|
|
6
|
+
enumerable: !1
|
|
7
|
+
}), t;
|
|
8
|
+
} };
|
|
9
|
+
//#endregion
|
|
10
|
+
export { e as default };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-auth",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.3",
|
|
4
4
|
"description": "CamStack authentication bundle — magic-link, OIDC, and WebAuthn/passkey. Multi-entry npm package shipping 3 addons under a single bundle; each addon keeps its own id, capabilities, and runner.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|
|
@@ -60,6 +60,9 @@
|
|
|
60
60
|
},
|
|
61
61
|
{
|
|
62
62
|
"name": "addon-routes"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"name": "login-method"
|
|
63
66
|
}
|
|
64
67
|
],
|
|
65
68
|
"protected": true
|
|
@@ -80,6 +83,9 @@
|
|
|
80
83
|
},
|
|
81
84
|
{
|
|
82
85
|
"name": "addon-routes"
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"name": "login-method"
|
|
83
89
|
}
|
|
84
90
|
],
|
|
85
91
|
"protected": true
|
|
@@ -96,10 +102,13 @@
|
|
|
96
102
|
"icon": "assets/webauthn/icon.svg",
|
|
97
103
|
"capabilities": [
|
|
98
104
|
{
|
|
99
|
-
"name": "
|
|
105
|
+
"name": "user-passkeys"
|
|
100
106
|
},
|
|
101
107
|
{
|
|
102
|
-
"name": "
|
|
108
|
+
"name": "addon-widgets-source"
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"name": "login-method"
|
|
103
112
|
}
|
|
104
113
|
],
|
|
105
114
|
"protected": true
|
|
@@ -107,21 +116,37 @@
|
|
|
107
116
|
]
|
|
108
117
|
},
|
|
109
118
|
"scripts": {
|
|
110
|
-
"build": "vite build",
|
|
119
|
+
"build": "vite build && vite build --config vite.widgets.config.ts",
|
|
120
|
+
"build:server": "vite build",
|
|
121
|
+
"build:widgets": "vite build --config vite.widgets.config.ts",
|
|
111
122
|
"typecheck": "tsc --noEmit",
|
|
112
123
|
"test": "vitest run --passWithNoTests",
|
|
113
124
|
"validate": "tsx ../../scripts/validate-addon.ts .",
|
|
114
125
|
"publish": "npm publish --access public"
|
|
115
126
|
},
|
|
116
127
|
"peerDependencies": {
|
|
117
|
-
"@camstack/types": "*"
|
|
128
|
+
"@camstack/types": "*",
|
|
129
|
+
"react": ">=18",
|
|
130
|
+
"react-dom": ">=18"
|
|
118
131
|
},
|
|
119
132
|
"dependencies": {
|
|
133
|
+
"@simplewebauthn/browser": "11.0.0",
|
|
120
134
|
"@simplewebauthn/server": "11.0.0",
|
|
135
|
+
"@simplewebauthn/types": "11.0.0",
|
|
121
136
|
"jose": "^6.2.3"
|
|
122
137
|
},
|
|
123
138
|
"devDependencies": {
|
|
139
|
+
"@camstack/sdk": "*",
|
|
124
140
|
"@camstack/types": "*",
|
|
141
|
+
"@camstack/ui-library": "*",
|
|
142
|
+
"@module-federation/vite": "^1.16.9",
|
|
143
|
+
"@tanstack/react-query": "^5.90.0",
|
|
144
|
+
"@types/react": "^19.0.0",
|
|
145
|
+
"@types/react-dom": "^19.0.0",
|
|
146
|
+
"@vitejs/plugin-react": "^6.0.2",
|
|
147
|
+
"lucide-react": "^0.511.0",
|
|
148
|
+
"react": "^19.0.0",
|
|
149
|
+
"react-dom": "^19.0.0",
|
|
125
150
|
"tsx": "^4.0.0",
|
|
126
151
|
"typescript": "~6.0.3",
|
|
127
152
|
"vite": "^8.0.11",
|