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.
@@ -1,4 +1,4 @@
1
- import { c as toKebabCase, m as clientEnv, u as getAccessToken } from "./utils-Dz7akq1k.js";
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-e7HNiutf.js.map
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":";;;;;;;;;;;;AAkBA,MAAMgB,cAAY;AAClB,MAAMC,aAAWJ,YAAYH,UAAUQ,eAAe;AAEtD,MAAaC,QAAMjB,MAAMkB,OAAO,EAC9BC,SAAS,oCACV,CAAC;AAEFF,MAAIG,aAAaC,QAAQC,IAAI,OAAOC,WAAW;CAC7C,MAAMC,cAAc,MAAMf,eAAe,QAAQ;AACjDc,QAAOE,QAAQC,IAAI,iBAAiB,UAAUF,cAAc;AAC5D,QAAOD;EACP;AAE+BtB,IAAE2B,OAAO;CACxCC,SAAS5B,IAAE6B,QAAQ,CAACC,IAAI,EAAE,CAACC,IAAI,IAAI,CAACC,QAAQlB,WAAS,CAACmB,UAAU;CAChEC,QAAQvB,eAAesB,UAAU;CACjCE,oBAAoBnC,IAAE6B,QAAQ,CAACC,IAAI,EAAE,CAACC,IAAI,GAAG,CAACE,UAAU;CACxDG,YAAYxB,mBAAmBqB,UAAS;CACzC,CAAC;AAIF,MAAaM,kBAAkB;CAC7BC,YAAYC,WAAgC;EAC1C,MAAMC,cAAc,IAAIC,iBAAiB;AACzCD,cAAYE,OAAO,mBAAmBH,QAAQb,WAAWd,WAAS;AAClE,MAAI2B,QAAQP,OAAQQ,aAAYE,OAAO,UAAUH,OAAOP,OAAOW,UAAU,CAAC;AAC1E,MAAIJ,QAAQN,mBACVO,aAAYE,OAAO,sBAAsBH,OAAON,mBAAmB;AACrE,MAAIM,QAAQL,WAAYM,aAAYE,OAAO,cAAcH,OAAOL,WAAWS,UAAU,CAAC;AAEtF,SAAO/C,aAAa;GAClBgD,UAAU,CAACjC,aAAW4B,OAAO;GAC7BM,UAAU,EAAEC,aACVhC,MACGI,QAAyB;IACxB8B,KAAK,IAAIrC,YAAS,qBAAsB6B,YAAYG,UAAU;IAC9DM,QAAQ;IACRH;IACD,CAAC,CACDI,MAAMhC,YAAYA,QAAQiC,KAAI;GACpC,CAAC;;CAEJC,WAAWC,OACTzD,aAAa;EACXgD,UAAU,CAACjC,aAAW0C,GAAG;EACzBR,UAAU,EAAEC,aACVhC,MACGI,QAAkB;GACjB8B,KAAK,IAAIrC,YAAS,YAAa0C;GAC/BJ,QAAQ;GACRH;GACD,CAAC,CACDI,MAAMhC,YAAYA,QAAQiC,KAAI;EACpC,CAAC;CACJpC,cACEpB,gBAAiD;EAC/C4D,aAAaJ,SACXrC,MACGI,QAAkB;GACjB8B,KAAK,IAAIrC,YAAS;GAClBsC,QAAQ;GACRE;GACD,CAAC,CACDD,MAAMhC,YAAYA,QAAQiC,KAAK;EACpCK,iBAAiBjD,YAAYkD,kBAAkB;GAAEb,UAAU,CAACjC,YAAU;GAAE+C,OAAO;GAAO,CAAA;EACvF,CAAC;CACJC,eACEhE,gBAAkD;EAChD4D,aAAaJ,SACXrC,MACGI,QAAkB;GACjB8B,KAAK,IAAIrC,YAAS,YAAawC,KAAKE,GAAE;GACtCJ,QAAQ;GACRE;GACD,CAAC,CACDD,MAAMhC,YAAYA,QAAQiC,KAAK;EACpCK,iBAAiBjD,YAAYkD,kBAAkB;GAAEb,UAAU,CAACjC,YAAU;GAAE+C,OAAO;GAAO,CAAA;EACvF,CAAC;CACJE,gBACEjE,gBAAmD;EACjD4D,aAAaJ,SACXrC,MACGI,QAAkB;GACjB8B,KAAK,IAAIrC,YAAS,YAAawC,KAAKE,GAAE;GACtCJ,QAAQ;GACRE;GACD,CAAC,CACDD,MAAMhC,YAAYA,QAAQiC,KAAK;EACpCK,iBAAiBjD,YAAYkD,kBAAkB;GAAEb,UAAU,CAACjC,YAAU;GAAE+C,OAAO;GAAO,CAAA;EACvF,CAAC;CACJG,gBACElE,gBAA+C;EAC7C4D,aAAaJ,SACXrC,MACGI,QAAc;GACb8B,KAAK,IAAIrC,YAAS,YAAawC,KAAKE,GAAE;GACtCJ,QAAQ;GACRE;GACD,CAAC,CACDD,MAAMhC,YAAYA,QAAQiC,KAAK;EACpCK,iBAAiBjD,YAAYkD,kBAAkB;GAAEb,UAAU,CAACjC,YAAU;GAAE+C,OAAO;GAAO,CAAA;EACvF,CAAC;CACJI,cACEnE,gBAA6C;EAC3C4D,aAAaJ,SACXrC,MACGI,QAAc;GACb8B,KAAK,IAAIrC,YAAS,YAAawC,KAAKE,GAAE;GACtCJ,QAAQ;GACRE;GACD,CAAC,CACDD,MAAMhC,YAAYA,QAAQiC,KAAK;EACpCK,iBAAiBjD,YAAYkD,kBAAkB;GAAEb,UAAU,CAACjC,YAAU;GAAE+C,OAAO;GAAO,CAAA;EACvF,CAAA;CACJ;;;ACtHD,MAAMqB,cAAY;AAClB,MAAMC,OAAO,MAAO,KAAK;AACzB,MAAMC,WAAWJ,YAAYH,UAAUQ,eAAe;AACtD,MAAMC,eAAe;AAErB,MAAaC,QAAMnB,MAAMoB,OAAO,EAC9BC,SAAS,oCACV,CAAC;AAEFF,MAAIG,aAAaC,QAAQC,IAAI,OAAOC,WAAW;CAC7C,MAAMC,cAAc,MAAMhB,eAAe,QAAQ;AACjDe,QAAOE,QAAQC,IAAI,iBAAiB,UAAUF,cAAc;AAC5D,QAAOD;EACP;AAEsCnB,IAAEwB,OAAO;CAC/CC,SAASzB,IAAE0B,QAAQ,CAACC,IAAI,EAAE,CAACC,IAAI,IAAI,CAACC,QAAQnB,SAAS,CAACoB,UAAU;CAChEC,OAAO/B,IAAEgC,MAAK;CACf,CAAC;AAI0ChC,IAAEwB,OAAO;CACnDC,SAASzB,IAAE0B,QAAQ,CAACC,IAAI,EAAE,CAACC,IAAI,IAAI,CAACC,QAAQnB,SAAS,CAACoB,UAAU;CAChEM,MAAM7B,eAAe8B,SAAQ;CAC9B,CAAC;AAIiCrC,IAAEwB,OAAO;CAC1CC,SAASzB,IAAE0B,QAAQ,CAACC,IAAI,EAAE,CAACC,IAAI,IAAI,CAACC,QAAQnB,SAAS,CAACoB,UAAU;CAChEM,MAAM7B,eAAe8B,SAAQ;CAC9B,CAAC;AAIF,MAAaI,cAAc;CACzBC,QAAQC,WAA+B;EACrC,MAAMC,cAAc,IAAIC,iBAAiB;AACzCD,cAAYE,OAAO,WAAWH,OAAOlB,WAAWf,SAAS;AACzDkC,cAAYE,OAAO,SAASH,OAAOZ,MAAM;AAEzC,SAAOtC,aAAa;GAClBsD,UAAU;IAACvC;IAAW;IAAQmC,OAAOlB,WAAWf;IAAUiC,OAAOZ;IAAM;GACvEiB,UAAU,EAAEC,aACVpC,MACGI,QAAyB;IACxBkC,KAAK,IAAI3C,YAAS,WAAYoC,YAAYQ,UAAU;IACpDC,QAAQ;IACRJ;IACD,CAAC,CACDK,MAAMrC,YAAYA,QAAQsC,KAAK;GACpCC,WAAW/C;GACXgD,QAAQhD;GACRiD,sBAAsB;GACvB,CAAC;;CAEJC,YAAYhB,WAAmC;EAC7C,MAAMC,cAAc,IAAIC,iBAAiB;AACzCD,cAAYE,OAAO,WAAWH,OAAOlB,WAAWf,SAAS;AACzDkC,cAAYE,OAAO,MAAMH,OAAOP,MAAMwB,MAAM,GAAG;AAE/C,SAAOnE,aAAa;GAClBsD,UAAU;IAACvC;IAAW;IAAamC,OAAOlB,WAAWf;IAAUiC,OAAOP,MAAMwB;IAAG;GAC/EZ,UAAU,EAAEC,aACVpC,MACGI,QAAc;IACbkC,KAAK,IAAI3C,YAAS,gBAAiBoC,YAAYQ,UAAU;IACzDC,QAAQ;IACRJ;IACAa,cAAc;IACf,CAAC,CACDR,MAAMrC,YAAYA,QAAQsC,KAAK;GACpCQ,SAASR,SAASS,IAAIC,gBAAgBV,KAAK;GAC3CC,WAAW/C;GACXgD,QAAQhD;GACRiD,sBAAsB;GACvB,CAAC;;CAEJQ,SAASvB,WAA0B;EACjC,MAAMC,cAAc,IAAIC,iBAAiB;AACzCD,cAAYE,OAAO,WAAWH,OAAOlB,WAAWf,SAAS;AACzDkC,cAAYE,OAAO,MAAMH,OAAOP,MAAMwB,MAAM,GAAG;AAE/C,SAAOnE,aAAa;GAClBsD,UAAU;IAACvC;IAAWmC,OAAOlB,WAAWf;IAAUiC,OAAOP,MAAMwB;IAAG;GAClEZ,UAAU,EAAEC,aACVpC,MACGI,QAAc;IACbkC,KAAK,IAAI3C,YAAS,MAAOoC,YAAYQ,UAAU;IAC/CC,QAAQ;IACRJ;IACAa,cAAc;IACf,CAAC,CACDR,MAAMrC,YAAYA,QAAQsC,KAAK;GACpCQ,SAASR,SAASS,IAAIC,gBAAgBV,KAAK;GAC3CC,WAAW/C;GACXgD,QAAQhD;GACRiD,sBAAsB;GACvB,CAAC;;CAEJS,gBACE3E,gBAAuC;EACrC6E,aAAajC,SACXvB,MACGI,QAAc;GACbkC,KAAK,IAAI3C,YAAS,uBAAwBE,SAAQ,MAAO0B,KAAKwB;GAC9DP,QAAQ;GACRS,cAAc;GACf,CAAC,CACDR,MAAMrC,YAAYA,QAAQsC,KAAK;EACpCe,YAAYf,MAAMgB,cAChB5E,OAAO4D,MAAM,GAAGgB,UAAUC,SAAQ,GAAID,UAAUE,gBAAe;EAClE,CAAC;CACJC,YACElF,gBAAuC;EACrC6E,aAAajC,SACXvB,MACGI,QAAc;GACbkC,KAAK,IAAI3C,YAAS,cAAeE,SAAQ,MAAO0B,KAAKwB;GACrDP,QAAQ;GACRS,cAAc;GACf,CAAC,CACDR,MAAMrC,YAAYA,QAAQsC,KAAK;EACpCe,YAAYf,SAAS;AACnBoB,UAAOD,KAAKV,IAAIC,gBAAgBV,KAAK,CAAC;;EAEzC,CAAC;CACJqB,kBACEpF,gBAA2C;EACzC6E,aAAajC,SACXvB,MACGI,QAAkB;GACjBkC,KAAK,IAAI3C,YAAS,mBAAoBE,SAAQ,MAAO0B,KAAKwB;GAC1DP,QAAQ;GACRE,MAAMnB;GACP,CAAC,CACDkB,MAAMrC,YAAYA,QAAQsC,KAAK;EACpCsB,iBACExE,YAAYyE,kBAAkB;GAAE/B,UAAU,CAACvC,aAAW,OAAO;GAAEuE,OAAO;GAAO,CAAA;EAChF,CAAC;CACJC,cACExF,gBAA2C;EACzC6E,aAAajC,SACXvB,MACGI,QAAkB;GACjBkC,KAAK,IAAI3C,YAAS,cAAeE,SAAQ,MAAO0B,KAAKwB;GACrDP,QAAQ;GACT,CAAC,CACDC,MAAMrC,YAAYA,QAAQsC,KAAK;EACpCsB,iBACExE,YAAYyE,kBAAkB;GAAE/B,UAAU,CAACvC,aAAW,OAAO;GAAEuE,OAAO;GAAO,CAAA;EAChF,CAAC;CACJE,mBACEzF,gBAAuC;EACrC6E,aAAatC,UACXlB,MACGI,QAAgB;GACfkC,KAAK,IAAI3C,YAAS,cAAeE,SAAQ,SAAUqB;GACnDsB,QAAQ;GACT,CAAC,CACDC,MAAMrC,YAAYA,QAAQsC,KAAK;EACpCsB,iBACExE,YAAYyE,kBAAkB;GAAE/B,UAAU,CAACvC,aAAW,OAAO;GAAEuE,OAAO;GAAO,CAAA;EAChF,CAAA;CACJ;AAUD,MAAaQ,iBAAgBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;AAAA,KAAAD,EAAA,OAAA,oEAAA;AAAA,OAAA,IAAAE,KAAA,GAAAA,KAAA,GAAAA,MAAA,EAAAF,GAAAE,MAAAC,OAAAC,IAAA,4BAAA;AAAAJ,IAAA,KAAA;;CAAC,MAAA,EAAA1D,OAAAuC,WAAAe,YAAAG;CAC5B,MAAA,CAAAM,UAAAC,eAAgCnG,SAAiB,EAAE;CAAC,IAAAoG;AAAA,KAAAP,EAAA,OAAAJ,WAAAI,EAAA,OAAAnB,aAAAmB,EAAA,OAAA1D,OAAA;AAErCiE,OAAA,OAAAC,SAAA;AACb,OAAI,CAAClE,MAAO,OAAM,IAAIqC,MAAM,oCAAoC;GAEhE,MAAA8B,WAA0E;IAAAtC,IACpE7D,QAAQ;IAAA0B,SACHf;IAAQqB;IAAAyC,UAEPyB,KAAIE;IACf;GAED,MAAA/E,cAAoB,MAAMhB,eAAe,QAAQ;GAEjD,MAAAgG,SAAe,IAAItG,OAAUmG,MAAM;IAAAI,UACvB,GAAGzF,aAAY,GAAIJ,YAAS;IAAY8F,WACvC;IAASJ,UACV;KAAAtC,IACJsC,SAAQtC;KAAGnC,SACNyE,SAAQzE;KAAQM,OAClBmE,SAAQnE;KAAMyC,UACX0B,SAAQ1B;KAASC,eACZwB,KAAIM;KACpB;IAAAlF,SACQ,EAAAmF,eAAiB,UAAUpF,eAAe;IAAAiE,UAC1CC,UAAA;AACPS,iBAAY,EAAE;AACdV,eAAUC,MAAM;;IACjBmB,aACWC,eAAAC,eAAA;AACVZ,iBAAaW,gBAAgBC,aAAc,IAAI;;IAChDrC,iBACU;AACTyB,iBAAY,EAAE;AACd1F,iBAAWyE,kBAAmB;MAAA/B,UAAY;OAACvC;OAAW;OAAQuB;OAAM;MAAAgD,OAAS;MAAO,CAAC;AACrFT,iBAAY4B,SAAS;;IAExB,CAAC;GAEF,MAAAU,kBAAwB,MAAMR,OAAMS,qBAAsB;AAC1D,OAAID,gBAAeE,SAAU,EAC3BV,QAAMW,yBAA0BH,gBAAe,GAAI;AAGrDR,UAAMY,OAAQ;;AACfvB,IAAA,KAAAJ;AAAAI,IAAA,KAAAnB;AAAAmB,IAAA,KAAA1D;AAAA0D,IAAA,KAAAO;OAAAA,MAAAP,EAAA;CA3CD,MAAAwB,SAAejB;CA2Cb,IAAAkB;AAAA,KAAAzB,EAAA,OAAAwB,UAAAxB,EAAA,OAAAK,UAAA;AAEKoB,OAAA;GAAAD;GAAAnB;GAAoB;AAAAL,IAAA,KAAAwB;AAAAxB,IAAA,KAAAK;AAAAL,IAAA,KAAAyB;OAAAA,MAAAzB,EAAA;AAAA,QAApByB;;;;ACxOT,MAAMM,YAAY;AAClB,MAAMC,MAAM,MAAO,KAAK,KAAK;AAE7B,MAAaC,MAAMN,MAAMO,OAAO,EAC9BC,SAAS,oCACV,CAAC;AAEFF,IAAIG,aAAaC,QAAQC,IAAI,OAAOC,WAAW;CAC7C,MAAMC,cAAc,MAAMV,eAAe,QAAQ;AACjDS,QAAOE,QAAQC,IAAI,iBAAiB,UAAUF,cAAc;AAC5D,QAAOD;EACP;;;ACbF,MAAasC,QAAQ;CACnBC,YDgB+B;EAC/BjC,kBAAkBC,eAChBpB,aAAa;GACXqB,UAAU;IAAChB;IAAW;IAAY;IAAUe;IAAW;GACvDE,UAAU,EAAEC,aACVhB,IACGI,QAAyB;IACxBc,KAAK,IAAIpB,UAAS,sBAAuBe;IACzCM,QAAQ;IACRH;IACD,CAAC,CACDI,MAAMhB,YAAYA,QAAQiB,KAAK;GACpCC,WAAWvB;GACXwB,QAAQxB;GACRyB,sBAAsB;GACvB,CAAC;EACJC,iBACEhC,aAAa;GACXqB,UAAU,CAAChB,WAAW,WAAW;GACjCiB,UAAU,EAAEC,aACVhB,IACGI,QAAyB;IACxBc,KAAK,IAAIpB,UAAS;IAClBqB,QAAQ;IACRH;IACD,CAAC,CACDI,MAAMhB,YAAYA,QAAQiB,KAAK;GACpCC,WAAWvB;GACXwB,QAAQxB;GACRyB,sBAAsB;GACvB,CAAC;EACJE,uBACEjC,aAAa;GACXqB,UAAU;IAAChB;IAAW;IAAY;IAAS;GAC3CiB,UAAU,EAAEC,aACVhB,IACGI,QAAyB;IACxBc,KAAK,IAAIpB,UAAS;IAClBqB,QAAQ;IACRH;IACD,CAAC,CACDI,MAAMhB,YAAYA,QAAQiB,KAAK;GACpCC,WAAWvB;GACXwB,QAAQxB;GACRyB,sBAAsB;GACvB,CAAC;EACJG,eAAeC,eACbnC,aAAa;GACXqB,UAAU;IAAChB;IAAW;IAAY8B;IAAW;GAC7Cb,UAAU,EAAEC,aACVhB,IACGI,QAAkB;IACjBc,KAAK,IAAIpB,UAAS,eAAgB8B;IAClCT,QAAQ;IACRH;IACD,CAAC,CACDI,MAAMhB,YAAYA,QAAQiB,KAAK;GACpCC,WAAWvB;GACXwB,QAAQxB;GACRyB,sBAAsB;GACvB,CAAC;EACJK,2BACEpC,aAAa;GACXqB,UAAU;IAAChB;IAAW;IAAY;IAAc;GAChDiB,UAAU,EAAEC,aACVhB,IACGI,QAAyB;IACxBc,KAAK,IAAIpB,UAAS;IAClBqB,QAAQ;IACRH;IACD,CAAC,CACDI,MAAMhB,YAAYA,QAAQiB,KAAK;GACpCC,WAAWvB;GACXwB,QAAQxB;GACRyB,sBAAsB;GACvB,CAAC;EACJM,qBAAqBF,eACnBnC,aAAa;GACXqB,UAAU;IAAChB;IAAW;IAAY8B;IAAY;IAAa;GAC3Db,UAAU,EAAEC,aACVhB,IACGI,QAAkB;IACjBc,KAAK,IAAIpB,UAAS,eAAgB8B,WAAU;IAC5CT,QAAQ;IACRH;IACD,CAAC,CACDI,MAAMhB,YAAYA,QAAQiB,KAAK;GACpCC,WAAWvB;GACXwB,QAAQxB;GACRyB,sBAAsB;GACvB,CAAC;EACJO,uBAAuBH,eACrBnC,aAAa;GACXqB,UAAU;IAAChB;IAAW;IAAY8B;IAAY;IAAe;GAC7Db,UAAU,EAAEC,aACVhB,IACGI,QAAyB;IACxBc,KAAK,IAAIpB,UAAS,eAAgB8B,WAAU;IAC5CT,QAAQ;IACRH;IACD,CAAC,CACDI,MAAMhB,YAAYA,QAAQiB,KAAK;GACpCC,WAAWvB;GACXwB,QAAQxB;GACRyB,sBAAsB;GACvB,CAAC;EACJQ,kBAAkBJ,eAChBnC,aAAa;GACXqB,UAAU;IAAChB;IAAW;IAAY8B;IAAY;IAAU;GACxDb,UAAU,EAAEC,aACVhB,IACGI,QAAkB;IACjBc,KAAK,IAAIpB,UAAS,eAAgB8B,WAAU;IAC5CT,QAAQ;IACRH;IACD,CAAC,CACDI,MAAMhB,YAAYA,QAAQiB,KAAK;GACpCC,WAAWvB;GACXwB,QAAQxB;GACRyB,sBAAsB;GACvB,CAAC;EACJS,yBAAyBL,eACvBnC,aAAa;GACXqB,UAAU;IAAChB;IAAW;IAAY8B;IAAY;IAAiB;GAC/Db,UAAU,EAAEC,aACVhB,IACGI,QAAkB;IACjBc,KAAK,IAAIpB,UAAS,eAAgB8B,WAAU;IAC5CT,QAAQ;IACRH;IACD,CAAC,CACDI,MAAMhB,YAAYA,QAAQiB,KAAK;GACpCC,WAAWvB;GACXwB,QAAQxB;GACRyB,sBAAsB;GACvB,CAAC;EACJU,mBACEzC,aAAa;GACXqB,UAAU,CAAChB,WAAW,aAAa;GACnCiB,UAAU,EAAEC,aACVhB,IACGI,QAA2B;IAC1Bc,KAAK,IAAIpB,UAAS;IAClBqB,QAAQ;IACRH;IACD,CAAC,CACDI,MAAMhB,YAAYA,QAAQiB,KAAK;GACpCC,WAAWvB;GACXwB,QAAQxB;GACRyB,sBAAsB;GACvB,CAAC;EACJW,iBAAiBC,iBACf3C,aAAa;GACXqB,UAAU;IAAChB;IAAW;IAAcsC;IAAa;GACjDrB,UAAU,EAAEC,aACVhB,IACGI,QAAoB;IACnBc,KAAK,IAAIpB,UAAS,iBAAkBsC;IACpCjB,QAAQ;IACRH;IACD,CAAC,CACDI,MAAMhB,YAAYA,QAAQiB,KAAK;GACpCC,WAAWvB;GACXwB,QAAQxB;GACRyB,sBAAsB;GACvB,CAAC;EACJa,oBAAoBD,iBAClB3C,aAAa;GACXqB,UAAU;IAAChB;IAAW;IAAcsC;IAAc;IAAU;GAC5DrB,UAAU,EAAEC,aACVhB,IACGI,QAAkB;IACjBc,KAAK,IAAIpB,UAAS,iBAAkBsC,aAAY;IAChDjB,QAAQ;IACRH;IACD,CAAC,CACDI,MAAMhB,YAAYA,QAAQiB,KAAK;GACpCC,WAAWvB;GACXwB,QAAQxB;GACRyB,sBAAsB;GACvB,CAAC;EACJc,sBAAsBF,iBACpB3C,aAAa;GACXqB,UAAU;IAAChB;IAAW;IAAcsC;IAAc;IAAY;GAC9DrB,UAAU,EAAEC,aACVhB,IACGI,QAAyB;IACxBc,KAAK,IAAIpB,UAAS,iBAAkBsC,aAAY;IAChDjB,QAAQ;IACRH;IACD,CAAC,CACDI,MAAMhB,YAAYA,QAAQiB,KAAK;GACpCC,WAAWvB;GACXwB,QAAQxB;GACRyB,sBAAsB;GACvB,CAAC;EACJe,wBAAwBC,gBACtB/C,aAAa;GACXqB,UAAU;IAAChB;IAAW;IAAW0C;IAAa;IAAiB;GAC/DzB,UAAU,EAAEC,aACVhB,IACGI,QAAkB;IACjBc,KAAK,IAAIpB,UAAS,cAAe0C,YAAW;IAC5CrB,QAAQ;IACRH;IACD,CAAC,CACDI,MAAMhB,YAAYA,QAAQiB,KAAK;GACpCC,WAAWvB;GACXwB,QAAQxB;GACRyB,sBAAsB;GACvB,CAAA;EACJ;CClOCsB,UAAUL;CACVM,MAAML;CACP"}
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,3 +1,3 @@
1
1
  import { t as queryClient } from "./queryClient-CAJR3qjE.js";
