add for basic-ssl
This commit is contained in:
		
							
								
								
									
										66
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,66 @@
 | 
			
		||||
node_modules
 | 
			
		||||
 | 
			
		||||
# mac
 | 
			
		||||
.DS_Store
 | 
			
		||||
 | 
			
		||||
.env*
 | 
			
		||||
!.env*example
 | 
			
		||||
 | 
			
		||||
dist
 | 
			
		||||
build
 | 
			
		||||
logs
 | 
			
		||||
 | 
			
		||||
.turbo
 | 
			
		||||
 | 
			
		||||
pack-dist
 | 
			
		||||
 | 
			
		||||
# astro
 | 
			
		||||
.astro
 | 
			
		||||
 | 
			
		||||
# next
 | 
			
		||||
.next
 | 
			
		||||
 | 
			
		||||
# nuxt
 | 
			
		||||
.nuxt
 | 
			
		||||
 | 
			
		||||
# vercel
 | 
			
		||||
.vercel
 | 
			
		||||
 | 
			
		||||
# vuepress
 | 
			
		||||
.vuepress/dist
 | 
			
		||||
 | 
			
		||||
# coverage
 | 
			
		||||
coverage/
 | 
			
		||||
 | 
			
		||||
# typescript
 | 
			
		||||
*.tsbuildinfo
 | 
			
		||||
 | 
			
		||||
# debug logs
 | 
			
		||||
*.log
 | 
			
		||||
*.tmp
 | 
			
		||||
 | 
			
		||||
# vscode
 | 
			
		||||
.vscode/*
 | 
			
		||||
!.vscode/settings.json
 | 
			
		||||
!.vscode/tasks.json
 | 
			
		||||
!.vscode/launch.json
 | 
			
		||||
!.vscode/extensions.json
 | 
			
		||||
 | 
			
		||||
# idea
 | 
			
		||||
.idea
 | 
			
		||||
 | 
			
		||||
# system
 | 
			
		||||
Thumbs.db
 | 
			
		||||
ehthumbs.db
 | 
			
		||||
Desktop.ini
 | 
			
		||||
 | 
			
		||||
# temp files
 | 
			
		||||
*.tmp
 | 
			
		||||
*.temp
 | 
			
		||||
 | 
			
		||||
# local development
 | 
			
		||||
*.local
 | 
			
		||||
 | 
			
		||||
public/r
 | 
			
		||||
 | 
			
		||||
.pnpm-store
 | 
			
		||||
							
								
								
									
										3
									
								
								.npmrc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								.npmrc
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
			
		||||
//npm.xiongxiao.me/:_authToken=${ME_NPM_TOKEN}
 | 
			
		||||
//registry.npmjs.org/:_authToken=${NPM_TOKEN}
 | 
			
		||||
ignore-workspace-root-check=true
 | 
			
		||||
							
								
								
									
										24
									
								
								bun.config.mjs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								bun.config.mjs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
			
		||||
// @ts-check
 | 
			
		||||
import { resolvePath } from '@kevisual/use-config/env';
 | 
			
		||||
import { execSync } from 'node:child_process';
 | 
			
		||||
 | 
			
		||||
const entry = 'src/index.ts';
 | 
			
		||||
const naming = 'app';
 | 
			
		||||
/**
 | 
			
		||||
 * @type {import('bun').BuildConfig}
 | 
			
		||||
 */
 | 
			
		||||
