wcz-layout 8.0.0 → 8.0.2
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/components.d.ts +1 -0
- package/dist/components.js +45 -71
- package/dist/components.js.map +1 -1
- package/dist/hooks.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +53 -83
- package/dist/index.js.map +1 -1
- package/dist/middleware.js +1 -1
- package/dist/middleware.js.map +1 -1
- package/dist/{msalClient-d7_QeRNu.d.ts → msalClient-MNN6BwL6.d.ts} +2 -2
- package/dist/{queries-e7HNiutf.js → queries-JPqCc5Tb.js} +2 -2
- package/dist/{queries-e7HNiutf.js.map → queries-JPqCc5Tb.js.map} +1 -1
- package/dist/query.js +1 -1
- package/dist/{utils-Dz7akq1k.js → utils-CqQKSaSs.js} +46 -24
- package/dist/utils-CqQKSaSs.js.map +1 -0
- package/dist/utils.d.ts +1 -1
- package/dist/utils.js +1 -1
- package/package.json +6 -6
- package/dist/utils-Dz7akq1k.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as toKebabCase,
|
|
1
|
+
import { c as toKebabCase, p as clientEnv, u as getAccessToken } from "./utils-CqQKSaSs.js";
|
|
2
2
|
import { t as queryClient } from "./queryClient-CAJR3qjE.js";
|
|
3
3
|
import { n as ApprovalStepResult, r as ApprovalStatus, t as FileMetaSchema } from "./FileMeta-D9HyhrGi.js";
|
|
4
4
|
import { c } from "react/compiler-runtime";
|
|
@@ -548,4 +548,4 @@ const query = {
|
|
|
548
548
|
//#endregion
|
|
549
549
|
export { useUploadFile as n, query as t };
|
|
550
550
|
|
|
551
|
-
//# sourceMappingURL=queries-
|
|
551
|
+
//# sourceMappingURL=queries-JPqCc5Tb.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries-e7HNiutf.js","names":["mutationOptions","queryOptions","axios","z","Approval","ApproveApproval","CancelApproval","CreateApproval","ResubmitApproval","WithdrawApproval","clientEnv","getAccessToken","queryClient","toKebabCase","ApprovalStatus","ApprovalStepResult","QUERY_KEY","APP_NAME","VITE_APP_TITLE","api","create","baseURL","interceptors","request","use","config","accessToken","headers","set","GetApprovalsParamsSchema","object","appName","string","min","max","default","optional","status","approverEmployeeId","stepResult","GetApprovalsParams","infer","approvalQueries","approvals","params","queryParams","URLSearchParams","append","toString","queryKey","queryFn","signal","Array","url","method","then","data","approval","id","Error","mutationFn","onSettled","invalidateQueries","exact","approve","resubmit","withdraw","cancel","mutationOptions","queryOptions","axios","saveAs","useState","Upload","TusUpload","uuidv7","z","DetailedError","FileMeta","clientEnv","getAccessToken","queryClient","toKebabCase","FileMetaSchema","QUERY_KEY","HOUR","APP_NAME","VITE_APP_TITLE","FILE_API_URL","api","create","baseURL","interceptors","request","use","config","accessToken","headers","set","GetFileMetasParamsSchema","object","appName","string","min","max","default","optional","subId","uuid","GetFileMetasParams","infer","GetFileThumbnailParamsSchema","meta","nullish","GetFileThumbnailParams","GetFileParamsSchema","GetFileParams","fileQueries","metas","params","queryParams","URLSearchParams","append","queryKey","queryFn","signal","Array","url","toString","method","then","data","staleTime","gcTime","refetchOnWindowFocus","thumbnail","id","Blob","responseType","select","URL","createObjectURL","getOne","download","Error","mutationFn","onSuccess","variables","fileName","fileExtension","open","window","updateMeta","onSettled","invalidateQueries","exact","delete","batchDelete","OptionalId","UseUploadFileProps","Pick","onError","error","useUploadFile","t0","$","_c","$i","Symbol","for","progress","setProgress","t1","file","metadata","name","upload","endpoint","chunkSize","type","Authorization","onProgress","bytesUploaded","bytesTotal","previousUploads","findPreviousUploads","length","resumeFromPreviousUpload","start","mutate","t2","queryOptions","axios","Department","Employee","getAccessToken","QUERY_KEY","DAY","api","create","baseURL","interceptors","request","use","config","accessToken","headers","set","OptionalId","peopleSoftQueries","employeesSearch","searchTerm","queryKey","queryFn","signal","Array","url","method","then","data","staleTime","gcTime","refetchOnWindowFocus","employees","activeEmployees","employeeById","employeeId","previousEmployeeIds","employeeSupervisor","employeeSubordinates","employeeManager","employeeGeneralManager","departments","departmentById","departmentId","departmentManager","departmentEmployees","companyGeneralManager","companyCode","approvalQueries","fileQueries","peopleSoftQueries","query","peopleSoft","approval","file"],"sources":["../src/queries/ApprovalQueries.ts","../src/queries/FileQueries.ts","../src/queries/PeopleSoftQueries.ts","../src/queries/index.ts"],"sourcesContent":["import { mutationOptions, queryOptions } from \"@tanstack/react-query\";\nimport axios from \"axios\";\nimport z from \"zod\";\nimport type {\n Approval,\n ApproveApproval,\n CancelApproval,\n CreateApproval,\n ResubmitApproval,\n WithdrawApproval,\n} from \"~/models/approval/Approval\";\nimport { clientEnv } from \"~/env\";\nimport { getAccessToken } from \"~/lib/auth/msalClient\";\nimport { queryClient } from \"~/lib/queryClient\";\nimport { toKebabCase } from \"~/lib/utils\";\nimport { ApprovalStatus } from \"~/models/approval/ApprovalStatus\";\nimport { ApprovalStepResult } from \"~/models/approval/ApprovalStepResult\";\n\nconst QUERY_KEY = \"approval\";\nconst APP_NAME = toKebabCase(clientEnv.VITE_APP_TITLE);\n\nexport const api = axios.create({\n baseURL: \"https://graph.microsoft.com/v1.0\",\n});\n\napi.interceptors.request.use(async (config) => {\n const accessToken = await getAccessToken(\"graph\");\n config.headers.set(\"Authorization\", `Bearer ${accessToken}`);\n return config;\n});\n\nconst GetApprovalsParamsSchema = z.object({\n appName: z.string().min(1).max(255).default(APP_NAME).optional(),\n status: ApprovalStatus.optional(),\n approverEmployeeId: z.string().min(1).max(20).optional(),\n stepResult: ApprovalStepResult.optional(),\n});\n\nexport type GetApprovalsParams = z.infer<typeof GetApprovalsParamsSchema>;\n\nexport const approvalQueries = {\n approvals: (params?: GetApprovalsParams) => {\n const queryParams = new URLSearchParams();\n queryParams.append(\"applicationName\", params?.appName ?? APP_NAME);\n if (params?.status) queryParams.append(\"status\", params.status.toString());\n if (params?.approverEmployeeId)\n queryParams.append(\"approverEmployeeId\", params.approverEmployeeId);\n if (params?.stepResult) queryParams.append(\"stepResult\", params.stepResult.toString());\n\n return queryOptions({\n queryKey: [QUERY_KEY, params],\n queryFn: ({ signal }) =>\n api\n .request<Array<Approval>>({\n url: `/${QUERY_KEY}/Requests/Requests?${queryParams.toString()}`,\n method: \"GET\",\n signal,\n })\n .then((request) => request.data),\n });\n },\n approval: (id: string) =>\n queryOptions({\n queryKey: [QUERY_KEY, id],\n queryFn: ({ signal }) =>\n api\n .request<Approval>({\n url: `/${QUERY_KEY}/Requests/${id}`,\n method: \"GET\",\n signal,\n })\n .then((request) => request.data),\n }),\n create: () =>\n mutationOptions<Approval, Error, CreateApproval>({\n mutationFn: (data) =>\n api\n .request<Approval>({\n url: `/${QUERY_KEY}/Requests`,\n method: \"POST\",\n data,\n })\n .then((request) => request.data),\n onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY], exact: false }),\n }),\n approve: () =>\n mutationOptions<Approval, Error, ApproveApproval>({\n mutationFn: (data) =>\n api\n .request<Approval>({\n url: `/${QUERY_KEY}/Requests/${data.id}/single-approval`,\n method: \"POST\",\n data,\n })\n .then((request) => request.data),\n onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY], exact: false }),\n }),\n resubmit: () =>\n mutationOptions<Approval, Error, ResubmitApproval>({\n mutationFn: (data) =>\n api\n .request<Approval>({\n url: `/${QUERY_KEY}/Requests/${data.id}/resubmit`,\n method: \"POST\",\n data,\n })\n .then((request) => request.data),\n onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY], exact: false }),\n }),\n withdraw: () =>\n mutationOptions<void, Error, WithdrawApproval>({\n mutationFn: (data) =>\n api\n .request<void>({\n url: `/${QUERY_KEY}/Requests/${data.id}/withdraw`,\n method: \"POST\",\n data,\n })\n .then((request) => request.data),\n onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY], exact: false }),\n }),\n cancel: () =>\n mutationOptions<void, Error, CancelApproval>({\n mutationFn: (data) =>\n api\n .request<void>({\n url: `/${QUERY_KEY}/Requests/${data.id}/cancel`,\n method: \"POST\",\n data,\n })\n .then((request) => request.data),\n onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY], exact: false }),\n }),\n};\n","import { mutationOptions, queryOptions } from \"@tanstack/react-query\";\nimport axios from \"axios\";\nimport saveAs from \"file-saver\";\nimport { useState } from \"react\";\nimport { Upload as TusUpload } from \"tus-js-client\";\nimport { uuidv7 } from \"uuidv7\";\nimport z from \"zod\";\nimport type { DetailedError } from \"tus-js-client\";\nimport type { FileMeta } from \"~/models/file/FileMeta\";\nimport { clientEnv } from \"~/env\";\nimport { getAccessToken } from \"~/lib/auth/msalClient\";\nimport { queryClient } from \"~/lib/queryClient\";\nimport { toKebabCase } from \"~/lib/utils\";\nimport { FileMetaSchema } from \"~/models/file/FileMeta\";\n\nconst QUERY_KEY = \"file\";\nconst HOUR = 1000 * 60 * 60;\nconst APP_NAME = toKebabCase(clientEnv.VITE_APP_TITLE);\nconst FILE_API_URL = \"later\";\n\nexport const api = axios.create({\n baseURL: \"https://graph.microsoft.com/v1.0\",\n});\n\napi.interceptors.request.use(async (config) => {\n const accessToken = await getAccessToken(\"graph\");\n config.headers.set(\"Authorization\", `Bearer ${accessToken}`);\n return config;\n});\n\nexport const GetFileMetasParamsSchema = z.object({\n appName: z.string().min(1).max(255).default(APP_NAME).optional(),\n subId: z.uuid(),\n});\n\nexport type GetFileMetasParams = z.infer<typeof GetFileMetasParamsSchema>;\n\nexport const GetFileThumbnailParamsSchema = z.object({\n appName: z.string().min(1).max(255).default(APP_NAME).optional(),\n meta: FileMetaSchema.nullish(),\n});\n\nexport type GetFileThumbnailParams = z.infer<typeof GetFileThumbnailParamsSchema>;\n\nexport const GetFileParamsSchema = z.object({\n appName: z.string().min(1).max(255).default(APP_NAME).optional(),\n meta: FileMetaSchema.nullish(),\n});\n\nexport type GetFileParams = z.infer<typeof GetFileParamsSchema>;\n\nexport const fileQueries = {\n metas: (params: GetFileMetasParams) => {\n const queryParams = new URLSearchParams();\n queryParams.append(\"appName\", params.appName ?? APP_NAME);\n queryParams.append(\"subId\", params.subId);\n\n return queryOptions({\n queryKey: [QUERY_KEY, \"meta\", params.appName ?? APP_NAME, params.subId],\n queryFn: ({ signal }) =>\n api\n .request<Array<FileMeta>>({\n url: `/${QUERY_KEY}/v1/meta?${queryParams.toString()}`,\n method: \"GET\",\n signal,\n })\n .then((request) => request.data),\n staleTime: HOUR,\n gcTime: HOUR,\n refetchOnWindowFocus: false,\n });\n },\n thumbnail: (params: GetFileThumbnailParams) => {\n const queryParams = new URLSearchParams();\n queryParams.append(\"appName\", params.appName ?? APP_NAME);\n queryParams.append(\"id\", params.meta?.id ?? \"\");\n\n return queryOptions({\n queryKey: [QUERY_KEY, \"thumbnail\", params.appName ?? APP_NAME, params.meta?.id],\n queryFn: ({ signal }) =>\n api\n .request<Blob>({\n url: `/${QUERY_KEY}/v1/thumbnail?${queryParams.toString()}`,\n method: \"GET\",\n signal,\n responseType: \"blob\",\n })\n .then((request) => request.data),\n select: (data) => URL.createObjectURL(data),\n staleTime: HOUR,\n gcTime: HOUR,\n refetchOnWindowFocus: false,\n });\n },\n getOne: (params: GetFileParams) => {\n const queryParams = new URLSearchParams();\n queryParams.append(\"appName\", params.appName ?? APP_NAME);\n queryParams.append(\"id\", params.meta?.id ?? \"\");\n\n return queryOptions({\n queryKey: [QUERY_KEY, params.appName ?? APP_NAME, params.meta?.id],\n queryFn: ({ signal }) =>\n api\n .request<Blob>({\n url: `/${QUERY_KEY}/v1?${queryParams.toString()}`,\n method: \"GET\",\n signal,\n responseType: \"blob\",\n })\n .then((request) => request.data),\n select: (data) => URL.createObjectURL(data),\n staleTime: HOUR,\n gcTime: HOUR,\n refetchOnWindowFocus: false,\n });\n },\n download: () =>\n mutationOptions<Blob, Error, FileMeta>({\n mutationFn: (meta) =>\n api\n .request<Blob>({\n url: `/${QUERY_KEY}/v1/download?appName=${APP_NAME}&id=${meta.id}`,\n method: \"GET\",\n responseType: \"blob\",\n })\n .then((request) => request.data),\n onSuccess: (data, variables) =>\n saveAs(data, `${variables.fileName}.${variables.fileExtension}`),\n }),\n open: () =>\n mutationOptions<Blob, Error, FileMeta>({\n mutationFn: (meta) =>\n api\n .request<Blob>({\n url: `/${QUERY_KEY}/v1?appName=${APP_NAME}&id=${meta.id}`,\n method: \"GET\",\n responseType: \"blob\",\n })\n .then((request) => request.data),\n onSuccess: (data) => {\n window.open(URL.createObjectURL(data));\n },\n }),\n updateMeta: () =>\n mutationOptions<FileMeta, Error, FileMeta>({\n mutationFn: (meta) =>\n api\n .request<FileMeta>({\n url: `/${QUERY_KEY}/v1/meta?appName=${APP_NAME}&id=${meta.id}`,\n method: \"PUT\",\n data: meta,\n })\n .then((request) => request.data),\n onSettled: () =>\n queryClient.invalidateQueries({ queryKey: [QUERY_KEY, \"meta\"], exact: false }),\n }),\n delete: () =>\n mutationOptions<FileMeta, Error, FileMeta>({\n mutationFn: (meta) =>\n api\n .request<FileMeta>({\n url: `/${QUERY_KEY}/v1?appName=${APP_NAME}&id=${meta.id}`,\n method: \"DELETE\",\n })\n .then((request) => request.data),\n onSettled: () =>\n queryClient.invalidateQueries({ queryKey: [QUERY_KEY, \"meta\"], exact: false }),\n }),\n batchDelete: () =>\n mutationOptions<string, Error, string>({\n mutationFn: (subId) =>\n api\n .request<string>({\n url: `/${QUERY_KEY}/v1?appName=${APP_NAME}&subId=${subId}`,\n method: \"DELETE\",\n })\n .then((request) => request.data),\n onSettled: () =>\n queryClient.invalidateQueries({ queryKey: [QUERY_KEY, \"meta\"], exact: false }),\n }),\n};\n\ntype OptionalId = string | undefined | null;\n\ninterface UseUploadFileProps {\n subId: OptionalId;\n onSuccess?: (meta: Pick<FileMeta, \"id\" | \"appName\" | \"subId\" | \"fileName\">) => void;\n onError?: (error: Error | DetailedError) => void;\n}\n\nexport const useUploadFile = ({ subId, onSuccess, onError }: UseUploadFileProps) => {\n const [progress, setProgress] = useState<number>(0);\n\n const mutate = async (file: File) => {\n if (!subId) throw new Error(\"subId is required for file upload\");\n\n const metadata: Pick<FileMeta, \"id\" | \"appName\" | \"subId\" | \"fileName\"> = {\n id: uuidv7(),\n appName: APP_NAME,\n subId: subId,\n fileName: file.name,\n };\n\n const accessToken = await getAccessToken(\"graph\");\n\n const upload = new TusUpload(file, {\n endpoint: `${FILE_API_URL}/${QUERY_KEY}/v1/upload`,\n chunkSize: 1_048_576, // 1 MB\n metadata: {\n id: metadata.id,\n appName: metadata.appName,\n subId: metadata.subId,\n fileName: metadata.fileName,\n fileExtension: file.type,\n },\n headers: { Authorization: `Bearer ${accessToken}` },\n onError: (error) => {\n setProgress(0);\n onError?.(error);\n },\n onProgress: (bytesUploaded, bytesTotal) => {\n setProgress((bytesUploaded / bytesTotal) * 100);\n },\n onSuccess: () => {\n setProgress(0);\n queryClient.invalidateQueries({ queryKey: [QUERY_KEY, \"meta\", subId], exact: false });\n onSuccess?.(metadata);\n },\n });\n\n const previousUploads = await upload.findPreviousUploads();\n if (previousUploads.length > 0) {\n upload.resumeFromPreviousUpload(previousUploads[0]);\n }\n\n upload.start();\n };\n\n return { mutate, progress };\n};\n","import { queryOptions } from \"@tanstack/react-query\";\nimport axios from \"axios\";\nimport type { Department } from \"~/models/peoplesoft/Department\";\nimport type { Employee } from \"~/models/peoplesoft/Employee\";\nimport { getAccessToken } from \"~/lib/auth/msalClient\";\n\nconst QUERY_KEY = \"ps\";\nconst DAY = 1000 * 60 * 60 * 24;\n\nexport const api = axios.create({\n baseURL: \"https://graph.microsoft.com/v1.0\",\n});\n\napi.interceptors.request.use(async (config) => {\n const accessToken = await getAccessToken(\"graph\");\n config.headers.set(\"Authorization\", `Bearer ${accessToken}`);\n return config;\n});\n\ntype OptionalId = string | undefined | null;\n\nexport const peopleSoftQueries = {\n employeesSearch: (searchTerm: string) =>\n queryOptions({\n queryKey: [QUERY_KEY, \"employee\", \"search\", searchTerm],\n queryFn: ({ signal }) =>\n api\n .request<Array<Employee>>({\n url: `/${QUERY_KEY}/v1/employee?search=${searchTerm}`,\n method: \"GET\",\n signal,\n })\n .then((request) => request.data),\n staleTime: DAY,\n gcTime: DAY,\n refetchOnWindowFocus: false,\n }),\n employees: () =>\n queryOptions({\n queryKey: [QUERY_KEY, \"employee\"],\n queryFn: ({ signal }) =>\n api\n .request<Array<Employee>>({\n url: `/${QUERY_KEY}/v1/employee/all`,\n method: \"GET\",\n signal,\n })\n .then((request) => request.data),\n staleTime: DAY,\n gcTime: DAY,\n refetchOnWindowFocus: false,\n }),\n activeEmployees: () =>\n queryOptions({\n queryKey: [QUERY_KEY, \"employee\", \"active\"],\n queryFn: ({ signal }) =>\n api\n .request<Array<Employee>>({\n url: `/${QUERY_KEY}/v1/employee/active`,\n method: \"GET\",\n signal,\n })\n .then((request) => request.data),\n staleTime: DAY,\n gcTime: DAY,\n refetchOnWindowFocus: false,\n }),\n employeeById: (employeeId: OptionalId) =>\n queryOptions({\n queryKey: [QUERY_KEY, \"employee\", employeeId],\n queryFn: ({ signal }) =>\n api\n .request<Employee>({\n url: `/${QUERY_KEY}/v1/employee/${employeeId}`,\n method: \"GET\",\n signal,\n })\n .then((request) => request.data),\n staleTime: DAY,\n gcTime: DAY,\n refetchOnWindowFocus: false,\n }),\n previousEmployeeIds: () =>\n queryOptions({\n queryKey: [QUERY_KEY, \"employee\", \"previousIds\"],\n queryFn: ({ signal }) =>\n api\n .request<Array<Employee>>({\n url: `/${QUERY_KEY}/v1/employee/previousIds`,\n method: \"GET\",\n signal,\n })\n .then((request) => request.data),\n staleTime: DAY,\n gcTime: DAY,\n refetchOnWindowFocus: false,\n }),\n employeeSupervisor: (employeeId: OptionalId) =>\n queryOptions({\n queryKey: [QUERY_KEY, \"employee\", employeeId, \"supervisor\"],\n queryFn: ({ signal }) =>\n api\n .request<Employee>({\n url: `/${QUERY_KEY}/v1/employee/${employeeId}/supervisor`,\n method: \"GET\",\n signal,\n })\n .then((request) => request.data),\n staleTime: DAY,\n gcTime: DAY,\n refetchOnWindowFocus: false,\n }),\n employeeSubordinates: (employeeId: OptionalId) =>\n queryOptions({\n queryKey: [QUERY_KEY, \"employee\", employeeId, \"subordinates\"],\n queryFn: ({ signal }) =>\n api\n .request<Array<Employee>>({\n url: `/${QUERY_KEY}/v1/employee/${employeeId}/subordinates`,\n method: \"GET\",\n signal,\n })\n .then((request) => request.data),\n staleTime: DAY,\n gcTime: DAY,\n refetchOnWindowFocus: false,\n }),\n employeeManager: (employeeId: OptionalId) =>\n queryOptions({\n queryKey: [QUERY_KEY, \"employee\", employeeId, \"manager\"],\n queryFn: ({ signal }) =>\n api\n .request<Employee>({\n url: `/${QUERY_KEY}/v1/employee/${employeeId}/manager`,\n method: \"GET\",\n signal,\n })\n .then((request) => request.data),\n staleTime: DAY,\n gcTime: DAY,\n refetchOnWindowFocus: false,\n }),\n employeeGeneralManager: (employeeId: OptionalId) =>\n queryOptions({\n queryKey: [QUERY_KEY, \"employee\", employeeId, \"generalManager\"],\n queryFn: ({ signal }) =>\n api\n .request<Employee>({\n url: `/${QUERY_KEY}/v1/employee/${employeeId}/generalManager`,\n method: \"GET\",\n signal,\n })\n .then((request) => request.data),\n staleTime: DAY,\n gcTime: DAY,\n refetchOnWindowFocus: false,\n }),\n departments: () =>\n queryOptions({\n queryKey: [QUERY_KEY, \"department\"],\n queryFn: ({ signal }) =>\n api\n .request<Array<Department>>({\n url: `/${QUERY_KEY}/v1/department/all`,\n method: \"GET\",\n signal,\n })\n .then((request) => request.data),\n staleTime: DAY,\n gcTime: DAY,\n refetchOnWindowFocus: false,\n }),\n departmentById: (departmentId: OptionalId) =>\n queryOptions({\n queryKey: [QUERY_KEY, \"department\", departmentId],\n queryFn: ({ signal }) =>\n api\n .request<Department>({\n url: `/${QUERY_KEY}/v1/department/${departmentId}`,\n method: \"GET\",\n signal,\n })\n .then((request) => request.data),\n staleTime: DAY,\n gcTime: DAY,\n refetchOnWindowFocus: false,\n }),\n departmentManager: (departmentId: OptionalId) =>\n queryOptions({\n queryKey: [QUERY_KEY, \"department\", departmentId, \"manager\"],\n queryFn: ({ signal }) =>\n api\n .request<Employee>({\n url: `/${QUERY_KEY}/v1/department/${departmentId}/manager`,\n method: \"GET\",\n signal,\n })\n .then((request) => request.data),\n staleTime: DAY,\n gcTime: DAY,\n refetchOnWindowFocus: false,\n }),\n departmentEmployees: (departmentId: OptionalId) =>\n queryOptions({\n queryKey: [QUERY_KEY, \"department\", departmentId, \"employees\"],\n queryFn: ({ signal }) =>\n api\n .request<Array<Employee>>({\n url: `/${QUERY_KEY}/v1/department/${departmentId}/employees`,\n method: \"GET\",\n signal,\n })\n .then((request) => request.data),\n staleTime: DAY,\n gcTime: DAY,\n refetchOnWindowFocus: false,\n }),\n companyGeneralManager: (companyCode: OptionalId) =>\n queryOptions({\n queryKey: [QUERY_KEY, \"company\", companyCode, \"generalManager\"],\n queryFn: ({ signal }) =>\n api\n .request<Employee>({\n url: `/${QUERY_KEY}/v1/company/${companyCode}/generalManager`,\n method: \"GET\",\n signal,\n })\n .then((request) => request.data),\n staleTime: DAY,\n gcTime: DAY,\n refetchOnWindowFocus: false,\n }),\n};\n","import { approvalQueries } from \"./ApprovalQueries\";\nimport { fileQueries } from \"./FileQueries\";\nimport { peopleSoftQueries } from \"./PeopleSoftQueries\";\n\nexport const query = {\n peopleSoft: peopleSoftQueries,\n approval: approvalQueries,\n file: fileQueries,\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"queries-JPqCc5Tb.js","names":["mutationOptions","queryOptions","axios","z","Approval","ApproveApproval","CancelApproval","CreateApproval","ResubmitApproval","WithdrawApproval","clientEnv","getAccessToken","queryClient","toKebabCase","ApprovalStatus","ApprovalStepResult","QUERY_KEY","APP_NAME","VITE_APP_TITLE","api","create","baseURL","interceptors","request","use","config","accessToken","headers","set","GetApprovalsParamsSchema","object","appName","string","min","max","default","optional","status","approverEmployeeId","stepResult","GetApprovalsParams","infer","approvalQueries","approvals","params","queryParams","URLSearchParams","append","toString","queryKey","queryFn","signal","Array","url","method","then","data","approval","id","Error","mutationFn","onSettled","invalidateQueries","exact","approve","resubmit","withdraw","cancel","mutationOptions","queryOptions","axios","saveAs","useState","Upload","TusUpload","uuidv7","z","DetailedError","FileMeta","clientEnv","getAccessToken","queryClient","toKebabCase","FileMetaSchema","QUERY_KEY","HOUR","APP_NAME","VITE_APP_TITLE","FILE_API_URL","api","create","baseURL","interceptors","request","use","config","accessToken","headers","set","GetFileMetasParamsSchema","object","appName","string","min","max","default","optional","subId","uuid","GetFileMetasParams","infer","GetFileThumbnailParamsSchema","meta","nullish","GetFileThumbnailParams","GetFileParamsSchema","GetFileParams","fileQueries","metas","params","queryParams","URLSearchParams","append","queryKey","queryFn","signal","Array","url","toString","method","then","data","staleTime","gcTime","refetchOnWindowFocus","thumbnail","id","Blob","responseType","select","URL","createObjectURL","getOne","download","Error","mutationFn","onSuccess","variables","fileName","fileExtension","open","window","updateMeta","onSettled","invalidateQueries","exact","delete","batchDelete","OptionalId","UseUploadFileProps","Pick","onError","error","useUploadFile","t0","$","_c","$i","Symbol","for","progress","setProgress","t1","file","metadata","name","upload","endpoint","chunkSize","type","Authorization","onProgress","bytesUploaded","bytesTotal","previousUploads","findPreviousUploads","length","resumeFromPreviousUpload","start","mutate","t2","queryOptions","axios","Department","Employee","getAccessToken","QUERY_KEY","DAY","api","create","baseURL","interceptors","request","use","config","accessToken","headers","set","OptionalId","peopleSoftQueries","employeesSearch","searchTerm","queryKey","queryFn","signal","Array","url","method","then","data","staleTime","gcTime","refetchOnWindowFocus","employees","activeEmployees","employeeById","employeeId","previousEmployeeIds","employeeSupervisor","employeeSubordinates","employeeManager","employeeGeneralManager","departments","departmentById","departmentId","departmentManager","departmentEmployees","companyGeneralManager","companyCode","approvalQueries","fileQueries","peopleSoftQueries","query","peopleSoft","approval","file"],"sources":["../src/queries/ApprovalQueries.ts","../src/queries/FileQueries.ts","../src/queries/PeopleSoftQueries.ts","../src/queries/index.ts"],"sourcesContent":["import { mutationOptions, queryOptions } from \"@tanstack/react-query\";\nimport axios from \"axios\";\nimport z from \"zod\";\nimport type {\n Approval,\n ApproveApproval,\n CancelApproval,\n CreateApproval,\n ResubmitApproval,\n WithdrawApproval,\n} from \"~/models/approval/Approval\";\nimport { clientEnv } from \"~/env\";\nimport { getAccessToken } from \"~/lib/auth/msalClient\";\nimport { queryClient } from \"~/lib/queryClient\";\nimport { toKebabCase } from \"~/lib/utils\";\nimport { ApprovalStatus } from \"~/models/approval/ApprovalStatus\";\nimport { ApprovalStepResult } from \"~/models/approval/ApprovalStepResult\";\n\nconst QUERY_KEY = \"approval\";\nconst APP_NAME = toKebabCase(clientEnv.VITE_APP_TITLE);\n\nexport const api = axios.create({\n baseURL: \"https://graph.microsoft.com/v1.0\",\n});\n\napi.interceptors.request.use(async (config) => {\n const accessToken = await getAccessToken(\"graph\");\n config.headers.set(\"Authorization\", `Bearer ${accessToken}`);\n return config;\n});\n\nconst GetApprovalsParamsSchema = z.object({\n appName: z.string().min(1).max(255).default(APP_NAME).optional(),\n status: ApprovalStatus.optional(),\n approverEmployeeId: z.string().min(1).max(20).optional(),\n stepResult: ApprovalStepResult.optional(),\n});\n\nexport type GetApprovalsParams = z.infer<typeof GetApprovalsParamsSchema>;\n\nexport const approvalQueries = {\n approvals: (params?: GetApprovalsParams) => {\n const queryParams = new URLSearchParams();\n queryParams.append(\"applicationName\", params?.appName ?? APP_NAME);\n if (params?.status) queryParams.append(\"status\", params.status.toString());\n if (params?.approverEmployeeId)\n queryParams.append(\"approverEmployeeId\", params.approverEmployeeId);\n if (params?.stepResult) queryParams.append(\"stepResult\", params.stepResult.toString());\n\n return queryOptions({\n queryKey: [QUERY_KEY, params],\n queryFn: ({ signal }) =>\n api\n .request<Array<Approval>>({\n url: `/${QUERY_KEY}/Requests/Requests?${queryParams.toString()}`,\n method: \"GET\",\n signal,\n })\n .then((request) => request.data),\n });\n },\n approval: (id: string) =>\n queryOptions({\n queryKey: [QUERY_KEY, id],\n queryFn: ({ signal }) =>\n api\n .request<Approval>({\n url: `/${QUERY_KEY}/Requests/${id}`,\n method: \"GET\",\n signal,\n })\n .then((request) => request.data),\n }),\n create: () =>\n mutationOptions<Approval, Error, CreateApproval>({\n mutationFn: (data) =>\n api\n .request<Approval>({\n url: `/${QUERY_KEY}/Requests`,\n method: \"POST\",\n data,\n })\n .then((request) => request.data),\n onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY], exact: false }),\n }),\n approve: () =>\n mutationOptions<Approval, Error, ApproveApproval>({\n mutationFn: (data) =>\n api\n .request<Approval>({\n url: `/${QUERY_KEY}/Requests/${data.id}/single-approval`,\n method: \"POST\",\n data,\n })\n .then((request) => request.data),\n onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY], exact: false }),\n }),\n resubmit: () =>\n mutationOptions<Approval, Error, ResubmitApproval>({\n mutationFn: (data) =>\n api\n .request<Approval>({\n url: `/${QUERY_KEY}/Requests/${data.id}/resubmit`,\n method: \"POST\",\n data,\n })\n .then((request) => request.data),\n onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY], exact: false }),\n }),\n withdraw: () =>\n mutationOptions<void, Error, WithdrawApproval>({\n mutationFn: (data) =>\n api\n .request<void>({\n url: `/${QUERY_KEY}/Requests/${data.id}/withdraw`,\n method: \"POST\",\n data,\n })\n .then((request) => request.data),\n onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY], exact: false }),\n }),\n cancel: () =>\n mutationOptions<void, Error, CancelApproval>({\n mutationFn: (data) =>\n api\n .request<void>({\n url: `/${QUERY_KEY}/Requests/${data.id}/cancel`,\n method: \"POST\",\n data,\n })\n .then((request) => request.data),\n onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY], exact: false }),\n }),\n};\n","import { mutationOptions, queryOptions } from \"@tanstack/react-query\";\nimport axios from \"axios\";\nimport saveAs from \"file-saver\";\nimport { useState } from \"react\";\nimport { Upload as TusUpload } from \"tus-js-client\";\nimport { uuidv7 } from \"uuidv7\";\nimport z from \"zod\";\nimport type { DetailedError } from \"tus-js-client\";\nimport type { FileMeta } from \"~/models/file/FileMeta\";\nimport { clientEnv } from \"~/env\";\nimport { getAccessToken } from \"~/lib/auth/msalClient\";\nimport { queryClient } from \"~/lib/queryClient\";\nimport { toKebabCase } from \"~/lib/utils\";\nimport { FileMetaSchema } from \"~/models/file/FileMeta\";\n\nconst QUERY_KEY = \"file\";\nconst HOUR = 1000 * 60 * 60;\nconst APP_NAME = toKebabCase(clientEnv.VITE_APP_TITLE);\nconst FILE_API_URL = \"later\";\n\nexport const api = axios.create({\n baseURL: \"https://graph.microsoft.com/v1.0\",\n});\n\napi.interceptors.request.use(async (config) => {\n const accessToken = await getAccessToken(\"graph\");\n config.headers.set(\"Authorization\", `Bearer ${accessToken}`);\n return config;\n});\n\nexport const GetFileMetasParamsSchema = z.object({\n appName: z.string().min(1).max(255).default(APP_NAME).optional(),\n subId: z.uuid(),\n});\n\nexport type GetFileMetasParams = z.infer<typeof GetFileMetasParamsSchema>;\n\nexport const GetFileThumbnailParamsSchema = z.object({\n appName: z.string().min(1).max(255).default(APP_NAME).optional(),\n meta: FileMetaSchema.nullish(),\n});\n\nexport type GetFileThumbnailParams = z.infer<typeof GetFileThumbnailParamsSchema>;\n\nexport const GetFileParamsSchema = z.object({\n appName: z.string().min(1).max(255).default(APP_NAME).optional(),\n meta: FileMetaSchema.nullish(),\n});\n\nexport type GetFileParams = z.infer<typeof GetFileParamsSchema>;\n\nexport const fileQueries = {\n metas: (params: GetFileMetasParams) => {\n const queryParams = new URLSearchParams();\n queryParams.append(\"appName\", params.appName ?? APP_NAME);\n queryParams.append(\"subId\", params.subId);\n\n return queryOptions({\n queryKey: [QUERY_KEY, \"meta\", params.appName ?? APP_NAME, params.subId],\n queryFn: ({ signal }) =>\n api\n .request<Array<FileMeta>>({\n url: `/${QUERY_KEY}/v1/meta?${queryParams.toString()}`,\n method: \"GET\",\n signal,\n })\n .then((request) => request.data),\n staleTime: HOUR,\n gcTime: HOUR,\n refetchOnWindowFocus: false,\n });\n },\n thumbnail: (params: GetFileThumbnailParams) => {\n const queryParams = new URLSearchParams();\n queryParams.append(\"appName\", params.appName ?? APP_NAME);\n queryParams.append(\"id\", params.meta?.id ?? \"\");\n\n return queryOptions({\n queryKey: [QUERY_KEY, \"thumbnail\", params.appName ?? APP_NAME, params.meta?.id],\n queryFn: ({ signal }) =>\n api\n .request<Blob>({\n url: `/${QUERY_KEY}/v1/thumbnail?${queryParams.toString()}`,\n method: \"GET\",\n signal,\n responseType: \"blob\",\n })\n .then((request) => request.data),\n select: (data) => URL.createObjectURL(data),\n staleTime: HOUR,\n gcTime: HOUR,\n refetchOnWindowFocus: false,\n });\n },\n getOne: (params: GetFileParams) => {\n const queryParams = new URLSearchParams();\n queryParams.append(\"appName\", params.appName ?? APP_NAME);\n queryParams.append(\"id\", params.meta?.id ?? \"\");\n\n return queryOptions({\n queryKey: [QUERY_KEY, params.appName ?? APP_NAME, params.meta?.id],\n queryFn: ({ signal }) =>\n api\n .request<Blob>({\n url: `/${QUERY_KEY}/v1?${queryParams.toString()}`,\n method: \"GET\",\n signal,\n responseType: \"blob\",\n })\n .then((request) => request.data),\n select: (data) => URL.createObjectURL(data),\n staleTime: HOUR,\n gcTime: HOUR,\n refetchOnWindowFocus: false,\n });\n },\n download: () =>\n mutationOptions<Blob, Error, FileMeta>({\n mutationFn: (meta) =>\n api\n .request<Blob>({\n url: `/${QUERY_KEY}/v1/download?appName=${APP_NAME}&id=${meta.id}`,\n method: \"GET\",\n responseType: \"blob\",\n })\n .then((request) => request.data),\n onSuccess: (data, variables) =>\n saveAs(data, `${variables.fileName}.${variables.fileExtension}`),\n }),\n open: () =>\n mutationOptions<Blob, Error, FileMeta>({\n mutationFn: (meta) =>\n api\n .request<Blob>({\n url: `/${QUERY_KEY}/v1?appName=${APP_NAME}&id=${meta.id}`,\n method: \"GET\",\n responseType: \"blob\",\n })\n .then((request) => request.data),\n onSuccess: (data) => {\n window.open(URL.createObjectURL(data));\n },\n }),\n updateMeta: () =>\n mutationOptions<FileMeta, Error, FileMeta>({\n mutationFn: (meta) =>\n api\n .request<FileMeta>({\n url: `/${QUERY_KEY}/v1/meta?appName=${APP_NAME}&id=${meta.id}`,\n method: \"PUT\",\n data: meta,\n })\n .then((request) => request.data),\n onSettled: () =>\n queryClient.invalidateQueries({ queryKey: [QUERY_KEY, \"meta\"], exact: false }),\n }),\n delete: () =>\n mutationOptions<FileMeta, Error, FileMeta>({\n mutationFn: (meta) =>\n api\n .request<FileMeta>({\n url: `/${QUERY_KEY}/v1?appName=${APP_NAME}&id=${meta.id}`,\n method: \"DELETE\",\n })\n .then((request) => request.data),\n onSettled: () =>\n queryClient.invalidateQueries({ queryKey: [QUERY_KEY, \"meta\"], exact: false }),\n }),\n batchDelete: () =>\n mutationOptions<string, Error, string>({\n mutationFn: (subId) =>\n api\n .request<string>({\n url: `/${QUERY_KEY}/v1?appName=${APP_NAME}&subId=${subId}`,\n method: \"DELETE\",\n })\n .then((request) => request.data),\n onSettled: () =>\n queryClient.invalidateQueries({ queryKey: [QUERY_KEY, \"meta\"], exact: false }),\n }),\n};\n\ntype OptionalId = string | undefined | null;\n\ninterface UseUploadFileProps {\n subId: OptionalId;\n onSuccess?: (meta: Pick<FileMeta, \"id\" | \"appName\" | \"subId\" | \"fileName\">) => void;\n onError?: (error: Error | DetailedError) => void;\n}\n\nexport const useUploadFile = ({ subId, onSuccess, onError }: UseUploadFileProps) => {\n const [progress, setProgress] = useState<number>(0);\n\n const mutate = async (file: File) => {\n if (!subId) throw new Error(\"subId is required for file upload\");\n\n const metadata: Pick<FileMeta, \"id\" | \"appName\" | \"subId\" | \"fileName\"> = {\n id: uuidv7(),\n appName: APP_NAME,\n subId: subId,\n fileName: file.name,\n };\n\n const accessToken = await getAccessToken(\"graph\");\n\n const upload = new TusUpload(file, {\n endpoint: `${FILE_API_URL}/${QUERY_KEY}/v1/upload`,\n chunkSize: 1_048_576, // 1 MB\n metadata: {\n id: metadata.id,\n appName: metadata.appName,\n subId: metadata.subId,\n fileName: metadata.fileName,\n fileExtension: file.type,\n },\n headers: { Authorization: `Bearer ${accessToken}` },\n onError: (error) => {\n setProgress(0);\n onError?.(error);\n },\n onProgress: (bytesUploaded, bytesTotal) => {\n setProgress((bytesUploaded / bytesTotal) * 100);\n },\n onSuccess: () => {\n setProgress(0);\n queryClient.invalidateQueries({ queryKey: [QUERY_KEY, \"meta\", subId], exact: false });\n onSuccess?.(metadata);\n },\n });\n\n const previousUploads = await upload.findPreviousUploads();\n if (previousUploads.length > 0) {\n upload.resumeFromPreviousUpload(previousUploads[0]);\n }\n\n upload.start();\n };\n\n return { mutate, progress };\n};\n","import { queryOptions } from \"@tanstack/react-query\";\nimport axios from \"axios\";\nimport type { Department } from \"~/models/peoplesoft/Department\";\nimport type { Employee } from \"~/models/peoplesoft/Employee\";\nimport { getAccessToken } from \"~/lib/auth/msalClient\";\n\nconst QUERY_KEY = \"ps\";\nconst DAY = 1000 * 60 * 60 * 24;\n\nexport const api = axios.create({\n baseURL: \"https://graph.microsoft.com/v1.0\",\n});\n\napi.interceptors.request.use(async (config) => {\n const accessToken = await getAccessToken(\"graph\");\n config.headers.set(\"Authorization\", `Bearer ${accessToken}`);\n return config;\n});\n\ntype OptionalId = string | undefined | null;\n\nexport const peopleSoftQueries = {\n employeesSearch: (searchTerm: string) =>\n queryOptions({\n queryKey: [QUERY_KEY, \"employee\", \"search\", searchTerm],\n queryFn: ({ signal }) =>\n api\n .request<Array<Employee>>({\n url: `/${QUERY_KEY}/v1/employee?search=${searchTerm}`,\n method: \"GET\",\n signal,\n })\n .then((request) => request.data),\n staleTime: DAY,\n gcTime: DAY,\n refetchOnWindowFocus: false,\n }),\n employees: () =>\n queryOptions({\n queryKey: [QUERY_KEY, \"employee\"],\n queryFn: ({ signal }) =>\n api\n .request<Array<Employee>>({\n url: `/${QUERY_KEY}/v1/employee/all`,\n method: \"GET\",\n signal,\n })\n .then((request) => request.data),\n staleTime: DAY,\n gcTime: DAY,\n refetchOnWindowFocus: false,\n }),\n activeEmployees: () =>\n queryOptions({\n queryKey: [QUERY_KEY, \"employee\", \"active\"],\n queryFn: ({ signal }) =>\n api\n .request<Array<Employee>>({\n url: `/${QUERY_KEY}/v1/employee/active`,\n method: \"GET\",\n signal,\n })\n .then((request) => request.data),\n staleTime: DAY,\n gcTime: DAY,\n refetchOnWindowFocus: false,\n }),\n employeeById: (employeeId: OptionalId) =>\n queryOptions({\n queryKey: [QUERY_KEY, \"employee\", employeeId],\n queryFn: ({ signal }) =>\n api\n .request<Employee>({\n url: `/${QUERY_KEY}/v1/employee/${employeeId}`,\n method: \"GET\",\n signal,\n })\n .then((request) => request.data),\n staleTime: DAY,\n gcTime: DAY,\n refetchOnWindowFocus: false,\n }),\n previousEmployeeIds: () =>\n queryOptions({\n queryKey: [QUERY_KEY, \"employee\", \"previousIds\"],\n queryFn: ({ signal }) =>\n api\n .request<Array<Employee>>({\n url: `/${QUERY_KEY}/v1/employee/previousIds`,\n method: \"GET\",\n signal,\n })\n .then((request) => request.data),\n staleTime: DAY,\n gcTime: DAY,\n refetchOnWindowFocus: false,\n }),\n employeeSupervisor: (employeeId: OptionalId) =>\n queryOptions({\n queryKey: [QUERY_KEY, \"employee\", employeeId, \"supervisor\"],\n queryFn: ({ signal }) =>\n api\n .request<Employee>({\n url: `/${QUERY_KEY}/v1/employee/${employeeId}/supervisor`,\n method: \"GET\",\n signal,\n })\n .then((request) => request.data),\n staleTime: DAY,\n gcTime: DAY,\n refetchOnWindowFocus: false,\n }),\n employeeSubordinates: (employeeId: OptionalId) =>\n queryOptions({\n queryKey: [QUERY_KEY, \"employee\", employeeId, \"subordinates\"],\n queryFn: ({ signal }) =>\n api\n .request<Array<Employee>>({\n url: `/${QUERY_KEY}/v1/employee/${employeeId}/subordinates`,\n method: \"GET\",\n signal,\n })\n .then((request) => request.data),\n staleTime: DAY,\n gcTime: DAY,\n refetchOnWindowFocus: false,\n }),\n employeeManager: (employeeId: OptionalId) =>\n queryOptions({\n queryKey: [QUERY_KEY, \"employee\", employeeId, \"manager\"],\n queryFn: ({ signal }) =>\n api\n .request<Employee>({\n url: `/${QUERY_KEY}/v1/employee/${employeeId}/manager`,\n method: \"GET\",\n signal,\n })\n .then((request) => request.data),\n staleTime: DAY,\n gcTime: DAY,\n refetchOnWindowFocus: false,\n }),\n employeeGeneralManager: (employeeId: OptionalId) =>\n queryOptions({\n queryKey: [QUERY_KEY, \"employee\", employeeId, \"generalManager\"],\n queryFn: ({ signal }) =>\n api\n .request<Employee>({\n url: `/${QUERY_KEY}/v1/employee/${employeeId}/generalManager`,\n method: \"GET\",\n signal,\n })\n .then((request) => request.data),\n staleTime: DAY,\n gcTime: DAY,\n refetchOnWindowFocus: false,\n }),\n departments: () =>\n queryOptions({\n queryKey: [QUERY_KEY, \"department\"],\n queryFn: ({ signal }) =>\n api\n .request<Array<Department>>({\n url: `/${QUERY_KEY}/v1/department/all`,\n method: \"GET\",\n signal,\n })\n .then((request) => request.data),\n staleTime: DAY,\n gcTime: DAY,\n refetchOnWindowFocus: false,\n }),\n departmentById: (departmentId: OptionalId) =>\n queryOptions({\n queryKey: [QUERY_KEY, \"department\", departmentId],\n queryFn: ({ signal }) =>\n api\n .request<Department>({\n url: `/${QUERY_KEY}/v1/department/${departmentId}`,\n method: \"GET\",\n signal,\n })\n .then((request) => request.data),\n staleTime: DAY,\n gcTime: DAY,\n refetchOnWindowFocus: false,\n }),\n departmentManager: (departmentId: OptionalId) =>\n queryOptions({\n queryKey: [QUERY_KEY, \"department\", departmentId, \"manager\"],\n queryFn: ({ signal }) =>\n api\n .request<Employee>({\n url: `/${QUERY_KEY}/v1/department/${departmentId}/manager`,\n method: \"GET\",\n signal,\n })\n .then((request) => request.data),\n staleTime: DAY,\n gcTime: DAY,\n refetchOnWindowFocus: false,\n }),\n departmentEmployees: (departmentId: OptionalId) =>\n queryOptions({\n queryKey: [QUERY_KEY, \"department\", departmentId, \"employees\"],\n queryFn: ({ signal }) =>\n api\n .request<Array<Employee>>({\n url: `/${QUERY_KEY}/v1/department/${departmentId}/employees`,\n method: \"GET\",\n signal,\n })\n .then((request) => request.data),\n staleTime: DAY,\n gcTime: DAY,\n refetchOnWindowFocus: false,\n }),\n companyGeneralManager: (companyCode: OptionalId) =>\n queryOptions({\n queryKey: [QUERY_KEY, \"company\", companyCode, \"generalManager\"],\n queryFn: ({ signal }) =>\n api\n .request<Employee>({\n url: `/${QUERY_KEY}/v1/company/${companyCode}/generalManager`,\n method: \"GET\",\n signal,\n })\n .then((request) => request.data),\n staleTime: DAY,\n gcTime: DAY,\n refetchOnWindowFocus: false,\n }),\n};\n","import { approvalQueries } from \"./ApprovalQueries\";\nimport { fileQueries } from \"./FileQueries\";\nimport { peopleSoftQueries } from \"./PeopleSoftQueries\";\n\nexport const query = {\n peopleSoft: peopleSoftQueries,\n approval: approvalQueries,\n file: fileQueries,\n};\n"],"mappings":"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"}
|
package/dist/query.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { permissions, scopes } from "virtual:wcz-layout";
|
|
2
2
|
import { z } from "zod";
|
|
3
|
-
import { EventType, InteractionRequiredAuthError, NavigationClient, PublicClientApplication } from "@azure/msal-browser";
|
|
3
|
+
import { BrowserAuthError, EventType, InteractionRequiredAuthError, NavigationClient, PublicClientApplication } from "@azure/msal-browser";
|
|
4
4
|
import { createEnv } from "@t3-oss/env-core";
|
|
5
5
|
import { createClientOnlyFn, createIsomorphicFn } from "@tanstack/react-start";
|
|
6
6
|
//#region src/env.ts
|
|
@@ -26,22 +26,37 @@ const serverEnv = createEnv({
|
|
|
26
26
|
});
|
|
27
27
|
//#endregion
|
|
28
28
|
//#region src/lib/auth/msalClient.ts
|
|
29
|
-
const pca = new PublicClientApplication({
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
29
|
+
const pca = new PublicClientApplication({
|
|
30
|
+
auth: {
|
|
31
|
+
clientId: clientEnv.VITE_ENTRA_CLIENT_ID,
|
|
32
|
+
authority: `https://login.microsoftonline.com/${clientEnv.VITE_ENTRA_TENANT_ID}`,
|
|
33
|
+
redirectUri: "/"
|
|
34
|
+
},
|
|
35
|
+
cache: { cacheLocation: "localStorage" }
|
|
36
|
+
});
|
|
37
|
+
const restoreActiveAccount = () => {
|
|
38
|
+
if (pca.getActiveAccount()) return;
|
|
39
|
+
const [firstAccount] = pca.getAllAccounts();
|
|
40
|
+
if (firstAccount) pca.setActiveAccount(firstAccount);
|
|
41
|
+
};
|
|
42
|
+
const initializeMsal = async () => {
|
|
43
|
+
if (globalThis.window === void 0) return;
|
|
44
|
+
await pca.initialize();
|
|
35
45
|
pca.addEventCallback((event) => {
|
|
36
46
|
if (event.eventType === EventType.LOGIN_SUCCESS && event.payload) {
|
|
37
|
-
const
|
|
38
|
-
pca.setActiveAccount(account);
|
|
47
|
+
const payload = event.payload;
|
|
48
|
+
pca.setActiveAccount(payload.account);
|
|
39
49
|
}
|
|
40
50
|
});
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
51
|
+
const response = await pca.handleRedirectPromise();
|
|
52
|
+
if (response?.account) {
|
|
53
|
+
pca.setActiveAccount(response.account);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
restoreActiveAccount();
|
|
57
|
+
};
|
|
58
|
+
const initializationPromise = initializeMsal();
|
|
59
|
+
await initializationPromise;
|
|
45
60
|
var TanStackNavigationClient = class extends NavigationClient {
|
|
46
61
|
constructor(navigate) {
|
|
47
62
|
super();
|
|
@@ -56,23 +71,20 @@ var TanStackNavigationClient = class extends NavigationClient {
|
|
|
56
71
|
return false;
|
|
57
72
|
}
|
|
58
73
|
};
|
|
59
|
-
const tokenInteractionListeners = /* @__PURE__ */ new Set();
|
|
60
|
-
const subscribeToTokenInteractionRequired = (listener) => {
|
|
61
|
-
tokenInteractionListeners.add(listener);
|
|
62
|
-
return () => {
|
|
63
|
-
tokenInteractionListeners.delete(listener);
|
|
64
|
-
};
|
|
65
|
-
};
|
|
66
74
|
const getUser = createIsomorphicFn().server(() => null).client(async () => {
|
|
75
|
+
await initializationPromise;
|
|
76
|
+
restoreActiveAccount();
|
|
67
77
|
const account = pca.getActiveAccount();
|
|
68
78
|
if (!account?.idToken) return null;
|
|
69
79
|
return buildUser(decodeJwt(account.idToken));
|
|
70
80
|
});
|
|
71
81
|
/**
|
|
72
82
|
* Token Acquisition: Get authenticated access token.
|
|
73
|
-
* Use when: Making API calls from the browser to secured endpoints
|
|
83
|
+
* Use when: Making API calls from the browser to secured endpoints.
|
|
74
84
|
*/
|
|
75
85
|
const getAccessToken = createClientOnlyFn(async (scopeKey) => {
|
|
86
|
+
await initializationPromise;
|
|
87
|
+
restoreActiveAccount();
|
|
76
88
|
const account = pca.getActiveAccount();
|
|
77
89
|
if (!account) throw new Error("No active account. User not signed in.");
|
|
78
90
|
const scopes$1 = [...scopes[scopeKey]];
|
|
@@ -83,7 +95,17 @@ const getAccessToken = createClientOnlyFn(async (scopeKey) => {
|
|
|
83
95
|
});
|
|
84
96
|
return accessToken;
|
|
85
97
|
} catch (error) {
|
|
86
|
-
if (error instanceof InteractionRequiredAuthError)
|
|
98
|
+
if (error instanceof InteractionRequiredAuthError) {
|
|
99
|
+
try {
|
|
100
|
+
await pca.acquireTokenRedirect({
|
|
101
|
+
scopes: scopes$1,
|
|
102
|
+
account
|
|
103
|
+
});
|
|
104
|
+
} catch (redirectError) {
|
|
105
|
+
if (!(redirectError instanceof BrowserAuthError) || redirectError.errorCode !== "interaction_in_progress") throw redirectError;
|
|
106
|
+
}
|
|
107
|
+
await new Promise(() => {});
|
|
108
|
+
}
|
|
87
109
|
throw error;
|
|
88
110
|
}
|
|
89
111
|
});
|
|
@@ -192,6 +214,6 @@ const buildUser = (payload) => ({
|
|
|
192
214
|
}
|
|
193
215
|
});
|
|
194
216
|
//#endregion
|
|
195
|
-
export { getFieldStatus as a, toKebabCase as c, getUser as d, pca as f,
|
|
217
|
+
export { getFieldStatus as a, toKebabCase as c, getUser as d, pca as f, buildUser as i, TanStackNavigationClient as l, serverEnv as m, WISTRON_PRIMARY_COLOR as n, requirePermission as o, clientEnv as p, WISTRON_SECONDARY_COLOR as r, rootRouteHead as s, Platform as t, getAccessToken as u };
|
|
196
218
|
|
|
197
|
-
//# sourceMappingURL=utils-
|
|
219
|
+
//# sourceMappingURL=utils-CqQKSaSs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils-CqQKSaSs.js","names":["createEnv","z","clientEnv","clientPrefix","client","VITE_ENTRA_CLIENT_ID","string","VITE_ENTRA_TENANT_ID","VITE_APP_TITLE","VITE_MUI_LICENSE_KEY","runtimeEnv","import","meta","env","emptyStringAsUndefined","serverEnv","server","ENTRA_CLIENT_ID","ENTRA_TENANT_ID","ENTRA_CLIENT_SECRET","process","AuthenticationResult","BrowserAuthError","EventMessage","EventType","InteractionRequiredAuthError","NavigationClient","NavigationOptions","PublicClientApplication","useNavigate","createClientOnlyFn","createIsomorphicFn","scopes","definedScopes","clientEnv","buildUser","decodeJwt","User","pca","auth","clientId","VITE_ENTRA_CLIENT_ID","authority","VITE_ENTRA_TENANT_ID","redirectUri","cache","cacheLocation","restoreActiveAccount","getActiveAccount","firstAccount","getAllAccounts","setActiveAccount","initializeMsal","globalThis","window","undefined","initialize","addEventCallback","event","eventType","LOGIN_SUCCESS","payload","account","response","handleRedirectPromise","initializationPromise","msalReady","TanStackNavigationClient","constructor","navigate","ReturnType","navigateInternal","url","options","relative","replace","location","origin","to","noHistory","getUser","server","client","Promise","idToken","getAccessToken","scopeKey","Error","accessToken","acquireTokenSilent","error","acquireTokenRedirect","redirectError","errorCode","AnyFieldApi","permissions","clientEnv","TokenPayload","User","getUser","WISTRON_PRIMARY_COLOR","WISTRON_SECONDARY_COLOR","Platform","isAndroid","test","userAgent","isIOS","isWindows","isMacOS","navigator","RootRouteHeadOptions","manifest","rootRouteHead","options","meta","charSet","name","content","title","VITE_APP_TITLE","links","rel","sizes","href","type","requirePermission","permissionKey","user","hasPermission","Error","FormOmittedProps","getFieldStatus","field","state","isTouched","hasError","errors","length","helperText","message","toKebabCase","str","replaceAll","toLowerCase","decodeJwt","token","base64Payload","split","base64","replace","payload","decodeURIComponent","atob","map","c","charCodeAt","toString","slice","join","JSON","parse","buildUser","id","sub","email","preferred_username","department","toUpperCase","employeeId","companyName","key","allowedGroups","some","k","groups","includes"],"sources":["../src/env.ts","../src/lib/auth/msalClient.ts","../src/lib/utils.ts"],"sourcesContent":["import { createEnv } from \"@t3-oss/env-core\";\nimport { z } from \"zod\";\n\nexport const clientEnv = createEnv({\n clientPrefix: \"VITE_\",\n client: {\n VITE_ENTRA_CLIENT_ID: z.string(),\n VITE_ENTRA_TENANT_ID: z.string(),\n VITE_APP_TITLE: z.string(),\n VITE_MUI_LICENSE_KEY: z.string(),\n },\n runtimeEnv: import.meta.env,\n emptyStringAsUndefined: true,\n});\n\nexport const serverEnv = createEnv({\n server: {\n ENTRA_CLIENT_ID: z.string(),\n ENTRA_TENANT_ID: z.string(),\n ENTRA_CLIENT_SECRET: z.string(),\n },\n runtimeEnv: process.env,\n emptyStringAsUndefined: true,\n});\n","import {\n AuthenticationResult,\n BrowserAuthError,\n EventMessage,\n EventType,\n InteractionRequiredAuthError,\n NavigationClient,\n NavigationOptions,\n PublicClientApplication,\n} from \"@azure/msal-browser\";\nimport { useNavigate } from \"@tanstack/react-router\";\nimport { createClientOnlyFn, createIsomorphicFn } from \"@tanstack/react-start\";\nimport { scopes as definedScopes } from \"virtual:wcz-layout\";\nimport { clientEnv } from \"~/env\";\nimport { buildUser, decodeJwt } from \"~/lib/utils\";\nimport type { User } from \"~/models/User\";\n\nexport const pca = new PublicClientApplication({\n auth: {\n clientId: clientEnv.VITE_ENTRA_CLIENT_ID,\n authority: `https://login.microsoftonline.com/${clientEnv.VITE_ENTRA_TENANT_ID}`,\n redirectUri: \"/\",\n },\n cache: {\n cacheLocation: \"localStorage\",\n },\n});\n\nconst restoreActiveAccount = () => {\n if (pca.getActiveAccount()) return;\n const [firstAccount] = pca.getAllAccounts();\n if (firstAccount) pca.setActiveAccount(firstAccount);\n};\n\nconst initializeMsal = async () => {\n if (globalThis.window === undefined) return;\n\n await pca.initialize();\n\n pca.addEventCallback((event: EventMessage) => {\n if (event.eventType === EventType.LOGIN_SUCCESS && event.payload) {\n const payload = event.payload as AuthenticationResult;\n pca.setActiveAccount(payload.account);\n }\n });\n\n const response = await pca.handleRedirectPromise();\n if (response?.account) {\n pca.setActiveAccount(response.account);\n return;\n }\n\n restoreActiveAccount();\n};\n\nconst initializationPromise = initializeMsal();\nawait initializationPromise;\n\nexport const msalReady = () => initializationPromise;\n\nexport class TanStackNavigationClient extends NavigationClient {\n constructor(private readonly navigate: ReturnType<typeof useNavigate>) {\n super();\n }\n async navigateInternal(url: string, options: NavigationOptions) {\n const relative = url.replace(location.origin, \"\");\n this.navigate({ to: relative, replace: options.noHistory });\n return false;\n }\n}\n\nexport const getUser = createIsomorphicFn()\n .server(() => null)\n .client(async (): Promise<User | null> => {\n await initializationPromise;\n restoreActiveAccount();\n\n const account = pca.getActiveAccount();\n if (!account?.idToken) return null;\n\n return buildUser(decodeJwt(account.idToken));\n });\n\n/**\n * Token Acquisition: Get authenticated access token.\n * Use when: Making API calls from the browser to secured endpoints.\n */\nexport const getAccessToken = createClientOnlyFn(async (scopeKey: keyof typeof definedScopes) => {\n await initializationPromise;\n restoreActiveAccount();\n\n const account = pca.getActiveAccount();\n if (!account) throw new Error(\"No active account. User not signed in.\");\n\n const scopes = [...definedScopes[scopeKey]];\n\n try {\n const { accessToken } = await pca.acquireTokenSilent({ scopes, account });\n return accessToken;\n } catch (error) {\n if (error instanceof InteractionRequiredAuthError) {\n try {\n await pca.acquireTokenRedirect({ scopes, account });\n } catch (redirectError) {\n // Another interaction is already in progress — MSAL will handle it.\n if (\n !(redirectError instanceof BrowserAuthError) ||\n redirectError.errorCode !== \"interaction_in_progress\"\n ) {\n throw redirectError;\n }\n }\n\n // Keep the caller suspended until the page navigates away so pending\n // server functions don't fire without an Authorization header.\n await new Promise<never>(() => {});\n }\n\n throw error;\n }\n});\n","import type { AnyFieldApi } from \"@tanstack/react-form\";\nimport { permissions } from \"virtual:wcz-layout\";\nimport { clientEnv } from \"~/env\";\nimport type { TokenPayload } from \"~/models/TokenPayload\";\nimport type { User } from \"~/models/User\";\nimport { getUser } from \"./auth/msalClient\";\n\nexport const WISTRON_PRIMARY_COLOR = \"#00506E\";\nexport const WISTRON_SECONDARY_COLOR = \"#64DC00\";\n\nexport class Platform {\n static get isAndroid() {\n return /android/i.test(this.userAgent);\n }\n static get isIOS() {\n return /iPad|iPhone|iPod/.test(this.userAgent);\n }\n static get isWindows() {\n return /windows/i.test(this.userAgent);\n }\n static get isMacOS() {\n return /Macintosh|MacIntel|MacPPC|Mac68K/.test(this.userAgent);\n }\n\n private static get userAgent() {\n return typeof navigator === \"undefined\" ? \"\" : navigator.userAgent;\n }\n}\n\ninterface RootRouteHeadOptions {\n manifest?: string;\n}\n\nexport const rootRouteHead = (options?: RootRouteHeadOptions) => ({\n meta: [\n { charSet: \"utf-8\" },\n { name: \"viewport\", content: \"width=device-width, initial-scale=1\" },\n { title: clientEnv.VITE_APP_TITLE },\n { name: \"og:type\", content: \"website\" },\n { name: \"og:title\", content: clientEnv.VITE_APP_TITLE },\n { name: \"og:image\", content: \"/favicon-32x32.png\" },\n ],\n links: [\n { rel: \"apple-touch-icon\", sizes: \"180x180\", href: \"/apple-touch-icon.png\" },\n { rel: \"icon\", type: \"image/png\", sizes: \"32x32\", href: \"/favicon-32x32.png\" },\n { rel: \"icon\", type: \"image/png\", sizes: \"16x16\", href: \"/favicon-16x16.png\" },\n { rel: \"manifest\", href: options?.manifest || \"/manifest.json\" },\n { rel: \"icon\", href: \"/favicon.ico\" },\n ],\n});\n\nexport const requirePermission = (permissionKey: keyof typeof permissions) => {\n return async () => {\n const user = await getUser();\n\n if (!user?.hasPermission(permissionKey))\n throw new Error(\"You do not have permission to access this page.\");\n\n return { user };\n };\n};\n\n/* Internal Utils */\nexport type FormOmittedProps =\n | \"name\"\n | \"value\"\n | \"onChange\"\n | \"onBlur\"\n | \"error\"\n | \"helperText\"\n | \"renderInput\"\n | \"type\"\n | \"aria-label\";\n\nexport const getFieldStatus = (field: AnyFieldApi) => {\n const { meta } = field.state;\n\n const isTouched = meta.isTouched;\n const hasError = !!meta.errors.length;\n const helperText = meta.errors[0]?.message;\n\n return { isTouched, hasError, helperText };\n};\n\nexport const toKebabCase = (str: string): string => {\n return str\n .replaceAll(/([a-z])([A-Z])/g, \"$1-$2\")\n .replaceAll(/[\\s_]+/g, \"-\")\n .replaceAll(/[^a-zA-Z0-9-]/g, \"\")\n .toLowerCase()\n .replaceAll(/-+/g, \"-\")\n .replaceAll(/(^-|-$)/g, \"\");\n};\n\nexport const decodeJwt = (token: string) => {\n const base64Payload = token.split(\".\")[1];\n const base64 = base64Payload.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const payload = decodeURIComponent(\n atob(base64)\n .split(\"\")\n .map((c) => \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2))\n .join(\"\"),\n );\n return JSON.parse(payload) as TokenPayload;\n};\n\nexport const buildUser = (payload: TokenPayload): User => ({\n id: payload.sub,\n name: payload.name?.split(\"/\")[0],\n email: payload.preferred_username?.toLowerCase(),\n department: payload.department?.toUpperCase() || \"\",\n employeeId: payload.employeeId?.toUpperCase() || \"\",\n companyName: payload.companyName || \"\",\n hasPermission: (key: keyof typeof permissions) => {\n const allowedGroups = permissions[key];\n return allowedGroups.some((k) => (payload.groups ?? []).includes(k));\n },\n});\n"],"mappings":"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"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { a as requirePermission, n as Platform } from "./utils-BBQ5S6oM.js";
|
|
2
|
-
import { t as getAccessToken } from "./msalClient-
|
|
2
|
+
import { t as getAccessToken } from "./msalClient-MNN6BwL6.js";
|
|
3
3
|
import i18next, { t } from "i18next";
|
|
4
4
|
import { scopes } from "virtual:wcz-layout";
|
|
5
5
|
import { createEnv } from "@t3-oss/env-core";
|
package/dist/utils.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { m as serverEnv, o as requirePermission, t as Platform, u as getAccessToken } from "./utils-CqQKSaSs.js";
|
|
2
2
|
import i18next, { t } from "i18next";
|
|
3
3
|
import { scopes } from "virtual:wcz-layout";
|
|
4
4
|
import { createEnv } from "@t3-oss/env-core";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wcz-layout",
|
|
3
|
-
"version": "8.0.
|
|
3
|
+
"version": "8.0.2",
|
|
4
4
|
"private": false,
|
|
5
5
|
"keywords": [
|
|
6
6
|
"tanstack-intent"
|
|
@@ -82,16 +82,16 @@
|
|
|
82
82
|
"prepublishOnly": "npm run build"
|
|
83
83
|
},
|
|
84
84
|
"dependencies": {
|
|
85
|
-
"@azure/msal-browser": "^5.
|
|
86
|
-
"@azure/msal-node": "^5.1.
|
|
87
|
-
"@azure/msal-react": "^5.
|
|
85
|
+
"@azure/msal-browser": "^5.7.0",
|
|
86
|
+
"@azure/msal-node": "^5.1.3",
|
|
87
|
+
"@azure/msal-react": "^5.3.0",
|
|
88
88
|
"@t3-oss/env-core": "^0.13.11",
|
|
89
89
|
"file-saver": "^2.0.5",
|
|
90
90
|
"i18next": "^26.0.5",
|
|
91
91
|
"i18next-browser-languagedetector": "^8.2.1",
|
|
92
92
|
"jose": "^6.2.2",
|
|
93
93
|
"react-dropzone": "^15.0.0",
|
|
94
|
-
"react-i18next": "^17.0.
|
|
94
|
+
"react-i18next": "^17.0.4",
|
|
95
95
|
"react-intersection-observer": "^10.0.3",
|
|
96
96
|
"react-number-format": "^5.4.5",
|
|
97
97
|
"tus-js-client": "^4.3.1",
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
"babel-plugin-react-compiler": "^1.0.0",
|
|
109
109
|
"nitro": "npm:nitro-nightly@latest",
|
|
110
110
|
"publint": "^0.3.18",
|
|
111
|
-
"typescript": "^6.0.
|
|
111
|
+
"typescript": "^6.0.3",
|
|
112
112
|
"vite-plugin-checker": "^0.13.0"
|
|
113
113
|
},
|
|
114
114
|
"peerDependencies": {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils-Dz7akq1k.js","names":["createEnv","z","clientEnv","clientPrefix","client","VITE_ENTRA_CLIENT_ID","string","VITE_ENTRA_TENANT_ID","VITE_APP_TITLE","VITE_MUI_LICENSE_KEY","runtimeEnv","import","meta","env","emptyStringAsUndefined","serverEnv","server","ENTRA_CLIENT_ID","ENTRA_TENANT_ID","ENTRA_CLIENT_SECRET","process","AuthenticationResult","EventMessage","EventType","InteractionRequiredAuthError","NavigationClient","NavigationOptions","PublicClientApplication","useNavigate","createClientOnlyFn","createIsomorphicFn","scopes","definedScopes","clientEnv","buildUser","decodeJwt","User","pca","auth","clientId","VITE_ENTRA_CLIENT_ID","authority","VITE_ENTRA_TENANT_ID","redirectUri","initialize","then","addEventCallback","event","eventType","LOGIN_SUCCESS","payload","account","setActiveAccount","handleRedirectPromise","response","TanStackNavigationClient","constructor","navigate","ReturnType","navigateInternal","url","options","relative","replace","location","origin","to","noHistory","TokenInteractionListener","Array","tokenInteractionListeners","Set","subscribeToTokenInteractionRequired","listener","add","delete","getUser","server","client","Promise","getActiveAccount","idToken","getAccessToken","scopeKey","Error","accessToken","acquireTokenSilent","error","forEach","AnyFieldApi","permissions","clientEnv","TokenPayload","User","getUser","WISTRON_PRIMARY_COLOR","WISTRON_SECONDARY_COLOR","Platform","isAndroid","test","userAgent","isIOS","isWindows","isMacOS","navigator","RootRouteHeadOptions","manifest","rootRouteHead","options","meta","charSet","name","content","title","VITE_APP_TITLE","links","rel","sizes","href","type","requirePermission","permissionKey","user","hasPermission","Error","FormOmittedProps","getFieldStatus","field","state","isTouched","hasError","errors","length","helperText","message","toKebabCase","str","replaceAll","toLowerCase","decodeJwt","token","base64Payload","split","base64","replace","payload","decodeURIComponent","atob","map","c","charCodeAt","toString","slice","join","JSON","parse","buildUser","id","sub","email","preferred_username","department","toUpperCase","employeeId","companyName","key","allowedGroups","some","k","groups","includes"],"sources":["../src/env.ts","../src/lib/auth/msalClient.ts","../src/lib/utils.ts"],"sourcesContent":["import { createEnv } from \"@t3-oss/env-core\";\nimport { z } from \"zod\";\n\nexport const clientEnv = createEnv({\n clientPrefix: \"VITE_\",\n client: {\n VITE_ENTRA_CLIENT_ID: z.string(),\n VITE_ENTRA_TENANT_ID: z.string(),\n VITE_APP_TITLE: z.string(),\n VITE_MUI_LICENSE_KEY: z.string(),\n },\n runtimeEnv: import.meta.env,\n emptyStringAsUndefined: true,\n});\n\nexport const serverEnv = createEnv({\n server: {\n ENTRA_CLIENT_ID: z.string(),\n ENTRA_TENANT_ID: z.string(),\n ENTRA_CLIENT_SECRET: z.string(),\n },\n runtimeEnv: process.env,\n emptyStringAsUndefined: true,\n});\n","import {\n AuthenticationResult,\n EventMessage,\n EventType,\n InteractionRequiredAuthError,\n NavigationClient,\n NavigationOptions,\n PublicClientApplication,\n} from \"@azure/msal-browser\";\nimport { useNavigate } from \"@tanstack/react-router\";\nimport { createClientOnlyFn, createIsomorphicFn } from \"@tanstack/react-start\";\nimport { scopes as definedScopes } from \"virtual:wcz-layout\";\nimport { clientEnv } from \"~/env\";\nimport { buildUser, decodeJwt } from \"~/lib/utils\";\nimport type { User } from \"~/models/User\";\n\nexport const pca = new PublicClientApplication({\n auth: {\n clientId: clientEnv.VITE_ENTRA_CLIENT_ID,\n authority: `https://login.microsoftonline.com/${clientEnv.VITE_ENTRA_TENANT_ID}`,\n redirectUri: \"/\",\n },\n});\n\npca\n .initialize()\n .then(() => {\n pca.addEventCallback((event: EventMessage) => {\n if (event.eventType === EventType.LOGIN_SUCCESS && event.payload) {\n const payload = event.payload as AuthenticationResult;\n const account = payload.account;\n pca.setActiveAccount(account);\n }\n });\n\n return pca.handleRedirectPromise();\n })\n .then((response) => {\n if (response?.account) pca.setActiveAccount(response.account);\n });\n\nexport class TanStackNavigationClient extends NavigationClient {\n constructor(private navigate: ReturnType<typeof useNavigate>) {\n super();\n }\n async navigateInternal(url: string, options: NavigationOptions) {\n const relative = url.replace(location.origin, \"\");\n this.navigate({ to: relative, replace: options.noHistory });\n return false;\n }\n}\n\ntype TokenInteractionListener = (scopes: Array<string>) => void;\n\nconst tokenInteractionListeners = new Set<TokenInteractionListener>();\n\nexport const subscribeToTokenInteractionRequired = (listener: TokenInteractionListener) => {\n tokenInteractionListeners.add(listener);\n\n return () => {\n tokenInteractionListeners.delete(listener);\n };\n};\n\nexport const getUser = createIsomorphicFn()\n .server(() => null)\n .client(async (): Promise<User | null> => {\n const account = pca.getActiveAccount();\n if (!account?.idToken) return null;\n\n return buildUser(decodeJwt(account.idToken));\n });\n\n/**\n * Token Acquisition: Get authenticated access token.\n * Use when: Making API calls from the browser to secured endpoints\n */\nexport const getAccessToken = createClientOnlyFn(async (scopeKey: keyof typeof definedScopes) => {\n const account = pca.getActiveAccount();\n if (!account) throw new Error(\"No active account. User not signed in.\");\n\n const scopes = [...definedScopes[scopeKey]];\n\n try {\n const { accessToken } = await pca.acquireTokenSilent({ scopes, account });\n return accessToken;\n } catch (error) {\n if (error instanceof InteractionRequiredAuthError) {\n tokenInteractionListeners.forEach((listener) => listener(scopes));\n }\n\n throw error;\n }\n});\n","import type { AnyFieldApi } from \"@tanstack/react-form\";\nimport { permissions } from \"virtual:wcz-layout\";\nimport { clientEnv } from \"~/env\";\nimport type { TokenPayload } from \"~/models/TokenPayload\";\nimport type { User } from \"~/models/User\";\nimport { getUser } from \"./auth/msalClient\";\n\nexport const WISTRON_PRIMARY_COLOR = \"#00506E\";\nexport const WISTRON_SECONDARY_COLOR = \"#64DC00\";\n\nexport class Platform {\n static get isAndroid() {\n return /android/i.test(this.userAgent);\n }\n static get isIOS() {\n return /iPad|iPhone|iPod/.test(this.userAgent);\n }\n static get isWindows() {\n return /windows/i.test(this.userAgent);\n }\n static get isMacOS() {\n return /Macintosh|MacIntel|MacPPC|Mac68K/.test(this.userAgent);\n }\n\n private static get userAgent() {\n return typeof navigator === \"undefined\" ? \"\" : navigator.userAgent;\n }\n}\n\ninterface RootRouteHeadOptions {\n manifest?: string;\n}\n\nexport const rootRouteHead = (options?: RootRouteHeadOptions) => ({\n meta: [\n { charSet: \"utf-8\" },\n { name: \"viewport\", content: \"width=device-width, initial-scale=1\" },\n { title: clientEnv.VITE_APP_TITLE },\n { name: \"og:type\", content: \"website\" },\n { name: \"og:title\", content: clientEnv.VITE_APP_TITLE },\n { name: \"og:image\", content: \"/favicon-32x32.png\" },\n ],\n links: [\n { rel: \"apple-touch-icon\", sizes: \"180x180\", href: \"/apple-touch-icon.png\" },\n { rel: \"icon\", type: \"image/png\", sizes: \"32x32\", href: \"/favicon-32x32.png\" },\n { rel: \"icon\", type: \"image/png\", sizes: \"16x16\", href: \"/favicon-16x16.png\" },\n { rel: \"manifest\", href: options?.manifest || \"/manifest.json\" },\n { rel: \"icon\", href: \"/favicon.ico\" },\n ],\n});\n\nexport const requirePermission = (permissionKey: keyof typeof permissions) => {\n return async () => {\n const user = await getUser();\n\n if (!user?.hasPermission(permissionKey))\n throw new Error(\"You do not have permission to access this page.\");\n\n return { user };\n };\n};\n\n/* Internal Utils */\nexport type FormOmittedProps =\n | \"name\"\n | \"value\"\n | \"onChange\"\n | \"onBlur\"\n | \"error\"\n | \"helperText\"\n | \"renderInput\"\n | \"type\"\n | \"aria-label\";\n\nexport const getFieldStatus = (field: AnyFieldApi) => {\n const { meta } = field.state;\n\n const isTouched = meta.isTouched;\n const hasError = !!meta.errors.length;\n const helperText = meta.errors[0]?.message;\n\n return { isTouched, hasError, helperText };\n};\n\nexport const toKebabCase = (str: string): string => {\n return str\n .replaceAll(/([a-z])([A-Z])/g, \"$1-$2\")\n .replaceAll(/[\\s_]+/g, \"-\")\n .replaceAll(/[^a-zA-Z0-9-]/g, \"\")\n .toLowerCase()\n .replaceAll(/-+/g, \"-\")\n .replaceAll(/(^-|-$)/g, \"\");\n};\n\nexport const decodeJwt = (token: string) => {\n const base64Payload = token.split(\".\")[1];\n const base64 = base64Payload.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const payload = decodeURIComponent(\n atob(base64)\n .split(\"\")\n .map((c) => \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2))\n .join(\"\"),\n );\n return JSON.parse(payload) as TokenPayload;\n};\n\nexport const buildUser = (payload: TokenPayload): User => ({\n id: payload.sub,\n name: payload.name?.split(\"/\")[0],\n email: payload.preferred_username?.toLowerCase(),\n department: payload.department?.toUpperCase() || \"\",\n employeeId: payload.employeeId?.toUpperCase() || \"\",\n companyName: payload.companyName || \"\",\n hasPermission: (key: keyof typeof permissions) => {\n const allowedGroups = permissions[key];\n return allowedGroups.some((k) => (payload.groups ?? []).includes(k));\n },\n});\n"],"mappings":"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"}
|