2
- import { n as useUploadFile, t as query } from "./queries-e7HNiutf.js";
2
+ import { n as useUploadFile, t as query } from "./queries-JPqCc5Tb.js";
3
3
  export { query, queryClient, useUploadFile };
@@ -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({ auth: {
30
- clientId: clientEnv.VITE_ENTRA_CLIENT_ID,
31
- authority: `https://login.microsoftonline.com/${clientEnv.VITE_ENTRA_TENANT_ID}`,
32
- redirectUri: "/"
33
- } });
34
- pca.initialize().then(() => {
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 account = event.payload.account;
38
- pca.setActiveAccount(account);
47
+ const payload = event.payload;
48
+ pca.setActiveAccount(payload.account);
39
49
  }
40
50
  });
41
- return pca.handleRedirectPromise();
42
- }).then((response) => {
43
- if (response?.account) pca.setActiveAccount(response.account);
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) tokenInteractionListeners.forEach((listener) => listener(scopes$1));
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, serverEnv as h, buildUser as i, TanStackNavigationClient as l, clientEnv as m, WISTRON_PRIMARY_COLOR as n, requirePermission as o, subscribeToTokenInteractionRequired as p, WISTRON_SECONDARY_COLOR as r, rootRouteHead as s, Platform as t, getAccessToken as u };
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-Dz7akq1k.js.map
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-d7_QeRNu.js";
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 { h as serverEnv, o as requirePermission, t as Platform, u as getAccessToken } from "./utils-Dz7akq1k.js";
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.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.6.3",
86
- "@azure/msal-node": "^5.1.2",
87
- "@azure/msal-react": "^5.2.1",
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.3",
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.2",
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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"}