wcz-layout 6.7.2 → 9.4.1
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/Approval-Co6D1BNq.mjs +194 -0
- package/dist/Approval-Co6D1BNq.mjs.map +1 -0
- package/dist/DialogsContext-DLqA8RJ_.mjs +7 -0
- package/dist/DialogsContext-DLqA8RJ_.mjs.map +1 -0
- package/dist/Email-BzQQkbe9.mjs +20 -0
- package/dist/Email-BzQQkbe9.mjs.map +1 -0
- package/dist/FileMeta-DDqUju1Y.mjs +19 -0
- package/dist/FileMeta-DDqUju1Y.mjs.map +1 -0
- package/dist/FileMeta-ILLTOjaM.d.mts +20 -0
- package/dist/NotificationContext-CgwUOeW0.mjs +7 -0
- package/dist/NotificationContext-CgwUOeW0.mjs.map +1 -0
- package/dist/QueryClientParam-CzaM3akD.d.mts +11 -0
- package/dist/RouterListItemButton-owZVvuC_.mjs +78 -0
- package/dist/RouterListItemButton-owZVvuC_.mjs.map +1 -0
- package/dist/User-1gKoYJvW.d.mts +12 -0
- package/dist/auth.d.mts +25 -0
- package/dist/auth.mjs +88 -0
- package/dist/auth.mjs.map +1 -0
- package/dist/authMiddleware--HdlhhZO.mjs +78 -0
- package/dist/authMiddleware--HdlhhZO.mjs.map +1 -0
- package/dist/components.d.mts +107 -0
- package/dist/components.mjs +1500 -0
- package/dist/components.mjs.map +1 -0
- package/dist/data/client.d.mts +3217 -0
- package/dist/data/client.mjs +187 -0
- package/dist/data/client.mjs.map +1 -0
- package/dist/data/server.d.mts +19 -0
- package/dist/data/server.mjs +16 -0
- package/dist/data/server.mjs.map +1 -0
- package/dist/entra-s4ZjHq5o.mjs +101 -0
- package/dist/entra-s4ZjHq5o.mjs.map +1 -0
- package/dist/env-CoveIivr.mjs +30 -0
- package/dist/env-CoveIivr.mjs.map +1 -0
- package/dist/file-C5-a_6W6.mjs +148 -0
- package/dist/file-C5-a_6W6.mjs.map +1 -0
- package/dist/file-DM1x40eJ.mjs +179 -0
- package/dist/file-DM1x40eJ.mjs.map +1 -0
- package/dist/hooks.d.mts +226 -0
- package/dist/hooks.mjs +1087 -0
- package/dist/hooks.mjs.map +1 -0
- package/dist/index.d.mts +48 -0
- package/dist/index.mjs +1940 -0
- package/dist/index.mjs.map +1 -0
- package/dist/middleware.d.mts +46 -0
- package/dist/middleware.mjs +27 -0
- package/dist/middleware.mjs.map +1 -0
- package/dist/models.d.mts +598 -0
- package/dist/models.mjs +74 -0
- package/dist/models.mjs.map +1 -0
- package/dist/msalServer-CkNOOjjH.mjs +44 -0
- package/dist/msalServer-CkNOOjjH.mjs.map +1 -0
- package/dist/peoplesoft-DIe8H1Nu.mjs +240 -0
- package/dist/peoplesoft-DIe8H1Nu.mjs.map +1 -0
- package/dist/peoplesoft-gKd-Jh5L.d.mts +1219 -0
- package/dist/useDialogs-BUzVrTSP.mjs +248 -0
- package/dist/useDialogs-BUzVrTSP.mjs.map +1 -0
- package/dist/user-Cen43mlr.d.mts +19 -0
- package/dist/utils-2XiozDlV.mjs +156 -0
- package/dist/utils-2XiozDlV.mjs.map +1 -0
- package/dist/utils-BuWEQOuy.d.mts +65 -0
- package/dist/utils.d.mts +5 -0
- package/dist/utils.mjs +5 -0
- package/dist/vite.d.mts +7 -0
- package/dist/vite.mjs +182 -0
- package/dist/vite.mjs.map +1 -0
- package/package.json +129 -62
- package/skills/client-db/SKILL.md +107 -0
- package/skills/data-grid/SKILL.md +142 -0
- package/skills/db-schema/SKILL.md +71 -0
- package/skills/dialogs/SKILL.md +79 -0
- package/skills/forms/SKILL.md +82 -0
- package/skills/general/SKILL.md +17 -0
- package/skills/notifications/SKILL.md +43 -0
- package/skills/routing/SKILL.md +128 -0
- package/skills/server-functions/SKILL.md +113 -0
- package/skills/services/SKILL.md +29 -0
- package/skills/services/docs/approval.md +256 -0
- package/skills/services/docs/email.md +32 -0
- package/skills/services/docs/file.md +83 -0
- package/skills/services/docs/peoplesoft.md +110 -0
- package/skills/start/SKILL.md +46 -0
- package/skills/start/steps/01-git-setup.md +11 -0
- package/skills/start/steps/02-project-name-setup.md +14 -0
- package/skills/start/steps/03-apm-setup.md +208 -0
- package/skills/start/steps/04-database-setup.md +37 -0
- package/skills/start/steps/05-entra-setup.md +59 -0
- package/skills/start/steps/06-vault-setup.md +50 -0
- package/skills/start/steps/07-generate-favicon.md +10 -0
- package/skills/start/steps/08-commit.md +15 -0
- package/dist/src/components/Layout.d.ts +0 -16
- package/dist/src/components/Layout.js +0 -122
- package/dist/src/components/Layout.js.map +0 -1
- package/dist/src/components/dataGrid/ChipInputCell.d.ts +0 -9
- package/dist/src/components/dataGrid/ChipInputCell.js +0 -17
- package/dist/src/components/dataGrid/ChipInputCell.js.map +0 -1
- package/dist/src/components/dataGrid/EditableColumnHeader.d.ts +0 -2
- package/dist/src/components/dataGrid/EditableColumnHeader.js +0 -7
- package/dist/src/components/dataGrid/EditableColumnHeader.js.map +0 -1
- package/dist/src/components/dataGrid/GridToolbar.d.ts +0 -8
- package/dist/src/components/dataGrid/GridToolbar.js +0 -40
- package/dist/src/components/dataGrid/GridToolbar.js.map +0 -1
- package/dist/src/components/dataGrid/TableContainer.d.ts +0 -3
- package/dist/src/components/dataGrid/TableContainer.js +0 -32
- package/dist/src/components/dataGrid/TableContainer.js.map +0 -1
- package/dist/src/components/form/FormAutocomplete.d.ts +0 -7
- package/dist/src/components/form/FormAutocomplete.js +0 -10
- package/dist/src/components/form/FormAutocomplete.js.map +0 -1
- package/dist/src/components/form/FormCheckbox.d.ts +0 -7
- package/dist/src/components/form/FormCheckbox.js +0 -11
- package/dist/src/components/form/FormCheckbox.js.map +0 -1
- package/dist/src/components/form/FormDatePicker.d.ts +0 -9
- package/dist/src/components/form/FormDatePicker.js +0 -19
- package/dist/src/components/form/FormDatePicker.js.map +0 -1
- package/dist/src/components/form/FormDateTimePicker.d.ts +0 -9
- package/dist/src/components/form/FormDateTimePicker.js +0 -19
- package/dist/src/components/form/FormDateTimePicker.js.map +0 -1
- package/dist/src/components/form/FormNumberField.d.ts +0 -12
- package/dist/src/components/form/FormNumberField.js +0 -12
- package/dist/src/components/form/FormNumberField.js.map +0 -1
- package/dist/src/components/form/FormRadioGroup.d.ts +0 -13
- package/dist/src/components/form/FormRadioGroup.js +0 -11
- package/dist/src/components/form/FormRadioGroup.js.map +0 -1
- package/dist/src/components/form/FormSlider.d.ts +0 -7
- package/dist/src/components/form/FormSlider.js +0 -11
- package/dist/src/components/form/FormSlider.js.map +0 -1
- package/dist/src/components/form/FormSubmitButton.d.ts +0 -5
- package/dist/src/components/form/FormSubmitButton.js +0 -13
- package/dist/src/components/form/FormSubmitButton.js.map +0 -1
- package/dist/src/components/form/FormSwitch.d.ts +0 -7
- package/dist/src/components/form/FormSwitch.js +0 -11
- package/dist/src/components/form/FormSwitch.js.map +0 -1
- package/dist/src/components/form/FormTextField.d.ts +0 -7
- package/dist/src/components/form/FormTextField.js +0 -11
- package/dist/src/components/form/FormTextField.js.map +0 -1
- package/dist/src/components/layout/AccountMenu.d.ts +0 -9
- package/dist/src/components/layout/AccountMenu.js +0 -44
- package/dist/src/components/layout/AccountMenu.js.map +0 -1
- package/dist/src/components/layout/DevelopmentBanner.d.ts +0 -7
- package/dist/src/components/layout/DevelopmentBanner.js +0 -29
- package/dist/src/components/layout/DevelopmentBanner.js.map +0 -1
- package/dist/src/components/layout/ErrorPage.d.ts +0 -2
- package/dist/src/components/layout/ErrorPage.js +0 -25
- package/dist/src/components/layout/ErrorPage.js.map +0 -1
- package/dist/src/components/layout/LayoutDialog.d.ts +0 -12
- package/dist/src/components/layout/LayoutDialog.js +0 -12
- package/dist/src/components/layout/LayoutDialog.js.map +0 -1
- package/dist/src/components/layout/LayoutSnackbar.d.ts +0 -8
- package/dist/src/components/layout/LayoutSnackbar.js +0 -25
- package/dist/src/components/layout/LayoutSnackbar.js.map +0 -1
- package/dist/src/components/layout/NavigationDrawer.d.ts +0 -11
- package/dist/src/components/layout/NavigationDrawer.js +0 -70
- package/dist/src/components/layout/NavigationDrawer.js.map +0 -1
- package/dist/src/components/layout/NotificationMenu.d.ts +0 -8
- package/dist/src/components/layout/NotificationMenu.js +0 -26
- package/dist/src/components/layout/NotificationMenu.js.map +0 -1
- package/dist/src/components/layout/TypographyWithIcon.d.ts +0 -7
- package/dist/src/components/layout/TypographyWithIcon.js +0 -22
- package/dist/src/components/layout/TypographyWithIcon.js.map +0 -1
- package/dist/src/components/layout/Unauthorized.d.ts +0 -2
- package/dist/src/components/layout/Unauthorized.js +0 -26
- package/dist/src/components/layout/Unauthorized.js.map +0 -1
- package/dist/src/contexts/LayoutContext.d.ts +0 -40
- package/dist/src/contexts/LayoutContext.js +0 -60
- package/dist/src/contexts/LayoutContext.js.map +0 -1
- package/dist/src/contexts/UserContext.d.ts +0 -24
- package/dist/src/contexts/UserContext.js +0 -55
- package/dist/src/contexts/UserContext.js.map +0 -1
- package/dist/src/hooks/FormHooks.d.ts +0 -46
- package/dist/src/hooks/FormHooks.js +0 -31
- package/dist/src/hooks/FormHooks.js.map +0 -1
- package/dist/src/hooks/UseSnackbar.d.ts +0 -10
- package/dist/src/hooks/UseSnackbar.js +0 -23
- package/dist/src/hooks/UseSnackbar.js.map +0 -1
- package/dist/src/hooks/UseUser.d.ts +0 -10
- package/dist/src/hooks/UseUser.js +0 -25
- package/dist/src/hooks/UseUser.js.map +0 -1
- package/dist/src/index.d.ts +0 -20
- package/dist/src/index.js +0 -15
- package/dist/src/index.js.map +0 -1
- package/dist/src/models/Error.d.ts +0 -6
- package/dist/src/models/Error.js +0 -2
- package/dist/src/models/Error.js.map +0 -1
- package/dist/src/models/KeycloakSettings.d.ts +0 -8
- package/dist/src/models/KeycloakSettings.js +0 -2
- package/dist/src/models/KeycloakSettings.js.map +0 -1
- package/dist/src/models/LayoutPaletteColorOptions.d.ts +0 -6
- package/dist/src/models/LayoutPaletteColorOptions.js +0 -2
- package/dist/src/models/LayoutPaletteColorOptions.js.map +0 -1
- package/dist/src/models/LayoutRoute.d.ts +0 -14
- package/dist/src/models/LayoutRoute.js +0 -2
- package/dist/src/models/LayoutRoute.js.map +0 -1
- package/dist/src/models/Notification.d.ts +0 -9
- package/dist/src/models/Notification.js +0 -2
- package/dist/src/models/Notification.js.map +0 -1
- package/dist/src/models/PeoplesoftDepartment.d.ts +0 -14
- package/dist/src/models/PeoplesoftDepartment.js +0 -2
- package/dist/src/models/PeoplesoftDepartment.js.map +0 -1
- package/dist/src/models/PeoplesoftEmployee.d.ts +0 -34
- package/dist/src/models/PeoplesoftEmployee.js +0 -2
- package/dist/src/models/PeoplesoftEmployee.js.map +0 -1
- package/dist/src/models/Snackbar.d.ts +0 -15
- package/dist/src/models/Snackbar.js +0 -2
- package/dist/src/models/Snackbar.js.map +0 -1
- package/dist/src/models/User.d.ts +0 -27
- package/dist/src/models/User.js +0 -11
- package/dist/src/models/User.js.map +0 -1
- package/dist/src/models/types/EmployeeCategoryGroup.d.ts +0 -1
- package/dist/src/models/types/EmployeeCategoryGroup.js +0 -2
- package/dist/src/models/types/EmployeeCategoryGroup.js.map +0 -1
- package/dist/src/models/types/EmployeeStatus.d.ts +0 -1
- package/dist/src/models/types/EmployeeStatus.js +0 -2
- package/dist/src/models/types/EmployeeStatus.js.map +0 -1
- package/dist/src/utils/Auth.d.ts +0 -12
- package/dist/src/utils/Auth.js +0 -49
- package/dist/src/utils/Auth.js.map +0 -1
- package/dist/src/utils/Fetches.d.ts +0 -5
- package/dist/src/utils/Fetches.js +0 -66
- package/dist/src/utils/Fetches.js.map +0 -1
- package/dist/src/utils/FormUtils.d.ts +0 -7
- package/dist/src/utils/FormUtils.js +0 -9
- package/dist/src/utils/FormUtils.js.map +0 -1
- package/dist/src/utils/Helpers.d.ts +0 -11
- package/dist/src/utils/Helpers.js +0 -26
- package/dist/src/utils/Helpers.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/src/components/Layout.tsx +0 -183
- package/src/components/dataGrid/ChipInputCell.tsx +0 -31
- package/src/components/dataGrid/EditableColumnHeader.tsx +0 -7
- package/src/components/dataGrid/GridToolbar.tsx +0 -63
- package/src/components/dataGrid/TableContainer.tsx +0 -39
- package/src/components/form/FormAutocomplete.tsx +0 -34
- package/src/components/form/FormCheckbox.tsx +0 -32
- package/src/components/form/FormDatePicker.tsx +0 -34
- package/src/components/form/FormDateTimePicker.tsx +0 -34
- package/src/components/form/FormNumberField.tsx +0 -33
- package/src/components/form/FormRadioGroup.tsx +0 -43
- package/src/components/form/FormSlider.tsx +0 -28
- package/src/components/form/FormSubmitButton.tsx +0 -29
- package/src/components/form/FormSwitch.tsx +0 -32
- package/src/components/form/FormTextField.tsx +0 -26
- package/src/components/layout/AccountMenu.tsx +0 -160
- package/src/components/layout/DevelopmentBanner.tsx +0 -54
- package/src/components/layout/ErrorPage.tsx +0 -34
- package/src/components/layout/LayoutDialog.tsx +0 -50
- package/src/components/layout/LayoutSnackbar.tsx +0 -44
- package/src/components/layout/NavigationDrawer.tsx +0 -131
- package/src/components/layout/NotificationMenu.tsx +0 -76
- package/src/components/layout/TypographyWithIcon.tsx +0 -35
- package/src/components/layout/Unauthorized.tsx +0 -37
- package/src/contexts/LayoutContext.tsx +0 -127
- package/src/contexts/UserContext.tsx +0 -88
- package/src/hooks/FormHooks.ts +0 -33
- package/src/hooks/UseSnackbar.tsx +0 -28
- package/src/hooks/UseUser.tsx +0 -29
- package/src/index.ts +0 -27
- package/src/models/Error.tsx +0 -6
- package/src/models/KeycloakSettings.ts +0 -8
- package/src/models/LayoutPaletteColorOptions.tsx +0 -7
- package/src/models/LayoutRoute.ts +0 -15
- package/src/models/Notification.ts +0 -10
- package/src/models/PeoplesoftDepartment.ts +0 -15
- package/src/models/PeoplesoftEmployee.ts +0 -35
- package/src/models/Snackbar.ts +0 -16
- package/src/models/User.ts +0 -13
- package/src/models/types/EmployeeCategoryGroup.ts +0 -1
- package/src/models/types/EmployeeStatus.ts +0 -1
- package/src/utils/Auth.ts +0 -58
- package/src/utils/Fetches.ts +0 -83
- package/src/utils/FormUtils.ts +0 -22
- package/src/utils/Helpers.ts +0 -27
- package/tsconfig.json +0 -29
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { t as serverEnv } from "./env-CoveIivr.mjs";
|
|
2
|
+
import { i as buildUser, l as getAccessToken, o as hasPermission, u as getSessionUser } from "./utils-2XiozDlV.mjs";
|
|
3
|
+
import { n as getTokenOnBehalfOf, t as getAppToken } from "./msalServer-CkNOOjjH.mjs";
|
|
4
|
+
import { createMiddleware } from "@tanstack/react-start";
|
|
5
|
+
import axios, { AxiosError } from "axios";
|
|
6
|
+
import https from "node:https";
|
|
7
|
+
import * as jose from "jose";
|
|
8
|
+
//#region src/middleware/apiMiddleware.ts
|
|
9
|
+
const httpsAgent = new https.Agent({ rejectUnauthorized: false });
|
|
10
|
+
const apiMiddleware = ({ baseURL, scopeKey }) => createMiddleware().server(async ({ next, request }) => {
|
|
11
|
+
const resolvedBaseURL = process.env[baseURL];
|
|
12
|
+
if (!resolvedBaseURL) throw new Error(`"${baseURL}" env variable is not set.`);
|
|
13
|
+
const authHeader = request.headers.get("Authorization");
|
|
14
|
+
let accessToken;
|
|
15
|
+
if (authHeader?.startsWith("Bearer ")) accessToken = await getTokenOnBehalfOf(authHeader.substring(7), scopeKey);
|
|
16
|
+
else try {
|
|
17
|
+
accessToken = await getAccessToken(scopeKey);
|
|
18
|
+
} catch {
|
|
19
|
+
accessToken = await getAppToken(scopeKey);
|
|
20
|
+
}
|
|
21
|
+
const api = axios.create({
|
|
22
|
+
baseURL: resolvedBaseURL,
|
|
23
|
+
httpsAgent,
|
|
24
|
+
headers: { Authorization: `Bearer ${accessToken}` }
|
|
25
|
+
});
|
|
26
|
+
try {
|
|
27
|
+
return await next({ context: { api } });
|
|
28
|
+
} catch (error) {
|
|
29
|
+
if (error instanceof AxiosError) throw new Error(error.response?.data?.message ?? error.message);
|
|
30
|
+
throw error;
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
//#endregion
|
|
34
|
+
//#region src/middleware/authMiddleware.ts
|
|
35
|
+
async function resolveUser(request) {
|
|
36
|
+
const authHeader = request.headers.get("Authorization");
|
|
37
|
+
if (authHeader?.startsWith("Bearer ")) {
|
|
38
|
+
let payload;
|
|
39
|
+
try {
|
|
40
|
+
payload = await verifyToken(authHeader.substring(7));
|
|
41
|
+
} catch (error) {
|
|
42
|
+
throw Response.json({ message: error instanceof Error ? error.message : "Unauthorized: Invalid access token" }, { status: 401 });
|
|
43
|
+
}
|
|
44
|
+
return buildUser(payload);
|
|
45
|
+
}
|
|
46
|
+
return getSessionUser();
|
|
47
|
+
}
|
|
48
|
+
const requiredAuthenticationMiddleware = createMiddleware().server(async ({ next, request }) => {
|
|
49
|
+
const user = await resolveUser(request);
|
|
50
|
+
if (!user) throw Response.json({ message: "Unauthorized: User not signed in" }, { status: 401 });
|
|
51
|
+
return next({ context: { user } });
|
|
52
|
+
});
|
|
53
|
+
const publicAuthenticationMiddleware = createMiddleware().server(async ({ next, request }) => {
|
|
54
|
+
return next({ context: { user: await resolveUser(request) } });
|
|
55
|
+
});
|
|
56
|
+
function authenticationMiddleware(options) {
|
|
57
|
+
return options?.optional ? publicAuthenticationMiddleware : requiredAuthenticationMiddleware;
|
|
58
|
+
}
|
|
59
|
+
const authorizationMiddleware = (permissionKey) => createMiddleware().middleware([authenticationMiddleware()]).server(async ({ next, context }) => {
|
|
60
|
+
if (hasPermission(context.user, permissionKey)) return next();
|
|
61
|
+
throw Response.json({ message: `Forbidden: User ${context.user.name} is not authorized to access this resource` }, { status: 403 });
|
|
62
|
+
});
|
|
63
|
+
async function verifyToken(token) {
|
|
64
|
+
const { payload } = await jose.jwtVerify(token, getJWKS(), {
|
|
65
|
+
issuer: `https://login.microsoftonline.com/${serverEnv.ENTRA_TENANT_ID}/v2.0`,
|
|
66
|
+
audience: serverEnv.ENTRA_CLIENT_ID
|
|
67
|
+
});
|
|
68
|
+
return payload;
|
|
69
|
+
}
|
|
70
|
+
let jwksCache = null;
|
|
71
|
+
function getJWKS() {
|
|
72
|
+
jwksCache ??= jose.createRemoteJWKSet(new URL(`https://login.microsoftonline.com/${serverEnv.ENTRA_TENANT_ID}/discovery/v2.0/keys`));
|
|
73
|
+
return jwksCache;
|
|
74
|
+
}
|
|
75
|
+
//#endregion
|
|
76
|
+
export { authorizationMiddleware as n, apiMiddleware as r, authenticationMiddleware as t };
|
|
77
|
+
|
|
78
|
+
//# sourceMappingURL=authMiddleware--HdlhhZO.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authMiddleware--HdlhhZO.mjs","names":["createMiddleware","axios","AxiosError","https","serverEnv","scopes","definedScopes","getAppToken","getTokenOnBehalfOf","getAccessToken","ApiMiddlewareOptions","baseURL","scopeKey","httpsAgent","Agent","rejectUnauthorized","apiMiddleware","server","next","request","resolvedBaseURL","process","env","Error","authHeader","headers","get","accessToken","startsWith","substring","length","api","create","Authorization","context","error","response","data","message","createMiddleware","jose","permissions","serverEnv","getSessionUser","buildUser","hasPermission","TokenPayload","User","resolveUser","request","Request","Promise","authHeader","headers","get","startsWith","payload","verifyToken","substring","length","error","Response","json","message","Error","status","requiredAuthenticationMiddleware","server","user","next","context","publicAuthenticationMiddleware","authenticationMiddleware","options","optional","authorizationMiddleware","permissionKey","middleware","name","token","jwtVerify","getJWKS","issuer","ENTRA_TENANT_ID","audience","ENTRA_CLIENT_ID","jwksCache","ReturnType","createRemoteJWKSet","URL"],"sources":["../src/middleware/apiMiddleware.ts","../src/middleware/authMiddleware.ts"],"sourcesContent":["import { createMiddleware } from \"@tanstack/react-start\";\nimport axios, { AxiosError } from \"axios\";\nimport https from \"node:https\";\nimport type { serverEnv } from \"virtual:wcz-layout\";\nimport { scopes as definedScopes } from \"virtual:wcz-layout\";\nimport { getAppToken, getTokenOnBehalfOf } from \"~/lib/auth/msalServer\";\nimport { getAccessToken } from \"~/lib/auth/user\";\n\ninterface ApiMiddlewareOptions {\n baseURL: keyof typeof serverEnv & `${string}BASE_URL${string}`;\n scopeKey: keyof typeof definedScopes;\n}\n\nconst httpsAgent = new https.Agent({\n rejectUnauthorized: false,\n});\n\nexport const apiMiddleware = ({ baseURL, scopeKey }: ApiMiddlewareOptions) =>\n createMiddleware().server(async ({ next, request }) => {\n const resolvedBaseURL = process.env[baseURL];\n if (!resolvedBaseURL) throw new Error(`\"${baseURL}\" env variable is not set.`);\n\n const authHeader = request.headers.get(\"Authorization\");\n let accessToken: string;\n if (authHeader?.startsWith(\"Bearer \")) {\n accessToken = await getTokenOnBehalfOf(authHeader.substring(\"Bearer \".length), scopeKey);\n } else {\n try {\n accessToken = await getAccessToken(scopeKey);\n } catch {\n accessToken = await getAppToken(scopeKey);\n }\n }\n\n const api = axios.create({\n baseURL: resolvedBaseURL,\n httpsAgent,\n headers: { Authorization: `Bearer ${accessToken}` },\n });\n\n try {\n return await next({ context: { api } });\n } catch (error) {\n if (error instanceof AxiosError)\n throw new Error(error.response?.data?.message ?? error.message);\n throw error;\n }\n });\n","import { createMiddleware } from \"@tanstack/react-start\";\nimport * as jose from \"jose\";\nimport type { permissions } from \"virtual:wcz-layout\";\nimport { serverEnv } from \"~/env\";\nimport { getSessionUser } from \"~/lib/auth/user\";\nimport { buildUser, hasPermission } from \"~/lib/utils\";\nimport type { TokenPayload } from \"~/models/TokenPayload\";\nimport type { User } from \"~/models/User\";\n\nasync function resolveUser(request: Request): Promise<User | null> {\n const authHeader = request.headers.get(\"Authorization\");\n\n if (authHeader?.startsWith(\"Bearer \")) {\n let payload: TokenPayload;\n try {\n payload = await verifyToken(authHeader.substring(\"Bearer \".length));\n } catch (error) {\n throw Response.json(\n { message: error instanceof Error ? error.message : \"Unauthorized: Invalid access token\" },\n { status: 401 },\n );\n }\n return buildUser(payload);\n }\n\n return getSessionUser();\n}\n\nconst requiredAuthenticationMiddleware = createMiddleware().server<{ user: User }>(\n async ({ next, request }) => {\n const user = await resolveUser(request);\n\n if (!user)\n throw Response.json({ message: \"Unauthorized: User not signed in\" }, { status: 401 });\n\n return next({ context: { user } });\n },\n);\n\nconst publicAuthenticationMiddleware = createMiddleware().server<{ user: User | null }>(\n async ({ next, request }) => {\n const user = await resolveUser(request);\n return next({ context: { user } });\n },\n);\n\nexport function authenticationMiddleware(options?: {\n optional?: false;\n}): typeof requiredAuthenticationMiddleware;\n\nexport function authenticationMiddleware(options: {\n optional: true;\n}): typeof publicAuthenticationMiddleware;\n\nexport function authenticationMiddleware(options: {\n optional: boolean;\n}): typeof requiredAuthenticationMiddleware | typeof publicAuthenticationMiddleware;\n\nexport function authenticationMiddleware(options?: { optional?: boolean }) {\n return options?.optional ? publicAuthenticationMiddleware : requiredAuthenticationMiddleware;\n}\n\nexport const authorizationMiddleware = (permissionKey: keyof typeof permissions) =>\n createMiddleware()\n .middleware([authenticationMiddleware()])\n .server(async ({ next, context }) => {\n if (hasPermission(context.user, permissionKey)) return next();\n throw Response.json(\n {\n message: `Forbidden: User ${context.user.name} is not authorized to access this resource`,\n },\n { status: 403 },\n );\n });\n\nasync function verifyToken(token: string): Promise<TokenPayload> {\n const { payload } = await jose.jwtVerify(token, getJWKS(), {\n issuer: `https://login.microsoftonline.com/${serverEnv.ENTRA_TENANT_ID}/v2.0`,\n audience: serverEnv.ENTRA_CLIENT_ID,\n });\n return payload as unknown as TokenPayload;\n}\n\nlet jwksCache: ReturnType<typeof jose.createRemoteJWKSet> | null = null;\n\nfunction getJWKS() {\n jwksCache ??= jose.createRemoteJWKSet(\n new URL(`https://login.microsoftonline.com/${serverEnv.ENTRA_TENANT_ID}/discovery/v2.0/keys`),\n );\n return jwksCache;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { t as FileMeta } from "./FileMeta-ILLTOjaM.mjs";
|
|
2
|
+
import { BoxProps, ButtonProps, FabProps, IconButtonProps, LinkProps, ListItemButtonProps, SxProps, TabProps, Theme, TypographyProps } from "@mui/material";
|
|
3
|
+
import React$1, { ComponentType, FC, ReactNode } from "react";
|
|
4
|
+
import * as z$2 from "zod";
|
|
5
|
+
import { ErrorComponentProps, LinkComponent } from "@tanstack/react-router";
|
|
6
|
+
import { DropzoneOptions } from "react-dropzone";
|
|
7
|
+
import { GridActionsCellItemProps, GridColumnHeaderParams, GridValidRowModel } from "@mui/x-data-grid-premium";
|
|
8
|
+
|
|
9
|
+
//#region src/components/core/TypographyWithIcon.d.ts
|
|
10
|
+
interface TypographyWithIconProps extends TypographyProps {
|
|
11
|
+
startIcon?: React.ReactNode;
|
|
12
|
+
endIcon?: React.ReactNode;
|
|
13
|
+
gap?: number | string;
|
|
14
|
+
}
|
|
15
|
+
declare const TypographyWithIcon: React.FC<TypographyWithIconProps>;
|
|
16
|
+
//#endregion
|
|
17
|
+
//#region src/components/core/Fullscreen.d.ts
|
|
18
|
+
declare const Fullscreen: FC<BoxProps>;
|
|
19
|
+
//#endregion
|
|
20
|
+
//#region src/components/file/Dropzone.d.ts
|
|
21
|
+
interface DropzoneProps extends DropzoneOptions {
|
|
22
|
+
sx?: SxProps<Theme>;
|
|
23
|
+
progress?: number;
|
|
24
|
+
}
|
|
25
|
+
declare const Dropzone: FC<DropzoneProps>;
|
|
26
|
+
//#endregion
|
|
27
|
+
//#region src/models/file/FileActions.d.ts
|
|
28
|
+
declare const FileActionsSchema: z$2.ZodObject<{
|
|
29
|
+
download: z$2.ZodOptional<z$2.ZodBoolean>;
|
|
30
|
+
delete: z$2.ZodOptional<z$2.ZodBoolean>;
|
|
31
|
+
}, z$2.core.$strip>;
|
|
32
|
+
type FileActions = z$2.infer<typeof FileActionsSchema>;
|
|
33
|
+
//#endregion
|
|
34
|
+
//#region src/components/file/fileViewer/FileViewerGrid.d.ts
|
|
35
|
+
type FileViewerGridItemBar = "hidden" | "always" | "onMouseEnter";
|
|
36
|
+
interface FileViewerGridProps {
|
|
37
|
+
size?: number;
|
|
38
|
+
itemBar?: FileViewerGridItemBar;
|
|
39
|
+
sx?: SxProps<Theme>;
|
|
40
|
+
}
|
|
41
|
+
//#endregion
|
|
42
|
+
//#region src/components/file/fileViewer/FileViewerList.d.ts
|
|
43
|
+
interface FileViewerListProps {
|
|
44
|
+
sx?: SxProps<Theme>;
|
|
45
|
+
}
|
|
46
|
+
//#endregion
|
|
47
|
+
//#region src/components/file/FileViewer.d.ts
|
|
48
|
+
interface FileViewerComponent {
|
|
49
|
+
Grid: ComponentType<FileViewerGridProps>;
|
|
50
|
+
List: ComponentType<FileViewerListProps>;
|
|
51
|
+
}
|
|
52
|
+
interface FileViewerProps {
|
|
53
|
+
appName: string;
|
|
54
|
+
subId: string;
|
|
55
|
+
onDelete?: (params: {
|
|
56
|
+
remainingFileMetas: Array<FileMeta>;
|
|
57
|
+
deletedFileMeta: FileMeta;
|
|
58
|
+
}) => void;
|
|
59
|
+
actions?: FileActions;
|
|
60
|
+
children: (component: FileViewerComponent) => ReactNode;
|
|
61
|
+
}
|
|
62
|
+
declare const FileViewer: FC<FileViewerProps>;
|
|
63
|
+
//#endregion
|
|
64
|
+
//#region src/components/data-grid/EditableColumnHeader.d.ts
|
|
65
|
+
declare const EditableColumnHeader: <T extends GridValidRowModel>({
|
|
66
|
+
colDef
|
|
67
|
+
}: GridColumnHeaderParams<T>) => import("react").JSX.Element;
|
|
68
|
+
//#endregion
|
|
69
|
+
//#region src/components/router/RouterButton.d.ts
|
|
70
|
+
declare const Component$6: React$1.ForwardRefExoticComponent<Omit<ButtonProps<"a">, "ref"> & React$1.RefAttributes<HTMLAnchorElement>>;
|
|
71
|
+
declare const RouterButton: LinkComponent<typeof Component$6>;
|
|
72
|
+
//#endregion
|
|
73
|
+
//#region src/components/router/RouterFab.d.ts
|
|
74
|
+
declare const Component$5: React$1.ForwardRefExoticComponent<Omit<FabProps<"a">, "ref"> & React$1.RefAttributes<HTMLAnchorElement>>;
|
|
75
|
+
declare const RouterFab: LinkComponent<typeof Component$5>;
|
|
76
|
+
//#endregion
|
|
77
|
+
//#region src/components/router/RouterGridActionsCellItem.d.ts
|
|
78
|
+
declare const Component$4: React$1.ForwardRefExoticComponent<GridActionsCellItemProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
79
|
+
declare const RouterGridActionsCellItem: LinkComponent<typeof Component$4>;
|
|
80
|
+
//#endregion
|
|
81
|
+
//#region src/components/router/RouterIconButton.d.ts
|
|
82
|
+
declare const Component$3: React$1.ForwardRefExoticComponent<Omit<IconButtonProps<"a">, "ref"> & React$1.RefAttributes<HTMLAnchorElement>>;
|
|
83
|
+
declare const RouterIconButton: LinkComponent<typeof Component$3>;
|
|
84
|
+
//#endregion
|
|
85
|
+
//#region src/components/router/RouterLink.d.ts
|
|
86
|
+
declare const Component$2: React$1.ForwardRefExoticComponent<Omit<LinkProps, "ref"> & React$1.RefAttributes<HTMLAnchorElement>>;
|
|
87
|
+
declare const RouterLink: LinkComponent<typeof Component$2>;
|
|
88
|
+
//#endregion
|
|
89
|
+
//#region src/components/router/RouterTab.d.ts
|
|
90
|
+
declare const Component$1: React$1.ForwardRefExoticComponent<Omit<TabProps<"a">, "ref"> & React$1.RefAttributes<HTMLAnchorElement>>;
|
|
91
|
+
declare const RouterTab: LinkComponent<typeof Component$1>;
|
|
92
|
+
//#endregion
|
|
93
|
+
//#region src/components/router/RouterListItemButton.d.ts
|
|
94
|
+
declare const Component: React$1.ForwardRefExoticComponent<Omit<ListItemButtonProps<"a">, "ref"> & React$1.RefAttributes<HTMLAnchorElement>>;
|
|
95
|
+
declare const RouterListItemButton: LinkComponent<typeof Component>;
|
|
96
|
+
//#endregion
|
|
97
|
+
//#region src/components/router/RouterNotFound.d.ts
|
|
98
|
+
declare function RouterNotFound(): import("react").JSX.Element;
|
|
99
|
+
//#endregion
|
|
100
|
+
//#region src/components/router/RouterError.d.ts
|
|
101
|
+
interface RouterErrorProps {
|
|
102
|
+
error: ErrorComponentProps["error"];
|
|
103
|
+
}
|
|
104
|
+
declare const RouterError: FC<RouterErrorProps>;
|
|
105
|
+
//#endregion
|
|
106
|
+
export { Dropzone, EditableColumnHeader, FileViewer, Fullscreen, RouterButton, RouterError, RouterFab, RouterGridActionsCellItem, RouterIconButton, RouterLink, RouterListItemButton, RouterNotFound, RouterTab, TypographyWithIcon };
|
|
107
|
+
//# sourceMappingURL=components.d.mts.map
|