diff --git a/.prettierignore b/.prettierignore index 18f1a04b0..3cd9fe28e 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,2 +1,4 @@ **/*.md pnpm-lock.yaml +.turbo +.cache diff --git a/.prettierrc.yaml b/.prettierrc.yaml index 762f32771..13ef8b78a 100644 --- a/.prettierrc.yaml +++ b/.prettierrc.yaml @@ -7,3 +7,17 @@ htmlWhitespaceSensitivity: ignore plugins: - prettier-plugin-tailwindcss - prettier-plugin-pkgsort + - '@ianvs/prettier-plugin-sort-imports' + +importOrder: + [ + '', + '^(node:)', + '', + '^[.]', + '', + '', + '^[.]', + '^(?!.*[.]css$)[./].*$', + '.css$' + ] diff --git a/api/README.md b/api/README.md new file mode 100644 index 000000000..eb28136e6 --- /dev/null +++ b/api/README.md @@ -0,0 +1,3 @@ +This is the API for the website and other related services. + +Licensed under the Apache License v2.0, see [LICENSE](../docs/.vitepress/LICENSE) for more information. diff --git a/api/middleware/cors.ts b/api/middleware/cors.ts index 1ae38263e..a625b8bb4 100644 --- a/api/middleware/cors.ts +++ b/api/middleware/cors.ts @@ -1,18 +1,19 @@ /** -* Copyright (c) taskylizard. All rights reserved. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ + * Copyright (c) taskylizard. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import { corsEventHandler } from 'nitro-cors' export default corsEventHandler( diff --git a/api/routes/feedback.post.ts b/api/routes/feedback.post.ts index 729069bb3..9f0c2fe4d 100644 --- a/api/routes/feedback.post.ts +++ b/api/routes/feedback.post.ts @@ -1,18 +1,19 @@ /** -* Copyright (c) taskylizard. All rights reserved. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ + * Copyright (c) taskylizard. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import { fetcher } from 'itty-fetcher' import { FeedbackSchema, diff --git a/api/routes/index.ts b/api/routes/index.ts index 324d3bdd3..23956fa80 100644 --- a/api/routes/index.ts +++ b/api/routes/index.ts @@ -1,18 +1,18 @@ /** -* Copyright (c) taskylizard. All rights reserved. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ + * Copyright (c) taskylizard. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ export default eventHandler(() => { return { nitro: 'works' } }) diff --git a/api/routes/single-page.ts b/api/routes/single-page.ts index 85444d946..ca4d74682 100644 --- a/api/routes/single-page.ts +++ b/api/routes/single-page.ts @@ -1,18 +1,19 @@ /** -* Copyright (c) taskylizard. All rights reserved. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ + * Copyright (c) taskylizard. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import { fetcher } from 'itty-fetcher' // Look inside tbe docs directory diff --git a/biome.json b/biome.json index 791dc426c..2d63b9da3 100644 --- a/biome.json +++ b/biome.json @@ -1,11 +1,11 @@ { "$schema": "https://biomejs.dev/schemas/1.8.3/schema.json", - "extends": ["@taskylizard/biome-config", "./docs/.vitepress/.imports.json"], + "extends": ["@taskylizard/biome-config", "./.cache/imports.json"], "files": { "ignore": [ "docs/.vitepress/**/*.vue", "docs/.vitepress/vue-shim.d.ts", - "docs/.vitepress/imports.d.ts" + ".cache/imports.d.ts" ] }, "formatter": { diff --git a/docs/.vitepress/.imports.json b/docs/.vitepress/.imports.json deleted file mode 100644 index 4ce5dfe01..000000000 --- a/docs/.vitepress/.imports.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "javascript": { - "globals": [ - "Component", - "ComponentPublicInstance", - "ComputedRef", - "EffectScope", - "ExtractDefaultPropTypes", - "ExtractPropTypes", - "ExtractPublicPropTypes", - "InjectionKey", - "PropType", - "Ref", - "VNode", - "WritableComputedRef", - "computed", - "createApp", - "customRef", - "defineAsyncComponent", - "defineComponent", - "effectScope", - "getCurrentInstance", - "getCurrentScope", - "h", - "inject", - "isProxy", - "isReactive", - "isReadonly", - "isRef", - "markRaw", - "nextTick", - "onActivated", - "onBeforeMount", - "onBeforeUnmount", - "onBeforeUpdate", - "onDeactivated", - "onErrorCaptured", - "onMounted", - "onRenderTracked", - "onRenderTriggered", - "onScopeDispose", - "onServerPrefetch", - "onUnmounted", - "onUpdated", - "provide", - "reactive", - "readonly", - "ref", - "resolveComponent", - "shallowReactive", - "shallowReadonly", - "shallowRef", - "toRaw", - "toRef", - "toRefs", - "toValue", - "triggerRef", - "unref", - "useAttrs", - "useCssModule", - "useCssVars", - "useData", - "useRoute", - "useRouter", - "useSlots", - "watch", - "watchEffect", - "watchPostEffect", - "watchSyncEffect", - "withBase" - ] - } -} diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index 3fa4dbc80..374c64f8c 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -1,5 +1,6 @@ import consola from 'consola' import UnoCSS from 'unocss/vite' +import AutoImport from 'unplugin-auto-import/vite' import { defineConfig } from 'vitepress' import { commitRef, @@ -11,10 +12,9 @@ import { } from './constants' import { generateFeed, generateImages, generateMeta } from './hooks' import { defs, emojiRender, movePlugin } from './markdown/emoji' -import { toggleStarredPlugin } from './markdown/toggleStarred' import { headersPlugin } from './markdown/headers' +import { toggleStarredPlugin } from './markdown/toggleStarred' import { transforms } from './transformer' -import AutoImport from 'unplugin-auto-import/vite' // @unocss-include @@ -59,12 +59,12 @@ export default defineConfig({ configFile: '../unocss.config.ts' }), AutoImport({ - dts: './.vitepress/imports.d.ts', + dts: '../.cache/imports.d.ts', imports: ['vue', 'vitepress'], vueTemplate: true, biomelintrc: { enabled: true, - filepath: './docs/.vitepress/.imports.json' + filepath: './.cache/imports.json' } }), transforms(), diff --git a/docs/.vitepress/constants.ts b/docs/.vitepress/constants.ts index d3d04a11f..cb37d091f 100644 --- a/docs/.vitepress/constants.ts +++ b/docs/.vitepress/constants.ts @@ -1,20 +1,22 @@ /** -* Copyright (c) taskylizard. All rights reserved. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ + * Copyright (c) taskylizard. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import type { DefaultTheme } from 'vitepress' import { transform, transformGuide } from './transformer' + // @unocss-include export const meta = { @@ -26,8 +28,9 @@ export const meta = { export const commitRef = process.env.CF_PAGES && process.env.CF_PAGES_COMMIT_SHA - ? `${process.env.CF_PAGES_COMMIT_SHA.slice(0, 8)}` + ? `${process.env.CF_PAGES_COMMIT_SHA.slice(0, 8)}` : 'dev' export const feedback = `` @@ -82,11 +85,7 @@ export const search: DefaultTheme.Config['search'] = { combineWith: 'AND', fuzzy: true, // @ts-ignore - boostDocument: ( - documentId, - term, - storedFields: Record - ) => { + boostDocument: (documentId, term, storedFields: Record) => { const titles = (storedFields?.titles as string[]) .filter((t) => Boolean(t)) .map((t) => t.toLowerCase()) diff --git a/docs/.vitepress/hooks/meta.ts b/docs/.vitepress/hooks/meta.ts index 643676507..b5f72c498 100644 --- a/docs/.vitepress/hooks/meta.ts +++ b/docs/.vitepress/hooks/meta.ts @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import type { HeadConfig, TransformContext } from 'vitepress' export function generateMeta(context: TransformContext, hostname: string) { diff --git a/docs/.vitepress/hooks/opengraph.ts b/docs/.vitepress/hooks/opengraph.ts index 74c5749dd..2969da2d6 100644 --- a/docs/.vitepress/hooks/opengraph.ts +++ b/docs/.vitepress/hooks/opengraph.ts @@ -13,14 +13,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + +import type { ContentData, SiteConfig } from 'vitepress' +import type { SatoriOptions } from 'x-satori/vue' import { mkdir, readFile, writeFile } from 'node:fs/promises' import { dirname, resolve } from 'node:path' import { fileURLToPath } from 'node:url' -import { createContentLoader } from 'vitepress' -import type { ContentData, SiteConfig } from 'vitepress' -import { type SatoriOptions, satoriVue } from 'x-satori/vue' import { renderAsync } from '@resvg/resvg-js' import consola from 'consola' +import { createContentLoader } from 'vitepress' +import { satoriVue } from 'x-satori/vue' import { headers } from '../transformer/constants' const __dirname = dirname(fileURLToPath(import.meta.url)) @@ -86,14 +88,14 @@ async function generateImage({ const _page = getPage(url) const title = frontmatter.layout === 'home' - ? frontmatter.hero.name ?? frontmatter.title + ? (frontmatter.hero.name ?? frontmatter.title) : frontmatter.title ? frontmatter.title : _page?.title const description = frontmatter.layout === 'home' - ? frontmatter.hero.tagline ?? frontmatter.description + ? (frontmatter.hero.tagline ?? frontmatter.description) : frontmatter.description ? frontmatter.description : _page?.description diff --git a/docs/.vitepress/hooks/rss.ts b/docs/.vitepress/hooks/rss.ts index 40d7d5d44..fdf1a1934 100644 --- a/docs/.vitepress/hooks/rss.ts +++ b/docs/.vitepress/hooks/rss.ts @@ -13,15 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import path from 'node:path' + +import type { ContentData, SiteConfig } from 'vitepress' import { writeFileSync } from 'node:fs' -import { Feed } from 'feed' -import { - createContentLoader, - type ContentData, - type SiteConfig -} from 'vitepress' +import path from 'node:path' import consola from 'consola' +import { Feed } from 'feed' +import { createContentLoader } from 'vitepress' import { meta } from '../constants' export async function generateFeed(config: SiteConfig): Promise { diff --git a/docs/.vitepress/hooks/satoriConfig.ts b/docs/.vitepress/hooks/satoriConfig.ts index 6a758fcac..2e0b972ae 100644 --- a/docs/.vitepress/hooks/satoriConfig.ts +++ b/docs/.vitepress/hooks/satoriConfig.ts @@ -13,10 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + +import type { SatoriOptions } from 'x-satori/vue' import { readFile } from 'node:fs/promises' import { dirname, resolve } from 'node:path' import { fileURLToPath } from 'node:url' -import type { SatoriOptions } from 'x-satori/vue' import { defineSatoriConfig } from 'x-satori/vue' const __dirname = dirname(fileURLToPath(import.meta.url)) diff --git a/docs/.vitepress/imports.d.ts b/docs/.vitepress/imports.d.ts deleted file mode 100644 index 247ace555..000000000 --- a/docs/.vitepress/imports.d.ts +++ /dev/null @@ -1,188 +0,0 @@ -/** -* Copyright (c) taskylizard. All rights reserved. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -/* eslint-disable */ -/* prettier-ignore */ -// @ts-nocheck -// noinspection JSUnusedGlobalSymbols -// Generated by unplugin-auto-import -export {} -declare global { - const EffectScope: (typeof import('vue'))['EffectScope'] - const computed: (typeof import('vue'))['computed'] - const createApp: (typeof import('vue'))['createApp'] - const customRef: (typeof import('vue'))['customRef'] - const defineAsyncComponent: (typeof import('vue'))['defineAsyncComponent'] - const defineComponent: (typeof import('vue'))['defineComponent'] - const effectScope: (typeof import('vue'))['effectScope'] - const getCurrentInstance: (typeof import('vue'))['getCurrentInstance'] - const getCurrentScope: (typeof import('vue'))['getCurrentScope'] - const h: (typeof import('vue'))['h'] - const inject: (typeof import('vue'))['inject'] - const isProxy: (typeof import('vue'))['isProxy'] - const isReactive: (typeof import('vue'))['isReactive'] - const isReadonly: (typeof import('vue'))['isReadonly'] - const isRef: (typeof import('vue'))['isRef'] - const markRaw: (typeof import('vue'))['markRaw'] - const nextTick: (typeof import('vue'))['nextTick'] - const onActivated: (typeof import('vue'))['onActivated'] - const onBeforeMount: (typeof import('vue'))['onBeforeMount'] - const onBeforeUnmount: (typeof import('vue'))['onBeforeUnmount'] - const onBeforeUpdate: (typeof import('vue'))['onBeforeUpdate'] - const onDeactivated: (typeof import('vue'))['onDeactivated'] - const onErrorCaptured: (typeof import('vue'))['onErrorCaptured'] - const onMounted: (typeof import('vue'))['onMounted'] - const onRenderTracked: (typeof import('vue'))['onRenderTracked'] - const onRenderTriggered: (typeof import('vue'))['onRenderTriggered'] - const onScopeDispose: (typeof import('vue'))['onScopeDispose'] - const onServerPrefetch: (typeof import('vue'))['onServerPrefetch'] - const onUnmounted: (typeof import('vue'))['onUnmounted'] - const onUpdated: (typeof import('vue'))['onUpdated'] - const provide: (typeof import('vue'))['provide'] - const reactive: (typeof import('vue'))['reactive'] - const readonly: (typeof import('vue'))['readonly'] - const ref: (typeof import('vue'))['ref'] - const resolveComponent: (typeof import('vue'))['resolveComponent'] - const shallowReactive: (typeof import('vue'))['shallowReactive'] - const shallowReadonly: (typeof import('vue'))['shallowReadonly'] - const shallowRef: (typeof import('vue'))['shallowRef'] - const toRaw: (typeof import('vue'))['toRaw'] - const toRef: (typeof import('vue'))['toRef'] - const toRefs: (typeof import('vue'))['toRefs'] - const toValue: (typeof import('vue'))['toValue'] - const triggerRef: (typeof import('vue'))['triggerRef'] - const unref: (typeof import('vue'))['unref'] - const useAttrs: (typeof import('vue'))['useAttrs'] - const useCssModule: (typeof import('vue'))['useCssModule'] - const useCssVars: (typeof import('vue'))['useCssVars'] - const useData: (typeof import('vitepress'))['useData'] - const useRoute: (typeof import('vitepress'))['useRoute'] - const useRouter: (typeof import('vitepress'))['useRouter'] - const useSlots: (typeof import('vue'))['useSlots'] - const watch: (typeof import('vue'))['watch'] - const watchEffect: (typeof import('vue'))['watchEffect'] - const watchPostEffect: (typeof import('vue'))['watchPostEffect'] - const watchSyncEffect: (typeof import('vue'))['watchSyncEffect'] - const withBase: (typeof import('vitepress'))['withBase'] -} -// for type re-export -declare global { - // @ts-ignore - export type { - Component, - ComponentPublicInstance, - ComputedRef, - ExtractDefaultPropTypes, - ExtractPropTypes, - ExtractPublicPropTypes, - InjectionKey, - PropType, - Ref, - VNode, - WritableComputedRef - } from 'vue' - import('vue') -} -// for vue template auto import -import { UnwrapRef } from 'vue' -declare module 'vue' { - interface GlobalComponents {} - interface ComponentCustomProperties { - readonly EffectScope: UnwrapRef<(typeof import('vue'))['EffectScope']> - readonly computed: UnwrapRef<(typeof import('vue'))['computed']> - readonly createApp: UnwrapRef<(typeof import('vue'))['createApp']> - readonly customRef: UnwrapRef<(typeof import('vue'))['customRef']> - readonly defineAsyncComponent: UnwrapRef< - (typeof import('vue'))['defineAsyncComponent'] - > - readonly defineComponent: UnwrapRef< - (typeof import('vue'))['defineComponent'] - > - readonly effectScope: UnwrapRef<(typeof import('vue'))['effectScope']> - readonly getCurrentInstance: UnwrapRef< - (typeof import('vue'))['getCurrentInstance'] - > - readonly getCurrentScope: UnwrapRef< - (typeof import('vue'))['getCurrentScope'] - > - readonly h: UnwrapRef<(typeof import('vue'))['h']> - readonly inject: UnwrapRef<(typeof import('vue'))['inject']> - readonly isProxy: UnwrapRef<(typeof import('vue'))['isProxy']> - readonly isReactive: UnwrapRef<(typeof import('vue'))['isReactive']> - readonly isReadonly: UnwrapRef<(typeof import('vue'))['isReadonly']> - readonly isRef: UnwrapRef<(typeof import('vue'))['isRef']> - readonly markRaw: UnwrapRef<(typeof import('vue'))['markRaw']> - readonly nextTick: UnwrapRef<(typeof import('vue'))['nextTick']> - readonly onActivated: UnwrapRef<(typeof import('vue'))['onActivated']> - readonly onBeforeMount: UnwrapRef<(typeof import('vue'))['onBeforeMount']> - readonly onBeforeUnmount: UnwrapRef< - (typeof import('vue'))['onBeforeUnmount'] - > - readonly onBeforeUpdate: UnwrapRef<(typeof import('vue'))['onBeforeUpdate']> - readonly onDeactivated: UnwrapRef<(typeof import('vue'))['onDeactivated']> - readonly onErrorCaptured: UnwrapRef< - (typeof import('vue'))['onErrorCaptured'] - > - readonly onMounted: UnwrapRef<(typeof import('vue'))['onMounted']> - readonly onRenderTracked: UnwrapRef< - (typeof import('vue'))['onRenderTracked'] - > - readonly onRenderTriggered: UnwrapRef< - (typeof import('vue'))['onRenderTriggered'] - > - readonly onScopeDispose: UnwrapRef<(typeof import('vue'))['onScopeDispose']> - readonly onServerPrefetch: UnwrapRef< - (typeof import('vue'))['onServerPrefetch'] - > - readonly onUnmounted: UnwrapRef<(typeof import('vue'))['onUnmounted']> - readonly onUpdated: UnwrapRef<(typeof import('vue'))['onUpdated']> - readonly provide: UnwrapRef<(typeof import('vue'))['provide']> - readonly reactive: UnwrapRef<(typeof import('vue'))['reactive']> - readonly readonly: UnwrapRef<(typeof import('vue'))['readonly']> - readonly ref: UnwrapRef<(typeof import('vue'))['ref']> - readonly resolveComponent: UnwrapRef< - (typeof import('vue'))['resolveComponent'] - > - readonly shallowReactive: UnwrapRef< - (typeof import('vue'))['shallowReactive'] - > - readonly shallowReadonly: UnwrapRef< - (typeof import('vue'))['shallowReadonly'] - > - readonly shallowRef: UnwrapRef<(typeof import('vue'))['shallowRef']> - readonly toRaw: UnwrapRef<(typeof import('vue'))['toRaw']> - readonly toRef: UnwrapRef<(typeof import('vue'))['toRef']> - readonly toRefs: UnwrapRef<(typeof import('vue'))['toRefs']> - readonly toValue: UnwrapRef<(typeof import('vue'))['toValue']> - readonly triggerRef: UnwrapRef<(typeof import('vue'))['triggerRef']> - readonly unref: UnwrapRef<(typeof import('vue'))['unref']> - readonly useAttrs: UnwrapRef<(typeof import('vue'))['useAttrs']> - readonly useCssModule: UnwrapRef<(typeof import('vue'))['useCssModule']> - readonly useCssVars: UnwrapRef<(typeof import('vue'))['useCssVars']> - readonly useData: UnwrapRef<(typeof import('vitepress'))['useData']> - readonly useRoute: UnwrapRef<(typeof import('vitepress'))['useRoute']> - readonly useRouter: UnwrapRef<(typeof import('vitepress'))['useRouter']> - readonly useSlots: UnwrapRef<(typeof import('vue'))['useSlots']> - readonly watch: UnwrapRef<(typeof import('vue'))['watch']> - readonly watchEffect: UnwrapRef<(typeof import('vue'))['watchEffect']> - readonly watchPostEffect: UnwrapRef< - (typeof import('vue'))['watchPostEffect'] - > - readonly watchSyncEffect: UnwrapRef< - (typeof import('vue'))['watchSyncEffect'] - > - readonly withBase: UnwrapRef<(typeof import('vitepress'))['withBase']> - } -} diff --git a/docs/.vitepress/markdown/base64.ts b/docs/.vitepress/markdown/base64.ts index ddb883b3d..50aead3d9 100644 --- a/docs/.vitepress/markdown/base64.ts +++ b/docs/.vitepress/markdown/base64.ts @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import type { MarkdownRenderer } from 'vitepress' // FIXME: tasky: possibly write less horror jank? diff --git a/docs/.vitepress/markdown/emoji.ts b/docs/.vitepress/markdown/emoji.ts index d50dd48e0..cfa05006b 100644 --- a/docs/.vitepress/markdown/emoji.ts +++ b/docs/.vitepress/markdown/emoji.ts @@ -13,8 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { icons as twemoji } from '@iconify-json/twemoji' + import type { MarkdownRenderer } from 'vitepress' +import { icons as twemoji } from '@iconify-json/twemoji' export const defs = { ...Object.fromEntries( diff --git a/docs/.vitepress/markdown/headers.ts b/docs/.vitepress/markdown/headers.ts index b771b7c9e..af2984d08 100644 --- a/docs/.vitepress/markdown/headers.ts +++ b/docs/.vitepress/markdown/headers.ts @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import type { MarkdownRenderer } from 'vitepress' import { headers } from '../transformer/constants' diff --git a/docs/.vitepress/markdown/toggleStarred.ts b/docs/.vitepress/markdown/toggleStarred.ts index baf60ca85..260abb88a 100644 --- a/docs/.vitepress/markdown/toggleStarred.ts +++ b/docs/.vitepress/markdown/toggleStarred.ts @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import type { MarkdownRenderer } from 'vitepress' const excluded = ['Beginners Guide'] diff --git a/docs/.vitepress/theme/Layout.vue b/docs/.vitepress/theme/Layout.vue index 5401d9602..e499c04c6 100644 --- a/docs/.vitepress/theme/Layout.vue +++ b/docs/.vitepress/theme/Layout.vue @@ -1,7 +1,7 @@ diff --git a/docs/.vitepress/theme/composables/nprogress.ts b/docs/.vitepress/theme/composables/nprogress.ts index 90e34516e..831b45b05 100644 --- a/docs/.vitepress/theme/composables/nprogress.ts +++ b/docs/.vitepress/theme/composables/nprogress.ts @@ -1,3 +1,7 @@ +import type { NProgress } from 'nprogress' +import type { EnhanceAppContext } from 'vitepress' +import nprogress from 'nprogress' + /** * Copyright (c) taskylizard. All rights reserved. * @@ -13,8 +17,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import nprogress, { type NProgress } from 'nprogress' -import type { EnhanceAppContext } from 'vitepress' export function loadProgress( router: EnhanceAppContext['router'] diff --git a/docs/.vitepress/theme/index.ts b/docs/.vitepress/theme/index.ts index d6499251f..21c490d91 100644 --- a/docs/.vitepress/theme/index.ts +++ b/docs/.vitepress/theme/index.ts @@ -13,13 +13,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import type { Theme } from 'vitepress' import DefaultTheme from 'vitepress/theme' +import { loadProgress } from './composables/nprogress' import Layout from './Layout.vue' import Post from './PostLayout.vue' -import { loadProgress } from './composables/nprogress' + import './style.css' import 'uno.css' + import Feedback from './components/Feedback.vue' export default { diff --git a/docs/.vitepress/theme/posts.data.ts b/docs/.vitepress/theme/posts.data.ts index 72ec7ecdc..045305bb7 100644 --- a/docs/.vitepress/theme/posts.data.ts +++ b/docs/.vitepress/theme/posts.data.ts @@ -1,3 +1,7 @@ +import type { ContentData } from 'vitepress' +import { createContentLoader } from 'vitepress' +import { groupBy } from '../utils' + /** * Copyright (c) taskylizard. All rights reserved. * @@ -13,8 +17,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { createContentLoader, type ContentData } from 'vitepress' -import { groupBy } from '../utils' interface Post { title: string diff --git a/docs/.vitepress/transformer.ts b/docs/.vitepress/transformer.ts index ffd72088a..3accac177 100644 --- a/docs/.vitepress/transformer.ts +++ b/docs/.vitepress/transformer.ts @@ -1,22 +1,23 @@ /** -* Copyright (c) taskylizard. All rights reserved. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -import { basename } from 'pathe' + * Copyright (c) taskylizard. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import type { Plugin } from 'vitepress' -import { replaceUnderscore, transformer } from './transformer/core' +import { basename } from 'pathe' import { excluded, getHeader } from './transformer/constants' +import { replaceUnderscore, transformer } from './transformer/core' export function transforms(): Plugin { return { diff --git a/docs/.vitepress/transformer/core.ts b/docs/.vitepress/transformer/core.ts index 905aa640f..753cf08ad 100644 --- a/docs/.vitepress/transformer/core.ts +++ b/docs/.vitepress/transformer/core.ts @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import consola from 'consola' type Transform = { diff --git a/docs/.vitepress/types/Feedback.ts b/docs/.vitepress/types/Feedback.ts index 247a80eee..52ff477d0 100644 --- a/docs/.vitepress/types/Feedback.ts +++ b/docs/.vitepress/types/Feedback.ts @@ -1,18 +1,19 @@ /** -* Copyright (c) taskylizard. All rights reserved. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ + * Copyright (c) taskylizard. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import z from 'zod' export const FeedbackSchema = z.object({ diff --git a/docs/.vitepress/utils.ts b/docs/.vitepress/utils.ts index e5d712317..4419b1930 100644 --- a/docs/.vitepress/utils.ts +++ b/docs/.vitepress/utils.ts @@ -1,18 +1,18 @@ /** -* Copyright (c) taskylizard. All rights reserved. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ + * Copyright (c) taskylizard. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ export function groupBy( arr: T[], key: (i: T) => K @@ -20,7 +20,7 @@ export function groupBy( return arr.reduce( (groups, item) => { // biome-ignore lint/suspicious/noAssignInExpressions: - ; (groups[key(item)] ||= []).push(item) + ;(groups[key(item)] ||= []).push(item) return groups }, {} as Record diff --git a/docs/.vitepress/vue-shim.d.ts b/docs/.vitepress/vue-shim.d.ts index 475bcfc2a..64f822743 100644 --- a/docs/.vitepress/vue-shim.d.ts +++ b/docs/.vitepress/vue-shim.d.ts @@ -1,18 +1,18 @@ /** -* Copyright (c) taskylizard. All rights reserved. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ + * Copyright (c) taskylizard. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ /* eslint-disable ts/consistent-type-imports */ declare module '*.vue' { const component: import('vue').Component diff --git a/nitro.config.ts b/nitro.config.ts index 437cd1073..02bcb293e 100644 --- a/nitro.config.ts +++ b/nitro.config.ts @@ -1,18 +1,18 @@ /** -* Copyright (c) taskylizard. All rights reserved. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ + * Copyright (c) taskylizard. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ //https://nitro.unjs.io/config export default defineNitroConfig({ runtimeConfig: { diff --git a/package.json b/package.json index 23d26cd6b..a7045ce95 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,10 @@ { "name": "fmhy", - "packageManager": "pnpm@9.7.1", + "packageManager": "pnpm@9.9.0", "type": "module", + "engines": { + "node": "21.7.3" + }, "scripts": { "api:build": "nitropack build", "api:dev": "nitropack dev", @@ -36,6 +39,7 @@ }, "devDependencies": { "@biomejs/biome": "^1.8.3", + "@ianvs/prettier-plugin-sort-imports": "^4.3.1", "@iconify-json/carbon": "^1.1.37", "@iconify-json/heroicons-solid": "^1.1.12", "@iconify-json/lucide": "^1.1.207", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cb6c48ec5..7759830fb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,6 +57,9 @@ importers: '@biomejs/biome': specifier: ^1.8.3 version: 1.8.3 + '@ianvs/prettier-plugin-sort-imports': + specifier: ^4.3.1 + version: 4.3.1(@vue/compiler-sfc@3.4.38)(prettier@3.3.3) '@iconify-json/carbon': specifier: ^1.1.37 version: 1.1.37 @@ -89,7 +92,7 @@ importers: version: 0.2.1(prettier@3.3.3) prettier-plugin-tailwindcss: specifier: ^0.6.6 - version: 0.6.6(prettier@3.3.3) + version: 0.6.6(@ianvs/prettier-plugin-sort-imports@4.3.1(@vue/compiler-sfc@3.4.38)(prettier@3.3.3))(prettier@3.3.3) unplugin-auto-import: specifier: ^0.18.2 version: 0.18.2(@vueuse/core@10.11.0(vue@3.4.38))(rollup@4.19.0) @@ -161,10 +164,6 @@ packages: '@algolia/transporter@4.22.1': resolution: {integrity: sha512-kzWgc2c9IdxMa3YqA6TN0NW5VrKYYW/BELIn7vnLyn+U/RFdZ4lxxt9/8yq3DKV5snvoDzzO4ClyejZRdV3lMQ==} - '@ampproject/remapping@2.2.1': - resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} - engines: {node: '>=6.0.0'} - '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} @@ -870,6 +869,15 @@ packages: peerDependencies: vue: ^3.2.0 + '@ianvs/prettier-plugin-sort-imports@4.3.1': + resolution: {integrity: sha512-ZHwbyjkANZOjaBm3ZosADD2OUYGFzQGxfy67HmGZU94mHqe7g1LCMA7YYKB1Cq+UTPCBqlAYapY0KXAjKEw8Sg==} + peerDependencies: + '@vue/compiler-sfc': 2.7.x || 3.x + prettier: 2 || 3 + peerDependenciesMeta: + '@vue/compiler-sfc': + optional: true + '@iconify-json/carbon@1.1.37': resolution: {integrity: sha512-Hj9oZtRmN63yt29YovqgqOJQhaoVMNMTkFLT3HKAJm4HjvI405Juez5UfdysYmLjF708U7gJNx4U6K1k5+fTBw==} @@ -894,10 +902,6 @@ packages: '@ioredis/commands@1.2.0': resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} - '@jridgewell/gen-mapping@0.3.3': - resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} - engines: {node: '>=6.0.0'} - '@jridgewell/gen-mapping@0.3.5': resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} @@ -906,10 +910,6 @@ packages: resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} - '@jridgewell/set-array@1.1.2': - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} - '@jridgewell/set-array@1.2.1': resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} @@ -923,9 +923,6 @@ packages: '@jridgewell/sourcemap-codec@1.5.0': resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - '@jridgewell/trace-mapping@0.3.20': - resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} - '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} @@ -3590,11 +3587,6 @@ snapshots: '@algolia/logger-common': 4.22.1 '@algolia/requester-common': 4.22.1 - '@ampproject/remapping@2.2.1': - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.25 - '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.5 @@ -3618,7 +3610,7 @@ snapshots: '@babel/core@7.24.9': dependencies: - '@ampproject/remapping': 2.2.1 + '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.24.7 '@babel/generator': 7.24.10 '@babel/helper-compilation-targets': 7.24.8 @@ -4134,6 +4126,20 @@ snapshots: '@tanstack/vue-virtual': 3.0.2(vue@3.4.38) vue: 3.4.38 + '@ianvs/prettier-plugin-sort-imports@4.3.1(@vue/compiler-sfc@3.4.38)(prettier@3.3.3)': + dependencies: + '@babel/core': 7.24.9 + '@babel/generator': 7.24.10 + '@babel/parser': 7.24.8 + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 + prettier: 3.3.3 + semver: 7.5.4 + optionalDependencies: + '@vue/compiler-sfc': 3.4.38 + transitivePeerDependencies: + - supports-color + '@iconify-json/carbon@1.1.37': dependencies: '@iconify/types': 2.0.0 @@ -4170,12 +4176,6 @@ snapshots: '@ioredis/commands@1.2.0': {} - '@jridgewell/gen-mapping@0.3.3': - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.20 - '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 @@ -4184,24 +4184,17 @@ snapshots: '@jridgewell/resolve-uri@3.1.1': {} - '@jridgewell/set-array@1.1.2': {} - '@jridgewell/set-array@1.2.1': {} '@jridgewell/source-map@0.3.5': dependencies: - '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 '@jridgewell/sourcemap-codec@1.4.15': {} '@jridgewell/sourcemap-codec@1.5.0': {} - '@jridgewell/trace-mapping@0.3.20': - dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping@0.3.25': dependencies: '@jridgewell/resolve-uri': 3.1.1 @@ -6256,9 +6249,11 @@ snapshots: prettier: 3.3.3 prettier-package-json: 2.8.0 - prettier-plugin-tailwindcss@0.6.6(prettier@3.3.3): + prettier-plugin-tailwindcss@0.6.6(@ianvs/prettier-plugin-sort-imports@4.3.1(@vue/compiler-sfc@3.4.38)(prettier@3.3.3))(prettier@3.3.3): dependencies: prettier: 3.3.3 + optionalDependencies: + '@ianvs/prettier-plugin-sort-imports': 4.3.1(@vue/compiler-sfc@3.4.38)(prettier@3.3.3) prettier@3.3.3: {} diff --git a/tsconfig.json b/tsconfig.json index f58c0b727..dc440a8b8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -21,6 +21,6 @@ "**/.vitepress/**/*.ts", "**/.vitepress/**/*.mts", "**/.vitepress/**/*.vue", - "./docs/.vitepress/imports.d.ts" + "./.cache/imports.d.ts" ] } diff --git a/unocss.config.ts b/unocss.config.ts index 496c016da..b2c554928 100644 --- a/unocss.config.ts +++ b/unocss.config.ts @@ -1,26 +1,27 @@ /** -* Copyright (c) taskylizard. All rights reserved. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ + * Copyright (c) taskylizard. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { colors, shortcuts } from '@fmhy/colors' import { defineConfig, - presetUno, presetAttributify, presetIcons, + presetUno, transformerDirectives } from 'unocss' -import { colors, shortcuts } from '@fmhy/colors' export default defineConfig({ content: {