await Bun.build({
 | 
			
		||||
  target: 'node',
 | 
			
		||||
  format: 'esm',
 | 
			
		||||
  entrypoints: [resolvePath(entry, { meta: import.meta })],
 | 
			
		||||
  outdir: resolvePath('./dist', { meta: import.meta }),
 | 
			
		||||
  naming: {
 | 
			
		||||
    entry: `${naming}.js`,
 | 
			
		||||
  },
 | 
			
		||||
  external: [],
 | 
			
		||||
  env: 'KEVISUAL_*',
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
// const cmd = `dts -i src/index.ts -o app.d.ts`;
 | 
			
		||||
const cmd = `dts -i ${entry} -o ${naming}.d.ts`;
 | 
			
		||||
execSync(cmd, { stdio: 'inherit' });
 | 
			
		||||
							
								
								
									
										11
									
								
								demo/index.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								demo/index.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
<html>
 | 
			
		||||
 | 
			
		||||
<head>
 | 
			
		||||
  <title>Vite App</title>
 | 
			
		||||
</head>
 | 
			
		||||
 | 
			
		||||
<body>
 | 
			
		||||
  <h1>Hello Vite!</h1>
 | 
			
		||||
</body>
 | 
			
		||||
 | 
			
		||||
</html>
 | 
			
		||||
							
								
								
									
										8
									
								
								demo/vite.config.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								demo/vite.config.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
import { defineConfig } from 'vite';
 | 
			
		||||
 | 
			
		||||
// import { ssl } from '../dist/app.js';
 | 
			
		||||
import { ssl } from '../src/index.ts';
 | 
			
		||||
 | 
			
		||||
export default defineConfig({
 | 
			
		||||
  plugins: [ssl()],
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										22
									
								
								kevisual.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								kevisual.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
			
		||||
{
 | 
			
		||||
  "sync": {
 | 
			
		||||
    ".gitignore": {
 | 
			
		||||
      "url": "https://kevisual.xiongxiao.me/root/ai/code/config/gitignore/node.txt"
 | 
			
		||||
    },
 | 
			
		||||
    ".npmrc": {
 | 
			
		||||
      "url": "https://kevisual.xiongxiao.me/root/ai/code/config/npm/.npmrc"
 | 
			
		||||
    },
 | 
			
		||||
    "tsconfig.json": {
 | 
			
		||||
      "url": "https://kevisual.xiongxiao.me/root/ai/code/config/ts/backend.json"
 | 
			
		||||
    },
 | 
			
		||||
    "bun.config.mjs": {
 | 
			
		||||
      "url": "https://kevisual.xiongxiao.me/root/ai/code/config/bun/bun.config.mjs"
 | 
			
		||||
    },  
 | 
			
		||||
    ".cnb.yml": {
 | 
			
		||||
      "url": "https://kevisual.xiongxiao.me/root/ai/code/config/cnb/dev.yml"
 | 
			
		||||
    },
 | 
			
		||||
    "package.json": {
 | 
			
		||||
      "url": "https://kevisual.xiongxiao.me/root/ai/code/config/npm/back-01-base/package.json"
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										53
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,53 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "@kevisual/ssl",
 | 
			
		||||
  "version": "0.0.1",
 | 
			
		||||
  "description": "",
 | 
			
		||||
  "main": "index.js",
 | 
			
		||||
  "basename": "/root/demo-app",
 | 
			
		||||
  "app": {
 | 
			
		||||
    "key": "demo-app",
 | 
			
		||||
    "entry": "dist/app.js",
 | 
			
		||||
    "type": "system-app",
 | 
			
		||||
    "files": [
 | 
			
		||||
      "dist"
 | 
			
		||||
    ]
 | 
			
		||||
  },
 | 
			
		||||
  "scripts": {
 | 
			
		||||
    "dev": "cross-env NODE_TLS_REJECT_UNAUTHORIZED=0  bun --watch src/dev.ts ",
 | 
			
		||||
    "build": "rimraf dist && bun run bun.config.mjs",
 | 
			
		||||
    "clean": "rm -rf dist"
 | 
			
		||||
  },
 | 
			
		||||
  "keywords": [],
 | 
			
		||||
  "author": "abearxiong <xiongxiao@xiongxiao.me>",
 | 
			
		||||
  "license": "MIT",
 | 
			
		||||
  "type": "module",
 | 
			
		||||
  "types": "types/app.d.ts",
 | 
			
		||||
  "files": [
 | 
			
		||||
    "dist",
 | 
			
		||||
    "src"
 | 
			
		||||
  ],
 | 
			
		||||
  "publishConfig": {
 | 
			
		||||
    "access": "public"
 | 
			
		||||
  },
 | 
			
		||||
  "exports": {
 | 
			
		||||
    ".": {
 | 
			
		||||
      "types": "./dist/app.d.ts",
 | 
			
		||||
      "default": "./dist/app.js"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "@kevisual/router": "^0.0.22",
 | 
			
		||||
    "@kevisual/types": "^0.0.10",
 | 
			
		||||
    "@kevisual/use-config": "^1.0.17",
 | 
			
		||||
    "@types/bun": "^1.2.15",
 | 
			
		||||
    "@types/lodash-es": "^4.17.12",
 | 
			
		||||
    "@types/node": "^22.15.29",
 | 
			
		||||
    "commander": "^14.0.0",
 | 
			
		||||
    "cross-env": "^7.0.3",
 | 
			
		||||
    "enquirer": "^2.4.1",
 | 
			
		||||
    "node-forge": "^1.3.1",
 | 
			
		||||
    "typescript": "^5.8.3",
 | 
			
		||||
    "vite": "^6.3.5"
 | 
			
		||||
  },
 | 
			
		||||
  "packageManager": "pnpm@10.11.1"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										821
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										821
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
										Normal file
									
								
							@@ -0,0 +1,821 @@
 | 
			
		||||
lockfileVersion: '9.0'
 | 
			
		||||
 | 
			
		||||
settings:
 | 
			
		||||
  autoInstallPeers: true
 | 
			
		||||
  excludeLinksFromLockfile: false
 | 
			
		||||
 | 
			
		||||
importers:
 | 
			
		||||
 | 
			
		||||
  .:
 | 
			
		||||
    devDependencies:
 | 
			
		||||
      '@kevisual/router':
 | 
			
		||||
        specifier: ^0.0.22
 | 
			
		||||
        version: 0.0.22
 | 
			
		||||
      '@kevisual/types':
 | 
			
		||||
        specifier: ^0.0.10
 | 
			
		||||
        version: 0.0.10
 | 
			
		||||
      '@kevisual/use-config':
 | 
			
		||||
        specifier: ^1.0.17
 | 
			
		||||
        version: 1.0.17(dotenv@16.5.0)
 | 
			
		||||
      '@types/bun':
 | 
			
		||||
        specifier: ^1.2.15
 | 
			
		||||
        version: 1.2.15
 | 
			
		||||
      '@types/lodash-es':
 | 
			
		||||
        specifier: ^4.17.12
 | 
			
		||||
        version: 4.17.12
 | 
			
		||||
      '@types/node':
 | 
			
		||||
        specifier: ^22.15.29
 | 
			
		||||
        version: 22.15.29
 | 
			
		||||
      commander:
 | 
			
		||||
        specifier: ^14.0.0
 | 
			
		||||
        version: 14.0.0
 | 
			
		||||
      cross-env:
 | 
			
		||||
        specifier: ^7.0.3
 | 
			
		||||
        version: 7.0.3
 | 
			
		||||
      enquirer:
 | 
			
		||||
        specifier: ^2.4.1
 | 
			
		||||
        version: 2.4.1
 | 
			
		||||
      node-forge:
 | 
			
		||||
        specifier: ^1.3.1
 | 
			
		||||
        version: 1.3.1
 | 
			
		||||
      typescript:
 | 
			
		||||
        specifier: ^5.8.3
 | 
			
		||||
        version: 5.8.3
 | 
			
		||||
      vite:
 | 
			
		||||
        specifier: ^6.3.5
 | 
			
		||||
        version: 6.3.5(@types/node@22.15.29)
 | 
			
		||||
 | 
			
		||||
packages:
 | 
			
		||||
 | 
			
		||||
  '@esbuild/aix-ppc64@0.25.5':
 | 
			
		||||
    resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==}
 | 
			
		||||
    engines: {node: '>=18'}
 | 
			
		||||
    cpu: [ppc64]
 | 
			
		||||
    os: [aix]
 | 
			
		||||
 | 
			
		||||
  '@esbuild/android-arm64@0.25.5':
 | 
			
		||||
    resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==}
 | 
			
		||||
    engines: {node: '>=18'}
 | 
			
		||||
    cpu: [arm64]
 | 
			
		||||
    os: [android]
 | 
			
		||||
 | 
			
		||||
  '@esbuild/android-arm@0.25.5':
 | 
			
		||||
    resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==}
 | 
			
		||||
    engines: {node: '>=18'}
 | 
			
		||||
    cpu: [arm]
 | 
			
		||||
    os: [android]
 | 
			
		||||
 | 
			
		||||
  '@esbuild/android-x64@0.25.5':
 | 
			
		||||
    resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==}
 | 
			
		||||
    engines: {node: '>=18'}
 | 
			
		||||
    cpu: [x64]
 | 
			
		||||
    os: [android]
 | 
			
		||||
 | 
			
		||||
  '@esbuild/darwin-arm64@0.25.5':
 | 
			
		||||
    resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==}
 | 
			
		||||
    engines: {node: '>=18'}
 | 
			
		||||
    cpu: [arm64]
 | 
			
		||||
    os: [darwin]
 | 
			
		||||
 | 
			
		||||
  '@esbuild/darwin-x64@0.25.5':
 | 
			
		||||
    resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==}
 | 
			
		||||
    engines: {node: '>=18'}
 | 
			
		||||
    cpu: [x64]
 | 
			
		||||
    os: [darwin]
 | 
			
		||||
 | 
			
		||||
  '@esbuild/freebsd-arm64@0.25.5':
 | 
			
		||||
    resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==}
 | 
			
		||||
    engines: {node: '>=18'}
 | 
			
		||||
    cpu: [arm64]
 | 
			
		||||
    os: [freebsd]
 | 
			
		||||
 | 
			
		||||
  '@esbuild/freebsd-x64@0.25.5':
 | 
			
		||||
    resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==}
 | 
			
		||||
    engines: {node: '>=18'}
 | 
			
		||||
    cpu: [x64]
 | 
			
		||||
    os: [freebsd]
 | 
			
		||||
 | 
			
		||||
  '@esbuild/linux-arm64@0.25.5':
 | 
			
		||||
    resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==}
 | 
			
		||||
    engines: {node: '>=18'}
 | 
			
		||||
    cpu: [arm64]
 | 
			
		||||
    os: [linux]
 | 
			
		||||
 | 
			
		||||
  '@esbuild/linux-arm@0.25.5':
 | 
			
		||||
    resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==}
 | 
			
		||||
    engines: {node: '>=18'}
 | 
			
		||||
    cpu: [arm]
 | 
			
		||||
    os: [linux]
 | 
			
		||||
 | 
			
		||||
  '@esbuild/linux-ia32@0.25.5':
 | 
			
		||||
    resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==}
 | 
			
		||||
    engines: {node: '>=18'}
 | 
			
		||||
    cpu: [ia32]
 | 
			
		||||
    os: [linux]
 | 
			
		||||
 | 
			
		||||
  '@esbuild/linux-loong64@0.25.5':
 | 
			
		||||
    resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==}
 | 
			
		||||
    engines: {node: '>=18'}
 | 
			
		||||
    cpu: [loong64]
 | 
			
		||||
    os: [linux]
 | 
			
		||||
 | 
			
		||||
  '@esbuild/linux-mips64el@0.25.5':
 | 
			
		||||
    resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==}
 | 
			
		||||
    engines: {node: '>=18'}
 | 
			
		||||
    cpu: [mips64el]
 | 
			
		||||
    os: [linux]
 | 
			
		||||
 | 
			
		||||
  '@esbuild/linux-ppc64@0.25.5':
 | 
			
		||||
    resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==}
 | 
			
		||||
    engines: {node: '>=18'}
 | 
			
		||||
    cpu: [ppc64]
 | 
			
		||||
    os: [linux]
 | 
			
		||||
 | 
			
		||||
  '@esbuild/linux-riscv64@0.25.5':
 | 
			
		||||
    resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==}
 | 
			
		||||
    engines: {node: '>=18'}
 | 
			
		||||
    cpu: [riscv64]
 | 
			
		||||
    os: [linux]
 | 
			
		||||
 | 
			
		||||
  '@esbuild/linux-s390x@0.25.5':
 | 
			
		||||
    resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==}
 | 
			
		||||
    engines: {node: '>=18'}
 | 
			
		||||
    cpu: [s390x]
 | 
			
		||||
    os: [linux]
 | 
			
		||||
 | 
			
		||||
  '@esbuild/linux-x64@0.25.5':
 | 
			
		||||
    resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==}
 | 
			
		||||
    engines: {node: '>=18'}
 | 
			
		||||
    cpu: [x64]
 | 
			
		||||
    os: [linux]
 | 
			
		||||
 | 
			
		||||
  '@esbuild/netbsd-arm64@0.25.5':
 | 
			
		||||
    resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==}
 | 
			
		||||
    engines: {node: '>=18'}
 | 
			
		||||
    cpu: [arm64]
 | 
			
		||||
    os: [netbsd]
 | 
			
		||||
 | 
			
		||||
  '@esbuild/netbsd-x64@0.25.5':
 | 
			
		||||
    resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==}
 | 
			
		||||
    engines: {node: '>=18'}
 | 
			
		||||
    cpu: [x64]
 | 
			
		||||
    os: [netbsd]
 | 
			
		||||
 | 
			
		||||
  '@esbuild/openbsd-arm64@0.25.5':
 | 
			
		||||
    resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==}
 | 
			
		||||
    engines: {node: '>=18'}
 | 
			
		||||
    cpu: [arm64]
 | 
			
		||||
    os: [openbsd]
 | 
			
		||||
 | 
			
		||||
  '@esbuild/openbsd-x64@0.25.5':
 | 
			
		||||
    resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==}
 | 
			
		||||
    engines: {node: '>=18'}
 | 
			
		||||
    cpu: [x64]
 | 
			
		||||
    os: [openbsd]
 | 
			
		||||
 | 
			
		||||
  '@esbuild/sunos-x64@0.25.5':
 | 
			
		||||
    resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==}
 | 
			
		||||
    engines: {node: '>=18'}
 | 
			
		||||
    cpu: [x64]
 | 
			
		||||
    os: [sunos]
 | 
			
		||||
 | 
			
		||||
  '@esbuild/win32-arm64@0.25.5':
 | 
			
		||||
    resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==}
 | 
			
		||||
    engines: {node: '>=18'}
 | 
			
		||||
    cpu: [arm64]
 | 
			
		||||
    os: [win32]
 | 
			
		||||
 | 
			
		||||
  '@esbuild/win32-ia32@0.25.5':
 | 
			
		||||
    resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==}
 | 
			
		||||
    engines: {node: '>=18'}
 | 
			
		||||
    cpu: [ia32]
 | 
			
		||||
    os: [win32]
 | 
			
		||||
 | 
			
		||||
  '@esbuild/win32-x64@0.25.5':
 | 
			
		||||
    resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==}
 | 
			
		||||
    engines: {node: '>=18'}
 | 
			
		||||
    cpu: [x64]
 | 
			
		||||
    os: [win32]
 | 
			
		||||
 | 
			
		||||
  '@kevisual/load@0.0.6':
 | 
			
		||||
    resolution: {integrity: sha512-+3YTFehRcZ1haGel5DKYMUwmi5i6f2psyaPZlfkKU/cOXgkpwoG9/BEqPCnPjicKqqnksEpixVRkyHJ+5bjLVA==}
 | 
			
		||||
 | 
			
		||||
  '@kevisual/router@0.0.22':
 | 
			
		||||
    resolution: {integrity: sha512-Cqv2vV+hPBHrMMfvWlfDIuNrQcmd260oQZ4S5QR/R4tV35XtMKiseqhnC9uR09oVBJUh+d5rW3YucDDddheeDQ==}
 | 
			
		||||
 | 
			
		||||
  '@kevisual/types@0.0.10':
 | 
			
		||||
    resolution: {integrity: sha512-Q73uzzjk9UidumnmCvOpgzqDDvQxsblz22bIFuoiioUFJWwaparx8bpd8ArRyFojicYL1YJoFDzDZ9j9NN8grA==}
 | 
			
		||||
 | 
			
		||||
  '@kevisual/use-config@1.0.17':
 | 
			
		||||
    resolution: {integrity: sha512-EsuMJ5bhAbdERvpD55td1diRxx4kSxtYVaIHo0vDvnLetuXLfq+j2DPGmWl/oRdO48op0dme5oo1DctCqpgYcQ==}
 | 
			
		||||
    peerDependencies:
 | 
			
		||||
      dotenv: ^16.4.7
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-android-arm-eabi@4.41.1':
 | 
			
		||||
    resolution: {integrity: sha512-NELNvyEWZ6R9QMkiytB4/L4zSEaBC03KIXEghptLGLZWJ6VPrL63ooZQCOnlx36aQPGhzuOMwDerC1Eb2VmrLw==}
 | 
			
		||||
    cpu: [arm]
 | 
			
		||||
    os: [android]
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-android-arm64@4.41.1':
 | 
			
		||||
    resolution: {integrity: sha512-DXdQe1BJ6TK47ukAoZLehRHhfKnKg9BjnQYUu9gzhI8Mwa1d2fzxA1aw2JixHVl403bwp1+/o/NhhHtxWJBgEA==}
 | 
			
		||||
    cpu: [arm64]
 | 
			
		||||
    os: [android]
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-darwin-arm64@4.41.1':
 | 
			
		||||
    resolution: {integrity: sha512-5afxvwszzdulsU2w8JKWwY8/sJOLPzf0e1bFuvcW5h9zsEg+RQAojdW0ux2zyYAz7R8HvvzKCjLNJhVq965U7w==}
 | 
			
		||||
    cpu: [arm64]
 | 
			
		||||
    os: [darwin]
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-darwin-x64@4.41.1':
 | 
			
		||||
    resolution: {integrity: sha512-egpJACny8QOdHNNMZKf8xY0Is6gIMz+tuqXlusxquWu3F833DcMwmGM7WlvCO9sB3OsPjdC4U0wHw5FabzCGZg==}
 | 
			
		||||
    cpu: [x64]
 | 
			
		||||
    os: [darwin]
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-freebsd-arm64@4.41.1':
 | 
			
		||||
    resolution: {integrity: sha512-DBVMZH5vbjgRk3r0OzgjS38z+atlupJ7xfKIDJdZZL6sM6wjfDNo64aowcLPKIx7LMQi8vybB56uh1Ftck/Atg==}
 | 
			
		||||
    cpu: [arm64]
 | 
			
		||||
    os: [freebsd]
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-freebsd-x64@4.41.1':
 | 
			
		||||
    resolution: {integrity: sha512-3FkydeohozEskBxNWEIbPfOE0aqQgB6ttTkJ159uWOFn42VLyfAiyD9UK5mhu+ItWzft60DycIN1Xdgiy8o/SA==}
 | 
			
		||||
    cpu: [x64]
 | 
			
		||||
    os: [freebsd]
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-linux-arm-gnueabihf@4.41.1':
 | 
			
		||||
    resolution: {integrity: sha512-wC53ZNDgt0pqx5xCAgNunkTzFE8GTgdZ9EwYGVcg+jEjJdZGtq9xPjDnFgfFozQI/Xm1mh+D9YlYtl+ueswNEg==}
 | 
			
		||||
    cpu: [arm]
 | 
			
		||||
    os: [linux]
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-linux-arm-musleabihf@4.41.1':
 | 
			
		||||
    resolution: {integrity: sha512-jwKCca1gbZkZLhLRtsrka5N8sFAaxrGz/7wRJ8Wwvq3jug7toO21vWlViihG85ei7uJTpzbXZRcORotE+xyrLA==}
 | 
			
		||||
    cpu: [arm]
 | 
			
		||||
    os: [linux]
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-linux-arm64-gnu@4.41.1':
 | 
			
		||||
    resolution: {integrity: sha512-g0UBcNknsmmNQ8V2d/zD2P7WWfJKU0F1nu0k5pW4rvdb+BIqMm8ToluW/eeRmxCared5dD76lS04uL4UaNgpNA==}
 | 
			
		||||
    cpu: [arm64]
 | 
			
		||||
    os: [linux]
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-linux-arm64-musl@4.41.1':
 | 
			
		||||
    resolution: {integrity: sha512-XZpeGB5TKEZWzIrj7sXr+BEaSgo/ma/kCgrZgL0oo5qdB1JlTzIYQKel/RmhT6vMAvOdM2teYlAaOGJpJ9lahg==}
 | 
			
		||||
    cpu: [arm64]
 | 
			
		||||
    os: [linux]
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-linux-loongarch64-gnu@4.41.1':
 | 
			
		||||
    resolution: {integrity: sha512-bkCfDJ4qzWfFRCNt5RVV4DOw6KEgFTUZi2r2RuYhGWC8WhCA8lCAJhDeAmrM/fdiAH54m0mA0Vk2FGRPyzI+tw==}
 | 
			
		||||
    cpu: [loong64]
 | 
			
		||||
    os: [linux]
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-linux-powerpc64le-gnu@4.41.1':
 | 
			
		||||
    resolution: {integrity: sha512-3mr3Xm+gvMX+/8EKogIZSIEF0WUu0HL9di+YWlJpO8CQBnoLAEL/roTCxuLncEdgcfJcvA4UMOf+2dnjl4Ut1A==}
 | 
			
		||||
    cpu: [ppc64]
 | 
			
		||||
    os: [linux]
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-linux-riscv64-gnu@4.41.1':
 | 
			
		||||
    resolution: {integrity: sha512-3rwCIh6MQ1LGrvKJitQjZFuQnT2wxfU+ivhNBzmxXTXPllewOF7JR1s2vMX/tWtUYFgphygxjqMl76q4aMotGw==}
 | 
			
		||||
    cpu: [riscv64]
 | 
			
		||||
    os: [linux]
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-linux-riscv64-musl@4.41.1':
 | 
			
		||||
    resolution: {integrity: sha512-LdIUOb3gvfmpkgFZuccNa2uYiqtgZAz3PTzjuM5bH3nvuy9ty6RGc/Q0+HDFrHrizJGVpjnTZ1yS5TNNjFlklw==}
 | 
			
		||||
    cpu: [riscv64]
 | 
			
		||||
    os: [linux]
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-linux-s390x-gnu@4.41.1':
 | 
			
		||||
    resolution: {integrity: sha512-oIE6M8WC9ma6xYqjvPhzZYk6NbobIURvP/lEbh7FWplcMO6gn7MM2yHKA1eC/GvYwzNKK/1LYgqzdkZ8YFxR8g==}
 | 
			
		||||
    cpu: [s390x]
 | 
			
		||||
    os: [linux]
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-linux-x64-gnu@4.41.1':
 | 
			
		||||
    resolution: {integrity: sha512-cWBOvayNvA+SyeQMp79BHPK8ws6sHSsYnK5zDcsC3Hsxr1dgTABKjMnMslPq1DvZIp6uO7kIWhiGwaTdR4Og9A==}
 | 
			
		||||
    cpu: [x64]
 | 
			
		||||
    os: [linux]
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-linux-x64-musl@4.41.1':
 | 
			
		||||
    resolution: {integrity: sha512-y5CbN44M+pUCdGDlZFzGGBSKCA4A/J2ZH4edTYSSxFg7ce1Xt3GtydbVKWLlzL+INfFIZAEg1ZV6hh9+QQf9YQ==}
 | 
			
		||||
    cpu: [x64]
 | 
			
		||||
    os: [linux]
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-win32-arm64-msvc@4.41.1':
 | 
			
		||||
    resolution: {integrity: sha512-lZkCxIrjlJlMt1dLO/FbpZbzt6J/A8p4DnqzSa4PWqPEUUUnzXLeki/iyPLfV0BmHItlYgHUqJe+3KiyydmiNQ==}
 | 
			
		||||
    cpu: [arm64]
 | 
			
		||||
    os: [win32]
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-win32-ia32-msvc@4.41.1':
 | 
			
		||||
    resolution: {integrity: sha512-+psFT9+pIh2iuGsxFYYa/LhS5MFKmuivRsx9iPJWNSGbh2XVEjk90fmpUEjCnILPEPJnikAU6SFDiEUyOv90Pg==}
 | 
			
		||||
    cpu: [ia32]
 | 
			
		||||
    os: [win32]
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-win32-x64-msvc@4.41.1':
 | 
			
		||||
    resolution: {integrity: sha512-Wq2zpapRYLfi4aKxf2Xff0tN+7slj2d4R87WEzqw7ZLsVvO5zwYCIuEGSZYiK41+GlwUo1HiR+GdkLEJnCKTCw==}
 | 
			
		||||
    cpu: [x64]
 | 
			
		||||
    os: [win32]
 | 
			
		||||
 | 
			
		||||
  '@types/bun@1.2.15':
 | 
			
		||||
    resolution: {integrity: sha512-U1ljPdBEphF0nw1MIk0hI7kPg7dFdPyM7EenHsp6W5loNHl7zqy6JQf/RKCgnUn2KDzUpkBwHPnEJEjII594bA==}
 | 
			
		||||
 | 
			
		||||
  '@types/estree@1.0.7':
 | 
			
		||||
    resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==}
 | 
			
		||||
 | 
			
		||||
  '@types/lodash-es@4.17.12':
 | 
			
		||||
    resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==}
 | 
			
		||||
 | 
			
		||||
  '@types/lodash@4.17.17':
 | 
			
		||||
    resolution: {integrity: sha512-RRVJ+J3J+WmyOTqnz3PiBLA501eKwXl2noseKOrNo/6+XEHjTAxO4xHvxQB6QuNm+s4WRbn6rSiap8+EA+ykFQ==}
 | 
			
		||||
 | 
			
		||||
  '@types/node-forge@1.3.11':
 | 
			
		||||
    resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==}
 | 
			
		||||
 | 
			
		||||
  '@types/node@22.15.29':
 | 
			
		||||
    resolution: {integrity: sha512-LNdjOkUDlU1RZb8e1kOIUpN1qQUlzGkEtbVNo53vbrwDg5om6oduhm4SiUaPW5ASTXhAiP0jInWG8Qx9fVlOeQ==}
 | 
			
		||||
 | 
			
		||||
  ansi-colors@4.1.3:
 | 
			
		||||
    resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==}
 | 
			
		||||
    engines: {node: '>=6'}
 | 
			
		||||
 | 
			
		||||
  ansi-regex@5.0.1:
 | 
			
		||||
    resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
 | 
			
		||||
    engines: {node: '>=8'}
 | 
			
		||||
 | 
			
		||||
  bun-types@1.2.15:
 | 
			
		||||
    resolution: {integrity: sha512-NarRIaS+iOaQU1JPfyKhZm4AsUOrwUOqRNHY0XxI8GI8jYxiLXLcdjYMG9UKS+fwWasc1uw1htV9AX24dD+p4w==}
 | 
			
		||||
 | 
			
		||||
  commander@14.0.0:
 | 
			
		||||
    resolution: {integrity: sha512-2uM9rYjPvyq39NwLRqaiLtWHyDC1FvryJDa2ATTVims5YAS4PupsEQsDvP14FqhFr0P49CYDugi59xaxJlTXRA==}
 | 
			
		||||
    engines: {node: '>=20'}
 | 
			
		||||
 | 
			
		||||
  cross-env@7.0.3:
 | 
			
		||||
    resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==}
 | 
			
		||||
    engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'}
 | 
			
		||||
    hasBin: true
 | 
			
		||||
 | 
			
		||||
  cross-spawn@7.0.6:
 | 
			
		||||
    resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
 | 
			
		||||
    engines: {node: '>= 8'}
 | 
			
		||||
 | 
			
		||||
  dotenv@16.5.0:
 | 
			
		||||
    resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==}
 | 
			
		||||
    engines: {node: '>=12'}
 | 
			
		||||
 | 
			
		||||
  enquirer@2.4.1:
 | 
			
		||||
    resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==}
 | 
			
		||||
    engines: {node: '>=8.6'}
 | 
			
		||||
 | 
			
		||||
  esbuild@0.25.5:
 | 
			
		||||
    resolution: {integrity: sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==}
 | 
			
		||||
    engines: {node: '>=18'}
 | 
			
		||||
    hasBin: true
 | 
			
		||||
 | 
			
		||||
  eventemitter3@5.0.1:
 | 
			
		||||
    resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
 | 
			
		||||
 | 
			
		||||
  fdir@6.4.5:
 | 
			
		||||
    resolution: {integrity: sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==}
 | 
			
		||||
    peerDependencies:
 | 
			
		||||
      picomatch: ^3 || ^4
 | 
			
		||||
    peerDependenciesMeta:
 | 
			
		||||
      picomatch:
 | 
			
		||||
        optional: true
 | 
			
		||||
 | 
			
		||||
  fsevents@2.3.3:
 | 
			
		||||
    resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
 | 
			
		||||
    engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
 | 
			
		||||
    os: [darwin]
 | 
			
		||||
 | 
			
		||||
  isexe@2.0.0:
 | 
			
		||||
    resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
 | 
			
		||||
 | 
			
		||||
  nanoid@3.3.11:
 | 
			
		||||
    resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
 | 
			
		||||
    engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
 | 
			
		||||
    hasBin: true
 | 
			
		||||
 | 
			
		||||
  node-forge@1.3.1:
 | 
			
		||||
    resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==}
 | 
			
		||||
    engines: {node: '>= 6.13.0'}
 | 
			
		||||
 | 
			
		||||
  path-key@3.1.1:
 | 
			
		||||
    resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
 | 
			
		||||
    engines: {node: '>=8'}
 | 
			
		||||
 | 
			
		||||
  path-to-regexp@8.2.0:
 | 
			
		||||
    resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==}
 | 
			
		||||
    engines: {node: '>=16'}
 | 
			
		||||
 | 
			
		||||
  picocolors@1.1.1:
 | 
			
		||||
    resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
 | 
			
		||||
 | 
			
		||||
  picomatch@4.0.2:
 | 
			
		||||
    resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
 | 
			
		||||
    engines: {node: '>=12'}
 | 
			
		||||
 | 
			
		||||
  postcss@8.5.4:
 | 
			
		||||
    resolution: {integrity: sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==}
 | 
			
		||||
    engines: {node: ^10 || ^12 || >=14}
 | 
			
		||||
 | 
			
		||||
  rollup@4.41.1:
 | 
			
		||||
    resolution: {integrity: sha512-cPmwD3FnFv8rKMBc1MxWCwVQFxwf1JEmSX3iQXrRVVG15zerAIXRjMFVWnd5Q5QvgKF7Aj+5ykXFhUl+QGnyOw==}
 | 
			
		||||
    engines: {node: '>=18.0.0', npm: '>=8.0.0'}
 | 
			
		||||
    hasBin: true
 | 
			
		||||
 | 
			
		||||
  selfsigned@2.4.1:
 | 
			
		||||
    resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==}
 | 
			
		||||
    engines: {node: '>=10'}
 | 
			
		||||
 | 
			
		||||
  shebang-command@2.0.0:
 | 
			
		||||
    resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
 | 
			
		||||
    engines: {node: '>=8'}
 | 
			
		||||
 | 
			
		||||
  shebang-regex@3.0.0:
 | 
			
		||||
    resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
 | 
			
		||||
    engines: {node: '>=8'}
 | 
			
		||||
 | 
			
		||||
  source-map-js@1.2.1:
 | 
			
		||||
    resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
 | 
			
		||||
    engines: {node: '>=0.10.0'}
 | 
			
		||||
 | 
			
		||||
  strip-ansi@6.0.1:
 | 
			
		||||
    resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
 | 
			
		||||
    engines: {node: '>=8'}
 | 
			
		||||
 | 
			
		||||
  tinyglobby@0.2.14:
 | 
			
		||||
    resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==}
 | 
			
		||||
    engines: {node: '>=12.0.0'}
 | 
			
		||||
 | 
			
		||||
  typescript@5.8.3:
 | 
			
		||||
    resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==}
 | 
			
		||||
    engines: {node: '>=14.17'}
 | 
			
		||||
    hasBin: true
 | 
			
		||||
 | 
			
		||||
  undici-types@6.21.0:
 | 
			
		||||
    resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
 | 
			
		||||
 | 
			
		||||
  vite@6.3.5:
 | 
			
		||||
    resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==}
 | 
			
		||||
    engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
 | 
			
		||||
    hasBin: true
 | 
			
		||||
    peerDependencies:
 | 
			
		||||
      '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
 | 
			
		||||
      jiti: '>=1.21.0'
 | 
			
		||||
      less: '*'
 | 
			
		||||
      lightningcss: ^1.21.0
 | 
			
		||||
      sass: '*'
 | 
			
		||||
      sass-embedded: '*'
 | 
			
		||||
      stylus: '*'
 | 
			
		||||
      sugarss: '*'
 | 
			
		||||
      terser: ^5.16.0
 | 
			
		||||
      tsx: ^4.8.1
 | 
			
		||||
      yaml: ^2.4.2
 | 
			
		||||
    peerDependenciesMeta:
 | 
			
		||||
      '@types/node':
 | 
			
		||||
        optional: true
 | 
			
		||||
      jiti:
 | 
			
		||||
        optional: true
 | 
			
		||||
      less:
 | 
			
		||||
        optional: true
 | 
			
		||||
      lightningcss:
 | 
			
		||||
        optional: true
 | 
			
		||||
      sass:
 | 
			
		||||
        optional: true
 | 
			
		||||
      sass-embedded:
 | 
			
		||||
        optional: true
 | 
			
		||||
      stylus:
 | 
			
		||||
        optional: true
 | 
			
		||||
      sugarss:
 | 
			
		||||
        optional: true
 | 
			
		||||
      terser:
 | 
			
		||||
        optional: true
 | 
			
		||||
      tsx:
 | 
			
		||||
        optional: true
 | 
			
		||||
      yaml:
 | 
			
		||||
        optional: true
 | 
			
		||||
 | 
			
		||||
  which@2.0.2:
 | 
			
		||||
    resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
 | 
			
		||||
    engines: {node: '>= 8'}
 | 
			
		||||
    hasBin: true
 | 
			
		||||
 | 
			
		||||
