🚩 修复暗黑模式 增加自动填充
This commit is contained in:
parent
f718f8b6c9
commit
de0ec3536a
27
app.config.ts
Normal file
27
app.config.ts
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
import {_colors, _fontFamily} from "#tailwind-config/theme.mjs";
|
||||||
|
|
||||||
|
export default defineAppConfig({
|
||||||
|
naiveui: {
|
||||||
|
themeConfig: {
|
||||||
|
shared: {
|
||||||
|
common: {
|
||||||
|
fontFamily: _fontFamily.sans.join(", "),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
light: {
|
||||||
|
common: {
|
||||||
|
primaryColor: _colors.blue[600],
|
||||||
|
primaryColorHover: _colors.blue[500],
|
||||||
|
primaryColorPressed: _colors.blue[700],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
dark: {
|
||||||
|
common: {
|
||||||
|
primaryColor: _colors.blue[500],
|
||||||
|
primaryColorHover: _colors.blue[400],
|
||||||
|
primaryColorPressed: _colors.blue[600],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
37
app.vue
37
app.vue
@ -1,5 +1,11 @@
|
|||||||
<template>
|
<template>
|
||||||
<n-config-provider>
|
<n-config-provider
|
||||||
|
:theme="theme"
|
||||||
|
:theme-overrides="themeOverrides"
|
||||||
|
inline-theme-disabled
|
||||||
|
preflight-style-disabled
|
||||||
|
>
|
||||||
|
<n-global-style/>
|
||||||
<n-modal-provider>
|
<n-modal-provider>
|
||||||
<n-message-provider>
|
<n-message-provider>
|
||||||
<NuxtLayout>
|
<NuxtLayout>
|
||||||
@ -10,9 +16,17 @@
|
|||||||
</n-message-provider>
|
</n-message-provider>
|
||||||
</n-modal-provider>
|
</n-modal-provider>
|
||||||
</n-config-provider>
|
</n-config-provider>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
import {darkTheme, lightTheme} from 'naive-ui'
|
||||||
|
import {naiveThemeOverrides} from "~/settings/settings";
|
||||||
|
|
||||||
|
const colorMode = useColorMode()
|
||||||
|
const themeOverrides = naiveThemeOverrides
|
||||||
|
const theme = computed(() => {
|
||||||
|
return colorMode.value === 'system' ? (colorMode.value ? lightTheme : darkTheme) : colorMode.value === 'light' ? lightTheme : darkTheme
|
||||||
|
})
|
||||||
|
|
||||||
const whoisStore = useWhoisStore()
|
const whoisStore = useWhoisStore()
|
||||||
const dnsStore = useDnsStore()
|
const dnsStore = useDnsStore()
|
||||||
const domainStore = useDomainStore()
|
const domainStore = useDomainStore()
|
||||||
@ -21,24 +35,5 @@ dnsStore.newDnsList()
|
|||||||
domainStore.newDomainList()
|
domainStore.newDomainList()
|
||||||
</script>
|
</script>
|
||||||
<style>
|
<style>
|
||||||
body {
|
|
||||||
background-color: #fff;
|
|
||||||
color: rgba(0, 0, 0, 0.8);
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark-mode body {
|
|
||||||
background-color: #091a28;
|
|
||||||
color: #18181c;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.sepia-mode body {
|
|
||||||
background-color: #f1e7d0;
|
|
||||||
color: #433422;
|
|
||||||
}
|
|
||||||
|
|
||||||
.light-mode body {
|
|
||||||
background-color: #F1F3F4;
|
|
||||||
color: #433422;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -6,14 +6,14 @@ defineProps({
|
|||||||
|
|
||||||
<template>
|
<template>
|
||||||
<!-- 公告部分 -->
|
<!-- 公告部分 -->
|
||||||
<div class="bg-gray-200 p-3 rounded-md mb-5 dark:bg-[#5b77af]">
|
<div class="bg-gray-200 p-3 rounded-md mb-5 dark:bg-[#000000FF]">
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
<i aria-hidden="true" class="icon fas fa-bullhorn mr-3"></i>
|
<i aria-hidden="true" class="icon fas fa-bullhorn mr-3"></i>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex-grow">
|
<div class="flex-grow">
|
||||||
<div class="text-sm text-gray-800 dark:text-white">
|
<div class="text-sm text-gray-800 dark:text-white">
|
||||||
{{ text }}
|
{{ text }}
|
||||||
<slot name="text" />
|
<slot name="text"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -33,7 +33,7 @@ const availableColor = ref([
|
|||||||
<div
|
<div
|
||||||
class="flex h-10 w-10 items-center justify-center rounded-lg bg-gray-100 dark:bg-gray-700"
|
class="flex h-10 w-10 items-center justify-center rounded-lg bg-gray-100 dark:bg-gray-700"
|
||||||
>
|
>
|
||||||
<Icon name="ph:palette-duotone" class=" text-lg dark:text-white" />
|
<Icon name="ph:palette-duotone" class=" text-lg dark:text-white"/>
|
||||||
</div>
|
</div>
|
||||||
</HeadlessListboxButton>
|
</HeadlessListboxButton>
|
||||||
<HeadlessListboxOptions
|
<HeadlessListboxOptions
|
||||||
@ -55,7 +55,7 @@ const availableColor = ref([
|
|||||||
{{ color.name }}
|
{{ color.name }}
|
||||||
</span>
|
</span>
|
||||||
<span class="flex items-center justify-center text-sm">
|
<span class="flex items-center justify-center text-sm">
|
||||||
<Icon :name="color.icon" class="text-base" />
|
<Icon :name="color.icon" class="text-base"/>
|
||||||
</span>
|
</span>
|
||||||
</HeadlessListboxOption>
|
</HeadlessListboxOption>
|
||||||
</HeadlessListboxOptions>
|
</HeadlessListboxOptions>
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
|
||||||
const domainStore = useDomainListStore();
|
const domainListStore = useDomainListStore();
|
||||||
const SupportedTLDs = new Set(Object.keys(domainStore.SupportedTLDs));
|
const SupportedTLDs = domainListStore.getSupportedTLDKeys
|
||||||
const isOpen = ref(false)
|
const isOpen = ref(false)
|
||||||
const {t} = useI18n()
|
const {t} = useI18n()
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
@ -3,15 +3,15 @@ const localePath = useLocalePath()
|
|||||||
const {t} = useI18n()
|
const {t} = useI18n()
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<footer class="text-gray-800 h-[10vh] bg-[#F1F3F4] dark:text-white dark:bg-[#5b77af]">
|
<footer class="text-gray-800 h-[10vh] bg-[#F1F3F4] dark:text-white dark:bg-[#000000FF]">
|
||||||
<div class="max-w-5xl mx-auto py-4 px-4 flex justify-between items-center">
|
<div class="max-w-5xl mx-auto py-4 px-4 flex justify-between items-center">
|
||||||
<div class="text-sm">
|
<div class="text-sm">
|
||||||
{{ t('footer.text')}}
|
{{ t('footer.text') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-center space-x-4">
|
<div class="flex items-center space-x-4">
|
||||||
<NuxtLink :to="localePath('/api.html')" class="hover:underline">{{ t('footer.api') }}</NuxtLink>
|
<NuxtLink :to="localePath('/api.html')" class="hover:underline">{{ t('footer.api') }}</NuxtLink>
|
||||||
<NuxtLink to="https://github.com/7836246/Nuxt-Whois" class="hover:underline">
|
<NuxtLink to="https://github.com/7836246/Nuxt-Whois" class="hover:underline">
|
||||||
<Icon name="ant-design:github-outlined" class="h-6 w-6" />
|
<Icon name="ant-design:github-outlined" class="h-6 w-6"/>
|
||||||
</NuxtLink>
|
</NuxtLink>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -65,7 +65,7 @@ export default defineI18nLocale(async locale => {
|
|||||||
formatDomain: '域名格式错误',
|
formatDomain: '域名格式错误',
|
||||||
//域名必须包含有效的顶级域
|
//域名必须包含有效的顶级域
|
||||||
validDomain: '域名必须包含有效的顶级域',
|
validDomain: '域名必须包含有效的顶级域',
|
||||||
notFound: '未找到域名信息',
|
notFound: '未找到域名信息,可能是后缀不支持,也可能是当前 Api 不支持,请更换尝试!',
|
||||||
},
|
},
|
||||||
result: {
|
result: {
|
||||||
result: '查询结果',
|
result: '查询结果',
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import {useApisStore} from "~/stores/api";
|
|
||||||
|
|
||||||
const {t} = useI18n()
|
const {t} = useI18n()
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const runtimeConfig = useRuntimeConfig()
|
const runtimeConfig = useRuntimeConfig()
|
||||||
@ -8,7 +6,7 @@ const localePath = useLocalePath()
|
|||||||
const settingsStore = useSettingsStore()
|
const settingsStore = useSettingsStore()
|
||||||
const styleStore = useStyleStore()
|
const styleStore = useStyleStore()
|
||||||
const clientMounted = ref(false);
|
const clientMounted = ref(false);
|
||||||
const apisStore = useApisStore()
|
|
||||||
|
|
||||||
const message = useMessage()
|
const message = useMessage()
|
||||||
const handleAction = async (url: any) => {
|
const handleAction = async (url: any) => {
|
||||||
@ -29,10 +27,6 @@ const handleAction = async (url: any) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
onMounted(() => {
|
|
||||||
clientMounted.value = true;
|
|
||||||
});
|
|
||||||
|
|
||||||
const selectOptions = ref([
|
const selectOptions = ref([
|
||||||
{
|
{
|
||||||
label: 'Whois',
|
label: 'Whois',
|
||||||
@ -45,23 +39,49 @@ const selectOptions = ref([
|
|||||||
value: 'domain'
|
value: 'domain'
|
||||||
}
|
}
|
||||||
])
|
])
|
||||||
const {selectedOption} = storeToRefs(settingsStore)
|
const {selectedOption, domainSearch} = storeToRefs(settingsStore)
|
||||||
const handleSelectOptions = (value: any) => {
|
const handleSelectOptions = (value: any) => {
|
||||||
settingsStore.setSelectedOption(value);
|
settingsStore.setSelectedOption(value);
|
||||||
console.log(selectedOption.value)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const domainListStore = useDomainListStore();
|
||||||
|
// 支持的主流顶级域名列表
|
||||||
|
const supportedTLDs = ['com', 'net', 'org', 'io', 'tech', 'co', 'info', 'biz', 'edu', 'gov'];
|
||||||
|
|
||||||
|
// 计算属性生成域名选项
|
||||||
|
const domainOptions = computed(() => {
|
||||||
|
if (!domainSearch.value) return [];
|
||||||
|
|
||||||
|
// 取用户输入的前缀,假设输入可能包含已有的后缀
|
||||||
|
const prefix = domainSearch.value.split('.')[0];
|
||||||
|
|
||||||
|
// 生成带有主流后缀的域名选项
|
||||||
|
return supportedTLDs.map(suffix => {
|
||||||
|
const value = `${prefix}.${suffix}`;
|
||||||
|
return {label: value, value};
|
||||||
|
});
|
||||||
|
});
|
||||||
|
const getShow = (value: any) => {
|
||||||
|
// 检查 value 是否以 '.' 结尾
|
||||||
|
return typeof value === 'string' && value.endsWith('.');
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
clientMounted.value = true;
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div
|
<div
|
||||||
class="w-full text-xs dark:bg-transparent"
|
class="w-full text-xs bg-[#F1F3F4] dark:bg-transparent"
|
||||||
:class="{ 'h-[90vh]': !styleStore.getIsPage && clientMounted }"
|
:class="{ 'h-[90vh]': !styleStore.getIsPage && clientMounted }"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class=" max-w-screen-lg mx-auto px-[1em] pb-[10vh] "
|
class=" max-w-screen-lg mx-auto px-[1em] pb-[10vh] "
|
||||||
:class="{ 'pt-[25vh]': !styleStore.getIsPage && clientMounted, 'pt-[5vh]': styleStore.getIsPage || !clientMounted }"
|
:class="{ 'pt-[25vh]': !styleStore.getIsPage && clientMounted, 'pt-[5vh]': styleStore.getIsPage || !clientMounted }"
|
||||||
>
|
>
|
||||||
<nav class=" w-full text-[#464747] h-5 dark:bg-gray-700">
|
<nav class=" w-full text-[#464747] h-5 ">
|
||||||
<NuxtLink class="mb-3 font-bold text-2xl inline-block text-current no-underline dark:text-white"
|
<NuxtLink class="mb-3 font-bold text-2xl inline-block text-current no-underline dark:text-white"
|
||||||
:to="localePath('/')"
|
:to="localePath('/')"
|
||||||
>
|
>
|
||||||
@ -70,37 +90,43 @@ const handleSelectOptions = (value: any) => {
|
|||||||
</NuxtLink>
|
</NuxtLink>
|
||||||
</nav>
|
</nav>
|
||||||
<div class="mt-6">
|
<div class="mt-6">
|
||||||
<div class="flex items-center space-x-2 mb-3 dark:text-white"
|
<ClientOnly>
|
||||||
>
|
<div class="flex items-center space-x-2 mb-3 dark:text-white"
|
||||||
<!-- 容器div用于水平布局 -->
|
>
|
||||||
<div class="flex-grow">
|
<!-- 容器div用于水平布局 -->
|
||||||
<NInputGroup>
|
<div class="flex-grow">
|
||||||
<n-select
|
<NInputGroup>
|
||||||
:style="{ width: '20%' }"
|
<n-select
|
||||||
size="large"
|
:style="{ width: '20%' }"
|
||||||
v-model:value="selectedOption"
|
size="large"
|
||||||
:options="selectOptions"
|
v-model:value="selectedOption"
|
||||||
@update:value="handleSelectOptions"
|
:options="selectOptions"
|
||||||
/>
|
@update:value="handleSelectOptions"
|
||||||
<NInput
|
/>
|
||||||
v-model:value="settingsStore.domainSearch"
|
<NAutoComplete
|
||||||
@keyup.enter="handleAction(settingsStore.selectedOption)"
|
v-model:value="domainSearch"
|
||||||
type="text"
|
@keyup.enter="handleAction(settingsStore.selectedOption)"
|
||||||
:placeholder="t('index.placeholder')"
|
:input-props="{ autocomplete: 'off' }"
|
||||||
size="large"
|
:options="domainOptions"
|
||||||
clearable
|
:get-show="getShow"
|
||||||
autofocus
|
type="text"
|
||||||
class="w-full "/>
|
:placeholder="t('index.placeholder')"
|
||||||
</NInputGroup>
|
size="large"
|
||||||
|
clearable
|
||||||
|
autofocus
|
||||||
|
class="w-full ">
|
||||||
|
</NAutoComplete>
|
||||||
|
</NInputGroup>
|
||||||
|
</div>
|
||||||
|
<!-- 使用v-if基于state.domain的值来控制按钮的显示 -->
|
||||||
|
<NButton type="primary"
|
||||||
|
size="large"
|
||||||
|
@click="handleAction(settingsStore.selectedOption)"
|
||||||
|
v-if="settingsStore.domainSearch">
|
||||||
|
{{ t('index.onSubmit') }}
|
||||||
|
</NButton>
|
||||||
</div>
|
</div>
|
||||||
<!-- 使用v-if基于state.domain的值来控制按钮的显示 -->
|
</ClientOnly>
|
||||||
<NButton type="primary"
|
|
||||||
size="large"
|
|
||||||
@click="handleAction(settingsStore.selectedOption)"
|
|
||||||
v-if="settingsStore.domainSearch">
|
|
||||||
{{ t('index.onSubmit') }}
|
|
||||||
</NButton>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<ClientOnly>
|
<ClientOnly>
|
||||||
|
123
nuxt.config.ts
123
nuxt.config.ts
@ -1,66 +1,67 @@
|
|||||||
// https://nuxt.com/docs/api/configuration/nuxt-config
|
// https://nuxt.com/docs/api/configuration/nuxt-config
|
||||||
export default defineNuxtConfig({
|
export default defineNuxtConfig({
|
||||||
devtools: { enabled: true },
|
devtools: {enabled: true},
|
||||||
routeRules:{
|
routeRules: {
|
||||||
'/admin/**':{ ssr : false }
|
'/admin/**': {ssr: false}
|
||||||
},
|
|
||||||
modules: [
|
|
||||||
'@nuxt/devtools', // Devtools开发工具
|
|
||||||
'@nuxtjs/i18n', // 多语言
|
|
||||||
'@pinia/nuxt', // Pinia 持久化状态管理
|
|
||||||
'@pinia-plugin-persistedstate/nuxt', // Pinia 持久化状态管理插件
|
|
||||||
'nuxt-simple-robots',
|
|
||||||
'nuxt-headlessui', // 组件库
|
|
||||||
'@bg-dev/nuxt-naiveui', // 组件库
|
|
||||||
'@nuxtjs/tailwindcss', // 组件库
|
|
||||||
'nuxt-icon',
|
|
||||||
'@nuxtjs/color-mode',
|
|
||||||
],
|
|
||||||
features:{
|
|
||||||
inlineStyles: true,
|
|
||||||
} ,
|
|
||||||
runtimeConfig: {
|
|
||||||
public: {
|
|
||||||
Domain: process.env.WebSiteDomain || 'Nuxt Whois',
|
|
||||||
DomainSuffix: process.env.WebSiteDomainSuffix || 'Dns',
|
|
||||||
}
|
|
||||||
},
|
|
||||||
app:{
|
|
||||||
head: {
|
|
||||||
title: process.env.WebSiteTitle || 'Nuxt Whois',
|
|
||||||
meta: [
|
|
||||||
{ charset: 'utf-8' },
|
|
||||||
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
|
|
||||||
],
|
|
||||||
link: [
|
|
||||||
{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
i18n: {
|
|
||||||
strategy: 'prefix_except_default',
|
|
||||||
defaultLocale: 'zh',
|
|
||||||
detectBrowserLanguage: {
|
|
||||||
useCookie: true,
|
|
||||||
},
|
},
|
||||||
locales: [
|
modules: [
|
||||||
{ code: 'zh', iso: 'zh-Hans', file: 'zh.ts' },
|
'@nuxt/devtools', // Devtools开发工具
|
||||||
{ code: 'en', iso: 'en-US', file: 'en.ts' },
|
'@nuxtjs/i18n', // 多语言
|
||||||
{ code: 'tw', iso: 'zh-Hant', file: 'tw.ts' },
|
'@pinia/nuxt', // Pinia 持久化状态管理
|
||||||
|
'@pinia-plugin-persistedstate/nuxt', // Pinia 持久化状态管理插件
|
||||||
|
'nuxt-simple-robots',
|
||||||
|
'nuxt-headlessui', // 组件库
|
||||||
|
'@bg-dev/nuxt-naiveui', // 组件库
|
||||||
|
'@nuxtjs/tailwindcss', // 组件库
|
||||||
|
'nuxt-icon',
|
||||||
|
'@nuxtjs/color-mode',
|
||||||
],
|
],
|
||||||
langDir: 'lang/',
|
features: {
|
||||||
},
|
inlineStyles: true,
|
||||||
headlessui: {
|
},
|
||||||
prefix: 'Headless'
|
runtimeConfig: {
|
||||||
},
|
public: {
|
||||||
naiveui:{
|
Domain: process.env.WebSiteDomain || 'Nuxt Whois',
|
||||||
|
DomainSuffix: process.env.WebSiteDomainSuffix || 'Dns',
|
||||||
},
|
}
|
||||||
colorMode: {
|
},
|
||||||
preference: 'system', // default value of $colorMode.preference
|
app: {
|
||||||
fallback: 'light', // fallback value if not system preference found
|
head: {
|
||||||
classPrefix: '',
|
title: process.env.WebSiteTitle || 'Nuxt Whois',
|
||||||
classSuffix: '-mode',
|
meta: [
|
||||||
storageKey: 'nuxt-color-mode'
|
{charset: 'utf-8'},
|
||||||
}
|
{name: 'viewport', content: 'width=device-width, initial-scale=1'},
|
||||||
|
],
|
||||||
|
link: [
|
||||||
|
{rel: 'icon', type: 'image/x-icon', href: '/favicon.ico'}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
i18n: {
|
||||||
|
strategy: 'prefix_except_default',
|
||||||
|
defaultLocale: 'zh',
|
||||||
|
detectBrowserLanguage: {
|
||||||
|
useCookie: true,
|
||||||
|
},
|
||||||
|
locales: [
|
||||||
|
{code: 'zh', iso: 'zh-Hans', file: 'zh.ts'},
|
||||||
|
{code: 'en', iso: 'en-US', file: 'en.ts'},
|
||||||
|
{code: 'tw', iso: 'zh-Hant', file: 'tw.ts'},
|
||||||
|
],
|
||||||
|
langDir: 'lang/',
|
||||||
|
},
|
||||||
|
headlessui: {
|
||||||
|
prefix: 'Headless'
|
||||||
|
},
|
||||||
|
naiveui: {
|
||||||
|
colorModePreference: "light",
|
||||||
|
},
|
||||||
|
colorMode: {
|
||||||
|
classSuffix: '',
|
||||||
|
},
|
||||||
|
tailwindcss: {
|
||||||
|
exposeConfig: {
|
||||||
|
write: true,
|
||||||
|
}
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
"less": "^4.2.0",
|
"less": "^4.2.0",
|
||||||
"nuxt-headlessui": "^1.1.5",
|
"nuxt-headlessui": "^1.1.5",
|
||||||
"nuxt-icon": "^0.6.10",
|
"nuxt-icon": "^0.6.10",
|
||||||
"nuxt-simple-robots": "4.0.0-rc.15",
|
"nuxt-simple-robots": "4.0.0-rc.16",
|
||||||
"sass": "^1.72.0",
|
"sass": "^1.72.0",
|
||||||
"typescript": "5.4.3"
|
"typescript": "5.4.3"
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,7 @@ const handleReset = async () => {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="setting mt-5 settings-grid">
|
<div class="setting mt-8 settings-grid">
|
||||||
<n-h6 prefix="bar"> 基础设置</n-h6>
|
<n-h6 prefix="bar"> 基础设置</n-h6>
|
||||||
<n-card class="set-item">
|
<n-card class="set-item">
|
||||||
<div class="top grid grid-cols-2 gap-4">
|
<div class="top grid grid-cols-2 gap-4">
|
||||||
|
@ -7,13 +7,13 @@ const {domain} = route.params;
|
|||||||
|
|
||||||
const {t} = useI18n()
|
const {t} = useI18n()
|
||||||
|
|
||||||
const domainData = domain.replace(/_/g, '.')
|
const domainData = typeof domain === "string" ? domain?.replace(/_/g, '.') : "";
|
||||||
|
|
||||||
const showRawData = ref(false);
|
const showRawData = ref(false);
|
||||||
const timeStore = useTimeStore()
|
const timeStore = useTimeStore()
|
||||||
const styleStore = useStyleStore()
|
const styleStore = useStyleStore()
|
||||||
const settingsStore = useSettingsStore()
|
const settingsStore = useSettingsStore()
|
||||||
|
styleStore.setIsPage(true)
|
||||||
const localePath = useLocalePath()
|
const localePath = useLocalePath()
|
||||||
|
|
||||||
const {data, pending, error, refresh} = await useAsyncData(
|
const {data, pending, error, refresh} = await useAsyncData(
|
||||||
@ -36,17 +36,17 @@ if (!error.value && settingsStore.getHistory) {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
const parsedInfo = ParseWhois(data.value);
|
const parsedInfo = data.value ? ParseWhois(data.value) : {};
|
||||||
styleStore.setIsPage(true)
|
|
||||||
useHead({
|
useHead({
|
||||||
title: `${domainData} - ${t('whois.title')}`,
|
title: `${domainData} - ${t('whois.title')}`,
|
||||||
meta: [
|
meta: [
|
||||||
{
|
{
|
||||||
name: 'description',
|
name: 'description',
|
||||||
content: t('whois.description', { domain: domainData })
|
content: t('whois.description', {domain: domainData})
|
||||||
},{
|
}, {
|
||||||
name: 'keywords',
|
name: 'keywords',
|
||||||
content: t('whois.keywords', { domain: domainData })
|
content: t('whois.keywords', {domain: domainData})
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
@ -54,6 +54,7 @@ useHead({
|
|||||||
|
|
||||||
<template>
|
<template>
|
||||||
<table
|
<table
|
||||||
|
v-if="data != ''"
|
||||||
class="w-full bg-[#fffffe] p-4 shadow-lg rounded-lg mt-5 dark:bg-gray-800 dark:text-gray-200 text-white hover:bg-none">
|
class="w-full bg-[#fffffe] p-4 shadow-lg rounded-lg mt-5 dark:bg-gray-800 dark:text-gray-200 text-white hover:bg-none">
|
||||||
<tbody class="divide-y divide-gray-200 dark:divide-gray-700">
|
<tbody class="divide-y divide-gray-200 dark:divide-gray-700">
|
||||||
<tr v-if="parsedInfo.domainName"
|
<tr v-if="parsedInfo.domainName"
|
||||||
@ -131,23 +132,23 @@ useHead({
|
|||||||
class="hover:bg-gray-100 text-gray-900 dark:hover:bg-gray-700 text-gray-200">
|
class="hover:bg-gray-100 text-gray-900 dark:hover:bg-gray-700 text-gray-200">
|
||||||
<th class="p-4 text-left font-semibold text-gray-900 dark:text-gray-200">{{ t('result.rawData') }}</th>
|
<th class="p-4 text-left font-semibold text-gray-900 dark:text-gray-200">{{ t('result.rawData') }}</th>
|
||||||
<td class="p-4 text-gray-900 dark:text-gray-200">
|
<td class="p-4 text-gray-900 dark:text-gray-200">
|
||||||
<NSwitch v-model:value="showRawData"/>
|
<NSwitch v-model:value="showRawData"/>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<!-- 公告部分 -->
|
<!-- 公告部分 -->
|
||||||
<CommonBulletin v-if="error" class="mt-5" >
|
<CommonBulletin v-if="data == ''" class="mt-5">
|
||||||
<template #text>
|
<template #text>
|
||||||
<Icon name="bx:error" size="16px" color="red" />
|
<Icon name="bx:error" size="16px" color="red"/>
|
||||||
{{ t('error.notFound') }}
|
{{ t('error.notFound') }}
|
||||||
</template>
|
</template>
|
||||||
</CommonBulletin>
|
</CommonBulletin>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
class="w-full bg-[#fffffe] mt-5 p-4 shadow-lg rounded-lg whitespace-pre-wrap dark:text-gray-200 dark:bg-gray-800"
|
class="w-full bg-[#fffffe] mt-5 p-4 shadow-lg rounded-lg whitespace-pre-wrap dark:text-gray-200 dark:bg-gray-800"
|
||||||
v-if="showRawData">
|
>
|
||||||
{{ data }}
|
{{ data }}
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
14
plugins/setTheme.client.ts
Normal file
14
plugins/setTheme.client.ts
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
export default defineNuxtPlugin((nuxtApp) => {
|
||||||
|
const colorMode = useColorMode()
|
||||||
|
|
||||||
|
// 页面加载完毕,如果是暗色模式则重新加载,见: https://github.com/tusen-ai/naive-ui/issues/3765#issuecomment-1283356344
|
||||||
|
nuxtApp.hook('page:finish', () => {
|
||||||
|
setTimeout(() => {
|
||||||
|
colorMode.value = 'light'
|
||||||
|
|
||||||
|
setTimeout(() => {
|
||||||
|
colorMode.value = colorMode.preference
|
||||||
|
}, 0)
|
||||||
|
}, 0)
|
||||||
|
})
|
||||||
|
})
|
162
pnpm-lock.yaml
generated
162
pnpm-lock.yaml
generated
@ -56,8 +56,8 @@ devDependencies:
|
|||||||
specifier: ^0.6.10
|
specifier: ^0.6.10
|
||||||
version: 0.6.10(nuxt@3.11.1)(rollup@4.13.0)(vite@5.2.6)(vue@3.4.21)
|
version: 0.6.10(nuxt@3.11.1)(rollup@4.13.0)(vite@5.2.6)(vue@3.4.21)
|
||||||
nuxt-simple-robots:
|
nuxt-simple-robots:
|
||||||
specifier: 4.0.0-rc.15
|
specifier: 4.0.0-rc.16
|
||||||
version: 4.0.0-rc.15(@nuxt/devtools@1.1.3)(@vue/compiler-core@3.4.21)(nuxt@3.11.1)(postcss@8.4.38)(rollup@4.13.0)(vite@5.2.6)(vue@3.4.21)(webpack@5.91.0)
|
version: 4.0.0-rc.16(@nuxt/devtools@1.1.3)(@vue/compiler-core@3.4.21)(nuxt@3.11.1)(postcss@8.4.38)(rollup@4.13.0)(vite@5.2.6)(vue@3.4.21)(webpack@5.91.0)
|
||||||
sass:
|
sass:
|
||||||
specifier: ^1.72.0
|
specifier: ^1.72.0
|
||||||
version: 1.72.0
|
version: 1.72.0
|
||||||
@ -766,8 +766,8 @@ packages:
|
|||||||
'@iconify/types': 2.0.0
|
'@iconify/types': 2.0.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@iconify/collections@1.0.407:
|
/@iconify/collections@1.0.408:
|
||||||
resolution: {integrity: sha512-1Wn5xz6tsuXFWLyxc4RUoSMMC/WhOgnTd0uiRsRsIEp3HPPGT69vFmdfDamsZi8q3H4olgpkKGwMcY9W3uQ+3w==}
|
resolution: {integrity: sha512-huq0rgLQveO5DeWw4SQpq69GwU2xBuC9UPw664Mh/yruc1BYYNvyfvWowQ2ZG4mpBO1BUmIB/T/EtTcLoCeuAA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@iconify/types': 2.0.0
|
'@iconify/types': 2.0.0
|
||||||
|
|
||||||
@ -1100,7 +1100,7 @@ packages:
|
|||||||
'@npmcli/node-gyp': 3.0.0
|
'@npmcli/node-gyp': 3.0.0
|
||||||
'@npmcli/package-json': 5.0.0
|
'@npmcli/package-json': 5.0.0
|
||||||
'@npmcli/promise-spawn': 7.0.1
|
'@npmcli/promise-spawn': 7.0.1
|
||||||
node-gyp: 10.0.1
|
node-gyp: 10.1.0
|
||||||
which: 4.0.0
|
which: 4.0.0
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- bluebird
|
- bluebird
|
||||||
@ -1201,9 +1201,9 @@ packages:
|
|||||||
'@nuxt/devtools-kit': 1.1.3(nuxt@3.11.1)(rollup@4.13.0)(vite@5.2.6)
|
'@nuxt/devtools-kit': 1.1.3(nuxt@3.11.1)(rollup@4.13.0)(vite@5.2.6)
|
||||||
'@nuxt/devtools-wizard': 1.1.3
|
'@nuxt/devtools-wizard': 1.1.3
|
||||||
'@nuxt/kit': 3.11.1(rollup@4.13.0)
|
'@nuxt/kit': 3.11.1(rollup@4.13.0)
|
||||||
'@vue/devtools-applet': 7.0.20(@unocss/reset@0.58.6)(floating-vue@5.2.2)(unocss@0.58.6)(vite@5.2.6)(vue@3.4.21)
|
'@vue/devtools-applet': 7.0.21(@unocss/reset@0.58.6)(floating-vue@5.2.2)(unocss@0.58.6)(vite@5.2.6)(vue@3.4.21)
|
||||||
'@vue/devtools-core': 7.0.20(vite@5.2.6)(vue@3.4.21)
|
'@vue/devtools-core': 7.0.21(vite@5.2.6)(vue@3.4.21)
|
||||||
'@vue/devtools-kit': 7.0.20(vue@3.4.21)
|
'@vue/devtools-kit': 7.0.21(vue@3.4.21)
|
||||||
birpc: 0.2.17
|
birpc: 0.2.17
|
||||||
consola: 3.2.3
|
consola: 3.2.3
|
||||||
cronstrue: 2.48.0
|
cronstrue: 2.48.0
|
||||||
@ -1395,7 +1395,7 @@ packages:
|
|||||||
autoprefixer: 10.4.19(postcss@8.4.38)
|
autoprefixer: 10.4.19(postcss@8.4.38)
|
||||||
clear: 0.1.0
|
clear: 0.1.0
|
||||||
consola: 3.2.3
|
consola: 3.2.3
|
||||||
cssnano: 6.1.1(postcss@8.4.38)
|
cssnano: 6.1.2(postcss@8.4.38)
|
||||||
defu: 6.1.4
|
defu: 6.1.4
|
||||||
esbuild: 0.20.2
|
esbuild: 0.20.2
|
||||||
escape-string-regexp: 5.0.0
|
escape-string-regexp: 5.0.0
|
||||||
@ -1923,8 +1923,8 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@sigstore/protobuf-specs': 0.3.0
|
'@sigstore/protobuf-specs': 0.3.0
|
||||||
|
|
||||||
/@sigstore/core@1.0.0:
|
/@sigstore/core@1.1.0:
|
||||||
resolution: {integrity: sha512-dW2qjbWLRKGu6MIDUTBuJwXCnR8zivcSpf5inUzk7y84zqy/dji0/uahppoIgMoKeR+6pUZucrwHfkQQtiG9Rw==}
|
resolution: {integrity: sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg==}
|
||||||
engines: {node: ^16.14.0 || >=18.0.0}
|
engines: {node: ^16.14.0 || >=18.0.0}
|
||||||
|
|
||||||
/@sigstore/protobuf-specs@0.3.0:
|
/@sigstore/protobuf-specs@0.3.0:
|
||||||
@ -1936,14 +1936,14 @@ packages:
|
|||||||
engines: {node: ^16.14.0 || >=18.0.0}
|
engines: {node: ^16.14.0 || >=18.0.0}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@sigstore/bundle': 2.2.0
|
'@sigstore/bundle': 2.2.0
|
||||||
'@sigstore/core': 1.0.0
|
'@sigstore/core': 1.1.0
|
||||||
'@sigstore/protobuf-specs': 0.3.0
|
'@sigstore/protobuf-specs': 0.3.0
|
||||||
make-fetch-happen: 13.0.0
|
make-fetch-happen: 13.0.0
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
/@sigstore/tuf@2.3.1:
|
/@sigstore/tuf@2.3.2:
|
||||||
resolution: {integrity: sha512-9Iv40z652td/QbV0o5n/x25H9w6IYRt2pIGbTX55yFDYlApDQn/6YZomjz6+KBx69rXHLzHcbtTS586mDdFD+Q==}
|
resolution: {integrity: sha512-mwbY1VrEGU4CO55t+Kl6I7WZzIl+ysSzEYdA1Nv/FTrl2bkeaPXo5PnWZAVfcY2zSdhOpsUTJW67/M2zHXGn5w==}
|
||||||
engines: {node: ^16.14.0 || >=18.0.0}
|
engines: {node: ^16.14.0 || >=18.0.0}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@sigstore/protobuf-specs': 0.3.0
|
'@sigstore/protobuf-specs': 0.3.0
|
||||||
@ -1951,12 +1951,12 @@ packages:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
/@sigstore/verify@1.1.0:
|
/@sigstore/verify@1.1.1:
|
||||||
resolution: {integrity: sha512-1fTqnqyTBWvV7cftUUFtDcHPdSox0N3Ub7C0lRyReYx4zZUlNTZjCV+HPy4Lre+r45dV7Qx5JLKvqqsgxuyYfg==}
|
resolution: {integrity: sha512-BNANJms49rw9Q5J+fJjrDqOQSzjXDcOq/pgKDaVdDoIvQwqIfaoUriy+fQfh8sBX04hr4bkkrwu3EbhQqoQH7A==}
|
||||||
engines: {node: ^16.14.0 || >=18.0.0}
|
engines: {node: ^16.14.0 || >=18.0.0}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@sigstore/bundle': 2.2.0
|
'@sigstore/bundle': 2.2.0
|
||||||
'@sigstore/core': 1.0.0
|
'@sigstore/core': 1.1.0
|
||||||
'@sigstore/protobuf-specs': 0.3.0
|
'@sigstore/protobuf-specs': 0.3.0
|
||||||
|
|
||||||
/@sindresorhus/merge-streams@2.3.0:
|
/@sindresorhus/merge-streams@2.3.0:
|
||||||
@ -2074,38 +2074,38 @@ packages:
|
|||||||
/@types/web-bluetooth@0.0.20:
|
/@types/web-bluetooth@0.0.20:
|
||||||
resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==}
|
resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==}
|
||||||
|
|
||||||
/@unhead/dom@1.8.20:
|
/@unhead/dom@1.9.1:
|
||||||
resolution: {integrity: sha512-TXRQSVbqBOQc02m3wxgj55m93U8a3WBHV9xJi2zVX/iHEJgeQbZMJ+rV0YJkHy2OHAC0MfjVQA5NDLaVwtromw==}
|
resolution: {integrity: sha512-5YVT8pyg7Mw8niWwklP8nFKK9WLIvaK4O3tXvqpW9OxSAexJG576bh6FR0hEtSDLBkJh+pI8mMMMIuzSdK/whA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@unhead/schema': 1.8.20
|
'@unhead/schema': 1.9.1
|
||||||
'@unhead/shared': 1.8.20
|
'@unhead/shared': 1.9.1
|
||||||
|
|
||||||
/@unhead/schema@1.8.20:
|
/@unhead/schema@1.9.1:
|
||||||
resolution: {integrity: sha512-n0e5jsKino8JTHc4wpr4l8MXXIrj0muYYAEVa0WSYkIVnMiBr1Ik3l6elhCr4fdSyJ3M2DQQleea/oZCr11XCw==}
|
resolution: {integrity: sha512-wCJKNx4l837NEVMWP3MnUfkgsnMyuXwYs7+5VvbYzAWbnZSvQt/K10xDV0N7ft9RSlPfgukVVG+gtARm1kGVHQ==}
|
||||||
dependencies:
|
dependencies:
|
||||||
hookable: 5.5.3
|
hookable: 5.5.3
|
||||||
zhead: 2.2.4
|
zhead: 2.2.4
|
||||||
|
|
||||||
/@unhead/shared@1.8.20:
|
/@unhead/shared@1.9.1:
|
||||||
resolution: {integrity: sha512-J0fdtavcMtXcG0g9jmVW03toqfr8A0G7k+Q6jdpwuUPhWk/vhfZn3aiRV+F8LlU91c/AbGWDv8T1MrtMQbb0Sg==}
|
resolution: {integrity: sha512-rZgzXzOeF4vu2bJJAkHJckgPgWGfpDA3/vesPhJIZGs2NkGYi9lDwMUeJ90HKCMJv1+JRAcPOokjRi6vRlnQpg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@unhead/schema': 1.8.20
|
'@unhead/schema': 1.9.1
|
||||||
|
|
||||||
/@unhead/ssr@1.8.20:
|
/@unhead/ssr@1.9.1:
|
||||||
resolution: {integrity: sha512-Cq1NcdYZ/IAkJ0muqdOBxJXb5dn+uV+RvIXDykRb9lGgriU/S0fzUw8XYTYMwLlvW6rSMrtRx319hz2D3ZrBkA==}
|
resolution: {integrity: sha512-ojY5umX2rtEvmsAFX935DPxk+rZfmgLOEMP1etJGYmCh2GQskK4USjUp9uYJyf0DP0xh+42R4a06e5602CIWHQ==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@unhead/schema': 1.8.20
|
'@unhead/schema': 1.9.1
|
||||||
'@unhead/shared': 1.8.20
|
'@unhead/shared': 1.9.1
|
||||||
|
|
||||||
/@unhead/vue@1.8.20(vue@3.4.21):
|
/@unhead/vue@1.9.1(vue@3.4.21):
|
||||||
resolution: {integrity: sha512-Lm6cnbX/QGCh+pxGN1Tl6LVXxYs5bLlN8APfI2rQ5kMNRE6Yy7r2eY5wCZ0SfsSRonqJxzVlgMMh8JPEY5d4GQ==}
|
resolution: {integrity: sha512-clSKIkwtw26Lx5tR7ecJ/zvyFJkghvJU+jt2liQ4XYQb/Qaveh8L7gqsI1RKUuKaXAjlo2Z4Jpp1v9nHxA0heg==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
vue: '>=2.7 || >=3'
|
vue: '>=2.7 || >=3'
|
||||||
dependencies:
|
dependencies:
|
||||||
'@unhead/schema': 1.8.20
|
'@unhead/schema': 1.9.1
|
||||||
'@unhead/shared': 1.8.20
|
'@unhead/shared': 1.9.1
|
||||||
hookable: 5.5.3
|
hookable: 5.5.3
|
||||||
unhead: 1.8.20
|
unhead: 1.9.1
|
||||||
vue: 3.4.21(typescript@5.4.3)
|
vue: 3.4.21(typescript@5.4.3)
|
||||||
|
|
||||||
/@unocss/astro@0.58.6(rollup@4.13.0)(vite@5.2.6):
|
/@unocss/astro@0.58.6(rollup@4.13.0)(vite@5.2.6):
|
||||||
@ -2481,15 +2481,15 @@ packages:
|
|||||||
/@vue/devtools-api@6.6.1:
|
/@vue/devtools-api@6.6.1:
|
||||||
resolution: {integrity: sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==}
|
resolution: {integrity: sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==}
|
||||||
|
|
||||||
/@vue/devtools-applet@7.0.20(@unocss/reset@0.58.6)(floating-vue@5.2.2)(unocss@0.58.6)(vite@5.2.6)(vue@3.4.21):
|
/@vue/devtools-applet@7.0.21(@unocss/reset@0.58.6)(floating-vue@5.2.2)(unocss@0.58.6)(vite@5.2.6)(vue@3.4.21):
|
||||||
resolution: {integrity: sha512-q48RtnhFmC0kd4N+3Edfctv6oL2neN6crUapBydSr6szjR87dQJygTEYKlpyx0SHmVLVwq4mcgFuf1ftAKjd/w==}
|
resolution: {integrity: sha512-XqMeZrRoMJBSybg0Lu1777UZzI3nzApPlT4ZgupGkcFWQqoUkuhDaGYDqxer/yQgg4hOZsZQnB9nOmIk+GjGPA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
vue: ^3.0.0
|
vue: ^3.0.0
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vue/devtools-core': 7.0.20(vite@5.2.6)(vue@3.4.21)
|
'@vue/devtools-core': 7.0.21(vite@5.2.6)(vue@3.4.21)
|
||||||
'@vue/devtools-kit': 7.0.20(vue@3.4.21)
|
'@vue/devtools-kit': 7.0.21(vue@3.4.21)
|
||||||
'@vue/devtools-shared': 7.0.20
|
'@vue/devtools-shared': 7.0.21
|
||||||
'@vue/devtools-ui': 7.0.20(@unocss/reset@0.58.6)(floating-vue@5.2.2)(unocss@0.58.6)(vue@3.4.21)
|
'@vue/devtools-ui': 7.0.21(@unocss/reset@0.58.6)(floating-vue@5.2.2)(unocss@0.58.6)(vue@3.4.21)
|
||||||
perfect-debounce: 1.0.0
|
perfect-debounce: 1.0.0
|
||||||
splitpanes: 3.1.5
|
splitpanes: 3.1.5
|
||||||
vue: 3.4.21(typescript@5.4.3)
|
vue: 3.4.21(typescript@5.4.3)
|
||||||
@ -2512,11 +2512,11 @@ packages:
|
|||||||
- unocss
|
- unocss
|
||||||
- vite
|
- vite
|
||||||
|
|
||||||
/@vue/devtools-core@7.0.20(vite@5.2.6)(vue@3.4.21):
|
/@vue/devtools-core@7.0.21(vite@5.2.6)(vue@3.4.21):
|
||||||
resolution: {integrity: sha512-JefAn0ljTUPtoEJ47PjEfcLQb9BVt3OH1R6aD8qZ7bNYwZH+xystXpVJ3pW+1iDnOXjfpLgc3bsHUZoxlfobpw==}
|
resolution: {integrity: sha512-t5U1+lBZ9KmscJgcVtpZru2Le0fjckOBDwjodmqxccYEidj/7zst0bLbPwH9bYsNK6h6mtfZ6MtbcgTUcvNKsg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vue/devtools-kit': 7.0.20(vue@3.4.21)
|
'@vue/devtools-kit': 7.0.21(vue@3.4.21)
|
||||||
'@vue/devtools-shared': 7.0.20
|
'@vue/devtools-shared': 7.0.21
|
||||||
mitt: 3.0.1
|
mitt: 3.0.1
|
||||||
nanoid: 3.3.7
|
nanoid: 3.3.7
|
||||||
pathe: 1.1.2
|
pathe: 1.1.2
|
||||||
@ -2525,25 +2525,25 @@ packages:
|
|||||||
- vite
|
- vite
|
||||||
- vue
|
- vue
|
||||||
|
|
||||||
/@vue/devtools-kit@7.0.20(vue@3.4.21):
|
/@vue/devtools-kit@7.0.21(vue@3.4.21):
|
||||||
resolution: {integrity: sha512-FgFuPuqrhQ51rR/sVi52FnGgrxJ3X1bvNra/SkBzPhxJVhfyL5w2YUJZI1FgCvtLAyPSomJNdvlG415ZbJsr6w==}
|
resolution: {integrity: sha512-tNDtcQkPHfLDH1wtZuSZ2ZfE+r/aGswkBmKmXjwfpZTsOTk/YXsgrMnBKtHOL6dpsG3GyP09gIgNkCkA5lBIPQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
vue: ^3.0.0
|
vue: ^3.0.0
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vue/devtools-shared': 7.0.20
|
'@vue/devtools-shared': 7.0.21
|
||||||
hookable: 5.5.3
|
hookable: 5.5.3
|
||||||
mitt: 3.0.1
|
mitt: 3.0.1
|
||||||
perfect-debounce: 1.0.0
|
perfect-debounce: 1.0.0
|
||||||
speakingurl: 14.0.1
|
speakingurl: 14.0.1
|
||||||
vue: 3.4.21(typescript@5.4.3)
|
vue: 3.4.21(typescript@5.4.3)
|
||||||
|
|
||||||
/@vue/devtools-shared@7.0.20:
|
/@vue/devtools-shared@7.0.21:
|
||||||
resolution: {integrity: sha512-E6CiCaYr6ZWOCYJgWodXcPCXxB12vgbUA1X1sG0F1tK5Bo5I35GJuTR8LBJLFHV0VpwLWvyrIi9drT1ZbuJxlg==}
|
resolution: {integrity: sha512-wuIakRkSqwsk9+Y4z5QTdsmhTJRAt4aX0ROXyOOEPL+ROrN26YsPbXyqlzroU5uoOoAvx81iObIlmwZWtZztgw==}
|
||||||
dependencies:
|
dependencies:
|
||||||
rfdc: 1.3.1
|
rfdc: 1.3.1
|
||||||
|
|
||||||
/@vue/devtools-ui@7.0.20(@unocss/reset@0.58.6)(floating-vue@5.2.2)(unocss@0.58.6)(vue@3.4.21):
|
/@vue/devtools-ui@7.0.21(@unocss/reset@0.58.6)(floating-vue@5.2.2)(unocss@0.58.6)(vue@3.4.21):
|
||||||
resolution: {integrity: sha512-0Jy+9l8gQKnEPitOBthib6bZPdf2FipPIpMZPZ90xH4z1nWGN2aHBqOHH3dMpNgnymlkgAR5QDvodj5RcxiUGw==}
|
resolution: {integrity: sha512-hYLhMAKoTJ2/Lbol0pbZW0jq49x/fYheTqa6zpLw1Qti5eOD+sOS9WGQZL/T8nBuOG/yZJswI+R0qaUrJXiLrA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@unocss/reset': '>=0.50.0-0'
|
'@unocss/reset': '>=0.50.0-0'
|
||||||
floating-vue: '>=2.0.0-0'
|
floating-vue: '>=2.0.0-0'
|
||||||
@ -3472,8 +3472,8 @@ packages:
|
|||||||
uWebSockets.js:
|
uWebSockets.js:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/css-declaration-sorter@7.1.1(postcss@8.4.38):
|
/css-declaration-sorter@7.2.0(postcss@8.4.38):
|
||||||
resolution: {integrity: sha512-dZ3bVTEEc1vxr3Bek9vGwfB5Z6ESPULhcRvO472mfjVnj8jRcTnKO8/JTczlvxM10Myb+wBM++1MtdO76eWcaQ==}
|
resolution: {integrity: sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==}
|
||||||
engines: {node: ^14 || ^16 || >=18}
|
engines: {node: ^14 || ^16 || >=18}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
postcss: ^8.0.9
|
postcss: ^8.0.9
|
||||||
@ -3519,14 +3519,14 @@ packages:
|
|||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
/cssnano-preset-default@6.1.1(postcss@8.4.38):
|
/cssnano-preset-default@6.1.2(postcss@8.4.38):
|
||||||
resolution: {integrity: sha512-XW/dYN2p8Jdkp1lovFd0UVRh6RB0iMyXJbAE9Qm+taR3p2LGu492AW34lVaukUrXoK9IxK5aK3CUmFpUorU4oA==}
|
resolution: {integrity: sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg==}
|
||||||
engines: {node: ^14 || ^16 || >=18.0}
|
engines: {node: ^14 || ^16 || >=18.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
postcss: ^8.4.31
|
postcss: ^8.4.31
|
||||||
dependencies:
|
dependencies:
|
||||||
browserslist: 4.23.0
|
browserslist: 4.23.0
|
||||||
css-declaration-sorter: 7.1.1(postcss@8.4.38)
|
css-declaration-sorter: 7.2.0(postcss@8.4.38)
|
||||||
cssnano-utils: 4.0.2(postcss@8.4.38)
|
cssnano-utils: 4.0.2(postcss@8.4.38)
|
||||||
postcss: 8.4.38
|
postcss: 8.4.38
|
||||||
postcss-calc: 9.0.1(postcss@8.4.38)
|
postcss-calc: 9.0.1(postcss@8.4.38)
|
||||||
@ -3565,13 +3565,13 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
postcss: 8.4.38
|
postcss: 8.4.38
|
||||||
|
|
||||||
/cssnano@6.1.1(postcss@8.4.38):
|
/cssnano@6.1.2(postcss@8.4.38):
|
||||||
resolution: {integrity: sha512-paTFZuiVohpaXJuau8l7buFt9+FTmfjwEO70EKitzYOQw3frib/It4sb6cQ+gJyDEyY+myDSni6IbBvKZ0N8Lw==}
|
resolution: {integrity: sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA==}
|
||||||
engines: {node: ^14 || ^16 || >=18.0}
|
engines: {node: ^14 || ^16 || >=18.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
postcss: ^8.4.31
|
postcss: ^8.4.31
|
||||||
dependencies:
|
dependencies:
|
||||||
cssnano-preset-default: 6.1.1(postcss@8.4.38)
|
cssnano-preset-default: 6.1.2(postcss@8.4.38)
|
||||||
lilconfig: 3.1.1
|
lilconfig: 3.1.1
|
||||||
postcss: 8.4.38
|
postcss: 8.4.38
|
||||||
|
|
||||||
@ -4274,7 +4274,7 @@ packages:
|
|||||||
destr: 2.0.3
|
destr: 2.0.3
|
||||||
iron-webcrypto: 1.1.0
|
iron-webcrypto: 1.1.0
|
||||||
ohash: 1.1.3
|
ohash: 1.1.3
|
||||||
radix3: 1.1.1
|
radix3: 1.1.2
|
||||||
ufo: 1.5.3
|
ufo: 1.5.3
|
||||||
uncrypto: 0.1.3
|
uncrypto: 0.1.3
|
||||||
unenv: 1.9.0
|
unenv: 1.9.0
|
||||||
@ -5300,7 +5300,7 @@ packages:
|
|||||||
perfect-debounce: 1.0.0
|
perfect-debounce: 1.0.0
|
||||||
pkg-types: 1.0.3
|
pkg-types: 1.0.3
|
||||||
pretty-bytes: 6.1.1
|
pretty-bytes: 6.1.1
|
||||||
radix3: 1.1.1
|
radix3: 1.1.2
|
||||||
rollup: 4.13.0
|
rollup: 4.13.0
|
||||||
rollup-plugin-visualizer: 5.12.0(rollup@4.13.0)
|
rollup-plugin-visualizer: 5.12.0(rollup@4.13.0)
|
||||||
scule: 1.3.0
|
scule: 1.3.0
|
||||||
@ -5361,8 +5361,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==}
|
resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
/node-gyp@10.0.1:
|
/node-gyp@10.1.0:
|
||||||
resolution: {integrity: sha512-gg3/bHehQfZivQVfqIyy8wTdSymF9yTyP4CJifK73imyNMU8AIGQE2pUa7dNWfmMeG9cDVF2eehiRMv0LC1iAg==}
|
resolution: {integrity: sha512-B4J5M1cABxPc5PwfjhbV5hoy2DP9p8lFXASnEN6hugXOa61416tnTZ29x9sSwAd0o99XNIcpvDDy1swAExsVKA==}
|
||||||
engines: {node: ^16.14.0 || >=18.0.0}
|
engines: {node: ^16.14.0 || >=18.0.0}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -5514,7 +5514,7 @@ packages:
|
|||||||
/nuxt-icon@0.6.10(nuxt@3.11.1)(rollup@4.13.0)(vite@5.2.6)(vue@3.4.21):
|
/nuxt-icon@0.6.10(nuxt@3.11.1)(rollup@4.13.0)(vite@5.2.6)(vue@3.4.21):
|
||||||
resolution: {integrity: sha512-S9zHVA66ox4ZSpMWvCjqKZC4ZogC0s2z3vZs+M4D95YXGPEXwxDZu+insMKvkbe8+k7gvEmtTk0eq3KusKlxiw==}
|
resolution: {integrity: sha512-S9zHVA66ox4ZSpMWvCjqKZC4ZogC0s2z3vZs+M4D95YXGPEXwxDZu+insMKvkbe8+k7gvEmtTk0eq3KusKlxiw==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@iconify/collections': 1.0.407
|
'@iconify/collections': 1.0.408
|
||||||
'@iconify/vue': 4.1.1(vue@3.4.21)
|
'@iconify/vue': 4.1.1(vue@3.4.21)
|
||||||
'@nuxt/devtools-kit': 1.1.3(nuxt@3.11.1)(rollup@4.13.0)(vite@5.2.6)
|
'@nuxt/devtools-kit': 1.1.3(nuxt@3.11.1)(rollup@4.13.0)(vite@5.2.6)
|
||||||
'@nuxt/kit': 3.11.1(rollup@4.13.0)
|
'@nuxt/kit': 3.11.1(rollup@4.13.0)
|
||||||
@ -5525,8 +5525,8 @@ packages:
|
|||||||
- vite
|
- vite
|
||||||
- vue
|
- vue
|
||||||
|
|
||||||
/nuxt-simple-robots@4.0.0-rc.15(@nuxt/devtools@1.1.3)(@vue/compiler-core@3.4.21)(nuxt@3.11.1)(postcss@8.4.38)(rollup@4.13.0)(vite@5.2.6)(vue@3.4.21)(webpack@5.91.0):
|
/nuxt-simple-robots@4.0.0-rc.16(@nuxt/devtools@1.1.3)(@vue/compiler-core@3.4.21)(nuxt@3.11.1)(postcss@8.4.38)(rollup@4.13.0)(vite@5.2.6)(vue@3.4.21)(webpack@5.91.0):
|
||||||
resolution: {integrity: sha512-+kAk1MFUfDZWo29Py40cLTmt+of+QH7XB+aA3c5woAS/jdFb5WBq6c80H8XjnBiel3v/c5KXCw+0sHak/SsTmg==}
|
resolution: {integrity: sha512-jRgDvjRrRgTAC4WOLs1dx3mHlVa5VHATgDhk8+0Mp5H4WjBipZGrZs9WOWX5Jymh17oTIESVKGHZRhaRiP+AKA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@nuxt/devtools-kit': 1.1.3(nuxt@3.11.1)(rollup@4.13.0)(vite@5.2.6)
|
'@nuxt/devtools-kit': 1.1.3(nuxt@3.11.1)(rollup@4.13.0)(vite@5.2.6)
|
||||||
'@nuxt/kit': 3.11.1(rollup@4.13.0)
|
'@nuxt/kit': 3.11.1(rollup@4.13.0)
|
||||||
@ -5643,9 +5643,9 @@ packages:
|
|||||||
'@nuxt/telemetry': 2.5.3(rollup@4.13.0)
|
'@nuxt/telemetry': 2.5.3(rollup@4.13.0)
|
||||||
'@nuxt/ui-templates': 1.3.1
|
'@nuxt/ui-templates': 1.3.1
|
||||||
'@nuxt/vite-builder': 3.11.1(less@4.2.0)(rollup@4.13.0)(sass@1.72.0)(typescript@5.4.3)(vue@3.4.21)
|
'@nuxt/vite-builder': 3.11.1(less@4.2.0)(rollup@4.13.0)(sass@1.72.0)(typescript@5.4.3)(vue@3.4.21)
|
||||||
'@unhead/dom': 1.8.20
|
'@unhead/dom': 1.9.1
|
||||||
'@unhead/ssr': 1.8.20
|
'@unhead/ssr': 1.9.1
|
||||||
'@unhead/vue': 1.8.20(vue@3.4.21)
|
'@unhead/vue': 1.9.1(vue@3.4.21)
|
||||||
'@vue/shared': 3.4.21
|
'@vue/shared': 3.4.21
|
||||||
acorn: 8.11.3
|
acorn: 8.11.3
|
||||||
c12: 1.10.0
|
c12: 1.10.0
|
||||||
@ -5674,7 +5674,7 @@ packages:
|
|||||||
pathe: 1.1.2
|
pathe: 1.1.2
|
||||||
perfect-debounce: 1.0.0
|
perfect-debounce: 1.0.0
|
||||||
pkg-types: 1.0.3
|
pkg-types: 1.0.3
|
||||||
radix3: 1.1.1
|
radix3: 1.1.2
|
||||||
scule: 1.3.0
|
scule: 1.3.0
|
||||||
std-env: 3.7.0
|
std-env: 3.7.0
|
||||||
strip-literal: 2.0.0
|
strip-literal: 2.0.0
|
||||||
@ -6420,8 +6420,8 @@ packages:
|
|||||||
/queue-tick@1.0.1:
|
/queue-tick@1.0.1:
|
||||||
resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==}
|
resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==}
|
||||||
|
|
||||||
/radix3@1.1.1:
|
/radix3@1.1.2:
|
||||||
resolution: {integrity: sha512-yUUd5VTiFtcMEx0qFUxGAv5gbMc1un4RvEO1JZdP7ZUl/RHygZK6PknIKntmQRZxnMY3ZXD2ISaw1ij8GYW1yg==}
|
resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==}
|
||||||
|
|
||||||
/randombytes@2.1.0:
|
/randombytes@2.1.0:
|
||||||
resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==}
|
resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==}
|
||||||
@ -6747,11 +6747,11 @@ packages:
|
|||||||
engines: {node: ^16.14.0 || >=18.0.0}
|
engines: {node: ^16.14.0 || >=18.0.0}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@sigstore/bundle': 2.2.0
|
'@sigstore/bundle': 2.2.0
|
||||||
'@sigstore/core': 1.0.0
|
'@sigstore/core': 1.1.0
|
||||||
'@sigstore/protobuf-specs': 0.3.0
|
'@sigstore/protobuf-specs': 0.3.0
|
||||||
'@sigstore/sign': 2.2.3
|
'@sigstore/sign': 2.2.3
|
||||||
'@sigstore/tuf': 2.3.1
|
'@sigstore/tuf': 2.3.2
|
||||||
'@sigstore/verify': 1.1.0
|
'@sigstore/verify': 1.1.1
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
@ -7259,12 +7259,12 @@ packages:
|
|||||||
node-fetch-native: 1.6.4
|
node-fetch-native: 1.6.4
|
||||||
pathe: 1.1.2
|
pathe: 1.1.2
|
||||||
|
|
||||||
/unhead@1.8.20:
|
/unhead@1.9.1:
|
||||||
resolution: {integrity: sha512-IJOCYact/7Za3M7CeeCWs8Vze53kHvKDUy/EXtkTm/an5StgqOt2uCnS3HrkioIMKdHBpy/qtTc6E3BoGMOq7Q==}
|
resolution: {integrity: sha512-qTyA0V6xjUrIJp6KWs0CqAayw4K2DE7rh0GO0vmcC2YuF0HITO/3zkVtG7zhJUd5VeGgGCO/82zatDOOhMyneA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@unhead/dom': 1.8.20
|
'@unhead/dom': 1.9.1
|
||||||
'@unhead/schema': 1.8.20
|
'@unhead/schema': 1.9.1
|
||||||
'@unhead/shared': 1.8.20
|
'@unhead/shared': 1.9.1
|
||||||
hookable: 5.5.3
|
hookable: 5.5.3
|
||||||
|
|
||||||
/unicorn-magic@0.1.0:
|
/unicorn-magic@0.1.0:
|
||||||
|
@ -6,6 +6,6 @@ export default defineEventHandler(async (event) => {
|
|||||||
const res = await whois(body.domain)
|
const res = await whois(body.domain)
|
||||||
return res._raw
|
return res._raw
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
return e
|
return new Error("接口不支持或者查询有误")
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -4,12 +4,14 @@ import serversData from '~/server/whois/json/whois-servers.json';
|
|||||||
// 定义接口来描述state的结构
|
// 定义接口来描述state的结构
|
||||||
interface DomainState {
|
interface DomainState {
|
||||||
SupportedTLDs: Record<string, string>;
|
SupportedTLDs: Record<string, string>;
|
||||||
|
supportedTLDKeys: Set<string>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const useDomainListStore = defineStore('useDomainListStore', {
|
export const useDomainListStore = defineStore('useDomainListStore', {
|
||||||
// 使用箭头函数和类型注解定义state
|
// 使用箭头函数和类型注解定义state
|
||||||
state: (): DomainState => ({
|
state: (): DomainState => ({
|
||||||
SupportedTLDs: {...serversData},
|
SupportedTLDs: {...serversData},
|
||||||
|
supportedTLDKeys: new Set(Object.keys(serversData)) as any,
|
||||||
}),
|
}),
|
||||||
actions: {
|
actions: {
|
||||||
async addSuffix(suffix: string, server: string) {
|
async addSuffix(suffix: string, server: string) {
|
||||||
@ -43,6 +45,14 @@ export const useDomainListStore = defineStore('useDomainListStore', {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
getters: {
|
||||||
|
getSupportedTLDs(state: any) {
|
||||||
|
return state.SupportedTLDs;
|
||||||
|
},
|
||||||
|
getSupportedTLDKeys(state: any) {
|
||||||
|
return state.supportedTLDKeys;
|
||||||
|
}
|
||||||
|
},
|
||||||
persist: {
|
persist: {
|
||||||
storage: persistedState.localStorage,
|
storage: persistedState.localStorage,
|
||||||
}
|
}
|
||||||
|
@ -27,5 +27,5 @@ export default {
|
|||||||
corePlugins: {
|
corePlugins: {
|
||||||
preflight: true,
|
preflight: true,
|
||||||
},
|
},
|
||||||
darkMode: 'class',
|
darkMode: "class"
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user