feat: add devtools monorepo

This commit is contained in:
YunYouJun 2024-01-21 17:32:40 +08:00
parent 827be9d8bd
commit dd20e04dd5
34 changed files with 591 additions and 56 deletions

View File

@ -16,7 +16,7 @@ const safelist = [
]
export default defineValaxyConfig<ThemeConfig>({
devtools: false,
devtools: true,
// site config see site.config.ts or write in siteConfig
// siteConfig: {},

View File

@ -27,6 +27,7 @@
"build:demo": "pnpm -C demo/yun run build",
"build:demo:ssg": "pnpm -C demo/yun run build:ssg",
"build:docs": "pnpm -C docs run build",
"build:devtools": "pnpm -C packages/devtools run build",
"ci": "pnpm run build && pnpm -C demo/yun run fuse",
"ci:publish": "pnpm -r publish --access public --no-git-checks",
"demo": "pnpm run demo:yun",
@ -75,6 +76,7 @@
"https-localhost": "^4.7.1",
"husky": "^8.0.3",
"lint-staged": "^15.2.0",
"npm-run-all": "^4.1.5",
"prompts": "^2.4.2",
"rimraf": "^5.0.5",
"stylelint": "^16.2.0",

View File

@ -4,6 +4,8 @@ import fs from 'node:fs'
import path from 'node:path'
import { fileURLToPath } from 'node:url'
import { execa } from 'execa'
// only use it in create-valaxy
import { blue, bold, cyan, dim, green, red, reset } from 'kolorist'
import minimist from 'minimist'
import prompts from 'prompts'

View File

@ -0,0 +1,19 @@
import { defineBuildConfig } from 'unbuild'
export default defineBuildConfig({
entries: [
'src/index',
],
clean: false,
declaration: true,
externals: [
'vite',
],
rollup: {
emitCJS: true,
inlineDependencies: true,
dts: {
respectExternal: true,
},
},
})

View File

@ -0,0 +1,17 @@
{
"name": "@valaxyjs/devtools",
"version": "0.0.1",
"scripts": {
"build": "run-s build:*",
"build:client": "vite build src/client",
"build:node": "unbuild",
"dev": "npm run stub && npm run dev:client",
"dev:client": "vite build src/client --watch",
"stub": "unbuild --stub",
"prepublishOnly": "npm run build",
"release": "bumpp && npm publish"
},
"dependencies": {
"sirv": "^2.0.4"
}
}

View File

@ -0,0 +1,20 @@
<script setup lang="ts">
import { onMounted } from 'vue'
import { isStaticMode } from './utils'
onMounted(() => {
if (isStaticMode)
document.title = 'Vite Inspect (Production)'
})
</script>
<template>
<main grid="~ rows-[min-content_1fr]" size="h-screen w-screen" text="gray-700 dark:gray-200">
<Suspense>
<RouterView />
<template #fallback>
Loading...
</template>
</Suspense>
</main>
</template>

View File

@ -0,0 +1,29 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" href="/favicon.svg" type="image/svg+xml">
<title>Valaxy Devtools</title>
</head>
<body data-vite-inspect-mode="DEV">
<div id="app"></div>
<script>
(function () {
const prefersDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches
const setting = localStorage.getItem('color-schema') || 'auto'
if (setting === 'dark' || (prefersDark && setting !== 'light'))
document.documentElement.classList.toggle('dark', true)
})()
; (function () {
if (!location.pathname.endsWith('/'))
location.pathname += '/'
})()
</script>
<script type="module" src="/main.ts"></script>
</body>
</html>

View File

@ -0,0 +1,16 @@
// register vue composition api globally
import { createApp } from 'vue'
import { createRouter, createWebHashHistory } from 'vue-router'
import { routes } from 'vue-router/auto/routes'
import App from './App.vue'
import '@unocss/reset/tailwind.css'
import 'uno.css'
const app = createApp(App)
const router = createRouter({
history: createWebHashHistory(),
routes,
})
app.use(router)
app.mount('#app')

View File

@ -0,0 +1,5 @@
<template>
<div>
Index
</div>
</template>

View File

@ -0,0 +1,140 @@
/* eslint-disable */
/* prettier-ignore */
// @ts-nocheck
// Generated by unplugin-vue-router. ‼️ DO NOT MODIFY THIS FILE ‼️
// It's recommended to commit this file.
// Make sure to add this file to your tsconfig.json file as an "includes" or "files" entry.
/// <reference types="unplugin-vue-router/client" />
import type {
// type safe route locations
RouteLocationTypedList,
RouteLocationResolvedTypedList,
RouteLocationNormalizedTypedList,
RouteLocationNormalizedLoadedTypedList,
RouteLocationAsString,
RouteLocationAsRelativeTypedList,
RouteLocationAsPathTypedList,
// helper types
// route definitions
RouteRecordInfo,
ParamValue,
ParamValueOneOrMore,
ParamValueZeroOrMore,
ParamValueZeroOrOne,
// vue-router extensions
_RouterTyped,
RouterLinkTyped,
RouterLinkPropsTyped,
NavigationGuard,
UseLinkFnTyped,
// data fetching
_DataLoader,
_DefineLoaderOptions,
} from 'unplugin-vue-router/types'
declare module 'vue-router/auto/routes' {
export interface RouteNamedMap {
}
}
declare module 'vue-router/auto' {
import type { RouteNamedMap } from 'vue-router/auto/routes'
export type RouterTyped = _RouterTyped<RouteNamedMap>
/**
* Type safe version of `RouteLocationNormalized` (the type of `to` and `from` in navigation guards).
* Allows passing the name of the route to be passed as a generic.
*/
export type RouteLocationNormalized<Name extends keyof RouteNamedMap = keyof RouteNamedMap> = RouteLocationNormalizedTypedList<RouteNamedMap>[Name]
/**
* Type safe version of `RouteLocationNormalizedLoaded` (the return type of `useRoute()`).
* Allows passing the name of the route to be passed as a generic.
*/
export type RouteLocationNormalizedLoaded<Name extends keyof RouteNamedMap = keyof RouteNamedMap> = RouteLocationNormalizedLoadedTypedList<RouteNamedMap>[Name]
/**
* Type safe version of `RouteLocationResolved` (the returned route of `router.resolve()`).
* Allows passing the name of the route to be passed as a generic.
*/
export type RouteLocationResolved<Name extends keyof RouteNamedMap = keyof RouteNamedMap> = RouteLocationResolvedTypedList<RouteNamedMap>[Name]
/**
* Type safe version of `RouteLocation` . Allows passing the name of the route to be passed as a generic.
*/
export type RouteLocation<Name extends keyof RouteNamedMap = keyof RouteNamedMap> = RouteLocationTypedList<RouteNamedMap>[Name]
/**
* Type safe version of `RouteLocationRaw` . Allows passing the name of the route to be passed as a generic.
*/
export type RouteLocationRaw<Name extends keyof RouteNamedMap = keyof RouteNamedMap> =
| RouteLocationAsString<RouteNamedMap>
| RouteLocationAsRelativeTypedList<RouteNamedMap>[Name]
| RouteLocationAsPathTypedList<RouteNamedMap>[Name]
/**
* Generate a type safe params for a route location. Requires the name of the route to be passed as a generic.
*/
export type RouteParams<Name extends keyof RouteNamedMap> = RouteNamedMap[Name]['params']
/**
* Generate a type safe raw params for a route location. Requires the name of the route to be passed as a generic.
*/
export type RouteParamsRaw<Name extends keyof RouteNamedMap> = RouteNamedMap[Name]['paramsRaw']
export function useRouter(): RouterTyped
export function useRoute<Name extends keyof RouteNamedMap = keyof RouteNamedMap>(name?: Name): RouteLocationNormalizedLoadedTypedList<RouteNamedMap>[Name]
export const useLink: UseLinkFnTyped<RouteNamedMap>
export function onBeforeRouteLeave(guard: NavigationGuard<RouteNamedMap>): void
export function onBeforeRouteUpdate(guard: NavigationGuard<RouteNamedMap>): void
export const RouterLink: RouterLinkTyped<RouteNamedMap>
export const RouterLinkProps: RouterLinkPropsTyped<RouteNamedMap>
// Experimental Data Fetching
export function defineLoader<
P extends Promise<any>,
Name extends keyof RouteNamedMap = keyof RouteNamedMap,
isLazy extends boolean = false,
>(
name: Name,
loader: (route: RouteLocationNormalizedLoaded<Name>) => P,
options?: _DefineLoaderOptions<isLazy>,
): _DataLoader<Awaited<P>, isLazy>
export function defineLoader<
P extends Promise<any>,
isLazy extends boolean = false,
>(
loader: (route: RouteLocationNormalizedLoaded) => P,
options?: _DefineLoaderOptions<isLazy>,
): _DataLoader<Awaited<P>, isLazy>
export {
_definePage as definePage,
_HasDataLoaderMeta as HasDataLoaderMeta,
_setupDataFetchingGuard as setupDataFetchingGuard,
_stopDataFetchingScope as stopDataFetchingScope,
} from 'unplugin-vue-router/runtime'
}
declare module 'vue-router' {
import type { RouteNamedMap } from 'vue-router/auto/routes'
export interface TypesConfig {
beforeRouteUpdate: NavigationGuard<RouteNamedMap>
beforeRouteLeave: NavigationGuard<RouteNamedMap>
$route: RouteLocationNormalizedLoadedTypedList<RouteNamedMap>[keyof RouteNamedMap]
$router: _RouterTyped<RouteNamedMap>
RouterLink: RouterLinkTyped<RouteNamedMap>
}
}

View File

@ -0,0 +1 @@
export const isStaticMode = document.body.getAttribute('data-valaxy-devtools-mode') === 'BUILD'

View File

@ -0,0 +1,81 @@
import { join, resolve } from 'node:path'
import { defineConfig } from 'vite'
import Vue from '@vitejs/plugin-vue'
import Router from 'unplugin-vue-router/vite'
import Components from 'unplugin-vue-components/vite'
import Unocss from 'unocss/vite'
export default defineConfig({
base: './',
resolve: {
alias: {
'~/': __dirname,
},
},
plugins: [
{
name: 'local-object-transform',
transform: {
order: 'post',
async handler(code) {
return `${code}\n/* Injected with object hook! */`
},
},
},
{
name: 'generate-error',
load(id) {
if (id === '/__LOAD_ERROR')
throw new Error('Load error')
if (id === '/__TRANSFORM_ERROR')
return 'transform'
},
transform(code, id) {
if (id === '/__TRANSFORM_ERROR')
throw new SyntaxError('Transform error')
},
},
{
name: 'no-change',
transform: {
order: 'post',
async handler(code) {
return code
},
},
},
Vue({
script: {
defineModel: true,
},
}),
Router({
routesFolder: ['pages'],
dts: join(__dirname, 'typed-routes.d.ts'),
}),
Components({
dirs: ['components'],
dts: join(__dirname, 'components.d.ts'),
}),
Unocss(),
],
optimizeDeps: {
exclude: [
'vite-hot-client',
],
},
build: {
target: 'esnext',
outDir: resolve(__dirname, '../../dist/client'),
minify: false, // 'esbuild',
emptyOutDir: true,
},
})

View File

@ -0,0 +1,10 @@
import { dirname, resolve } from 'node:path'
import { fileURLToPath } from 'node:url'
export const DIR_DIST = typeof __dirname !== 'undefined'
? __dirname
: dirname(fileURLToPath(import.meta.url))
const DEVTOOLS_CLIENT_FOLDER = resolve(DIR_DIST, '../dist/client')
export const DIR_CLIENT = DEVTOOLS_CLIENT_FOLDER

View File

@ -0,0 +1,2 @@
export * from './node'
export { default } from './node/index'

View File

@ -0,0 +1,3 @@
# Valaxy Devtools
A vite plugin for valaxy.

View File

@ -0,0 +1,60 @@
import type { Plugin, ResolvedConfig, ViteDevServer } from 'vite'
import c from 'picocolors'
import sirv from 'sirv'
import { DIR_CLIENT } from '../dir'
const NAME = 'valaxy:devtools'
export interface ValaxyDevtoolsOptions {
base?: string
}
export default function ValaxyDevtools(options: ValaxyDevtoolsOptions): Plugin {
let config: ResolvedConfig
function configureServer(server: ViteDevServer) {
const _print = server.printUrls
const base = (options.base ?? server.config.base) || '/'
server.middlewares.use(`${base}__valaxy_devtools__`, sirv(DIR_CLIENT, {
single: true,
dev: true,
}))
server.printUrls = () => {
let host = `${config.server.https ? 'https' : 'http'}://localhost:${config.server.port || '80'}`
const url = server.resolvedUrls?.local[0]
if (url) {
try {
const u = new URL(url)
host = `${u.protocol}//${u.host}`
}
catch (error) {
console.warn('Parse resolved url failed:', error)
}
}
_print()
const colorUrl = (url: string) => c.green(url.replace(/:(\d+)\//, (_, port) => `:${c.bold(port)}/`))
// eslint-disable-next-line no-console
console.log(` ${c.green('➜')} ${c.bold('Inspect')}: ${colorUrl(`${host}${base}__inspect/`)}`)
}
}
const plugin = <Plugin>{
name: NAME,
configResolved(_config) {
config = _config
},
configureServer(server) {
configureServer(server)
},
}
return plugin
}

View File

@ -3,7 +3,7 @@ import consola from 'consola'
import type { InlineConfig, LogLevel } from 'vite'
import { mergeConfig } from 'vite'
import type yargs from 'yargs'
import { yellow } from 'kolorist'
import { yellow } from 'picocolors'
import { build, postProcessForSSG, ssgBuild } from '../build'
import { mergeViteConfigs, resolveOptions } from '..'
import { createValaxyNode } from '../app'

View File

@ -4,7 +4,7 @@ import type { ResolvedValaxyOptions } from 'valaxy'
import consola from 'consola'
import fg from 'fast-glob'
import matter from 'gray-matter'
import { cyan, dim } from 'kolorist'
import { cyan, dim } from 'picocolors'
import type { Argv } from 'yargs'
import type { FuseListItem } from 'valaxy/types'

View File

@ -4,7 +4,7 @@ import path from 'node:path'
import os from 'node:os'
import process from 'node:process'
import { blue, bold, cyan, dim, gray, green, underline, yellow } from 'kolorist'
import { blue, bold, cyan, dim, gray, green, underline, yellow } from 'picocolors'
import consola from 'consola'
import type { InlineConfig, ViteDevServer } from 'vite'
import { mergeConfig } from 'vite'

View File

@ -4,7 +4,7 @@ import { render } from 'ejs'
import dayjs from 'dayjs'
import { ensureSuffix } from '@antfu/utils'
import { consola } from 'consola'
import { green, magenta } from 'kolorist'
import { green, magenta } from 'picocolors'
import { exists } from './fs'
import { getTemplate } from './scaffold'
import { defaultPostTemplate, userRoot } from './constants'

View File

@ -1,5 +1,5 @@
import { webcrypto } from 'node:crypto'
import { cyan, dim, yellow } from 'kolorist'
import { cyan, dim, yellow } from 'picocolors'
import consola from 'consola'
import type { SiteConfig, UserSiteConfig } from 'valaxy/types'
import { countPerformanceTime } from '../utils/performance'

View File

@ -1,5 +1,5 @@
import type { DefaultTheme } from 'valaxy/types'
import { cyan, dim } from 'kolorist'
import { cyan, dim } from 'picocolors'
import defu from 'defu'
import { logger } from '../logger'
import type { ResolvedValaxyOptions } from '../options'

View File

@ -3,7 +3,7 @@ import process from 'node:process'
import { createDefu } from 'defu'
import { mergeConfig as mergeViteConfig } from 'vite'
import { isFunction } from '@antfu/utils'
import { cyan, dim, yellow } from 'kolorist'
import { cyan, dim, yellow } from 'picocolors'
import consola from 'consola'
import type { UserValaxyNodeConfig, ValaxyNodeConfig } from '../types'
import type { ResolvedValaxyOptions, ValaxyEntryOptions } from '../options'

View File

@ -1,5 +1,5 @@
import consola from 'consola'
import { magenta } from 'kolorist'
import { magenta } from 'picocolors'
import { isProd } from '../utils/env'
export const logger = consola.create({

View File

@ -1,4 +1,4 @@
import { cyan, red, yellow } from 'kolorist'
import { cyan, red, yellow } from 'picocolors'
import consola from 'consola'
/**

View File

@ -1,6 +1,6 @@
import { dirname, join, resolve } from 'node:path'
import { readFile } from 'node:fs/promises'
import { cyan, dim, yellow } from 'kolorist'
import { cyan, dim, yellow } from 'picocolors'
import fg from 'fast-glob'
import fs from 'fs-extra'

View File

@ -6,7 +6,7 @@ import _debug from 'debug'
import fg from 'fast-glob'
import { ensureSuffix, uniq } from '@antfu/utils'
import defu from 'defu'
import { blue, cyan, magenta, yellow } from 'kolorist'
import { blue, cyan, magenta, yellow } from 'picocolors'
import consola from 'consola'
import type { DefaultTheme, RuntimeConfig } from 'valaxy/types'
import { resolveImportPath } from './utils'

View File

@ -9,7 +9,7 @@ import type { Plugin, ResolvedConfig } from 'vite'
import { defu } from 'defu'
import pascalCase from 'pascalcase'
import type { DefaultTheme, PageDataPayload, Pkg, SiteConfig } from 'valaxy/types'
import { dim, yellow } from 'kolorist'
import { dim, yellow } from 'picocolors'
import { defaultSiteConfig, mergeValaxyConfig, resolveSiteConfig, resolveUserThemeConfig } from '../config'
import type { ResolvedValaxyOptions, ValaxyServerOptions } from '../options'
import { processValaxyOptions, resolveOptions, resolveThemeValaxyConfig } from '../options'

View File

@ -16,6 +16,7 @@ export async function createServer(
const plugins = await ViteValaxyPlugins(options, serverOptions)
// dynamic import to avoid bundle it in build
const VueDevTools = (await import('vite-plugin-vue-devtools')).default
const enableDevtools = options.mode === 'dev' && options.config.devtools
const mergedViteConfig = mergeViteConfig(
viteConfig,
{
@ -23,7 +24,8 @@ export async function createServer(
...plugins,
// only enable when dev
options.mode === 'dev' && options.config.devtools && VueDevTools(),
enableDevtools && VueDevTools(),
enableDevtools && (await import('./plugins/devtools/index')).default({ base: options.config.base }),
],
},
)

View File

@ -2,7 +2,7 @@ import process from 'node:process'
import { resolve } from 'pathe'
import fs from 'fs-extra'
import defu from 'defu'
import { cyan, dim, yellow } from 'kolorist'
import { cyan, dim, yellow } from 'picocolors'
import ora from 'ora'
import type { ValaxyAddonResolver, ValaxyAddons } from '../types'
import { logger } from '../logger'

View File

@ -95,7 +95,6 @@
"is-installed-globally": "^1.0.0",
"jiti": "^1.21.0",
"katex": "^0.16.9",
"kolorist": "^1.8.0",
"lru-cache": "^10.1.0",
"markdown-it": "^14.0.0",
"markdown-it-anchor": "^8.6.7",

View File

@ -69,6 +69,9 @@ importers:
lint-staged:
specifier: ^15.2.0
version: 15.2.0
npm-run-all:
specifier: ^4.1.5
version: 4.1.5
prompts:
specifier: ^2.4.2
version: 2.4.2
@ -213,6 +216,12 @@ importers:
specifier: ^2.4.2
version: 2.4.2
packages/devtools:
dependencies:
sirv:
specifier: ^2.0.4
version: 2.0.4
packages/valaxy:
dependencies:
'@antfu/utils':
@ -311,9 +320,6 @@ importers:
katex:
specifier: ^0.16.9
version: 0.16.9
kolorist:
specifier: ^1.8.0
version: 1.8.0
lru-cache:
specifier: ^10.1.0
version: 10.1.0
@ -461,7 +467,7 @@ importers:
version: 17.0.32
debug:
specifier: ^4.3.4
version: 4.3.4(supports-color@8.1.1)
version: 4.3.4(supports-color@5.5.0)
diacritics:
specifier: ^1.3.0
version: 1.3.0
@ -839,7 +845,7 @@ packages:
'@babel/traverse': 7.23.7
'@babel/types': 7.23.6
convert-source-map: 2.0.0
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
@ -915,7 +921,7 @@ packages:
'@babel/core': 7.23.7
'@babel/helper-compilation-targets': 7.23.6
'@babel/helper-plugin-utils': 7.22.5
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
lodash.debounce: 4.0.8
resolve: 1.22.8
transitivePeerDependencies:
@ -930,7 +936,7 @@ packages:
'@babel/core': 7.23.7
'@babel/helper-compilation-targets': 7.23.6
'@babel/helper-plugin-utils': 7.22.5
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
lodash.debounce: 4.0.8
resolve: 1.22.8
transitivePeerDependencies:
@ -2023,7 +2029,7 @@ packages:
'@babel/helper-split-export-declaration': 7.22.6
'@babel/parser': 7.23.6
'@babel/types': 7.23.6
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
globals: 11.12.0
transitivePeerDependencies:
- supports-color
@ -2380,7 +2386,7 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
ajv: 6.12.6
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
espree: 9.6.1
globals: 13.24.0
ignore: 5.3.0
@ -2406,7 +2412,7 @@ packages:
engines: {node: '>=10.10.0'}
dependencies:
'@humanwhocodes/object-schema': 2.0.2
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
@ -2465,7 +2471,7 @@ packages:
'@antfu/install-pkg': 0.1.1
'@antfu/utils': 0.7.7
'@iconify/types': 2.0.0
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
kolorist: 1.8.0
local-pkg: 0.4.3
transitivePeerDependencies:
@ -2537,7 +2543,7 @@ packages:
'@intlify/shared': 9.9.0
'@rollup/pluginutils': 5.1.0(rollup@3.29.4)
'@vue/compiler-sfc': 3.4.15
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
fast-glob: 3.3.2
js-yaml: 4.1.0
json5: 2.2.3
@ -3327,7 +3333,7 @@ packages:
'@typescript-eslint/type-utils': 6.19.0(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/utils': 6.19.0(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/visitor-keys': 6.19.0
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
eslint: 8.56.0
graphemer: 1.4.0
ignore: 5.3.0
@ -3353,7 +3359,7 @@ packages:
'@typescript-eslint/types': 6.19.0
'@typescript-eslint/typescript-estree': 6.19.0(typescript@5.3.3)
'@typescript-eslint/visitor-keys': 6.19.0
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
eslint: 8.56.0
typescript: 5.3.3
transitivePeerDependencies:
@ -3380,7 +3386,7 @@ packages:
dependencies:
'@typescript-eslint/typescript-estree': 6.19.0(typescript@5.3.3)
'@typescript-eslint/utils': 6.19.0(eslint@8.56.0)(typescript@5.3.3)
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
eslint: 8.56.0
ts-api-utils: 1.0.3(typescript@5.3.3)
typescript: 5.3.3
@ -3404,7 +3410,7 @@ packages:
dependencies:
'@typescript-eslint/types': 6.19.0
'@typescript-eslint/visitor-keys': 6.19.0
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
globby: 11.1.0
is-glob: 4.0.3
minimatch: 9.0.3
@ -4137,7 +4143,7 @@ packages:
resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==}
engines: {node: '>= 14'}
dependencies:
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
dev: false
@ -5082,6 +5088,17 @@ packages:
cross-spawn: 7.0.3
dev: true
/cross-spawn@6.0.5:
resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==}
engines: {node: '>=4.8'}
dependencies:
nice-try: 1.0.5
path-key: 2.0.1
semver: 5.7.2
shebang-command: 1.2.0
which: 1.3.1
dev: true
/cross-spawn@7.0.3:
resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
engines: {node: '>= 8'}
@ -5333,7 +5350,6 @@ packages:
dependencies:
ms: 2.1.2
supports-color: 5.5.0
dev: true
/debug@4.3.4(supports-color@8.1.1):
resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
@ -5346,6 +5362,7 @@ packages:
dependencies:
ms: 2.1.2
supports-color: 8.1.1
dev: true
/decamelize@1.2.0:
resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==}
@ -5822,7 +5839,7 @@ packages:
peerDependencies:
eslint: ^7.2.0 || ^8
dependencies:
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
doctrine: 3.0.0
eslint: 8.56.0
eslint-import-resolver-node: 0.3.9
@ -5847,7 +5864,7 @@ packages:
'@es-joy/jsdoccomment': 0.41.0
are-docs-informative: 0.0.2
comment-parser: 1.4.1
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
escape-string-regexp: 4.0.0
eslint: 8.56.0
esquery: 1.5.0
@ -5944,7 +5961,7 @@ packages:
peerDependencies:
eslint: '>=6.0.0'
dependencies:
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
eslint: 8.56.0
eslint-compat-utils: 0.4.1(eslint@8.56.0)
lodash: 4.17.21
@ -6041,7 +6058,7 @@ packages:
peerDependencies:
eslint: '>=6.0.0'
dependencies:
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
eslint: 8.56.0
eslint-compat-utils: 0.4.1(eslint@8.56.0)
lodash: 4.17.21
@ -6094,7 +6111,7 @@ packages:
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.3
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
doctrine: 3.0.0
escape-string-regexp: 4.0.0
eslint-scope: 7.2.2
@ -6988,7 +7005,7 @@ packages:
engines: {node: '>= 14'}
dependencies:
agent-base: 7.1.0
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
dev: false
@ -7021,7 +7038,7 @@ packages:
engines: {node: '>= 14'}
dependencies:
agent-base: 7.1.0
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
dev: false
@ -7581,6 +7598,10 @@ packages:
resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
dev: true
/json-parse-better-errors@1.0.2:
resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==}
dev: true
/json-parse-even-better-errors@2.3.1:
resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
dev: true
@ -7727,7 +7748,7 @@ packages:
dependencies:
chalk: 5.3.0
commander: 11.1.0
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
execa: 8.0.1
lilconfig: 3.0.0
listr2: 8.0.0
@ -7771,6 +7792,16 @@ packages:
wrap-ansi: 9.0.0
dev: true
/load-json-file@4.0.0:
resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==}
engines: {node: '>=4'}
dependencies:
graceful-fs: 4.2.11
parse-json: 4.0.0
pify: 3.0.0
strip-bom: 3.0.0
dev: true
/load-tsconfig@0.2.5:
resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@ -8039,6 +8070,11 @@ packages:
resolution: {integrity: sha512-ewyDsp7k4InCUp3jRmwHBRFGyjBimKps/AJLjRSox+2q/2H4p/PNpQf+pwONWlJiOudkBXtbdmVbFjqyybfTmQ==}
dev: false
/memorystream@0.3.1:
resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==}
engines: {node: '>= 0.10.0'}
dev: true
/meow@13.1.0:
resolution: {integrity: sha512-o5R/R3Tzxq0PJ3v3qcQJtSvSE9nKOLSAaDuuoMzDVuGTwHdccMWcYomh9Xolng2tjT6O/Y83d+0coVGof6tqmA==}
engines: {node: '>=18'}
@ -8063,7 +8099,7 @@ packages:
/micromark@2.11.4:
resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==}
dependencies:
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
parse-entities: 2.0.0
transitivePeerDependencies:
- supports-color
@ -8251,6 +8287,10 @@ packages:
engines: {node: '>= 0.6'}
dev: true
/nice-try@1.0.5:
resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==}
dev: true
/no-case@2.3.2:
resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==}
dependencies:
@ -8319,6 +8359,22 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
/npm-run-all@4.1.5:
resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==}
engines: {node: '>= 4'}
hasBin: true
dependencies:
ansi-styles: 3.2.1
chalk: 2.4.2
cross-spawn: 6.0.5
memorystream: 0.3.1
minimatch: 3.1.2
pidtree: 0.3.1
read-pkg: 3.0.0
shell-quote: 1.8.1
string.prototype.padend: 3.1.5
dev: true
/npm-run-path@4.0.1:
resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
engines: {node: '>=8'}
@ -8541,6 +8597,14 @@ packages:
engines: {node: '>=14'}
dev: true
/parse-json@4.0.0:
resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==}
engines: {node: '>=4'}
dependencies:
error-ex: 1.3.2
json-parse-better-errors: 1.0.2
dev: true
/parse-json@5.2.0:
resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
engines: {node: '>=8'}
@ -8589,6 +8653,11 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
/path-key@2.0.1:
resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==}
engines: {node: '>=4'}
dev: true
/path-key@3.1.1:
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
engines: {node: '>=8'}
@ -8612,6 +8681,13 @@ packages:
resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==}
dev: true
/path-type@3.0.0:
resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==}
engines: {node: '>=4'}
dependencies:
pify: 3.0.0
dev: true
/path-type@4.0.0:
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
engines: {node: '>=8'}
@ -8652,6 +8728,12 @@ packages:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
engines: {node: '>=8.6'}
/pidtree@0.3.1:
resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==}
engines: {node: '>=0.10'}
hasBin: true
dev: true
/pidtree@0.6.0:
resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==}
engines: {node: '>=0.10'}
@ -8663,6 +8745,11 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
/pify@3.0.0:
resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==}
engines: {node: '>=4'}
dev: true
/pinia@2.1.7(typescript@5.3.3)(vue@3.4.15):
resolution: {integrity: sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==}
peerDependencies:
@ -9243,6 +9330,15 @@ packages:
type-fest: 0.8.1
dev: true
/read-pkg@3.0.0:
resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==}
engines: {node: '>=4'}
dependencies:
load-json-file: 4.0.0
normalize-package-data: 2.5.0
path-type: 3.0.0
dev: true
/read-pkg@5.2.0:
resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==}
engines: {node: '>=8'}
@ -9680,16 +9776,32 @@ packages:
resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
dev: true
/shebang-command@1.2.0:
resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==}
engines: {node: '>=0.10.0'}
dependencies:
shebang-regex: 1.0.0
dev: true
/shebang-command@2.0.0:
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
engines: {node: '>=8'}
dependencies:
shebang-regex: 3.0.0
/shebang-regex@1.0.0:
resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==}
engines: {node: '>=0.10.0'}
dev: true
/shebang-regex@3.0.0:
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
engines: {node: '>=8'}
/shell-quote@1.8.1:
resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==}
dev: true
/shiki-processor@0.1.3(shiki@0.14.7):
resolution: {integrity: sha512-oZqVFKweklwt+fj6yUPb+ffrCpYYoJ4RYxNt7w1+aoHetHq5ZaN6oX6+4HrypOi0s/O6A2neBpn+Xf6bM4KfsQ==}
peerDependencies:
@ -9863,7 +9975,7 @@ packages:
/spdy-transport@3.0.0:
resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==}
dependencies:
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
detect-node: 2.1.0
hpack.js: 2.1.6
obuf: 1.1.2
@ -9877,7 +9989,7 @@ packages:
resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==}
engines: {node: '>=6.0.0'}
dependencies:
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
handle-thing: 2.0.1
http-deceiver: 1.2.7
select-hose: 2.0.0
@ -9988,6 +10100,15 @@ packages:
side-channel: 1.0.4
dev: true
/string.prototype.padend@3.1.5:
resolution: {integrity: sha512-DOB27b/2UTTD+4myKUFh+/fXWcu/UDyASIXfg+7VzoCNNGOfWvoyU/x5pvVHr++ztyt/oSYI1BcWBBG/hmlNjA==}
engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.5
define-properties: 1.2.1
es-abstract: 1.22.3
dev: true
/string.prototype.trim@1.2.8:
resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==}
engines: {node: '>= 0.4'}
@ -10050,6 +10171,11 @@ packages:
resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==}
engines: {node: '>=0.10.0'}
/strip-bom@3.0.0:
resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
engines: {node: '>=4'}
dev: true
/strip-comments@2.0.1:
resolution: {integrity: sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==}
engines: {node: '>=10'}
@ -10197,7 +10323,7 @@ packages:
cosmiconfig: 9.0.0(typescript@5.3.3)
css-functions-list: 3.2.1
css-tree: 2.3.1
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
fast-glob: 3.3.2
fastest-levenshtein: 1.0.16
file-entry-cache: 8.0.0
@ -10262,6 +10388,7 @@ packages:
engines: {node: '>=10'}
dependencies:
has-flag: 4.0.0
dev: true
/supports-hyperlinks@3.0.0:
resolution: {integrity: sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==}
@ -10499,7 +10626,7 @@ packages:
bundle-require: 4.0.2(esbuild@0.19.11)
cac: 6.7.14
chokidar: 3.5.3
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
esbuild: 0.19.11
execa: 5.1.1
globby: 11.1.0
@ -10839,7 +10966,7 @@ packages:
'@antfu/utils': 0.7.7
'@rollup/pluginutils': 5.1.0(rollup@3.29.4)
chokidar: 3.5.3
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
fast-glob: 3.3.2
local-pkg: 0.4.3
magic-string: 0.30.5
@ -11006,7 +11133,7 @@ packages:
hasBin: true
dependencies:
cac: 6.7.14
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
pathe: 1.1.2
picocolors: 1.0.0
vite: 5.0.12(@types/node@20.11.5)(sass@1.70.0)
@ -11033,7 +11160,7 @@ packages:
dependencies:
'@antfu/utils': 0.7.7
'@rollup/pluginutils': 5.1.0(rollup@3.29.4)
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
error-stack-parser-es: 0.1.1
fs-extra: 11.2.0
open: 9.1.0
@ -11053,7 +11180,7 @@ packages:
workbox-build: ^7.0.0
workbox-window: ^7.0.0
dependencies:
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
fast-glob: 3.3.2
pretty-bytes: 6.1.1
vite: 5.0.12(@types/node@20.11.5)(sass@1.70.0)
@ -11110,7 +11237,7 @@ packages:
vue: ^3.2.4
vue-router: ^4.0.11
dependencies:
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
fast-glob: 3.3.2
vite: 5.0.12(@types/node@20.11.5)(sass@1.70.0)
vue: 3.4.15(typescript@5.3.3)
@ -11284,7 +11411,7 @@ packages:
acorn-walk: 8.3.2
cac: 6.7.14
chai: 4.4.1
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
execa: 8.0.1
local-pkg: 0.5.0
magic-string: 0.30.5
@ -11333,7 +11460,7 @@ packages:
peerDependencies:
eslint: '>=6.0.0'
dependencies:
debug: 4.3.4(supports-color@8.1.1)
debug: 4.3.4(supports-color@5.5.0)
eslint: 8.56.0
eslint-scope: 7.2.2
eslint-visitor-keys: 3.4.3

View File

@ -1,7 +1,7 @@
import process from 'node:process'
import { createRequire } from 'node:module'
import { readFileSync } from 'node:fs'
import { cyan, gray, yellow } from 'kolorist'
import { cyan, gray, yellow } from 'picocolors'
import consola from 'consola'
import { $ } from 'zx'

View File

@ -1,7 +1,7 @@
import { join } from 'node:path'
import { readFile, writeFile } from 'node:fs/promises'
import consola from 'consola'
import { cyan, gray, yellow } from 'kolorist'
import { cyan, gray, yellow } from 'picocolors'
export const packages = [
'create-valaxy',