wcz-test 6.24.1 → 6.24.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/ApprovalStatus-BtAVFn5p.js +8 -0
- package/dist/ApprovalStatus-BtAVFn5p.js.map +1 -0
- package/dist/{node_modules/react/cjs/react-jsx-runtime.development.js → DialogsContext-BKtkEAfL.js} +48 -4
- package/dist/DialogsContext-BKtkEAfL.js.map +1 -0
- package/dist/{hooks/DialogsHooks.js → DialogsHooks-BQVpqCq9.js} +4 -7
- package/dist/DialogsHooks-BQVpqCq9.js.map +1 -0
- package/dist/FileHooks-Cg9ver7z.js +3478 -0
- package/dist/FileHooks-Cg9ver7z.js.map +1 -0
- package/dist/{models/file/FileMeta.js → FileMeta-G1oT3mYK.js} +2 -2
- package/dist/FileMeta-G1oT3mYK.js.map +1 -0
- package/dist/{components/router/RouterListItemButton.js → RouterListItemButton-IUVgwnz3.js} +4 -4
- package/dist/RouterListItemButton-IUVgwnz3.js.map +1 -0
- package/dist/client.js +4 -4
- package/dist/compiler-runtime-BGHur82y.js +46 -0
- package/dist/compiler-runtime-BGHur82y.js.map +1 -0
- package/dist/components.js +1486 -15
- package/dist/components.js.map +1 -1
- package/dist/{env.js → env-gsqZ6zZD.js} +3 -3
- package/dist/env-gsqZ6zZD.js.map +1 -0
- package/dist/exports/client.d.ts +17 -4
- package/dist/exports/components.d.ts +44 -14
- package/dist/exports/hooks.d.ts +23 -4
- package/dist/exports/index.d.ts +17 -4
- package/dist/exports/models.d.ts +107 -25
- package/dist/exports/queries.d.ts +95 -4
- package/dist/exports/server.d.ts +14 -4
- package/dist/exports/utils.d.ts +11 -3
- package/dist/exports/vite.d.ts +5 -1
- package/dist/hooks.js +1000 -3
- package/dist/hooks.js.map +1 -1
- package/dist/index.js +1752 -4
- package/dist/index.js.map +1 -1
- package/dist/models.js +159 -10
- package/dist/models.js.map +1 -1
- package/dist/queries.js +935 -14
- package/dist/queries.js.map +1 -1
- package/dist/{lib/queryClient.js → queryClient-CNvC95mU.js} +2 -2
- package/dist/queryClient-CNvC95mU.js.map +1 -0
- package/dist/server.js +84 -1
- package/dist/server.js.map +1 -1
- package/dist/{lib/auth/session.js → session-vW7WZadj.js} +23 -8
- package/dist/session-vW7WZadj.js.map +1 -0
- package/dist/{lib/utils.js → utils-MD9YwOtu.js} +9 -9
- package/dist/utils-MD9YwOtu.js.map +1 -0
- package/dist/utils.js +2 -2
- package/dist/vite.js +61 -1
- package/dist/vite.js.map +1 -1
- package/package.json +1 -1
- package/dist/_virtual/compiler-runtime.js +0 -6
- package/dist/_virtual/compiler-runtime.js.map +0 -1
- package/dist/_virtual/compiler-runtime2.js +0 -5
- package/dist/_virtual/compiler-runtime2.js.map +0 -1
- package/dist/_virtual/jsx-runtime.js +0 -6
- package/dist/_virtual/jsx-runtime.js.map +0 -1
- package/dist/_virtual/jsx-runtime2.js +0 -5
- package/dist/_virtual/jsx-runtime2.js.map +0 -1
- package/dist/_virtual/react-compiler-runtime.development.js +0 -5
- package/dist/_virtual/react-compiler-runtime.development.js.map +0 -1
- package/dist/_virtual/react-compiler-runtime.production.js +0 -5
- package/dist/_virtual/react-compiler-runtime.production.js.map +0 -1
- package/dist/_virtual/react-jsx-runtime.development.js +0 -5
- package/dist/_virtual/react-jsx-runtime.development.js.map +0 -1
- package/dist/_virtual/react-jsx-runtime.production.js +0 -5
- package/dist/_virtual/react-jsx-runtime.production.js.map +0 -1
- package/dist/components/core/AppTitle.d.ts +0 -2
- package/dist/components/core/AppTitle.js +0 -23
- package/dist/components/core/AppTitle.js.map +0 -1
- package/dist/components/core/Fullscreen.d.ts +0 -3
- package/dist/components/core/Fullscreen.js +0 -104
- package/dist/components/core/Fullscreen.js.map +0 -1
- package/dist/components/core/Layout.d.ts +0 -8
- package/dist/components/core/Layout.js +0 -214
- package/dist/components/core/Layout.js.map +0 -1
- package/dist/components/core/ToolbarAccount.d.ts +0 -2
- package/dist/components/core/ToolbarAccount.js +0 -582
- package/dist/components/core/ToolbarAccount.js.map +0 -1
- package/dist/components/core/TypographyWithIcon.d.ts +0 -7
- package/dist/components/core/TypographyWithIcon.js +0 -117
- package/dist/components/core/TypographyWithIcon.js.map +0 -1
- package/dist/components/core/navigation/NavigationList.d.ts +0 -22
- package/dist/components/core/navigation/NavigationList.js +0 -166
- package/dist/components/core/navigation/NavigationList.js.map +0 -1
- package/dist/components/core/navigation/NavigationListItem.d.ts +0 -16
- package/dist/components/core/navigation/NavigationListItem.js +0 -467
- package/dist/components/core/navigation/NavigationListItem.js.map +0 -1
- package/dist/components/core/navigation/NavigationRail.d.ts +0 -12
- package/dist/components/core/navigation/NavigationRail.js +0 -141
- package/dist/components/core/navigation/NavigationRail.js.map +0 -1
- package/dist/components/data-grid/ChipInputCell.d.ts +0 -9
- package/dist/components/data-grid/ChipInputCell.js +0 -95
- package/dist/components/data-grid/ChipInputCell.js.map +0 -1
- package/dist/components/data-grid/EditableColumnHeader.d.ts +0 -2
- package/dist/components/data-grid/EditableColumnHeader.js +0 -30
- package/dist/components/data-grid/EditableColumnHeader.js.map +0 -1
- package/dist/components/file/Dropzone.d.ts +0 -8
- package/dist/components/file/Dropzone.js +0 -151
- package/dist/components/file/Dropzone.js.map +0 -1
- package/dist/components/file/FileViewer.d.ts +0 -20
- package/dist/components/file/FileViewer.js +0 -127
- package/dist/components/file/FileViewer.js.map +0 -1
- package/dist/components/file/fileViewer/FileViewerGrid.d.ts +0 -17
- package/dist/components/file/fileViewer/FileViewerGrid.js +0 -282
- package/dist/components/file/fileViewer/FileViewerGrid.js.map +0 -1
- package/dist/components/file/fileViewer/FileViewerList.d.ts +0 -12
- package/dist/components/file/fileViewer/FileViewerList.js +0 -191
- package/dist/components/file/fileViewer/FileViewerList.js.map +0 -1
- package/dist/components/file/fileViewer/ImageViewer.d.ts +0 -6
- package/dist/components/file/fileViewer/ImageViewer.js +0 -75
- package/dist/components/file/fileViewer/ImageViewer.js.map +0 -1
- package/dist/components/file/fileViewer/common/ActionsMenu.d.ts +0 -15
- package/dist/components/file/fileViewer/common/ActionsMenu.js +0 -159
- package/dist/components/file/fileViewer/common/ActionsMenu.js.map +0 -1
- package/dist/components/form/FormAutocomplete.d.ts +0 -7
- package/dist/components/form/FormAutocomplete.js +0 -80
- package/dist/components/form/FormAutocomplete.js.map +0 -1
- package/dist/components/form/FormCheckbox.d.ts +0 -7
- package/dist/components/form/FormCheckbox.js +0 -81
- package/dist/components/form/FormCheckbox.js.map +0 -1
- package/dist/components/form/FormDatePicker.d.ts +0 -8
- package/dist/components/form/FormDatePicker.js +0 -77
- package/dist/components/form/FormDatePicker.js.map +0 -1
- package/dist/components/form/FormDateRangePicker.d.ts +0 -8
- package/dist/components/form/FormDateRangePicker.js +0 -77
- package/dist/components/form/FormDateRangePicker.js.map +0 -1
- package/dist/components/form/FormDateTimePicker.d.ts +0 -8
- package/dist/components/form/FormDateTimePicker.js +0 -77
- package/dist/components/form/FormDateTimePicker.js.map +0 -1
- package/dist/components/form/FormDateTimeRangePicker.d.ts +0 -8
- package/dist/components/form/FormDateTimeRangePicker.js +0 -77
- package/dist/components/form/FormDateTimeRangePicker.js.map +0 -1
- package/dist/components/form/FormNumberField.d.ts +0 -9
- package/dist/components/form/FormNumberField.js +0 -73
- package/dist/components/form/FormNumberField.js.map +0 -1
- package/dist/components/form/FormRadioGroup.d.ts +0 -13
- package/dist/components/form/FormRadioGroup.js +0 -113
- package/dist/components/form/FormRadioGroup.js.map +0 -1
- package/dist/components/form/FormSlider.d.ts +0 -7
- package/dist/components/form/FormSlider.js +0 -94
- package/dist/components/form/FormSlider.js.map +0 -1
- package/dist/components/form/FormSubmitButton.d.ts +0 -4
- package/dist/components/form/FormSubmitButton.js +0 -50
- package/dist/components/form/FormSubmitButton.js.map +0 -1
- package/dist/components/form/FormSwitch.d.ts +0 -7
- package/dist/components/form/FormSwitch.js +0 -81
- package/dist/components/form/FormSwitch.js.map +0 -1
- package/dist/components/form/FormTextField.d.ts +0 -7
- package/dist/components/form/FormTextField.js +0 -52
- package/dist/components/form/FormTextField.js.map +0 -1
- package/dist/components/form/FormTimePicker.d.ts +0 -8
- package/dist/components/form/FormTimePicker.js +0 -77
- package/dist/components/form/FormTimePicker.js.map +0 -1
- package/dist/components/form/FormTimeRangePicker.d.ts +0 -8
- package/dist/components/form/FormTimeRangePicker.js +0 -77
- package/dist/components/form/FormTimeRangePicker.js.map +0 -1
- package/dist/components/router/RouterButton.d.ts +0 -6
- package/dist/components/router/RouterButton.js +0 -35
- package/dist/components/router/RouterButton.js.map +0 -1
- package/dist/components/router/RouterError.d.ts +0 -7
- package/dist/components/router/RouterError.js +0 -62
- package/dist/components/router/RouterError.js.map +0 -1
- package/dist/components/router/RouterGridActionsCellItem.d.ts +0 -6
- package/dist/components/router/RouterGridActionsCellItem.js +0 -35
- package/dist/components/router/RouterGridActionsCellItem.js.map +0 -1
- package/dist/components/router/RouterIconButton.d.ts +0 -6
- package/dist/components/router/RouterIconButton.js +0 -35
- package/dist/components/router/RouterIconButton.js.map +0 -1
- package/dist/components/router/RouterLink.d.ts +0 -6
- package/dist/components/router/RouterLink.js +0 -35
- package/dist/components/router/RouterLink.js.map +0 -1
- package/dist/components/router/RouterListItemButton.d.ts +0 -6
- package/dist/components/router/RouterListItemButton.js.map +0 -1
- package/dist/components/router/RouterNotFound.d.ts +0 -1
- package/dist/components/router/RouterNotFound.js +0 -53
- package/dist/components/router/RouterNotFound.js.map +0 -1
- package/dist/components/router/RouterTab.d.ts +0 -6
- package/dist/components/router/RouterTab.js +0 -35
- package/dist/components/router/RouterTab.js.map +0 -1
- package/dist/contexts/DialogsContext.d.ts +0 -6
- package/dist/contexts/DialogsContext.js +0 -6
- package/dist/contexts/DialogsContext.js.map +0 -1
- package/dist/contexts/FileContext.d.ts +0 -13
- package/dist/contexts/FileContext.js +0 -14
- package/dist/contexts/FileContext.js.map +0 -1
- package/dist/env.d.ts +0 -13
- package/dist/env.js.map +0 -1
- package/dist/hooks/DialogsHooks.d.ts +0 -42
- package/dist/hooks/DialogsHooks.js.map +0 -1
- package/dist/hooks/FormHooks.d.ts +0 -52
- package/dist/hooks/FormHooks.js +0 -55
- package/dist/hooks/FormHooks.js.map +0 -1
- package/dist/lib/auth/api.d.ts +0 -3
- package/dist/lib/auth/api.js +0 -91
- package/dist/lib/auth/api.js.map +0 -1
- package/dist/lib/auth/entra.d.ts +0 -2
- package/dist/lib/auth/entra.js +0 -7
- package/dist/lib/auth/entra.js.map +0 -1
- package/dist/lib/auth/graph.d.ts +0 -17
- package/dist/lib/auth/graph.js +0 -72
- package/dist/lib/auth/graph.js.map +0 -1
- package/dist/lib/auth/session.d.ts +0 -24
- package/dist/lib/auth/session.js.map +0 -1
- package/dist/lib/queryClient.d.ts +0 -2
- package/dist/lib/queryClient.js.map +0 -1
- package/dist/lib/utils.d.ts +0 -52
- package/dist/lib/utils.js.map +0 -1
- package/dist/lib/vite-plugin.d.ts +0 -2
- package/dist/lib/vite-plugin.js +0 -65
- package/dist/lib/vite-plugin.js.map +0 -1
- package/dist/middleware/auth.d.ts +0 -22
- package/dist/models/Navigation.d.ts +0 -18
- package/dist/models/User.d.ts +0 -16
- package/dist/models/User.js +0 -18
- package/dist/models/User.js.map +0 -1
- package/dist/models/approval/Approval.d.ts +0 -177
- package/dist/models/approval/Approval.js +0 -81
- package/dist/models/approval/Approval.js.map +0 -1
- package/dist/models/approval/ApprovalEmployee.d.ts +0 -7
- package/dist/models/approval/ApprovalEmployee.js +0 -10
- package/dist/models/approval/ApprovalEmployee.js.map +0 -1
- package/dist/models/approval/ApprovalFlow.d.ts +0 -49
- package/dist/models/approval/ApprovalFlow.js +0 -15
- package/dist/models/approval/ApprovalFlow.js.map +0 -1
- package/dist/models/approval/ApprovalFlowStep.d.ts +0 -29
- package/dist/models/approval/ApprovalFlowStep.js +0 -17
- package/dist/models/approval/ApprovalFlowStep.js.map +0 -1
- package/dist/models/approval/ApprovalRequestType.d.ts +0 -5
- package/dist/models/approval/ApprovalRequestType.js +0 -6
- package/dist/models/approval/ApprovalRequestType.js.map +0 -1
- package/dist/models/approval/ApprovalStatus.d.ts +0 -9
- package/dist/models/approval/ApprovalStatus.js +0 -6
- package/dist/models/approval/ApprovalStatus.js.map +0 -1
- package/dist/models/approval/ApprovalStepResult.d.ts +0 -11
- package/dist/models/approval/ApprovalStepResult.js +0 -6
- package/dist/models/approval/ApprovalStepResult.js.map +0 -1
- package/dist/models/approval/StepApprovalOrder.d.ts +0 -6
- package/dist/models/approval/StepApprovalOrder.js +0 -6
- package/dist/models/approval/StepApprovalOrder.js.map +0 -1
- package/dist/models/email/Email.d.ts +0 -13
- package/dist/models/email/Email.js +0 -14
- package/dist/models/email/Email.js.map +0 -1
- package/dist/models/email/EmailAttachment.d.ts +0 -6
- package/dist/models/email/EmailAttachment.js +0 -9
- package/dist/models/email/EmailAttachment.js.map +0 -1
- package/dist/models/file/FileActions.d.ts +0 -6
- package/dist/models/file/FileMeta.d.ts +0 -15
- package/dist/models/file/FileMeta.js.map +0 -1
- package/dist/models/peoplesoft/Department.d.ts +0 -58
- package/dist/models/peoplesoft/Department.js +0 -19
- package/dist/models/peoplesoft/Department.js.map +0 -1
- package/dist/models/peoplesoft/Employee.d.ts +0 -46
- package/dist/models/peoplesoft/Employee.js +0 -43
- package/dist/models/peoplesoft/Employee.js.map +0 -1
- package/dist/models/peoplesoft/EmployeeCategoryGroup.d.ts +0 -6
- package/dist/models/peoplesoft/EmployeeCategoryGroup.js +0 -6
- package/dist/models/peoplesoft/EmployeeCategoryGroup.js.map +0 -1
- package/dist/models/peoplesoft/EmployeeStatus.d.ts +0 -6
- package/dist/models/peoplesoft/EmployeeStatus.js +0 -6
- package/dist/models/peoplesoft/EmployeeStatus.js.map +0 -1
- package/dist/node_modules/react/cjs/react-compiler-runtime.development.js +0 -22
- package/dist/node_modules/react/cjs/react-compiler-runtime.development.js.map +0 -1
- package/dist/node_modules/react/cjs/react-compiler-runtime.production.js +0 -16
- package/dist/node_modules/react/cjs/react-compiler-runtime.production.js.map +0 -1
- package/dist/node_modules/react/cjs/react-jsx-runtime.development.js.map +0 -1
- package/dist/node_modules/react/cjs/react-jsx-runtime.production.js +0 -33
- package/dist/node_modules/react/cjs/react-jsx-runtime.production.js.map +0 -1
- package/dist/node_modules/react/compiler-runtime.js +0 -18
- package/dist/node_modules/react/compiler-runtime.js.map +0 -1
- package/dist/node_modules/react/jsx-runtime.js +0 -18
- package/dist/node_modules/react/jsx-runtime.js.map +0 -1
- package/dist/providers/DialogsProvider.d.ts +0 -5
- package/dist/providers/DialogsProvider.js +0 -79
- package/dist/providers/DialogsProvider.js.map +0 -1
- package/dist/providers/LayoutProvider.d.ts +0 -11
- package/dist/providers/LayoutProvider.js +0 -94
- package/dist/providers/LayoutProvider.js.map +0 -1
- package/dist/queries/ApprovalHooks.d.ts +0 -338
- package/dist/queries/ApprovalHooks.js +0 -326
- package/dist/queries/ApprovalHooks.js.map +0 -1
- package/dist/queries/FileHooks.d.ts +0 -151
- package/dist/queries/FileHooks.js +0 -493
- package/dist/queries/FileHooks.js.map +0 -1
- package/dist/queries/PeopleSoftHooks.d.ts +0 -537
- package/dist/queries/PeopleSoftHooks.js +0 -628
- package/dist/queries/PeopleSoftHooks.js.map +0 -1
package/dist/queries.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
1
|
+
{"version":3,"file":"queries.js","sources":["../src/queries/PeopleSoftHooks.ts","../src/queries/ApprovalHooks.ts"],"sourcesContent":["import { useQuery } from \"@tanstack/react-query\";\r\nimport type { DefinedInitialDataOptions } from \"@tanstack/react-query\";\r\nimport type { Department } from \"~/models/peoplesoft/Department\";\r\nimport type { Employee } from \"~/models/peoplesoft/Employee\";\r\nimport { httpClient } from \"~/lib/utils\";\r\n\r\nconst QUERY_KEY = \"ps\";\r\nconst DAY = 1000 * 60 * 60 * 24;\r\n\r\ntype OptionalId = string | undefined | null;\r\n\r\ntype BaseEmployeeArrayQueryOptions = Omit<DefinedInitialDataOptions<Array<Employee>>, \"queryKey\" | \"queryFn\" | \"staleTime\" | \"gcTime\" | \"refetchOnWindowFocus\" | \"initialData\">;\r\ntype BaseEmployeeQueryOptions = Omit<DefinedInitialDataOptions<Employee>, \"queryKey\" | \"queryFn\" | \"staleTime\" | \"gcTime\" | \"refetchOnWindowFocus\" | \"initialData\">;\r\ntype BaseDepartmentArrayQueryOptions = Omit<DefinedInitialDataOptions<Array<Department>>, \"queryKey\" | \"queryFn\" | \"staleTime\" | \"gcTime\" | \"refetchOnWindowFocus\" | \"initialData\">;\r\ntype BaseDepartmentQueryOptions = Omit<DefinedInitialDataOptions<Department>, \"queryKey\" | \"queryFn\" | \"staleTime\" | \"gcTime\" | \"refetchOnWindowFocus\" | \"initialData\">;\r\n\r\nexport const useGetPeopleSoftEmployeesSearch = (searchTerm: string, options?: BaseEmployeeArrayQueryOptions) => {\r\n return useQuery<Array<Employee>>({\r\n ...options,\r\n queryKey: [QUERY_KEY, \"employee\", \"search\", searchTerm],\r\n queryFn: ({ signal }) => httpClient.request<Array<Employee>>({\r\n url: `/${QUERY_KEY}/v1/employee?search=${searchTerm}`,\r\n method: \"GET\",\r\n signal,\r\n }).then(request => request.data),\r\n staleTime: DAY,\r\n gcTime: DAY,\r\n refetchOnWindowFocus: false,\r\n });\r\n};\r\n\r\nexport const useGetPeopleSoftEmployees = (options?: BaseEmployeeArrayQueryOptions) => {\r\n return useQuery<Array<Employee>>({\r\n ...options,\r\n queryKey: [QUERY_KEY, \"employee\"],\r\n queryFn: ({ signal }) => httpClient.request<Array<Employee>>({\r\n url: `/${QUERY_KEY}/v1/employee/all`,\r\n method: \"GET\",\r\n signal,\r\n }).then(request => request.data),\r\n staleTime: DAY,\r\n gcTime: DAY,\r\n refetchOnWindowFocus: false,\r\n });\r\n};\r\n\r\nexport const useGetPeopleSoftActiveEmployees = (options?: BaseEmployeeArrayQueryOptions) => {\r\n return useQuery<Array<Employee>>({\r\n ...options,\r\n queryKey: [QUERY_KEY, \"employee\", \"active\"],\r\n queryFn: ({ signal }) => httpClient.request<Array<Employee>>({\r\n url: `/${QUERY_KEY}/v1/employee/active`,\r\n method: \"GET\",\r\n signal,\r\n }).then(request => request.data),\r\n staleTime: DAY,\r\n gcTime: DAY,\r\n refetchOnWindowFocus: false,\r\n });\r\n};\r\n\r\nexport const useGetPeopleSoftEmployeeById = (employeeId: OptionalId, options?: BaseEmployeeQueryOptions) => {\r\n return useQuery<Employee>({\r\n ...options,\r\n queryKey: [QUERY_KEY, \"employee\", employeeId],\r\n queryFn: ({ signal }) => httpClient.request<Employee>({\r\n url: `/${QUERY_KEY}/v1/employee/${employeeId}`,\r\n method: \"GET\",\r\n signal,\r\n }).then(request => request.data),\r\n staleTime: DAY,\r\n gcTime: DAY,\r\n refetchOnWindowFocus: false,\r\n });\r\n};\r\n\r\nexport const useGetPeopleSoftPreviousEmployeeIds = (options?: BaseEmployeeArrayQueryOptions) => {\r\n return useQuery<Array<Employee>>({\r\n ...options,\r\n queryKey: [QUERY_KEY, \"employee\", \"previousIds\"],\r\n queryFn: ({ signal }) => httpClient.request<Array<Employee>>({\r\n url: `/${QUERY_KEY}/v1/employee/previousIds`,\r\n method: \"GET\",\r\n signal,\r\n }).then(request => request.data),\r\n staleTime: DAY,\r\n gcTime: DAY,\r\n refetchOnWindowFocus: false,\r\n });\r\n};\r\n\r\nexport const useGetPeopleSoftEmployeeSupervisor = (employeeId: OptionalId, options?: BaseEmployeeQueryOptions) => {\r\n return useQuery<Employee>({\r\n ...options,\r\n queryKey: [QUERY_KEY, \"employee\", employeeId, \"supervisor\"],\r\n queryFn: ({ signal }) => httpClient.request<Employee>({\r\n url: `/${QUERY_KEY}/v1/employee/${employeeId}/supervisor`,\r\n method: \"GET\",\r\n signal,\r\n }).then(request => request.data),\r\n staleTime: DAY,\r\n gcTime: DAY,\r\n refetchOnWindowFocus: false,\r\n });\r\n};\r\n\r\nexport const useGetPeopleSoftEmployeeSubordinates = (employeeId: OptionalId, options?: BaseEmployeeArrayQueryOptions) => {\r\n return useQuery<Array<Employee>>({\r\n ...options,\r\n queryKey: [QUERY_KEY, \"employee\", employeeId, \"subordinates\"],\r\n queryFn: ({ signal }) => httpClient.request<Array<Employee>>({\r\n url: `/${QUERY_KEY}/v1/employee/${employeeId}/subordinates`,\r\n method: \"GET\",\r\n signal,\r\n }).then(request => request.data),\r\n staleTime: DAY,\r\n gcTime: DAY,\r\n refetchOnWindowFocus: false,\r\n });\r\n};\r\n\r\nexport const useGetPeopleSoftEmployeeManager = (employeeId: OptionalId, options?: BaseEmployeeQueryOptions) => {\r\n return useQuery<Employee>({\r\n ...options,\r\n queryKey: [QUERY_KEY, \"employee\", employeeId, \"manager\"],\r\n queryFn: ({ signal }) => httpClient.request<Employee>({\r\n url: `/${QUERY_KEY}/v1/employee/${employeeId}/manager`,\r\n method: \"GET\",\r\n signal,\r\n }).then(request => request.data),\r\n staleTime: DAY,\r\n gcTime: DAY,\r\n refetchOnWindowFocus: false,\r\n });\r\n};\r\n\r\nexport const useGetPeopleSoftEmployeeGeneralManager = (employeeId: OptionalId, options?: BaseEmployeeQueryOptions) => {\r\n return useQuery<Employee>({\r\n ...options,\r\n queryKey: [QUERY_KEY, \"employee\", employeeId, \"generalManager\"],\r\n queryFn: ({ signal }) => httpClient.request<Employee>({\r\n url: `/${QUERY_KEY}/v1/employee/${employeeId}/generalManager`,\r\n method: \"GET\",\r\n signal,\r\n }).then(request => request.data),\r\n staleTime: DAY,\r\n gcTime: DAY,\r\n refetchOnWindowFocus: false,\r\n });\r\n};\r\n\r\nexport const useGetPeopleSoftDepartments = (options?: BaseDepartmentArrayQueryOptions) => {\r\n return useQuery<Array<Department>>({\r\n ...options,\r\n queryKey: [QUERY_KEY, \"department\"],\r\n queryFn: ({ signal }) => httpClient.request<Array<Department>>({\r\n url: `/${QUERY_KEY}/v1/department/all`,\r\n method: \"GET\",\r\n signal,\r\n }).then(request => request.data),\r\n staleTime: DAY,\r\n gcTime: DAY,\r\n refetchOnWindowFocus: false,\r\n });\r\n};\r\n\r\nexport const useGetPeopleSoftDepartmentById = (departmentId: OptionalId, options?: BaseDepartmentQueryOptions) => {\r\n return useQuery<Department>({\r\n ...options,\r\n queryKey: [QUERY_KEY, \"department\", departmentId],\r\n queryFn: ({ signal }) => httpClient.request<Department>({\r\n url: `/${QUERY_KEY}/v1/department/${departmentId}`,\r\n method: \"GET\",\r\n signal,\r\n }).then(request => request.data),\r\n staleTime: DAY,\r\n gcTime: DAY,\r\n refetchOnWindowFocus: false,\r\n });\r\n};\r\n\r\nexport const useGetPeopleSoftDepartmentManager = (departmentId: OptionalId, options?: BaseEmployeeQueryOptions) => {\r\n return useQuery<Employee>({\r\n ...options,\r\n queryKey: [QUERY_KEY, \"department\", departmentId, \"manager\"],\r\n queryFn: ({ signal }) => httpClient.request<Employee>({\r\n url: `/${QUERY_KEY}/v1/department/${departmentId}/manager`,\r\n method: \"GET\",\r\n signal,\r\n }).then(request => request.data),\r\n staleTime: DAY,\r\n gcTime: DAY,\r\n refetchOnWindowFocus: false,\r\n });\r\n};\r\n\r\nexport const useGetPeopleSoftDepartmentEmployees = (departmentId: OptionalId, options?: BaseEmployeeArrayQueryOptions) => {\r\n return useQuery<Array<Employee>>({\r\n ...options,\r\n queryKey: [QUERY_KEY, \"department\", departmentId, \"employees\"],\r\n queryFn: ({ signal }) => httpClient.request<Array<Employee>>({\r\n url: `/${QUERY_KEY}/v1/department/${departmentId}/employees`,\r\n method: \"GET\",\r\n signal,\r\n }).then(request => request.data),\r\n staleTime: DAY,\r\n gcTime: DAY,\r\n refetchOnWindowFocus: false,\r\n });\r\n};\r\n\r\nexport const useGetPeopleSoftCompanyGeneralManager = (companyCode: OptionalId, options?: BaseEmployeeQueryOptions) => {\r\n return useQuery<Employee>({\r\n ...options,\r\n queryKey: [QUERY_KEY, \"company\", companyCode, \"generalManager\"],\r\n queryFn: ({ signal }) => httpClient.request<Employee>({\r\n url: `/${QUERY_KEY}/v1/company/${companyCode}/generalManager`,\r\n method: \"GET\",\r\n signal,\r\n }).then(request => request.data),\r\n staleTime: DAY,\r\n gcTime: DAY,\r\n refetchOnWindowFocus: false,\r\n });\r\n};\r\n","import { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport z from \"zod\";\nimport type { DefinedInitialDataOptions, UseMutationOptions } from \"@tanstack/react-query\";\nimport type { Approval, ApproveApproval, CancelApproval, CreateApproval, ResubmitApproval, WithdrawApproval } from \"~/models/approval/Approval\";\nimport { clientEnv } from \"~/env\";\nimport { httpClient, toKebabCase } from \"~/lib/utils\";\nimport { ApprovalStatus } from \"~/models/approval/ApprovalStatus\";\nimport { ApprovalStepResult } from \"~/models/approval/ApprovalStepResult\";\n\nconst ROUTE = \"approval\";\nconst APP_NAME = toKebabCase(clientEnv.VITE_APP_TITLE);\n\ntype UseGetApprovalsOptions = Omit<DefinedInitialDataOptions<Array<Approval>>, \"queryKey\" | \"queryFn\" | \"initialData\">;\ntype UseGetApprovalOptions = Omit<DefinedInitialDataOptions<Approval>, \"queryKey\" | \"queryFn\" | \"initialData\">;\ntype UseCreateApprovalOptions = Omit<UseMutationOptions<Approval, Error, CreateApproval>, \"mutationFn\" | \"onSettled\">;\ntype UseApproveApprovalOptions = Omit<UseMutationOptions<Approval, Error, ApproveApproval>, \"mutationFn\" | \"onSettled\">;\ntype UseResubmitApprovalOptions = Omit<UseMutationOptions<Approval, Error, ResubmitApproval>, \"mutationFn\" | \"onSettled\">;\ntype UseWithdrawApprovalOptions = Omit<UseMutationOptions<void, Error, WithdrawApproval>, \"mutationFn\" | \"onSettled\">;\ntype UseCancelApprovalOptions = Omit<UseMutationOptions<void, Error, CancelApproval>, \"mutationFn\" | \"onSettled\">;\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 useGetApprovals = (params?: GetApprovalsParams, options?: UseGetApprovalsOptions) => {\n const queryParams = new URLSearchParams();\n\n queryParams.append(\"applicationName\", params?.appName ?? APP_NAME);\n if (params?.status) queryParams.append(\"status\", params.status.toString());\n if (params?.approverEmployeeId) queryParams.append(\"approverEmployeeId\", params.approverEmployeeId);\n if (params?.stepResult) queryParams.append(\"stepResult\", params.stepResult.toString());\n\n return useQuery<Array<Approval>>({\n ...options,\n queryKey: [ROUTE, params],\n queryFn: ({ signal }) => httpClient.request<Array<Approval>>({\n url: `/${ROUTE}/Requests/Requests?${queryParams.toString()}`,\n method: \"GET\",\n signal,\n }).then(request => request.data),\n });\n};\n\nexport const useGetApproval = (id: string, options?: UseGetApprovalOptions) => useQuery<Approval>({\n ...options,\n queryKey: [ROUTE, id],\n queryFn: ({ signal }) => httpClient.request<Approval>({\n url: `/${ROUTE}/Requests/${id}`,\n method: \"GET\",\n signal,\n }).then(request => request.data),\n});\n\nexport const useCreateApproval = (options?: UseCreateApprovalOptions) => {\n const queryClient = useQueryClient();\n\n return useMutation<Approval, Error, CreateApproval>({\n ...options,\n mutationFn: data => httpClient.request<Approval>({\n url: `/${ROUTE}/Requests`,\n method: \"POST\",\n data\n }).then(request => request.data),\n onSettled: () => queryClient.invalidateQueries({ queryKey: [ROUTE], exact: false })\n });\n};\n\nexport const useApproveApproval = (options?: UseApproveApprovalOptions) => {\n const queryClient = useQueryClient();\n\n return useMutation<Approval, Error, ApproveApproval>({\n ...options,\n mutationFn: data => httpClient.request<Approval>({\n url: `/${ROUTE}/Requests/${data.id}/single-approval`,\n method: \"POST\",\n data\n }).then(request => request.data),\n onSettled: () => queryClient.invalidateQueries({ queryKey: [ROUTE], exact: false })\n });\n};\n\nexport const useResubmitApproval = (options?: UseResubmitApprovalOptions) => {\n const queryClient = useQueryClient();\n\n return useMutation<Approval, Error, ResubmitApproval>({\n ...options,\n mutationFn: data => httpClient.request<Approval>({\n url: `/${ROUTE}/Requests/${data.id}/resubmit`,\n method: \"POST\",\n data\n }).then(request => request.data),\n onSettled: () => queryClient.invalidateQueries({ queryKey: [ROUTE], exact: false })\n });\n};\n\nexport const useWithdrawApproval = (options?: UseWithdrawApprovalOptions) => {\n const queryClient = useQueryClient();\n\n return useMutation<void, Error, WithdrawApproval>({\n ...options,\n mutationFn: data => httpClient.request<void>({\n url: `/${ROUTE}/Requests/${data.id}/withdraw`,\n method: \"POST\",\n data\n }).then(request => request.data),\n onSettled: () => queryClient.invalidateQueries({ queryKey: [ROUTE], exact: false })\n });\n};\n\nexport const useCancelApproval = (options?: UseCancelApprovalOptions) => {\n const queryClient = useQueryClient();\n\n return useMutation<void, Error, CancelApproval>({\n ...options,\n mutationFn: data => httpClient.request<void>({\n url: `/${ROUTE}/Requests/${data.id}/cancel`,\n method: \"POST\",\n data\n }).then(request => request.data),\n onSettled: () => queryClient.invalidateQueries({ queryKey: [ROUTE], exact: false })\n });\n};\n"],"names":["QUERY_KEY","DAY","useGetPeopleSoftEmployeesSearch","searchTerm","options","$","_c","t0","t1","t2","signal","httpClient","request","url","method","then","_temp","queryKey","queryFn","staleTime","gcTime","refetchOnWindowFocus","useQuery","useGetPeopleSoftEmployees","Symbol","for","_temp3","useGetPeopleSoftActiveEmployees","_temp5","useGetPeopleSoftEmployeeById","employeeId","_temp6","useGetPeopleSoftPreviousEmployeeIds","_temp8","useGetPeopleSoftEmployeeSupervisor","_temp9","useGetPeopleSoftEmployeeSubordinates","_temp0","useGetPeopleSoftEmployeeManager","_temp1","useGetPeopleSoftEmployeeGeneralManager","_temp10","useGetPeopleSoftDepartments","_temp12","useGetPeopleSoftDepartmentById","departmentId","_temp13","useGetPeopleSoftDepartmentManager","_temp14","useGetPeopleSoftDepartmentEmployees","_temp15","useGetPeopleSoftCompanyGeneralManager","companyCode","_temp16","data","_temp2","_temp4","_temp7","_temp11","ROUTE","APP_NAME","toKebabCase","clientEnv","VITE_APP_TITLE","z","object","appName","string","min","max","default","optional","status","ApprovalStatus","approverEmployeeId","stepResult","ApprovalStepResult","useGetApprovals","params","queryParams","URLSearchParams","append","toString","useGetApproval","id","useCreateApproval","queryClient","useQueryClient","invalidateQueries","exact","mutationFn","onSettled","useMutation","useApproveApproval","useResubmitApproval","useWithdrawApproval","useCancelApproval"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryClient-CNvC95mU.js","sources":["../src/lib/queryClient.ts"],"sourcesContent":["import { QueryClient } from \"@tanstack/react-query\";\r\n\r\nexport const queryClient = new QueryClient();\r\n"],"names":["queryClient","QueryClient"],"mappings":";AAEO,MAAMA,cAAc,IAAIC,YAAAA;"}
|
package/dist/server.js
CHANGED
|
@@ -1,5 +1,88 @@
|
|
|
1
1
|
import { Pool } from "pg";
|
|
2
|
-
import {
|
|
2
|
+
import { setCookie, getCookie, deleteCookie } from "@tanstack/react-start/server";
|
|
3
|
+
import { generateState, generateCodeVerifier, decodeIdToken } from "arctic";
|
|
4
|
+
import { s as serverEnv } from "./env-gsqZ6zZD.js";
|
|
5
|
+
import { e as entraId, s as setSessionCookie, a as setSessionAccessTokenCookie } from "./session-vW7WZadj.js";
|
|
6
|
+
const login = async (request) => {
|
|
7
|
+
const url = new URL(request.url);
|
|
8
|
+
const redirectUri = url.searchParams.get("redirect_uri") || "/";
|
|
9
|
+
const state = generateState();
|
|
10
|
+
const codeVerifier = generateCodeVerifier();
|
|
11
|
+
const scopes = ["openid", "profile", "offline_access", "User.Read"];
|
|
12
|
+
const authorizationURL = entraId.createAuthorizationURL(state, codeVerifier, scopes);
|
|
13
|
+
setCookie("entra_oauth_state", state, {
|
|
14
|
+
secure: serverEnv.NODE_ENV === "production",
|
|
15
|
+
path: "/",
|
|
16
|
+
httpOnly: true,
|
|
17
|
+
sameSite: "lax",
|
|
18
|
+
maxAge: 60 * 10
|
|
19
|
+
// 10 minutes
|
|
20
|
+
});
|
|
21
|
+
setCookie("entra_code_verifier", codeVerifier, {
|
|
22
|
+
secure: serverEnv.NODE_ENV === "production",
|
|
23
|
+
path: "/",
|
|
24
|
+
httpOnly: true,
|
|
25
|
+
sameSite: "lax",
|
|
26
|
+
maxAge: 60 * 10
|
|
27
|
+
// 10 minutes,
|
|
28
|
+
});
|
|
29
|
+
setCookie("entra_redirect_uri", redirectUri, {
|
|
30
|
+
secure: serverEnv.NODE_ENV === "production",
|
|
31
|
+
path: "/",
|
|
32
|
+
httpOnly: true,
|
|
33
|
+
sameSite: "lax",
|
|
34
|
+
maxAge: 60 * 10
|
|
35
|
+
// 10 minutes,
|
|
36
|
+
});
|
|
37
|
+
return Response.redirect(authorizationURL.href);
|
|
38
|
+
};
|
|
39
|
+
const callback = async (request) => {
|
|
40
|
+
const url = new URL(request.url);
|
|
41
|
+
const code = url.searchParams.get("code");
|
|
42
|
+
if (!code) return new Response("Missing code", {
|
|
43
|
+
status: 400
|
|
44
|
+
});
|
|
45
|
+
const state = url.searchParams.get("state");
|
|
46
|
+
const storedState = getCookie("entra_oauth_state") ?? null;
|
|
47
|
+
const codeVerifier = getCookie("entra_code_verifier") ?? null;
|
|
48
|
+
const redirectUri = getCookie("entra_redirect_uri") ?? "/";
|
|
49
|
+
if (!state || !storedState || !codeVerifier || !redirectUri) throw new Response("Missing entra oauth data in cookies", {
|
|
50
|
+
status: 400
|
|
51
|
+
});
|
|
52
|
+
if (state !== storedState) return new Response("Invalid oauth state", {
|
|
53
|
+
status: 400
|
|
54
|
+
});
|
|
55
|
+
deleteCookie("entra_oauth_state");
|
|
56
|
+
deleteCookie("entra_code_verifier");
|
|
57
|
+
deleteCookie("entra_redirect_uri");
|
|
58
|
+
const tokens = await entraId.validateAuthorizationCode(code, codeVerifier);
|
|
59
|
+
const idToken = tokens.idToken();
|
|
60
|
+
const claims = decodeIdToken(idToken);
|
|
61
|
+
await setSessionCookie({
|
|
62
|
+
refreshToken: tokens.refreshToken(),
|
|
63
|
+
user: {
|
|
64
|
+
id: claims.oid,
|
|
65
|
+
name: claims.name.split("/")[0],
|
|
66
|
+
email: claims.preferred_username
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
await setSessionAccessTokenCookie(tokens.accessToken());
|
|
70
|
+
return new Response(null, {
|
|
71
|
+
status: 302,
|
|
72
|
+
headers: {
|
|
73
|
+
Location: redirectUri
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
const logout = async (request) => {
|
|
78
|
+
const url = new URL(request.url);
|
|
79
|
+
return new Response(null, {
|
|
80
|
+
status: 302,
|
|
81
|
+
headers: {
|
|
82
|
+
Location: url.href
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
};
|
|
3
86
|
export {
|
|
4
87
|
Pool,
|
|
5
88
|
callback,
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.js","sources":["../src/lib/auth/api.ts"],"sourcesContent":["import { deleteCookie, getCookie, setCookie } from \"@tanstack/react-start/server\";\r\nimport { decodeIdToken, generateCodeVerifier, generateState } from \"arctic\";\r\nimport type jwt from \"jsonwebtoken\";\r\nimport { serverEnv } from \"~/env\";\r\nimport { entraId } from \"~/lib/auth/entra\";\r\nimport { setSessionAccessTokenCookie, setSessionCookie } from \"~/lib/auth/session\";\r\n\r\nexport const login = async (request: Request): Promise<Response> => {\r\n const url = new URL(request.url);\r\n const redirectUri = url.searchParams.get(\"redirect_uri\") || \"/\";\r\n\r\n const state = generateState();\r\n const codeVerifier = generateCodeVerifier();\r\n const scopes = [\"openid\", \"profile\", \"offline_access\", \"User.Read\"];\r\n const authorizationURL = entraId.createAuthorizationURL(state, codeVerifier, scopes);\r\n\r\n setCookie(\"entra_oauth_state\", state, {\r\n secure: serverEnv.NODE_ENV === \"production\",\r\n path: \"/\",\r\n httpOnly: true,\r\n sameSite: \"lax\",\r\n maxAge: 60 * 10 // 10 minutes\r\n });\r\n\r\n setCookie(\"entra_code_verifier\", codeVerifier, {\r\n secure: serverEnv.NODE_ENV === \"production\",\r\n path: \"/\",\r\n httpOnly: true,\r\n sameSite: \"lax\",\r\n maxAge: 60 * 10 // 10 minutes,\r\n });\r\n\r\n setCookie(\"entra_redirect_uri\", redirectUri, {\r\n secure: serverEnv.NODE_ENV === \"production\",\r\n path: \"/\",\r\n httpOnly: true,\r\n sameSite: \"lax\",\r\n maxAge: 60 * 10 // 10 minutes,\r\n });\r\n\r\n return Response.redirect(authorizationURL.href);\r\n};\r\n\r\nexport const callback = async (request: Request): Promise<Response> => {\r\n const url = new URL(request.url);\r\n const code = url.searchParams.get(\"code\");\r\n if (!code) return new Response(\"Missing code\", { status: 400 });\r\n const state = url.searchParams.get(\"state\");\r\n const storedState = getCookie(\"entra_oauth_state\") ?? null;\r\n const codeVerifier = getCookie(\"entra_code_verifier\") ?? null;\r\n const redirectUri = getCookie(\"entra_redirect_uri\") ?? \"/\";\r\n\r\n if (!state || !storedState || !codeVerifier || !redirectUri) throw new Response(\"Missing entra oauth data in cookies\", { status: 400 });\r\n if (state !== storedState) return new Response(\"Invalid oauth state\", { status: 400 });\r\n\r\n deleteCookie(\"entra_oauth_state\");\r\n deleteCookie(\"entra_code_verifier\");\r\n deleteCookie(\"entra_redirect_uri\");\r\n\r\n const tokens = await entraId.validateAuthorizationCode(code, codeVerifier);\r\n\r\n const idToken = tokens.idToken();\r\n const claims = decodeIdToken(idToken) as jwt.JwtPayload;\r\n\r\n await setSessionCookie({\r\n refreshToken: tokens.refreshToken(),\r\n user: {\r\n id: claims.oid,\r\n name: claims.name.split(\"/\")[0],\r\n email: claims.preferred_username,\r\n }\r\n });\r\n\r\n await setSessionAccessTokenCookie(tokens.accessToken());\r\n\r\n return new Response(null, {\r\n status: 302,\r\n headers: { Location: redirectUri },\r\n });\r\n};\r\n\r\nexport const logout = async (request: Request): Promise<Response> => {\r\n const url = new URL(request.url);\r\n\r\n // const { session } = await validateRequest();\r\n // if (!session) {\r\n // return new Response(null, { status: 302, headers: { Location: \"/\" } });\r\n // }\r\n // setCookie(SESSION_COOKIE_NAME, \"\", {\r\n // httpOnly: true,\r\n // sameSite: \"lax\",\r\n // secure: serverEnv.NODE_ENV === \"production\",\r\n // maxAge: 0,\r\n // path: \"/\",\r\n // });\r\n\r\n return new Response(null, { status: 302, headers: { Location: url.href } });\r\n};\r\n"],"names":["login","request","url","URL","redirectUri","searchParams","get","state","generateState","codeVerifier","generateCodeVerifier","scopes","authorizationURL","entraId","createAuthorizationURL","setCookie","secure","serverEnv","NODE_ENV","path","httpOnly","sameSite","maxAge","Response","redirect","href","callback","code","status","storedState","getCookie","deleteCookie","tokens","validateAuthorizationCode","idToken","claims","decodeIdToken","setSessionCookie","refreshToken","user","id","oid","name","split","email","preferred_username","setSessionAccessTokenCookie","accessToken","headers","Location","logout"],"mappings":";;;;;AAOO,MAAMA,QAAQ,OAAOC,YAAwC;AAChE,QAAMC,MAAM,IAAIC,IAAIF,QAAQC,GAAG;AAC/B,QAAME,cAAcF,IAAIG,aAAaC,IAAI,cAAc,KAAK;AAE5D,QAAMC,QAAQC,cAAAA;AACd,QAAMC,eAAeC,qBAAAA;AACrB,QAAMC,SAAS,CAAC,UAAU,WAAW,kBAAkB,WAAW;AAClE,QAAMC,mBAAmBC,QAAQC,uBAAuBP,OAAOE,cAAcE,MAAM;AAEnFI,YAAU,qBAAqBR,OAAO;AAAA,IAClCS,QAAQC,UAAUC,aAAa;AAAA,IAC/BC,MAAM;AAAA,IACNC,UAAU;AAAA,IACVC,UAAU;AAAA,IACVC,QAAQ,KAAK;AAAA;AAAA,EAAA,CAChB;AAEDP,YAAU,uBAAuBN,cAAc;AAAA,IAC3CO,QAAQC,UAAUC,aAAa;AAAA,IAC/BC,MAAM;AAAA,IACNC,UAAU;AAAA,IACVC,UAAU;AAAA,IACVC,QAAQ,KAAK;AAAA;AAAA,EAAA,CAChB;AAEDP,YAAU,sBAAsBX,aAAa;AAAA,IACzCY,QAAQC,UAAUC,aAAa;AAAA,IAC/BC,MAAM;AAAA,IACNC,UAAU;AAAA,IACVC,UAAU;AAAA,IACVC,QAAQ,KAAK;AAAA;AAAA,EAAA,CAChB;AAED,SAAOC,SAASC,SAASZ,iBAAiBa,IAAI;AAClD;AAEO,MAAMC,WAAW,OAAOzB,YAAwC;AACnE,QAAMC,MAAM,IAAIC,IAAIF,QAAQC,GAAG;AAC/B,QAAMyB,OAAOzB,IAAIG,aAAaC,IAAI,MAAM;AACxC,MAAI,CAACqB,KAAM,QAAO,IAAIJ,SAAS,gBAAgB;AAAA,IAAEK,QAAQ;AAAA,EAAA,CAAK;AAC9D,QAAMrB,QAAQL,IAAIG,aAAaC,IAAI,OAAO;AAC1C,QAAMuB,cAAcC,UAAU,mBAAmB,KAAK;AACtD,QAAMrB,eAAeqB,UAAU,qBAAqB,KAAK;AACzD,QAAM1B,cAAc0B,UAAU,oBAAoB,KAAK;AAEvD,MAAI,CAACvB,SAAS,CAACsB,eAAe,CAACpB,gBAAgB,CAACL,YAAa,OAAM,IAAImB,SAAS,uCAAuC;AAAA,IAAEK,QAAQ;AAAA,EAAA,CAAK;AACtI,MAAIrB,UAAUsB,YAAa,QAAO,IAAIN,SAAS,uBAAuB;AAAA,IAAEK,QAAQ;AAAA,EAAA,CAAK;AAErFG,eAAa,mBAAmB;AAChCA,eAAa,qBAAqB;AAClCA,eAAa,oBAAoB;AAEjC,QAAMC,SAAS,MAAMnB,QAAQoB,0BAA0BN,MAAMlB,YAAY;AAEzE,QAAMyB,UAAUF,OAAOE,QAAAA;AACvB,QAAMC,SAASC,cAAcF,OAAO;AAEpC,QAAMG,iBAAiB;AAAA,IACnBC,cAAcN,OAAOM,aAAAA;AAAAA,IACrBC,MAAM;AAAA,MACFC,IAAIL,OAAOM;AAAAA,MACXC,MAAMP,OAAOO,KAAKC,MAAM,GAAG,EAAE,CAAC;AAAA,MAC9BC,OAAOT,OAAOU;AAAAA,IAAAA;AAAAA,EAClB,CACH;AAED,QAAMC,4BAA4Bd,OAAOe,aAAa;AAEtD,SAAO,IAAIxB,SAAS,MAAM;AAAA,IACtBK,QAAQ;AAAA,IACRoB,SAAS;AAAA,MAAEC,UAAU7C;AAAAA,IAAAA;AAAAA,EAAY,CACpC;AACL;AAEO,MAAM8C,SAAS,OAAOjD,YAAwC;AACjE,QAAMC,MAAM,IAAIC,IAAIF,QAAQC,GAAG;AAc/B,SAAO,IAAIqB,SAAS,MAAM;AAAA,IAAEK,QAAQ;AAAA,IAAKoB,SAAS;AAAA,MAAEC,UAAU/C,IAAIuB;AAAAA,IAAAA;AAAAA,EAAK,CAAG;AAC9E;"}
|
|
@@ -1,11 +1,25 @@
|
|
|
1
1
|
import { redirect } from "@tanstack/react-router";
|
|
2
2
|
import { getCookie, deleteCookie, setCookie } from "@tanstack/react-start/server";
|
|
3
3
|
import jwt from "jsonwebtoken";
|
|
4
|
+
import * as z from "zod";
|
|
4
5
|
import z__default from "zod";
|
|
5
6
|
import "jwks-rsa";
|
|
6
|
-
import {
|
|
7
|
-
import { serverEnv } from "
|
|
8
|
-
|
|
7
|
+
import { MicrosoftEntraId } from "arctic";
|
|
8
|
+
import { s as serverEnv } from "./env-gsqZ6zZD.js";
|
|
9
|
+
const entraId = new MicrosoftEntraId(serverEnv.MICROSOFT_TENANT_ID, serverEnv.MICROSOFT_CLIENT_ID, serverEnv.MICROSOFT_CLIENT_SECRET, serverEnv.MICROSOFT_REDIRECT_URI);
|
|
10
|
+
const UserSchema = z.object({
|
|
11
|
+
id: z.string(),
|
|
12
|
+
name: z.string(),
|
|
13
|
+
email: z.email(),
|
|
14
|
+
groups: z.array(z.string())
|
|
15
|
+
});
|
|
16
|
+
z.object({
|
|
17
|
+
id: z.string(),
|
|
18
|
+
displayName: z.string(),
|
|
19
|
+
jobTitle: z.string(),
|
|
20
|
+
mail: z.email(),
|
|
21
|
+
mobilePhone: z.string()
|
|
22
|
+
});
|
|
9
23
|
const SESSION_COOKIE_NAME = "session";
|
|
10
24
|
const ACCESS_TOKEN_COOKIE_NAME = "access_token";
|
|
11
25
|
const AFTER_LOGIN_URL = "/";
|
|
@@ -68,9 +82,10 @@ const setSessionAccessTokenCookie = async (accessToken) => {
|
|
|
68
82
|
});
|
|
69
83
|
};
|
|
70
84
|
export {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
85
|
+
setSessionAccessTokenCookie as a,
|
|
86
|
+
entraId as e,
|
|
87
|
+
getAccessToken as g,
|
|
88
|
+
requireSession as r,
|
|
89
|
+
setSessionCookie as s
|
|
75
90
|
};
|
|
76
|
-
//# sourceMappingURL=session.js.map
|
|
91
|
+
//# sourceMappingURL=session-vW7WZadj.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-vW7WZadj.js","sources":["../src/lib/auth/entra.ts","../src/models/User.ts","../src/lib/auth/session.ts"],"sourcesContent":["import { MicrosoftEntraId } from \"arctic\";\r\nimport { serverEnv } from \"~/env\";\r\n\r\nexport const entraId = new MicrosoftEntraId(\r\n serverEnv.MICROSOFT_TENANT_ID,\r\n serverEnv.MICROSOFT_CLIENT_ID,\r\n serverEnv.MICROSOFT_CLIENT_SECRET,\r\n serverEnv.MICROSOFT_REDIRECT_URI,\r\n);\r\n","import * as z from \"zod\";\r\n\r\nexport const UserSchema = z.object({\r\n id: z.string(),\r\n name: z.string(),\r\n email: z.email(),\r\n groups: z.array(z.string()),\r\n});\r\n\r\nexport type User = z.infer<typeof UserSchema>;\r\n\r\nexport const GraphUserSchema = z.object({\r\n id: z.string(),\r\n displayName: z.string(),\r\n jobTitle: z.string(),\r\n mail: z.email(),\r\n mobilePhone: z.string(),\r\n});\r\n\r\nexport type GraphUser = z.infer<typeof GraphUserSchema>;\r\n","import { redirect } from \"@tanstack/react-router\";\r\nimport { deleteCookie, getCookie, setCookie } from \"@tanstack/react-start/server\";\r\nimport jwt from \"jsonwebtoken\";\r\nimport z from \"zod\";\r\nimport jwksRsa from \"jwks-rsa\";\r\nimport { entraId } from \"./entra\";\r\nimport { serverEnv } from \"~/env\";\r\nimport { UserSchema } from \"~/models/User\";\r\n\r\nconst SESSION_COOKIE_NAME = \"session\";\r\nconst ACCESS_TOKEN_COOKIE_NAME = \"access_token\";\r\nconst AFTER_LOGIN_URL = \"/\";\r\n\r\nconst SessionSchema = z.object({\r\n refreshToken: z.string(),\r\n user: UserSchema.omit({ groups: true }),\r\n});\r\n\r\ntype Session = z.infer<typeof SessionSchema>;\r\n\r\nexport const requireSession = async (redirectUri?: string) => {\r\n const sessionCookie = getCookie(SESSION_COOKIE_NAME);\r\n if (!sessionCookie) {\r\n throw redirect({ href: `/api/auth/login?redirect_uri=${encodeURIComponent(redirectUri ?? AFTER_LOGIN_URL)}` });\r\n }\r\n\r\n const payloadRaw = jwt.verify(sessionCookie, serverEnv.SESSION_SECRET);\r\n const sessionResult = SessionSchema.safeParse(payloadRaw);\r\n if (!sessionResult.success) {\r\n deleteCookie(SESSION_COOKIE_NAME);\r\n throw redirect({ href: `/api/auth/login?redirect_uri=${encodeURIComponent(redirectUri ?? AFTER_LOGIN_URL)}` });\r\n }\r\n\r\n return sessionResult.data;\r\n};\r\n\r\nexport const getAccessToken = async () => {\r\n const accessTokenCookie = getCookie(ACCESS_TOKEN_COOKIE_NAME);\r\n if (accessTokenCookie) return accessTokenCookie;\r\n\r\n const session = await requireSession();\r\n\r\n const tokens = await entraId.refreshAccessToken(session.refreshToken, []);\r\n\r\n await setSessionCookie({\r\n ...session,\r\n refreshToken: tokens.refreshToken()\r\n });\r\n\r\n await setSessionAccessTokenCookie(tokens.accessToken());\r\n\r\n return tokens.accessToken();\r\n};\r\n\r\nexport const validateAccessToken = async (token: string): Promise<jwt.JwtPayload> => {\r\n const client = jwksRsa({\r\n cache: true,\r\n rateLimit: true,\r\n jwksRequestsPerMinute: 5,\r\n jwksUri: \"https://login.microsoftonline.com/common/discovery/v2.0/keys\",\r\n });\r\n\r\n const decodedHeader = jwt.decode(token, { complete: true });\r\n if (!decodedHeader?.header.kid) throw new Error(\"Invalid token: Missing kid\");\r\n\r\n const key = await client.getSigningKey(decodedHeader.header.kid);\r\n const signingKey = key.getPublicKey();\r\n\r\n const payload = jwt.verify(token, signingKey) as jwt.JwtPayload;\r\n\r\n if (typeof payload.iss !== \"string\" || !payload.iss.startsWith(\"https://login.microsoftonline.com/\"))\r\n throw new Error(\"Invalid issuer\");\r\n\r\n return payload;\r\n};\r\n\r\nexport const setSessionCookie = async (session: Session) => {\r\n const sessionJwt = jwt.sign(session, serverEnv.SESSION_SECRET, { expiresIn: \"7d\" });\r\n\r\n setCookie(SESSION_COOKIE_NAME, sessionJwt, {\r\n secure: serverEnv.NODE_ENV === \"production\",\r\n path: \"/\",\r\n httpOnly: true,\r\n sameSite: \"lax\",\r\n maxAge: 7 * 24 * 60 * 60, // 7 days\r\n });\r\n};\r\n\r\nexport const setSessionAccessTokenCookie = async (accessToken: string) => {\r\n setCookie(ACCESS_TOKEN_COOKIE_NAME, accessToken, {\r\n secure: serverEnv.NODE_ENV === \"production\",\r\n path: \"/\",\r\n httpOnly: true,\r\n sameSite: \"lax\",\r\n maxAge: 5 * 60, // 5 minutes\r\n });\r\n};\r\n"],"names":["entraId","MicrosoftEntraId","serverEnv","MICROSOFT_TENANT_ID","MICROSOFT_CLIENT_ID","MICROSOFT_CLIENT_SECRET","MICROSOFT_REDIRECT_URI","UserSchema","z","object","id","string","name","email","groups","array","displayName","jobTitle","mail","mobilePhone","SESSION_COOKIE_NAME","ACCESS_TOKEN_COOKIE_NAME","AFTER_LOGIN_URL","SessionSchema","refreshToken","user","omit","requireSession","redirectUri","sessionCookie","getCookie","redirect","href","encodeURIComponent","payloadRaw","jwt","verify","SESSION_SECRET","sessionResult","safeParse","success","deleteCookie","data","getAccessToken","accessTokenCookie","session","tokens","refreshAccessToken","setSessionCookie","setSessionAccessTokenCookie","accessToken","sessionJwt","sign","expiresIn","setCookie","secure","NODE_ENV","path","httpOnly","sameSite","maxAge"],"mappings":";;;;;;;;AAGO,MAAMA,UAAU,IAAIC,iBACvBC,UAAUC,qBACVD,UAAUE,qBACVF,UAAUG,yBACVH,UAAUI,sBACd;ACNO,MAAMC,aAAaC,EAAEC,OAAO;AAAA,EAC/BC,IAAIF,EAAEG,OAAAA;AAAAA,EACNC,MAAMJ,EAAEG,OAAAA;AAAAA,EACRE,OAAOL,EAAEK,MAAAA;AAAAA,EACTC,QAAQN,EAAEO,MAAMP,EAAEG,QAAQ;AAC9B,CAAC;AAI8BH,EAAEC,OAAO;AAAA,EACpCC,IAAIF,EAAEG,OAAAA;AAAAA,EACNK,aAAaR,EAAEG,OAAAA;AAAAA,EACfM,UAAUT,EAAEG,OAAAA;AAAAA,EACZO,MAAMV,EAAEK,MAAAA;AAAAA,EACRM,aAAaX,EAAEG,OAAAA;AACnB,CAAC;ACRD,MAAMS,sBAAsB;AAC5B,MAAMC,2BAA2B;AACjC,MAAMC,kBAAkB;AAExB,MAAMC,gBAAgBf,WAAEC,OAAO;AAAA,EAC3Be,cAAchB,WAAEG,OAAAA;AAAAA,EAChBc,MAAMlB,WAAWmB,KAAK;AAAA,IAAEZ,QAAQ;AAAA,EAAA,CAAM;AAC1C,CAAC;AAIM,MAAMa,iBAAiB,OAAOC,gBAAyB;AAC1D,QAAMC,gBAAgBC,UAAUV,mBAAmB;AACnD,MAAI,CAACS,eAAe;AAChB,UAAME,SAAS;AAAA,MAAEC,MAAM,gCAAgCC,mBAAmBL,eAAeN,eAAe,CAAC;AAAA,IAAA,CAAI;AAAA,EACjH;AAEA,QAAMY,aAAaC,IAAIC,OAAOP,eAAe3B,UAAUmC,cAAc;AACrE,QAAMC,gBAAgBf,cAAcgB,UAAUL,UAAU;AACxD,MAAI,CAACI,cAAcE,SAAS;AACxBC,iBAAarB,mBAAmB;AAChC,UAAMW,SAAS;AAAA,MAAEC,MAAM,gCAAgCC,mBAAmBL,eAAeN,eAAe,CAAC;AAAA,IAAA,CAAI;AAAA,EACjH;AAEA,SAAOgB,cAAcI;AACzB;AAEO,MAAMC,iBAAiB,YAAY;AACtC,QAAMC,oBAAoBd,UAAUT,wBAAwB;AAC5D,MAAIuB,kBAAmB,QAAOA;AAE9B,QAAMC,UAAU,MAAMlB,eAAAA;AAEtB,QAAMmB,SAAS,MAAM9C,QAAQ+C,mBAAmBF,QAAQrB,cAAc,EAAE;AAExE,QAAMwB,iBAAiB;AAAA,IACnB,GAAGH;AAAAA,IACHrB,cAAcsB,OAAOtB,aAAAA;AAAAA,EAAa,CACrC;AAED,QAAMyB,4BAA4BH,OAAOI,aAAa;AAEtD,SAAOJ,OAAOI,YAAAA;AAClB;AAwBO,MAAMF,mBAAmB,OAAOH,YAAqB;AACxD,QAAMM,aAAahB,IAAIiB,KAAKP,SAAS3C,UAAUmC,gBAAgB;AAAA,IAAEgB,WAAW;AAAA,EAAA,CAAM;AAElFC,YAAUlC,qBAAqB+B,YAAY;AAAA,IACvCI,QAAQrD,UAAUsD,aAAa;AAAA,IAC/BC,MAAM;AAAA,IACNC,UAAU;AAAA,IACVC,UAAU;AAAA,IACVC,QAAQ,IAAI,KAAK,KAAK;AAAA;AAAA,EAAA,CACzB;AACL;AAEO,MAAMX,8BAA8B,OAAOC,gBAAwB;AACtEI,YAAUjC,0BAA0B6B,aAAa;AAAA,IAC7CK,QAAQrD,UAAUsD,aAAa;AAAA,IAC/BC,MAAM;AAAA,IACNC,UAAU;AAAA,IACVC,UAAU;AAAA,IACVC,QAAQ,IAAI;AAAA;AAAA,EAAA,CACf;AACL;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import axios from "axios";
|
|
2
|
-
import { clientEnv } from "
|
|
2
|
+
import { c as clientEnv } from "./env-gsqZ6zZD.js";
|
|
3
3
|
const WISTRON_PRIMARY_COLOR = "#00506E";
|
|
4
4
|
const WISTRON_SECONDARY_COLOR = "#64DC00";
|
|
5
5
|
class Platform {
|
|
@@ -80,12 +80,12 @@ const toKebabCase = (str) => {
|
|
|
80
80
|
return str.replaceAll(/([a-z])([A-Z])/g, "$1-$2").replaceAll(/[\s_]+/g, "-").replaceAll(/[^a-zA-Z0-9-]/g, "").toLowerCase().replaceAll(/-+/g, "-").replaceAll(/(^-|-$)/g, "");
|
|
81
81
|
};
|
|
82
82
|
export {
|
|
83
|
-
Platform,
|
|
84
|
-
WISTRON_PRIMARY_COLOR,
|
|
85
|
-
WISTRON_SECONDARY_COLOR,
|
|
86
|
-
getFieldStatus,
|
|
87
|
-
httpClient,
|
|
88
|
-
rootRouteHead,
|
|
89
|
-
toKebabCase
|
|
83
|
+
Platform as P,
|
|
84
|
+
WISTRON_PRIMARY_COLOR as W,
|
|
85
|
+
WISTRON_SECONDARY_COLOR as a,
|
|
86
|
+
getFieldStatus as g,
|
|
87
|
+
httpClient as h,
|
|
88
|
+
rootRouteHead as r,
|
|
89
|
+
toKebabCase as t
|
|
90
90
|
};
|
|
91
|
-
//# sourceMappingURL=utils.js.map
|
|
91
|
+
//# sourceMappingURL=utils-MD9YwOtu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils-MD9YwOtu.js","sources":["../src/lib/utils.ts"],"sourcesContent":["import axios from \"axios\";\r\nimport type { AnyFieldApi } from \"@tanstack/react-form\";\r\nimport { clientEnv } from \"~/env\";\r\n\r\nexport const WISTRON_PRIMARY_COLOR = \"#00506E\";\r\nexport const WISTRON_SECONDARY_COLOR = \"#64DC00\";\r\n\r\nexport class Platform {\r\n static get isAndroid() { return /android/i.test(this.userAgent); }\r\n static get isIOS() { return /iPad|iPhone|iPod/.test(this.userAgent); }\r\n static get isWindows() { return /windows/i.test(this.userAgent); }\r\n static get isMacOS() { return /Macintosh|MacIntel|MacPPC|Mac68K/.test(this.userAgent); }\r\n\r\n private static get userAgent() { return typeof navigator === \"undefined\" ? \"\" : navigator.userAgent; }\r\n}\r\n\r\nexport const rootRouteHead = () => ({\r\n meta: [\r\n { charSet: \"utf-8\" },\r\n { name: \"viewport\", content: \"width=device-width, initial-scale=1\" },\r\n { title: clientEnv.VITE_APP_TITLE },\r\n { name: \"og:type\", content: \"website\" },\r\n { name: \"og:title\", content: clientEnv.VITE_APP_TITLE },\r\n { name: \"og:image\", content: \"/favicon-32x32.png\" }\r\n ],\r\n links: [\r\n { rel: \"apple-touch-icon\", sizes: \"180x180\", href: \"/apple-touch-icon.png\", },\r\n { rel: \"icon\", type: \"image/png\", sizes: \"32x32\", href: \"/favicon-32x32.png\", },\r\n { rel: \"icon\", type: \"image/png\", sizes: \"16x16\", href: \"/favicon-16x16.png\", },\r\n { rel: \"manifest\", href: \"/manifest.webmanifest\" },\r\n { rel: \"icon\", href: \"/favicon.ico\" },\r\n ],\r\n});\r\n\r\nexport const httpClient = axios.create({\r\n baseURL: clientEnv.VITE_API_URL // TODO: Not working in children projects\r\n});\r\n\r\n/* Internal Utils */\r\nexport type FormOmittedProps =\r\n \"name\" |\r\n \"value\" |\r\n \"onChange\" |\r\n \"onBlur\" |\r\n \"error\" |\r\n \"helperText\" |\r\n \"renderInput\" |\r\n \"type\" |\r\n \"aria-label\";\r\n\r\nexport const getFieldStatus = (field: AnyFieldApi) => {\r\n const { meta } = field.state;\r\n\r\n const isTouched = meta.isTouched;\r\n const hasError = !!meta.errors.length;\r\n const helperText = meta.errors[0]?.message;\r\n\r\n return { isTouched, hasError, helperText };\r\n};\r\n\r\nexport const toKebabCase = (str: string): string => {\r\n return str\r\n .replaceAll(/([a-z])([A-Z])/g, \"$1-$2\")\r\n .replaceAll(/[\\s_]+/g, \"-\")\r\n .replaceAll(/[^a-zA-Z0-9-]/g, \"\")\r\n .toLowerCase()\r\n .replaceAll(/-+/g, \"-\")\r\n .replaceAll(/(^-|-$)/g, \"\");\r\n};\r\n"],"names":["WISTRON_PRIMARY_COLOR","WISTRON_SECONDARY_COLOR","Platform","isAndroid","test","userAgent","isIOS","isWindows","isMacOS","navigator","rootRouteHead","meta","charSet","name","content","title","clientEnv","VITE_APP_TITLE","links","rel","sizes","href","type","httpClient","axios","create","baseURL","VITE_API_URL","getFieldStatus","field","state","isTouched","hasError","errors","length","helperText","message","toKebabCase","str","replaceAll","toLowerCase"],"mappings":";;AAIO,MAAMA,wBAAwB;AAC9B,MAAMC,0BAA0B;AAEhC,MAAMC,SAAS;AAAA,EAClB,WAAWC,YAAY;AAAE,WAAO,WAAWC,KAAK,KAAKC,SAAS;AAAA,EAAG;AAAA,EACjE,WAAWC,QAAQ;AAAE,WAAO,mBAAmBF,KAAK,KAAKC,SAAS;AAAA,EAAG;AAAA,EACrE,WAAWE,YAAY;AAAE,WAAO,WAAWH,KAAK,KAAKC,SAAS;AAAA,EAAG;AAAA,EACjE,WAAWG,UAAU;AAAE,WAAO,mCAAmCJ,KAAK,KAAKC,SAAS;AAAA,EAAG;AAAA,EAEvF,WAAmBA,YAAY;AAAE,WAAO,OAAOI,cAAc,cAAc,KAAKA,UAAUJ;AAAAA,EAAW;AACzG;AAEO,MAAMK,gBAAgBA,OAAO;AAAA,EAChCC,MAAM,CACF;AAAA,IAAEC,SAAS;AAAA,EAAA,GACX;AAAA,IAAEC,MAAM;AAAA,IAAYC,SAAS;AAAA,EAAA,GAC7B;AAAA,IAAEC,OAAOC,UAAUC;AAAAA,EAAAA,GACnB;AAAA,IAAEJ,MAAM;AAAA,IAAWC,SAAS;AAAA,EAAA,GAC5B;AAAA,IAAED,MAAM;AAAA,IAAYC,SAASE,UAAUC;AAAAA,EAAAA,GACvC;AAAA,IAAEJ,MAAM;AAAA,IAAYC,SAAS;AAAA,EAAA,CAAsB;AAAA,EAEvDI,OAAO,CACH;AAAA,IAAEC,KAAK;AAAA,IAAoBC,OAAO;AAAA,IAAWC,MAAM;AAAA,EAAA,GACnD;AAAA,IAAEF,KAAK;AAAA,IAAQG,MAAM;AAAA,IAAaF,OAAO;AAAA,IAASC,MAAM;AAAA,EAAA,GACxD;AAAA,IAAEF,KAAK;AAAA,IAAQG,MAAM;AAAA,IAAaF,OAAO;AAAA,IAASC,MAAM;AAAA,EAAA,GACxD;AAAA,IAAEF,KAAK;AAAA,IAAYE,MAAM;AAAA,EAAA,GACzB;AAAA,IAAEF,KAAK;AAAA,IAAQE,MAAM;AAAA,EAAA,CAAgB;AAE7C;AAEO,MAAME,aAAaC,MAAMC,OAAO;AAAA,EACnCC,SAASV,UAAUW;AAAAA;AACvB,CAAC;AAcM,MAAMC,iBAAiBA,CAACC,UAAuB;AAClD,QAAM;AAAA,IAAElB;AAAAA,EAAAA,IAASkB,MAAMC;AAEvB,QAAMC,YAAYpB,KAAKoB;AACvB,QAAMC,WAAW,CAAC,CAACrB,KAAKsB,OAAOC;AAC/B,QAAMC,aAAaxB,KAAKsB,OAAO,CAAC,GAAGG;AAEnC,SAAO;AAAA,IAAEL;AAAAA,IAAWC;AAAAA,IAAUG;AAAAA,EAAAA;AAClC;AAEO,MAAME,cAAcA,CAACC,QAAwB;AAChD,SAAOA,IACFC,WAAW,mBAAmB,OAAO,EACrCA,WAAW,WAAW,GAAG,EACzBA,WAAW,kBAAkB,EAAE,EAC/BC,cACAD,WAAW,OAAO,GAAG,EACrBA,WAAW,YAAY,EAAE;AAClC;"}
|
package/dist/utils.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { uuidv7 } from "uuidv7";
|
|
2
|
-
import {
|
|
2
|
+
import { h } from "./utils-MD9YwOtu.js";
|
|
3
3
|
import { createEnv } from "@t3-oss/env-core";
|
|
4
4
|
export {
|
|
5
5
|
createEnv,
|
|
6
|
-
httpClient,
|
|
6
|
+
h as httpClient,
|
|
7
7
|
uuidv7
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=utils.js.map
|
package/dist/vite.js
CHANGED
|
@@ -1,4 +1,64 @@
|
|
|
1
|
-
import
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
function viteWczLayout() {
|
|
4
|
+
const virtualModuleId = "virtual:wcz-layout";
|
|
5
|
+
const resolvedVirtualModuleId = "\0" + virtualModuleId;
|
|
6
|
+
let localesPath;
|
|
7
|
+
return {
|
|
8
|
+
name: "vite:wcz-layout",
|
|
9
|
+
enforce: "pre",
|
|
10
|
+
configResolved(resolvedConfig) {
|
|
11
|
+
localesPath = path.resolve(resolvedConfig.root, "src/locales");
|
|
12
|
+
},
|
|
13
|
+
config() {
|
|
14
|
+
return {
|
|
15
|
+
optimizeDeps: {
|
|
16
|
+
exclude: [virtualModuleId]
|
|
17
|
+
},
|
|
18
|
+
ssr: {
|
|
19
|
+
noExternal: ["@mui/*"]
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
},
|
|
23
|
+
resolveId(id) {
|
|
24
|
+
if (id === virtualModuleId) return resolvedVirtualModuleId;
|
|
25
|
+
return null;
|
|
26
|
+
},
|
|
27
|
+
load(id) {
|
|
28
|
+
if (id !== resolvedVirtualModuleId) return null;
|
|
29
|
+
if (!fs.existsSync(localesPath)) {
|
|
30
|
+
fs.mkdirSync(localesPath, {
|
|
31
|
+
recursive: true
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
const enPath = path.join(localesPath, "en.json");
|
|
35
|
+
if (!fs.existsSync(enPath)) {
|
|
36
|
+
fs.writeFileSync(enPath, JSON.stringify({}));
|
|
37
|
+
}
|
|
38
|
+
const files = fs.readdirSync(localesPath);
|
|
39
|
+
const jsonFiles = files.filter((f) => f.endsWith(".json"));
|
|
40
|
+
const resources = {};
|
|
41
|
+
for (const file of jsonFiles) {
|
|
42
|
+
const lang = path.basename(file, ".json");
|
|
43
|
+
const filePath = path.join(localesPath, file);
|
|
44
|
+
try {
|
|
45
|
+
const content = fs.readFileSync(filePath, "utf-8");
|
|
46
|
+
const translations = JSON.parse(content);
|
|
47
|
+
resources[lang] = {
|
|
48
|
+
translation: translations
|
|
49
|
+
};
|
|
50
|
+
} catch (error) {
|
|
51
|
+
console.error(`[vite:layout] Error parsing ${file}:`, error);
|
|
52
|
+
resources[lang] = {
|
|
53
|
+
translation: {}
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
this.addWatchFile(filePath);
|
|
57
|
+
}
|
|
58
|
+
return `export const resources = ${JSON.stringify(resources)};`;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
}
|
|
2
62
|
export {
|
|
3
63
|
viteWczLayout
|
|
4
64
|
};
|
package/dist/vite.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
1
|
+
{"version":3,"file":"vite.js","sources":["../src/lib/vite-plugin.ts"],"sourcesContent":["import fs from \"node:fs\";\nimport path from \"node:path\";\nimport type { Resource } from \"i18next\";\nimport type { Plugin } from \"vite\";\n\nexport function viteWczLayout(): Plugin {\n const virtualModuleId = \"virtual:wcz-layout\";\n const resolvedVirtualModuleId = \"\\0\" + virtualModuleId;\n\n let localesPath: string;\n\n return {\n name: \"vite:wcz-layout\",\n enforce: \"pre\",\n configResolved(resolvedConfig) {\n localesPath = path.resolve(resolvedConfig.root, \"src/locales\");\n },\n config() {\n return {\n optimizeDeps: {\n exclude: [virtualModuleId],\n },\n ssr: {\n noExternal: [\"@mui/*\"],\n },\n };\n },\n resolveId(id) {\n if (id === virtualModuleId) return resolvedVirtualModuleId;\n return null;\n },\n load(id) {\n if (id !== resolvedVirtualModuleId) return null;\n\n if (!fs.existsSync(localesPath)) {\n fs.mkdirSync(localesPath, { recursive: true });\n }\n\n const enPath = path.join(localesPath, \"en.json\");\n if (!fs.existsSync(enPath)) {\n fs.writeFileSync(enPath, JSON.stringify({}));\n }\n\n const files = fs.readdirSync(localesPath);\n const jsonFiles = files.filter((f) => f.endsWith(\".json\"));\n\n const resources: Resource = {};\n\n for (const file of jsonFiles) {\n const lang = path.basename(file, \".json\");\n const filePath = path.join(localesPath, file);\n\n try {\n const content = fs.readFileSync(filePath, \"utf-8\");\n const translations = JSON.parse(content);\n resources[lang] = { translation: translations };\n } catch (error) {\n console.error(`[vite:layout] Error parsing ${file}:`, error);\n resources[lang] = { translation: {} };\n }\n\n this.addWatchFile(filePath);\n }\n\n return `export const resources = ${JSON.stringify(resources)};`;\n },\n };\n}\n"],"names":["viteWczLayout","virtualModuleId","resolvedVirtualModuleId","localesPath","name","enforce","configResolved","resolvedConfig","path","resolve","root","config","optimizeDeps","exclude","ssr","noExternal","resolveId","id","load","fs","existsSync","mkdirSync","recursive","enPath","join","writeFileSync","JSON","stringify","files","readdirSync","jsonFiles","filter","f","endsWith","resources","file","lang","basename","filePath","content","readFileSync","translations","parse","translation","error","console","addWatchFile"],"mappings":";;AAKO,SAASA,gBAAwB;AACpC,QAAMC,kBAAkB;AACxB,QAAMC,0BAA0B,OAAOD;AAEvC,MAAIE;AAEJ,SAAO;AAAA,IACHC,MAAM;AAAA,IACNC,SAAS;AAAA,IACTC,eAAeC,gBAAgB;AAC3BJ,oBAAcK,KAAKC,QAAQF,eAAeG,MAAM,aAAa;AAAA,IACjE;AAAA,IACAC,SAAS;AACL,aAAO;AAAA,QACHC,cAAc;AAAA,UACVC,SAAS,CAACZ,eAAe;AAAA,QAAA;AAAA,QAE7Ba,KAAK;AAAA,UACDC,YAAY,CAAC,QAAQ;AAAA,QAAA;AAAA,MACzB;AAAA,IAER;AAAA,IACAC,UAAUC,IAAI;AACV,UAAIA,OAAOhB,gBAAiB,QAAOC;AACnC,aAAO;AAAA,IACX;AAAA,IACAgB,KAAKD,IAAI;AACL,UAAIA,OAAOf,wBAAyB,QAAO;AAE3C,UAAI,CAACiB,GAAGC,WAAWjB,WAAW,GAAG;AAC7BgB,WAAGE,UAAUlB,aAAa;AAAA,UAAEmB,WAAW;AAAA,QAAA,CAAM;AAAA,MACjD;AAEA,YAAMC,SAASf,KAAKgB,KAAKrB,aAAa,SAAS;AAC/C,UAAI,CAACgB,GAAGC,WAAWG,MAAM,GAAG;AACxBJ,WAAGM,cAAcF,QAAQG,KAAKC,UAAU,CAAA,CAAE,CAAC;AAAA,MAC/C;AAEA,YAAMC,QAAQT,GAAGU,YAAY1B,WAAW;AACxC,YAAM2B,YAAYF,MAAMG,OAAQC,OAAMA,EAAEC,SAAS,OAAO,CAAC;AAEzD,YAAMC,YAAsB,CAAA;AAE5B,iBAAWC,QAAQL,WAAW;AAC1B,cAAMM,OAAO5B,KAAK6B,SAASF,MAAM,OAAO;AACxC,cAAMG,WAAW9B,KAAKgB,KAAKrB,aAAagC,IAAI;AAE5C,YAAI;AACA,gBAAMI,UAAUpB,GAAGqB,aAAaF,UAAU,OAAO;AACjD,gBAAMG,eAAef,KAAKgB,MAAMH,OAAO;AACvCL,oBAAUE,IAAI,IAAI;AAAA,YAAEO,aAAaF;AAAAA,UAAAA;AAAAA,QACrC,SAASG,OAAO;AACZC,kBAAQD,MAAM,+BAA+BT,IAAI,KAAKS,KAAK;AAC3DV,oBAAUE,IAAI,IAAI;AAAA,YAAEO,aAAa,CAAA;AAAA,UAAC;AAAA,QACtC;AAEA,aAAKG,aAAaR,QAAQ;AAAA,MAC9B;AAEA,aAAO,4BAA4BZ,KAAKC,UAAUO,SAAS,CAAC;AAAA,IAChE;AAAA,EAAA;AAER;"}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"compiler-runtime.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"compiler-runtime2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"jsx-runtime.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"jsx-runtime2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"react-compiler-runtime.development.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"react-compiler-runtime.production.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"react-jsx-runtime.development.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"react-jsx-runtime.production.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { j as jsxRuntimeExports } from "../../_virtual/jsx-runtime.js";
|
|
2
|
-
import { c as compilerRuntimeExports } from "../../_virtual/compiler-runtime.js";
|
|
3
|
-
import { Stack, Typography } from "@mui/material";
|
|
4
|
-
import { clientEnv } from "../../env.js";
|
|
5
|
-
const AppTitle = () => {
|
|
6
|
-
const $ = compilerRuntimeExports.c(1);
|
|
7
|
-
let t0;
|
|
8
|
-
if ($[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
|
|
9
|
-
t0 = /* @__PURE__ */ jsxRuntimeExports.jsxs(Stack, { direction: "row", alignItems: "center", spacing: 2, flexGrow: 1, children: [
|
|
10
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: "/favicon-32x32.png", alt: "app-logo", loading: "lazy" }),
|
|
11
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "h6", children: clientEnv.VITE_APP_TITLE }),
|
|
12
|
-
false
|
|
13
|
-
] });
|
|
14
|
-
$[0] = t0;
|
|
15
|
-
} else {
|
|
16
|
-
t0 = $[0];
|
|
17
|
-
}
|
|
18
|
-
return t0;
|
|
19
|
-
};
|
|
20
|
-
export {
|
|
21
|
-
AppTitle
|
|
22
|
-
};
|
|
23
|
-
//# sourceMappingURL=AppTitle.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AppTitle.js","sources":["../../../src/components/core/AppTitle.tsx"],"sourcesContent":["import { Chip, Stack, Typography } from \"@mui/material\";\nimport type { FC } from \"react\";\nimport { clientEnv } from \"~/env\";\n\nexport const AppTitle: FC = () => {\n return (\n <Stack direction=\"row\" alignItems=\"center\" spacing={2} flexGrow={1}>\n <img src=\"/favicon-32x32.png\" alt=\"app-logo\" loading=\"lazy\" />\n <Typography variant=\"h6\">{clientEnv.VITE_APP_TITLE}</Typography>\n {import.meta.env.DEV && <Chip size=\"small\" label=\"TEST\" color=\"info\" />}\n </Stack>\n );\n};\n"],"names":["AppTitle","$","_c","t0","Symbol","for","jsxs","jsx","clientEnv","VITE_APP_TITLE","import"],"mappings":";;;;AAIO,MAAMA,WAAeA,MAAA;AAAA,QAAAC,IAAAC,uBAAAA,EAAA,CAAA;AAAA,MAAAC;AAAA,MAAAF,EAAA,CAAA,MAAAG,uBAAAC,IAAA,2BAAA,GAAA;AAEpBF,SAAAG,kCAAAA,KAAC,SAAgB,WAAA,OAAiB,YAAA,UAAkB,SAAA,GAAa,UAAA,GAC7D,UAAA;AAAA,MAAAC,+CAAS,KAAA,sBAAyB,KAAA,YAAmB,SAAA,QAAM;AAAA,MAC3DA,kCAAAA,IAAC,YAAA,EAAmB,SAAA,MAAMC,oBAASC,gBAAgB;AAAA,MAClDC;AAAAA,IAAAA,GACL;AAAQT,WAAAE;AAAAA,EAAA,OAAA;AAAAA,SAAAF,EAAA,CAAA;AAAA,EAAA;AAAA,SAJRE;AAIQ;"}
|