snapshots:
 | 
			
		||||
 | 
			
		||||
  '@esbuild/aix-ppc64@0.25.5':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@esbuild/android-arm64@0.25.5':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@esbuild/android-arm@0.25.5':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@esbuild/android-x64@0.25.5':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@esbuild/darwin-arm64@0.25.5':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@esbuild/darwin-x64@0.25.5':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@esbuild/freebsd-arm64@0.25.5':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@esbuild/freebsd-x64@0.25.5':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@esbuild/linux-arm64@0.25.5':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@esbuild/linux-arm@0.25.5':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@esbuild/linux-ia32@0.25.5':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@esbuild/linux-loong64@0.25.5':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@esbuild/linux-mips64el@0.25.5':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@esbuild/linux-ppc64@0.25.5':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@esbuild/linux-riscv64@0.25.5':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@esbuild/linux-s390x@0.25.5':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@esbuild/linux-x64@0.25.5':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@esbuild/netbsd-arm64@0.25.5':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@esbuild/netbsd-x64@0.25.5':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@esbuild/openbsd-arm64@0.25.5':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@esbuild/openbsd-x64@0.25.5':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@esbuild/sunos-x64@0.25.5':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@esbuild/win32-arm64@0.25.5':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@esbuild/win32-ia32@0.25.5':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@esbuild/win32-x64@0.25.5':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@kevisual/load@0.0.6':
 | 
			
		||||
    dependencies:
 | 
			
		||||
      eventemitter3: 5.0.1
 | 
			
		||||
 | 
			
		||||
  '@kevisual/router@0.0.22':
 | 
			
		||||
    dependencies:
 | 
			
		||||
      path-to-regexp: 8.2.0
 | 
			
		||||
      selfsigned: 2.4.1
 | 
			
		||||
 | 
			
		||||
  '@kevisual/types@0.0.10': {}
 | 
			
		||||
 | 
			
		||||
  '@kevisual/use-config@1.0.17(dotenv@16.5.0)':
 | 
			
		||||
    dependencies:
 | 
			
		||||
      '@kevisual/load': 0.0.6
 | 
			
		||||
      dotenv: 16.5.0
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-android-arm-eabi@4.41.1':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-android-arm64@4.41.1':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-darwin-arm64@4.41.1':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-darwin-x64@4.41.1':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-freebsd-arm64@4.41.1':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-freebsd-x64@4.41.1':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-linux-arm-gnueabihf@4.41.1':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-linux-arm-musleabihf@4.41.1':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-linux-arm64-gnu@4.41.1':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-linux-arm64-musl@4.41.1':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-linux-loongarch64-gnu@4.41.1':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-linux-powerpc64le-gnu@4.41.1':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-linux-riscv64-gnu@4.41.1':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-linux-riscv64-musl@4.41.1':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-linux-s390x-gnu@4.41.1':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-linux-x64-gnu@4.41.1':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-linux-x64-musl@4.41.1':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-win32-arm64-msvc@4.41.1':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-win32-ia32-msvc@4.41.1':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@rollup/rollup-win32-x64-msvc@4.41.1':
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  '@types/bun@1.2.15':
 | 
			
		||||
    dependencies:
 | 
			
		||||
      bun-types: 1.2.15
 | 
			
		||||
 | 
			
		||||
  '@types/estree@1.0.7': {}
 | 
			
		||||
 | 
			
		||||
  '@types/lodash-es@4.17.12':
 | 
			
		||||
    dependencies:
 | 
			
		||||
      '@types/lodash': 4.17.17
 | 
			
		||||
 | 
			
		||||
  '@types/lodash@4.17.17': {}
 | 
			
		||||
 | 
			
		||||
  '@types/node-forge@1.3.11':
 | 
			
		||||
    dependencies:
 | 
			
		||||
      '@types/node': 22.15.29
 | 
			
		||||
 | 
			
		||||
  '@types/node@22.15.29':
 | 
			
		||||
    dependencies:
 | 
			
		||||
      undici-types: 6.21.0
 | 
			
		||||
 | 
			
		||||
  ansi-colors@4.1.3: {}
 | 
			
		||||
 | 
			
		||||
  ansi-regex@5.0.1: {}
 | 
			
		||||
 | 
			
		||||
  bun-types@1.2.15:
 | 
			
		||||
    dependencies:
 | 
			
		||||
      '@types/node': 22.15.29
 | 
			
		||||
 | 
			
		||||
  commander@14.0.0: {}
 | 
			
		||||
 | 
			
		||||
  cross-env@7.0.3:
 | 
			
		||||
    dependencies:
 | 
			
		||||
      cross-spawn: 7.0.6
 | 
			
		||||
 | 
			
		||||
  cross-spawn@7.0.6:
 | 
			
		||||
    dependencies:
 | 
			
		||||
      path-key: 3.1.1
 | 
			
		||||
      shebang-command: 2.0.0
 | 
			
		||||
      which: 2.0.2
 | 
			
		||||
 | 
			
		||||
  dotenv@16.5.0: {}
 | 
			
		||||
 | 
			
		||||
  enquirer@2.4.1:
 | 
			
		||||
    dependencies:
 | 
			
		||||
      ansi-colors: 4.1.3
 | 
			
		||||
      strip-ansi: 6.0.1
 | 
			
		||||
 | 
			
		||||
  esbuild@0.25.5:
 | 
			
		||||
    optionalDependencies:
 | 
			
		||||
      '@esbuild/aix-ppc64': 0.25.5
 | 
			
		||||
      '@esbuild/android-arm': 0.25.5
 | 
			
		||||
      '@esbuild/android-arm64': 0.25.5
 | 
			
		||||
      '@esbuild/android-x64': 0.25.5
 | 
			
		||||
      '@esbuild/darwin-arm64': 0.25.5
 | 
			
		||||
      '@esbuild/darwin-x64': 0.25.5
 | 
			
		||||
      '@esbuild/freebsd-arm64': 0.25.5
 | 
			
		||||
      '@esbuild/freebsd-x64': 0.25.5
 | 
			
		||||
      '@esbuild/linux-arm': 0.25.5
 | 
			
		||||
      '@esbuild/linux-arm64': 0.25.5
 | 
			
		||||
      '@esbuild/linux-ia32': 0.25.5
 | 
			
		||||
      '@esbuild/linux-loong64': 0.25.5
 | 
			
		||||
      '@esbuild/linux-mips64el': 0.25.5
 | 
			
		||||
      '@esbuild/linux-ppc64': 0.25.5
 | 
			
		||||
      '@esbuild/linux-riscv64': 0.25.5
 | 
			
		||||
      '@esbuild/linux-s390x': 0.25.5
 | 
			
		||||
      '@esbuild/linux-x64': 0.25.5
 | 
			
		||||
      '@esbuild/netbsd-arm64': 0.25.5
 | 
			
		||||
      '@esbuild/netbsd-x64': 0.25.5
 | 
			
		||||
      '@esbuild/openbsd-arm64': 0.25.5
 | 
			
		||||
      '@esbuild/openbsd-x64': 0.25.5
 | 
			
		||||
      '@esbuild/sunos-x64': 0.25.5
 | 
			
		||||
      '@esbuild/win32-arm64': 0.25.5
 | 
			
		||||
      '@esbuild/win32-ia32': 0.25.5
 | 
			
		||||
      '@esbuild/win32-x64': 0.25.5
 | 
			
		||||
 | 
			
		||||
  eventemitter3@5.0.1: {}
 | 
			
		||||
 | 
			
		||||
  fdir@6.4.5(picomatch@4.0.2):
 | 
			
		||||
    optionalDependencies:
 | 
			
		||||
      picomatch: 4.0.2
 | 
			
		||||
 | 
			
		||||
  fsevents@2.3.3:
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  isexe@2.0.0: {}
 | 
			
		||||
 | 
			
		||||
  nanoid@3.3.11: {}
 | 
			
		||||
 | 
			
		||||
  node-forge@1.3.1: {}
 | 
			
		||||
 | 
			
		||||
  path-key@3.1.1: {}
 | 
			
		||||
 | 
			
		||||
  path-to-regexp@8.2.0: {}
 | 
			
		||||
 | 
			
		||||
  picocolors@1.1.1: {}
 | 
			
		||||
 | 
			
		||||
  picomatch@4.0.2: {}
 | 
			
		||||
 | 
			
		||||
  postcss@8.5.4:
 | 
			
		||||
    dependencies:
 | 
			
		||||
      nanoid: 3.3.11
 | 
			
		||||
      picocolors: 1.1.1
 | 
			
		||||
      source-map-js: 1.2.1
 | 
			
		||||
 | 
			
		||||
  rollup@4.41.1:
 | 
			
		||||
    dependencies:
 | 
			
		||||
      '@types/estree': 1.0.7
 | 
			
		||||
    optionalDependencies:
 | 
			
		||||
      '@rollup/rollup-android-arm-eabi': 4.41.1
 | 
			
		||||
      '@rollup/rollup-android-arm64': 4.41.1
 | 
			
		||||
      '@rollup/rollup-darwin-arm64': 4.41.1
 | 
			
		||||
      '@rollup/rollup-darwin-x64': 4.41.1
 | 
			
		||||
      '@rollup/rollup-freebsd-arm64': 4.41.1
 | 
			
		||||
      '@rollup/rollup-freebsd-x64': 4.41.1
 | 
			
		||||
      '@rollup/rollup-linux-arm-gnueabihf': 4.41.1
 | 
			
		||||
      '@rollup/rollup-linux-arm-musleabihf': 4.41.1
 | 
			
		||||
      '@rollup/rollup-linux-arm64-gnu': 4.41.1
 | 
			
		||||
      '@rollup/rollup-linux-arm64-musl': 4.41.1
 | 
			
		||||
      '@rollup/rollup-linux-loongarch64-gnu': 4.41.1
 | 
			
		||||
      '@rollup/rollup-linux-powerpc64le-gnu': 4.41.1
 | 
			
		||||
      '@rollup/rollup-linux-riscv64-gnu': 4.41.1
 | 
			
		||||
      '@rollup/rollup-linux-riscv64-musl': 4.41.1
 | 
			
		||||
      '@rollup/rollup-linux-s390x-gnu': 4.41.1
 | 
			
		||||
      '@rollup/rollup-linux-x64-gnu': 4.41.1
 | 
			
		||||
      '@rollup/rollup-linux-x64-musl': 4.41.1
 | 
			
		||||
      '@rollup/rollup-win32-arm64-msvc': 4.41.1
 | 
			
		||||
      '@rollup/rollup-win32-ia32-msvc': 4.41.1
 | 
			
		||||
      '@rollup/rollup-win32-x64-msvc': 4.41.1
 | 
			
		||||
      fsevents: 2.3.3
 | 
			
		||||
 | 
			
		||||
  selfsigned@2.4.1:
 | 
			
		||||
    dependencies:
 | 
			
		||||
      '@types/node-forge': 1.3.11
 | 
			
		||||
      node-forge: 1.3.1
 | 
			
		||||
 | 
			
		||||
  shebang-command@2.0.0:
 | 
			
		||||
    dependencies:
 | 
			
		||||
      shebang-regex: 3.0.0
 | 
			
		||||
 | 
			
		||||
  shebang-regex@3.0.0: {}
 | 
			
		||||
 | 
			
		||||
  source-map-js@1.2.1: {}
 | 
			
		||||
 | 
			
		||||
  strip-ansi@6.0.1:
 | 
			
		||||
    dependencies:
 | 
			
		||||
      ansi-regex: 5.0.1
 | 
			
		||||
 | 
			
		||||
  tinyglobby@0.2.14:
 | 
			
		||||
    dependencies:
 | 
			
		||||
      fdir: 6.4.5(picomatch@4.0.2)
 | 
			
		||||
      picomatch: 4.0.2
 | 
			
		||||
 | 
			
		||||
  typescript@5.8.3: {}
 | 
			
		||||
 | 
			
		||||
  undici-types@6.21.0: {}
 | 
			
		||||
 | 
			
		||||
  vite@6.3.5(@types/node@22.15.29):
 | 
			
		||||
    dependencies:
 | 
			
		||||
      esbuild: 0.25.5
 | 
			
		||||
      fdir: 6.4.5(picomatch@4.0.2)
 | 
			
		||||
      picomatch: 4.0.2
 | 
			
		||||
      postcss: 8.5.4
 | 
			
		||||
      rollup: 4.41.1
 | 
			
		||||
      tinyglobby: 0.2.14
 | 
			
		||||
    optionalDependencies:
 | 
			
		||||
      '@types/node': 22.15.29
 | 
			
		||||
      fsevents: 2.3.3
 | 
			
		||||
 | 
			
		||||
  which@2.0.2:
 | 
			
		||||
    dependencies:
 | 
			
		||||
      isexe: 2.0.0
 | 
			
		||||
							
								
								
									
										11
									
								
								readme.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								readme.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
