improvement: suggestion feature done, adjust i18n language key

This commit is contained in:
Alikia2x 2024-04-10 17:34:44 +08:00
parent 04d72d3ca8
commit f1d22f9d91
10 changed files with 102 additions and 79 deletions

View File

@ -1,9 +1,12 @@
import { completeGoogle } from "search-engine-autocomplete"; import { completeGoogle } from "search-engine-autocomplete";
import { NextRequest } from "next/server" import { NextRequest } from "next/server"
import { suggestionsResponse } from "@/global";
export async function GET(request: NextRequest) { export async function GET(request: NextRequest) {
const query = request.nextUrl.searchParams.get('q')!; const query = request.nextUrl.searchParams.get('q')!;
const language = "ja-JP"; const t = parseInt(request.nextUrl.searchParams.get('t') || "0") || null;
let language = request.nextUrl.searchParams.get('l');
if (language === null) language = 'en-US';
const data = await completeGoogle(query, language); const data = await completeGoogle(query, language);
return new Response(JSON.stringify(data)); return new Response(JSON.stringify({...data, time: t} as suggestionsResponse));
} }

View File

@ -3,20 +3,31 @@ import SuggestionBox from "./suggestionBox";
import Suggestion from "./suggestion"; import Suggestion from "./suggestion";
import { useRecoilValue } from "recoil"; import { useRecoilValue } from "recoil";
import { queryState } from "@/components/state/query"; import { queryState } from "@/components/state/query";
import { Suggestion as SuggestionType, Suggestions } from "search-engine-autocomplete";
import { useLocale } from "next-intl";
import { suggestionsResponse } from "@/global";
export default function () { export default function () {
const [suggestion, setSuggetsion] = useState([]); const [suggestion, setSuggetsion] = useState([] as string[]);
const [lastUpdate, setLastUpdate] = useState(0);
const query = useRecoilValue(queryState); const query = useRecoilValue(queryState);
const lang = useLocale();
useEffect(() => { useEffect(() => {
fetch(`/api/suggestion?q=${query}`) const time = new Date().getTime().toString();
fetch(`/api/suggestion?q=${query}&l=${lang}&t=${time}`)
.then((res) => res.json()) .then((res) => res.json())
.then((data) => { .then((data: suggestionsResponse) => {
setSuggetsion(data); const suggestions = data.suggestions;
if (data.time < lastUpdate) return;
setSuggetsion((_) => {
return suggestions.map((s: SuggestionType) => s.suggestion);
});
setLastUpdate(new Date().getTime());
}); });
}, [query]); }, [query]);
return ( return (
<SuggestionBox> <SuggestionBox>
{suggestion.map((s: string) => { {suggestion.slice(0, 10).map((s: string) => {
return <Suggestion key={s}>{s}</Suggestion>; return <Suggestion key={s}>{s}</Suggestion>;
})} })}
</SuggestionBox> </SuggestionBox>

View File

@ -1,7 +1,7 @@
export default function(props: { children: React.ReactNode }) { export default function(props: { children: React.ReactNode }) {
return ( return (
<div className="relative bg-slate-200 dark:bg-zinc-800 w-11/12 sm:w-[700px] h-auto left-1/2 <div className={`relative bg-slate-200 dark:bg-zinc-800 w-11/12 sm:w-[700px] h-auto left-1/2
translate-x-[-50%] top-72 z-20 rounded overflow-hidden duration-250"> translate-x-[-50%] top-72 z-20 rounded overflow-hidden duration-250 ${props.children ? "opacity-100" : "opacity-0"}`}>
{props.children} {props.children}
</div> </div>
); );

9
global.d.ts vendored
View File

@ -1,3 +1,5 @@
import { Suggestion } from "search-engine-autocomplete";
type settings = { type settings = {
version: number; version: number;
elementBackdrop: boolean; elementBackdrop: boolean;
@ -8,3 +10,10 @@ type settings = {
[key: string]: string, [key: string]: string,
}; };
}; };
type suggestionsResponse = {
suggestions: Suggestion[],
query: string,
verbatimRelevance: number,
time: number
}

26
i18n.ts
View File

@ -1,14 +1,14 @@
import {notFound} from 'next/navigation'; import { notFound } from "next/navigation";
import {getRequestConfig} from 'next-intl/server'; import { getRequestConfig } from "next-intl/server";
// Can be imported from a shared config // Can be imported from a shared config
const locales = ['en', 'zh']; const locales = ["en-US", "zh-CN"];
export default getRequestConfig(async ({locale}) => { export default getRequestConfig(async ({ locale }) => {
// Validate that the incoming `locale` parameter is valid // Validate that the incoming `locale` parameter is valid
if (!locales.includes(locale as any)) notFound(); if (!locales.includes(locale as any)) notFound();
return { return {
messages: (await import(`/messages/${locale}.json`)).default messages: (await import(`/messages/${locale}.json`)).default
}; };
}); });

View File

@ -2,13 +2,13 @@ import createMiddleware from 'next-intl/middleware';
export default createMiddleware({ export default createMiddleware({
// A list of all locales that are supported // A list of all locales that are supported
locales: ['en', 'zh'], locales: ['en-US', 'zh-CN'],
// Used when no locale matches // Used when no locale matches
defaultLocale: 'en' defaultLocale: 'en-US'
}); });
export const config = { export const config = {
// Match only internationalized pathnames // Match only internationalized pathnames
matcher: ['/', '/(zh|en)/:path*'] matcher: ['/', '/(zh-CN|en-US)/:path*']
}; };

View File

@ -20,7 +20,7 @@
"react": "^18.2.0", "react": "^18.2.0",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"recoil": "^0.7.7", "recoil": "^0.7.7",
"search-engine-autocomplete": "^0.4.2", "search-engine-autocomplete": "^0.4.3",
"tailwind-merge": "^2.2.2", "tailwind-merge": "^2.2.2",
"ts-node": "^10.9.2", "ts-node": "^10.9.2",
"valid-url": "^1.0.9", "valid-url": "^1.0.9",
@ -31,7 +31,7 @@
"@testing-library/jest-dom": "^6.4.2", "@testing-library/jest-dom": "^6.4.2",
"@testing-library/react": "^14.3.0", "@testing-library/react": "^14.3.0",
"@types/jest": "^29.5.12", "@types/jest": "^29.5.12",
"@types/node": "^20.12.6", "@types/node": "^20.12.7",
"@types/punycode": "^2.1.4", "@types/punycode": "^2.1.4",
"@types/react": "^18.2.75", "@types/react": "^18.2.75",
"@types/react-dom": "^18.2.24", "@types/react-dom": "^18.2.24",

View File

@ -36,14 +36,14 @@ dependencies:
specifier: ^0.7.7 specifier: ^0.7.7
version: 0.7.7(react-dom@18.2.0)(react@18.2.0) version: 0.7.7(react-dom@18.2.0)(react@18.2.0)
search-engine-autocomplete: search-engine-autocomplete:
specifier: ^0.4.2 specifier: ^0.4.3
version: 0.4.2 version: 0.4.3
tailwind-merge: tailwind-merge:
specifier: ^2.2.2 specifier: ^2.2.2
version: 2.2.2 version: 2.2.2
ts-node: ts-node:
specifier: ^10.9.2 specifier: ^10.9.2
version: 10.9.2(@types/node@20.12.6)(typescript@5.4.4) version: 10.9.2(@types/node@20.12.7)(typescript@5.4.4)
valid-url: valid-url:
specifier: ^1.0.9 specifier: ^1.0.9
version: 1.0.9 version: 1.0.9
@ -65,8 +65,8 @@ devDependencies:
specifier: ^29.5.12 specifier: ^29.5.12
version: 29.5.12 version: 29.5.12
'@types/node': '@types/node':
specifier: ^20.12.6 specifier: ^20.12.7
version: 20.12.6 version: 20.12.7
'@types/punycode': '@types/punycode':
specifier: ^2.1.4 specifier: ^2.1.4
version: 2.1.4 version: 2.1.4
@ -84,7 +84,7 @@ devDependencies:
version: 10.4.19(postcss@8.4.38) version: 10.4.19(postcss@8.4.38)
jest: jest:
specifier: ^29.7.0 specifier: ^29.7.0
version: 29.7.0(@types/node@20.12.6)(ts-node@10.9.2) version: 29.7.0(@types/node@20.12.7)(ts-node@10.9.2)
jest-environment-jsdom: jest-environment-jsdom:
specifier: ^29.7.0 specifier: ^29.7.0
version: 29.7.0 version: 29.7.0
@ -570,7 +570,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies: dependencies:
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/node': 20.12.6 '@types/node': 20.12.7
chalk: 4.1.2 chalk: 4.1.2
jest-message-util: 29.7.0 jest-message-util: 29.7.0
jest-util: 29.7.0 jest-util: 29.7.0
@ -591,14 +591,14 @@ packages:
'@jest/test-result': 29.7.0 '@jest/test-result': 29.7.0
'@jest/transform': 29.7.0 '@jest/transform': 29.7.0
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/node': 20.12.6 '@types/node': 20.12.7
ansi-escapes: 4.3.2 ansi-escapes: 4.3.2
chalk: 4.1.2 chalk: 4.1.2
ci-info: 3.9.0 ci-info: 3.9.0
exit: 0.1.2 exit: 0.1.2
graceful-fs: 4.2.11 graceful-fs: 4.2.11
jest-changed-files: 29.7.0 jest-changed-files: 29.7.0
jest-config: 29.7.0(@types/node@20.12.6)(ts-node@10.9.2) jest-config: 29.7.0(@types/node@20.12.7)(ts-node@10.9.2)
jest-haste-map: 29.7.0 jest-haste-map: 29.7.0
jest-message-util: 29.7.0 jest-message-util: 29.7.0
jest-regex-util: 29.6.3 jest-regex-util: 29.6.3
@ -626,7 +626,7 @@ packages:
dependencies: dependencies:
'@jest/fake-timers': 29.7.0 '@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/node': 20.12.6 '@types/node': 20.12.7
jest-mock: 29.7.0 jest-mock: 29.7.0
dev: true dev: true
@ -653,7 +653,7 @@ packages:
dependencies: dependencies:
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@sinonjs/fake-timers': 10.3.0 '@sinonjs/fake-timers': 10.3.0
'@types/node': 20.12.6 '@types/node': 20.12.7
jest-message-util: 29.7.0 jest-message-util: 29.7.0
jest-mock: 29.7.0 jest-mock: 29.7.0
jest-util: 29.7.0 jest-util: 29.7.0
@ -686,7 +686,7 @@ packages:
'@jest/transform': 29.7.0 '@jest/transform': 29.7.0
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@jridgewell/trace-mapping': 0.3.25 '@jridgewell/trace-mapping': 0.3.25
'@types/node': 20.12.6 '@types/node': 20.12.7
chalk: 4.1.2 chalk: 4.1.2
collect-v8-coverage: 1.0.2 collect-v8-coverage: 1.0.2
exit: 0.1.2 exit: 0.1.2
@ -774,7 +774,7 @@ packages:
'@jest/schemas': 29.6.3 '@jest/schemas': 29.6.3
'@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 3.0.4 '@types/istanbul-reports': 3.0.4
'@types/node': 20.12.6 '@types/node': 20.12.7
'@types/yargs': 17.0.32 '@types/yargs': 17.0.32
chalk: 4.1.2 chalk: 4.1.2
dev: true dev: true
@ -3194,7 +3194,7 @@ packages:
chalk: 3.0.0 chalk: 3.0.0
css.escape: 1.5.1 css.escape: 1.5.1
dom-accessibility-api: 0.6.3 dom-accessibility-api: 0.6.3
jest: 29.7.0(@types/node@20.12.6)(ts-node@10.9.2) jest: 29.7.0(@types/node@20.12.7)(ts-node@10.9.2)
lodash: 4.17.21 lodash: 4.17.21
redent: 3.0.0 redent: 3.0.0
dev: true dev: true
@ -3266,7 +3266,7 @@ packages:
/@types/graceful-fs@4.1.9: /@types/graceful-fs@4.1.9:
resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==}
dependencies: dependencies:
'@types/node': 20.12.6 '@types/node': 20.12.7
dev: true dev: true
/@types/istanbul-lib-coverage@2.0.6: /@types/istanbul-lib-coverage@2.0.6:
@ -3295,13 +3295,13 @@ packages:
/@types/jsdom@20.0.1: /@types/jsdom@20.0.1:
resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==}
dependencies: dependencies:
'@types/node': 20.12.6 '@types/node': 20.12.7
'@types/tough-cookie': 4.0.5 '@types/tough-cookie': 4.0.5
parse5: 7.1.2 parse5: 7.1.2
dev: true dev: true
/@types/node@20.12.6: /@types/node@20.12.7:
resolution: {integrity: sha512-3KurE8taB8GCvZBPngVbp0lk5CKi8M9f9k1rsADh0Evdz5SzJ+Q+Hx9uHoFGsLnLnd1xmkDQr2hVhlA0Mn0lKQ==} resolution: {integrity: sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==}
dependencies: dependencies:
undici-types: 5.26.5 undici-types: 5.26.5
@ -3466,7 +3466,7 @@ packages:
postcss: ^8.1.0 postcss: ^8.1.0
dependencies: dependencies:
browserslist: 4.23.0 browserslist: 4.23.0
caniuse-lite: 1.0.30001607 caniuse-lite: 1.0.30001608
fraction.js: 4.3.7 fraction.js: 4.3.7
normalize-range: 0.1.2 normalize-range: 0.1.2
picocolors: 1.0.0 picocolors: 1.0.0
@ -3583,8 +3583,8 @@ packages:
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true hasBin: true
dependencies: dependencies:
caniuse-lite: 1.0.30001607 caniuse-lite: 1.0.30001608
electron-to-chromium: 1.4.730 electron-to-chromium: 1.4.731
node-releases: 2.0.14 node-releases: 2.0.14
update-browserslist-db: 1.0.13(browserslist@4.23.0) update-browserslist-db: 1.0.13(browserslist@4.23.0)
@ -3642,8 +3642,8 @@ packages:
engines: {node: '>=10'} engines: {node: '>=10'}
dev: true dev: true
/caniuse-lite@1.0.30001607: /caniuse-lite@1.0.30001608:
resolution: {integrity: sha512-WcvhVRjXLKFB/kmOFVwELtMxyhq3iM/MvmXcyCe2PNf166c39mptscOc/45TTS96n2gpNV2z7+NakArTWZCQ3w==} resolution: {integrity: sha512-cjUJTQkk9fQlJR2s4HMuPMvTiRggl0rAVMtthQuyOlDWuqHXqN8azLq+pi8B2TjwKJ32diHjUqRIKeFX4z1FoA==}
/chalk@2.4.2: /chalk@2.4.2:
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
@ -3787,7 +3787,7 @@ packages:
/convert-source-map@2.0.0: /convert-source-map@2.0.0:
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
/create-jest@29.7.0(@types/node@20.12.6)(ts-node@10.9.2): /create-jest@29.7.0(@types/node@20.12.7)(ts-node@10.9.2):
resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
hasBin: true hasBin: true
@ -3796,7 +3796,7 @@ packages:
chalk: 4.1.2 chalk: 4.1.2
exit: 0.1.2 exit: 0.1.2
graceful-fs: 4.2.11 graceful-fs: 4.2.11
jest-config: 29.7.0(@types/node@20.12.6)(ts-node@10.9.2) jest-config: 29.7.0(@types/node@20.12.7)(ts-node@10.9.2)
jest-util: 29.7.0 jest-util: 29.7.0
prompts: 2.4.2 prompts: 2.4.2
transitivePeerDependencies: transitivePeerDependencies:
@ -3976,8 +3976,8 @@ packages:
/eastasianwidth@0.2.0: /eastasianwidth@0.2.0:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
/electron-to-chromium@1.4.730: /electron-to-chromium@1.4.731:
resolution: {integrity: sha512-oJRPo82XEqtQAobHpJIR3zW5YO3sSRRkPz2an4yxi1UvqhsGm54vR/wzTFV74a3soDOJ8CKW7ajOOX5ESzddwg==} resolution: {integrity: sha512-+TqVfZjpRz2V/5SPpmJxq9qK620SC5SqCnxQIOi7i/U08ZDcTpKbT7Xjj9FU5CbXTMUb4fywbIr8C7cGv4hcjw==}
/emittery@0.13.1: /emittery@0.13.1:
resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==}
@ -4684,7 +4684,7 @@ packages:
'@jest/expect': 29.7.0 '@jest/expect': 29.7.0
'@jest/test-result': 29.7.0 '@jest/test-result': 29.7.0
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/node': 20.12.6 '@types/node': 20.12.7
chalk: 4.1.2 chalk: 4.1.2
co: 4.6.0 co: 4.6.0
dedent: 1.5.1 dedent: 1.5.1
@ -4705,7 +4705,7 @@ packages:
- supports-color - supports-color
dev: true dev: true
/jest-cli@29.7.0(@types/node@20.12.6)(ts-node@10.9.2): /jest-cli@29.7.0(@types/node@20.12.7)(ts-node@10.9.2):
resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
hasBin: true hasBin: true
@ -4719,10 +4719,10 @@ packages:
'@jest/test-result': 29.7.0 '@jest/test-result': 29.7.0
'@jest/types': 29.6.3 '@jest/types': 29.6.3
chalk: 4.1.2 chalk: 4.1.2
create-jest: 29.7.0(@types/node@20.12.6)(ts-node@10.9.2) create-jest: 29.7.0(@types/node@20.12.7)(ts-node@10.9.2)
exit: 0.1.2 exit: 0.1.2
import-local: 3.1.0 import-local: 3.1.0
jest-config: 29.7.0(@types/node@20.12.6)(ts-node@10.9.2) jest-config: 29.7.0(@types/node@20.12.7)(ts-node@10.9.2)
jest-util: 29.7.0 jest-util: 29.7.0
jest-validate: 29.7.0 jest-validate: 29.7.0
yargs: 17.7.2 yargs: 17.7.2
@ -4733,7 +4733,7 @@ packages:
- ts-node - ts-node
dev: true dev: true
/jest-config@29.7.0(@types/node@20.12.6)(ts-node@10.9.2): /jest-config@29.7.0(@types/node@20.12.7)(ts-node@10.9.2):
resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
peerDependencies: peerDependencies:
@ -4748,7 +4748,7 @@ packages:
'@babel/core': 7.24.4 '@babel/core': 7.24.4
'@jest/test-sequencer': 29.7.0 '@jest/test-sequencer': 29.7.0
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/node': 20.12.6 '@types/node': 20.12.7
babel-jest: 29.7.0(@babel/core@7.24.4) babel-jest: 29.7.0(@babel/core@7.24.4)
chalk: 4.1.2 chalk: 4.1.2
ci-info: 3.9.0 ci-info: 3.9.0
@ -4768,7 +4768,7 @@ packages:
pretty-format: 29.7.0 pretty-format: 29.7.0
slash: 3.0.0 slash: 3.0.0
strip-json-comments: 3.1.1 strip-json-comments: 3.1.1
ts-node: 10.9.2(@types/node@20.12.6)(typescript@5.4.4) ts-node: 10.9.2(@types/node@20.12.7)(typescript@5.4.4)
transitivePeerDependencies: transitivePeerDependencies:
- babel-plugin-macros - babel-plugin-macros
- supports-color - supports-color
@ -4815,7 +4815,7 @@ packages:
'@jest/fake-timers': 29.7.0 '@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/jsdom': 20.0.1 '@types/jsdom': 20.0.1
'@types/node': 20.12.6 '@types/node': 20.12.7
jest-mock: 29.7.0 jest-mock: 29.7.0
jest-util: 29.7.0 jest-util: 29.7.0
jsdom: 20.0.3 jsdom: 20.0.3
@ -4832,7 +4832,7 @@ packages:
'@jest/environment': 29.7.0 '@jest/environment': 29.7.0
'@jest/fake-timers': 29.7.0 '@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/node': 20.12.6 '@types/node': 20.12.7
jest-mock: 29.7.0 jest-mock: 29.7.0
jest-util: 29.7.0 jest-util: 29.7.0
dev: true dev: true
@ -4848,7 +4848,7 @@ packages:
dependencies: dependencies:
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/graceful-fs': 4.1.9 '@types/graceful-fs': 4.1.9
'@types/node': 20.12.6 '@types/node': 20.12.7
anymatch: 3.1.3 anymatch: 3.1.3
fb-watchman: 2.0.2 fb-watchman: 2.0.2
graceful-fs: 4.2.11 graceful-fs: 4.2.11
@ -4899,7 +4899,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies: dependencies:
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/node': 20.12.6 '@types/node': 20.12.7
jest-util: 29.7.0 jest-util: 29.7.0
dev: true dev: true
@ -4954,7 +4954,7 @@ packages:
'@jest/test-result': 29.7.0 '@jest/test-result': 29.7.0
'@jest/transform': 29.7.0 '@jest/transform': 29.7.0
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/node': 20.12.6 '@types/node': 20.12.7
chalk: 4.1.2 chalk: 4.1.2
emittery: 0.13.1 emittery: 0.13.1
graceful-fs: 4.2.11 graceful-fs: 4.2.11
@ -4985,7 +4985,7 @@ packages:
'@jest/test-result': 29.7.0 '@jest/test-result': 29.7.0
'@jest/transform': 29.7.0 '@jest/transform': 29.7.0
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/node': 20.12.6 '@types/node': 20.12.7
chalk: 4.1.2 chalk: 4.1.2
cjs-module-lexer: 1.2.3 cjs-module-lexer: 1.2.3
collect-v8-coverage: 1.0.2 collect-v8-coverage: 1.0.2
@ -5037,7 +5037,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies: dependencies:
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/node': 20.12.6 '@types/node': 20.12.7
chalk: 4.1.2 chalk: 4.1.2
ci-info: 3.9.0 ci-info: 3.9.0
graceful-fs: 4.2.11 graceful-fs: 4.2.11
@ -5062,7 +5062,7 @@ packages:
dependencies: dependencies:
'@jest/test-result': 29.7.0 '@jest/test-result': 29.7.0
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/node': 20.12.6 '@types/node': 20.12.7
ansi-escapes: 4.3.2 ansi-escapes: 4.3.2
chalk: 4.1.2 chalk: 4.1.2
emittery: 0.13.1 emittery: 0.13.1
@ -5074,13 +5074,13 @@ packages:
resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies: dependencies:
'@types/node': 20.12.6 '@types/node': 20.12.7
jest-util: 29.7.0 jest-util: 29.7.0
merge-stream: 2.0.0 merge-stream: 2.0.0
supports-color: 8.1.1 supports-color: 8.1.1
dev: true dev: true
/jest@29.7.0(@types/node@20.12.6)(ts-node@10.9.2): /jest@29.7.0(@types/node@20.12.7)(ts-node@10.9.2):
resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
hasBin: true hasBin: true
@ -5093,7 +5093,7 @@ packages:
'@jest/core': 29.7.0(ts-node@10.9.2) '@jest/core': 29.7.0(ts-node@10.9.2)
'@jest/types': 29.6.3 '@jest/types': 29.6.3
import-local: 3.1.0 import-local: 3.1.0
jest-cli: 29.7.0(@types/node@20.12.6)(ts-node@10.9.2) jest-cli: 29.7.0(@types/node@20.12.7)(ts-node@10.9.2)
transitivePeerDependencies: transitivePeerDependencies:
- '@types/node' - '@types/node'
- babel-plugin-macros - babel-plugin-macros
@ -5388,7 +5388,7 @@ packages:
'@next/env': 14.1.4 '@next/env': 14.1.4
'@swc/helpers': 0.5.2 '@swc/helpers': 0.5.2
busboy: 1.6.0 busboy: 1.6.0
caniuse-lite: 1.0.30001607 caniuse-lite: 1.0.30001608
graceful-fs: 4.2.11 graceful-fs: 4.2.11
postcss: 8.4.31 postcss: 8.4.31
react: 18.2.0 react: 18.2.0
@ -5611,7 +5611,7 @@ packages:
dependencies: dependencies:
lilconfig: 3.1.1 lilconfig: 3.1.1
postcss: 8.4.38 postcss: 8.4.38
ts-node: 10.9.2(@types/node@20.12.6)(typescript@5.4.4) ts-node: 10.9.2(@types/node@20.12.7)(typescript@5.4.4)
yaml: 2.4.1 yaml: 2.4.1
/postcss-nested@6.0.1(postcss@8.4.38): /postcss-nested@6.0.1(postcss@8.4.38):
@ -5898,8 +5898,8 @@ packages:
compute-scroll-into-view: 3.1.0 compute-scroll-into-view: 3.1.0
dev: false dev: false
/search-engine-autocomplete@0.4.2: /search-engine-autocomplete@0.4.3:
resolution: {integrity: sha512-/aVUK+SEmU3IbAhLSh4j/b33gdOUkk5asQY0Qf9xDAhsuCcwScEQ2BBTaURox3OP/7LnRaAMnmi/hsMgWRo85A==} resolution: {integrity: sha512-AqtfGrE+xFh89iNqRXxZ/H88fIzkTuftmcjMxRMTpbmLkSsGM4fJkx8N/xoe3OJYcWzjwj7cD2mdEMwBbxYcoQ==}
dev: false dev: false
/semver@6.3.1: /semver@6.3.1:
@ -6273,7 +6273,7 @@ packages:
'@babel/core': 7.24.4 '@babel/core': 7.24.4
bs-logger: 0.2.6 bs-logger: 0.2.6
fast-json-stable-stringify: 2.1.0 fast-json-stable-stringify: 2.1.0
jest: 29.7.0(@types/node@20.12.6)(ts-node@10.9.2) jest: 29.7.0(@types/node@20.12.7)(ts-node@10.9.2)
jest-util: 29.7.0 jest-util: 29.7.0
json5: 2.2.3 json5: 2.2.3
lodash.memoize: 4.1.2 lodash.memoize: 4.1.2
@ -6283,7 +6283,7 @@ packages:
yargs-parser: 21.1.1 yargs-parser: 21.1.1
dev: true dev: true
/ts-node@10.9.2(@types/node@20.12.6)(typescript@5.4.4): /ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.4):
resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
@ -6302,7 +6302,7 @@ packages:
'@tsconfig/node12': 1.0.11 '@tsconfig/node12': 1.0.11
'@tsconfig/node14': 1.0.3 '@tsconfig/node14': 1.0.3
'@tsconfig/node16': 1.0.4 '@tsconfig/node16': 1.0.4
'@types/node': 20.12.6 '@types/node': 20.12.7
acorn: 8.11.3 acorn: 8.11.3
acorn-walk: 8.3.2 acorn-walk: 8.3.2
arg: 4.1.3 arg: 4.1.3