@cobaltcore-dev/aurora 0.17.0 → 0.18.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 (48) hide show
  1. package/dist/client/AuthProvider-Cj_Btfnc.mjs +56 -0
  2. package/dist/client/AuthProvider-Cj_Btfnc.mjs.map +1 -0
  3. package/dist/client/{FloatingIpActionModals-BUc6yaQ8.mjs → FloatingIpActionModals-sJlSFIsK.mjs} +2 -2
  4. package/dist/client/{FloatingIpActionModals-BUc6yaQ8.mjs.map → FloatingIpActionModals-sJlSFIsK.mjs.map} +1 -1
  5. package/dist/client/{ImageToastNotifications-Dz-VsSwl.mjs → ImageToastNotifications-CISH3c_d.mjs} +2 -2
  6. package/dist/client/{ImageToastNotifications-Dz-VsSwl.mjs.map → ImageToastNotifications-CISH3c_d.mjs.map} +1 -1
  7. package/dist/client/{_auth-6uste_10.mjs → _auth-BtRCgHQe.mjs} +2 -2
  8. package/dist/client/{_auth-6uste_10.mjs.map → _auth-BtRCgHQe.mjs.map} +1 -1
  9. package/dist/client/{_floatingIpId-B0l4YNQc.mjs → _floatingIpId-C4Sa8tMa.mjs} +2 -2
  10. package/dist/client/{_floatingIpId-B0l4YNQc.mjs.map → _floatingIpId-C4Sa8tMa.mjs.map} +1 -1
  11. package/dist/client/{_floatingIpId-cpueAc2F2.mjs → _floatingIpId-CAUBZ5WD2.mjs} +4 -4
  12. package/dist/client/{_floatingIpId-cpueAc2F2.mjs.map → _floatingIpId-CAUBZ5WD2.mjs.map} +1 -1
  13. package/dist/client/{_imageId-Bv711w1n.mjs → _imageId-DpXNAIbD.mjs} +2 -2
  14. package/dist/client/{_imageId-Bv711w1n.mjs.map → _imageId-DpXNAIbD.mjs.map} +1 -1
  15. package/dist/client/{_pcaId-CPLb5J6d.mjs → _pcaId-DY9GPV7t.mjs} +4 -4
  16. package/dist/client/{_pcaId-CPLb5J6d.mjs.map → _pcaId-DY9GPV7t.mjs.map} +1 -1
  17. package/dist/client/{_pcaId-Hx_72pnp.mjs → _pcaId-ldtkXsbp.mjs} +2 -2
  18. package/dist/client/{_pcaId-Hx_72pnp.mjs.map → _pcaId-ldtkXsbp.mjs.map} +1 -1
  19. package/dist/client/{_securityGroupId-B-RYPDDc.mjs → _securityGroupId-B6_lD8ry.mjs} +2 -2
  20. package/dist/client/{_securityGroupId-B-RYPDDc.mjs.map → _securityGroupId-B6_lD8ry.mjs.map} +1 -1
  21. package/dist/client/{_securityGroupId-BC3KC6h5.mjs → _securityGroupId-D9FHSkNU.mjs} +3 -3
  22. package/dist/client/{_securityGroupId-BC3KC6h5.mjs.map → _securityGroupId-D9FHSkNU.mjs.map} +1 -1
  23. package/dist/client/{aurora-AAy9BJE7.mjs → aurora-Owys0YMN.mjs} +2 -2
  24. package/dist/client/{aurora-AAy9BJE7.mjs.map → aurora-Owys0YMN.mjs.map} +1 -1
  25. package/dist/client/{constants-BAqOfvr0.mjs → constants-COPE2ktv.mjs} +2 -2
  26. package/dist/client/{constants-BAqOfvr0.mjs.map → constants-COPE2ktv.mjs.map} +1 -1
  27. package/dist/client/{floatingips-Bkk5-I_p.mjs → floatingips-DOGKGGkC.mjs} +3 -3
  28. package/dist/client/{floatingips-Bkk5-I_p.mjs.map → floatingips-DOGKGGkC.mjs.map} +1 -1
  29. package/dist/client/{hooks-CnX5q5wN.mjs → hooks-DvdvErNv.mjs} +1 -1
  30. package/dist/client/{images-FE3vJ6pP.mjs → images-B1wqMKYw.mjs} +2 -2
  31. package/dist/client/{images-FE3vJ6pP.mjs.map → images-B1wqMKYw.mjs.map} +1 -1
  32. package/dist/client/{images-DBLfzuJA.mjs → images-D5UsQi8i.mjs} +4 -4
  33. package/dist/client/{images-DBLfzuJA.mjs.map → images-D5UsQi8i.mjs.map} +1 -1
  34. package/dist/client/index.d.ts +1 -1
  35. package/dist/client/index.js +262 -299
  36. package/dist/client/index.js.map +1 -1
  37. package/dist/client/{pca-P0ud1PA9.mjs → pca-B7WldCGw.mjs} +4 -4
  38. package/dist/client/{pca-P0ud1PA9.mjs.map → pca-B7WldCGw.mjs.map} +1 -1
  39. package/dist/client/{pca-BkAJ5jvX.mjs → pca-DztTIs18.mjs} +2 -2
  40. package/dist/client/{pca-BkAJ5jvX.mjs.map → pca-DztTIs18.mjs.map} +1 -1
  41. package/dist/client/{securitygroups-D14Jv1GQ.mjs → securitygroups-BRtHaTLm.mjs} +2 -2
  42. package/dist/client/{securitygroups-D14Jv1GQ.mjs.map → securitygroups-BRtHaTLm.mjs.map} +1 -1
  43. package/dist/client/trpcClient-Dy_MP_Pv.mjs.map +1 -1
  44. package/dist/client/trpcClient.d.ts +3007 -0
  45. package/dist/server/index.d.ts +3056 -1
  46. package/package.json +3 -3
  47. package/dist/client/AuthProvider-BQSJk5R4.mjs +0 -63
  48. package/dist/client/AuthProvider-BQSJk5R4.mjs.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cobaltcore-dev/aurora",
