@solidxai/core-ui 0.1.9-beta.5 → 0.1.9-beta.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/dist/components/common/AuthBanner.js.map +1 -1
  2. package/dist/components/core/kanban/SolidManyToOneFilterElement.d.ts.map +1 -1
  3. package/dist/components/core/kanban/SolidManyToOneFilterElement.js.map +1 -1
  4. package/dist/components/core/kanban/SolidManyToOneFilterElement.tsx +1 -2
  5. package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.d.ts.map +1 -1
  6. package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.js +2 -2
  7. package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.js.map +1 -1
  8. package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.tsx +21 -10
  9. package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.d.ts.map +1 -1
  10. package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.js +2 -2
  11. package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.js.map +1 -1
  12. package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.tsx +18 -10
  13. package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.d.ts.map +1 -1
  14. package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.js +3 -6
  15. package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.js.map +1 -1
  16. package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.tsx +30 -24
  17. package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.js.map +1 -1
  18. package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.tsx +2 -2
  19. package/dist/components/core/list/SolidDataTablePagination.d.ts +15 -0
  20. package/dist/components/core/list/SolidDataTablePagination.d.ts.map +1 -0
  21. package/dist/components/core/list/SolidDataTablePagination.js +22 -0
  22. package/dist/components/core/list/SolidDataTablePagination.js.map +1 -0
  23. package/dist/components/core/list/SolidDataTablePagination.tsx +71 -0
  24. package/dist/components/core/list/SolidListViewRowButtonContextMenu.d.ts +1 -1
  25. package/dist/components/core/list/SolidListViewRowButtonContextMenu.d.ts.map +1 -1
  26. package/dist/components/core/list/SolidListViewRowButtonContextMenu.js +6 -7
  27. package/dist/components/core/list/SolidListViewRowButtonContextMenu.js.map +1 -1
  28. package/dist/components/core/list/SolidListViewRowButtonContextMenu.tsx +9 -10
  29. package/dist/components/solid-ui/SolidButton.d.ts +14 -0
  30. package/dist/components/solid-ui/SolidButton.d.ts.map +1 -0
  31. package/dist/components/solid-ui/SolidButton.js +36 -0
  32. package/dist/components/solid-ui/SolidButton.js.map +1 -0
  33. package/dist/components/solid-ui/SolidButton.tsx +54 -0
  34. package/dist/components/solid-ui/SolidTabs.d.ts +18 -0
  35. package/dist/components/solid-ui/SolidTabs.d.ts.map +1 -0
  36. package/dist/components/solid-ui/SolidTabs.js +22 -0
  37. package/dist/components/solid-ui/SolidTabs.js.map +1 -0
  38. package/dist/components/solid-ui/SolidTabs.tsx +73 -0
  39. package/dist/components/solid-ui/index.d.ts +3 -0
  40. package/dist/components/solid-ui/index.d.ts.map +1 -0
  41. package/dist/components/solid-ui/index.js +3 -0
  42. package/dist/components/solid-ui/index.js.map +1 -0
  43. package/dist/components/solid-ui/index.ts +2 -0
  44. package/package.json +1 -1
  45. package/dist/components/auth/SolidOTPVerify.d.ts +0 -3
  46. package/dist/components/auth/SolidOTPVerify.d.ts.map +0 -1
  47. package/dist/components/auth/SolidOTPVerify.js +0 -67
  48. package/dist/components/auth/SolidOTPVerify.js.map +0 -1
  49. package/dist/components/auth/SolidOTPVerify.tsx +0 -133
  50. package/dist/components/core/common/LoadDynamicJsxComponent.d.ts +0 -2
  51. package/dist/components/core/common/LoadDynamicJsxComponent.d.ts.map +0 -1
  52. package/dist/components/core/common/LoadDynamicJsxComponent.js +0 -50
  53. package/dist/components/core/common/LoadDynamicJsxComponent.js.map +0 -1
  54. package/dist/components/core/common/LoadDynamicJsxComponent.tsx +0 -70
  55. package/dist/nextAuth/authProviders.d.ts +0 -4
  56. package/dist/nextAuth/authProviders.d.ts.map +0 -1
  57. package/dist/nextAuth/authProviders.js +0 -198
  58. package/dist/nextAuth/authProviders.js.map +0 -1
  59. package/dist/nextAuth/authProviders.tsx +0 -232
  60. package/dist/nextAuth/handleLogout.d.ts +0 -2
  61. package/dist/nextAuth/handleLogout.d.ts.map +0 -1
  62. package/dist/nextAuth/handleLogout.js +0 -36
  63. package/dist/nextAuth/handleLogout.js.map +0 -1
  64. package/dist/nextAuth/handleLogout.tsx +0 -39
  65. package/dist/nextAuth/refreshAccessToken.d.ts +0 -2
  66. package/dist/nextAuth/refreshAccessToken.d.ts.map +0 -1
  67. package/dist/nextAuth/refreshAccessToken.js +0 -24
  68. package/dist/nextAuth/refreshAccessToken.js.map +0 -1
  69. package/dist/nextAuth/refreshAccessToken.tsx +0 -28
  70. package/dist/redux/features/settingsSlice.d.ts +0 -20
  71. package/dist/redux/features/settingsSlice.d.ts.map +0 -1
  72. package/dist/redux/features/settingsSlice.js +0 -39
  73. package/dist/redux/features/settingsSlice.js.map +0 -1
  74. package/dist/redux/features/settingsSlice.ts +0 -60
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solidxai/core-ui",
3
- "version": "0.1.9-beta.5",
3
+ "version": "0.1.9-beta.7",
4
4
  "scripts": {
5
5
  "prebuild": "npm run copy-resources && npm run copy-styles",
6
6
  "build": "tsc -p tsconfig.json && tsc-alias -p tsconfig.json",
@@ -1,3 +0,0 @@
1
- declare const SolidOTPVerify: () => import("react/jsx-runtime").JSX.Element;
2
- export default SolidOTPVerify;
3
- //# sourceMappingURL=SolidOTPVerify.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SolidOTPVerify.d.ts","sourceRoot":"./","sources":["components/auth/SolidOTPVerify.tsx"],"names":[],"mappings":"AAiBA,QAAA,MAAM,cAAc,+CAmHnB,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -1,67 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
- import { Form, Formik } from "formik";
4
- import { signIn } from "next-auth/react";
5
- import Link from "next/link";
6
- import { useRouter } from "next/navigation";
7
- import { Button } from "primereact/button";
8
- import { InputOtp } from "primereact/inputotp";
9
- import { Message } from "primereact/message";
10
- import { Toast } from "primereact/toast";
11
- import { useRef, useState } from "react";
12
- import * as Yup from "yup";
13
- import { useSelector } from "react-redux";
14
- import Image from "next/image";
15
- import SolidLogo from '../../resources/images/SolidXLogo.svg';
16
- import { ERROR_MESSAGES } from "../../constants/error-messages";
17
- const SolidOTPVerify = () => {
18
- // const [trigger, { data: solidSettingsData }] = useLazyGetAuthSettingsQuery();
19
- // useEffect(() => {
20
- // trigger("") // Fetch settings on mount
21
- // }, [trigger])
22
- const solidSettingsData = useSelector((state) => state.settingsState?.solidSettings);
23
- const [otp, setOTP] = useState();
24
- const toast = useRef(null);
25
- const router = useRouter();
26
- const [password, setPassword] = useState('');
27
- const [checked, setChecked] = useState(false);
28
- const validationSchema = Yup.object({
29
- email: Yup.string()
30
- .email(ERROR_MESSAGES.FIELD_INVALID(' email address'))
31
- .required(ERROR_MESSAGES.FIELD_REUQIRED('Email')),
32
- });
33
- const showToast = (severity, summary, detail) => {
34
- toast.current?.show({
35
- severity,
36
- summary,
37
- detail,
38
- ...(severity === "error"
39
- ? { sticky: true } // stays until user closes
40
- : { life: 3000 }),
41
- });
42
- };
43
- const isFormFieldValid = (formik, fieldName) => formik.touched[fieldName] && formik.errors[fieldName];
44
- return (_jsxs(_Fragment, { children: [_jsx(Toast, { ref: toast }), _jsxs("div", { className: `auth-container ${solidSettingsData?.authPagesLayout === 'center' ? 'center' : 'side'}`, style: { minWidth: 480 }, children: [solidSettingsData?.authPagesLayout === 'center' &&
45
- _jsx("div", { className: "flex justify-content-center", children: _jsx("div", { className: `solid-logo flex align-items-center ${solidSettingsData?.appLogoPosition}`, children: _jsx(Image, { alt: "solid logo", src: solidSettingsData?.appLogo || SolidLogo, className: "relative", fill: true }) }) }), _jsx("h2", { className: `solid-auth-title ${solidSettingsData?.authPagesLayout === 'center' ? 'text-center' : 'text-left'}`, children: "OTP Verification" }), _jsx("p", { className: "solid-auth-subtitle text-sm", children: "Please enter the OTP sent to your email to complete verification" }), _jsx(_Fragment, { children: _jsx(Formik, { initialValues: {
46
- email: "",
47
- password: "",
48
- }, validationSchema: validationSchema, onSubmit: async (values) => {
49
- // Handle form submission
50
- const email = values.email;
51
- const password = values.password;
52
- const response = await signIn("credentials", {
53
- redirect: false,
54
- email,
55
- password,
56
- });
57
- if (response?.error) {
58
- showToast("error", ERROR_MESSAGES.LOGIN_ERROR, response.error);
59
- }
60
- else {
61
- showToast("success", ERROR_MESSAGES.LOGIN_SUCCESS, ERROR_MESSAGES.DASHBOARD_REDIRECTING);
62
- router.push(`${process.env.NEXT_PUBLIC_LOGIN_REDIRECT_URL}`);
63
- }
64
- }, children: (formik) => (_jsxs(Form, { children: [_jsxs("div", { className: "flex flex-column gap-2 px-3", children: [_jsx("label", { htmlFor: "email", className: "solid-auth-input-label", children: "Enter OTP" }), _jsx(InputOtp, { value: otp, onChange: (e) => setOTP(e.value), length: 6, style: { width: '100%' } }), isFormFieldValid(formik, "email") && _jsx(Message, { className: "text-red-500 text-sm", severity: "error", text: formik?.errors?.email?.toString() }), _jsxs("div", { className: "flex align-items-center justify-content-between", children: [_jsx(Button, { type: "button", icon: 'pi pi-refresh', iconPos: "left", link: true, label: "Resend Code", className: "px-0 text-sm font-normal" }), _jsx("p", { className: "m-0 text-sm text-color", children: "Time left: 00:28" })] })] }), _jsx("div", { className: "mt-4", children: _jsx(Button, { type: "submit", className: "w-full font-light auth-submit-button", label: "Verify", disabled: formik.isSubmitting, loading: formik.isSubmitting }) })] })) }) })] }), _jsx("div", { className: "text-center mt-5", children: _jsxs("div", { className: "text-sm text-400 secondary-dark-color", children: ['<', " Back to ", _jsx(Link, { className: "font-bold", href: "/auth/login", children: "Sign In" })] }) })] }));
65
- };
66
- export default SolidOTPVerify;
67
- //# sourceMappingURL=SolidOTPVerify.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SolidOTPVerify.js","sourceRoot":"./","sources":["components/auth/SolidOTPVerify.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n\nimport { Form, Formik } from \"formik\";\nimport { signIn } from \"next-auth/react\";\nimport Link from \"next/link\";\nimport { useRouter } from \"next/navigation\";\nimport { Button } from \"primereact/button\";\nimport { InputOtp } from \"primereact/inputotp\";\nimport { Message } from \"primereact/message\";\nimport { Toast } from \"primereact/toast\";\nimport { useRef, useState } from \"react\";\nimport * as Yup from \"yup\";\nimport { useSelector } from \"react-redux\";\nimport Image from \"next/image\";\nimport SolidLogo from '../../resources/images/SolidXLogo.svg'\nimport { ERROR_MESSAGES } from \"../../constants/error-messages\";\n\nconst SolidOTPVerify = () => {\n\n // const [trigger, { data: solidSettingsData }] = useLazyGetAuthSettingsQuery();\n // useEffect(() => {\n // trigger(\"\") // Fetch settings on mount\n // }, [trigger])\n\n const solidSettingsData = useSelector((state: any) => state.settingsState?.solidSettings);\n\n const [otp, setOTP] = useState<number | any>();\n\n const toast = useRef<Toast>(null);\n const router = useRouter();\n\n const [password, setPassword] = useState('');\n const [checked, setChecked] = useState<boolean>(false);\n\n const validationSchema = Yup.object({\n email: Yup.string()\n .email(ERROR_MESSAGES.FIELD_INVALID(' email address'))\n .required(ERROR_MESSAGES.FIELD_REUQIRED('Email')),\n });\n\n const showToast = (severity: \"success\" | \"error\", summary: string, detail: string) => {\n toast.current?.show({\n severity,\n summary,\n detail,\n ...(severity === \"error\"\n ? { sticky: true } // stays until user closes\n : { life: 3000 }),\n });\n };\n\n const isFormFieldValid = (formik: any, fieldName: string) =>\n formik.touched[fieldName] && formik.errors[fieldName];\n\n return (\n <>\n <Toast ref={toast} />\n <div className={`auth-container ${solidSettingsData?.authPagesLayout === 'center' ? 'center' : 'side'}`} style={{ minWidth: 480 }}>\n {solidSettingsData?.authPagesLayout === 'center' &&\n <div className=\"flex justify-content-center\">\n <div className={`solid-logo flex align-items-center ${solidSettingsData?.appLogoPosition}`}>\n <Image\n alt=\"solid logo\"\n src={solidSettingsData?.appLogo || SolidLogo}\n className=\"relative\"\n fill\n />\n </div>\n </div>\n }\n <h2 className={`solid-auth-title ${solidSettingsData?.authPagesLayout === 'center' ? 'text-center' : 'text-left'}`}>OTP Verification</h2>\n <p className=\"solid-auth-subtitle text-sm\">\n Please enter the OTP sent to your email to complete verification\n </p>\n <>\n <Formik\n initialValues={{\n email: \"\",\n password: \"\",\n }}\n validationSchema={validationSchema}\n onSubmit={async (values) => {\n // Handle form submission\n const email = values.email;\n const password = values.password;\n\n const response = await signIn(\"credentials\", {\n redirect: false,\n email,\n password,\n });\n if (response?.error) {\n showToast(\"error\", ERROR_MESSAGES.LOGIN_ERROR, response.error);\n } else {\n showToast(\"success\", ERROR_MESSAGES.LOGIN_SUCCESS, ERROR_MESSAGES.DASHBOARD_REDIRECTING);\n router.push(`${process.env.NEXT_PUBLIC_LOGIN_REDIRECT_URL}`);\n }\n\n }}\n >\n {(formik) => (\n <Form>\n <div className=\"flex flex-column gap-2 px-3\">\n <label htmlFor=\"email\" className=\"solid-auth-input-label\">Enter OTP</label>\n <InputOtp value={otp} onChange={(e) => setOTP(e.value)} length={6} style={{ width: '100%' }} />\n {isFormFieldValid(formik, \"email\") && <Message\n className=\"text-red-500 text-sm\"\n severity=\"error\"\n text={formik?.errors?.email?.toString()}\n />}\n <div className=\"flex align-items-center justify-content-between\">\n <Button type=\"button\" icon='pi pi-refresh' iconPos=\"left\" link label=\"Resend Code\" className=\"px-0 text-sm font-normal\" />\n <p className=\"m-0 text-sm text-color\">\n Time left: 00:28\n </p>\n </div>\n </div>\n <div className=\"mt-4\">\n <Button type=\"submit\" className=\"w-full font-light auth-submit-button\" label=\"Verify\" disabled={formik.isSubmitting} loading={formik.isSubmitting} />\n </div>\n </Form>\n )}\n </Formik>\n </>\n </div>\n <div className=\"text-center mt-5\">\n <div className=\"text-sm text-400 secondary-dark-color\">\n {'<'} Back to <Link className=\"font-bold\" href=\"/auth/login\">Sign In</Link>\n </div>\n </div>\n </>\n );\n};\n\nexport default SolidOTPVerify;"]}
@@ -1,133 +0,0 @@
1
- "use client";
2
-
3
- import { Form, Formik } from "formik";
4
- import { signIn } from "next-auth/react";
5
- import Link from "next/link";
6
- import { useRouter } from "next/navigation";
7
- import { Button } from "primereact/button";
8
- import { InputOtp } from "primereact/inputotp";
9
- import { Message } from "primereact/message";
10
- import { Toast } from "primereact/toast";
11
- import { useEffect, useRef, useState } from "react";
12
- import * as Yup from "yup";
13
- import Image from "next/image";
14
- import SolidLogo from '../../resources/images/SolidXLogo.svg'
15
- import { ERROR_MESSAGES } from "../../constants/error-messages";
16
- import { useLazyGetAuthSettingsQuery } from "../../redux/api/solidSettingsApi";
17
-
18
- const SolidOTPVerify = () => {
19
-
20
- const [trigger, { data: solidSettingsData }] = useLazyGetAuthSettingsQuery();
21
- useEffect(() => {
22
- trigger("") // Fetch settings on mount
23
- }, [trigger])
24
-
25
- const [otp, setOTP] = useState<number | any>();
26
-
27
- const toast = useRef<Toast>(null);
28
- const router = useRouter();
29
-
30
- const [password, setPassword] = useState('');
31
- const [checked, setChecked] = useState<boolean>(false);
32
-
33
- const validationSchema = Yup.object({
34
- email: Yup.string()
35
- .email(ERROR_MESSAGES.FIELD_INVALID(' email address'))
36
- .required(ERROR_MESSAGES.FIELD_REUQIRED('Email')),
37
- });
38
-
39
- const showToast = (severity: "success" | "error", summary: string, detail: string) => {
40
- toast.current?.show({
41
- severity,
42
- summary,
43
- detail,
44
- ...(severity === "error"
45
- ? { sticky: true } // stays until user closes
46
- : { life: 3000 }),
47
- });
48
- };
49
-
50
- const isFormFieldValid = (formik: any, fieldName: string) =>
51
- formik.touched[fieldName] && formik.errors[fieldName];
52
-
53
- return (
54
- <>
55
- <Toast ref={toast} />
56
- <div className={`auth-container ${solidSettingsData?.data?.authPagesLayout === 'center' ? 'center' : 'side'}`} style={{ minWidth: 480 }}>
57
- {solidSettingsData?.data?.authPagesLayout === 'center' &&
58
- <div className="flex justify-content-center">
59
- <div className={`solid-logo flex align-items-center ${solidSettingsData?.data?.appLogoPosition}`}>
60
- <Image
61
- alt="solid logo"
62
- src={solidSettingsData?.data?.appLogo || SolidLogo}
63
- className="relative"
64
- fill
65
- />
66
- </div>
67
- </div>
68
- }
69
- <h2 className={`solid-auth-title ${solidSettingsData?.data?.authPagesLayout === 'center' ? 'text-center' : 'text-left'}`}>OTP Verification</h2>
70
- <p className="solid-auth-subtitle text-sm">
71
- Please enter the OTP sent to your email to complete verification
72
- </p>
73
- <>
74
- <Formik
75
- initialValues={{
76
- email: "",
77
- password: "",
78
- }}
79
- validationSchema={validationSchema}
80
- onSubmit={async (values) => {
81
- // Handle form submission
82
- const email = values.email;
83
- const password = values.password;
84
-
85
- const response = await signIn("credentials", {
86
- redirect: false,
87
- email,
88
- password,
89
- });
90
- if (response?.error) {
91
- showToast("error", ERROR_MESSAGES.LOGIN_ERROR, response.error);
92
- } else {
93
- showToast("success", ERROR_MESSAGES.LOGIN_SUCCESS, ERROR_MESSAGES.DASHBOARD_REDIRECTING);
94
- router.push(`${process.env.NEXT_PUBLIC_LOGIN_REDIRECT_URL}`);
95
- }
96
-
97
- }}
98
- >
99
- {(formik) => (
100
- <Form>
101
- <div className="flex flex-column gap-2 px-3">
102
- <label htmlFor="email" className="solid-auth-input-label">Enter OTP</label>
103
- <InputOtp value={otp} onChange={(e) => setOTP(e.value)} length={6} style={{ width: '100%' }} />
104
- {isFormFieldValid(formik, "email") && <Message
105
- className="text-red-500 text-sm"
106
- severity="error"
107
- text={formik?.errors?.email?.toString()}
108
- />}
109
- <div className="flex align-items-center justify-content-between">
110
- <Button type="button" icon='pi pi-refresh' iconPos="left" link label="Resend Code" className="px-0 text-sm font-normal" />
111
- <p className="m-0 text-sm text-color">
112
- Time left: 00:28
113
- </p>
114
- </div>
115
- </div>
116
- <div className="mt-4">
117
- <Button type="submit" className="w-full font-light auth-submit-button" label="Verify" disabled={formik.isSubmitting} loading={formik.isSubmitting} />
118
- </div>
119
- </Form>
120
- )}
121
- </Formik>
122
- </>
123
- </div>
124
- <div className="text-center mt-5">
125
- <div className="text-sm text-400 secondary-dark-color">
126
- {'<'} Back to <Link className="font-bold" href="/auth/login">Sign In</Link>
127
- </div>
128
- </div>
129
- </>
130
- );
131
- };
132
-
133
- export default SolidOTPVerify;
@@ -1,2 +0,0 @@
1
- export declare const LoadDynamicJsxComponent: ({ context }: any) => import("react/jsx-runtime").JSX.Element;
2
- //# sourceMappingURL=LoadDynamicJsxComponent.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LoadDynamicJsxComponent.d.ts","sourceRoot":"./","sources":["components/core/common/LoadDynamicJsxComponent.tsx"],"names":[],"mappings":"AAeA,eAAO,MAAM,uBAAuB,gBAAiB,GAAG,4CAoDvD,CAAA"}
@@ -1,50 +0,0 @@
1
- 'use client';
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { ERROR_MESSAGES } from "../../../constants/error-messages";
4
- import dynamic from "next/dynamic";
5
- import { useState, useEffect } from "react";
6
- // Fallback component for missing components
7
- const FallbackComponent = ({ componentName }) => (_jsxs("div", { style: { color: "red" }, children: ["Could not load ", _jsx("strong", { children: componentName })] }));
8
- export const LoadDynamicJsxComponent = ({ context }) => {
9
- // const Component = dynamic<Props>(
10
- // async () => {
11
- // try {
12
- // const componentName = context?.rowAction?.action?.customComponent.split('/').pop();
13
- // const mod = await import();
14
- // // Return the default export or a named export matching the componentName
15
- // return mod.default || mod[componentName];
16
- // } catch (error) {
17
- // console.error(`Failed to load component "${context?.rowAction?.action?.customComponent}":`, error);
18
- // // Return a fallback component if the import fails
19
- // return () => <GenerateModelCodeRowAction context={context} />;
20
- // }
21
- // },
22
- // { ssr: false } // Disable server-side rendering
23
- // );
24
- const [Component, setComponent] = useState(null);
25
- const componentPath = context?.rowAction?.action?.customComponent;
26
- const componentKey = componentPath?.split("/")?.pop();
27
- const componentMap = {
28
- "GenerateModelCodeRowAction": dynamic(() => import("../extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction"), { ssr: false }),
29
- "GenerateModuleCodeRowAction": dynamic(() => import("../extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction"), { ssr: false }),
30
- };
31
- useEffect(() => {
32
- if (!componentKey)
33
- return;
34
- if (componentMap[componentKey]) {
35
- setComponent(() => () => setComponent(() => componentMap[componentKey]));
36
- }
37
- else {
38
- import(componentPath)
39
- .then((mod) => setComponent(() => mod.default || mod))
40
- .catch((err) => {
41
- console.error(` ${ERROR_MESSAGES.LOADING_COMPONENT} ${componentPath}:`, err);
42
- setComponent(() => () => _jsx(FallbackComponent, { componentName: componentKey }));
43
- });
44
- }
45
- }, [componentKey]);
46
- if (!Component)
47
- return _jsx("p", { children: "Loading..." });
48
- return _jsx(Component, { context: context });
49
- };
50
- //# sourceMappingURL=LoadDynamicJsxComponent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LoadDynamicJsxComponent.js","sourceRoot":"./","sources":["components/core/common/LoadDynamicJsxComponent.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC5C,4CAA4C;AAC5C,MAAM,iBAAiB,GAAG,CAAC,EAAE,aAAa,EAAO,EAAE,EAAE,CAAC,CAClD,eAAK,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,gCACT,2BAAS,aAAa,GAAU,IAC7C,CACT,CAAC;AAMF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,EAAE,OAAO,EAAO,EAAE,EAAE;IAGxD,oCAAoC;IACpC,oBAAoB;IACpB,gBAAgB;IAEhB,kGAAkG;IAClG,0CAA0C;IAC1C,wFAAwF;IACxF,wDAAwD;IACxD,4BAA4B;IAC5B,kHAAkH;IAClH,iEAAiE;IACjE,6EAA6E;IAC7E,YAAY;IACZ,SAAS;IACT,sDAAsD;IACtD,KAAK;IACL,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAM,IAAI,CAAC,CAAC;IACtD,MAAM,aAAa,GAAG,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,CAAC;IAClE,MAAM,YAAY,GAAG,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC;IAEtD,MAAM,YAAY,GAAwB;QACtC,4BAA4B,EAAE,OAAO,CACnC,GAAG,EAAE,CAAC,MAAM,CAAC,uEAAuE,CAAC,EACrF,EAAE,GAAG,EAAE,KAAK,EAAE,CACf;QACD,6BAA6B,EAAE,OAAO,CAClC,GAAG,EAAE,CAAC,MAAM,CAAC,yEAAyE,CAAC,EACvF,EAAE,GAAG,EAAE,KAAK,EAAE,CACjB;KACJ,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,CAAC,YAAY;YAAE,OAAO;QAE1B,IAAI,YAAY,CAAC,YAAY,CAAC,EAAE;YAC5B,YAAY,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;SAC5E;aAAM;YACP,MAAM,CAAC,aAAa,CAAC;iBAChB,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC;iBACrD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACf,OAAO,CAAC,KAAK,CAAC,IAAI,cAAc,CAAC,iBAAiB,IAAI,aAAa,GAAG,EAAE,GAAG,CAAC,CAAC;gBAC7E,YAAY,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,KAAC,iBAAiB,IAAC,aAAa,EAAE,YAAY,GAAI,CAAC,CAAC;YAC7E,CAAC,CAAC,CAAC;SACN;IACL,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnB,IAAI,CAAC,SAAS;QAAE,OAAO,qCAAiB,CAAC;IAEzC,OAAO,KAAC,SAAS,IAAC,OAAO,EAAE,OAAO,GAAI,CAAC;AAC3C,CAAC,CAAA","sourcesContent":["'use client';\nimport { ERROR_MESSAGES } from \"../../../constants/error-messages\";\nimport dynamic from \"next/dynamic\";\nimport { useState, useEffect } from \"react\";\n// Fallback component for missing components\nconst FallbackComponent = ({ componentName }: any) => (\n <div style={{ color: \"red\" }}>\n Could not load <strong>{componentName}</strong>\n </div>\n);\n\ntype Props = {\n context: any;\n};\n\nexport const LoadDynamicJsxComponent = ({ context }: any) => {\n\n \n // const Component = dynamic<Props>(\n // async () => {\n // try {\n \n // const componentName = context?.rowAction?.action?.customComponent.split('/').pop();\n // const mod = await import();\n // // Return the default export or a named export matching the componentName\n // return mod.default || mod[componentName];\n // } catch (error) {\n // console.error(`Failed to load component \"${context?.rowAction?.action?.customComponent}\":`, error);\n // // Return a fallback component if the import fails\n // return () => <GenerateModelCodeRowAction context={context} />;\n // }\n // },\n // { ssr: false } // Disable server-side rendering\n // );\n const [Component, setComponent] = useState<any>(null);\n const componentPath = context?.rowAction?.action?.customComponent;\n const componentKey = componentPath?.split(\"/\")?.pop();\n\n const componentMap: Record<string, any> = {\n \"GenerateModelCodeRowAction\": dynamic(\n () => import(\"../extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction\"),\n { ssr: false }\n ),\n \"GenerateModuleCodeRowAction\": dynamic(\n () => import(\"../extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction\"),\n { ssr: false }\n ),\n };\n\n useEffect(() => {\n if (!componentKey) return;\n\n if (componentMap[componentKey]) {\n setComponent(() => () => setComponent(() => componentMap[componentKey]));\n } else {\n import(componentPath)\n .then((mod) => setComponent(() => mod.default || mod))\n .catch((err) => {\n console.error(` ${ERROR_MESSAGES.LOADING_COMPONENT} ${componentPath}:`, err);\n setComponent(() => () => <FallbackComponent componentName={componentKey} />);\n });\n }\n }, [componentKey]);\n\n if (!Component) return <p>Loading...</p>;\n\n return <Component context={context} />;\n}\n\n\n"]}
@@ -1,70 +0,0 @@
1
- 'use client';
2
- import { ERROR_MESSAGES } from "../../../constants/error-messages";
3
- import dynamic from "next/dynamic";
4
- import { useState, useEffect } from "react";
5
- // Fallback component for missing components
6
- const FallbackComponent = ({ componentName }: any) => (
7
- <div style={{ color: "red" }}>
8
- Could not load <strong>{componentName}</strong>
9
- </div>
10
- );
11
-
12
- type Props = {
13
- context: any;
14
- };
15
-
16
- export const LoadDynamicJsxComponent = ({ context }: any) => {
17
-
18
-
19
- // const Component = dynamic<Props>(
20
- // async () => {
21
- // try {
22
-
23
- // const componentName = context?.rowAction?.action?.customComponent.split('/').pop();
24
- // const mod = await import();
25
- // // Return the default export or a named export matching the componentName
26
- // return mod.default || mod[componentName];
27
- // } catch (error) {
28
- // console.error(`Failed to load component "${context?.rowAction?.action?.customComponent}":`, error);
29
- // // Return a fallback component if the import fails
30
- // return () => <GenerateModelCodeRowAction context={context} />;
31
- // }
32
- // },
33
- // { ssr: false } // Disable server-side rendering
34
- // );
35
- const [Component, setComponent] = useState<any>(null);
36
- const componentPath = context?.rowAction?.action?.customComponent;
37
- const componentKey = componentPath?.split("/")?.pop();
38
-
39
- const componentMap: Record<string, any> = {
40
- "GenerateModelCodeRowAction": dynamic(
41
- () => import("../extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction"),
42
- { ssr: false }
43
- ),
44
- "GenerateModuleCodeRowAction": dynamic(
45
- () => import("../extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction"),
46
- { ssr: false }
47
- ),
48
- };
49
-
50
- useEffect(() => {
51
- if (!componentKey) return;
52
-
53
- if (componentMap[componentKey]) {
54
- setComponent(() => () => setComponent(() => componentMap[componentKey]));
55
- } else {
56
- import(componentPath)
57
- .then((mod) => setComponent(() => mod.default || mod))
58
- .catch((err) => {
59
- console.error(` ${ERROR_MESSAGES.LOADING_COMPONENT} ${componentPath}:`, err);
60
- setComponent(() => () => <FallbackComponent componentName={componentKey} />);
61
- });
62
- }
63
- }, [componentKey]);
64
-
65
- if (!Component) return <p>Loading...</p>;
66
-
67
- return <Component context={context} />;
68
- }
69
-
70
-
@@ -1,4 +0,0 @@
1
- import { NextAuthOptions } from "next-auth";
2
- declare const authProviders: NextAuthOptions;
3
- export default authProviders;
4
- //# sourceMappingURL=authProviders.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"authProviders.d.ts","sourceRoot":"./","sources":["nextAuth/authProviders.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAW5C,QAAA,MAAM,aAAa,EAAE,eAqNpB,CAAA;AAED,eAAe,aAAa,CAAA"}
@@ -1,198 +0,0 @@
1
- import CredentialsProvider from "next-auth/providers/credentials";
2
- import GoogleProvider from "next-auth/providers/google";
3
- import { jwtDecode } from "jwt-decode";
4
- import axios from "axios";
5
- import { refreshAccessToken } from "./refreshAccessToken";
6
- const authProviders = {
7
- session: {
8
- strategy: "jwt",
9
- },
10
- providers: [
11
- GoogleProvider({
12
- clientId: process.env.GOOGLE_ID,
13
- clientSecret: process.env.GOOGLE_CLIENT_SECRET
14
- }),
15
- CredentialsProvider({
16
- // @ts-ignore
17
- async authorize(credentials, req) {
18
- const userAgent = req.headers['user-agent'];
19
- const { username, email, password, identifier, accessToken, accessCode } = credentials;
20
- console.log(credentials, '=========================');
21
- try {
22
- if (accessCode) {
23
- let config = {
24
- method: 'get',
25
- url: `${process.env.API_URL}/api/iam/google/authenticate?accessCode=${accessCode}`,
26
- headers: {
27
- 'User-Agent': userAgent,
28
- }
29
- };
30
- const loginResponse = await axios.request(config);
31
- if (loginResponse.status == 400) {
32
- throw new Error(loginResponse.data.message);
33
- }
34
- if (loginResponse.status == 401) {
35
- throw new Error(loginResponse.data.message);
36
- }
37
- let base64decoded = jwtDecode(loginResponse.data.data.accessToken);
38
- // let accessTokenExpires = base64decoded.exp;
39
- let accessTokenExpires = base64decoded.exp && base64decoded.exp * 1000;
40
- return {
41
- accessToken: loginResponse.data.data.accessToken,
42
- refreshToken: loginResponse.data.data.refreshToken,
43
- accessTokenExpires: accessTokenExpires,
44
- ...loginResponse.data.data,
45
- };
46
- }
47
- else {
48
- if (accessToken) {
49
- let data = JSON.stringify({
50
- username: identifier,
51
- email: identifier.includes('@') ? identifier : null,
52
- password: password
53
- });
54
- let config = {
55
- method: 'get',
56
- url: `${process.env.API_URL}/api/iam/me`,
57
- headers: {
58
- 'accept': '*/*',
59
- 'Content-Type': 'application/json',
60
- 'Authorization': `Bearer ${accessToken}`
61
- }
62
- };
63
- const loginResponse = await axios.request(config);
64
- if (loginResponse.status == 400) {
65
- throw new Error(loginResponse.data.message);
66
- }
67
- if (loginResponse.status == 401) {
68
- throw new Error(loginResponse.data.message);
69
- }
70
- let base64decoded = jwtDecode(accessToken);
71
- // let accessTokenExpires = base64decoded.exp;
72
- let accessTokenExpires = base64decoded.exp && base64decoded.exp * 1000;
73
- return {
74
- accessToken: accessToken,
75
- refreshToken: loginResponse.data.data.refreshToken,
76
- accessTokenExpires: accessTokenExpires,
77
- ...loginResponse.data.data,
78
- };
79
- }
80
- else {
81
- let data = JSON.stringify({
82
- username: identifier,
83
- email: identifier.includes('@') ? identifier : null,
84
- password: password
85
- });
86
- let config = {
87
- method: 'post',
88
- maxBodyLength: Infinity,
89
- url: `${process.env.API_URL}/api/iam/authenticate`,
90
- headers: {
91
- 'accept': '*/*',
92
- 'Content-Type': 'application/json',
93
- 'User-Agent': userAgent,
94
- },
95
- data: data
96
- };
97
- const loginResponse = await axios.request(config);
98
- // const authenticateResponse = await fetch(
99
- // `${process.env.API_URL}/api/iam/authenticate`,
100
- // {
101
- // method: "Post",
102
- // headers: {
103
- // 'accept': '*/*',
104
- // "Content-Type": "application/json"
105
- // },
106
- // body: JSON.stringify({
107
- // username: email,
108
- // email: email,
109
- // password: password
110
- // })
111
- // }
112
- // );
113
- // const loginResponse = await authenticateResponse.json();
114
- // const response = await fetch(
115
- // `${process.env.API_URL}/api/iam/me`,
116
- // {
117
- // method: "Get",
118
- // headers: {
119
- // "Content-Type": "application/json",
120
- // "Authorization": `Bearer ${loginResponse.data.accessToken}`,
121
- // },
122
- // }
123
- // );
124
- // const responseData = await response.json();
125
- if (loginResponse.status == 400) {
126
- throw new Error(loginResponse.data.message);
127
- }
128
- if (loginResponse.status == 401) {
129
- throw new Error(loginResponse.data.data.message);
130
- }
131
- let base64decoded = jwtDecode(loginResponse.data.data.accessToken);
132
- // let accessTokenExpires = base64decoded.exp;
133
- let accessTokenExpires = base64decoded.exp && base64decoded.exp * 1000;
134
- const returnResponse = {
135
- accessToken: loginResponse.data.data.accessToken,
136
- refreshToken: loginResponse.data.data.refreshToken,
137
- accessTokenExpires: accessTokenExpires,
138
- ...loginResponse.data.data,
139
- };
140
- return returnResponse;
141
- }
142
- }
143
- }
144
- catch (error) {
145
- throw new Error(error?.response?.data?.message);
146
- }
147
- },
148
- }),
149
- ],
150
- callbacks: {
151
- // @ts-ignore
152
- jwt: async ({ token, user }) => {
153
- // console.log("JWT callback called");
154
- const bufferTime = 60000;
155
- if (Date.now() >= (token.accessTokenExpires - bufferTime)) {
156
- // Call the refresh token function
157
- return await refreshAccessToken(token);
158
- }
159
- // If there is no user (first time login or session), we return the user data
160
- if (user) {
161
- // const base64decoded = jwtDecode(user.accessToken);
162
- // Convert from seconds to milliseconds
163
- // const accessTokenExpires = base64decoded.exp && base64decoded.exp * 1000;
164
- // const accessTokenExpires = user.accessTokenExpires * 1000;
165
- return {
166
- ...token,
167
- accessToken: user.accessToken,
168
- refreshToken: user.refreshToken,
169
- accessTokenExpires: user.accessTokenExpires,
170
- user: user, // Include the user data here
171
- };
172
- }
173
- return token; // If no update needed, just return the existing token
174
- },
175
- // @ts-ignore
176
- session: async ({ session, token }) => {
177
- // console.log("Session callback called");
178
- const user = token.user || {}; // Default to an empty object if user is undefined or null
179
- session.error = token.error ? token.error : null;
180
- // if (token.error) {
181
- // return null
182
- // }
183
- session.user = {
184
- ...user,
185
- accessToken: token?.accessToken,
186
- refreshToken: token?.refreshToken,
187
- accessTokenExpires: token?.accessTokenExpires && token?.accessTokenExpires, // Store the expiry time
188
- };
189
- return session;
190
- },
191
- },
192
- pages: {
193
- signIn: "/auth/login",
194
- },
195
- secret: process.env.NEXTAUTH_SECRET,
196
- };
197
- export default authProviders;
198
- //# sourceMappingURL=authProviders.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"authProviders.js","sourceRoot":"./","sources":["nextAuth/authProviders.tsx"],"names":[],"mappings":"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","sourcesContent":["import CredentialsProvider from \"next-auth/providers/credentials\";\nimport GoogleProvider from \"next-auth/providers/google\";\nimport { NextRequest } from \"next/server\";\nimport { jwtDecode } from \"jwt-decode\";\nimport { JWT } from \"next-auth/jwt\";\nimport axios from \"axios\";\nimport { signOut } from \"next-auth/react\";\nimport { refreshAccessToken } from \"./refreshAccessToken\";\nimport { NextAuthOptions } from \"next-auth\";\n\ntype Credentials = {\n username: string,\n email: string,\n password: string,\n identifier:string,\n accessToken: string,\n accessCode: string,\n};\n\nconst authProviders: NextAuthOptions = {\n session: {\n strategy: \"jwt\",\n },\n providers: [\n GoogleProvider({\n clientId: process.env.GOOGLE_ID!,\n clientSecret: process.env.GOOGLE_CLIENT_SECRET!\n }),\n CredentialsProvider({\n // @ts-ignore\n async authorize(credentials: Credentials, req: any) {\n const userAgent = req.headers['user-agent'];\n\n const { username, email, password, identifier, accessToken, accessCode } = credentials;\n\n console.log(credentials , '=========================');\n \n try {\n if (accessCode) {\n let config = {\n method: 'get',\n url: `${process.env.API_URL}/api/iam/google/authenticate?accessCode=${accessCode}`,\n headers: {\n 'User-Agent': userAgent,\n }\n };\n const loginResponse = await axios.request(config);\n if (loginResponse.status == 400) {\n throw new Error(loginResponse.data.message);\n }\n if (loginResponse.status == 401) {\n throw new Error(loginResponse.data.message);\n }\n\n let base64decoded = jwtDecode(loginResponse.data.data.accessToken);\n // let accessTokenExpires = base64decoded.exp;\n let accessTokenExpires = base64decoded.exp && base64decoded.exp * 1000;\n\n return {\n accessToken: loginResponse.data.data.accessToken,\n refreshToken: loginResponse.data.data.refreshToken,\n accessTokenExpires: accessTokenExpires,\n ...loginResponse.data.data,\n };\n\n } else {\n if (accessToken) {\n let data = JSON.stringify({\n username: identifier,\n email: identifier.includes('@')? identifier : null,\n password: password\n });\n\n let config = {\n method: 'get',\n url: `${process.env.API_URL}/api/iam/me`,\n headers: {\n 'accept': '*/*',\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${accessToken}`\n }\n };\n\n\n const loginResponse = await axios.request(config);\n\n if (loginResponse.status == 400) {\n throw new Error(loginResponse.data.message);\n }\n if (loginResponse.status == 401) {\n throw new Error(loginResponse.data.message);\n }\n \n let base64decoded = jwtDecode(accessToken);\n // let accessTokenExpires = base64decoded.exp;\n let accessTokenExpires = base64decoded.exp && base64decoded.exp * 1000;\n\n return {\n accessToken: accessToken,\n refreshToken: loginResponse.data.data.refreshToken,\n accessTokenExpires: accessTokenExpires,\n ...loginResponse.data.data,\n };\n\n } else {\n\n let data = JSON.stringify({\n username: identifier,\n email: identifier.includes('@')? identifier : null,\n password: password\n });\n\n let config = {\n method: 'post',\n maxBodyLength: Infinity,\n url: `${process.env.API_URL}/api/iam/authenticate`,\n headers: {\n 'accept': '*/*',\n 'Content-Type': 'application/json',\n 'User-Agent': userAgent,\n },\n data: data\n };\n\n\n const loginResponse = await axios.request(config);\n\n // const authenticateResponse = await fetch(\n // `${process.env.API_URL}/api/iam/authenticate`,\n // {\n // method: \"Post\",\n // headers: {\n // 'accept': '*/*', \n // \"Content-Type\": \"application/json\"\n // },\n // body: JSON.stringify({\n // username: email,\n // email: email,\n // password: password\n // })\n // }\n // );\n\n // const loginResponse = await authenticateResponse.json();\n\n // const response = await fetch(\n // `${process.env.API_URL}/api/iam/me`,\n // {\n // method: \"Get\",\n // headers: {\n // \"Content-Type\": \"application/json\",\n // \"Authorization\": `Bearer ${loginResponse.data.accessToken}`,\n // },\n // }\n // );\n\n // const responseData = await response.json();\n\n if (loginResponse.status == 400) {\n throw new Error(loginResponse.data.message);\n }\n if (loginResponse.status == 401) {\n throw new Error(loginResponse.data.data.message);\n }\n let base64decoded = jwtDecode(loginResponse.data.data.accessToken);\n // let accessTokenExpires = base64decoded.exp;\n let accessTokenExpires = base64decoded.exp && base64decoded.exp * 1000;\n const returnResponse = {\n accessToken: loginResponse.data.data.accessToken,\n refreshToken: loginResponse.data.data.refreshToken,\n accessTokenExpires: accessTokenExpires,\n ...loginResponse.data.data,\n }\n return returnResponse;\n }\n }\n } catch (error: any) {\n throw new Error(error?.response?.data?.message);\n }\n },\n }),\n ],\n callbacks: {\n // @ts-ignore\n jwt: async ({ token, user }) => {\n // console.log(\"JWT callback called\");\n const bufferTime = 60000;\n if (Date.now() >= (token.accessTokenExpires as number - bufferTime)) {\n // Call the refresh token function\n return await refreshAccessToken(token);\n }\n\n // If there is no user (first time login or session), we return the user data\n if (user) {\n // const base64decoded = jwtDecode(user.accessToken);\n // Convert from seconds to milliseconds\n // const accessTokenExpires = base64decoded.exp && base64decoded.exp * 1000; \n // const accessTokenExpires = user.accessTokenExpires * 1000; \n return {\n ...token,\n accessToken: user.accessToken,\n refreshToken: user.refreshToken,\n accessTokenExpires: user.accessTokenExpires,\n user: user, // Include the user data here\n };\n }\n\n return token; // If no update needed, just return the existing token\n },\n // @ts-ignore\n session: async ({ session, token }) => {\n // console.log(\"Session callback called\");\n\n const user = token.user || {}; // Default to an empty object if user is undefined or null\n session.error = token.error ? token.error : null;\n // if (token.error) {\n // return null\n // }\n session.user = {\n ...user, // Include the user info from the token\n accessToken: token?.accessToken, // Add the access token to session for client use\n refreshToken: token?.refreshToken, // Add refresh token to session for future use\n accessTokenExpires: token?.accessTokenExpires && token?.accessTokenExpires, // Store the expiry time\n };\n return session;\n\n },\n },\n pages: {\n signIn: \"/auth/login\",\n },\n secret: process.env.NEXTAUTH_SECRET,\n}\n\nexport default authProviders"]}