# ssl vite
 | 
			
		||||
 | 
			
		||||
> 避免开发条件下每次都要重置 ssl,因为浏览器换个项目都需要重新自签名,同时导入 pem
 | 
			
		||||
 | 
			
		||||
## use
 | 
			
		||||
 | 
			
		||||
```js
 | 
			
		||||
import { ssl } from '@kevisual/ssl';
 | 
			
		||||
 | 
			
		||||
plugins = [ssl()];
 | 
			
		||||
```
 | 
			
		||||
							
								
								
									
										78
									
								
								src/index.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								src/index.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,78 @@
 | 
			
		||||
import path from 'node:path';
 | 
			
		||||
import { promises as fsp } from 'node:fs';
 | 
			
		||||
import type { Plugin } from 'vite';
 | 
			
		||||
import { createCert } from '@kevisual/router/sign';
 | 
			
		||||
const defaultCacheDir = 'node_modules/.vite';
 | 
			
		||||
 | 
			
		||||
interface Options {
 | 
			
		||||
  certDir: string;
 | 
			
		||||
  http: string;
 | 
			
		||||
  download: boolean;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function viteBasicSslPlugin(options?: Partial<Options>): Plugin {
 | 
			
		||||
  return {
 | 
			
		||||
    name: 'vite:basic-ssl',
 | 
			
		||||
    async configResolved(config) {
 | 
			
		||||
      const certificate = await getCertificate(options?.certDir ?? (config.cacheDir ?? defaultCacheDir) + '/basic-ssl', options);
 | 
			
		||||
      const https = () => ({ cert: certificate, key: certificate });
 | 
			
		||||
      if (config.server.https === undefined || !!config.server.https) {
 | 
			
		||||
        config.server.https = Object.assign({}, config.server.https, https());
 | 
			
		||||
      }
 | 
			
		||||
      if (config.preview.https === undefined || !!config.preview.https) {
 | 
			
		||||
        config.preview.https = Object.assign({}, config.preview.https, https());
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
export const fetchText = async (url: string): Promise<string> => {
 | 
			
		||||
  try {
 | 
			
		||||
    const res = await fetch(url);
 | 
			
		||||
    console.log(`Fetching ${url}...`, res);
 | 
			
		||||
    if (res.status !== 200) return '';
 | 
			
		||||
    return await res.text();
 | 
			
		||||
  } catch (error) {
 | 
			
		||||
    console.error(`Failed to fetch ${url}:`, error);
 | 
			
		||||
    return '';
 | 
			
		||||
  }
 | 
			
		||||
};
 | 
			
		||||
export async function getCertificate(cacheDir: string, options?: Partial<Options>): Promise<string> {
 | 
			
		||||
  const link = options?.http || 'https://kevisual.xiongxiao.me/root/ai/code/config/pem/';
 | 
			
		||||
  const cachePath = path.join(cacheDir, '_cert.pem');
 | 
			
		||||
  const download = options?.download ?? false;
 | 
			
		||||
  try {
 | 
			
		||||
    if (download === true) {
 | 
			
		||||
      throw new Error('need to download');
 | 
			
		||||
    }
 | 
			
		||||
    const [content] = await Promise.all([fsp.readFile(cachePath, 'utf8')]);
 | 
			
		||||
 | 
			
		||||
    return content;
 | 
			
		||||
  } catch {
 | 
			
		||||
    let content = '';
 | 
			
		||||
    if (link) {
 | 
			
		||||
      const keyLink = link + 'https-private-key.pem?download=1';
 | 
			
		||||
      const certLink = link + 'https-cert.pem?download=1';
 | 
			
		||||
      const key = await fetchText(keyLink);
 | 
			
		||||
      const cert = await fetchText(certLink);
 | 
			
		||||
      if (key && cert) {
 | 
			
		||||
        content = key + cert;
 | 
			
		||||
      } else {
 | 
			
		||||
        console.warn(`Failed to fetch certificate from ${link}. Using default certificate.`);
 | 
			
		||||
        console.error(`Key: ${key}, ${keyLink}`);
 | 
			
		||||
        console.error(`Cert: ${cert}, ${certLink}`);
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    if (!content) {
 | 
			
		||||
      const cert = createCert();
 | 
			
		||||
      content = cert.key + cert.cert;
 | 
			
		||||
    }
 | 
			
		||||
    fsp
 | 
			
		||||
      .mkdir(cacheDir, { recursive: true })
 | 
			
		||||
      .then(() => fsp.writeFile(cachePath, content))
 | 
			
		||||
      .catch(() => {});
 | 
			
		||||
    return content;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
export const ssl = viteBasicSslPlugin;
 | 
			
		||||
 | 
			
		||||
export default viteBasicSslPlugin;
 | 
			
		||||
							
								
								
									
										18
									
								
								tsconfig.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								tsconfig.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
{
 | 
			
		||||
  "extends": "@kevisual/types/json/backend.json",
 | 
			
		||||
  "compilerOptions": {
 | 
			
		||||
    "baseUrl": ".",
 | 
			
		||||
    "typeRoots": [
 | 
			
		||||
      "./node_modules/@types",
 | 
			
		||||
      "./node_modules/@kevisual"
 | 
			
		||||
    ],
 | 
			
		||||
    "paths": {
 | 
			
		||||
      "@/*": [
 | 
			
		||||
        "src/*"
 | 
			
		||||
      ]
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  "include": [
 | 
			
		||||
    "src/**/*",
 | 
			
		||||
  ],
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user