3
- "version": "0.17.0",
3
+ "version": "0.18.0",
4
4
  "private": false,
5
5
  "description": "Aurora OpenStack dashboard — server and client library",
6
6
  "license": "Apache-2.0",
@@ -107,8 +107,8 @@
107
107
  "vite-tsconfig-paths": "^6.1.1",
108
108
  "vitest": "^4.1.2",
109
109
  "@cobaltcore-dev/policy-engine": "2.0.0",
110
- "@cobaltcore-dev/signal-openstack": "1.0.0",
111
- "@cobaltcore-dev/aurora-config": "0.0.1"
110
+ "@cobaltcore-dev/aurora-config": "0.0.1",
111
+ "@cobaltcore-dev/signal-openstack": "1.0.0"
112
112
  },
113
113
  "scripts": {
114
114
  "build": "pnpm build:server && pnpm build:client",
@@ -1,63 +0,0 @@
1
- import { jsx as e } from "react/jsx-runtime";
2
- import t, { useCallback as n, useEffect as r, useRef as i, useState as a } from "react";
3
- //#region src/client/store/AuthProvider.tsx
4
- var o = /*#__PURE__*/ t.createContext(null);
5
- function s({ children: s, router: c }) {
6
- let [l, u] = t.useState(null), [d, f] = t.useState(void 0), [p, m] = t.useState(void 0), [h, g] = a(!1), [_, v] = a(void 0), y = i(null), b = !!l, x = n(() => {
7
- y.current &&= (clearTimeout(y.current), null);
8
- }, []), S = n(() => {
9
- g(!1), c.navigate({
10
- to: "/",
11
- search: _ ? { redirect: _ } : void 0
12
- });
13
- }, [c, _]), C = n(async (e = "manual") => {
14
- if (x(), u(null), f(void 0), m(e), e === "expired") {
15
- let e = window.location.pathname + window.location.search;
16
- e && e.startsWith("/") && v(e), g(!0);
17
- } else c.invalidate();
18
- }, [c, x]), w = n(async (e, t) => {
19
- u(e), m(void 0), g(!1), v(void 0), f(t ? new Date(t) : void 0);
20
- }, []);
21
- return r(() => {
22
- if (x(), l && d) {
23
- let e = d.getTime() - Date.now();
24
- if (e <= 0) {
25
- C("expired");
26
- return;
27
- }
28
- y.current = setTimeout(() => {
29
- C("expired");
30
- }, e);
31
- }
32
- return () => {
33
- x();
34
- };
35
- }, [
36
- l,
37
- d,
38
- C,
39
- x
40
- ]), /*#__PURE__*/ e(o.Provider, {
41
- value: {
42
- isAuthenticated: b,
43
- user: l,
44
- login: w,
45
- logout: C,
46
- expiresAt: d,
47
- logoutReason: p,
48
- showInactivityModal: h,
49
- closeInactivityModal: S,
50
- redirectAfterModal: _
51
- },
52
- children: s
53
- });
54
- }
55
- function c() {
56
- let e = t.useContext(o);
57
- if (!e) throw Error("useAuth must be used within an AuthProvider");
58
- return e;
59
- }
60
- //#endregion
61
- export { c as n, s as t };
62
-
63
- //# sourceMappingURL=AuthProvider-BQSJk5R4.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AuthProvider-BQSJk5R4.mjs","names":["React","useEffect","useRef","useCallback","useState","AuthContext","createContext","AuthProvider","children","router","user","setUser","expiresAt","setExpiresAt","undefined","logoutReason","setLogoutReason","showInactivityModal","setShowInactivityModal","redirectAfterModal","setRedirectAfterModal","logoutTimerRef","isAuthenticated","clearLogoutTimer","current","clearTimeout","closeInactivityModal","navigate","to","search","redirect","logout","reason","currentPath","window","location","pathname","startsWith","invalidate","login","expires_at","expiration","Date","timeUntilExpiry","getTime","now","setTimeout","Provider","value","useAuth","context","useContext","Error"],"sources":["../../src/client/store/AuthProvider.tsx"],"sourcesContent":["import React, { useEffect, useRef, useCallback, useState } from \"react\"\nimport { TokenData } from \"../../server/Authentication/types/models\"\n\nexport type User = TokenData[\"user\"] | null\n\nexport interface AuthContext {\n isAuthenticated: boolean\n login: (user: User, expires_at?: string) => Promise<void>\n logout: (reason?: \"inactive\" | \"expired\" | \"manual\") => Promise<void>\n user?: User\n expiresAt?: Date\n logoutReason?: \"inactive\" | \"expired\" | \"manual\"\n showInactivityModal: boolean\n closeInactivityModal: () => void\n redirectAfterModal?: string\n}\n\ninterface RouterNavigation {\n navigate: (options: { to: string; search?: Record<string, unknown> }) => void\n invalidate: () => void\n}\n\nconst AuthContext = React.createContext<AuthContext | null>(null)\n\nexport function AuthProvider({ children, router }: { children: React.ReactNode; router: RouterNavigation }) {\n const [user, setUser] = React.useState<User | null>(null)\n const [expiresAt, setExpiresAt] = React.useState<Date | undefined>(undefined)\n const [logoutReason, setLogoutReason] = React.useState<\"inactive\" | \"expired\" | \"manual\" | undefined>(undefined)\n const [showInactivityModal, setShowInactivityModal] = useState(false)\n const [redirectAfterModal, setRedirectAfterModal] = useState<string | undefined>(undefined)\n\n const logoutTimerRef = useRef<NodeJS.Timeout | null>(null)\n\n const isAuthenticated = !!user\n\n const clearLogoutTimer = useCallback(() => {\n if (logoutTimerRef.current) {\n clearTimeout(logoutTimerRef.current)\n logoutTimerRef.current = null\n }\n }, [])\n\n const closeInactivityModal = useCallback(() => {\n setShowInactivityModal(false)\n\n router.navigate({\n to: \"/\",\n search: redirectAfterModal ? { redirect: redirectAfterModal } : undefined,\n })\n }, [router, redirectAfterModal])\n\n const logout = useCallback(\n async (reason: \"inactive\" | \"expired\" | \"manual\" = \"manual\") => {\n clearLogoutTimer()\n\n setUser(null)\n setExpiresAt(undefined)\n setLogoutReason(reason)\n\n // For expired: Show modal instead of direct navigation\n if (reason === \"expired\") {\n const currentPath = window.location.pathname + window.location.search\n if (currentPath && currentPath.startsWith(\"/\")) {\n setRedirectAfterModal(currentPath)\n }\n\n setShowInactivityModal(true)\n } else {\n // Manual logout: direct navigation\n router.invalidate()\n }\n },\n [router, clearLogoutTimer]\n )\n\n const login = useCallback(async (user: User, expires_at?: string) => {\n setUser(user)\n setLogoutReason(undefined)\n setShowInactivityModal(false)\n setRedirectAfterModal(undefined)\n\n if (expires_at) {\n const expiration = new Date(expires_at)\n setExpiresAt(expiration)\n } else {\n setExpiresAt(undefined)\n }\n }, [])\n\n useEffect(() => {\n clearLogoutTimer()\n\n if (user && expiresAt) {\n const timeUntilExpiry = expiresAt.getTime() - Date.now()\n\n if (timeUntilExpiry <= 0) {\n logout(\"expired\")\n return\n }\n\n logoutTimerRef.current = setTimeout(() => {\n logout(\"expired\")\n }, timeUntilExpiry)\n }\n\n return () => {\n clearLogoutTimer()\n }\n }, [user, expiresAt, logout, clearLogoutTimer])\n\n return (\n <AuthContext.Provider\n value={{\n isAuthenticated,\n user,\n login,\n logout,\n expiresAt,\n logoutReason,\n showInactivityModal,\n closeInactivityModal,\n redirectAfterModal,\n }}\n >\n {children}\n </AuthContext.Provider>\n )\n}\n\nexport function useAuth() {\n const context = React.useContext(AuthContext)\n if (!context) {\n throw new Error(\"useAuth must be used within an AuthProvider\")\n }\n return context\n}\n"],"mappings":";;;AAsBA,IAAMK,IAAcL,gBAAMM,cAAkC,IAAA;AAE5D,SAAgBC,EAAa,EAAEC,aAAUC,aAAiE;CACxG,IAAM,CAACC,GAAMC,KAAWX,EAAMI,SAAsB,IAAA,GAC9C,CAACQ,GAAWC,KAAgBb,EAAMI,SAA2BU,KAAAA,CAAAA,GAC7D,CAACC,GAAcC,KAAmBhB,EAAMI,SAAwDU,KAAAA,CAAAA,GAChG,CAACG,GAAqBC,KAA0Bd,EAAS,EAAA,GACzD,CAACe,GAAoBC,KAAyBhB,EAA6BU,KAAAA,CAAAA,GAE3EO,IAAiBnB,EAA8B,IAAA,GAE/CoB,IAAkB,CAAC,CAACZ,GAEpBa,IAAmBpB,QAAY;EACnC,AAEEkB,EAAeG,aADfC,aAAaJ,EAAeG,OAAO,GACV;CAE7B,GAAG,CAAA,CAAE,GAECE,IAAuBvB,QAAY;EAGvCM,AAFAS,EAAuB,EAAA,GAEvBT,EAAOkB,SAAS;GACdC,IAAI;GACJC,QAAQV,IAAqB,EAAEW,UAAUX,EAAmB,IAAIL,KAAAA;EAClE,CAAA;CACF,GAAG,CAACL,GAAQU,CAAAA,CAAmB,GAEzBY,IAAS5B,EACb,OAAO6B,IAA4C,aAAQ;EAQzD,IAPAT,EAAAA,GAEAZ,EAAQ,IAAA,GACRE,EAAaC,KAAAA,CAAAA,GACbE,EAAgBgB,CAAAA,GAGZA,MAAW,WAAW;GACxB,IAAMC,IAAcC,OAAOC,SAASC,WAAWF,OAAOC,SAASN;GAK/DX,AAJIe,KAAeA,EAAYI,WAAW,GAAA,KACxCjB,EAAsBa,CAAAA,GAGxBf,EAAuB,EAAA;EACzB,OAEET,EAAO6B,WAAU;CAErB,GACA,CAAC7B,GAAQc,CAAAA,CAAiB,GAGtBgB,IAAQpC,EAAY,OAAOO,GAAY8B,MAAAA;EAM3C,AALA7B,EAAQD,CAAAA,GACRM,EAAgBF,KAAAA,CAAAA,GAChBI,EAAuB,EAAA,GACvBE,EAAsBN,KAAAA,CAAAA,GAIpBD,EAFE2B,IAEWC,IADUC,KAAKF,CACfC,IAEA3B,KAAAA,CAAAA;CAEjB,GAAG,CAAA,CAAE;CAuBL,OArBAb,QAAU;EAGR,IAFAsB,EAAAA,GAEIb,KAAQE,GAAW;GACrB,IAAM+B,IAAkB/B,EAAUgC,QAAO,IAAKF,KAAKG,IAAG;GAEtD,IAAIF,KAAmB,GAAG;IACxBZ,EAAO,SAAA;IACP;GACF;GAEAV,EAAeG,UAAUsB,iBAAW;IAClCf,EAAO,SAAA;GACT,GAAGY,CAAAA;EACL;EAEA,aAAO;GACLpB,EAAAA;EACF;CACF,GAAG;EAACb;EAAME;EAAWmB;EAAQR;EAAiB,GAG5C,gBAAClB,EAAY0C,UAAQ;EACnBC,OAAO;GACL1B;GACAZ;GACA6B;GACAR;GACAnB;GACAG;GACAE;GACAS;GACAP;EACF;EAECX;;AAGP;AAEA,SAAgByC,IAAAA;CACd,IAAMC,IAAUlD,EAAMmD,WAAW9C,CAAAA;CACjC,IAAI,CAAC6C,GACH,MAAUE,MAAM,6CAAA;CAElB,OAAOF;AACT"}