feat: Add next-auth

mack-mac
mackt 8 months ago
parent bd6d0ada99
commit 7b810bda0e

@ -1,4 +0,0 @@
# 开发环境使用的变量
NEXT_PUBLIC_HOST = 'http://39.103.180.196:9012/'

@ -3,7 +3,7 @@ const nextConfig = {
async rewrites() {
return [
{
source: '/api/:path*',
source: '/queyueapi/:path*',
destination: `${process.env.NEXT_PUBLIC_HOST}/:path*`,
},
];

138
package-lock.json generated

@ -10,6 +10,7 @@
"dependencies": {
"lodash": "^4.17.21",
"next": "14.1.3",
"next-auth": "^4.24.7",
"react": "^18",
"react-dom": "^18",
"swr": "^2.2.5"
@ -718,7 +719,6 @@
"version": "7.24.0",
"resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.24.0.tgz",
"integrity": "sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==",
"dev": true,
"dependencies": {
"regenerator-runtime": "^0.14.0"
},
@ -2500,6 +2500,14 @@
"node": ">= 8"
}
},
"node_modules/@panva/hkdf": {
"version": "1.1.1",
"resolved": "https://registry.npmmirror.com/@panva/hkdf/-/hkdf-1.1.1.tgz",
"integrity": "sha512-dhPeilub1NuIG0X5Kvhh9lH4iW3ZsHlnzwgwbOlgwQ2wG1IqFzsgHqmKPk3WzsdWAeaxKJxgM0+W433RmN45GA==",
"funding": {
"url": "https://github.com/sponsors/panva"
}
},
"node_modules/@pkgjs/parseargs": {
"version": "0.11.0",
"resolved": "https://registry.npmmirror.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
@ -4010,6 +4018,14 @@
"integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
"dev": true
},
"node_modules/cookie": {
"version": "0.5.0",
"resolved": "https://registry.npmmirror.com/cookie/-/cookie-0.5.0.tgz",
"integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/cosmiconfig": {
"version": "8.3.6",
"resolved": "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz",
@ -5940,6 +5956,14 @@
"jiti": "bin/jiti.js"
}
},
"node_modules/jose": {
"version": "4.15.5",
"resolved": "https://registry.npmmirror.com/jose/-/jose-4.15.5.tgz",
"integrity": "sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg==",
"funding": {
"url": "https://github.com/sponsors/panva"
}
},
"node_modules/js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz",
@ -6633,6 +6657,33 @@
}
}
},
"node_modules/next-auth": {
"version": "4.24.7",
"resolved": "https://registry.npmmirror.com/next-auth/-/next-auth-4.24.7.tgz",
"integrity": "sha512-iChjE8ov/1K/z98gdKbn2Jw+2vLgJtVV39X+rCP5SGnVQuco7QOr19FRNGMIrD8d3LYhHWV9j9sKLzq1aDWWQQ==",
"dependencies": {
"@babel/runtime": "^7.20.13",
"@panva/hkdf": "^1.0.2",
"cookie": "^0.5.0",
"jose": "^4.15.5",
"oauth": "^0.9.15",
"openid-client": "^5.4.0",
"preact": "^10.6.3",
"preact-render-to-string": "^5.1.19",
"uuid": "^8.3.2"
},
"peerDependencies": {
"next": "^12.2.5 || ^13 || ^14",
"nodemailer": "^6.6.5",
"react": "^17.0.2 || ^18",
"react-dom": "^17.0.2 || ^18"
},
"peerDependenciesMeta": {
"nodemailer": {
"optional": true
}
}
},
"node_modules/next/node_modules/postcss": {
"version": "8.4.31",
"resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.31.tgz",
@ -6697,6 +6748,11 @@
"node": ">=12"
}
},
"node_modules/oauth": {
"version": "0.9.15",
"resolved": "https://registry.npmmirror.com/oauth/-/oauth-0.9.15.tgz",
"integrity": "sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA=="
},
"node_modules/object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz",
@ -6706,6 +6762,14 @@
"node": ">=0.10.0"
}
},
"node_modules/object-hash": {
"version": "2.2.0",
"resolved": "https://registry.npmmirror.com/object-hash/-/object-hash-2.2.0.tgz",
"integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==",
"engines": {
"node": ">= 6"
}
},
"node_modules/object-inspect": {
"version": "1.13.1",
"resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.1.tgz",
@ -6812,6 +6876,14 @@
"ufo": "^1.3.0"
}
},
"node_modules/oidc-token-hash": {
"version": "5.0.3",
"resolved": "https://registry.npmmirror.com/oidc-token-hash/-/oidc-token-hash-5.0.3.tgz",
"integrity": "sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==",
"engines": {
"node": "^10.13.0 || >=12.0.0"
}
},
"node_modules/once": {
"version": "1.4.0",
"resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz",
@ -6833,6 +6905,31 @@
"node": ">=12"
}
},
"node_modules/openid-client": {
"version": "5.6.5",
"resolved": "https://registry.npmmirror.com/openid-client/-/openid-client-5.6.5.tgz",
"integrity": "sha512-5P4qO9nGJzB5PI0LFlhj4Dzg3m4odt0qsJTfyEtZyOlkgpILwEioOhVVJOrS1iVH494S4Ee5OCjjg6Bf5WOj3w==",
"dependencies": {
"jose": "^4.15.5",
"lru-cache": "^6.0.0",
"object-hash": "^2.2.0",
"oidc-token-hash": "^5.0.3"
},
"funding": {
"url": "https://github.com/sponsors/panva"
}
},
"node_modules/openid-client/node_modules/lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dependencies": {
"yallist": "^4.0.0"
},
"engines": {
"node": ">=10"
}
},
"node_modules/optionator": {
"version": "0.9.3",
"resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.3.tgz",
@ -7506,6 +7603,26 @@
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
"dev": true
},
"node_modules/preact": {
"version": "10.20.1",
"resolved": "https://registry.npmmirror.com/preact/-/preact-10.20.1.tgz",
"integrity": "sha512-JIFjgFg9B2qnOoGiYMVBtrcFxHqn+dNXbq76bVmcaHYJFYR4lW67AOcXgAYQQTDYXDOg/kTZrKPNCdRgJ2UJmw==",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/preact"
}
},
"node_modules/preact-render-to-string": {
"version": "5.2.6",
"resolved": "https://registry.npmmirror.com/preact-render-to-string/-/preact-render-to-string-5.2.6.tgz",
"integrity": "sha512-JyhErpYOvBV1hEPwIxc/fHWXPfnEGdRKxc8gFdAZ7XV4tlzyzG847XAyEZqoDnynP88akM4eaHcSOzNcLWFguw==",
"dependencies": {
"pretty-format": "^3.8.0"
},
"peerDependencies": {
"preact": ">=10"
}
},
"node_modules/prelude-ls": {
"version": "1.2.1",
"resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz",
@ -7539,6 +7656,11 @@
"node": ">=6.0.0"
}
},
"node_modules/pretty-format": {
"version": "3.8.0",
"resolved": "https://registry.npmmirror.com/pretty-format/-/pretty-format-3.8.0.tgz",
"integrity": "sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew=="
},
"node_modules/prop-types": {
"version": "15.8.1",
"resolved": "https://registry.npmmirror.com/prop-types/-/prop-types-15.8.1.tgz",
@ -7627,8 +7749,7 @@
"node_modules/regenerator-runtime": {
"version": "0.14.1",
"resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
"integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
"dev": true
"integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
},
"node_modules/regexp.prototype.flags": {
"version": "1.5.2",
@ -8591,6 +8712,14 @@
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
"dev": true
},
"node_modules/uuid": {
"version": "8.3.2",
"resolved": "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz",
"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
"bin": {
"uuid": "dist/bin/uuid"
}
},
"node_modules/vite": {
"version": "5.1.6",
"resolved": "https://registry.npmmirror.com/vite/-/vite-5.1.6.tgz",
@ -8823,8 +8952,7 @@
"node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"node_modules/yargs": {
"version": "17.7.2",

@ -11,6 +11,7 @@
"dependencies": {
"lodash": "^4.17.21",
"next": "14.1.3",
"next-auth": "^4.24.7",
"react": "^18",
"react-dom": "^18",
"swr": "^2.2.5"

@ -0,0 +1,69 @@
import { NextAuthOptions } from 'next-auth';
import CredentialsProvider from 'next-auth/providers/credentials';
import { apiUserLogin } from '@/services';
const options: NextAuthOptions = {
providers: [
CredentialsProvider({
name: 'Credentials',
credentials: {
mobile: {
label: 'mobile:',
type: 'text',
placeholder: 'your-cool-mobile',
},
mobileCheckCode: {
label: 'mobileCheckCode:',
type: 'password',
placeholder: 'mobileCheckCode',
},
},
async authorize(credentials) {
const params = {
mobile: credentials?.mobile ?? '',
mobileCheckCode: credentials?.mobileCheckCode ?? '',
deviceId: 'aaaaaaaaaaaaa',
};
try {
const result = await apiUserLogin(params);
if (result.code === 200) {
return result.data;
} else {
console.log(`error ${result.code}/${result.messgae}`);
throw new Error(`error ${result.code}/${result.messgae}`);
}
} catch (error) {
throw error;
}
},
}),
],
session: {
strategy: 'jwt',
maxAge: 7 * 24 * 60 * 60,
},
pages: {
signIn: '/', // 重定向到 /login
},
// callbacks: {
// async jwt({ token, user }) {
// if (user) {
// console.log(user);
// // token.id = user.id;
// // token.phone = user.phone;
// }
// return token;
// },
// async session({ session, token }) {
// return session;
// // (session as Session & { accessToken: string | undefined }).accessToken = token.accessToken as string;
// // if (session.user) {
// // session.user.name = token.name as string;
// // }
// // return session;
// },
// },
};
export default options;

@ -0,0 +1,7 @@
import NextAuth from 'next-auth';
import options from './options';
const handler = NextAuth(options);
export { handler as GET, handler as POST };

@ -49,7 +49,7 @@ export default function Header() {
</ul>
<button
className="w-[74px] h-[36px] border-[#000] border-[1.5px] rounded-[60px] text-[17px]"
className="w-[74px] h-[36px] border-[#000] border-[1.5px] rounded-[60px] text-[17px] hover:bg-theme hover:border-theme hover:text-[#fff] "
onClick={handleLoginModalToggle}
>

@ -3,6 +3,7 @@
import React, { useState, useMemo } from 'react';
import { debounce } from 'lodash';
import { useSession, signIn, signOut } from 'next-auth/react';
import { Input, Button } from '@/components';
import { apiSendSMS, apiUserLogin } from '@/services';
@ -30,12 +31,7 @@ export default function LoginForm({ onClose }: { onClose: () => void }) {
};
const handleLogin = async () => {
console.log(111);
const result = await apiUserLogin({ mobile: phone, mobileCheckCode: authCode, deviceId });
if (result.code === 200) {
onClose();
}
signIn('credentials', { mobile: phone, mobileCheckCode: authCode });
};
const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>, fn: (text: string) => void) => {
@ -83,7 +79,7 @@ export default function LoginForm({ onClose }: { onClose: () => void }) {
type="primary"
className="w-full h-[56px] mt-[30px] rounded-[100px] font-size-[14px] leading-[20px]"
disabled={activeLogin}
onClick={debounce(handleLogin, 300)}
onClick={handleLogin}
>
</Button>

@ -0,0 +1,7 @@
// Without a defined matcher, this one line applies next-auth
// to the entire project
export { default } from 'next-auth/middleware';
// Applies next-auth only to matching routes - can be regex
// Ref: https://nextjs.org/docs/app/building-your-application/routing/middleware#matcher
export const config = { matcher: ['/extra', '/dashboard'] };

@ -20,26 +20,6 @@ export const apiSendSMS = async (params: {
return res;
};
/**
* @description /
* @id
* @deviceId id
* @countryCode +86
* @imageCheckCode
*/
export const apiUserLogin = async (params: {
mobile: string;
mobileCheckCode: string;
deviceId: string;
deviceBrand?: string;
}) => {
const res = await request('/user/user/appLogin', {
method: 'POST',
body: params,
});
return res;
};
/**
* @description 退
*/

@ -1,4 +1,24 @@
import { request, verifyResponse } from '@/utils';
import { request, verifyResponse, getServerApiUrl } from '@/utils';
/**
* @description /
* @id
* @deviceId id
* @countryCode +86
* @imageCheckCode
*/
export const apiUserLogin = async (params: {
mobile: string;
mobileCheckCode: string;
deviceId: string;
deviceBrand?: string;
}) => {
const res = await request(getServerApiUrl('/luoo-user/user/appLogin'), {
method: 'POST',
body: params,
});
return res;
};
/**
* @description

@ -1,8 +1,13 @@
/**
* @description API URL
*/
export const getApiUrl = (originUrl: string): string => {
return `api/${originUrl}`;
export const getServerApiUrl = (originUrl: string): string => {
return `${process.env.NEXT_PUBLIC_HOST}${originUrl}`;
};
export const getClientApiUrl = (originUrl: string): string => {
return `queyueapi/${originUrl}`;
};
/**

@ -1,3 +1,4 @@
export { default as request } from './request';
export { default as verifyResponse } from './verifyResponse';
export * from './helpers';
export * from './wrapper';

@ -6,7 +6,7 @@ export const nextFetchGet = async (api: string) => {
const token = nextCookies.get('token') || '';
const role = nextCookies.get('role');
const roleId = nextCookies.get('roleId');
const url = `${process.env.BASE_FETCH_URL}/api/be${api}`;
const url = `${process.env.BASE_FETCH_URL}/queyueapi/be${api}`;
const res = await fetch(url, {
headers: token ? { Authorization: 'Bearer ' + token } : {},
});

@ -11,10 +11,11 @@ interface RequestOptions extends RequestInit {
// 发送数据请求
const request = async (url: string, config?: RequestOptions) => {
const method = config?.method || 'GET';
const finalUrl = method === 'POST' ? `api/${url}` : `${process.env.NEXT_PUBLIC_HOST}/${url}`;
// const finalUrl = method === 'POST' ? `/queyueapi${url}` : `${process.env.NEXT_PUBLIC_HOST}/${url}`;
const finalUrl = method === 'POST' ? `${url}` : `${process.env.NEXT_PUBLIC_HOST}/${url}`;
const inital: RequestOptions = {
method: 'GET',
method: method,
body: null,
headers: {
'Content-Type': 'application/x-www-form-urlencoded',

@ -27,5 +27,7 @@ export default defineConfig({
'switch-span-base': 'bg-white dark:bg-gray-300 switch-animation',
'text-theme': 'text-[#B44343]',
'text-overflow': 'overflow-hidden whitespace-nowrap overflow-ellipsis truncate',
'border-theme': 'border-[#B44343]',
'bg-theme': 'bg-[#B44343]',
},
});

@ -275,7 +275,7 @@
"@babel/plugin-transform-modules-commonjs" "^7.24.1"
"@babel/plugin-transform-typescript" "^7.24.1"
"@babel/runtime@^7.23.2":
"@babel/runtime@^7.20.13", "@babel/runtime@^7.23.2":
version "7.24.0"
resolved "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.24.0.tgz"
integrity sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==
@ -921,6 +921,11 @@
"@nodelib/fs.scandir" "2.1.5"
fastq "^1.6.0"
"@panva/hkdf@^1.0.2":
version "1.1.1"
resolved "https://registry.npmmirror.com/@panva/hkdf/-/hkdf-1.1.1.tgz"
integrity sha512-dhPeilub1NuIG0X5Kvhh9lH4iW3ZsHlnzwgwbOlgwQ2wG1IqFzsgHqmKPk3WzsdWAeaxKJxgM0+W433RmN45GA==
"@pkgjs/parseargs@^0.11.0":
version "0.11.0"
resolved "https://registry.npmmirror.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz"
@ -1821,6 +1826,11 @@ convert-source-map@^2.0.0:
resolved "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz"
integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
cookie@^0.5.0:
version "0.5.0"
resolved "https://registry.npmmirror.com/cookie/-/cookie-0.5.0.tgz"
integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==
cosmiconfig-typescript-loader@^5.0.0:
version "5.0.0"
resolved "https://registry.npmmirror.com/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-5.0.0.tgz"
@ -3096,6 +3106,11 @@ jiti@^1.19.1, jiti@^1.20.0:
resolved "https://registry.npmmirror.com/jiti/-/jiti-1.21.0.tgz"
integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==
jose@^4.15.5:
version "4.15.5"
resolved "https://registry.npmmirror.com/jose/-/jose-4.15.5.tgz"
integrity sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg==
"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
version "4.0.0"
resolved "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz"
@ -3463,7 +3478,22 @@ natural-compare@^1.4.0:
resolved "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz"
integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
next@14.1.3:
next-auth@^4.24.7:
version "4.24.7"
resolved "https://registry.npmmirror.com/next-auth/-/next-auth-4.24.7.tgz"
integrity sha512-iChjE8ov/1K/z98gdKbn2Jw+2vLgJtVV39X+rCP5SGnVQuco7QOr19FRNGMIrD8d3LYhHWV9j9sKLzq1aDWWQQ==
dependencies:
"@babel/runtime" "^7.20.13"
"@panva/hkdf" "^1.0.2"
cookie "^0.5.0"
jose "^4.15.5"
oauth "^0.9.15"
openid-client "^5.4.0"
preact "^10.6.3"
preact-render-to-string "^5.1.19"
uuid "^8.3.2"
"next@^12.2.5 || ^13 || ^14", next@14.1.3:
version "14.1.3"
resolved "https://registry.npmmirror.com/next/-/next-14.1.3.tgz"
integrity sha512-oexgMV2MapI0UIWiXKkixF8J8ORxpy64OuJ/J9oVUmIthXOUCcuVEZX+dtpgq7wIfIqtBwQsKEDXejcjTsan9g==
@ -3520,11 +3550,21 @@ npm-run-path@^5.1.0:
dependencies:
path-key "^4.0.0"
oauth@^0.9.15:
version "0.9.15"
resolved "https://registry.npmmirror.com/oauth/-/oauth-0.9.15.tgz"
integrity sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA==
object-assign@^4.1.1:
version "4.1.1"
resolved "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz"
integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
object-hash@^2.2.0:
version "2.2.0"
resolved "https://registry.npmmirror.com/object-hash/-/object-hash-2.2.0.tgz"
integrity sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==
object-inspect@^1.13.1:
version "1.13.1"
resolved "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.1.tgz"
@ -3600,6 +3640,11 @@ ofetch@^1.3.3:
node-fetch-native "^1.4.0"
ufo "^1.3.0"
oidc-token-hash@^5.0.3:
version "5.0.3"
resolved "https://registry.npmmirror.com/oidc-token-hash/-/oidc-token-hash-5.0.3.tgz"
integrity sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==
once@^1.3.0:
version "1.4.0"
resolved "https://registry.npmmirror.com/once/-/once-1.4.0.tgz"
@ -3628,6 +3673,16 @@ onetime@^6.0.0:
dependencies:
mimic-fn "^4.0.0"
openid-client@^5.4.0:
version "5.6.5"
resolved "https://registry.npmmirror.com/openid-client/-/openid-client-5.6.5.tgz"
integrity sha512-5P4qO9nGJzB5PI0LFlhj4Dzg3m4odt0qsJTfyEtZyOlkgpILwEioOhVVJOrS1iVH494S4Ee5OCjjg6Bf5WOj3w==
dependencies:
jose "^4.15.5"
lru-cache "^6.0.0"
object-hash "^2.2.0"
oidc-token-hash "^5.0.3"
optionator@^0.9.3:
version "0.9.3"
resolved "https://registry.npmmirror.com/optionator/-/optionator-0.9.3.tgz"
@ -4059,6 +4114,18 @@ postcss@8.4.31:
picocolors "^1.0.0"
source-map-js "^1.0.2"
preact-render-to-string@^5.1.19:
version "5.2.6"
resolved "https://registry.npmmirror.com/preact-render-to-string/-/preact-render-to-string-5.2.6.tgz"
integrity sha512-JyhErpYOvBV1hEPwIxc/fHWXPfnEGdRKxc8gFdAZ7XV4tlzyzG847XAyEZqoDnynP88akM4eaHcSOzNcLWFguw==
dependencies:
pretty-format "^3.8.0"
preact@^10.6.3, preact@>=10:
version "10.20.1"
resolved "https://registry.npmmirror.com/preact/-/preact-10.20.1.tgz"
integrity sha512-JIFjgFg9B2qnOoGiYMVBtrcFxHqn+dNXbq76bVmcaHYJFYR4lW67AOcXgAYQQTDYXDOg/kTZrKPNCdRgJ2UJmw==
prelude-ls@^1.2.1:
version "1.2.1"
resolved "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz"
@ -4076,6 +4143,11 @@ prettier@^3.2.5, prettier@>=3.0.0:
resolved "https://registry.npmmirror.com/prettier/-/prettier-3.2.5.tgz"
integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==
pretty-format@^3.8.0:
version "3.8.0"
resolved "https://registry.npmmirror.com/pretty-format/-/pretty-format-3.8.0.tgz"
integrity sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==
prop-types@^15.8.1:
version "15.8.1"
resolved "https://registry.npmmirror.com/prop-types/-/prop-types-15.8.1.tgz"
@ -4095,7 +4167,7 @@ queue-microtask@^1.2.2:
resolved "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz"
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
react-dom@^18, react-dom@^18.2.0:
"react-dom@^17.0.2 || ^18", react-dom@^18, react-dom@^18.2.0:
version "18.2.0"
resolved "https://registry.npmmirror.com/react-dom/-/react-dom-18.2.0.tgz"
integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==
@ -4108,7 +4180,7 @@ react-is@^16.13.1:
resolved "https://registry.npmmirror.com/react-is/-/react-is-16.13.1.tgz"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
"react@^16.11.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", react@^18, react@^18.2.0, "react@>= 16.8.0 || 17.x.x || ^18.0.0-0":
"react@^16.11.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^17.0.2 || ^18", react@^18, react@^18.2.0, "react@>= 16.8.0 || 17.x.x || ^18.0.0-0":
version "18.2.0"
resolved "https://registry.npmmirror.com/react/-/react-18.2.0.tgz"
integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==
@ -4780,6 +4852,11 @@ util-deprecate@^1.0.2:
resolved "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz"
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
uuid@^8.3.2:
version "8.3.2"
resolved "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz"
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
"vite@^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0":
version "5.1.6"
resolved "https://registry.npmmirror.com/vite/-/vite-5.1.6.tgz"

Loading…
Cancel
Save